summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Ghedini <ghedo@debian.org>2019-09-11 23:22:31 +0100
committerAlessandro Ghedini <ghedo@debian.org>2019-09-11 23:22:31 +0100
commit571a18b6ffdcb67f16ebfbad90e6d3d7dd538b45 (patch)
tree7b429f17faa5705f0af5ed3e94e1123442d85343
parentf8a6c74ab9e572084c3b01fab2977bfc8e925bcb (diff)
New upstream version 7.66.0
-rw-r--r--CHANGES2978
-rw-r--r--CMake/FindGSS.cmake4
-rw-r--r--CMakeLists.txt3
-rw-r--r--Makefile.am13
-rw-r--r--Makefile.in34
-rw-r--r--RELEASE-NOTES185
-rwxr-xr-xconfigure1088
-rwxr-xr-xconfigure.ac338
-rw-r--r--docs/ALTSVC.md64
-rw-r--r--docs/DEPRECATE.md15
-rw-r--r--docs/EXPERIMENTAL.md22
-rw-r--r--docs/HTTP3.md121
-rw-r--r--docs/INTERNALS.md2
-rw-r--r--docs/KNOWN_BUGS68
-rw-r--r--docs/Makefile.am3
-rw-r--r--docs/Makefile.in7
-rw-r--r--docs/PARALLEL-TRANSFERS.md58
-rw-r--r--docs/ROADMAP.md65
-rw-r--r--docs/THANKS25
-rw-r--r--docs/TODO238
-rw-r--r--docs/cmdline-opts/Makefile.in11
-rw-r--r--docs/cmdline-opts/Makefile.inc7
-rw-r--r--docs/cmdline-opts/config.d2
-rw-r--r--docs/cmdline-opts/http0.9.d3
-rw-r--r--docs/cmdline-opts/http2.d1
-rw-r--r--docs/cmdline-opts/http3.d19
-rw-r--r--docs/cmdline-opts/parallel-max.d9
-rw-r--r--docs/cmdline-opts/parallel.d7
-rw-r--r--docs/cmdline-opts/retry.d3
-rw-r--r--docs/cmdline-opts/sasl-authzid.d11
-rw-r--r--docs/curl-config.12
-rw-r--r--docs/curl.147
-rw-r--r--docs/examples/Makefile.in214
-rw-r--r--docs/examples/Makefile.inc5
-rw-r--r--docs/examples/altsvc.c56
-rw-r--r--docs/examples/curlx.c6
-rw-r--r--docs/examples/ephiperfifo.c42
-rw-r--r--docs/examples/hiperfifo.c52
-rw-r--r--docs/examples/http3-present.c47
-rw-r--r--docs/examples/http3.c54
-rw-r--r--docs/examples/imap-authzid.c71
-rw-r--r--docs/examples/pop3-authzid.c70
-rw-r--r--docs/examples/smtp-authzid.c161
-rw-r--r--docs/libcurl/Makefile.in5
-rw-r--r--docs/libcurl/Makefile.inc1
-rw-r--r--docs/libcurl/curl_easy_cleanup.32
-rw-r--r--docs/libcurl/curl_easy_duphandle.32
-rw-r--r--docs/libcurl/curl_easy_escape.32
-rw-r--r--docs/libcurl/curl_easy_getinfo.35
-rw-r--r--docs/libcurl/curl_easy_init.32
-rw-r--r--docs/libcurl/curl_easy_pause.32
-rw-r--r--docs/libcurl/curl_easy_perform.32
-rw-r--r--docs/libcurl/curl_easy_recv.32
-rw-r--r--docs/libcurl/curl_easy_reset.32
-rw-r--r--docs/libcurl/curl_easy_send.32
-rw-r--r--docs/libcurl/curl_easy_setopt.34
-rw-r--r--docs/libcurl/curl_easy_strerror.32
-rw-r--r--docs/libcurl/curl_easy_unescape.32
-rw-r--r--docs/libcurl/curl_escape.32
-rw-r--r--docs/libcurl/curl_formadd.32
-rw-r--r--docs/libcurl/curl_formfree.32
-rw-r--r--docs/libcurl/curl_formget.32
-rw-r--r--docs/libcurl/curl_free.32
-rw-r--r--docs/libcurl/curl_getdate.32
-rw-r--r--docs/libcurl/curl_getenv.32
-rw-r--r--docs/libcurl/curl_global_cleanup.32
-rw-r--r--docs/libcurl/curl_global_init.32
-rw-r--r--docs/libcurl/curl_global_init_mem.36
-rw-r--r--docs/libcurl/curl_global_sslset.32
-rw-r--r--docs/libcurl/curl_mime_addpart.32
-rw-r--r--docs/libcurl/curl_mime_data.32
-rw-r--r--docs/libcurl/curl_mime_data_cb.32
-rw-r--r--docs/libcurl/curl_mime_encoder.32
-rw-r--r--docs/libcurl/curl_mime_filedata.32
-rw-r--r--docs/libcurl/curl_mime_filename.32
-rw-r--r--docs/libcurl/curl_mime_free.32
-rw-r--r--docs/libcurl/curl_mime_headers.32
-rw-r--r--docs/libcurl/curl_mime_init.32
-rw-r--r--docs/libcurl/curl_mime_name.32
-rw-r--r--docs/libcurl/curl_mime_subparts.32
-rw-r--r--docs/libcurl/curl_mime_type.32
-rw-r--r--docs/libcurl/curl_mprintf.32
-rw-r--r--docs/libcurl/curl_multi_add_handle.32
-rw-r--r--docs/libcurl/curl_multi_assign.32
-rw-r--r--docs/libcurl/curl_multi_cleanup.32
-rw-r--r--docs/libcurl/curl_multi_fdset.32
-rw-r--r--docs/libcurl/curl_multi_info_read.32
-rw-r--r--docs/libcurl/curl_multi_init.32
-rw-r--r--docs/libcurl/curl_multi_perform.32
-rw-r--r--docs/libcurl/curl_multi_poll.3111
-rw-r--r--docs/libcurl/curl_multi_remove_handle.32
-rw-r--r--docs/libcurl/curl_multi_setopt.32
-rw-r--r--docs/libcurl/curl_multi_socket.32
-rw-r--r--docs/libcurl/curl_multi_socket_action.32
-rw-r--r--docs/libcurl/curl_multi_strerror.32
-rw-r--r--docs/libcurl/curl_multi_timeout.32
-rw-r--r--docs/libcurl/curl_multi_wait.32
-rw-r--r--docs/libcurl/curl_share_cleanup.32
-rw-r--r--docs/libcurl/curl_share_init.32
-rw-r--r--docs/libcurl/curl_share_setopt.32
-rw-r--r--docs/libcurl/curl_share_strerror.32
-rw-r--r--docs/libcurl/curl_slist_append.32
-rw-r--r--docs/libcurl/curl_slist_free_all.32
-rw-r--r--docs/libcurl/curl_strequal.32
-rw-r--r--docs/libcurl/curl_unescape.32
-rw-r--r--docs/libcurl/curl_url.32
-rw-r--r--docs/libcurl/curl_url_cleanup.32
-rw-r--r--docs/libcurl/curl_url_dup.32
-rw-r--r--docs/libcurl/curl_url_get.32
-rw-r--r--docs/libcurl/curl_url_set.32
-rw-r--r--docs/libcurl/curl_version.32
-rw-r--r--docs/libcurl/curl_version_info.3105
-rw-r--r--docs/libcurl/libcurl-easy.32
-rw-r--r--docs/libcurl/libcurl-env.32
-rw-r--r--docs/libcurl/libcurl-errors.34
-rw-r--r--docs/libcurl/libcurl-multi.32
-rw-r--r--docs/libcurl/libcurl-security.32
-rw-r--r--docs/libcurl/libcurl-share.32
-rw-r--r--docs/libcurl/libcurl-symbols.316
-rw-r--r--docs/libcurl/libcurl-thread.32
-rw-r--r--docs/libcurl/libcurl-tutorial.32
-rw-r--r--docs/libcurl/libcurl-url.32
-rw-r--r--docs/libcurl/libcurl.32
-rw-r--r--docs/libcurl/opts/CURLINFO_ACTIVESOCKET.32
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_CERTINFO.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONDITION_UNMET.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.37
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_TYPE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_COOKIELIST.32
-rw-r--r--docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HEADER_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_VERSION.311
-rw-r--r--docs/libcurl/opts/CURLINFO_LASTSOCKET.32
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_IP.32
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_PORT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_NUM_CONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLINFO_OS_ERRNO.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_IP.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_PORT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIVATE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PROTOCOL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_URL.32
-rw-r--r--docs/libcurl/opts/CURLINFO_REQUEST_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RESPONSE_CODE.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RETRY_AFTER.364
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SCHEME.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_ENGINES.32
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.32
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SESSION.32
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.32
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME.36
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.36
-rw-r--r--docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAXCONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ALTSVC.34
-rw-r--r--docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.39
-rw-r--r--docs/libcurl/opts/CURLOPT_APPEND.32
-rw-r--r--docs/libcurl/opts/CURLOPT_AUTOREFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_BUFFERSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_ONLY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_TO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEJAR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIESESSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLF.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CURLU.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DIRLISTONLY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SERVERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DOH_URL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_EGDSOCKET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FILETIME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FORBID_REUSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FRESH_CONNECT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPSSLAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_PRET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.37
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.312
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPGET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPOST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.314
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IPRESOLVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KEYPASSWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KRBLEVEL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXAGE_CONN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXCONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXREDIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MIMEPOST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOBODY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROGRESS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOSIGNAL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POST.37
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTREDIR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PREQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PRE_PROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CAINFO.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CAPATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.315
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_QUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RANDOM_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RANGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.335
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_REQUEST_TARGET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_REQUEST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_AUTHZID.364
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_IR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SHARE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERTTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEYTYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLVERSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.318
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_NODELAY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TELNETOPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMECONDITION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRAILERDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFERTEXT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USE_SSL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_VERBOSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WILDCARDMATCH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFODATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.32
-rw-r--r--docs/libcurl/opts/Makefile.in6
-rw-r--r--docs/libcurl/opts/Makefile.inc2
-rw-r--r--docs/libcurl/symbols-in-versions7
-rw-r--r--include/Makefile.in4
-rw-r--r--include/curl/Makefile.in8
-rw-r--r--include/curl/curl.h35
-rw-r--r--include/curl/curlver.h16
-rw-r--r--include/curl/easy.h6
-rw-r--r--include/curl/mprintf.h8
-rw-r--r--include/curl/multi.h20
-rw-r--r--include/curl/stdcheaders.h8
-rw-r--r--include/curl/system.h30
-rw-r--r--include/curl/typecheck-gcc.h547
-rw-r--r--include/curl/urlapi.h6
-rw-r--r--lib/Makefile.am8
-rw-r--r--lib/Makefile.in273
-rw-r--r--lib/Makefile.inc16
-rw-r--r--lib/altsvc.c65
-rw-r--r--lib/altsvc.h27
-rw-r--r--lib/asyn-ares.c6
-rwxr-xr-x[-rw-r--r--]lib/asyn-thread.c102
-rw-r--r--lib/asyn.h3
-rw-r--r--lib/base64.c4
-rw-r--r--lib/config-os400.h3
-rw-r--r--lib/config-plan9.h217
-rw-r--r--lib/connect.c160
-rw-r--r--lib/connect.h3
-rw-r--r--lib/cookie.c14
-rw-r--r--lib/curl_config.h.in27
-rw-r--r--lib/curl_md4.h10
-rw-r--r--lib/curl_ntlm_core.c70
-rw-r--r--lib/curl_path.c2
-rw-r--r--lib/curl_rtmp.c14
-rw-r--r--lib/curl_sasl.c10
-rw-r--r--lib/curl_setup.h17
-rw-r--r--lib/doh.h3
-rw-r--r--lib/easy.c87
-rw-r--r--lib/ftp.c23
-rw-r--r--lib/getenv.c4
-rw-r--r--lib/getinfo.c8
-rw-r--r--lib/hostip.c8
-rw-r--r--lib/hostip.h6
-rw-r--r--lib/hostip6.c3
-rw-r--r--lib/http.c208
-rw-r--r--lib/http.h31
-rw-r--r--lib/http2.c23
-rw-r--r--lib/http_negotiate.c4
-rw-r--r--lib/imap.c8
-rw-r--r--lib/libcurl.plist6
-rw-r--r--lib/md4.c248
-rwxr-xr-x[-rw-r--r--]lib/multi.c252
-rw-r--r--lib/multiif.h9
-rw-r--r--lib/netrc.c151
-rw-r--r--lib/openldap.c28
-rw-r--r--lib/pingpong.c13
-rw-r--r--lib/pingpong.h5
-rw-r--r--lib/pop3.c8
-rw-r--r--lib/progress.c13
-rw-r--r--lib/quic.h53
-rw-r--r--lib/rtsp.c9
-rw-r--r--lib/security.c6
-rw-r--r--lib/select.h6
-rw-r--r--lib/setopt.c37
-rw-r--r--lib/smb.c12
-rw-r--r--lib/smtp.c14
-rw-r--r--lib/ssh.h13
-rw-r--r--lib/strerror.c3
-rw-r--r--lib/tftp.c77
-rw-r--r--lib/timeval.c24
-rw-r--r--lib/timeval.h10
-rw-r--r--lib/transfer.c27
-rw-r--r--lib/transfer.h3
-rw-r--r--lib/url.c281
-rw-r--r--lib/url.h13
-rw-r--r--lib/urlapi.c17
-rw-r--r--lib/urldata.h58
-rw-r--r--lib/vauth/digest_sspi.c15
-rw-r--r--lib/vauth/krb5_gssapi.c10
-rw-r--r--lib/vauth/krb5_sspi.c26
-rw-r--r--lib/vauth/ntlm_sspi.c14
-rw-r--r--lib/vauth/spnego_gssapi.c6
-rw-r--r--lib/vauth/spnego_sspi.c23
-rw-r--r--lib/version.c60
-rw-r--r--lib/vquic/ngtcp2.c1600
-rw-r--r--lib/vquic/ngtcp2.h63
-rw-r--r--lib/vquic/quiche.c780
-rw-r--r--lib/vquic/quiche.h49
-rw-r--r--lib/vssh/libssh.c (renamed from lib/ssh-libssh.c)40
-rw-r--r--lib/vssh/libssh2.c (renamed from lib/ssh.c)49
-rw-r--r--lib/vtls/mesalink.c62
-rw-r--r--lib/vtls/nss.c16
-rw-r--r--lib/vtls/openssl.c233
-rw-r--r--lib/vtls/vtls.c10
-rw-r--r--lib/vtls/vtls.h3
-rw-r--r--packages/Makefile.in8
-rw-r--r--packages/OS400/README.OS4001
-rw-r--r--packages/OS400/ccsidcurl.c8
-rw-r--r--packages/OS400/ccsidcurl.h8
-rw-r--r--packages/OS400/curl.inc.in4
-rw-r--r--packages/vms/Makefile.in8
-rw-r--r--plan9/BUILD.PLAN9.txt55
-rw-r--r--plan9/include/mkfile34
-rw-r--r--plan9/lib/mkfile39
-rwxr-xr-xplan9/lib/mkfile.inc25
-rw-r--r--plan9/mkfile36
-rw-r--r--plan9/mkfile.proto30
-rw-r--r--plan9/src/mkfile45
-rwxr-xr-xplan9/src/mkfile.inc25
-rw-r--r--projects/Windows/VC10/lib/libcurl.vcxproj3
-rw-r--r--projects/Windows/VC10/src/curl.vcxproj2
-rw-r--r--projects/Windows/VC11/lib/libcurl.vcxproj3
-rw-r--r--projects/Windows/VC11/src/curl.vcxproj2
-rw-r--r--projects/Windows/VC12/lib/libcurl.vcxproj3
-rw-r--r--projects/Windows/VC12/src/curl.vcxproj2
-rw-r--r--projects/Windows/VC14/lib/libcurl.vcxproj3
-rw-r--r--projects/Windows/VC14/src/curl.vcxproj2
-rw-r--r--projects/Windows/VC15/lib/libcurl.vcxproj3
-rw-r--r--projects/Windows/VC15/src/curl.vcxproj2
-rw-r--r--projects/Windows/VC6/lib/libcurl.dsp12
-rw-r--r--projects/Windows/VC6/src/curl.dsp8
-rw-r--r--projects/Windows/VC7.1/lib/libcurl.vcproj9
-rw-r--r--projects/Windows/VC7.1/src/curl.vcproj6
-rw-r--r--projects/Windows/VC7/lib/libcurl.vcproj9
-rw-r--r--projects/Windows/VC7/src/curl.vcproj6
-rw-r--r--projects/Windows/VC8/lib/libcurl.vcproj12
-rw-r--r--projects/Windows/VC8/src/curl.vcproj8
-rw-r--r--projects/Windows/VC9/lib/libcurl.vcproj12
-rw-r--r--projects/Windows/VC9/src/curl.vcproj8
-rw-r--r--projects/build-openssl.bat19
-rw-r--r--scripts/Makefile.in8
-rw-r--r--src/Makefile.am2
-rw-r--r--src/Makefile.in64
-rw-r--r--src/Makefile.inc2
-rw-r--r--src/tool_cb_hdr.c12
-rw-r--r--src/tool_cb_wrt.c8
-rw-r--r--src/tool_cfgable.c3
-rw-r--r--src/tool_cfgable.h11
-rw-r--r--src/tool_getparam.c74
-rw-r--r--src/tool_help.c15
-rw-r--r--src/tool_help.h4
-rw-r--r--src/tool_hugehelp.c9297
-rw-r--r--src/tool_main.c26
-rw-r--r--src/tool_main.h5
-rw-r--r--src/tool_metalink.c15
-rw-r--r--src/tool_metalink.h3
-rw-r--r--src/tool_operate.c1638
-rw-r--r--src/tool_operate.h48
-rw-r--r--src/tool_operhlp.c8
-rw-r--r--src/tool_operhlp.h4
-rw-r--r--src/tool_paramhlp.c22
-rw-r--r--src/tool_paramhlp.h3
-rw-r--r--src/tool_parsecfg.c120
-rw-r--r--src/tool_progress.c314
-rw-r--r--src/tool_progress.h39
-rw-r--r--src/tool_setopt.c11
-rw-r--r--src/tool_version.h2
-rw-r--r--src/tool_writeout.c5
-rw-r--r--tests/Makefile.in8
-rw-r--r--tests/README27
-rw-r--r--tests/certs/Makefile.in4
-rw-r--r--tests/certs/scripts/Makefile.in4
-rw-r--r--tests/data/Makefile.in26
-rw-r--r--tests/data/Makefile.inc18
-rw-r--r--tests/data/test10028
-rw-r--r--tests/data/test11351
-rw-r--r--tests/data/test117450
-rw-r--r--tests/data/test126934
-rw-r--r--tests/data/test129110
-rw-r--r--tests/data/test14011
-rw-r--r--tests/data/test14021
-rw-r--r--tests/data/test14031
-rw-r--r--tests/data/test14041
-rw-r--r--tests/data/test14062
-rw-r--r--tests/data/test141218
-rw-r--r--tests/data/test141813
-rw-r--r--tests/data/test14201
-rw-r--r--tests/data/test151417
-rw-r--r--tests/data/test15324
-rw-r--r--tests/data/test15383
-rw-r--r--tests/data/test159452
-rw-r--r--tests/data/test16546
-rw-r--r--tests/data/test20064
-rw-r--r--tests/data/test20074
-rw-r--r--tests/data/test20084
-rw-r--r--tests/data/test20094
-rw-r--r--tests/data/test20104
-rw-r--r--tests/data/test20472
-rw-r--r--tests/data/test207742
-rw-r--r--tests/data/test207854
-rw-r--r--tests/data/test335102
-rw-r--r--tests/data/test3562
-rw-r--r--tests/data/test84856
-rw-r--r--tests/data/test84951
-rw-r--r--tests/data/test89257
-rw-r--r--tests/data/test89353
-rw-r--r--tests/data/test95356
-rw-r--r--tests/data/test95455
-rw-r--r--tests/libtest/Makefile.in786
-rw-r--r--tests/libtest/Makefile.inc9
-rw-r--r--tests/libtest/first.c6
-rw-r--r--tests/libtest/lib1560.c4
-rw-r--r--tests/libtest/lib1594.c66
-rw-r--r--tests/runtests.12
-rw-r--r--tests/server/Makefile.in4
-rwxr-xr-xtests/symbol-scan.pl4
-rw-r--r--tests/testcurl.12
-rw-r--r--tests/unit/Makefile.in4
-rw-r--r--tests/unit/unit1607.c8
-rw-r--r--tests/unit/unit1609.c10
-rw-r--r--tests/unit/unit1654.c2
-rw-r--r--winbuild/MakefileBuild.vc4
682 files changed, 18062 insertions, 10188 deletions
diff --git a/CHANGES b/CHANGES
index 447b46a5..0047ab41 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,1296 @@
Changelog
+Version 7.66.0 (10 Sep 2019)
+
+Daniel Stenberg (10 Sep 2019)
+- RELEASE-NOTES: curl 7.66.0
+
+- THANKS: from the 7.66.0 release
+
+- curl: make sure the parallel transfers do them all
+
+ The logic could erroneously break the loop too early before all
+ transfers had been transferred.
+
+ Reported-by: Tom van der Woerdt
+ Fixes #4316
+ Closes #4317
+
+- urlapi: one colon is enough for the strspn() input (typo)
+
+- urlapi: verify the IPv6 numerical address
+
+ It needs to parse correctly. Otherwise it could be tricked into letting
+ through a-f using host names that libcurl would then resolve. Like
+ '[ab.be]'.
+
+ Reported-by: Thomas Vegas
+ Closes #4315
+
+- [Clément Notin brought this change]
+
+ openssl: use SSL_CTX_set_<min|max>_proto_version() when available
+
+ OpenSSL 1.1.0 adds SSL_CTX_set_<min|max>_proto_version() that we now use
+ when available. Existing code is preserved for older versions of
+ OpenSSL.
+
+ Closes #4304
+
+- [Clément Notin brought this change]
+
+ openssl: indent, re-organize and add comments
+
+- [migueljcrum brought this change]
+
+ sspi: fix memory leaks
+
+ Closes #4299
+
+- travis: disable ngtcp2 builds (again)
+
+- Curl_fillreadbuffer: avoid double-free trailer buf on error
+
+ Reviewed-by: Jay Satiro
+ Reported-by: Thomas Vegas
+
+ Closes #4307
+
+- tool_setopt: handle a libcurl build without netrc support
+
+ Reported-by: codesniffer13 on github
+ Fixes #4302
+ Closes #4305
+
+- security:read_data fix bad realloc()
+
+ ... that could end up a double-free
+
+ CVE-2019-5481
+ Bug: https://curl.haxx.se/docs/CVE-2019-5481.html
+
+- [Thomas Vegas brought this change]
+
+ tftp: Alloc maximum blksize, and use default unless OACK is received
+
+ Fixes potential buffer overflow from 'recvfrom()', should the server
+ return an OACK without blksize.
+
+ Bug: https://curl.haxx.se/docs/CVE-2019-5482.html
+ CVE-2019-5482
+
+- [Thomas Vegas brought this change]
+
+ tftp: return error when packet is too small for options
+
+- KNOWN_BUGS/TODO: cleanup and remove outdated issues
+
+- RELEASE-NOTES: synced
+
+- netrc: free 'home' on error
+
+ Follow-up to f9c7ba9096ec2
+
+ Coverity CID 1453474
+
+ Closes #4291
+
+- urldata: avoid 'generic', use dedicated pointers
+
+ For the 'proto' union within the connectdata struct.
+
+ Closes #4290
+
+- cleanup: move functions out of url.c and make them static
+
+ Closes #4289
+
+- smtp: check for and bail out on too short EHLO response
+
+ Otherwise, a three byte response would make the smtp_state_ehlo_resp()
+ function misbehave.
+
+ Credit to OSS-Fuzz
+ Bug: https://crbug.com/oss-fuzz/16918
+
+ Assisted-by: Max Dymond
+
+ Closes #4287
+
+- smb: init *msg to NULL in smb_send_and_recv()
+
+ ... it might otherwise return OK from this function leaving that pointer
+ uninitialized.
+
+ Bug: https://crbug.com/oss-fuzz/16907
+
+ Closes #4286
+
+- ROADMAP: updated after recent user poll
+
+ In rough prio order
+
+- THANKS: remove duplicate
+
+- Curl_addr2string: take an addrlen argument too
+
+ This allows the function to figure out if a unix domain socket has a
+ file name or not associated with it! When a socket is created with
+ socketpair(), as done in the fuzzer testing, the path struct member is
+ uninitialized and must not be accessed.
+
+ Bug: https://crbug.com/oss-fuzz/16699
+
+ Closes #4283
+
+- [Rolf Eike Beer brought this change]
+
+ CMake: remove needless newlines at end of gss variables
+
+- [Rolf Eike Beer brought this change]
+
+ CI: remove duplicate configure flag for LGTM.com
+
+- [Rolf Eike Beer brought this change]
+
+ CMake: use platform dependent name for dlopen() library
+
+ Closes #4279
+
+- quiche: expire when poll returned data
+
+ ... to make sure we continue draining the queue until empty
+
+ Closes #4281
+
+- quiche: decrease available buffer size, don't assign it!
+
+ Found-by: Jeremy Lainé
+
+- RELEASE-NOTES: synced
+
+- [Kyohei Kadota brought this change]
+
+ curl: fix include conditions
+
+- [Kyohei Kadota brought this change]
+
+ plan9: fix installation instructions
+
+ Closes #4276
+
+- ngtcp2: on h3 stream close, call expire
+
+ ... to trigger a new read to detect the stream close!
+
+ Closes #4275
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: build latest ngtcp2 and ngtcp2_crypto_openssl
+
+ Closes #4278
+
+- ngtcp2: set flow control window to stream buffer size
+
+ Closes #4274
+
+- [Christopher Head brought this change]
+
+ CURLOPT_HEADERFUNCTION.3: clarify
+
+ Closes #4273
+
+- CURLINFO docs: mention that in redirects times are added
+
+ Suggested-by: Brandon Dong
+ Fixes #4250
+ Closes #4269
+
+- travis: enable ngtcp2 builds again
+
+ Switched to the openssl-quic-draft-22 openssl branch.
+
+ Closes #4271
+
+- HTTP3: switched openssl branch to use
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: Build with latest ngtcp2 and ngtcp2_crypto_openssl
+
+ Closes #4270
+
+- http2: when marked for closure and wanted to close == OK
+
+ It could otherwise return an error even when closed correctly if GOAWAY
+ had been received previously.
+
+ Reported-by: Tom van der Woerdt
+ Fixes #4267
+ Closes #4268
+
+- RELEASE-NOTES: synced
+
+- build-openssl: fix build with Visual Studio 2019
+
+ Reviewed-by: Marcel Raad
+ Contributed-by: osabc on github
+ Fixes #4188
+ Closes #4266
+
+Kamil Dudka (26 Aug 2019)
+- vauth: return CURLE_AUTH_ERROR on gss_init_sec_context() failure
+
+ This is a follow-up to https://github.com/curl/curl/pull/3864 .
+
+ Closes #4224
+
+Daniel Stenberg (26 Aug 2019)
+- KNOWN_BUGS: USE_UNIX_SOCKETS on Windows
+
+ Closes #4040
+
+- quiche: send the HTTP body correctly on callback uploads
+
+ Closes #4265
+
+- travis: disable ngtcp2 builds (temporarily)
+
+ Just too many API changes right now
+
+ Closes #4264
+
+- ngtcp2: add support for SSLKEYLOGFILE
+
+ Closes #4260
+
+- ngtcp2: improve h3 response receiving
+
+ Closes #4259
+
+- ngtcp2: use nghttp3_version()
+
+- ngtcp2: sync with upstream API changes
+
+ Assisted-by: Tatsuhiro Tsujikawa
+
+- [Kyle Abramowitz brought this change]
+
+ scp: fix directory name length used in memcpy
+
+ Fix read off end of array due to bad pointer math in getworkingpath for
+ SCP home directory case.
+
+ Closes #4258
+
+- http: the 'closed' struct field is used by both ngh2 and ngh3
+
+ and remove 'header_recvbuf', not used for anything
+
+ Reported-by: Jeremy Lainé
+
+ Closes #4257
+
+- ngtcp2: accept upload via callback
+
+ Closes #4256
+
+- defines: avoid underscore-prefixed defines
+
+ Double-underscored or underscore plus uppercase letter at least.
+
+ ... as they're claimed to be reserved.
+
+ Reported-by: patnyb on github
+
+ Fixes #4254
+ Closes #4255
+
+- travis: add a build using ngtcp2 + nghttp3 (and a patched OpenSSL)
+
+ Runs no tests
+
+ Closes #4253
+
+- travis: bump to using nghttp2 version 1.39.2
+
+ Closes #4252
+
+- [Gisle Vanem brought this change]
+
+ docs/examples/curlx: fix errors
+
+ Initialise 'mimetype' and require the -p12 arg.
+
+ Closes #4248
+
+- cleanup: remove DOT_CHAR completely
+
+ Follow-up to f9c7ba9096ec
+
+ The use of DOT_CHAR for ".ssh" was probably a mistake and is removed
+ now.
+
+ Pointed-out-by: Gisle Vanem
+ Bug: https://github.com/curl/curl/pull/4230#issuecomment-522960638
+
+ Closes #4247
+
+- spnego_sspi: add typecast to fix build warning
+
+ Reported in build "Win32 target on Debian Stretch (64-bit) -
+ i686-w64-mingw32 - gcc-20170516"
+
+ Closes #4245
+
+- openssl: build warning free with boringssl
+
+ Closes #4244
+
+- curl: make --libcurl use CURL_HTTP_VERSION_3
+
+ Closes #4243
+
+- ngtcp2: make postfields-set posts work
+
+ Closes #4242
+
+- http: remove chunked-encoding and expect header use for HTTP/3
+
+- [Alessandro Ghedini brought this change]
+
+ configure: use pkg-config to detect quiche
+
+ This removes the need to hard-code the quiche target path in
+ configure.ac.
+
+ This depends on https://github.com/cloudflare/quiche/pull/128
+
+ Closes #4237
+
+- CURLOPT_SSL_VERIFYHOST: treat the value 1 as 2
+
+ For a long time (since 7.28.1) we've returned error when setting the
+ value to 1 to make applications notice that we stopped supported the old
+ behavior for 1. Starting now, we treat 1 and 2 exactly the same.
+
+ Closes #4241
+
+- curl: use .curlrc (with a dot) on Windows as well
+
+ Fall-back to _curlrc if the dot-version is missing.
+
+ Co-Authored-By: Steve Holme
+
+ Closes #4230
+
+- netrc: make the code try ".netrc" on Windows as well
+
+ ... but fall back and try "_netrc" too if the dot version didn't work.
+
+ Co-Authored-By: Steve Holme
+
+- ngtcp2: use ngtcp2_version() to get the run-time version
+
+ ... which of course doesn't have to be the same used at build-time.
+
+ Function just recently merged in ngtcp2.
+
+- ngtcp2: move the h3 initing to immediately after the rx key
+
+ To fix a segfault and to better deal with 0-RTT
+
+ Assisted-by: Tatsuhiro Tsujikawa
+
+- [Alessandro Ghedini brought this change]
+
+ quiche: register debug callback once and earlier
+
+ The quiche debug callback is global and can only be initialized once, so
+ make sure we don't do it multiple times (e.g. if multiple requests are
+ executed).
+
+ In addition this initializes the callback before the connection is
+ created, so we get logs for the handshake as well.
+
+ Closes #4236
+
+- ssh: add a generic Curl_ssh_version function for SSH backends
+
+ Closes #4235
+
+- base64: check for SSH, not specific SSH backends
+
+- vssh: move ssh init/cleanup functions into backend code
+
+- vssh: create directory for SSH backend code
+
+- TODO/ROADMAP: remove "refuse downgrade redirects" and HTTP/3
+
+ HTTP3 is now already in full progress
+
+ Downgrade redirects can be achived almost exactly like that by setting
+ CURLOPT_REDIR_PROTOCOLS.
+
+- RELEASE-NOTES: synced
+
+- travis: add a quiche build
+
+ Closes #4207
+
+- http: fix use of credentials from URL when using HTTP proxy
+
+ When a username and password are provided in the URL, they were wrongly
+ removed from the stored URL so that subsequent uses of the same URL
+ wouldn't find the crendentials. This made doing HTTP auth with multiple
+ connections (like Digest) mishave.
+
+ Regression from 46e164069d1a5230 (7.62.0)
+
+ Test case 335 added to verify.
+
+ Reported-by: Mike Crowe
+
+ Fixes #4228
+ Closes #4229
+
+- [Mike Crowe brought this change]
+
+ tests: Replace outdated test case numbering documentation
+
+ Tests are no longer grouped by numeric range[1]. Let's stop saying that
+ and provide some alternative advice for numbering tests.
+
+ [1] https://curl.haxx.se/mail/lib-2019-08/0043.html
+
+ Closes #4227
+
+- travis: reduce number of torture tests in 'coverage'
+
+ ... to make it complete in time. This cut seems not almost not affect
+ the coverage percentage and yet completes within 35 minutes on travis
+ where the previous runs recently always timed out after 50.
+
+ Closes #4223
+
+- [Igor Makarov brought this change]
+
+ configure: use -lquiche to link to quiche
+
+ Closes #4226
+
+- ngtcp2: provide the callbacks as a static struct
+
+ ... instead of having them in quicsocket
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: add missing nghttp3_conn_add_write_offset call
+
+ Closes #4225
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: deal with stream close
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: Consume QUIC STREAM data properly
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: don't reinitialize SSL on Retry
+
+- multi: getsock improvements for QUIC connecting
+
+- connect: connections are persistent by default for HTTP/3
+
+- quiche: happy eyeballs
+
+ Closes #4220
+
+- ngtcp2: do QUIC connections happy-eyeballs friendly
+
+- curl_version: bump string buffer size to 250
+
+ With HTTP/3 libs and plenty TLS libs, I manged to hit the limit (which
+ causes a truncated output).
+
+- CURLOPT_ALTSVC.3: use a "" file name to not load from a file
+
+Jay Satiro (14 Aug 2019)
+- vauth: Use CURLE_AUTH_ERROR for auth function errors
+
+ - Add new error code CURLE_AUTH_ERROR.
+
+ Prior to this change auth function errors were signaled by
+ CURLE_OUT_OF_MEMORY and CURLE_RECV_ERROR, and neither one was
+ technically correct.
+
+ Ref: https://github.com/curl/curl/pull/3848
+
+ Co-authored-by: Dominik Hölzl
+
+ Closes https://github.com/curl/curl/pull/3864
+
+Daniel Stenberg (13 Aug 2019)
+- curl_version_info: make the quic_version a const
+
+ Follow-up from 1a2df1518ad8653f
+
+ Closes #4222
+
+- examples: add http3.c, altsvc.c and http3-present.c
+
+ Closes #4221
+
+Peter Wu (13 Aug 2019)
+- nss: use TLSv1.3 as default if supported
+
+ SSL_VersionRangeGetDefault returns (TLSv1.0, TLSv1.2) as supported
+ range in NSS 3.45. It looks like the intention is to raise the minimum
+ version rather than lowering the maximum, so adjust accordingly. Note
+ that the caller (nss_setup_connect) initializes the version range to
+ (TLSv1.0, TLSv1.3), so there is no need to check for >= TLSv1.0 again.
+
+ Closes #4187
+ Reviewed-by: Daniel Stenberg
+ Reviewed-by: Kamil Dudka
+
+Daniel Stenberg (13 Aug 2019)
+- quic.h: remove unused proto
+
+- curl_version_info.3: mentioned ALTSVC and HTTP3
+
+ ... and sorted the list alphabetically
+
+- lib/quic.c: unused - removed
+
+- CURLOPT_ALTSVC_CTRL.3: remove CURLALTSVC_ALTUSED
+
+ Follow-up to 98c3f148 that removed it from the header file
+
+- [Junho Choi brought this change]
+
+ docs/HTTP3: simplify quiche build instruction
+
+ Use --recursive to get boringssl in one line
+
+ Closes #4219
+
+- altsvc: make it use h3-22 with ngtcp2 as well
+
+- ngtcp2: initial h3 request work
+
+ Closes #4217
+
+- curl_version_info: offer quic (and h3) library info
+
+ Closes #4216
+
+- HTTP3: use ngtcp2's draft-22 branch
+
+- RELEASE-NOTES: synced
+
+- CURLOPT_READFUNCTION.3: provide inline example
+
+ ... instead of mentioning one in another place
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: send HTTP/3 request with nghttp3
+
+ This commit makes sending HTTP/3 request with nghttp3 work. It
+ minimally receives HTTP response and calls nghttp3 callbacks, but no
+ processing is made at the moment.
+
+ Closes #4215
+
+- nghttp3: initial h3 template code added
+
+- nghttp3: required when ngtcp2 is used for QUIC
+
+ - checked for by configure
+ - updated docs/HTTP3.md
+ - shown in the version string
+
+ Closes #4210
+
+- [Eric Wong brought this change]
+
+ asyn-thread: issue CURL_POLL_REMOVE before closing socket
+
+ This avoids EBADF errors from EPOLL_CTL_DEL operations in the
+ ephiperfifo.c example. EBADF is dangerous in multi-threaded
+ applications where I rely on epoll_ctl to operate on the same
+ epoll description from different threads.
+
+ Follow-up to eb9a604f8d7db8
+
+ Bug: https://curl.haxx.se/mail/lib-2019-08/0026.html
+ Closes #4211
+
+- [Carlo Marcelo Arenas Belón brought this change]
+
+ configure: avoid undefined check_for_ca_bundle
+
+ instead of using a "greater than 0" test, check for variable being
+ set, as it is always set to 1, and could be left unset if non of
+ OPENSSL MBEDTLS GNUTLS WOLFSSL is being configured for.
+
+ Closes #4213
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: Send ALPN h3-22
+
+ Closes #4212
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: use ngtcp2_settings_default and specify initial_ts
+
+- curl_global_init_mem.3: mention it was added in 7.12.0
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+ ngtcp2: make the QUIC handshake work
+
+ Closes #4209
+
+- [Alex Mayorga brought this change]
+
+ HTTP3.md: Update quiche build instructions
+
+ Added cloning for quiche and BoringSSL and modified the build
+ instructions so they work on a clean folder.
+
+ Closes #4208
+
+- CURLOPT_H3: removed
+
+ There's no use for this anymore and it was never in a release.
+
+ Closes #4206
+
+- http3: make connection reuse work
+
+ Closes #4204
+
+- quiche: add SSLKEYLOGFILE support
+
+- cleanup: s/curl_debug/curl_dbg_debug in comments and docs
+
+ Leftovers from the function rename back in 76b63489495
+
+ Reported-by: Gisle Vanem
+ Bug: https://github.com/curl/curl/commit/f3e0f071b14fcb46a453f69bdf4e062bcaacf362#com
+ mitcomment-34601751
+
+ Closes #4203
+
+- RELEASE-NOTES: synced
+
+- alt-svc: add protocol version selection masking
+
+ So that users can mask in/out specific HTTP versions when Alt-Svc is
+ used.
+
+ - Removed "h2c" and updated test case accordingly
+ - Changed how the altsvc struct is laid out
+ - Added ifdefs to make the unittest run even in a quiche-tree
+
+ Closes #4201
+
+- http3: fix the HTTP/3 in the request, make alt-svc set right versions
+
+ Closes #4200
+
+- alt-svc: send Alt-Used: in redirected requests
+
+ RFC 7838 section 5:
+
+ When using an alternative service, clients SHOULD include an Alt-Used
+ header field in all requests.
+
+ Removed CURLALTSVC_ALTUSED again (feature is still EXPERIMENTAL thus
+ this is deemed ok).
+
+ You can disable sending this header just like you disable any other HTTP
+ header in libcurl.
+
+ Closes #4199
+
+- CURLOPT_HTTP_VERSION: seting this to 3 forces HTTP/3 use directly
+
+ Even though it cannot fall-back to a lower HTTP version automatically. The
+ safer way to upgrade remains via CURLOPT_ALTSVC.
+
+ CURLOPT_H3 no longer has any bits that do anything and might be removed
+ before we remove the experimental label.
+
+ Updated the curl tool accordingly to use "--http3".
+
+ Closes #4197
+
+- docs/ALTSVC: remove what works and the experimental explanation
+
+ Also, put the TODO items at the bottom.
+
+ Closes #4198
+
+- docs/EXPERIMENTAL: explain what it means and what's experimental now
+
+- curl: make use of CURLINFO_RETRY_AFTER when retrying
+
+ If a Retry-After: header was used in the response, that value overrides
+ other retry timing options.
+
+ Fixes #3794
+ Closes #4195
+
+- curl: use CURLINFO_PROTOCOL to check for HTTP(s)
+
+ ... instead of CURLINFO_EFFECTIVE_URL to avoid string operations.
+
+- CURLINFO_RETRY_AFTER: parse the Retry-After header value
+
+ This is only the libcurl part that provides the information. There's no
+ user of the parsed value. This change includes three new tests for the
+ parser.
+
+ Ref: #3794
+
+- docs/ALTSVC.md: first basic file format description
+
+- curl: have -w's 'http_version' show '3' for HTTP/3
+
+ Closes #4196
+
+- curl.h: add CURL_HTTP_VERSION_3 to the version enum
+
+ It can't be set for CURLOPT_HTTP_VERSION, but it can be extracted with
+ CURLINFO_HTTP_VERSION.
+
+- quiche: make use of the connection timeout API properly
+
+- quiche: make POSTFIELDS posts work
+
+- quiche: improved error handling and memory cleanups
+
+- quiche: flush egress in h3_stream_recv() too
+
+- RELEASE-NOTES: synced
+
+Jay Satiro (6 Aug 2019)
+- [Patrick Monnerat brought this change]
+
+ os400: take care of CURLOPT_SASL_AUTHZID in curl_easy_setopt_ccsid().
+
+ Ref: https://github.com/curl/curl/issues/3653
+ Ref: https://github.com/curl/curl/pull/3790
+
+ NOTE: This commit was cherry-picked and is part of a series of commits
+ that added the authzid feature for upcoming 7.66.0. The series was
+ temporarily reverted in db8ec1f so that it would not ship in a 7.65.x
+ patch release.
+
+ Closes https://github.com/curl/curl/pull/4186
+
+- tests: Fix the line endings for the SASL alt-auth tests
+
+ - Change data and protocol sections to CRLF line endings.
+
+ Prior to this change the tests would fail or hang, which is because
+ certain sections such as protocol require CRLF line endings.
+
+ Follow-up to grandparent commit which added the tests.
+
+ Ref: https://github.com/curl/curl/issues/3653
+ Ref: https://github.com/curl/curl/pull/3790
+
+ NOTE: This commit was cherry-picked and is part of a series of commits
+ that added the authzid feature for upcoming 7.66.0. The series was
+ temporarily reverted in db8ec1f so that it would not ship in a 7.65.x
+ patch release.
+
+ Closes https://github.com/curl/curl/pull/4186
+
+- [Steve Holme brought this change]
+
+ examples: Added SASL PLAIN authorisation identity (authzid) examples
+
+ Ref: https://github.com/curl/curl/issues/3653
+ Ref: https://github.com/curl/curl/pull/3790
+
+ NOTE: This commit was cherry-picked and is part of a series of commits
+ that added the authzid feature for upcoming 7.66.0. The series was
+ temporarily reverted in db8ec1f so that it would not ship in a 7.65.x
+ patch release.
+
+ Closes https://github.com/curl/curl/pull/4186
+
+- [Steve Holme brought this change]
+
+ curl: --sasl-authzid added to support CURLOPT_SASL_AUTHZID from the tool
+
+ Ref: https://github.com/curl/curl/issues/3653
+ Ref: https://github.com/curl/curl/pull/3790
+
+ NOTE: This commit was cherry-picked and is part of a series of commits
+ that added the authzid feature for upcoming 7.66.0. The series was
+ temporarily reverted in db8ec1f so that it would not ship in a 7.65.x
+ patch release.
+
+ Closes https://github.com/curl/curl/pull/4186
+
+- [Steve Holme brought this change]
+
+ sasl: Implement SASL authorisation identity via CURLOPT_SASL_AUTHZID
+
+ Added the ability for the calling program to specify the authorisation
+ identity (authzid), the identity to act as, in addition to the
+ authentication identity (authcid) and password when using SASL PLAIN
+ authentication.
+
+ Fixes #3653
+ Closes #3790
+
+ NOTE: This commit was cherry-picked and is part of a series of commits
+ that added the authzid feature for upcoming 7.66.0. The series was
+ temporarily reverted in db8ec1f so that it would not ship in a 7.65.x
+ patch release.
+
+ Closes https://github.com/curl/curl/pull/4186
+
+Daniel Stenberg (6 Aug 2019)
+- docs/HTTP3: refreshed as it is now in master and HTTP/3 can be tested
+
+- [Yiming Jing brought this change]
+
+ mesalink: implement client authentication
+
+ Closes #4184
+
+- curl_multi_poll: a sister to curl_multi_wait() that waits more
+
+ Repeatedly we see problems where using curl_multi_wait() is difficult or
+ just awkward because if it has no file descriptor to wait for
+ internally, it returns immediately and leaves it to the caller to wait
+ for a small amount of time in order to avoid occasional busy-looping.
+
+ This is often missed or misunderstood, leading to underperforming
+ applications.
+
+ This change introduces curl_multi_poll() as a replacement drop-in
+ function that accepts the exact same set of arguments. This function
+ works identically to curl_multi_wait() - EXCEPT - for the case when
+ there's nothing to wait for internally, as then this function will by
+ itself wait for a "suitable" short time before it returns. This
+ effectiely avoids all risks of busy-looping and should also make it less
+ likely that apps "over-wait".
+
+ This also changes the curl tool to use this funtion internally when
+ doing parallel transfers and changes curl_easy_perform() to use it
+ internally.
+
+ Closes #4163
+
+- quiche:h3_stream_recv return 0 at end of stream
+
+ ... and remove some verbose messages we don't need. Made transfers from
+ facebook.com work better.
+
+- altsvc: make quiche use h3-22 now
+
+- quiche: show the actual version number
+
+- quiche: first working HTTP/3 request
+
+ - enable debug log
+ - fix use of quiche API
+ - use download buffer
+ - separate header/body
+
+ Closes #4193
+
+- http09: disable HTTP/0.9 by default in both tool and library
+
+ As the plan has been laid out in DEPRECATED. Update docs accordingly and
+ verify in test 1174. Now requires the option to be set to allow HTTP/0.9
+ responses.
+
+ Closes #4191
+
+- quiche: initial h3 request send/receive
+
+- lib/Makefile.am: make checksrc run in vquic too
+
+- altsvc: fix removal of expired cache entry
+
+ Closes #4192
+
+- RELEASE-NOTES: synced
+
+Steve Holme (4 Aug 2019)
+- md4: Use our own MD4 implementation when no crypto libraries are available
+
+ Closes #3780
+
+- md4: No need to include Curl_md4.h for each TLS library
+
+- md4: No need for the NTLM code to call Curl_md4it() for each TLS library
+
+ As the NTLM code no longer calls any of TLS libraries' specific MD4
+ functions, there is no need to call this function for each #ifdef.
+
+- md4: Move the mbed TLS MD4 implementation out of the NTLM code
+
+- md4: Move the WinCrypt implementation out of the NTLM code
+
+- md4: Move the SecureTransport implementation out of the NTLM code
+
+- md4: Use the Curl_md4it() function for OpenSSL based NTLM
+
+- md4: Move the GNU TLS gcrypt MD4 implementation out of the NTLM code
+
+- md4: Move the GNU TLS Nettle MD4 implementation out of the NTLM code
+
+Jay Satiro (4 Aug 2019)
+- OS400: Add CURLOPT_H3 symbols
+
+ Follow-up to 3af0e76 which added experimental H3 support.
+
+ Closes https://github.com/curl/curl/pull/4185
+
+Daniel Stenberg (3 Aug 2019)
+- url: make use of new HTTP version if alt-svc has one
+
+- url: set conn->transport to default TCP at init time
+
+- altsvc: with quiche, use the quiche h3 alpn string
+
+ Closes #4183
+
+- alt-svc: more liberal ALPN name parsing
+
+ Allow pretty much anything to be part of the ALPN identifier. In
+ particular minus, which is used for "h3-20" (in-progress HTTP/3
+ versions) etc.
+
+ Updated test 356.
+ Closes #4182
+
+- quiche: use the proper HTTP/3 ALPN
+
+- quiche: add failf() calls for two error cases
+
+ To aid debugging
+
+ Closes #4181
+
+- mailmap: added Kyohei Kadota
+
+Kamil Dudka (1 Aug 2019)
+- http_negotiate: improve handling of gss_init_sec_context() failures
+
+ If HTTPAUTH_GSSNEGOTIATE was used for a POST request and
+ gss_init_sec_context() failed, the POST request was sent
+ with empty body. This commit also restores the original
+ behavior of `curl --fail --negotiate`, which was changed
+ by commit 6c6035532383e300c712e4c1cd9fdd749ed5cf59.
+
+ Add regression tests 2077 and 2078 to cover this.
+
+ Fixes #3992
+ Closes #4171
+
+Daniel Stenberg (1 Aug 2019)
+- mailmap: added 4 more names
+
+ Evgeny Grin, Peter Pih, Anton Malov and Marquis de Muesli
+
+- mailmap: add Giorgos Oikonomou
+
+- src/makefile: fix uncompressed hugehelp.c generation
+
+ Regression from 5cf5d57ab9 (7.64.1)
+
+ Fixed-by: Lance Ware
+ Fixes #4176
+ Closes #4177
+
+- appveyor: pass on -k to make
+
+- timediff: make it 64 bit (if possible) even with 32 bit time_t
+
+ ... to make it hold microseconds too.
+
+ Fixes #4165
+ Closes #4168
+
+- ROADMAP: parallel transfers are merged now
+
+- getenv: support up to 4K environment variable contents on windows
+
+ Reported-by: Michal Čaplygin
+ Fixes #4174
+ Closes #4175
+
+- [Kyohei Kadota brought this change]
+
+ plan9: add support for running on Plan 9
+
+ Closes #3701
+
+- [Kyohei Kadota brought this change]
+
+ ntlm: explicit type casting
+
+- [Justin brought this change]
+
+ curl.h: fix outdated comment
+
+ Closes #4167
+
+- curl: remove outdated comment
+
+ Turned bad with commit b8894085000
+
+ Reported-by: niallor on github
+ Fixes #4172
+ Closes #4173
+
+- cleanup: remove the 'numsocks' argument used in many places
+
+ It was used (intended) to pass in the size of the 'socks' array that is
+ also passed to these functions, but was rarely actually checked/used and
+ the array is defined to a fixed size of MAX_SOCKSPEREASYHANDLE entries
+ that should be used instead.
+
+ Closes #4169
+
+- readwrite_data: repair setting the TIMER_STARTTRANSFER stamp
+
+ Regression, broken in commit 65eb65fde64bd5f (curl 7.64.1)
+
+ Reported-by: Jonathan Cardoso Machado
+ Assisted-by: Jay Satiro
+
+ Fixes #4136
+ Closes #4162
+
+- mailmap: Amit Katyal
+
+- asyn-thread: removed unused variable
+
+ Follow-up to eb9a604f. Mistake caused by me when I edited the commit
+ before push...
+
+- RELEASE-NOTES: synced
+
+- [Amit Katyal brought this change]
+
+ asyn-thread: create a socketpair to wait on
+
+ Closes #4157
+
+- curl: cap the maximum allowed values for retry time arguments
+
+ ... to avoid integer overflows later when multiplying with 1000 to
+ convert seconds to milliseconds.
+
+ Added test 1269 to verify.
+
+ Reported-by: Jason Lee
+ Closes #4166
+
+- progress: reset download/uploaded counter
+
+ ... to make CURLOPT_MAX_RECV_SPEED_LARGE and
+ CURLOPT_MAX_SEND_SPEED_LARGE work correctly on subsequent transfers that
+ reuse the same handle.
+
+ Fixed-by: Ironbars13 on github
+ Fixes #4084
+ Closes #4161
+
+- http2_recv: trigger another read when the last data is returned
+
+ ... so that end-of-stream is detected properly.
+
+ Reported-by: Tom van der Woerdt
+ Fixes #4043
+ Closes #4160
+
+- curl: avoid uncessary libcurl timeouts (in parallel mode)
+
+ When curl_multi_wait() returns OK without file descriptors to wait for,
+ it might already have done a long timeout.
+
+ Closes #4159
+
+- [Balazs Kovacsics brought this change]
+
+ HTTP: use chunked Transfer-Encoding for HTTP_POST if size unknown
+
+ If using the read callback for HTTP_POST, and POSTFIELDSIZE is not set,
+ automatically add a Transfer-Encoding: chunked header, same as it is
+ already done for HTTP_PUT, HTTP_POST_FORM and HTTP_POST_MIME. Update
+ test 1514 according to the new behaviour.
+
+ Closes #4138
+
+Jay Satiro (29 Jul 2019)
+- [Daniel Stenberg brought this change]
+
+ winbuild: add vquic to list of build directories
+
+ This fixes the winbuild build method which broke several days ago
+ when experimental quic support was added in 3af0e76.
+
+ Reported-by: Michael Lee
+
+ Fixes https://github.com/curl/curl/issues/4158
+
+- easy: resize receive buffer on easy handle reset
+
+ - In curl_easy_reset attempt to resize the receive buffer to its default
+ size. If realloc fails then continue using the previous size.
+
+ Prior to this change curl_easy_reset did not properly handle resetting
+ the receive buffer (data->state.buffer). It reset the variable holding
+ its size (data->set.buffer_size) to the default size (READBUFFER_SIZE)
+ but then did not actually resize the buffer. If a user resized the
+ buffer by using CURLOPT_BUFFERSIZE to set the size smaller than the
+ default, later called curl_easy_reset and attempted to reuse the handle
+ then a heap overflow would very likely occur during that handle's next
+ transfer.
+
+ Reported-by: Felix Hädicke
+
+ Fixes https://github.com/curl/curl/issues/4143
+ Closes https://github.com/curl/curl/pull/4145
+
+- [Brad Spencer brought this change]
+
+ examples: Avoid reserved names in hiperfifo examples
+
+ - Trade in __attribute__((unused)) for the classic (void)x to silence
+ unused symbols.
+
+ Because the classic way is not gcc specific. Also because the prior
+ method mapped to symbol _Unused, which starts with _ and a capital
+ letter which is reserved.
+
+ Assisted-by: The Infinnovation team
+
+ Bug: https://github.com/curl/curl/issues/4120#issuecomment-512542108
+
+ Closes https://github.com/curl/curl/pull/4153
+
+Daniel Stenberg (25 Jul 2019)
+- RELEASE-NOTES: synced
+
+- [Felix Hädicke brought this change]
+
+ ssh-libssh: do not specify O_APPEND when not in append mode
+
+ Specifying O_APPEND in conjunction with O_TRUNC and O_CREAT does not
+ make much sense. And this combination of flags is not accepted by all
+ SFTP servers (at least not Apache SSHD).
+
+ Fixes #4147
+ Closes #4148
+
+- [Gergely Nagy brought this change]
+
+ multi: call detach_connection before Curl_disconnect
+
+ Curl_disconnect bails out if conn->easyq is not empty, detach_connection
+ needs to be called first to remove the current easy from the queue.
+
+ Fixes #4144
+ Closes #4151
+
+Jay Satiro (23 Jul 2019)
+- tool_operate: fix implicit call to easysrc_cleanup
+
+ easysrc_cleanup is only defined when CURL_DISABLE_LIBCURL_OPTION is not
+ defined, and prior to this change would be called regardless.
+
+ Bug: https://github.com/curl/curl/pull/3804#issuecomment-513922637
+ Reported-by: Marcel Raad
+
+ Closes https://github.com/curl/curl/pull/4142
+
+Daniel Stenberg (22 Jul 2019)
+- curl:create_transfers check return code from curl_easy_setopt
+
+ From commit b8894085
+
+ Pointed out by Coverity CID 1451703
+
+ Closes #4134
+
+- HTTP3: initial (experimental) support
+
+ USe configure --with-ngtcp2 or --with-quiche
+
+ Using either option will enable a HTTP3 build.
+ Co-authored-by: Alessandro Ghedini <alessandro@ghedini.me>
+
+ Closes #3500
+
+- curl: remove dead code
+
+ The loop never loops (since b889408500), pointed out by Coverity (CID
+ 1451702)
+
+ Closes #4133
+
+- docs/PARALLEL-TRANSFERS: correct the version number
+
+- docs/PARALLEL-TRANSFERS: added
+
+- curl: support parallel transfers
+
+ This is done by making sure each individual transfer is first added to a
+ linked list as then they can be performed serially, or at will, in
+ parallel.
+
+ Closes #3804
+
+- docs/MANUAL.md: converted to markdown from plain text
+
+ ... will make it render as a nicer web page.
+
+ Closes #4131
+
+- curl_version_info: provide nghttp2 details
+
+ Introducing CURLVERSION_SIXTH with nghttp2 info.
+
+ Closes #4121
+
+- bump: start working on 7.66.0
+
+- source: remove names from source comments
+
+ Several reasons:
+
+ - we can't add everyone who's helping out so its unfair to just a few
+ selected ones.
+ - we already list all helpers in THANKS and in RELEASE-NOTES for each
+ release
+ - we don't want to give the impression that some parts of the code is
+ "owned" or "controlled" by specific persons
+
+ Assisted-by: Daniel Gustafsson
+ Closes #4129
+
Version 7.65.3 (19 Jul 2019)
Daniel Stenberg (19 Jul 2019)
@@ -59,7 +1349,7 @@ Jay Satiro (17 Jul 2019)
Closes https://github.com/curl/curl/pull/4118
-- [georgeok brought this change]
+- [Giorgos Oikonomou brought this change]
CIPHERS.md: Explain Schannel error SEC_E_ALGORITHM_MISMATCH
@@ -3621,7 +4911,7 @@ Jay Satiro (25 Feb 2019)
Fixes https://github.com/curl/curl/issues/3595
Closes https://github.com/curl/curl/pull/3596
-- [georgeok brought this change]
+- [Giorgos Oikonomou brought this change]
schannel: support CALG_ECDH_EPHEM algorithm
@@ -4651,7 +5941,7 @@ Daniel Stenberg (4 Feb 2019)
CVE-2018-16890
Marcel Raad (1 Feb 2019)
-- [georgeok brought this change]
+- [Giorgos Oikonomou brought this change]
spnego_sspi: add support for channel binding
@@ -4824,7 +6114,7 @@ Daniel Stenberg (19 Jan 2019)
Closes #3484
Marcel Raad (19 Jan 2019)
-- [georgeok brought this change]
+- [Giorgos Oikonomou brought this change]
ntlm_sspi: add support for channel binding
@@ -6333,1683 +7623,3 @@ Daniel Stenberg (12 Nov 2018)
practice".
Closes #3225
-
-- curl: --local-port range was not "including"
-
- The end port number in a given range was not included in the range used,
- as it is documented to be.
-
- Reported-by: infinnovation-dev on github
- Fixes #3251
- Closes #3255
-
-- [Jérémy Rocher brought this change]
-
- openssl: support BoringSSL TLS renegotiation
-
- As per BoringSSL porting documentation [1], BoringSSL rejects peer
- renegotiations by default.
-
- curl fails when trying to authenticate to server through client
- certificate if it is requested by server after the initial TLS
- handshake.
-
- Enable renegotiation by default with BoringSSL to get same behavior as
- with OpenSSL. This is done by calling SSL_set_renegotiate_mode [2]
- which was introduced in commit 1d5ef3bb1eb9 [3].
-
- 1 - https://boringssl.googlesource.com/boringssl/+/HEAD/PORTING.md#tls-renegotiation
- 2 - https://boringssl.googlesource.com/boringssl/+/master/include/openssl/ssl.h#3482
- 3 - https://boringssl.googlesource.com/boringssl/+/1d5ef3bb1eb97848617db5e7d633d735a401df86
-
- Signed-off-by: Jérémy Rocher <rocher.jeremy@gmail.com>
- Fixes #3258
- Closes #3259
-
-- HISTORY: add some milestones
-
- Added a few of the more notable milestones in curl history that were
- missing. Primarily more recent ones but I also noted some older that
- could be worth mentioning.
-
- [ci skip]
- Closes #3257
-
-Daniel Gustafsson (9 Nov 2018)
-- KNOWN_BUGS: add --proxy-any connection issue
-
- Add the identified issue with --proxy-any and proxy servers which
- advertise authentication schemes other than the supported one.
-
- Closes #876
- Closes #3250
- Reported-by: NTMan on Github
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Daniel Stenberg (9 Nov 2018)
-- [Jim Fuller brought this change]
-
- setopt: add CURLOPT_CURLU
-
- Allows an application to pass in a pre-parsed URL via a URL handle.
-
- Closes #3227
-
-- [Gisle Vanem brought this change]
-
- docs: ESCape "\n" codes
-
- Groff / Troff will display a:
- printaf("Errno: %ld\n", error);
- as:
- printf("Errno: %ld0, error);
-
- when a "\n" is not escaped. Use "\\n" instead.
-
- Closes #3246
-
-- curl: --local-port fix followup
-
- Regression by 52db54869e6.
-
- Reported-by: infinnovation-dev on github
- Fixes #3248
- Closes #3249
-
-GitHub (7 Nov 2018)
-- [Gisle Vanem brought this change]
-
- More "\n" ESCaping
-
-Daniel Stenberg (7 Nov 2018)
-- RELEASE-NOTES: synced
-
-- curl: fix --local-port integer overflow
-
- The tool's local port command line range parser didn't check for integer
- overflows and could pass "weird" data to libcurl for this option.
- libcurl however, has a strict range check for the values so it rejects
- anything outside of the accepted range.
-
- Reported-by: Brian Carpenter
- Closes #3242
-
-- curl: correct the switch() logic in ourWriteOut
-
- Follow-up to e431daf013, as I did the wrong correction for a compiler
- warning. It should be a break and not a fall-through.
-
- Pointed-out-by: Frank Gevaerts
-
-- [Frank Gevaerts brought this change]
-
- curl: add %{stderr} and %{stdout} for --write-out
-
- Closes #3115
-
-Daniel Gustafsson (7 Nov 2018)
-- winssl: be consistent in Schannel capitalization
-
- The productname from Microsoft is "Schannel", but in infof/failf
- reporting we use "schannel". This removes different versions.
-
- Closes #3243
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Daniel Stenberg (7 Nov 2018)
-- TODO: Have the URL API offer IDN decoding
-
- Similar to how URL decoding/encoding is done, we could have URL
- functions to convert IDN host names to punycode.
-
- Suggested-by: Alexey Melnichuk
- Closes #3232
-
-- urlapi: only skip encoding the first '=' with APPENDQUERY set
-
- APPENDQUERY + URLENCODE would skip all equals signs but now it only skip
- encoding the first to better allow "name=content" for any content.
-
- Reported-by: Alexey Melnichuk
- Fixes #3231
- Closes #3231
-
-- url: a short host name + port is not a scheme
-
- The function identifying a leading "scheme" part of the URL considered a
- few letters ending with a colon to be a scheme, making something like
- "short:80" to become an unknown scheme instead of a short host name and
- a port number.
-
- Extended test 1560 to verify.
-
- Also fixed test203 to use file_pwd to make it get the correct path on
- windows. Removed test 2070 since it was a duplicate of 203.
-
- Assisted-by: Marcel Raad
- Reported-by: Hagai Auro
- Fixes #3220
- Fixes #3233
- Closes #3223
- Closes #3235
-
-- [Sangamkar brought this change]
-
- libcurl: stop reading from paused transfers
-
- In the transfer loop it would previously not acknwledge the pause bit
- and continue until drained or loop ended.
-
- Closes #3240
-
-Jay Satiro (6 Nov 2018)
-- tool: add undocumented option --dump-module-paths for win32
-
- - Add an undocumented diagnostic option for Windows to show the full
- paths of all loaded modules regardless of whether or not libcurl
- initialization succeeds.
-
- This is needed so that in the CI we can get a list of all DLL
- dependencies after initialization (when they're most likely to have
- finished loading) and then package them as artifacts so that a
- functioning build can be downloaded. Also I imagine it may have some use
- as a diagnostic for help requests.
-
- Ref: https://github.com/curl/curl/pull/3103
-
- Closes https://github.com/curl/curl/pull/3208
-
-- curl_multibyte: fix a malloc overcalculation
-
- Prior to this change twice as many bytes as necessary were malloc'd when
- converting wchar to UTF8. To allay confusion in the future I also
- changed the variable name for the amount of bytes from len to bytes.
-
- Closes https://github.com/curl/curl/pull/3209
-
-Michael Kaufmann (5 Nov 2018)
-- netrc: don't ignore the login name specified with "--user"
-
- - for "--netrc", don't ignore the login/password specified with "--user",
- only ignore the login/password in the URL.
- This restores the netrc behaviour of curl 7.61.1 and earlier.
- - fix the documentation of CURL_NETRC_REQUIRED
- - improve the detection of login/password changes when reading .netrc
- - don't read .netrc if both login and password are already set
-
- Fixes #3213
- Closes #3224
-
-Patrick Monnerat (5 Nov 2018)
-- OS400: add URL API ccsid wrappers and sync ILE/RPG bindings
-
-Daniel Stenberg (5 Nov 2018)
-- [Yasuhiro Matsumoto brought this change]
-
- curl: fixed UTF-8 in current console code page (Windows)
-
- Fixes #3211
- Fixes #3175
- Closes #3212
-
-- TODO: 2.6 multi upkeep
-
- Closes #3199
-
-Daniel Gustafsson (5 Nov 2018)
-- unittest: make 1652 stable across collations
-
- The previous coding used a format string whose output depended on the
- current locale of the environment running the test. Since the gist of
- the test is to have a format string, with the actual formatting being
- less important, switch to a more stable formatstring with decimals.
-
- Reported-by: Marcel Raad
- Closes #3234
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
-
-Daniel Stenberg (5 Nov 2018)
-- Revert "url: a short host name + port is not a scheme"
-
- This reverts commit 226cfa8264cd979eff3fd52c0f3585ef095e7cf2.
-
- This commit caused test failures on appveyor/windows. Work on fixing them is
- in #3235.
-
-- symbols-in-versions: add missing CURLU_ symbols
-
- ...and fix symbol-scan.pl to also scan urlapi.h
-
- Reported-by: Alexey Melnichuk
- Fixes #3226
- Closes #3230
-
-Daniel Gustafsson (3 Nov 2018)
-- infof: clearly indicate truncation
-
- The internal buffer in infof() is limited to 2048 bytes of payload plus
- an additional byte for NULL termination. Servers with very long error
- messages can however cause truncation of the string, which currently
- isn't very clear, and leads to badly formatted output.
-
- This appends a "...\n" (or just "..." in case the format didn't with a
- newline char) marker to the end of the string to clearly show
- that it has been truncated.
-
- Also include a unittest covering infof() to try and catch any bugs
- introduced in this quite important function.
-
- Closes #3216
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
-
-Michael Kaufmann (3 Nov 2018)
-- tool_getparam: fix some comments
-
-Daniel Stenberg (3 Nov 2018)
-- url: a short host name + port is not a scheme
-
- The function identifying a leading "scheme" part of the URL considered a few
- letters ending with a colon to be a scheme, making something like "short:80"
- to become an unknown scheme instead of a short host name and a port number.
-
- Extended test 1560 to verify.
-
- Reported-by: Hagai Auro
- Fixes #3220
- Closes #3223
-
-- URL: fix IPv6 numeral address parser
-
- Regression from 46e164069d1a52. Extended test 1560 to verify.
-
- Reported-by: tpaukrt on github
- Fixes #3218
- Closes #3219
-
-- travis: remove curl before a normal build
-
- on Linux. To make sure the test suite runs with its newly build tool and
- doesn't require an external one present.
-
- Bug: #3198
- Closes #3200
-
-- [Tim Rühsen brought this change]
-
- mprintf: avoid unsigned integer overflow warning
-
- The overflow has no real world impact.
- Just avoid it for "best practice".
-
- Code change suggested by "The Infinnovation Team" and Daniel Stenberg.
- Closes #3184
-
-- Curl_follow: accept non-supported schemes for "fake" redirects
-
- When not actually following the redirect and the target URL is only
- stored for later retrieval, curl always accepted "non-supported"
- schemes. This was a regression from 46e164069d1a5230.
-
- Reported-by: Brad King
- Fixes #3210
- Closes #3215
-
-Daniel Gustafsson (2 Nov 2018)
-- openvms: fix example name
-
- Commit efc696a2e09225bfeab4 renamed persistant.c to persistent.c to
- fix the typo in the name, but missed to update the OpenVMS package
- files which still looked for the old name.
-
- Closes #3217
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Viktor Szakats <commit@vszakats.net>
-
-Daniel Stenberg (1 Nov 2018)
-- configure: show CFLAGS, LDFLAGS etc in summary
-
- To make it easier to understand other people's and remote builds etc.
-
- Closes #3207
-
-- version: bump for next cycle
-
-- axtls: removed
-
- As has been outlined in the DEPRECATE.md document, the axTLS code has
- been disabled for 6 months and is hereby removed.
-
- Use a better supported TLS library!
-
- Assisted-by: Daniel Gustafsson
- Closes #3194
-
-- [marcosdiazr brought this change]
-
- schannel: make CURLOPT_CERTINFO support using Issuer chain
-
- Closes #3197
-
-- travis: build with sanitize=address,undefined,signed-integer-overflow
-
- ... using clang
-
- Closes #3190
-
-- schannel: use Curl_ prefix for global private symbols
-
- Curl_verify_certificate() must use the Curl_ prefix since it is globally
- available in the lib and otherwise steps outside of our namespace!
-
- Closes #3201
-
-Kamil Dudka (1 Nov 2018)
-- tests: drop http_pipe.py script no longer used
-
- It is unused since commit f7208df7d9d5cd5e15e2d89237e828f32b63f135.
-
- Closes #3204
-
-Daniel Stenberg (31 Oct 2018)
-- runtests: use the local curl for verifying
-
- ... revert the mistaken change brought in commit 8440616f53.
-
- Reported-by: Alessandro Ghedini
- Bug: https://curl.haxx.se/mail/lib-2018-10/0118.html
-
- Closes #3198
-
-Version 7.62.0 (30 Oct 2018)
-
-Daniel Stenberg (30 Oct 2018)
-- RELEASE-NOTES: 7.62.0
-
-- THANKS: 7.62.0 status
-
-Daniel Gustafsson (30 Oct 2018)
-- vtls: add MesaLink to curl_sslbackend enum
-
- MesaLink support was added in commit 57348eb97d1b8fc3742e02c but the
- backend was never added to the curl_sslbackend enum in curl/curl.h.
- This adds the new backend to the enum and updates the relevant docs.
-
- Closes #3195
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Daniel Stenberg (30 Oct 2018)
-- [Ruslan Baratov brought this change]
-
- cmake: Remove unused CURL_CONFIG_HAS_BEEN_RUN_BEFORE variable
-
- Closes #3191
-
-- test2080: verify the fix for CVE-2018-16842
-
-- voutf: fix bad arethmetic when outputting warnings to stderr
-
- CVE-2018-16842
- Reported-by: Brian Carpenter
- Bug: https://curl.haxx.se/docs/CVE-2018-16842.html
-
-- [Tuomo Rinne brought this change]
-
- cmake: uniform ZLIB to use USE_ variable and clean curl-config.cmake.in
-
- Closes #3123
-
-- [Tuomo Rinne brought this change]
-
- cmake: add find_dependency call for ZLIB to CMake config file
-
-- [Tuomo Rinne brought this change]
-
- cmake: add support for transitive ZLIB target
-
-- unit1650: fix "null pointer passed as argument 1 to memcmp"
-
- Detected by UndefinedBehaviorSanitizer
-
- Closes #3187
-
-- travis: add a "make tidy" build that runs clang-tidy
-
- Closes #3182
-
-- unit1300: fix stack-use-after-scope AddressSanitizer warning
-
- Closes #3186
-
-- Curl_auth_create_plain_message: fix too-large-input-check
-
- CVE-2018-16839
- Reported-by: Harry Sintonen
- Bug: https://curl.haxx.se/docs/CVE-2018-16839.html
-
-- Curl_close: clear data->multi_easy on free to avoid use-after-free
-
- Regression from b46cfbc068 (7.59.0)
- CVE-2018-16840
- Reported-by: Brian Carpenter (Geeknik Labs)
-
- Bug: https://curl.haxx.se/docs/CVE-2018-16840.html
-
-- [randomswdev brought this change]
-
- system.h: use proper setting with Sun C++ as well
-
- system.h selects the proper Sun settings when __SUNPRO_C is defined. The
- Sun compiler does not define it when compiling C++ files. I'm adding a
- check also on __SUNPRO_CC to allow curl to work properly also when used
- in a C++ project on Sun Solaris.
-
- Closes #3181
-
-- rand: add comment to skip a clang-tidy false positive
-
-- test1651: unit test Curl_extract_certinfo()
-
- The version used for Gskit, NSS, GnuTLS, WolfSSL and schannel.
-
-- x509asn1: always check return code from getASN1Element()
-
-- Makefile: add 'tidy' target that runs clang-tidy
-
- Available in the root, src and lib dirs.
-
- Closes #3163
-
-- RELEASE-PROCEDURE: adjust the release dates
-
- See: https://curl.haxx.se/mail/lib-2018-10/0107.html
-
-Patrick Monnerat (27 Oct 2018)
-- x509asn1: suppress left shift on signed value
-
- Use an unsigned variable: as the signed operation behavior is undefined,
- this change silents clang-tidy about it.
-
- Ref: https://github.com/curl/curl/pull/3163
- Reported-By: Daniel Stenberg
-
-Michael Kaufmann (27 Oct 2018)
-- multi: Fix error handling in the SENDPROTOCONNECT state
-
- If Curl_protocol_connect() returns an error code,
- handle the error instead of switching to the next state.
-
- Closes #3170
-
-Daniel Stenberg (27 Oct 2018)
-- RELEASE-NOTES: synced
-
-- openssl: output the correct cipher list on TLS 1.3 error
-
- When failing to set the 1.3 cipher suite, the wrong string pointer would
- be used in the error message. Most often saying "(nil)".
-
- Reported-by: Ricky-Tigg on github
- Fixes #3178
- Closes #3180
-
-- docs/CIPHERS: fix the TLS 1.3 cipher names
-
- ... picked straight from the OpenSSL man page:
- https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_ciphersuites.html
-
- Reported-by: Ricky-Tigg on github
- Bug: #3178
-
-Marcel Raad (27 Oct 2018)
-- travis: install gnutls-bin package
-
- This is required for gnutls-serv, which enables a few more tests.
-
- Closes https://github.com/curl/curl/pull/2958
-
-Daniel Gustafsson (26 Oct 2018)
-- ssh: free the session on init failures
-
- Ensure to clear the session object in case the libssh2 initialization
- fails.
-
- It could be argued that the libssh2 error function should be called to
- get a proper error message in this case. But since the only error path
- in libssh2_knownhost_init() is memory a allocation failure it's safest
- to avoid since the libssh2 error handling allocates memory.
-
- Closes #3179
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Daniel Stenberg (26 Oct 2018)
-- docs/RELEASE-PROCEDURE: remove old entries, modify the Dec 2018 date
-
- ... I'm moving it up one week due to travels. The rest stays.
-
-- [Daniel Gustafsson brought this change]
-
- openssl: make 'done' a proper boolean
-
- Closes #3176
-
-- gtls: Values stored to but never read
-
- Detected by clang-tidy
-
- Closes #3176
-
-- [Alexey Eremikhin brought this change]
-
- curl.1: --ipv6 mutexes ipv4 (fixed typo)
-
- Fixes #3171
- Closes #3172
-
-- tool_main: make TerminalSettings static
-
- Reported-by: Gisle Vanem
- Bug: https://github.com/curl/curl/commit/becfe1233ff2b6b0c3e1b6a10048b55b68c2539f#commitcomment-31008819
- Closes #3161
-
-- curl-config.in: remove dependency on bc
-
- Reported-by: Dima Pasechnik
- Fixes #3143
- Closes #3174
-
-- [Gisle Vanem brought this change]
-
- rtmp: fix for compiling with lwIP
-
- Compiling on _WIN32 and with USE_LWIPSOCK, causes this error:
- curl_rtmp.c(223,3): error: use of undeclared identifier 'setsockopt'
- setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO,
- ^
- curl_rtmp.c(41,32): note: expanded from macro 'setsockopt'
- #define setsockopt(a,b,c,d,e) (setsockopt)(a,b,c,(const char *)d,(int)e)
- ^
- Closes #3155
-
-- configure: remove CURL_CONFIGURE_CURL_SOCKLEN_T
-
- Follow-up to #3166 which did the cmake part of this. This type/define is
- not used.
-
- Closes #3168
-
-- [Ruslan Baratov brought this change]
-
- cmake: remove unused variables
-
- Remove variables:
- * HAVE_SOCKLEN_T
- * CURL_SIZEOF_CURL_SOCKLEN_T
- * CURL_TYPEOF_CURL_SOCKLEN_T
-
- Closes #3166
-
-Michael Kaufmann (25 Oct 2018)
-- urldata: Fix comment in header
-
- The "connecting" function is used by multiple protocols, not only FTP
-
-- netrc: free temporary strings if memory allocation fails
-
- - Change the inout parameters after all needed memory has been
- allocated. Do not change them if something goes wrong.
- - Free the allocated temporary strings if strdup() fails.
-
- Closes #3122
-
-Daniel Stenberg (24 Oct 2018)
-- [Ruslan Baratov brought this change]
-
- config: Remove unused SIZEOF_VOIDP
-
- Closes #3162
-
-- RELEASE-NOTES: synced
-
-GitHub (23 Oct 2018)
-- [Gisle Vanem brought this change]
-
- Fix for compiling with lwIP (3)
-
- lwIP on Windows does not have a WSAIoctl() function.
- But it do have a SO_SNDBUF option to lwip_setsockopt(). But it currently does nothing.
-
-Daniel Stenberg (23 Oct 2018)
-- Curl_follow: return better errors on URL problems
-
- ... by making the converter function global and accessible.
-
- Closes #3153
-
-- Curl_follow: remove remaining free(newurl)
-
- Follow-up to 05564e750e8f0c. This function no longer frees the passed-in
- URL.
-
- Reported-by: Michael Kaufmann
- Bug: https://github.com/curl/curl/commit/05564e750e8f0c79016c680f301ce251e6e86155#commitcomm
- ent-30985666
-
-Daniel Gustafsson (23 Oct 2018)
-- headers: end all headers with guard comment
-
- Most headerfiles end with a /* <headerguard> */ comment, but it was
- missing from some. The comment isn't the most important part of our
- code documentation but consistency has an intrinsic value in itself.
- This adds header guard comments to the files that were lacking it.
-
- Closes #3158
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Jay Satiro (23 Oct 2018)
-- CIPHERS.md: Mention the options used to set TLS 1.3 ciphers
-
- Closes https://github.com/curl/curl/pull/3159
-
-Daniel Stenberg (20 Oct 2018)
-- docs/BUG-BOUNTY: the sponsors actually decide the amount
-
- Retract the previous approach as the sponsors will be the ones to set the
- final amounts.
-
- Closes #3152
- [ci skip]
-
-- multi: avoid double-free
-
- Curl_follow() no longer frees the string. Make sure it happens in the
- caller function, like we normally handle allocations.
-
- This bug was introduced with the use of the URL API internally, it has
- never been in a release version
-
- Reported-by: Dario Weißer
- Closes #3149
-
-- multi: make the closure handle "inherit" CURLOPT_NOSIGNAL
-
- Otherwise, closing that handle can still cause surprises!
-
- Reported-by: Martin Ankerl
- Fixes #3138
- Closes #3147
-
-Marcel Raad (19 Oct 2018)
-- VS projects: add USE_IPV6
-
- The Visual Studio builds didn't use IPv6. Add it to all projects since
- Visual Studio 2008, which is verified to build via AppVeyor.
-
- Closes https://github.com/curl/curl/pull/3137
-
-- config_win32: enable LDAPS
-
- As done in the autotools and CMake builds by default.
-
- Closes https://github.com/curl/curl/pull/3137
-
-Daniel Stenberg (18 Oct 2018)
-- travis: add build for "configure --disable-verbose"
-
- Closes #3144
-
-Kamil Dudka (17 Oct 2018)
-- tool_cb_hdr: handle failure of rename()
-
- Detected by Coverity.
-
- Closes #3140
- Reviewed-by: Jay Satiro
-
-Daniel Stenberg (17 Oct 2018)
-- RELEASE-NOTES: synced
-
-- docs/SECURITY-PROCESS: the hackerone IBB program drops curl
-
- ... now there's only BountyGraph.
-
-Jay Satiro (16 Oct 2018)
-- [Matthew Whitehead brought this change]
-
- x509asn1: Fix SAN IP address verification
-
- For IP addresses in the subject alternative name field, the length
- of the IP address (and hence the number of bytes to perform a
- memcmp on) is incorrectly calculated to be zero. The code previously
- subtracted q from name.end. where in a successful case q = name.end
- and therefore addrlen equalled 0. The change modifies the code to
- subtract name.beg from name.end to calculate the length correctly.
-
- The issue only affects libcurl with GSKit SSL, not other SSL backends.
- The issue is not a security issue as IP verification would always fail.
-
- Fixes #3102
- Closes #3141
-
-Daniel Gustafsson (15 Oct 2018)
-- INSTALL: mention mesalink in TLS section
-
- Commit 57348eb97d1b8fc3742e02c6587d2d02ff592da5 added support for the
- MesaLink vtls backend, but missed updating the TLS section containing
- supported backends in the docs.
-
- Closes #3134
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Marcel Raad (14 Oct 2018)
-- nonblock: fix unused parameter warning
-
- If USE_BLOCKING_SOCKETS is defined, curlx_nonblock's arguments are not
- used.
-
-Michael Kaufmann (13 Oct 2018)
-- Curl_follow: Always free the passed new URL
-
- Closes #3124
-
-Viktor Szakats (12 Oct 2018)
-- replace rawgit links [ci skip]
-
- Ref: https://rawgit.com/ "RawGit has reached the end of its useful life"
- Ref: https://news.ycombinator.com/item?id=18202481
- Closes https://github.com/curl/curl/pull/3131
-
-Daniel Stenberg (12 Oct 2018)
-- docs/BUG-BOUNTY.md: for vulns published since Aug 1st 2018
-
- [ci skip]
-
-- travis: make distcheck scan for BOM markers
-
- and remove BOM from projects/wolfssl_override.props
-
- Closes #3126
-
-Marcel Raad (11 Oct 2018)
-- CMake: remove BOM
-
- Accidentally aded in commit 1bb86057ff07083deeb0b00f8ad35879ec4d03ea.
-
- Reported-by: Viktor Szakats
- Ref: https://github.com/curl/curl/pull/3120#issuecomment-428673136
-
-Daniel Gustafsson (10 Oct 2018)
-- transfer: fix typo in comment
-
-Michael Kaufmann (10 Oct 2018)
-- docs: add "see also" links for SSL options
-
- - link TLS 1.2 and TLS 1.3 options
- - link proxy and non-proxy options
-
- Closes #3121
-
-Marcel Raad (10 Oct 2018)
-- AppVeyor: remove BDIR variable that sneaked in again
-
- Removed in ae762e1abebe3a5fe75658583c85059a0957ef6e, accidentally added
- again in 9f3be5672dc4dda30ab43e0152e13d714a84d762.
-
-- CMake: disable -Wpedantic-ms-format
-
- As done in the autotools build. This is required for MinGW, which
- supports only %I64 for printing 64-bit values, but warns about it.
-
- Closes https://github.com/curl/curl/pull/3120
-
-Viktor Szakats (9 Oct 2018)
-- ldap: show precise LDAP call in error message on Windows
-
- Also add a unique but common text ('bind via') to make it
- easy to grep this specific failure regardless of platform.
-
- Ref: https://github.com/curl/curl/pull/878/files#diff-7a636f08047c4edb53a240f540b4ecf6R468
- Closes https://github.com/curl/curl/pull/3118
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
-
-Daniel Stenberg (9 Oct 2018)
-- docs/DEPRECATE: minor reformat to render nicer on web
-
-Daniel Gustafsson (9 Oct 2018)
-- CURLOPT_SSL_VERIFYSTATUS: Fix typo
-
- Changes s/OSCP/OCSP/ and bumps the copyright year due to the change.
-
-Marcel Raad (9 Oct 2018)
-- curl_setup: define NOGDI on Windows
-
- This avoids an ERROR macro clash between <wingdi.h> and <arpa/tftp.h>
- on MinGW.
-
- Closes https://github.com/curl/curl/pull/3113
-
-- Windows: fixes for MinGW targeting Windows Vista
-
- Classic MinGW has neither InitializeCriticalSectionEx nor
- GetTickCount64, independent of the target Windows version.
-
- Closes https://github.com/curl/curl/pull/3113
-
-Daniel Stenberg (8 Oct 2018)
-- TODO: fixed 'API for URL parsing/splitting'
-
-Daniel Gustafsson (8 Oct 2018)
-- KNOWN_BUGS: Fix various typos
-
- Closes #3112
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Viktor Szakats (8 Oct 2018)
-- spelling fixes [ci skip]
-
- as detected by codespell 1.14.0
-
- Closes https://github.com/curl/curl/pull/3114
- Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
-
-Daniel Stenberg (8 Oct 2018)
-- RELEASE-NOTES: synced
-
-- curl_ntlm_wb: check aprintf() return codes
-
- ... when they return NULL we're out of memory and MUST return failure.
-
- closes #3111
-
-- docs/BUG-BOUNTY: proposed additional docs
-
- Bug bounty explainer. See https://bountygraph.com/programs/curl
-
- Closes #3067
-
-- [Rick Deist brought this change]
-
- hostip: fix check on Curl_shuffle_addr return value
-
- Closes #3110
-
-- FILE: fix CURLOPT_NOBODY and CURLOPT_HEADER output
-
- Now FILE transfers send headers to the header callback like HTTP and
- other protocols. Also made curl_easy_getinfo(...CURLINFO_PROTOCOL...)
- work for FILE in the callbacks.
-
- Makes "curl -i file://.." and "curl -I file://.." work like before
- again. Applied the bold header logic to them too.
-
- Regression from c1c2762 (7.61.0)
-
- Reported-by: Shaun Jackman
- Fixes #3083
- Closes #3101
-
-Daniel Gustafsson (7 Oct 2018)
-- gskit: make sure to terminate version string
-
- In case a very small buffer was passed to the version function, it could
- result in the buffer not being NULL-terminated since strncpy() doesn't
- guarantee a terminator on an overflowed buffer. Rather than adding code
- to terminate (and handle zero-sized buffers), move to using snprintf()
- instead like all the other vtls backends.
-
- Closes #3105
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Viktor Szakats <commit@vszakats.net>
-
-- TODO: add LD_PRELOAD support on macOS
-
- Add DYLD_INSERT_LIBRARIES support to the TODO list. Reported in #2394.
-
-- runtests: skip ld_preload tests on macOS
-
- The LD_PRELOAD functionality doesn't exist on macOS, so skip any tests
- requiring it.
-
- Fixes #2394
- Closes #3106
- Reported-by: Github user @jakirkham
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Marcel Raad (7 Oct 2018)
-- AppVeyor: use Debug builds to run tests
-
- This enables more tests.
-
- Closes https://github.com/curl/curl/pull/3104
-
-- AppVeyor: add HTTP_ONLY build
-
- Closes https://github.com/curl/curl/pull/3104
-
-- AppVeyor: add WinSSL builds
-
- Use the oldest and latest Windows SDKs for them.
- Also, remove all but one OpenSSL build.
-
- Closes https://github.com/curl/curl/pull/3104
-
-- AppVeyor: add remaining Visual Studio versions
-
- This adds Visual Studio 9 and 10 builds.
- There's no 64-bit VC9 compiler on AppVeyor, so use it as the Win32
- build. Also, VC9 cannot be used for running the test suite.
-
- Closes https://github.com/curl/curl/pull/3104
-
-- AppVeyor: break long line
-
- Closes https://github.com/curl/curl/pull/3104
-
-- AppVeyor: remove unused BDIR variable
-
- Closes https://github.com/curl/curl/pull/3104
-
-Daniel Stenberg (6 Oct 2018)
-- test2100: test DoH using IPv4-only
-
- To make it only send one DoH request and avoid the race condition that
- could lead to the requests getting sent in reversed order and thus
- making it hard to compare in the test case.
-
- Fixes #3107
- Closes #3108
-
-- tests/FILEFORMAT: mention how to use <fileN> and <stripfileN> too
-
- [ci skip]
-
-- RELEASE-NOTES: synced
-
-- [Dmitry Kostjuchenko brought this change]
-
- timeval: fix use of weak symbol clock_gettime() on Apple platforms
-
- Closes #3048
-
-- doh: keep the IPv4 address in (original) network byte order
-
- Ideally this will fix the reversed order shown in SPARC tests:
-
- resp 8: Expected 127.0.0.1 got 1.0.0.127
-
- Closes #3091
-
-Jay Satiro (5 Oct 2018)
-- INTERNALS.md: wrap lines longer than 79
-
-Daniel Gustafsson (5 Oct 2018)
-- INTERNALS: escape reference to parameter
-
- The parameter reference <string> was causing rendering issues in the
- generated HTML page, as <string> isn't a valid HTML tag. Fix by back-
- tick escaping it.
-
- Closes #3099
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-- checksrc: handle zero scoped ignore commands
-
- If a !checksrc! disable command specified to ignore zero errors, it was
- still added to the ignore block even though nothing was ignored. While
- there were no blocks ignored that shouldn't be ignored, the processing
- ended with with a warning:
-
- <filename>:<line>:<col>: warning: Unused ignore: LONGLINE (UNUSEDIGNORE)
- /* !checksrc! disable LONGLINE 0 */
- ^
- Fix by instead treating a zero ignore as a a badcommand and throw a
- warning for that one.
-
- Closes #3096
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-- checksrc: enable strict mode and warnings
-
- Enable strict and warnings mode for checksrc to ensure we aren't missing
- anything due to bugs in the checking code. This uncovered a few things
- which are all fixed in this commit:
-
- * several variables were used uninitialized
- * several variables were not defined in the correct scope
- * the whitelist filehandle was read even if the file didn't exist
- * the enable_warn() call when a disable counter had expired was passing
- incorrect variables, but since the checkwarn() call is unlikely to hit
- (the counter is only decremented to zero on actual ignores) it didn't
- manifest a problem.
-
- Closes #3090
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
- Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
-
-Marcel Raad (5 Oct 2018)
-- CMake: suppress MSVC warning C4127 for libtest
-
- It's issued by older Windows SDKs (prior to version 8.0).
-
-Sergei Nikulov (5 Oct 2018)
-- Merge branch 'dmitrykos-fix_missing_CMake_defines'
-
-- [Dmitry Kostjuchenko brought this change]
-
- cmake: test and set missed defines during configuration
-
- Added configuration checks for HAVE_BUILTIN_AVAILABLE and HAVE_CLOCK_GETTIME_MONOTONIC.
-
- Closes #3097
-
-Marcel Raad (5 Oct 2018)
-- AppVeyor: disable test 500
-
- It almost always results in
- "starttransfer vs total: 0.000001 0.000000".
- I cannot reproduce this locally, so disable it for now.
-
- Closes https://github.com/curl/curl/pull/3100
-
-- AppVeyor: set custom install prefix
-
- CMake's default has spaces and in 32-bit mode parentheses, which result
- in syntax errors in curl-config.
-
- Closes https://github.com/curl/curl/pull/3100
-
-- AppVeyor: Remove non-SSL non-test builds
-
- They don't add much value.
-
- Closes https://github.com/curl/curl/pull/3100
-
-- AppVeyor: run test suite
-
- Use the preinstalled MSYS2 bash for that.
- Disable test 1139 as the CMake build doesn't generate curl.1.
-
- Ref: https://github.com/curl/curl/issues/3070#issuecomment-425922224
- Closes https://github.com/curl/curl/pull/3100
-
-- AppVeyor: use in-tree build
-
- Required to run the tests.
-
- Closes https://github.com/curl/curl/pull/3100
-
-Daniel Stenberg (4 Oct 2018)
-- doh: make sure TTL isn't re-inited by second (discarded?) response
-
- Closes #3092
-
-- test320: strip out more HTML when comparing
-
- To make the test case work with different gnutls-serv versions better.
-
- Reported-by: Kamil Dudka
- Fixes #3093
- Closes #3094
-
-Marcel Raad (4 Oct 2018)
-- runtests: use Windows paths for Windows curl
-
- curl generated by CMake's Visual Studio generator has "Windows" in the
- version number.
-
-Daniel Stenberg (4 Oct 2018)
-- [Colin Hogben brought this change]
-
- tests/negtelnetserver.py: fix Python2-ism in neg TELNET server
-
- Fix problems caused by differences in treatment of bytes objects between
- python2 and python3.
-
- Fixes #2929
- Closes #3080
-
-Daniel Gustafsson (3 Oct 2018)
-- memory: ensure to check allocation results
-
- The result of a memory allocation should always be checked, as we may
- run under memory pressure where even a small allocation can fail. This
- adds checking and error handling to a few cases where the allocation
- wasn't checked for success. In the ftp case, the freeing of the path
- variable is moved ahead of the allocation since there is little point
- in keeping it around across the strdup, and the separation makes for
- more readable code. In nwlib, the lock is aslo freed in the error path.
-
- Also bumps the copyright years on affected files.
-
- Closes #3084
- Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-- comment: Fix multiple typos in function parameters
-
- Ensure that the parameters in the comment match the actual names in the
- prototype.
-
- Closes #3079
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-- CURLOPT_SSLVERSION.3: fix typos and consistent spelling
-
- Use TLS vX.Y throughout the document, instead of TLS X.Y, as that was
- already done in all but a few cases. Also fix a few typos.
-
- Closes #3076
- Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-- SECURITY-PROCESS: make links into hyperlinks
-
- Use proper Markdown hyperlink format for the Bountygraph links in order
- for the generated website page to be more user friendly. Also link to
- the sponsors to give them a little extra credit.
-
- Closes #3082
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Jay Satiro (3 Oct 2018)
-- CURLOPT_HEADER.3: fix typo
-
-- nss: fix nssckbi module loading on Windows
-
- - Use .DLL extension instead of .so to load modules on Windows.
-
- Bug: https://curl.haxx.se/mail/lib-2018-09/0077.html
- Reported-by: Maxime Legros
-
- Ref: https://github.com/curl/curl/pull/3016/#issuecomment-423069442
-
- Closes https://github.com/curl/curl/pull/3086
-
-- data-binary.d: clarify default content-type is x-www-form-urlencoded
-
- - Advise user that --data-binary sends a default content type of
- x-www-form-urlencoded, and to have the data treated as arbitrary
- binary data by the server set the content-type header to octet-stream.
-
- Ref: https://github.com/curl/curl/pull/2852#issuecomment-426465094
-
- Closes https://github.com/curl/curl/pull/3085
-
-Marcel Raad (2 Oct 2018)
-- test1299: use single quotes around asterisk
-
- Ref: https://github.com/curl/curl/issues/1751#issuecomment-321522580
-
-Daniel Stenberg (2 Oct 2018)
-- docs/CIPHERS: mention the colon separation for OpenSSL
-
- Bug: #3077
-
-- runtests: ignore disabled even when ranges are given
-
- runtests.pl support running a range of tests, like "44 to 127". Starting
- now, the code makes sure that even such given ranges will ignore tests
- that are marked as disabled.
-
- Disabled tests can still be run by explictly specifying that test
- number.
-
- Closes #3075
-
-- urlapi: starting with a drive letter on win32 is not an abs url
-
- ... and libcurl doesn't support any single-letter URL schemes (if there
- even exist any) so it should be fairly risk-free.
-
- Reported-by: Marcel Raad
-
- Fixes #3070
- Closes #3071
-
-Marcel Raad (2 Oct 2018)
-- doh: fix curl_easy_setopt argument type
-
- CURLOPT_POSTFIELDSIZE is long. Fixes a compiler warning on 64-bit
- MinGW.
-
-Daniel Stenberg (2 Oct 2018)
-- RELEASE-NOTES: synced
-
-Jay Satiro (1 Oct 2018)
-- [Ruslan Baratov brought this change]
-
- CMake: Improve config installation
-
- Use 'GNUInstallDirs' standard module to set destinations of installed
- files.
-
- Use uppercase "CURL" names instead of lowercase "curl" to match standard
- 'FindCURL.cmake' CMake module:
- * https://cmake.org/cmake/help/latest/module/FindCURL.html
-
- Meaning:
- * Install 'CURLConfig.cmake' instead of 'curl-config.cmake'
- * User should call 'find_package(CURL)' instead of 'find_package(curl)'
-
- Use 'configure_package_config_file' function to generate
- 'CURLConfig.cmake' file. This will make 'curl-config.cmake.in' template
- file smaller and handle components better. E.g. current configuration
- report no error if user specified unknown components (note: new
- configuration expects no components, report error if user will try to
- specify any).
-
- Closes https://github.com/curl/curl/pull/2849
-
-Daniel Stenberg (1 Oct 2018)
-- test1650: make it depend on http/2
-
- Follow-up to 570008c99da0ccbb as it gets link errors.
-
- Reported-by: Michael Kaufmann
- Closes #3068
-
-- [Nate Prewitt brought this change]
-
- MANUAL: minor grammar fix
-
- Noticed a typo reading through the docs.
-
- Closes #3069
-
-- doh: only build if h2 enabled
-
- The DoH spec says "HTTP/2 [RFC7540] is the minimum RECOMMENDED version
- of HTTP for use with DoH".
-
- Reported-by: Marcel Raad
- Closes #3066
-
-- test2100: require http2 to run
-
- Reported-by: Marcel Raad
- Fixes #3064
- Closes #3065
-
-- multi: fix memory leak in content encoding related error path
-
- ... a missing multi_done() call.
-
- Credit to OSS-Fuzz
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10728
- Closes #3063
-
-- travis: bump the Secure Transport build to use xcode 10
-
- Due to an issue with travis
- (https://github.com/travis-ci/travis-ci/issues/9956) we've been using
- Xcode 9.2 for darwinssl builds for a while. Now xcode 10 is offered as
- an alternative and as it builds curl+darwinssl fine that seems like a
- better choice.
-
- Closes #3062
-
-- [Rich Turner brought this change]
-
- curl: enabled Windows VT Support and UTF-8 output
-
- Enabled Console VT support (if running OS supports VT) in tool_main.c.
-
- Fixes #3008
- Closes #3011
-
-- multi: fix location URL memleak in error path
-
- Follow-up to #3044 - fix a leak OSS-Fuzz detected
- Closes #3057
-
-Sergei Nikulov (28 Sep 2018)
-- cmake: fixed path used in generation of docs/tests during curl build through add_subdicectory(...)
-
-- [Brad King brought this change]
-
- cmake: Backport to work with CMake 3.0 again
-
- Changes in commit 7867aaa9a0 (cmake: link curl to the OpenSSL targets
- instead of lib absolute paths, 2018-07-17) and commit f826b4ce98 (cmake:
- bumped minimum version to 3.4, 2018-07-19) required CMake 3.4 to fix
- issue #2746. This broke support for users on older versions of CMake
- even if they just want to build curl and do not care whether transitive
- dependencies work.
-
- Backport the logic to work with CMake 3.0 again by implementing the
- fix only when the version of CMake is at least 3.4.
-
-Marcel Raad (27 Sep 2018)
-- curl_threads: fix classic MinGW compile break
-
- Classic MinGW still has _beginthreadex's return type as unsigned long
- instead of uintptr_t [0]. uintptr_t is not even defined because of [1].
-
- [0] https://sourceforge.net/p/mingw/mingw-org-wsl/ci/wsl-5.1-release/tree/mingwrt/include/process.h#l167
- [1] https://sourceforge.net/p/mingw/mingw-org-wsl/ci/wsl-5.1-release/tree/mingwrt/include/process.h#l90
-
- Bug: https://github.com/curl/curl/issues/2924#issuecomment-424334807
- Closes https://github.com/curl/curl/pull/3051
-
-Daniel Stenberg (26 Sep 2018)
-- configure: s/AC_RUN_IFELSE/CURL_RUN_IFELSE
-
- fix a few leftovers
-
- Fixes #3006
- Closes #3049
-
-- [Doron Behar brought this change]
-
- example/htmltidy: fix include paths of tidy libraries
-
- Closes #3050
-
-- RELEASE-NOTES: synced
-
-- Curl_http2_done: fix memleak in error path
-
- Free 'header_recvbuf' unconditionally even if 'h2' isn't (yet) set, for
- early failures.
-
- Detected by OSS-Fuzz
-
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10669
- Closes #3046
-
-- http: fix memleak in rewind error path
-
- If the rewind would fail, a strdup() would not get freed.
-
- Detected by OSS-Fuzz
-
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10665
- Closes #3044
-
-Viktor Szakats (24 Sep 2018)
-- test320: fix regression in [ci skip]
-
- The value in question is coming directly from `gnutls-serv`, so it cannot
- be modified freely.
-
- Reported-by: Marcel Raad
- Ref: https://github.com/curl/curl/commit/6ae6b2a533e8630afbb21f570305bd4ceece6348#commitcomment-30621004
-
-Daniel Stenberg (24 Sep 2018)
-- Curl_retry_request: fix memory leak
-
- Detected by OSS-Fuzz
-
- Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10648
- Closes #3042
-
-- openssl: load built-in engines too
-
- Regression since 38203f1
-
- Reported-by: Jean Fabrice
- Fixes #3023
- Closes #3040
-
-- [Christian Heimes brought this change]
-
- OpenSSL: enable TLS 1.3 post-handshake auth
-
- OpenSSL 1.1.1 requires clients to opt-in for post-handshake
- authentication.
-
- Fixes: https://github.com/curl/curl/issues/3026
- Signed-off-by: Christian Heimes <christian@python.org>
-
- Closes https://github.com/curl/curl/pull/3027
-
-- [Even Rouault brought this change]
-
- Curl_dedotdotify(): always nul terminate returned string.
-
- This fixes potential out-of-buffer access on "file:./" URL
-
- $ valgrind curl "file:./"
- ==24516== Memcheck, a memory error detector
- ==24516== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
- ==24516== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
- ==24516== Command: /home/even/install-curl-git/bin/curl file:./
- ==24516==
- ==24516== Conditional jump or move depends on uninitialised value(s)
- ==24516== at 0x4C31F9C: strcmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
- ==24516== by 0x4EBB315: seturl (urlapi.c:801)
- ==24516== by 0x4EBB568: parseurl (urlapi.c:861)
- ==24516== by 0x4EBC509: curl_url_set (urlapi.c:1199)
- ==24516== by 0x4E644C6: parseurlandfillconn (url.c:2044)
- ==24516== by 0x4E67AEF: create_conn (url.c:3613)
- ==24516== by 0x4E68A4F: Curl_connect (url.c:4119)
- ==24516== by 0x4E7F0A4: multi_runsingle (multi.c:1440)
- ==24516== by 0x4E808E5: curl_multi_perform (multi.c:2173)
- ==24516== by 0x4E7558C: easy_transfer (easy.c:686)
- ==24516== by 0x4E75801: easy_perform (easy.c:779)
- ==24516== by 0x4E75868: curl_easy_perform (easy.c:798)
-
- Was originally spotted by
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=10637
- Credit to OSS-Fuzz
-
- Closes #3039
-
-Viktor Szakats (23 Sep 2018)
-- update URLs in tests
-
- - and one in docs/MANUAL as well
-
- Closes https://github.com/curl/curl/pull/3038
-
-- whitespace fixes
-
- - replace tabs with spaces where possible
- - remove line ending spaces
- - remove double/triple newlines at EOF
- - fix a non-UTF-8 character
- - cleanup a few indentations/line continuations
- in manual examples
-
- Closes https://github.com/curl/curl/pull/3037
-
-Daniel Stenberg (23 Sep 2018)
-- http: add missing return code check
-
- Detected by Coverity. CID 1439610.
-
- Follow-up from 46e164069d1a523
-
- Closes #3034
-
-- ftp: don't access pointer before NULL check
-
- Detected by Coverity. CID 1439611.
-
- Follow-up from 46e164069d1a523
-
-- unit1650: fix out of boundary access
-
- Fixes #2987
- Closes #3035
-
-Viktor Szakats (23 Sep 2018)
-- docs/examples: URL updates
-
- - also update two URLs outside of docs/examples
- - fix spelling of filename persistant.c
- - fix three long lines that started failing checksrc.pl
-
- Closes https://github.com/curl/curl/pull/3036
-
-- examples/Makefile.m32: sync with core [ci skip]
-
- also:
- - fix two warnings in synctime.c (one of them Windows-specific)
- - upgrade URLs in synctime.c and remove a broken one
-
- Closes https://github.com/curl/curl/pull/3033
-
-Daniel Stenberg (22 Sep 2018)
-- examples/parseurl.c: show off the URL API a bit
-
- Closes #3030
-
-- SECURITY-PROCESS: mention the bountygraph program [ci skip]
-
- Closes #3032
-
-- url: use the URL API internally as well
-
- ... to make it a truly unified URL parser.
-
- Closes #3017
-
-Viktor Szakats (22 Sep 2018)
-- URL and mailmap updates, remove an obsolete directory [ci skip]
-
- Closes https://github.com/curl/curl/pull/3031
-
-Daniel Stenberg (22 Sep 2018)
-- RELEASE-NOTES: synced
-
-- configure: force-use -lpthreads on HPUX
-
- When trying to detect pthreads use on HPUX the checks will succeed
- without the correct -l option but then end up failing at run-time.
-
- Reported-by: Eason-Yu on github
- Fixes #2697
- Closes #3025
-
-- [Erik Minekus brought this change]
-
- Curl_saferealloc: Fixed typo in docblock
-
- Closes #3029
-
-- urlapi: fix support for address scope in IPv6 numerical addresses
-
- Closes #3024
-
-- [Loganaden Velvindron brought this change]
-
- GnutTLS: TLS 1.3 support
-
- Closes #2971
-
-- TODO: c-ares and CURLOPT_OPENSOCKETFUNCTION
-
- Removed DoH.
-
- Closes #2734
-
-Jay Satiro (20 Sep 2018)
-- vtls: fix ssl version "or later" behavior change for many backends
-
- - Treat CURL_SSLVERSION_MAX_NONE the same as
- CURL_SSLVERSION_MAX_DEFAULT. Prior to this change NONE would mean use
- the minimum version also as the maximum.
-
- This is a follow-up to 6015cef which changed the behavior of setting
- the SSL version so that the requested version would only be the minimum
- and not the maximum. It appears it was (mostly) implemented in OpenSSL
- but not other backends. In other words CURL_SSLVERSION_TLSv1_0 used to
- mean use just TLS v1.0 and now it means use TLS v1.0 *or later*.
-
- - Fix CURL_SSLVERSION_MAX_DEFAULT for OpenSSL.
-
- Prior to this change CURL_SSLVERSION_MAX_DEFAULT with OpenSSL was
- erroneously treated as always TLS 1.3, and would cause an error if
- OpenSSL was built without TLS 1.3 support.
-
- Co-authored-by: Daniel Gustafsson
-
- Fixes https://github.com/curl/curl/issues/2969
- Closes https://github.com/curl/curl/pull/3012
-
-Daniel Stenberg (20 Sep 2018)
-- certs: generate tests certs with sha256 digest algorithm
-
- As OpenSSL 1.1.1 starts to complain and fail on sha1 CAs:
-
- "SSL certificate problem: CA signature digest algorithm too weak"
-
- Closes #3014
-
-- urlapi: document the error codes, remove two unused ones
-
- Assisted-by: Daniel Gustafsson
- Closes #3019
-
-- urlapi: add CURLU_GUESS_SCHEME and fix hostname acceptance
-
- In order for this API to fully work for libcurl itself, it now offers a
- CURLU_GUESS_SCHEME flag that makes it "guess" scheme based on the host
- name prefix just like libcurl always did. If there's no known prefix, it
- will guess "http://".
-
- Separately, it relaxes the check of the host name so that IDN host names
- can be passed in as well.
-
- Both these changes are necessary for libcurl itself to use this API.
-
- Assisted-by: Daniel Gustafsson
- Closes #3018
-
-Kamil Dudka (19 Sep 2018)
-- nss: try to connect even if libnssckbi.so fails to load
-
- One can still use CA certificates stored in NSS database.
-
- Reported-by: Maxime Legros
- Bug: https://curl.haxx.se/mail/lib-2018-09/0077.html
-
- Closes #3016
-
-Daniel Gustafsson (19 Sep 2018)
-- urlapi: don't set value which is never read
-
- In the CURLUPART_URL case, there is no codepath which invokes url
- decoding so remove the assignment of the urldecode variable. This
- fixes the deadstore bug-report from clang static analysis.
-
- Closes #3015
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-- todo: Update reference to already done item
-
- TODO item 1.1 was implemented in commit 946ce5b61f, update reference
- to it with instead referencing the implemented option.
-
- Closes #3013
- Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-
-Daniel Stenberg (18 Sep 2018)
-- RELEASE-NOTES: synced
-
-- [slodki brought this change]
-
- cmake: don't require OpenSSL if USE_OPENSSL=OFF
-
- User must have OpenSSL installed even if not used by libcurl at all
- since 7.61.1 release. Broken at
- 7867aaa9a01decf93711428462335be8cef70212
-
- Reviewed-by: Sergei Nikulov
- Closes #3001
-
-- curl_multi_wait: call getsock before figuring out timeout
-
- .... since getsock may update the expiry timer.
-
- Fixes #2996
- Closes #3000
-
-- examples/http2-pushinmemory: receive HTTP/2 pushed files in memory
-
- Closes #3004
diff --git a/CMake/FindGSS.cmake b/CMake/FindGSS.cmake
index 44bcfd06..a2f150cd 100644
--- a/CMake/FindGSS.cmake
+++ b/CMake/FindGSS.cmake
@@ -62,6 +62,7 @@ if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approac
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
OUTPUT_VARIABLE _GSS_CFLAGS
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
)
message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
@@ -84,6 +85,7 @@ if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approac
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
OUTPUT_VARIABLE _GSS_LIB_FLAGS
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
)
message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
@@ -110,6 +112,7 @@ if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approac
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
OUTPUT_VARIABLE _GSS_VERSION
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
)
# older versions may not have the "--version" parameter. In this case we just don't care.
@@ -121,6 +124,7 @@ if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approac
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
OUTPUT_VARIABLE _GSS_VENDOR
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
+ OUTPUT_STRIP_TRAILING_WHITESPACE
)
# older versions may not have the "--vendor" parameter. In this case we just don't care.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 29cb5f59..0772d6e5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -260,7 +260,7 @@ if(ENABLE_THREADED_RESOLVER)
endif()
# Check for all needed libraries
-check_library_exists_concat("dl" dlopen HAVE_LIBDL)
+check_library_exists_concat("${CMAKE_DL_LIBS}" dlopen HAVE_LIBDL)
check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
check_library_exists("c" gethostbyname "" NOT_NEED_LIBNSL)
@@ -860,6 +860,7 @@ check_symbol_exists(strlcat "${CURL_INCLUDES}" HAVE_STRLCAT)
check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID)
check_symbol_exists(getpwuid_r "${CURL_INCLUDES}" HAVE_GETPWUID_R)
check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID)
+check_symbol_exists(usleep "${CURL_INCLUDES}" HAVE_USLEEP)
check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME)
check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
check_symbol_exists(localtime_r "${CURL_INCLUDES}" HAVE_LOCALTIME_R)
diff --git a/Makefile.am b/Makefile.am
index ac5eca3b..3116e105 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -154,9 +154,20 @@ VC_DIST = projects/README \
WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
winbuild/MakefileBuild.vc winbuild/Makefile.vc
+PLAN9_DIST = plan9/include/mkfile \
+ plan9/include/mkfile \
+ plan9/mkfile.proto \
+ plan9/mkfile \
+ plan9/BUILD.PLAN9.txt \
+ plan9/lib/mkfile.inc \
+ plan9/lib/mkfile \
+ plan9/src/mkfile.inc \
+ plan9/src/mkfile
+
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
- scripts/updatemanpages.pl $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) \
+ scripts/updatemanpages.pl $(CMAKE_DIST) \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \
lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
diff --git a/Makefile.in b/Makefile.in
index 89774a8e..c71350e1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -436,8 +436,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -624,9 +628,20 @@ VC_DIST = projects/README \
WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat \
winbuild/MakefileBuild.vc winbuild/Makefile.vc
+PLAN9_DIST = plan9/include/mkfile \
+ plan9/include/mkfile \
+ plan9/mkfile.proto \
+ plan9/mkfile \
+ plan9/BUILD.PLAN9.txt \
+ plan9/lib/mkfile.inc \
+ plan9/lib/mkfile \
+ plan9/src/mkfile.inc \
+ plan9/src/mkfile
+
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
- scripts/updatemanpages.pl $(CMAKE_DIST) $(VC_DIST) $(WINBUILD_DIST) \
+ scripts/updatemanpages.pl $(CMAKE_DIST) \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \
lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
@@ -656,6 +671,9 @@ LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h \
vtls/mbedtls.h vtls/mesalink.h
+LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c
+LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h
+LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c \
ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c \
@@ -665,7 +683,7 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c \
strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c \
inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \
- ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \
+ curl_addrinfo.c socks_gssapi.c socks_sspi.c \
curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \
pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \
openldap.c curl_gethostname.c gopher.c idn_win32.c \
@@ -695,11 +713,15 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \
curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h \
- curl_get_line.h altsvc.h
+ curl_get_line.h altsvc.h quic.h
LIB_RCFILES = libcurl.rc
-CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES)
-HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES)
+CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
+ $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
+
+HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
+ $(LIB_VQUIC_HFILES)
+
# libcurl has sources that provide functions named curlx_* that aren't part of
# the official API, but we re-use the code here to avoid duplication.
@@ -748,6 +770,7 @@ CURL_CFILES = \
tool_panykey.c \
tool_paramhlp.c \
tool_parsecfg.c \
+ tool_progress.c \
tool_strdup.c \
tool_setopt.c \
tool_sleep.c \
@@ -789,6 +812,7 @@ CURL_HFILES = \
tool_panykey.h \
tool_paramhlp.h \
tool_parsecfg.h \
+ tool_progress.h \
tool_sdecls.h \
tool_setopt.h \
tool_setup.h \
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index bedfa2c5..cd13827f 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,14 +1,103 @@
-curl and libcurl 7.65.3
+curl and libcurl 7.66.0
- Public curl releases: 184
- Command line options: 221
- curl_easy_setopt() options: 268
- Public functions in libcurl: 80
+ Public curl releases: 185
+ Command line options: 225
+ curl_easy_setopt() options: 269
+ Public functions in libcurl: 81
Contributors: 1991
+This release includes the following changes:
+
+ o CURLINFO_RETRY_AFTER: parse the Retry-After header value [35]
+ o HTTP3: initial (experimental still not working) support [5]
+ o curl: --sasl-authzid added to support CURLOPT_SASL_AUTHZID from the tool [27]
+ o curl: support parallel transfers with -Z [4]
+ o curl_multi_poll: a sister to curl_multi_wait() that waits more [28]
+ o sasl: Implement SASL authorisation identity via CURLOPT_SASL_AUTHZID [27]
+
This release includes the following bugfixes:
- o progress: make the progress meter appear again [1]
+ o CVE-2019-5481: FTP-KRB double-free [64]
+ o CVE-2019-5482: TFTP small blocksize heap buffer overflow [65]
+ o CI: remove duplicate configure flag for LGTM.com
+ o CMake: remove needless newlines at end of gss variables
+ o CMake: use platform dependent name for dlopen() library [62]
+ o CURLINFO docs: mention that in redirects times are added [55]
+ o CURLOPT_ALTSVC.3: use a "" file name to not load from a file
+ o CURLOPT_ALTSVC_CTRL.3: remove CURLALTSVC_ALTUSED
+ o CURLOPT_HEADERFUNCTION.3: clarify [54]
+ o CURLOPT_HTTP_VERSION: seting this to 3 forces HTTP/3 use directly [33]
+ o CURLOPT_READFUNCTION.3: provide inline example
+ o CURLOPT_SSL_VERIFYHOST: treat the value 1 as 2 [51]
+ o Curl_addr2string: take an addrlen argument too [61]
+ o Curl_fillreadbuffer: avoid double-free trailer buf on error [66]
+ o HTTP: use chunked Transfer-Encoding for HTTP_POST if size unknown [10]
+ o alt-svc: add protocol version selection masking [31]
+ o alt-svc: fix removal of expired cache entry [30]
+ o alt-svc: make it use h3-22 with ngtcp2 as well
+ o alt-svc: more liberal ALPN name parsing [17]
+ o alt-svc: send Alt-Used: in redirected requests [32]
+ o alt-svc: with quiche, use the quiche h3 alpn string [16]
+ o appveyor: pass on -k to make
+ o asyn-thread: create a socketpair to wait on [14]
+ o build-openssl: fix build with Visual Studio 2019 [45]
+ o cleanup: move functions out of url.c and make them static [58]
+ o cleanup: remove the 'numsocks' argument used in many places [25]
+ o configure: avoid undefined check_for_ca_bundle [37]
+ o curl.h: add CURL_HTTP_VERSION_3 to the version enum
+ o curl.h: fix outdated comment [23]
+ o curl: cap the maximum allowed values for retry time arguments [13]
+ o curl: handle a libcurl build without netrc support [63]
+ o curl: make use of CURLINFO_RETRY_AFTER when retrying [35]
+ o curl: remove outdated comment [24]
+ o curl: use .curlrc (with a dot) on Windows [52]
+ o curl: use CURLINFO_PROTOCOL to check for HTTP(s)
+ o curl_global_init_mem.3: mention it was added in 7.12.0
+ o curl_version: bump string buffer size to 250
+ o curl_version_info.3: mentioned ALTSVC and HTTP3
+ o curl_version_info: offer quic (and h3) library info [38]
+ o curl_version_info: provide nghttp2 details [2]
+ o defines: avoid underscore-prefixed defines [47]
+ o docs/ALTSVC: remove what works and the experimental explanation [34]
+ o docs/EXPERIMENTAL: explain what it means and what's experimental now
+ o docs/MANUAL.md: converted to markdown from plain text [3]
+ o docs/examples/curlx: fix errors [48]
+ o docs: s/curl_debug/curl_dbg_debug in comments and docs [36]
+ o easy: resize receive buffer on easy handle reset [9]
+ o examples: Avoid reserved names in hiperfifo examples [8]
+ o examples: add http3.c, altsvc.c and http3-present.c [40]
+ o getenv: support up to 4K environment variable contents on windows [21]
+ o http09: disable HTTP/0.9 by default in both tool and library [29]
+ o http2: when marked for closure and wanted to close == OK [56]
+ o http2_recv: trigger another read when the last data is returned [11]
+ o http: fix use of credentials from URL when using HTTP proxy [44]
+ o http_negotiate: improve handling of gss_init_sec_context() failures [18]
+ o md4: Use our own MD4 when no crypto libraries are available [15]
+ o multi: call detach_connection before Curl_disconnect [6]
+ o netrc: make the code try ".netrc" on Windows [52]
+ o nss: use TLSv1.3 as default if supported [39]
+ o openssl: build warning free with boringssl [50]
+ o openssl: use SSL_CTX_set_<min|max>_proto_version() when available [68]
+ o plan9: add support for running on Plan 9 [22]
+ o progress: reset download/uploaded counter between transfers [12]
+ o readwrite_data: repair setting the TIMER_STARTTRANSFER stamp [26]
+ o scp: fix directory name length used in memcpy [46]
+ o smb: init *msg to NULL in smb_send_and_recv() [60]
+ o smtp: check for and bail out on too short EHLO response [59]
+ o source: remove names from source comments [1]
+ o spnego_sspi: add typecast to fix build warning [49]
+ o src/makefile: fix uncompressed hugehelp.c generation [19]
+ o ssh-libssh: do not specify O_APPEND when not in append mode [7]
+ o ssh: move code into vssh for SSH backends [53]
+ o sspi: fix memory leaks [67]
+ o tests: Replace outdated test case numbering documentation [43]
+ o tftp: return error when packet is too small for options
+ o timediff: make it 64 bit (if possible) even with 32 bit time_t [20]
+ o travis: reduce number of torture tests in 'coverage' [42]
+ o url: make use of new HTTP version if alt-svc has one [16]
+ o urlapi: verify the IPv6 numerical address [69]
+ o urldata: avoid 'generic', use dedicated pointers [57]
+ o vauth: Use CURLE_AUTH_ERROR for auth function errors [41]
This release includes the following known bugs:
@@ -17,11 +106,89 @@ This release includes the following known bugs:
This release would not have looked like this without help, code, reports and
advice from friends like these:
- Chih-Hsuan Yen, Daniel Stenberg,
- (2 contributors)
+ Alessandro Ghedini, Alex Mayorga, Amit Katyal, Balazs Kovacsics,
+ Brad Spencer, Brandon Dong, Carlo Marcelo Arenas Belón, Christopher Head,
+ Clément Notin, codesniffer13 on github, Daniel Gustafsson, Daniel Stenberg,
+ Dominik Hölzl, Eric Wong, Felix Hädicke, Gergely Nagy, Gisle Vanem,
+ Igor Makarov, Ironbars13 on github, Jason Lee, Jeremy Lainé,
+ Jonathan Cardoso Machado, Junho Choi, Kamil Dudka, Kyle Abramowitz,
+ Kyohei Kadota, Lance Ware, Marcel Raad, Max Dymond, Michael Lee,
+ Michal Čaplygin, migueljcrum on github, Mike Crowe, niallor on github,
+ osabc on github, patnyb on github, Patrick Monnerat, Peter Wu, Ray Satiro,
+ Rolf Eike Beer, Steve Holme, Tatsuhiro Tsujikawa, The Infinnovation team,
+ Thomas Vegas, Tom van der Woerdt, Yiming Jing,
+ (46 contributors)
Thanks! (and sorry if I forgot to mention someone)
References to bug reports and discussions on issues:
- [1] = https://curl.haxx.se/bug/?i=4122
+ [1] = https://curl.haxx.se/bug/?i=4129
+ [2] = https://curl.haxx.se/bug/?i=4121
+ [3] = https://curl.haxx.se/bug/?i=4131
+ [4] = https://curl.haxx.se/bug/?i=3804
+ [5] = https://curl.haxx.se/bug/?i=3500
+ [6] = https://curl.haxx.se/bug/?i=4144
+ [7] = https://curl.haxx.se/bug/?i=4147
+ [8] = https://curl.haxx.se/bug/?i=4153
+ [9] = https://curl.haxx.se/bug/?i=4143
+ [10] = https://curl.haxx.se/bug/?i=4138
+ [11] = https://curl.haxx.se/bug/?i=4043
+ [12] = https://curl.haxx.se/bug/?i=4084
+ [13] = https://curl.haxx.se/bug/?i=4166
+ [14] = https://curl.haxx.se/bug/?i=4157
+ [15] = https://curl.haxx.se/bug/?i=3780
+ [16] = https://curl.haxx.se/bug/?i=4183
+ [17] = https://curl.haxx.se/bug/?i=4182
+ [18] = https://curl.haxx.se/bug/?i=3992
+ [19] = https://curl.haxx.se/bug/?i=4176
+ [20] = https://curl.haxx.se/bug/?i=4165
+ [21] = https://curl.haxx.se/bug/?i=4174
+ [22] = https://curl.haxx.se/bug/?i=3701
+ [23] = https://curl.haxx.se/bug/?i=4167
+ [24] = https://curl.haxx.se/bug/?i=4172
+ [25] = https://curl.haxx.se/bug/?i=4169
+ [26] = https://curl.haxx.se/bug/?i=4136
+ [27] = https://curl.haxx.se/bug/?i=3653
+ [28] = https://curl.haxx.se/bug/?i=4163
+ [29] = https://curl.haxx.se/bug/?i=4191
+ [30] = https://curl.haxx.se/bug/?i=4192
+ [31] = https://curl.haxx.se/bug/?i=4201
+ [32] = https://curl.haxx.se/bug/?i=4199
+ [33] = https://curl.haxx.se/bug/?i=4197
+ [34] = https://curl.haxx.se/bug/?i=4198
+ [35] = https://curl.haxx.se/bug/?i=3794
+ [36] = https://curl.haxx.se/bug/?i=3794
+ [37] = https://curl.haxx.se/bug/?i=4213
+ [38] = https://curl.haxx.se/bug/?i=4216
+ [39] = https://curl.haxx.se/bug/?i=4187
+ [40] = https://curl.haxx.se/bug/?i=4221
+ [41] = https://curl.haxx.se/bug/?i=3848
+ [42] = https://curl.haxx.se/bug/?i=4223
+ [43] = https://curl.haxx.se/bug/?i=4227
+ [44] = https://curl.haxx.se/bug/?i=4228
+ [45] = https://curl.haxx.se/bug/?i=4188
+ [46] = https://curl.haxx.se/bug/?i=4258
+ [47] = https://curl.haxx.se/bug/?i=4254
+ [48] = https://curl.haxx.se/bug/?i=4248
+ [49] = https://curl.haxx.se/bug/?i=4245
+ [50] = https://curl.haxx.se/bug/?i=4244
+ [51] = https://curl.haxx.se/bug/?i=4241
+ [52] = https://curl.haxx.se/bug/?i=4230
+ [53] = https://curl.haxx.se/bug/?i=4235
+ [54] = https://curl.haxx.se/bug/?i=4273
+ [55] = https://curl.haxx.se/bug/?i=4250
+ [56] = https://curl.haxx.se/bug/?i=4267
+ [57] = https://curl.haxx.se/bug/?i=4290
+ [58] = https://curl.haxx.se/bug/?i=4289
+ [59] = https://curl.haxx.se/bug/?i=4287
+ [60] = https://curl.haxx.se/bug/?i=4286
+ [61] = https://curl.haxx.se/bug/?i=4283
+ [62] = https://curl.haxx.se/bug/?i=4279
+ [63] = https://curl.haxx.se/bug/?i=4302
+ [64] = https://curl.haxx.se/docs/CVE-2019-5481.html
+ [65] = https://curl.haxx.se/docs/CVE-2019-5482.html
+ [66] = https://curl.haxx.se/bug/?i=4307
+ [67] = https://curl.haxx.se/bug/?i=4299
+ [68] = https://curl.haxx.se/bug/?i=4304
+ [69] = https://curl.haxx.se/bug/?i=4315
diff --git a/configure b/configure
index 28092b47..85e6d94d 100755
--- a/configure
+++ b/configure
@@ -905,6 +905,10 @@ PERL
IPV6_ENABLED
FISH_FUNCTIONS_DIR
ZSH_FUNCTIONS_DIR
+USE_QUICHE
+USE_NGHTTP3
+USE_NGTCP2_CRYPTO_OPENSSL
+USE_NGTCP2
USE_NGHTTP2
IDN_ENABLED
CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE
@@ -1188,6 +1192,9 @@ enable_versioned_symbols
with_winidn
with_libidn2
with_nghttp2
+with_ngtcp2
+with_nghttp3
+with_quiche
with_zsh_functions_dir
with_fish_functions_dir
enable_threaded_resolver
@@ -2067,6 +2074,12 @@ Optional Packages:
--without-libidn2 Disable libidn2 usage
--with-nghttp2=PATH Enable nghttp2 usage
--without-nghttp2 Disable nghttp2 usage
+ --with-ngtcp2=PATH Enable ngtcp2 usage
+ --without-ngtcp2 Disable ngtcp2 usage
+ --with-nghttp3=PATH Enable nghttp3 usage
+ --without-nghttp3 Disable nghttp3 usage
+ --with-quiche=PATH Enable quiche usage
+ --without-quiche Disable quiche usage
--with-zsh-functions-dir=PATH
Install zsh completions to PATH
--without-zsh-functions-dir
@@ -25379,7 +25392,7 @@ _ACEOF
fi
-if test "$check_for_ca_bundle" -gt 0; then
+if test -n "$check_for_ca_bundle"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking default CA cert bundle/path" >&5
@@ -27629,6 +27642,1067 @@ fi
fi
+OPT_TCP2="yes"
+curl_h3_msg="disabled (--with-ngtcp2, --with-quiche)"
+
+if test "x$disable_http" = "xyes"; then
+ # without HTTP, ngtcp2 is no use
+ OPT_TCP2="no"
+fi
+
+
+# Check whether --with-ngtcp2 was given.
+if test "${with_ngtcp2+set}" = set; then :
+ withval=$with_ngtcp2; OPT_TCP2=$withval
+fi
+
+case "$OPT_TCP2" in
+ no)
+ want_tcp2="no"
+ ;;
+ yes)
+ want_tcp2="default"
+ want_tcp2_path=""
+ ;;
+ *)
+ want_tcp2="yes"
+ want_tcp2_path="$withval/lib/pkgconfig"
+ ;;
+esac
+
+curl_tcp2_msg="disabled (--with-ngtcp2)"
+if test X"$want_tcp2" != Xno; then
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+$as_echo "$PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+ ac_pt_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_pt_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libngtcp2 options with pkg-config" >&5
+$as_echo_n "checking for libngtcp2 options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists libngtcp2 >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
+ fi
+ fi
+
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_TCP2=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-l libngtcp2`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -l is $LIB_TCP2" >&5
+$as_echo "$as_me: -l is $LIB_TCP2" >&6;}
+
+ CPP_TCP2=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --cflags-only-I libngtcp2`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -I is $CPP_TCP2" >&5
+$as_echo "$as_me: -I is $CPP_TCP2" >&6;}
+
+ LD_TCP2=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-L libngtcp2`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -L is $LD_TCP2" >&5
+$as_echo "$as_me: -L is $LD_TCP2" >&6;}
+
+ LDFLAGS="$LDFLAGS $LD_TCP2"
+ CPPFLAGS="$CPPFLAGS $CPP_TCP2"
+ LIBS="$LIB_TCP2 $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/-L//'`
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_conn_client_new in -lngtcp2" >&5
+$as_echo_n "checking for ngtcp2_conn_client_new in -lngtcp2... " >&6; }
+if ${ac_cv_lib_ngtcp2_ngtcp2_conn_client_new+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lngtcp2 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngtcp2_conn_client_new ();
+int main (void)
+{
+return ngtcp2_conn_client_new ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_ngtcp2_ngtcp2_conn_client_new=yes
+else
+ ac_cv_lib_ngtcp2_ngtcp2_conn_client_new=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_ngtcp2_conn_client_new" >&5
+$as_echo "$ac_cv_lib_ngtcp2_ngtcp2_conn_client_new" >&6; }
+if test "x$ac_cv_lib_ngtcp2_ngtcp2_conn_client_new" = xyes; then :
+
+ for ac_header in ngtcp2/ngtcp2.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "ngtcp2/ngtcp2.h" "ac_cv_header_ngtcp2_ngtcp2_h" "$ac_includes_default"
+if test "x$ac_cv_header_ngtcp2_ngtcp2_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_NGTCP2_NGTCP2_H 1
+_ACEOF
+ NGTCP2_ENABLED=1
+
+$as_echo "#define USE_NGTCP2 1" >>confdefs.h
+
+ USE_NGTCP2=1
+
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2"
+ export CURL_LIBRARY_PATH
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_TCP2 to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $DIR_TCP2 to CURL_LIBRARY_PATH" >&6;}
+
+fi
+
+done
+
+
+else
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+
+fi
+
+
+ else
+ if test X"$want_tcp2" != Xdefault; then
+ as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file." "$LINENO" 5
+ fi
+ fi
+
+fi
+
+if test "x$NGTCP2_ENABLED" = "x1"; then
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+$as_echo "$PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+ ac_pt_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_pt_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_openssl options with pkg-config" >&5
+$as_echo_n "checking for libngtcp2_crypto_openssl options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists libngtcp2_crypto_openssl >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
+ fi
+ fi
+
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_NGTCP2_CRYPTO_OPENSSL=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-l libngtcp2_crypto_openssl`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_OPENSSL" >&5
+$as_echo "$as_me: -l is $LIB_NGTCP2_CRYPTO_OPENSSL" >&6;}
+
+ CPP_NGTCP2_CRYPTO_OPENSSL=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --cflags-only-I libngtcp2_crypto_openssl`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_OPENSSL" >&5
+$as_echo "$as_me: -I is $CPP_NGTCP2_CRYPTO_OPENSSL" >&6;}
+
+ LD_NGTCP2_CRYPTO_OPENSSL=`
+ if test -n "$want_tcp2_path"; then
+ PKG_CONFIG_LIBDIR="$want_tcp2_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-L libngtcp2_crypto_openssl`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&5
+$as_echo "$as_me: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&6;}
+
+ LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OPENSSL"
+ CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OPENSSL"
+ LIBS="$LIB_NGTCP2_CRYPTO_OPENSSL $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/-L//'`
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_openssl" >&5
+$as_echo_n "checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_openssl... " >&6; }
+if ${ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lngtcp2_crypto_openssl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char ngtcp2_crypto_ctx_initial ();
+int main (void)
+{
+return ngtcp2_crypto_ctx_initial ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial=yes
+else
+ ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" >&5
+$as_echo "$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" >&6; }
+if test "x$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" = xyes; then :
+
+ for ac_header in ngtcp2/ngtcp2_crypto.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default"
+if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1
+_ACEOF
+ NGTCP2_ENABLED=1
+
+$as_echo "#define USE_NGTCP2_CRYPTO_OPENSSL 1" >>confdefs.h
+
+ USE_NGTCP2_CRYPTO_OPENSSL=1
+
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OPENSSL"
+ export CURL_LIBRARY_PATH
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH" >&6;}
+
+fi
+
+done
+
+
+else
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+
+fi
+
+
+ else
+ if test X"$want_tcp2" != Xdefault; then
+ as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_openssl pkg-config file." "$LINENO" 5
+ fi
+ fi
+fi
+
+
+OPT_NGHTTP3="yes"
+
+if test "x$NGTCP2_ENABLED" = "x"; then
+ # without ngtcp2, nghttp3 is of no use for us
+ OPT_NGHTTP3="no"
+fi
+
+
+# Check whether --with-nghttp3 was given.
+if test "${with_nghttp3+set}" = set; then :
+ withval=$with_nghttp3; OPT_NGHTTP3=$withval
+fi
+
+case "$OPT_NGHTTP3" in
+ no)
+ want_nghttp3="no"
+ ;;
+ yes)
+ want_nghttp3="default"
+ want_nghttp3_path=""
+ ;;
+ *)
+ want_nghttp3="yes"
+ want_nghttp3_path="$withval/lib/pkgconfig"
+ ;;
+esac
+
+curl_http3_msg="disabled (--with-nghttp3)"
+if test X"$want_nghttp3" != Xno; then
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+$as_echo "$PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+ ac_pt_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_pt_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnghttp3 options with pkg-config" >&5
+$as_echo_n "checking for libnghttp3 options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$want_nghttp3_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists libnghttp3 >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
+ fi
+ fi
+
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_NGHTTP3=`
+ if test -n "$want_nghttp3_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-l libnghttp3`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGHTTP3" >&5
+$as_echo "$as_me: -l is $LIB_NGHTTP3" >&6;}
+
+ CPP_NGHTTP3=`
+ if test -n "$want_nghttp3_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --cflags-only-I libnghttp3`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGHTTP3" >&5
+$as_echo "$as_me: -I is $CPP_NGHTTP3" >&6;}
+
+ LD_NGHTTP3=`
+ if test -n "$want_nghttp3_path"; then
+ PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-L libnghttp3`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -L is $LD_NGHTTP3" >&5
+$as_echo "$as_me: -L is $LD_NGHTTP3" >&6;}
+
+ LDFLAGS="$LDFLAGS $LD_NGHTTP3"
+ CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3"
+ LIBS="$LIB_NGHTTP3 $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/-L//'`
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nghttp3_conn_client_new in -lnghttp3" >&5
+$as_echo_n "checking for nghttp3_conn_client_new in -lnghttp3... " >&6; }
+if ${ac_cv_lib_nghttp3_nghttp3_conn_client_new+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnghttp3 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char nghttp3_conn_client_new ();
+int main (void)
+{
+return nghttp3_conn_client_new ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_nghttp3_nghttp3_conn_client_new=yes
+else
+ ac_cv_lib_nghttp3_nghttp3_conn_client_new=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp3_nghttp3_conn_client_new" >&5
+$as_echo "$ac_cv_lib_nghttp3_nghttp3_conn_client_new" >&6; }
+if test "x$ac_cv_lib_nghttp3_nghttp3_conn_client_new" = xyes; then :
+
+ for ac_header in nghttp3/nghttp3.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "nghttp3/nghttp3.h" "ac_cv_header_nghttp3_nghttp3_h" "$ac_includes_default"
+if test "x$ac_cv_header_nghttp3_nghttp3_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_NGHTTP3_NGHTTP3_H 1
+_ACEOF
+ curl_h3_msg="enabled (ngtcp2 + nghttp3)"
+ NGHTTP3_ENABLED=1
+
+$as_echo "#define USE_NGHTTP3 1" >>confdefs.h
+
+ USE_NGHTTP3=1
+
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3"
+ export CURL_LIBRARY_PATH
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&6;}
+ experimental="$experimental HTTP3"
+
+fi
+
+done
+
+
+else
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+
+fi
+
+
+ else
+ if test X"$want_nghttp3" != Xdefault; then
+ as_fn_error $? "--with-nghttp3 was specified but could not find nghttp3 pkg-config file." "$LINENO" 5
+ fi
+ fi
+
+fi
+
+
+OPT_QUICHE="yes"
+
+if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
+ # without HTTP or with ngtcp2, quiche is no use
+ OPT_QUICHE="no"
+fi
+
+
+# Check whether --with-quiche was given.
+if test "${with_quiche+set}" = set; then :
+ withval=$with_quiche; OPT_QUICHE=$withval
+fi
+
+case "$OPT_QUICHE" in
+ no)
+ want_quiche="no"
+ ;;
+ yes)
+ want_quiche="default"
+ want_quiche_path=""
+ ;;
+ *)
+ want_quiche="yes"
+ want_quiche_path="$withval"
+ ;;
+esac
+
+if test X"$want_quiche" != Xno; then
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+
+ if test -n "$PKG_CONFIG"; then
+ PKGCONFIG="$PKG_CONFIG"
+ else
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+$as_echo "$PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+ ac_pt_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_pt_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+ fi
+
+ if test "x$PKGCONFIG" != "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for quiche options with pkg-config" >&5
+$as_echo_n "checking for quiche options with pkg-config... " >&6; }
+ itexists=`
+ if test -n "$want_quiche_path"; then
+ PKG_CONFIG_LIBDIR="$want_quiche_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --exists quiche >/dev/null 2>&1 && echo 1`
+
+ if test -z "$itexists"; then
+ PKGCONFIG="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
+ fi
+ fi
+
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_QUICHE=`
+ if test -n "$want_quiche_path"; then
+ PKG_CONFIG_LIBDIR="$want_quiche_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-l quiche`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -l is $LIB_QUICHE" >&5
+$as_echo "$as_me: -l is $LIB_QUICHE" >&6;}
+
+ CPP_QUICHE=`
+ if test -n "$want_quiche_path"; then
+ PKG_CONFIG_LIBDIR="$want_quiche_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+ $PKGCONFIG --cflags-only-I quiche`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -I is $CPP_QUICHE" >&5
+$as_echo "$as_me: -I is $CPP_QUICHE" >&6;}
+
+ LD_QUICHE=`
+ if test -n "$want_quiche_path"; then
+ PKG_CONFIG_LIBDIR="$want_quiche_path"
+ export PKG_CONFIG_LIBDIR
+ fi
+
+ $PKGCONFIG --libs-only-L quiche`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: -L is $LD_QUICHE" >&5
+$as_echo "$as_me: -L is $LD_QUICHE" >&6;}
+
+ LDFLAGS="$LDFLAGS $LD_QUICHE"
+ CPPFLAGS="$CPPFLAGS $CPP_QUICHE"
+ LIBS="$LIB_QUICHE $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/-L//'`
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for quiche_connect in -lquiche" >&5
+$as_echo_n "checking for quiche_connect in -lquiche... " >&6; }
+if ${ac_cv_lib_quiche_quiche_connect+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lquiche $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char quiche_connect ();
+int main (void)
+{
+return quiche_connect ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_quiche_quiche_connect=yes
+else
+ ac_cv_lib_quiche_quiche_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_quiche_quiche_connect" >&5
+$as_echo "$ac_cv_lib_quiche_quiche_connect" >&6; }
+if test "x$ac_cv_lib_quiche_quiche_connect" = xyes; then :
+
+ for ac_header in quiche.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "quiche.h" "ac_cv_header_quiche_h" "$ac_includes_default"
+if test "x$ac_cv_header_quiche_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_QUICHE_H 1
+_ACEOF
+ experimental="$experimental HTTP3"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: HTTP3 support is experimental" >&5
+$as_echo "$as_me: HTTP3 support is experimental" >&6;}
+ curl_h3_msg="enabled (quiche)"
+ QUICHE_ENABLED=1
+
+$as_echo "#define USE_QUICHE 1" >>confdefs.h
+
+ USE_QUICHE=1
+
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE"
+ export CURL_LIBRARY_PATH
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&6;}
+fi
+
+done
+
+
+else
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+
+fi
+
+ else
+ if test X"$want_quiche" != Xdefault; then
+ as_fn_error $? "--with-quiche was specified but could not find quiche pkg-config file." "$LINENO" 5
+ fi
+ fi
+fi
+
+
OPT_ZSH_FPATH=default
# Check whether --with-zsh-functions-dir was given.
@@ -40308,6 +41382,7 @@ for ac_func in fnmatch \
setlocale \
setmode \
setrlimit \
+ usleep \
utime \
utimes
@@ -41530,7 +42605,6 @@ $as_echo "no" >&6; }
$as_echo "yes" >&6; }
curl_altsvc_msg="enabled";
enable_altsvc="yes"
- experimental="alt-svc"
;;
esac
else
@@ -41544,7 +42618,7 @@ if test "$enable_altsvc" = "yes"; then
$as_echo "#define USE_ALTSVC 1" >>confdefs.h
- experimental="alt-svc"
+ experimental="$experimental alt-svc"
fi
@@ -41676,6 +42750,10 @@ if test "x$USE_NGHTTP2" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
fi
+if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1"; then
+ SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3"
+fi
+
if test "x$CURL_WITH_MULTI_SSL" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
fi
@@ -44655,6 +45733,7 @@ done
PSL: ${curl_psl_msg}
Alt-svc: ${curl_altsvc_msg}
HTTP2: ${curl_h2_msg}
+ HTTP3: ${curl_h3_msg}
Protocols: ${SUPPORT_PROTOCOLS}
Features: ${SUPPORT_FEATURES}
" >&5
@@ -44696,11 +45775,12 @@ $as_echo "$as_me: Configured to build curl/libcurl:
PSL: ${curl_psl_msg}
Alt-svc: ${curl_altsvc_msg}
HTTP2: ${curl_h2_msg}
+ HTTP3: ${curl_h3_msg}
Protocols: ${SUPPORT_PROTOCOLS}
Features: ${SUPPORT_FEATURES}
" >&6;}
if test -n "$experimental"; then
cat >&2 << _EOF
- WARNING: $experimental is enabled but marked EXPERIMENTAL. Use with caution!
+ WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution!
_EOF
fi
diff --git a/configure.ac b/configure.ac
index cbf03808..07e0a502 100755
--- a/configure.ac
+++ b/configure.ac
@@ -2633,7 +2633,7 @@ dnl **********************************************************************
dnl Check for the CA bundle
dnl **********************************************************************
-if test "$check_for_ca_bundle" -gt 0; then
+if test -n "$check_for_ca_bundle"; then
CURL_CHECK_CA_BUNDLE
fi
@@ -3338,6 +3338,331 @@ if test X"$want_h2" != Xno; then
fi
dnl **********************************************************************
+dnl Check for ngtcp2 (QUIC)
+dnl **********************************************************************
+
+OPT_TCP2="yes"
+curl_h3_msg="disabled (--with-ngtcp2, --with-quiche)"
+
+if test "x$disable_http" = "xyes"; then
+ # without HTTP, ngtcp2 is no use
+ OPT_TCP2="no"
+fi
+
+AC_ARG_WITH(ngtcp2,
+AC_HELP_STRING([--with-ngtcp2=PATH],[Enable ngtcp2 usage])
+AC_HELP_STRING([--without-ngtcp2],[Disable ngtcp2 usage]),
+ [OPT_TCP2=$withval])
+case "$OPT_TCP2" in
+ no)
+ dnl --without-ngtcp2 option used
+ want_tcp2="no"
+ ;;
+ yes)
+ dnl --with-ngtcp2 option used without path
+ want_tcp2="default"
+ want_tcp2_path=""
+ ;;
+ *)
+ dnl --with-ngtcp2 option used with path
+ want_tcp2="yes"
+ want_tcp2_path="$withval/lib/pkgconfig"
+ ;;
+esac
+
+curl_tcp2_msg="disabled (--with-ngtcp2)"
+if test X"$want_tcp2" != Xno; then
+ dnl backup the pre-ngtcp2 variables
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ CURL_CHECK_PKGCONFIG(libngtcp2, $want_tcp2_path)
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+ $PKGCONFIG --libs-only-l libngtcp2`
+ AC_MSG_NOTICE([-l is $LIB_TCP2])
+
+ CPP_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl
+ $PKGCONFIG --cflags-only-I libngtcp2`
+ AC_MSG_NOTICE([-I is $CPP_TCP2])
+
+ LD_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+ $PKGCONFIG --libs-only-L libngtcp2`
+ AC_MSG_NOTICE([-L is $LD_TCP2])
+
+ LDFLAGS="$LDFLAGS $LD_TCP2"
+ CPPFLAGS="$CPPFLAGS $CPP_TCP2"
+ LIBS="$LIB_TCP2 $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/-L//'`
+ fi
+ AC_CHECK_LIB(ngtcp2, ngtcp2_conn_client_new,
+ [
+ AC_CHECK_HEADERS(ngtcp2/ngtcp2.h,
+ NGTCP2_ENABLED=1
+ AC_DEFINE(USE_NGTCP2, 1, [if ngtcp2 is in use])
+ AC_SUBST(USE_NGTCP2, [1])
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2"
+ export CURL_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $DIR_TCP2 to CURL_LIBRARY_PATH])
+ )
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+ )
+
+ else
+ dnl no ngtcp2 pkg-config found, deal with it
+ if test X"$want_tcp2" != Xdefault; then
+ dnl To avoid link errors, we do not allow --with-ngtcp2 without
+ dnl a pkgconfig file
+ AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file.])
+ fi
+ fi
+
+fi
+
+if test "x$NGTCP2_ENABLED" = "x1"; then
+ dnl backup the pre-ngtcp2_crypto_openssl variables
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ CURL_CHECK_PKGCONFIG(libngtcp2_crypto_openssl, $want_tcp2_path)
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+ $PKGCONFIG --libs-only-l libngtcp2_crypto_openssl`
+ AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_OPENSSL])
+
+ CPP_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl
+ $PKGCONFIG --cflags-only-I libngtcp2_crypto_openssl`
+ AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_OPENSSL])
+
+ LD_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+ $PKGCONFIG --libs-only-L libngtcp2_crypto_openssl`
+ AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_OPENSSL])
+
+ LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OPENSSL"
+ CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OPENSSL"
+ LIBS="$LIB_NGTCP2_CRYPTO_OPENSSL $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/-L//'`
+ fi
+ AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_ctx_initial,
+ [
+ AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
+ NGTCP2_ENABLED=1
+ AC_DEFINE(USE_NGTCP2_CRYPTO_OPENSSL, 1, [if ngtcp2_crypto_openssl is in use])
+ AC_SUBST(USE_NGTCP2_CRYPTO_OPENSSL, [1])
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OPENSSL"
+ export CURL_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH])
+ )
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+ )
+
+ else
+ dnl no ngtcp2_crypto_openssl pkg-config found, deal with it
+ if test X"$want_tcp2" != Xdefault; then
+ dnl To avoid link errors, we do not allow --with-ngtcp2 without
+ dnl a pkgconfig file
+ AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_openssl pkg-config file.])
+ fi
+ fi
+fi
+
+dnl **********************************************************************
+dnl Check for nghttp3 (HTTP/3 with ngtcp2)
+dnl **********************************************************************
+
+OPT_NGHTTP3="yes"
+
+if test "x$NGTCP2_ENABLED" = "x"; then
+ # without ngtcp2, nghttp3 is of no use for us
+ OPT_NGHTTP3="no"
+fi
+
+AC_ARG_WITH(nghttp3,
+AC_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage])
+AC_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]),
+ [OPT_NGHTTP3=$withval])
+case "$OPT_NGHTTP3" in
+ no)
+ dnl --without-nghttp3 option used
+ want_nghttp3="no"
+ ;;
+ yes)
+ dnl --with-nghttp3 option used without path
+ want_nghttp3="default"
+ want_nghttp3_path=""
+ ;;
+ *)
+ dnl --with-nghttp3 option used with path
+ want_nghttp3="yes"
+ want_nghttp3_path="$withval/lib/pkgconfig"
+ ;;
+esac
+
+curl_http3_msg="disabled (--with-nghttp3)"
+if test X"$want_nghttp3" != Xno; then
+ dnl backup the pre-nghttp3 variables
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ CURL_CHECK_PKGCONFIG(libnghttp3, $want_nghttp3_path)
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path])
+ $PKGCONFIG --libs-only-l libnghttp3`
+ AC_MSG_NOTICE([-l is $LIB_NGHTTP3])
+
+ CPP_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) dnl
+ $PKGCONFIG --cflags-only-I libnghttp3`
+ AC_MSG_NOTICE([-I is $CPP_NGHTTP3])
+
+ LD_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path])
+ $PKGCONFIG --libs-only-L libnghttp3`
+ AC_MSG_NOTICE([-L is $LD_NGHTTP3])
+
+ LDFLAGS="$LDFLAGS $LD_NGHTTP3"
+ CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3"
+ LIBS="$LIB_NGHTTP3 $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/-L//'`
+ fi
+ AC_CHECK_LIB(nghttp3, nghttp3_conn_client_new,
+ [
+ AC_CHECK_HEADERS(nghttp3/nghttp3.h,
+ curl_h3_msg="enabled (ngtcp2 + nghttp3)"
+ NGHTTP3_ENABLED=1
+ AC_DEFINE(USE_NGHTTP3, 1, [if nghttp3 is in use])
+ AC_SUBST(USE_NGHTTP3, [1])
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3"
+ export CURL_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH])
+ experimental="$experimental HTTP3"
+ )
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+ )
+
+ else
+ dnl no nghttp3 pkg-config found, deal with it
+ if test X"$want_nghttp3" != Xdefault; then
+ dnl To avoid link errors, we do not allow --with-nghttp3 without
+ dnl a pkgconfig file
+ AC_MSG_ERROR([--with-nghttp3 was specified but could not find nghttp3 pkg-config file.])
+ fi
+ fi
+
+fi
+
+dnl **********************************************************************
+dnl Check for quiche (QUIC)
+dnl **********************************************************************
+
+OPT_QUICHE="yes"
+
+if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
+ # without HTTP or with ngtcp2, quiche is no use
+ OPT_QUICHE="no"
+fi
+
+AC_ARG_WITH(quiche,
+AC_HELP_STRING([--with-quiche=PATH],[Enable quiche usage])
+AC_HELP_STRING([--without-quiche],[Disable quiche usage]),
+ [OPT_QUICHE=$withval])
+case "$OPT_QUICHE" in
+ no)
+ dnl --without-quiche option used
+ want_quiche="no"
+ ;;
+ yes)
+ dnl --with-quiche option used without path
+ want_quiche="default"
+ want_quiche_path=""
+ ;;
+ *)
+ dnl --with-quiche option used with path
+ want_quiche="yes"
+ want_quiche_path="$withval"
+ ;;
+esac
+
+if test X"$want_quiche" != Xno; then
+ dnl backup the pre-quiche variables
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ CURL_CHECK_PKGCONFIG(quiche, $want_quiche_path)
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path])
+ $PKGCONFIG --libs-only-l quiche`
+ AC_MSG_NOTICE([-l is $LIB_QUICHE])
+
+ CPP_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) dnl
+ $PKGCONFIG --cflags-only-I quiche`
+ AC_MSG_NOTICE([-I is $CPP_QUICHE])
+
+ LD_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path])
+ $PKGCONFIG --libs-only-L quiche`
+ AC_MSG_NOTICE([-L is $LD_QUICHE])
+
+ LDFLAGS="$LDFLAGS $LD_QUICHE"
+ CPPFLAGS="$CPPFLAGS $CPP_QUICHE"
+ LIBS="$LIB_QUICHE $LIBS"
+
+ if test "x$cross_compiling" != "xyes"; then
+ DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/-L//'`
+ fi
+ AC_CHECK_LIB(quiche, quiche_connect,
+ [
+ AC_CHECK_HEADERS(quiche.h,
+ experimental="$experimental HTTP3"
+ AC_MSG_NOTICE([HTTP3 support is experimental])
+ curl_h3_msg="enabled (quiche)"
+ QUICHE_ENABLED=1
+ AC_DEFINE(USE_QUICHE, 1, [if quiche is in use])
+ AC_SUBST(USE_QUICHE, [1])
+ CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE"
+ export CURL_LIBRARY_PATH
+ AC_MSG_NOTICE([Added $DIR_QUICHE to CURL_LIBRARY_PATH]),
+ )
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
+ )
+ else
+ dnl no nghttp3 pkg-config found, deal with it
+ if test X"$want_quiche" != Xdefault; then
+ dnl To avoid link errors, we do not allow --with-nghttp3 without
+ dnl a pkgconfig file
+ AC_MSG_ERROR([--with-quiche was specified but could not find quiche pkg-config file.])
+ fi
+ fi
+fi
+
+dnl **********************************************************************
dnl Check for zsh completion path
dnl **********************************************************************
@@ -3671,6 +3996,7 @@ AC_CHECK_FUNCS([fnmatch \
setlocale \
setmode \
setrlimit \
+ usleep \
utime \
utimes
],[
@@ -4161,7 +4487,6 @@ AC_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
*) AC_MSG_RESULT(yes)
curl_altsvc_msg="enabled";
enable_altsvc="yes"
- experimental="alt-svc"
;;
esac ],
AC_MSG_RESULT(no)
@@ -4169,7 +4494,7 @@ AC_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
if test "$enable_altsvc" = "yes"; then
AC_DEFINE(USE_ALTSVC, 1, [to enable alt-svc])
- experimental="alt-svc"
+ experimental="$experimental alt-svc"
fi
dnl ************************************************************
@@ -4280,6 +4605,10 @@ if test "x$USE_NGHTTP2" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
fi
+if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1"; then
+ SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3"
+fi
+
if test "x$CURL_WITH_MULTI_SSL" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
fi
@@ -4471,11 +4800,12 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
PSL: ${curl_psl_msg}
Alt-svc: ${curl_altsvc_msg}
HTTP2: ${curl_h2_msg}
+ HTTP3: ${curl_h3_msg}
Protocols: ${SUPPORT_PROTOCOLS}
Features: ${SUPPORT_FEATURES}
])
if test -n "$experimental"; then
cat >&2 << _EOF
- WARNING: $experimental is enabled but marked EXPERIMENTAL. Use with caution!
+ WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution!
_EOF
fi
diff --git a/docs/ALTSVC.md b/docs/ALTSVC.md
index 5aca1c95..48401415 100644
--- a/docs/ALTSVC.md
+++ b/docs/ALTSVC.md
@@ -2,21 +2,6 @@
curl features **EXPERIMENTAL** support for the Alt-Svc: HTTP header.
-## Experimental
-
-Experimental support in curl means:
-
-1. Experimental features are provided to allow users to try them out and
- provide feedback on functionality and API etc before they ship and get
- "carved in stone".
-2. You must enable the feature when invoking configure as otherwise curl will
- not be built with the feature present.
-3. We strongly advice against using this feature in production.
-4. **We reserve the right to change behavior** of the feature without sticking
- to our API/ABI rules as we do for regular features, as long as it is marked
- experimental.
-5. Experimental features are clearly marked so in documentation. Beware.
-
## Enable Alt-Svc in build
`./configure --enable-alt-svc`
@@ -25,35 +10,30 @@ Experimental support in curl means:
[RFC 7838](https://tools.ietf.org/html/rfc7838)
-## What works
-
-- read alt-svc file from disk
-- write alt-svc file from disk
-- parse `Alt-Svc:` response headers, including `ma`, `clear` and `persist`.
-- replaces old entries when new alternatives are received
-- unit tests to verify most of this functionality (test 1654)
-- act on `Alt-Svc:` response headers
-- build conditionally on `configure --enable-alt-svc` only, feature marked as
- **EXPERIMENTAL**
-- implement `CURLOPT_ALTSVC_CTRL`
-- implement `CURLOPT_ALTSVC`
-- document `CURLOPT_ALTSVC_CTRL`
-- document `CURLOPT_ALTSVC`
-- document `--alt-svc`
-- add `CURL_VERSION_ALTSVC`
-- make `curl -V` show 'alt-svc' as a feature if built-in
-- support `curl --alt-svc [file]` to enable caching, using that file
-- make `tests/runtests.pl` able to filter tests on the feature `alt-svc`
-- actually use the existing in-memory alt-svc cache for outgoing connections
-- alt-svc cache expiry
-- test 355 and 356 verify curl acting on Alt-Svc, received from header and
- loaded from cache. The latter needs a debug build since it enables Alt-Svc
- for plain HTTP.
-
-## What is left
+# Alt-Svc cache file format
+
+This a text based file with one line per entry and each line consists of nine
+space separated fields.
+
+## Example
+
+ h2 quic.tech 8443 h3-22 quic.tech 8443 "20190808 06:18:37" 0 0
+
+## Fields
+
+1. The ALPN id for the source origin
+2. The host name for the source origin
+3. The port number for the source origin
+4. The ALPN id for the destination host
+5. The host name for the destination host
+6. The host number for the destination host
+7. The expiration date and time of this entry withing double quotes. The date format is "YYYYMMDD HH:MM:SS" and the time zone is GMT.
+8. Boolean (1 or 0) if "persist" was set for this entry
+9. Integer priority value (not currently used)
+
+# TODO
- handle multiple response headers, when one of them says `clear` (should
override them all)
- using `Age:` value for caching age as per spec
- `CURLALTSVC_IMMEDIATELY` support
-- `CURLALTSVC_ALTUSED` support
diff --git a/docs/DEPRECATE.md b/docs/DEPRECATE.md
index f04f0eea..4f4ef8ab 100644
--- a/docs/DEPRECATE.md
+++ b/docs/DEPRECATE.md
@@ -5,21 +5,6 @@ email the curl-library mailing list as soon as possible and explain to us why
this is a problem for you and how your use case can't be satisfied properly
using a work around.
-## HTTP/0.9
-
-Supporting this is non-obvious and might even come as a surprise to some
-users. Potentially even being a security risk in some cases.
-
-### State
-
-curl 7.64.0 introduces options to disable/enable support for this protocol
-version. The default remains supported for now.
-
-### Removal
-
-The support for HTTP/0.9 will be switched to disabled by default in 6 months,
-in the September 2019 release (possibly called curl 7.68.0).
-
## PolarSSL
The polarssl TLS library has not had an update in over three years. The last
diff --git a/docs/EXPERIMENTAL.md b/docs/EXPERIMENTAL.md
new file mode 100644
index 00000000..6c33bcf5
--- /dev/null
+++ b/docs/EXPERIMENTAL.md
@@ -0,0 +1,22 @@
+# Experimental
+
+Some features and functionality in curl and libcurl are considered
+**EXPERIMENTAL**.
+
+Experimental support in curl means:
+
+1. Experimental features are provided to allow users to try them out and
+ provide feedback on functionality and API etc before they ship and get
+ "carved in stone".
+2. You must enable the feature when invoking configure as otherwise curl will
+ not be built with the feature present.
+3. We strongly advice against using this feature in production.
+4. **We reserve the right to change behavior** of the feature without sticking
+ to our API/ABI rules as we do for regular features, as long as it is marked
+ experimental.
+5. Experimental features are clearly marked so in documentation. Beware.
+
+## Experimental features right now
+
+ - HTTP/3 support and options
+ - alt-svc support and options
diff --git a/docs/HTTP3.md b/docs/HTTP3.md
new file mode 100644
index 00000000..1e9b183c
--- /dev/null
+++ b/docs/HTTP3.md
@@ -0,0 +1,121 @@
+# HTTP3 (and QUIC)
+
+## Resources
+
+[HTTP/3 Explained](https://daniel.haxx.se/http3-explained/) - the online free
+book describing the protocols involved.
+
+[QUIC implementation](https://github.com/curl/curl/wiki/QUIC-implementation) -
+the wiki page describing the plan for how to support QUIC and HTTP/3 in curl
+and libcurl.
+
+[quicwg.org](https://quicwg.org/) - home of the official protocol drafts
+
+## QUIC libraries
+
+QUIC libraries we're experiementing with:
+
+[ngtcp2](https://github.com/ngtcp2/ngtcp2)
+
+[quiche](https://github.com/cloudflare/quiche)
+
+## Experimental!
+
+HTTP/3 and QUIC support in curl is considered **EXPERIMENTAL** until further
+notice. It needs to be enabled at build-time.
+
+Further development and tweaking of the HTTP/3 support in curl will happen in
+in the master branch using pull-requests, just like ordinary changes.
+
+# ngtcp2 version
+
+## Build
+
+Build (patched) OpenSSL
+
+ % git clone --depth 1 -b openssl-quic-draft-22 https://github.com/tatsuhiro-t/openssl
+ % cd openssl
+ % ./config enable-tls1_3 --prefix=<somewhere1>
+ % make
+ % make install_sw
+
+Build nghttp3
+
+ % cd ..
+ % git clone https://github.com/ngtcp2/nghttp3
+ % cd nghttp3
+ % autoreconf -i
+ % ./configure --prefix=<somewhere2> --enable-lib-only
+ % make
+ % make install
+
+Build ngtcp2
+
+ % cd ..
+ % git clone -b draft-22 https://github.com/ngtcp2/ngtcp2
+ % cd ngtcp2
+ % autoreconf -i
+ % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somehere1>/lib" --prefix==<somewhere3>
+ % make
+ % make install
+
+Build curl
+
+ % cd ..
+ % git clone https://github.com/curl/curl
+ % cd curl
+ % ./buildconf
+ % LDFLAGS="-Wl,-rpath,<somewhere1>/lib" ./configure -with-ssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
+ % make
+
+## Running
+
+Make sure the custom OpenSSL library is the one used at run-time, as otherwise
+you'll just get ld.so linker errors.
+
+## Invoke from command line
+
+ curl --http3 https://nghttp2.org:8443/
+
+# quiche version
+
+## build
+
+Clone quiche and BoringSSL:
+
+ % git clone --recursive https://github.com/cloudflare/quiche
+
+Build BoringSSL (it needs to be built manually so it can be reused with curl):
+
+ % cd quiche/deps/boringssl
+ % mkdir build
+ % cd build
+ % cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on ..
+ % make -j`nproc`
+ % cd ..
+ % mkdir .openssl/lib -p
+ % cp build/crypto/libcrypto.a build/ssl/libssl.a .openssl/lib
+ % ln -s $PWD/include .openssl
+
+Build quiche:
+
+ % cd ../..
+ % QUICHE_BSSL_PATH=$PWD/deps/boringssl cargo build --release --features pkg-config-meta
+
+Clone and build curl:
+
+ % cd ..
+ % git clone https://github.com/curl/curl
+ % cd curl
+ % ./buildconf
+ % ./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" --with-ssl=$PWD/../quiche/deps/boringssl/.openssl --with-quiche=$PWD/../quiche/target/release
+ % make -j`nproc`
+
+## Running
+
+Make an HTTP/3 request.
+
+ % src/curl --http3 https://cloudflare-quic.com/
+ % src/curl --http3 https://facebook.com/
+ % src/curl --http3 https://quic.aiortc.org:4433/
+ % src/curl --http3 https://quic.rocks:4433/
diff --git a/docs/INTERNALS.md b/docs/INTERNALS.md
index cd004e8f..9ae72289 100644
--- a/docs/INTERNALS.md
+++ b/docs/INTERNALS.md
@@ -773,7 +773,7 @@ Track Down Memory Leaks
Add a line in your application code:
- `curl_memdebug("dump");`
+ `curl_dbg_memdebug("dump");`
This will make the malloc debug system output a full trace of all resource
using functions to the given file name. Make sure you rebuild your program
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index e385ef59..5850f7fb 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -13,7 +13,6 @@ problems may have been fixed or changed somewhat since this was written!
1. HTTP
1.1 CURLFORM_CONTENTLEN in an array
- 1.2 Disabling HTTP Pipelining
1.3 STARTTRANSFER time is wrong for HTTP POSTs
1.4 multipart formposts file name encoding
1.5 Expect-100 meets 417
@@ -21,7 +20,6 @@ problems may have been fixed or changed somewhat since this was written!
1.7 Deflate error after all content was received
1.8 DoH isn't used for all name resolves when enabled
1.9 HTTP/2 frames while in the connection pool kill reuse
- 1.10 Strips trailing dot from host name
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
2. TLS
@@ -48,6 +46,7 @@ problems may have been fixed or changed somewhat since this was written!
4.5 Improve --data-urlencode space encoding
5. Build and portability issues
+ 5.1 USE_UNIX_SOCKETS on Windows
5.2 curl-config --libs contains private details
5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
5.4 Cannot compile against a static build of OpenLDAP
@@ -98,6 +97,7 @@ problems may have been fixed or changed somewhat since this was written!
11.4 HTTP test server 'connection-monitor' problems
11.5 Connection information when using TCP Fast Open
11.6 slow connect to localhost on Windows
+ 11.7 signal-based resolver timeouts
12. LDAP and OpenLDAP
12.1 OpenLDAP hangs after returning results
@@ -121,14 +121,6 @@ problems may have been fixed or changed somewhat since this was written!
see the now closed related issue:
https://github.com/curl/curl/issues/608
-1.2 Disabling HTTP Pipelining
-
- Disabling HTTP Pipelining when there are ongoing transfers can lead to
- heap corruption and crash. https://curl.haxx.se/bug/view.cgi?id=1411
-
- Similarly, removing a handle when pipelining corrupts data:
- https://github.com/curl/curl/issues/2101
-
1.3 STARTTRANSFER time is wrong for HTTP POSTs
Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with
@@ -189,42 +181,6 @@ problems may have been fixed or changed somewhat since this was written!
This is *best* fixed by adding monitoring to connections while they are kept
in the pool so that pings can be responded to appropriately.
-1.10 Strips trailing dot from host name
-
- When given a URL with a trailing dot for the host name part:
- "https://example.com./", libcurl will strip off the dot and use the name
- without a dot internally and send it dot-less in HTTP Host: headers and in
- the TLS SNI field. For the purpose of resolving the name to an address
- the hostname is used as is without any change.
-
- The HTTP part violates RFC 7230 section 5.4 but the SNI part is accordance
- with RFC 6066 section 3.
-
- URLs using these trailing dots are very rare in the wild and we have not seen
- or gotten any real-world problems with such URLs reported. The popular
- browsers seem to have stayed with not stripping the dot for both uses (thus
- they violate RFC 6066 instead of RFC 7230).
-
- Daniel took the discussion to the HTTPbis mailing list in March 2016:
- https://lists.w3.org/Archives/Public/ietf-http-wg/2016JanMar/0430.html but
- there was not major rush or interest to fix this. The impression I get is
- that most HTTP people rather not rock the boat now and instead prioritize web
- compatibility rather than to strictly adhere to these RFCs.
-
- Our current approach allows a knowing client to send a custom HTTP header
- with the dot added.
-
- In a few cases there is a difference in name resolving to IP addresses with
- a trailing dot, but it can be noted that many HTTP servers will not happily
- accept the trailing dot there unless that has been specifically configured
- to be a fine virtual host.
-
- If URLs with trailing dots for host names become more popular or even just
- used more than for just plain fun experiments, I'm sure we will have reason
- to go back and reconsider.
-
- See https://github.com/curl/curl/issues/716 for the discussion.
-
1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
I'm using libcurl to POST form data using a FILE* with the CURLFORM_STREAM
@@ -389,6 +345,13 @@ problems may have been fixed or changed somewhat since this was written!
5. Build and portability issues
+5.1 USE_UNIX_SOCKETS on Windows
+
+ Due to incorrect CMake checks for the presense of the feature, it will never
+ be enabled for windows in a cmake build.
+
+ See https://github.com/curl/curl/issues/4040
+
5.2 curl-config --libs contains private details
"curl-config --libs" will include details set in LDFLAGS when configure is
@@ -728,6 +691,19 @@ problems may have been fixed or changed somewhat since this was written!
https://github.com/curl/curl/issues/2281
+11.7 signal-based resolver timeouts
+
+ libcurl built without an asynchronous resolver library uses alarm() to time
+ out DNS lookups. When a timeout occurs, this causes libcurl to jump from the
+ signal handler back into the library with a sigsetjmp, which effectively
+ causes libcurl to continue running within the signal handler. This is
+ non-portable and could cause problems on some platforms. A discussion on the
+ problem is available at https://curl.haxx.se/mail/lib-2008-09/0197.html
+
+ Also, alarm() provides timeout resolution only to the nearest second. alarm
+ ought to be replaced by setitimer on systems that support it.
+
+
12. LDAP and OpenLDAP
12.1 OpenLDAP hangs after returning results
diff --git a/docs/Makefile.am b/docs/Makefile.am
index e34b8048..2bde6bcb 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -53,6 +53,7 @@ EXTRA_DIST = \
CODE_STYLE.md \
CONTRIBUTE.md \
DEPRECATE.md \
+ EXPERIMENTAL.md \
FAQ \
FEATURES \
GOVERNANCE.md \
@@ -60,6 +61,7 @@ EXTRA_DIST = \
HISTORY.md \
HTTP-COOKIES.md \
HTTP2.md \
+ HTTP3.md \
INSTALL \
INSTALL.cmake \
INSTALL.md \
@@ -67,6 +69,7 @@ EXTRA_DIST = \
KNOWN_BUGS \
LICENSE-MIXING.md \
MAIL-ETIQUETTE \
+ PARALLEL-TRANSFERS.md \
README.cmake \
README.md \
README.netware \
diff --git a/docs/Makefile.in b/docs/Makefile.in
index d1422849..c76ae35a 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -383,8 +383,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -479,6 +483,7 @@ EXTRA_DIST = \
CODE_STYLE.md \
CONTRIBUTE.md \
DEPRECATE.md \
+ EXPERIMENTAL.md \
FAQ \
FEATURES \
GOVERNANCE.md \
@@ -486,6 +491,7 @@ EXTRA_DIST = \
HISTORY.md \
HTTP-COOKIES.md \
HTTP2.md \
+ HTTP3.md \
INSTALL \
INSTALL.cmake \
INSTALL.md \
@@ -493,6 +499,7 @@ EXTRA_DIST = \
KNOWN_BUGS \
LICENSE-MIXING.md \
MAIL-ETIQUETTE \
+ PARALLEL-TRANSFERS.md \
README.cmake \
README.md \
README.netware \
diff --git a/docs/PARALLEL-TRANSFERS.md b/docs/PARALLEL-TRANSFERS.md
new file mode 100644
index 00000000..d3b38aee
--- /dev/null
+++ b/docs/PARALLEL-TRANSFERS.md
@@ -0,0 +1,58 @@
+# Parallel transfers
+
+curl 7.66.0 introduces support for doing multiple transfers simultaneously; in
+parallel.
+
+## -Z, --parallel
+
+When this command line option is used, curl will perform the transfers given
+to it at the same time. It will do up to `--parallel-max` concurrent
+transfers, with a default value of 50.
+
+## Progress meter
+
+The progress meter that is displayed when doing parallel transfers is
+completely different than the regular one used for each single transfer.
+
+ It shows:
+
+ o percent download (if known, which means *all* transfers need to have a
+ known size)
+ o precent upload (if known, with the same caveat as for download)
+ o total amount of downloaded data
+ o total amount of uploaded data
+ o number of transfers to perform
+ o number of concurrent transfers being transferred right now
+ o number of transfers queued up waiting to start
+ o total time all transfers are expected to take (if sizes are known)
+ o current time the transfers have spent so far
+ o estimated time left (if sizes are known)
+ o current transfer speed (the faster of UL/DL speeds measured over the last
+ few seconds)
+
+Example:
+
+ DL% UL% Dled Uled Xfers Live Qd Total Current Left Speed
+ 72 -- 37.9G 0 101 30 23 0:00:55 0:00:34 0:00:22 2752M
+
+## Behavior differences
+
+Connections are shared fine between different easy handles, but the
+"authentication contexts" are not. So for example doing HTTP Digest auth with
+one handle for a particular transfer and then continue on with another handle
+that reuses the same connection, the second handle can't send the necessary
+Authorization header at once since the context is only kept in the original
+easy handle.
+
+To fix this, the authorization state could be made possible to share with the
+share API as well, as a context per origin + path (realm?) basically.
+
+Visible in test 153, 1412 and more.
+
+## Feedback!
+
+This is early days for parallel transfer support. Keep your eyes open for
+unintended side effects or downright bugs.
+
+Tell us what you think and how you think we could improve this feature!
+
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index 10e7effe..1d47682b 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -5,10 +5,19 @@ Roadmap of things Daniel Stenberg wants to work on next. It is intended to
serve as a guideline for others for information, feedback and possible
participation.
-HTTP/3
-------
+HSTS
+----
+
+ Complete and merge [the existing PR](https://github.com/curl/curl/pull/2682).
+
+ Loading a huge preload file is probably not too interesting to most people,
+ but using a custom file and reacting to HSTS response header probably are
+ good features.
- See the [QUIC and HTTP/3 wiki page](https://github.com/curl/curl/wiki/QUIC).
+DNS-over-TLS
+------------
+
+ Similar to DNS-over-HTTPS. Could share quite a lot of generic code.
ESNI (Encrypted SNI)
--------------------
@@ -16,44 +25,32 @@ ESNI (Encrypted SNI)
See Daniel's post on [Support of Encrypted
SNI](https://curl.haxx.se/mail/lib-2019-03/0000.html) on the mailing list.
-HSTS
-----
+ Initial work exists in https://github.com/curl/curl/pull/4011
-Complete and merge [the existing PR](https://github.com/curl/curl/pull/2682).
+tiny-curl
+---------
-Parallel transfers for the curl tool
-------------------------------------
+ There's no immediate action for this but users seem keen on being able to
+ building custom minimized versions of libcurl for their products. Make sure
+ new features that are "niche" can still be disabled at build-time.
-This will require several new command line options to enable and control.
-
- 1. switch to creating a list of all the transfers first before any transfer
- is done
- 2. make the transfers using the multi interface
- 3. optionally fire up more transfers before the previous has completed
-
-Option to refuse HTTPS => HTTP redirects
-----------------------------------------
-
-Possibly as a new bit to `CURLOPT_FOLLOWLOCATION` ?
-
-Option to let CURLOPT_CUSTOMREQUEST be overridden on redirect
--------------------------------------------------------------
-
-(This is a common problem for people using `-X` and `-L` together.)
+MQTT
+----
-Possibly as a new bit to `CURLOPT_FOLLOWLOCATION` ?
+ Support receiving and sending MQTT messages. Initial work exists in
+ https://github.com/curl/curl/pull/3514
Hardcode “localhost”
--------------------
-No need to resolve it. Avoid a risk where this is resolved over the network
-and actually responds with something else than a local address. Some operating
-systems already do this. Also:
-https://tools.ietf.org/html/draft-ietf-dnsop-let-localhost-be-localhost-02
+ No need to resolve it. Avoid a risk where this is resolved over the network
+ and actually responds with something else than a local address. Some
+ operating systems already do this. Also:
+ https://tools.ietf.org/html/draft-ietf-dnsop-let-localhost-be-localhost-02
-Consider "menu config"-style build feature selection
-----------------------------------------------------
+"menu config"-style build feature selection
+-------------------------------------------
-Allow easier building of custom libcurl versions with only a selected feature
-where the available features are easily browsable and toggle-able ON/OFF or
-similar.
+ Allow easier building of custom libcurl versions with only a selected feature
+ where the available features are easily browsable and toggle-able ON/OFF or
+ similar.
diff --git a/docs/THANKS b/docs/THANKS
index 385ecd85..73b84cfd 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -52,6 +52,7 @@ Alex Fishman
Alex Grebenschikov
Alex Gruz
Alex Malinovich
+Alex Mayorga
Alex McLellan
Alex Neblett
Alex Nichols
@@ -84,6 +85,7 @@ Alfonso Martone
Alfred Gebert
Allen Pulsifer
Alona Rossen
+Amit Katyal
Amol Pattekar
Amr Shahin
Anatol Belski
@@ -172,6 +174,7 @@ Ayoub Boudhar
Balaji Parasuram
Balaji S Rao
Balaji Salunke
+Balazs Kovacsics
Balint Szilakszi
Barry Abrahamson
Bart Whiteley
@@ -230,6 +233,7 @@ Brad King
Brad Spencer
Bradford Bruce
Brandon Casey
+Brandon Dong
Brandon Wang
Brendan Jurd
Brent Beardsley
@@ -261,6 +265,7 @@ Camille Moncelier
Caolan McNamara
Carie Pointer
Carlo Cannas
+Carlo Marcelo Arenas Belón
Carlo Teubner
Carlo Wood
Carlos ORyan
@@ -315,6 +320,7 @@ Clemens Gruber
Cliff Crosland
Clifford Wolf
Clint Clayton
+Clément Notin
Cody Jones
Cody Mack
Colby Ranger
@@ -714,6 +720,7 @@ Ian Wilkes
Ignacio Vazquez-Abrams
Igor Franchuk
Igor Khristophorov
+Igor Makarov
Igor Novoseltsev
Igor Polyakov
Ihor Karpenko
@@ -726,6 +733,7 @@ Ingmar Runge
Ingo Ralf Blum
Ingo Wilken
Irfan Adilovic
+Ironbars13 on github
Irving Wolfe
Isaac Boukris
Isaiah Norton
@@ -775,6 +783,7 @@ Jari Sundell
Jason Baietto
Jason Glasgow
Jason Juang
+Jason Lee
Jason Liu
Jason McDonald
Jason S. Priebe
@@ -809,6 +818,7 @@ Jens Schleusener
Jeremie Rapin
Jeremy Friesner
Jeremy Huddleston
+Jeremy Lainé
Jeremy Lin
Jeremy Pearson
Jeremy Tan
@@ -929,6 +939,7 @@ Julien Chaffraix
Julien Nabet
Julien Royer
Jun-ichiro itojun Hagino
+Junho Choi
Jurij Smakov
Juro Bystricky
Justin Clift
@@ -996,13 +1007,16 @@ Kristiyan Tsaklev
Kristoffer Gleditsch
Kunal Ekawde
Kurt Fankhauser
+Kyle Abramowitz
Kyle Edwards
Kyle J. McKay
Kyle L. Huff
Kyle Sallee
+Kyohei Kadota
Kyselgov E.N
Lachlan O'Dea
Ladar Levison
+Lance Ware
Larry Campbell
Larry Fahnoe
Larry Lin
@@ -1207,6 +1221,7 @@ Michael Kaufmann
Michael Kilburn
Michael Kujawa
Michael König
+Michael Lee
Michael Maltese
Michael Mealling
Michael Mueller
@@ -1220,6 +1235,7 @@ Michael Wallner
Michal Bonino
Michal Marek
Michal Trybus
+Michal Čaplygin
Michał Antoniak
Michał Fita
Michał Górny
@@ -1549,6 +1565,7 @@ Roger Leigh
Roland Blom
Roland Krikava
Roland Zimmermann
+Rolf Eike Beer
Rolland Dudemaine
Romain Coltel
Romain Fliedel
@@ -1682,7 +1699,6 @@ Stephen Kick
Stephen More
Stephen Toub
Sterling Hughes
-Steve Brokenshire
Steve Green
Steve H Truong
Steve Havelka
@@ -1723,6 +1739,7 @@ Teemu Yli-Elsila
Temprimus
Terri Oda
Terry Wu
+The Infinnovation team
TheAssassin on github
Theodore Dubois
Thomas Braun
@@ -1736,6 +1753,7 @@ Thomas Petazzoni
Thomas Ruecker
Thomas Schwinge
Thomas Tonino
+Thomas Vegas
Thomas van Hesteren
Thorsten Schöning
Tiit Pikma
@@ -1921,6 +1939,7 @@ cbartl on github
cclauss on github
clbr on github
cmfrolick on github
+codesniffer13 on github
d912e3 on github
daboul on github
dasimx on github
@@ -1956,20 +1975,24 @@ madblobfish on github
marc-groundctl on github
masbug on github
mccormickt12 on github
+migueljcrum on github
mkzero on github
moohoorama on github
nedres on github
neex on github
neheb on github
nevv on HackerOne/curl
+niallor on github
nianxuejie on github
niner on github
nk
nopjmp on github
olesteban on github
omau on github
+osabc on github
ovidiu-benea on github
patelvivekv1993 on github
+patnyb on github
pendrek at hackerone
pszemus on github
silveja1 on github
diff --git a/docs/TODO b/docs/TODO
index 5e1fcefa..6d30d26a 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -18,11 +18,8 @@
1. libcurl
1.1 TFO support on Windows
- 1.2 More data sharing
1.3 struct lifreq
- 1.4 signal-based resolver timeouts
1.5 get rid of PATH_MAX
- 1.6 Modified buffer size approach
1.7 Support HTTP/2 for HTTP(S) proxies
1.8 CURLOPT_RESOLVE for any port number
1.9 Cache negative name resolves
@@ -36,12 +33,10 @@
1.17 Add support for IRIs
1.18 try next proxy if one doesn't work
1.20 SRV and URI DNS records
- 1.21 Have the URL API offer IDN decoding
1.22 CURLINFO_PAUSE_STATE
1.23 Offer API to flush the connection pool
1.24 TCP Fast Open for windows
1.25 Expose tried IP addresses that failed
- 1.26 CURL_REFUSE_CLEARTEXT
1.27 hardcode the "localhost" addresses
1.28 FD_CLOEXEC
1.29 Upgrade to websockets
@@ -62,7 +57,6 @@
4.1 HOST
4.2 Alter passive/active on failure and retry
4.3 Earlier bad letter detection
- 4.4 REST for large files
4.5 ASCII support
4.6 GSSAPI via Windows SSPI
4.7 STAT for LIST without data connection
@@ -70,12 +64,9 @@
5. HTTP
5.1 Better persistency for HTTP 1.0
- 5.2 support FF3 sqlite cookie files
5.3 Rearrange request header order
5.4 Allow SAN names in HTTP/2 server push
5.5 auth= in URLs
- 5.6 Refuse "downgrade" redirects
- 5.7 QUIC
6. TELNET
6.1 ditch stdin
@@ -83,12 +74,10 @@
6.3 feature negotiation debug data
7. SMTP
- 7.1 Pipelining
7.2 Enhanced capability support
7.3 Add CURLOPT_MAIL_CLIENT option
8. POP3
- 8.1 Pipelining
8.2 Enhanced capability support
9. IMAP
@@ -104,10 +93,8 @@
11.4 Create remote directories
12. New protocols
- 12.1 RSYNC
13. SSL
- 13.1 Disable specific versions
13.2 Provide mutex locking API
13.3 Support in-memory certs/ca certs/keys
13.4 Cache/share OpenSSL contexts
@@ -115,15 +102,12 @@
13.6 Provide callback for cert verification
13.7 improve configure --with-ssl
13.8 Support DANE
- 13.9 Configurable loading of OpenSSL configuration file
13.10 Support Authority Information Access certificate extension (AIA)
13.11 Support intermediate & root pinning for PINNEDPUBLICKEY
13.12 Support HSTS
- 13.13 Support HPKP
13.14 Support the clienthello extension
14. GnuTLS
- 14.1 SSL engine stuff
14.2 check connection
15. WinSSL/SChannel
@@ -138,7 +122,6 @@
17. SSH protocols
17.1 Multiplexing
- 17.2 SFTP performance
17.3 Support better than MD5 hostkey hash
17.4 Support CURLOPT_PREQUOTE
@@ -146,16 +129,12 @@
18.1 sync
18.2 glob posts
18.3 prevent file overwriting
- 18.4 simultaneous parallel transfers
18.5 UTF-8 filenames in Content-Disposition
- 18.6 warning when setting an option
18.7 at least N milliseconds between requests
18.9 Choose the name of file in braces for complex URLs
18.10 improve how curl works in a windows console window
18.11 Windows: set attribute 'archive' for completed downloads
18.12 keep running, read instructions from pipe/socket
- 18.13 support metalink in http headers
- 18.14 --fail without --location should treat 3xx as a failure
18.15 --retry should resume
18.16 send only part of --data
18.17 consider file name from the redirected URL with -O ?
@@ -202,58 +181,20 @@
See https://github.com/curl/curl/pull/3378
-1.2 More data sharing
-
- curl_share_* functions already exist and work, and they can be extended to
- share more. For example, enable sharing of the ares channel.
-
1.3 struct lifreq
Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
To support IPv6 interface addresses for network interfaces properly.
-1.4 signal-based resolver timeouts
-
- libcurl built without an asynchronous resolver library uses alarm() to time
- out DNS lookups. When a timeout occurs, this causes libcurl to jump from the
- signal handler back into the library with a sigsetjmp, which effectively
- causes libcurl to continue running within the signal handler. This is
- non-portable and could cause problems on some platforms. A discussion on the
- problem is available at https://curl.haxx.se/mail/lib-2008-09/0197.html
-
- Also, alarm() provides timeout resolution only to the nearest second. alarm
- ought to be replaced by setitimer on systems that support it.
-
1.5 get rid of PATH_MAX
Having code use and rely on PATH_MAX is not nice:
https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html
- Currently the SSH based code uses it a bit, but to remove PATH_MAX from there
- we need libssh2 to properly tell us when we pass in a too small buffer and
- its current API (as of libssh2 1.2.7) doesn't.
-
-1.6 Modified buffer size approach
-
- Current libcurl allocates a fixed 16K size buffer for download and an
- additional 16K for upload. They are always unconditionally part of the easy
- handle. If CRLF translations are requested, an additional 32K "scratch
- buffer" is allocated. A total of 64K transfer buffers in the worst case.
-
- First, while the handles are not actually in use these buffers could be freed
- so that lingering handles just kept in queues or whatever waste less memory.
-
- Secondly, SFTP is a protocol that needs to handle many ~30K blocks at once
- since each need to be individually acked and therefore libssh2 must be
- allowed to send (or receive) many separate ones in parallel to achieve high
- transfer speeds. A current libcurl build with a 16K buffer makes that
- impossible, but one with a 512K buffer will reach MUCH faster transfers. But
- allocating 512K unconditionally for all buffers just in case they would like
- to do fast SFTP transfers at some point is not a good solution either.
-
- Dynamically allocate buffer size depending on protocol in use in combination
- with freeing it after each individual transfer? Other suggestions?
+ Currently the libssh2 SSH based code uses it, but to remove PATH_MAX from
+ there we need libssh2 to properly tell us when we pass in a too small buffer
+ and its current API (as of libssh2 1.2.7) doesn't.
1.7 Support HTTP/2 for HTTP(S) proxies
@@ -377,12 +318,6 @@
Offer support for resolving SRV and URI DNS records for libcurl to know which
server to connect to for various protocols (including HTTP!).
-1.21 Have the URL API offer IDN decoding
-
- Similar to how URL decoding/encoding is done, we could have URL functions to
- convert IDN host names to punycode (probably not the reverse).
- https://github.com/curl/curl/issues/3232
-
1.22 CURLINFO_PAUSE_STATE
Return information about the transfer's current pause state, in both
@@ -407,21 +342,6 @@
https://github.com/curl/curl/issues/2126
-1.26 CURL_REFUSE_CLEARTEXT
-
- An environment variable that when set will make libcurl refuse to use any
- cleartext network protocol. That's all non-encrypted ones (FTP, HTTP, Gopher,
- etc). By adding the check to libcurl and not just curl, this environment
- variable can then help users to block all libcurl-using programs from
- accessing the network using unsafe protocols.
-
- The variable could be given some sort of syntax or different levels and be
- used to also allow for example users to refuse libcurl to do transfers with
- HTTPS certificate checks disabled.
-
- It could also automatically refuse usernames in URLs when set
- (see CURLOPT_DISALLOW_USERNAME_IN_URL)
-
1.27 hardcode the "localhost" addresses
There's this new spec getting adopted that says "localhost" should always and
@@ -539,12 +459,6 @@
Make the detection of (bad) %0d and %0a codes in FTP URL parts earlier in the
process to avoid doing a resolve and connect in vain.
-4.4 REST for large files
-
- REST fix for servers not behaving well on >2GB requests. This should fail if
- the server doesn't set the pointer to the requested index. The tricky
- (impossible?) part is to figure out if the server did the right thing or not.
-
4.5 ASCII support
FTP ASCII transfers do not follow RFC959. They don't convert the data
@@ -577,12 +491,6 @@
"Better" support for persistent connections over HTTP 1.0
https://curl.haxx.se/bug/feature.cgi?id=1089001
-5.2 support FF3 sqlite cookie files
-
- Firefox 3 is changing from its former format to a a sqlite database instead.
- We should consider how (lib)curl can/should support this.
- https://curl.haxx.se/bug/feature.cgi?id=1871388
-
5.3 Rearrange request header order
Server implementors often make an effort to detect browser and to reject
@@ -611,36 +519,19 @@
For example:
- http://test:pass;auth=NTLM@example.com would be equivalent to specifying --user
- test:pass;auth=NTLM or --user test:pass --ntlm from the command line.
+ http://test:pass;auth=NTLM@example.com would be equivalent to specifying
+ --user test:pass;auth=NTLM or --user test:pass --ntlm from the command line.
Additionally this should be implemented for proxy base URLs as well.
-5.6 Refuse "downgrade" redirects
-
- See https://github.com/curl/curl/issues/226
-
- Consider a way to tell curl to refuse to "downgrade" protocol with a redirect
- and/or possibly a bit that refuses redirect to change protocol completely.
-
-5.7 QUIC
-
- The standardization process of QUIC has been taken to the IETF and can be
- followed on the [IETF QUIC Mailing
- list](https://www.ietf.org/mailman/listinfo/quic). I'd like us to get on the
- bandwagon. Ideally, this would be done with a separate library/project to
- handle the binary/framing layer in a similar fashion to how HTTP/2 is
- implemented. This, to allow other projects to benefit from the work and to
- thus broaden the interest and chance of others to participate.
-
6. TELNET
6.1 ditch stdin
-Reading input (to send to the remote server) on stdin is a crappy solution for
-library purposes. We need to invent a good way for the application to be able
-to provide the data to send.
+ Reading input (to send to the remote server) on stdin is a crappy solution
+ for library purposes. We need to invent a good way for the application to be
+ able to provide the data to send.
6.2 ditch telnet-specific select
@@ -650,15 +541,11 @@ to provide the data to send.
6.3 feature negotiation debug data
- Add telnet feature negotiation data to the debug callback as header data.
+ Add telnet feature negotiation data to the debug callback as header data.
7. SMTP
-7.1 Pipelining
-
- Add support for pipelining emails.
-
7.2 Enhanced capability support
Add the ability, for an application that uses libcurl, to obtain the list of
@@ -677,10 +564,6 @@ to provide the data to send.
8. POP3
-8.1 Pipelining
-
- Add support for pipelining commands.
-
8.2 Enhanced capability support
Add the ability, for an application that uses libcurl, to obtain the list of
@@ -725,18 +608,8 @@ that doesn't exist on the server, just like --ftp-create-dirs.
12. New protocols
-12.1 RSYNC
-
- There's no RFC for the protocol or an URI/URL format. An implementation
- should most probably use an existing rsync library, such as librsync.
-
13. SSL
-13.1 Disable specific versions
-
- Provide an option that allows for disabling specific SSL versions, such as
- SSLv2 https://curl.haxx.se/bug/feature.cgi?id=1767276
-
13.2 Provide mutex locking API
Provide a libcurl API for setting mutex callbacks in the underlying SSL
@@ -801,17 +674,6 @@ that doesn't exist on the server, just like --ftp-create-dirs.
Björn Stenberg wrote a separate initial take on DANE that was never
completed.
-13.9 Configurable loading of OpenSSL configuration file
-
- libcurl calls the OpenSSL function CONF_modules_load_file() in openssl.c,
- Curl_ossl_init(). "We regard any changes in the OpenSSL configuration as a
- security risk or at least as unnecessary."
-
- Please add a configuration switch or something similar to disable the
- CONF_modules_load_file() call.
-
- See https://github.com/curl/curl/issues/2724
-
13.10 Support Authority Information Access certificate extension (AIA)
AIA can provide various things like CRLs but more importantly information
@@ -844,21 +706,6 @@ that doesn't exist on the server, just like --ftp-create-dirs.
Doc: https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security
RFC 6797: https://tools.ietf.org/html/rfc6797
-13.13 Support HPKP
-
- "HTTP Public Key Pinning" is TOFU (trust on first use), time-based
- features indicated by a HTTP header send by the webserver. It's purpose is
- to prevent Man-in-the-middle attacks by trusted CAs by allowing webadmins
- to specify which CAs/certificates/public keys to trust when connection to
- their websites.
-
- It can be build based on PINNEDPUBLICKEY.
-
- Wikipedia: https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning
- OWASP: https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning
- Doc: https://developer.mozilla.org/de/docs/Web/Security/Public_Key_Pinning
- RFC: https://tools.ietf.org/html/draft-ietf-websec-key-pinning-21
-
13.14 Support the clienthello extension
Certain stupid networks and middle boxes have a problem with SSL handshake
@@ -871,10 +718,6 @@ that doesn't exist on the server, just like --ftp-create-dirs.
14. GnuTLS
-14.1 SSL engine stuff
-
- Is this even possible?
-
14.2 check connection
Add a way to check if the connection seems to be alive, to correspond to the
@@ -949,11 +792,6 @@ that doesn't exist on the server, just like --ftp-create-dirs.
To fix this, libcurl would have to detect an existing connection and "attach"
the new transfer to the existing one.
-17.2 SFTP performance
-
- libcurl's SFTP transfer performance is sub par and can be improved, mostly by
- the approach mentioned in "1.6 Modified buffer size approach".
-
17.3 Support better than MD5 hostkey hash
libcurl offers the CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 option for verifying the
@@ -992,16 +830,6 @@ that doesn't exist on the server, just like --ftp-create-dirs.
existing). So that index.html becomes first index.html.1 and then
index.html.2 etc.
-18.4 simultaneous parallel transfers
-
- The client could be told to use maximum N simultaneous parallel transfers and
- then just make sure that happens. It should of course not make more than one
- connection to the same remote host. This would require the client to use the
- multi interface. https://curl.haxx.se/bug/feature.cgi?id=1558595
-
- Using the multi interface would also allow properly using parallel transfers
- with HTTP/2 and supporting HTTP/2 server push from the command line.
-
18.5 UTF-8 filenames in Content-Disposition
RFC 6266 documents how UTF-8 names can be passed to a client in the
@@ -1009,12 +837,6 @@ that doesn't exist on the server, just like --ftp-create-dirs.
https://github.com/curl/curl/issues/1888
-18.6 warning when setting an option
-
- Display a warning when libcurl returns an error when setting an option.
- This can be useful to tell when support for a particular feature hasn't been
- compiled into the library.
-
18.7 at least N milliseconds between requests
Allow curl command lines issue a lot of request against services that limit
@@ -1063,30 +885,6 @@ that doesn't exist on the server, just like --ftp-create-dirs.
invoke can talk to the still running instance and ask for transfers to get
done, and thus maintain its connection pool, DNS cache and more.
-18.13 support metalink in http headers
-
- Curl has support for downloading a metalink xml file, processing it, and then
- downloading the target of the metalink. This is done via the --metalink option.
- It would be nice if metalink also supported downloading via metalink
- information that is stored in HTTP headers (RFC 6249). Theoretically this could
- also be supported with the --metalink option.
-
- See https://tools.ietf.org/html/rfc6249
-
- See also https://lists.gnu.org/archive/html/bug-wget/2015-06/msg00034.html for
- an implematation of this in wget.
-
-18.14 --fail without --location should treat 3xx as a failure
-
- To allow a command line like this to detect a redirect and consider it a
- failure:
-
- curl -v --fail -O https://example.com/curl-7.48.0.tar.gz
-
- ... --fail must treat 3xx responses as failures too. The least problematic
- way to implement this is probably to add that new logic in the command line
- tool only and not in the underlying CURLOPT_FAILONERROR logic.
-
18.15 --retry should resume
When --retry is used and curl actually retries transfer, it should use the
@@ -1202,17 +1000,17 @@ that doesn't exist on the server, just like --ftp-create-dirs.
20.5 Add support for concurrent connections
- Tests 836, 882 and 938 were designed to verify that separate connections aren't
- used when using different login credentials in protocols that shouldn't re-use
- a connection under such circumstances.
+ Tests 836, 882 and 938 were designed to verify that separate connections
+ aren't used when using different login credentials in protocols that
+ shouldn't re-use a connection under such circumstances.
Unfortunately, ftpserver.pl doesn't appear to support multiple concurrent
- connections. The read while() loop seems to loop until it receives a disconnect
- from the client, where it then enters the waiting for connections loop. When
- the client opens a second connection to the server, the first connection hasn't
- been dropped (unless it has been forced - which we shouldn't do in these tests)
- and thus the wait for connections loop is never entered to receive the second
- connection.
+ connections. The read while() loop seems to loop until it receives a
+ disconnect from the client, where it then enters the waiting for connections
+ loop. When the client opens a second connection to the server, the first
+ connection hasn't been dropped (unless it has been forced - which we
+ shouldn't do in these tests) and thus the wait for connections loop is never
+ entered to receive the second connection.
20.6 Use the RFC6265 test suite
diff --git a/docs/cmdline-opts/Makefile.in b/docs/cmdline-opts/Makefile.in
index 3fc3870c..cca1fa44 100644
--- a/docs/cmdline-opts/Makefile.in
+++ b/docs/cmdline-opts/Makefile.in
@@ -295,8 +295,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -428,6 +432,7 @@ DPAGES = \
http1.0.d \
http1.1.d http2.d \
http2-prior-knowledge.d \
+ http3.d \
ignore-content-length.d \
include.d \
insecure.d \
@@ -463,7 +468,10 @@ DPAGES = \
noproxy.d \
ntlm.d ntlm-wb.d \
oauth2-bearer.d \
- output.d pass.d \
+ output.d \
+ pass.d \
+ parallel.d \
+ parallel-max.d \
path-as-is.d \
pinnedpubkey.d \
post301.d \
@@ -517,6 +525,7 @@ DPAGES = \
retry-delay.d \
retry-max-time.d \
retry.d \
+ sasl-authzid.d \
sasl-ir.d \
service-name.d \
show-error.d \
diff --git a/docs/cmdline-opts/Makefile.inc b/docs/cmdline-opts/Makefile.inc
index 7a8af6f9..6b438747 100644
--- a/docs/cmdline-opts/Makefile.inc
+++ b/docs/cmdline-opts/Makefile.inc
@@ -65,6 +65,7 @@ DPAGES = \
http1.0.d \
http1.1.d http2.d \
http2-prior-knowledge.d \
+ http3.d \
ignore-content-length.d \
include.d \
insecure.d \
@@ -100,7 +101,10 @@ DPAGES = \
noproxy.d \
ntlm.d ntlm-wb.d \
oauth2-bearer.d \
- output.d pass.d \
+ output.d \
+ pass.d \
+ parallel.d \
+ parallel-max.d \
path-as-is.d \
pinnedpubkey.d \
post301.d \
@@ -154,6 +158,7 @@ DPAGES = \
retry-delay.d \
retry-max-time.d \
retry.d \
+ sasl-authzid.d \
sasl-ir.d \
service-name.d \
show-error.d \
diff --git a/docs/cmdline-opts/config.d b/docs/cmdline-opts/config.d
index ef9894b8..df3d3922 100644
--- a/docs/cmdline-opts/config.d
+++ b/docs/cmdline-opts/config.d
@@ -40,7 +40,7 @@ Unix-like systems (which returns the home dir given the current user in your
system). On Windows, it then checks for the APPDATA variable, or as a last
resort the '%USERPROFILE%\\Application Data'.
-2) On windows, if there is no _curlrc file in the home dir, it checks for one
+2) On windows, if there is no .curlrc file in the home dir, it checks for one
in the same dir the curl executable is placed. On Unix-like systems, it will
simply try to load .curlrc from the determined home dir.
diff --git a/docs/cmdline-opts/http0.9.d b/docs/cmdline-opts/http0.9.d
index 33fe72d1..7e783f69 100644
--- a/docs/cmdline-opts/http0.9.d
+++ b/docs/cmdline-opts/http0.9.d
@@ -10,5 +10,4 @@ HTTP/0.9 is a completely headerless response and therefore you can also
connect with this to non-HTTP servers and still get a response since curl will
simply transparently downgrade - if allowed.
-A future curl version will deny continuing if the response isn't at least
-HTTP/1.0 unless this option is used.
+Since curl 7.66.0, HTTP/0.9 is disabled by default.
diff --git a/docs/cmdline-opts/http2.d b/docs/cmdline-opts/http2.d
index 04cff00a..cf8f2988 100644
--- a/docs/cmdline-opts/http2.d
+++ b/docs/cmdline-opts/http2.d
@@ -6,5 +6,6 @@ Mutexed: http1.1 http1.0 http2-prior-knowledge
Requires: HTTP/2
See-also: no-alpn
Help: Use HTTP 2
+See-also: http1.1 http3
---
Tells curl to use HTTP version 2.
diff --git a/docs/cmdline-opts/http3.d b/docs/cmdline-opts/http3.d
new file mode 100644
index 00000000..ca85e3a6
--- /dev/null
+++ b/docs/cmdline-opts/http3.d
@@ -0,0 +1,19 @@
+Long: http3
+Tags: Versions
+Protocols: HTTP
+Added: 7.66.0
+Mutexed: http1.1 http1.0 http2 http2-prior-knowledge
+Requires: HTTP/3
+Help: Use HTTP v3
+See-also: http1.1 http2
+---
+
+WARNING: this option is experiemental. Do not use in production.
+
+Tells curl to use HTTP version 3 directly to the host and port number used in
+the URL. A normal HTTP/3 transaction will be done to a host and then get
+redirected via Alt-SVc, but this option allows a user to circumvent that when
+you know that the target speaks HTTP/3 on the given host and port.
+
+This option will make curl fail if a QUIC connection cannot be established, it
+cannot fall back to a lower HTTP version on its own.
diff --git a/docs/cmdline-opts/parallel-max.d b/docs/cmdline-opts/parallel-max.d
new file mode 100644
index 00000000..a8c79c74
--- /dev/null
+++ b/docs/cmdline-opts/parallel-max.d
@@ -0,0 +1,9 @@
+Long: parallel-max
+Help: Maximum concurrency for parallel transfers
+Added: 7.66.0
+See-also: parallel
+---
+When asked to do parallel transfers, using --parallel, this option controls
+the maximum amount of transfers to do simultaneously.
+
+The default is 50.
diff --git a/docs/cmdline-opts/parallel.d b/docs/cmdline-opts/parallel.d
new file mode 100644
index 00000000..fac84e62
--- /dev/null
+++ b/docs/cmdline-opts/parallel.d
@@ -0,0 +1,7 @@
+Short: Z
+Long: parallel
+Help: Perform transfers in parallel
+Added: 7.66.0
+---
+Makes curl perform its transfers in parallel as compared to the regular serial
+manner.
diff --git a/docs/cmdline-opts/retry.d b/docs/cmdline-opts/retry.d
index 32d1c799..3db89b71 100644
--- a/docs/cmdline-opts/retry.d
+++ b/docs/cmdline-opts/retry.d
@@ -14,4 +14,7 @@ for all forthcoming retries it will double the waiting time until it reaches
using --retry-delay you disable this exponential backoff algorithm. See also
--retry-max-time to limit the total time allowed for retries.
+Since curl 7.66.0, curl will comply with the Retry-After: response header if
+one was present to know when to issue the next retry.
+
If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/sasl-authzid.d b/docs/cmdline-opts/sasl-authzid.d
new file mode 100644
index 00000000..b34db97f
--- /dev/null
+++ b/docs/cmdline-opts/sasl-authzid.d
@@ -0,0 +1,11 @@
+Long: sasl-authzid
+Help: Use this identity to act as during SASL PLAIN authentication
+Added: 7.66.0
+---
+Use this authorisation identity (authzid), during SASL PLAIN authentication,
+in addition to the authentication identity (authcid) as specified by --user.
+
+If the option isn't specified, the server will derive the authzid from the
+authcid, but if specified, and depending on the server implementation, it may
+be used to access another user's inbox, that the user has been granted access
+to, or a shared mailbox for example.
diff --git a/docs/curl-config.1 b/docs/curl-config.1
index 20bea1e9..2afc98f8 100644
--- a/docs/curl-config.1
+++ b/docs/curl-config.1
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl-config 1 "November 30, 2017" "Curl 7.65.3" "curl-config manual"
+.TH curl-config 1 "November 30, 2017" "Curl 7.66.0" "curl-config manual"
.SH NAME
curl-config \- Get information about a libcurl installation
diff --git a/docs/curl.1 b/docs/curl.1
index f7226376..37e794a2 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -22,7 +22,7 @@
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
-.TH curl 1 "November 16, 2016" "Curl 7.65.3" "Curl Manual"
+.TH curl 1 "November 16, 2016" "Curl 7.66.0" "Curl Manual"
.SH NAME
curl \- transfer a URL
@@ -346,7 +346,7 @@ Unix-like systems (which returns the home dir given the current user in your
system). On Windows, it then checks for the APPDATA variable, or as a last
resort the '%USERPROFILE%\\Application Data'.
-2) On windows, if there is no _curlrc file in the home dir, it checks for one
+2) On windows, if there is no .curlrc file in the home dir, it checks for one
in the same dir the curl executable is placed. On Unix-like systems, it will
simply try to load .curlrc from the determined home dir.
@@ -1062,8 +1062,7 @@ HTTP/0.9 is a completely headerless response and therefore you can also
connect with this to non-HTTP servers and still get a response since curl will
simply transparently downgrade - if allowed.
-A future curl version will deny continuing if the response isn't at least
-HTTP/1.0 unless this option is used.
+Since curl 7.66.0, HTTP/0.9 is disabled by default.
.IP "-0, --http1.0"
(HTTP) Tells curl to use HTTP version 1.0 instead of using its internally preferred
HTTP version.
@@ -1083,7 +1082,20 @@ protocol version in the TLS handshake.
.IP "--http2"
(HTTP) Tells curl to use HTTP version 2.
-See also \fI--no-alpn\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
+See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
+.IP "--http3"
+(HTTP)
+WARNING: this option is experiemental. Do not use in production.
+
+Tells curl to use HTTP version 3 directly to the host and port number used in
+the URL. A normal HTTP/3 transaction will be done to a host and then get
+redirected via Alt-SVc, but this option allows a user to circumvent that when
+you know that the target speaks HTTP/3 on the given host and port.
+
+This option will make curl fail if a QUIC connection cannot be established, it
+cannot fall back to a lower HTTP version on its own.
+
+See also \fI--http1.1\fP and \fI--http2\fP. \fI--http3\fP requires that the underlying libcurl was built to support HTTP/3. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP. Added in 7.66.0.
.IP "--ignore-content-length"
(FTP HTTP) For HTTP, Ignore the Content-Length header. This is particularly useful for
servers running Apache 1.x, which will report incorrect Content-Length for
@@ -1513,6 +1525,18 @@ dynamically. Specifying the output as '-' (a single dash) will force the
output to be done to stdout.
See also \fI-O, --remote-name\fP and \fI--remote-name-all\fP and \fI-J, --remote-header-name\fP.
+.IP "--parallel-max"
+When asked to do parallel transfers, using \fI-Z, --parallel\fP, this option controls
+the maximum amount of transfers to do simultaneously.
+
+The default is 50.
+
+See also \fI-Z, --parallel\fP. Added in 7.66.0.
+.IP "-Z, --parallel"
+Makes curl perform its transfers in parallel as compared to the regular serial
+manner.
+
+Added in 7.66.0.
.IP "--pass <phrase>"
(SSH TLS) Passphrase for the private key
@@ -2139,9 +2163,22 @@ for all forthcoming retries it will double the waiting time until it reaches
using \fI--retry-delay\fP you disable this exponential backoff algorithm. See also
\fI--retry-max-time\fP to limit the total time allowed for retries.
+Since curl 7.66.0, curl will comply with the Retry-After: response header if
+one was present to know when to issue the next retry.
+
If this option is used several times, the last one will be used.
Added in 7.12.3.
+.IP "--sasl-authzid"
+Use this authorisation identity (authzid), during SASL PLAIN authentication,
+in addition to the authentication identity (authcid) as specified by \fI-u, --user\fP.
+
+If the option isn't specified, the server will derive the authzid from the
+authcid, but if specified, and depending on the server implementation, it may
+be used to access another user's inbox, that the user has been granted access
+to, or a shared mailbox for example.
+
+Added in 7.66.0.
.IP "--sasl-ir"
Enable initial response in SASL authentication.
diff --git a/docs/examples/Makefile.in b/docs/examples/Makefile.in
index c9812d87..6b75c711 100644
--- a/docs/examples/Makefile.in
+++ b/docs/examples/Makefile.in
@@ -43,7 +43,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -163,7 +163,9 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) anyauthput$(EXEEXT) \
sslbackend$(EXEEXT) postit2-formadd$(EXEEXT) \
multi-formadd$(EXEEXT) shared-connection-cache$(EXEEXT) \
sftpuploadresume$(EXEEXT) http2-pushinmemory$(EXEEXT) \
- parseurl$(EXEEXT) urlapi$(EXEEXT)
+ parseurl$(EXEEXT) urlapi$(EXEEXT) imap-authzid$(EXEEXT) \
+ pop3-authzid$(EXEEXT) smtp-authzid$(EXEEXT) http3$(EXEEXT) \
+ altsvc$(EXEEXT) http3-present$(EXEEXT)
subdir = docs/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
@@ -202,6 +204,13 @@ AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
+altsvc_SOURCES = altsvc.c
+altsvc_OBJECTS = altsvc.$(OBJEXT)
+altsvc_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@altsvc_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@altsvc_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
anyauthput_SOURCES = anyauthput.c
anyauthput_OBJECTS = anyauthput.$(OBJEXT)
anyauthput_LDADD = $(LDADD)
@@ -368,6 +377,19 @@ http2_upload_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@http2_upload_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+http3_SOURCES = http3.c
+http3_OBJECTS = http3.$(OBJEXT)
+http3_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http3_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http3_DEPENDENCIES = $(LIBDIR)/libcurl.la
+http3_present_SOURCES = http3-present.c
+http3_present_OBJECTS = http3-present.$(OBJEXT)
+http3_present_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@http3_present_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@http3_present_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
httpcustomheader_SOURCES = httpcustomheader.c
httpcustomheader_OBJECTS = httpcustomheader.$(OBJEXT)
httpcustomheader_LDADD = $(LDADD)
@@ -395,6 +417,13 @@ imap_append_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@imap_append_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+imap_authzid_SOURCES = imap-authzid.c
+imap_authzid_OBJECTS = imap-authzid.$(OBJEXT)
+imap_authzid_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@imap_authzid_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@imap_authzid_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
imap_copy_SOURCES = imap-copy.c
imap_copy_OBJECTS = imap-copy.$(OBJEXT)
imap_copy_LDADD = $(LDADD)
@@ -542,6 +571,13 @@ persistent_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@persistent_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+pop3_authzid_SOURCES = pop3-authzid.c
+pop3_authzid_OBJECTS = pop3-authzid.$(OBJEXT)
+pop3_authzid_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@pop3_authzid_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@pop3_authzid_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
pop3_dele_SOURCES = pop3-dele.c
pop3_dele_OBJECTS = pop3-dele.$(OBJEXT)
pop3_dele_LDADD = $(LDADD)
@@ -715,6 +751,13 @@ simplessl_LDADD = $(LDADD)
@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
@USE_EXPLICIT_LIB_DEPS_TRUE@simplessl_DEPENDENCIES = \
@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
+smtp_authzid_SOURCES = smtp-authzid.c
+smtp_authzid_OBJECTS = smtp-authzid.$(OBJEXT)
+smtp_authzid_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@smtp_authzid_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@smtp_authzid_DEPENDENCIES = \
+@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la
smtp_expn_SOURCES = smtp-expn.c
smtp_expn_OBJECTS = smtp-expn.$(OBJEXT)
smtp_expn_LDADD = $(LDADD)
@@ -801,32 +844,34 @@ DEFAULT_INCLUDES =
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
- ./$(DEPDIR)/anyauthput.Po ./$(DEPDIR)/certinfo.Po \
- ./$(DEPDIR)/chkspeed.Po ./$(DEPDIR)/cookie_interface.Po \
- ./$(DEPDIR)/debug.Po ./$(DEPDIR)/externalsocket.Po \
- ./$(DEPDIR)/fileupload.Po ./$(DEPDIR)/fopen.Po \
- ./$(DEPDIR)/ftp-wildcard.Po ./$(DEPDIR)/ftpget.Po \
- ./$(DEPDIR)/ftpgetinfo.Po ./$(DEPDIR)/ftpgetresp.Po \
- ./$(DEPDIR)/ftpsget.Po ./$(DEPDIR)/ftpupload.Po \
- ./$(DEPDIR)/ftpuploadfrommem.Po ./$(DEPDIR)/ftpuploadresume.Po \
- ./$(DEPDIR)/getinfo.Po ./$(DEPDIR)/getinmemory.Po \
- ./$(DEPDIR)/getredirect.Po ./$(DEPDIR)/http-post.Po \
- ./$(DEPDIR)/http2-download.Po \
+ ./$(DEPDIR)/altsvc.Po ./$(DEPDIR)/anyauthput.Po \
+ ./$(DEPDIR)/certinfo.Po ./$(DEPDIR)/chkspeed.Po \
+ ./$(DEPDIR)/cookie_interface.Po ./$(DEPDIR)/debug.Po \
+ ./$(DEPDIR)/externalsocket.Po ./$(DEPDIR)/fileupload.Po \
+ ./$(DEPDIR)/fopen.Po ./$(DEPDIR)/ftp-wildcard.Po \
+ ./$(DEPDIR)/ftpget.Po ./$(DEPDIR)/ftpgetinfo.Po \
+ ./$(DEPDIR)/ftpgetresp.Po ./$(DEPDIR)/ftpsget.Po \
+ ./$(DEPDIR)/ftpupload.Po ./$(DEPDIR)/ftpuploadfrommem.Po \
+ ./$(DEPDIR)/ftpuploadresume.Po ./$(DEPDIR)/getinfo.Po \
+ ./$(DEPDIR)/getinmemory.Po ./$(DEPDIR)/getredirect.Po \
+ ./$(DEPDIR)/http-post.Po ./$(DEPDIR)/http2-download.Po \
./$(DEPDIR)/http2-pushinmemory.Po \
./$(DEPDIR)/http2-serverpush.Po ./$(DEPDIR)/http2-upload.Po \
+ ./$(DEPDIR)/http3-present.Po ./$(DEPDIR)/http3.Po \
./$(DEPDIR)/httpcustomheader.Po ./$(DEPDIR)/httpput.Po \
./$(DEPDIR)/https.Po ./$(DEPDIR)/imap-append.Po \
- ./$(DEPDIR)/imap-copy.Po ./$(DEPDIR)/imap-create.Po \
- ./$(DEPDIR)/imap-delete.Po ./$(DEPDIR)/imap-examine.Po \
- ./$(DEPDIR)/imap-fetch.Po ./$(DEPDIR)/imap-list.Po \
- ./$(DEPDIR)/imap-lsub.Po ./$(DEPDIR)/imap-multi.Po \
- ./$(DEPDIR)/imap-noop.Po ./$(DEPDIR)/imap-search.Po \
- ./$(DEPDIR)/imap-ssl.Po ./$(DEPDIR)/imap-store.Po \
- ./$(DEPDIR)/imap-tls.Po ./$(DEPDIR)/multi-app.Po \
- ./$(DEPDIR)/multi-debugcallback.Po ./$(DEPDIR)/multi-double.Po \
- ./$(DEPDIR)/multi-formadd.Po ./$(DEPDIR)/multi-post.Po \
- ./$(DEPDIR)/multi-single.Po ./$(DEPDIR)/parseurl.Po \
- ./$(DEPDIR)/persistent.Po ./$(DEPDIR)/pop3-dele.Po \
+ ./$(DEPDIR)/imap-authzid.Po ./$(DEPDIR)/imap-copy.Po \
+ ./$(DEPDIR)/imap-create.Po ./$(DEPDIR)/imap-delete.Po \
+ ./$(DEPDIR)/imap-examine.Po ./$(DEPDIR)/imap-fetch.Po \
+ ./$(DEPDIR)/imap-list.Po ./$(DEPDIR)/imap-lsub.Po \
+ ./$(DEPDIR)/imap-multi.Po ./$(DEPDIR)/imap-noop.Po \
+ ./$(DEPDIR)/imap-search.Po ./$(DEPDIR)/imap-ssl.Po \
+ ./$(DEPDIR)/imap-store.Po ./$(DEPDIR)/imap-tls.Po \
+ ./$(DEPDIR)/multi-app.Po ./$(DEPDIR)/multi-debugcallback.Po \
+ ./$(DEPDIR)/multi-double.Po ./$(DEPDIR)/multi-formadd.Po \
+ ./$(DEPDIR)/multi-post.Po ./$(DEPDIR)/multi-single.Po \
+ ./$(DEPDIR)/parseurl.Po ./$(DEPDIR)/persistent.Po \
+ ./$(DEPDIR)/pop3-authzid.Po ./$(DEPDIR)/pop3-dele.Po \
./$(DEPDIR)/pop3-list.Po ./$(DEPDIR)/pop3-multi.Po \
./$(DEPDIR)/pop3-noop.Po ./$(DEPDIR)/pop3-retr.Po \
./$(DEPDIR)/pop3-ssl.Po ./$(DEPDIR)/pop3-stat.Po \
@@ -839,11 +884,12 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
./$(DEPDIR)/sftpget.Po ./$(DEPDIR)/sftpuploadresume.Po \
./$(DEPDIR)/shared-connection-cache.Po ./$(DEPDIR)/simple.Po \
./$(DEPDIR)/simplepost.Po ./$(DEPDIR)/simplessl.Po \
- ./$(DEPDIR)/smtp-expn.Po ./$(DEPDIR)/smtp-mail.Po \
- ./$(DEPDIR)/smtp-mime.Po ./$(DEPDIR)/smtp-multi.Po \
- ./$(DEPDIR)/smtp-ssl.Po ./$(DEPDIR)/smtp-tls.Po \
- ./$(DEPDIR)/smtp-vrfy.Po ./$(DEPDIR)/sslbackend.Po \
- ./$(DEPDIR)/url2file.Po ./$(DEPDIR)/urlapi.Po
+ ./$(DEPDIR)/smtp-authzid.Po ./$(DEPDIR)/smtp-expn.Po \
+ ./$(DEPDIR)/smtp-mail.Po ./$(DEPDIR)/smtp-mime.Po \
+ ./$(DEPDIR)/smtp-multi.Po ./$(DEPDIR)/smtp-ssl.Po \
+ ./$(DEPDIR)/smtp-tls.Po ./$(DEPDIR)/smtp-vrfy.Po \
+ ./$(DEPDIR)/sslbackend.Po ./$(DEPDIR)/url2file.Po \
+ ./$(DEPDIR)/urlapi.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -863,46 +909,50 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
+SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c chkspeed.c \
cookie_interface.c debug.c externalsocket.c fileupload.c \
fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
getinfo.c getinmemory.c getredirect.c http-post.c \
http2-download.c http2-pushinmemory.c http2-serverpush.c \
- http2-upload.c httpcustomheader.c httpput.c https.c \
- imap-append.c imap-copy.c imap-create.c imap-delete.c \
- imap-examine.c imap-fetch.c imap-list.c imap-lsub.c \
- imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c \
- imap-tls.c multi-app.c multi-debugcallback.c multi-double.c \
- multi-formadd.c multi-post.c multi-single.c parseurl.c \
- persistent.c pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c \
- pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c \
- pop3-uidl.c post-callback.c postinmemory.c postit2.c \
- postit2-formadd.c progressfunc.c resolve.c rtsp.c sendrecv.c \
- sepheaders.c sftpget.c sftpuploadresume.c \
+ http2-upload.c http3.c http3-present.c httpcustomheader.c \
+ httpput.c https.c imap-append.c imap-authzid.c imap-copy.c \
+ imap-create.c imap-delete.c imap-examine.c imap-fetch.c \
+ imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c \
+ imap-ssl.c imap-store.c imap-tls.c multi-app.c \
+ multi-debugcallback.c multi-double.c multi-formadd.c \
+ multi-post.c multi-single.c parseurl.c persistent.c \
+ pop3-authzid.c pop3-dele.c pop3-list.c pop3-multi.c \
+ pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c \
+ pop3-top.c pop3-uidl.c post-callback.c postinmemory.c \
+ postit2.c postit2-formadd.c progressfunc.c resolve.c rtsp.c \
+ sendrecv.c sepheaders.c sftpget.c sftpuploadresume.c \
shared-connection-cache.c simple.c simplepost.c simplessl.c \
- smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c \
- smtp-tls.c smtp-vrfy.c sslbackend.c url2file.c urlapi.c
-DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \
- cookie_interface.c debug.c externalsocket.c fileupload.c \
- fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c \
- ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c \
- getinfo.c getinmemory.c getredirect.c http-post.c \
- http2-download.c http2-pushinmemory.c http2-serverpush.c \
- http2-upload.c httpcustomheader.c httpput.c https.c \
- imap-append.c imap-copy.c imap-create.c imap-delete.c \
+ smtp-authzid.c smtp-expn.c smtp-mail.c smtp-mime.c \
+ smtp-multi.c smtp-ssl.c smtp-tls.c smtp-vrfy.c sslbackend.c \
+ url2file.c urlapi.c
+DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \
+ chkspeed.c cookie_interface.c debug.c externalsocket.c \
+ fileupload.c fopen.c ftp-wildcard.c ftpget.c ftpgetinfo.c \
+ ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c \
+ ftpuploadresume.c getinfo.c getinmemory.c getredirect.c \
+ http-post.c http2-download.c http2-pushinmemory.c \
+ http2-serverpush.c http2-upload.c http3.c http3-present.c \
+ httpcustomheader.c httpput.c https.c imap-append.c \
+ imap-authzid.c imap-copy.c imap-create.c imap-delete.c \
imap-examine.c imap-fetch.c imap-list.c imap-lsub.c \
imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c \
imap-tls.c multi-app.c multi-debugcallback.c multi-double.c \
multi-formadd.c multi-post.c multi-single.c parseurl.c \
- persistent.c pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c \
- pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c \
- pop3-uidl.c post-callback.c postinmemory.c postit2.c \
- postit2-formadd.c progressfunc.c resolve.c rtsp.c sendrecv.c \
- sepheaders.c sftpget.c sftpuploadresume.c \
- shared-connection-cache.c simple.c simplepost.c simplessl.c \
- smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c \
- smtp-tls.c smtp-vrfy.c sslbackend.c url2file.c urlapi.c
+ persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \
+ pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c \
+ pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c \
+ postinmemory.c postit2.c postit2-formadd.c progressfunc.c \
+ resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.c \
+ sftpuploadresume.c shared-connection-cache.c simple.c \
+ simplepost.c simplessl.c smtp-authzid.c smtp-expn.c \
+ smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c \
+ smtp-vrfy.c sslbackend.c url2file.c urlapi.c
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -1067,8 +1117,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -1214,6 +1268,10 @@ clean-checkPROGRAMS:
@rm -f 10-at-a-time$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(10_at_a_time_OBJECTS) $(10_at_a_time_LDADD) $(LIBS)
+altsvc$(EXEEXT): $(altsvc_OBJECTS) $(altsvc_DEPENDENCIES) $(EXTRA_altsvc_DEPENDENCIES)
+ @rm -f altsvc$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(altsvc_OBJECTS) $(altsvc_LDADD) $(LIBS)
+
anyauthput$(EXEEXT): $(anyauthput_OBJECTS) $(anyauthput_DEPENDENCIES) $(EXTRA_anyauthput_DEPENDENCIES)
@rm -f anyauthput$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(anyauthput_OBJECTS) $(anyauthput_LDADD) $(LIBS)
@@ -1310,6 +1368,14 @@ http2-upload$(EXEEXT): $(http2_upload_OBJECTS) $(http2_upload_DEPENDENCIES) $(EX
@rm -f http2-upload$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(http2_upload_OBJECTS) $(http2_upload_LDADD) $(LIBS)
+http3$(EXEEXT): $(http3_OBJECTS) $(http3_DEPENDENCIES) $(EXTRA_http3_DEPENDENCIES)
+ @rm -f http3$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(http3_OBJECTS) $(http3_LDADD) $(LIBS)
+
+http3-present$(EXEEXT): $(http3_present_OBJECTS) $(http3_present_DEPENDENCIES) $(EXTRA_http3_present_DEPENDENCIES)
+ @rm -f http3-present$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(http3_present_OBJECTS) $(http3_present_LDADD) $(LIBS)
+
httpcustomheader$(EXEEXT): $(httpcustomheader_OBJECTS) $(httpcustomheader_DEPENDENCIES) $(EXTRA_httpcustomheader_DEPENDENCIES)
@rm -f httpcustomheader$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(httpcustomheader_OBJECTS) $(httpcustomheader_LDADD) $(LIBS)
@@ -1326,6 +1392,10 @@ imap-append$(EXEEXT): $(imap_append_OBJECTS) $(imap_append_DEPENDENCIES) $(EXTRA
@rm -f imap-append$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(imap_append_OBJECTS) $(imap_append_LDADD) $(LIBS)
+imap-authzid$(EXEEXT): $(imap_authzid_OBJECTS) $(imap_authzid_DEPENDENCIES) $(EXTRA_imap_authzid_DEPENDENCIES)
+ @rm -f imap-authzid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(imap_authzid_OBJECTS) $(imap_authzid_LDADD) $(LIBS)
+
imap-copy$(EXEEXT): $(imap_copy_OBJECTS) $(imap_copy_DEPENDENCIES) $(EXTRA_imap_copy_DEPENDENCIES)
@rm -f imap-copy$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(imap_copy_OBJECTS) $(imap_copy_LDADD) $(LIBS)
@@ -1410,6 +1480,10 @@ persistent$(EXEEXT): $(persistent_OBJECTS) $(persistent_DEPENDENCIES) $(EXTRA_pe
@rm -f persistent$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(persistent_OBJECTS) $(persistent_LDADD) $(LIBS)
+pop3-authzid$(EXEEXT): $(pop3_authzid_OBJECTS) $(pop3_authzid_DEPENDENCIES) $(EXTRA_pop3_authzid_DEPENDENCIES)
+ @rm -f pop3-authzid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(pop3_authzid_OBJECTS) $(pop3_authzid_LDADD) $(LIBS)
+
pop3-dele$(EXEEXT): $(pop3_dele_OBJECTS) $(pop3_dele_DEPENDENCIES) $(EXTRA_pop3_dele_DEPENDENCIES)
@rm -f pop3-dele$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(pop3_dele_OBJECTS) $(pop3_dele_LDADD) $(LIBS)
@@ -1510,6 +1584,10 @@ simplessl$(EXEEXT): $(simplessl_OBJECTS) $(simplessl_DEPENDENCIES) $(EXTRA_simpl
@rm -f simplessl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(simplessl_OBJECTS) $(simplessl_LDADD) $(LIBS)
+smtp-authzid$(EXEEXT): $(smtp_authzid_OBJECTS) $(smtp_authzid_DEPENDENCIES) $(EXTRA_smtp_authzid_DEPENDENCIES)
+ @rm -f smtp-authzid$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(smtp_authzid_OBJECTS) $(smtp_authzid_LDADD) $(LIBS)
+
smtp-expn$(EXEEXT): $(smtp_expn_OBJECTS) $(smtp_expn_DEPENDENCIES) $(EXTRA_smtp_expn_DEPENDENCIES)
@rm -f smtp-expn$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(smtp_expn_OBJECTS) $(smtp_expn_LDADD) $(LIBS)
@@ -1557,6 +1635,7 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/10-at-a-time.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/altsvc.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/anyauthput.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/certinfo.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkspeed.Po@am__quote@ # am--include-marker
@@ -1581,10 +1660,13 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-pushinmemory.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-serverpush.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http2-upload.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http3-present.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http3.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpcustomheader.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpput.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/https.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-append.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-authzid.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-copy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-create.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-delete.Po@am__quote@ # am--include-marker
@@ -1606,6 +1688,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-single.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parseurl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/persistent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-authzid.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-dele.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-list.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pop3-multi.Po@am__quote@ # am--include-marker
@@ -1631,6 +1714,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplepost.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplessl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-authzid.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-expn.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-mail.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-mime.Po@am__quote@ # am--include-marker
@@ -1805,6 +1889,7 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
distclean: distclean-am
-rm -f ./$(DEPDIR)/10-at-a-time.Po
+ -rm -f ./$(DEPDIR)/altsvc.Po
-rm -f ./$(DEPDIR)/anyauthput.Po
-rm -f ./$(DEPDIR)/certinfo.Po
-rm -f ./$(DEPDIR)/chkspeed.Po
@@ -1829,10 +1914,13 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
-rm -f ./$(DEPDIR)/http2-serverpush.Po
-rm -f ./$(DEPDIR)/http2-upload.Po
+ -rm -f ./$(DEPDIR)/http3-present.Po
+ -rm -f ./$(DEPDIR)/http3.Po
-rm -f ./$(DEPDIR)/httpcustomheader.Po
-rm -f ./$(DEPDIR)/httpput.Po
-rm -f ./$(DEPDIR)/https.Po
-rm -f ./$(DEPDIR)/imap-append.Po
+ -rm -f ./$(DEPDIR)/imap-authzid.Po
-rm -f ./$(DEPDIR)/imap-copy.Po
-rm -f ./$(DEPDIR)/imap-create.Po
-rm -f ./$(DEPDIR)/imap-delete.Po
@@ -1854,6 +1942,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/multi-single.Po
-rm -f ./$(DEPDIR)/parseurl.Po
-rm -f ./$(DEPDIR)/persistent.Po
+ -rm -f ./$(DEPDIR)/pop3-authzid.Po
-rm -f ./$(DEPDIR)/pop3-dele.Po
-rm -f ./$(DEPDIR)/pop3-list.Po
-rm -f ./$(DEPDIR)/pop3-multi.Po
@@ -1879,6 +1968,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/simple.Po
-rm -f ./$(DEPDIR)/simplepost.Po
-rm -f ./$(DEPDIR)/simplessl.Po
+ -rm -f ./$(DEPDIR)/smtp-authzid.Po
-rm -f ./$(DEPDIR)/smtp-expn.Po
-rm -f ./$(DEPDIR)/smtp-mail.Po
-rm -f ./$(DEPDIR)/smtp-mime.Po
@@ -1935,6 +2025,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/10-at-a-time.Po
+ -rm -f ./$(DEPDIR)/altsvc.Po
-rm -f ./$(DEPDIR)/anyauthput.Po
-rm -f ./$(DEPDIR)/certinfo.Po
-rm -f ./$(DEPDIR)/chkspeed.Po
@@ -1959,10 +2050,13 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/http2-pushinmemory.Po
-rm -f ./$(DEPDIR)/http2-serverpush.Po
-rm -f ./$(DEPDIR)/http2-upload.Po
+ -rm -f ./$(DEPDIR)/http3-present.Po
+ -rm -f ./$(DEPDIR)/http3.Po
-rm -f ./$(DEPDIR)/httpcustomheader.Po
-rm -f ./$(DEPDIR)/httpput.Po
-rm -f ./$(DEPDIR)/https.Po
-rm -f ./$(DEPDIR)/imap-append.Po
+ -rm -f ./$(DEPDIR)/imap-authzid.Po
-rm -f ./$(DEPDIR)/imap-copy.Po
-rm -f ./$(DEPDIR)/imap-create.Po
-rm -f ./$(DEPDIR)/imap-delete.Po
@@ -1984,6 +2078,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/multi-single.Po
-rm -f ./$(DEPDIR)/parseurl.Po
-rm -f ./$(DEPDIR)/persistent.Po
+ -rm -f ./$(DEPDIR)/pop3-authzid.Po
-rm -f ./$(DEPDIR)/pop3-dele.Po
-rm -f ./$(DEPDIR)/pop3-list.Po
-rm -f ./$(DEPDIR)/pop3-multi.Po
@@ -2009,6 +2104,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/simple.Po
-rm -f ./$(DEPDIR)/simplepost.Po
-rm -f ./$(DEPDIR)/simplessl.Po
+ -rm -f ./$(DEPDIR)/smtp-authzid.Po
-rm -f ./$(DEPDIR)/smtp-expn.Po
-rm -f ./$(DEPDIR)/smtp-mail.Po
-rm -f ./$(DEPDIR)/smtp-mime.Po
diff --git a/docs/examples/Makefile.inc b/docs/examples/Makefile.inc
index 8dd55b9d..6fd8ecd7 100644
--- a/docs/examples/Makefile.inc
+++ b/docs/examples/Makefile.inc
@@ -5,7 +5,7 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
@@ -35,7 +35,8 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
http2-upload http2-serverpush getredirect ftpuploadfrommem \
ftpuploadresume sslbackend postit2-formadd multi-formadd \
shared-connection-cache sftpuploadresume http2-pushinmemory parseurl \
- urlapi
+ urlapi imap-authzid pop3-authzid smtp-authzid http3 altsvc \
+ http3-present
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
diff --git a/docs/examples/altsvc.c b/docs/examples/altsvc.c
new file mode 100644
index 00000000..24ef4258
--- /dev/null
+++ b/docs/examples/altsvc.c
@@ -0,0 +1,56 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * HTTP with Alt-Svc support
+ * </DESC>
+ */
+#include <stdio.h>
+#include <curl/curl.h>
+
+int main(void)
+{
+ CURL *curl;
+ CURLcode res;
+
+ curl = curl_easy_init();
+ if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
+ /* cache the alternatives in this file */
+ curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc.txt");
+
+ /* restrict which HTTP versions to use alternatives */
+ curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, (long)
+ CURLALTSVC_H1|CURLALTSVC_H2|CURLALTSVC_H3);
+
+ /* Perform the request, res will get the return code */
+ res = curl_easy_perform(curl);
+ /* Check for errors */
+ if(res != CURLE_OK)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ }
+ return 0;
+}
diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c
index df4ab3fa..83020797 100644
--- a/docs/examples/curlx.c
+++ b/docs/examples/curlx.c
@@ -277,7 +277,7 @@ int main(int argc, char **argv)
int tabLength = 100;
char *binaryptr;
- char *mimetype;
+ char *mimetype = NULL;
char *mimetypeaccept = NULL;
char *contenttype;
const char **pp;
@@ -294,7 +294,7 @@ int main(int argc, char **argv)
binaryptr = malloc(tabLength);
- p.verbose = 0;
+ memset(&p, '\0', sizeof(p));
p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);
curl_global_init(CURL_GLOBAL_DEFAULT);
@@ -372,7 +372,7 @@ int main(int argc, char **argv)
args++;
}
- if(mimetype == NULL || mimetypeaccept == NULL)
+ if(mimetype == NULL || mimetypeaccept == NULL || p.p12file == NULL)
badarg = 1;
if(badarg) {
diff --git a/docs/examples/ephiperfifo.c b/docs/examples/ephiperfifo.c
index bc4b0f05..c076a852 100644
--- a/docs/examples/ephiperfifo.c
+++ b/docs/examples/ephiperfifo.c
@@ -73,12 +73,6 @@ callback.
#include <curl/curl.h>
-#ifdef __GNUC__
-#define _Unused __attribute__((unused))
-#else
-#define _Unused
-#endif
-
#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
@@ -114,7 +108,7 @@ typedef struct _SockInfo
GlobalInfo *global;
} SockInfo;
-#define __case(code) \
+#define mycase(code) \
case code: s = __STRING(code)
/* Die if we get a bad CURLMcode somewhere */
@@ -123,14 +117,14 @@ static void mcode_or_die(const char *where, CURLMcode code)
if(CURLM_OK != code) {
const char *s;
switch(code) {
- __case(CURLM_BAD_HANDLE); break;
- __case(CURLM_BAD_EASY_HANDLE); break;
- __case(CURLM_OUT_OF_MEMORY); break;
- __case(CURLM_INTERNAL_ERROR); break;
- __case(CURLM_UNKNOWN_OPTION); break;
- __case(CURLM_LAST); break;
+ mycase(CURLM_BAD_HANDLE); break;
+ mycase(CURLM_BAD_EASY_HANDLE); break;
+ mycase(CURLM_OUT_OF_MEMORY); break;
+ mycase(CURLM_INTERNAL_ERROR); break;
+ mycase(CURLM_UNKNOWN_OPTION); break;
+ mycase(CURLM_LAST); break;
default: s = "CURLM_unknown"; break;
- __case(CURLM_BAD_SOCKET);
+ mycase(CURLM_BAD_SOCKET);
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
/* ignore this error */
return;
@@ -336,22 +330,21 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb,
- void *data)
+static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
{
- size_t realsize = size * nmemb;
- (void)_Unused;
+ (void)ptr;
(void)data;
-
- return realsize;
+ return size * nmemb;
}
/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused,
- double uln _Unused)
+static int prog_cb(void *p, double dltotal, double dlnow, double ult,
+ double uln)
{
ConnInfo *conn = (ConnInfo *)p;
+ (void)ult;
+ (void)uln;
fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
return 0;
@@ -469,12 +462,14 @@ void SignalHandler(int signo)
}
}
-int main(int argc _Unused, char **argv _Unused)
+int main(int argc, char **argv)
{
GlobalInfo g;
struct itimerspec its;
struct epoll_event ev;
struct epoll_event events[10];
+ (void)argc;
+ (void)argv;
g_should_exit_ = 0;
signal(SIGINT, SignalHandler);
@@ -547,5 +542,6 @@ int main(int argc _Unused, char **argv _Unused)
fflush(MSG_OUT);
curl_multi_cleanup(g.multi);
+ clean_fifo(&g);
return 0;
}
diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c
index a50522a8..c02659b9 100644
--- a/docs/examples/hiperfifo.c
+++ b/docs/examples/hiperfifo.c
@@ -72,12 +72,6 @@ callback.
#include <errno.h>
#include <sys/cdefs.h>
-#ifdef __GNUC__
-#define _Unused __attribute__((unused))
-#else
-#define _Unused
-#endif
-
#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
@@ -115,7 +109,7 @@ typedef struct _SockInfo
GlobalInfo *global;
} SockInfo;
-#define __case(code) \
+#define mycase(code) \
case code: s = __STRING(code)
/* Die if we get a bad CURLMcode somewhere */
@@ -124,14 +118,14 @@ static void mcode_or_die(const char *where, CURLMcode code)
if(CURLM_OK != code) {
const char *s;
switch(code) {
- __case(CURLM_BAD_HANDLE); break;
- __case(CURLM_BAD_EASY_HANDLE); break;
- __case(CURLM_OUT_OF_MEMORY); break;
- __case(CURLM_INTERNAL_ERROR); break;
- __case(CURLM_UNKNOWN_OPTION); break;
- __case(CURLM_LAST); break;
+ mycase(CURLM_BAD_HANDLE); break;
+ mycase(CURLM_BAD_EASY_HANDLE); break;
+ mycase(CURLM_OUT_OF_MEMORY); break;
+ mycase(CURLM_INTERNAL_ERROR); break;
+ mycase(CURLM_UNKNOWN_OPTION); break;
+ mycase(CURLM_LAST); break;
default: s = "CURLM_unknown"; break;
- __case(CURLM_BAD_SOCKET);
+ mycase(CURLM_BAD_SOCKET);
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
/* ignore this error */
return;
@@ -143,9 +137,10 @@ static void mcode_or_die(const char *where, CURLMcode code)
/* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi _Unused, long timeout_ms, GlobalInfo *g)
+static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
{
struct timeval timeout;
+ (void)multi;
timeout.tv_sec = timeout_ms/1000;
timeout.tv_usec = (timeout_ms%1000)*1000;
@@ -220,10 +215,12 @@ static void event_cb(int fd, short kind, void *userp)
/* Called by libevent when our timeout expires */
-static void timer_cb(int fd _Unused, short kind _Unused, void *userp)
+static void timer_cb(int fd, short kind, void *userp)
{
GlobalInfo *g = (GlobalInfo *)userp;
CURLMcode rc;
+ (void)fd;
+ (void)kind;
rc = curl_multi_socket_action(g->multi,
CURL_SOCKET_TIMEOUT, 0, &g->still_running);
@@ -303,22 +300,21 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
/* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb,
- void *data)
+static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
{
- size_t realsize = size * nmemb;
- (void)_Unused;
+ (void)ptr;
(void)data;
-
- return realsize;
+ return size * nmemb;
}
/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused,
- double uln _Unused)
+static int prog_cb(void *p, double dltotal, double dlnow, double ult,
+ double uln)
{
ConnInfo *conn = (ConnInfo *)p;
+ (void)ult;
+ (void)uln;
fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
return 0;
@@ -361,12 +357,14 @@ static void new_conn(char *url, GlobalInfo *g)
}
/* This gets called whenever data is received from the fifo */
-static void fifo_cb(int fd _Unused, short event _Unused, void *arg)
+static void fifo_cb(int fd, short event, void *arg)
{
char s[1024];
long int rv = 0;
int n = 0;
GlobalInfo *g = (GlobalInfo *)arg;
+ (void)fd;
+ (void)event;
do {
s[0]='\0';
@@ -427,9 +425,11 @@ static void clean_fifo(GlobalInfo *g)
unlink(fifo);
}
-int main(int argc _Unused, char **argv _Unused)
+int main(int argc, char **argv)
{
GlobalInfo g;
+ (void)argc;
+ (void)argv;
memset(&g, 0, sizeof(GlobalInfo));
g.evbase = event_base_new();
diff --git a/docs/examples/http3-present.c b/docs/examples/http3-present.c
new file mode 100644
index 00000000..857952dc
--- /dev/null
+++ b/docs/examples/http3-present.c
@@ -0,0 +1,47 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Checks if HTTP/3 support is present in libcurl.
+ * </DESC>
+ */
+#include <stdio.h>
+#include <curl/curl.h>
+
+int main(void)
+{
+ curl_version_info_data *ver;
+
+ curl_global_init(CURL_GLOBAL_ALL);
+
+ ver = curl_version_info(CURLVERSION_NOW);
+ if(ver->features & CURL_VERSION_HTTP2)
+ printf("HTTP/2 support is present\n");
+
+ if(ver->features & CURL_VERSION_HTTP3)
+ printf("HTTP/3 support is present\n");
+
+ if(ver->features & CURL_VERSION_ALTSVC)
+ printf("Alt-svc support is present\n");
+
+ curl_global_cleanup();
+ return 0;
+}
diff --git a/docs/examples/http3.c b/docs/examples/http3.c
new file mode 100644
index 00000000..240a7edd
--- /dev/null
+++ b/docs/examples/http3.c
@@ -0,0 +1,54 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Very simple HTTP/3 GET
+ * </DESC>
+ */
+#include <stdio.h>
+#include <curl/curl.h>
+
+int main(void)
+{
+ CURL *curl;
+ CURLcode res;
+
+ curl = curl_easy_init();
+ if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+
+ /* Forcing HTTP/3 will make the connection fail if the server isn't
+ accessible over QUIC + HTTP/3 on the given host and port.
+ Consider using CURLOPT_ALTSVC instead! */
+ curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_3);
+
+ /* Perform the request, res will get the return code */
+ res = curl_easy_perform(curl);
+ /* Check for errors */
+ if(res != CURLE_OK)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ }
+ return 0;
+}
diff --git a/docs/examples/imap-authzid.c b/docs/examples/imap-authzid.c
new file mode 100644
index 00000000..bfe7d71d
--- /dev/null
+++ b/docs/examples/imap-authzid.c
@@ -0,0 +1,71 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/* <DESC>
+ * IMAP example showing how to retreieve e-mails from a shared mailed box
+ * </DESC>
+ */
+
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to fetch mail using libcurl's IMAP
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.66.0 or above.
+ */
+
+int main(void)
+{
+ CURL *curl;
+ CURLcode res = CURLE_OK;
+
+ curl = curl_easy_init();
+ if(curl) {
+ /* Set the username and password */
+ curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+ curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+ /* Set the authorisation identity (identity to act as) */
+ curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "shared-mailbox");
+
+ /* Force PLAIN authentication */
+ curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, "AUTH=PLAIN");
+
+ /* This will fetch message 1 from the user's inbox */
+ curl_easy_setopt(curl, CURLOPT_URL,
+ "imap://imap.example.com/INBOX/;UID=1");
+
+ /* Perform the fetch */
+ res = curl_easy_perform(curl);
+
+ /* Check for errors */
+ if(res != CURLE_OK)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+
+ /* Always cleanup */
+ curl_easy_cleanup(curl);
+ }
+
+ return (int)res;
+}
diff --git a/docs/examples/pop3-authzid.c b/docs/examples/pop3-authzid.c
new file mode 100644
index 00000000..57363579
--- /dev/null
+++ b/docs/examples/pop3-authzid.c
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/* <DESC>
+ * POP3 example showing how to retrieve e-mails from a shared mailbox
+ * </DESC>
+ */
+
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* This is a simple example showing how to retrieve mail using libcurl's POP3
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.66.0 or above.
+ */
+
+int main(void)
+{
+ CURL *curl;
+ CURLcode res = CURLE_OK;
+
+ curl = curl_easy_init();
+ if(curl) {
+ /* Set the username and password */
+ curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
+ curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
+
+ /* Set the authorisation identity (identity to act as) */
+ curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "shared-mailbox");
+
+ /* Force PLAIN authentication */
+ curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, "AUTH=PLAIN");
+
+ /* This will retrieve message 1 from the user's mailbox */
+ curl_easy_setopt(curl, CURLOPT_URL, "pop3://pop.example.com/1");
+
+ /* Perform the retr */
+ res = curl_easy_perform(curl);
+
+ /* Check for errors */
+ if(res != CURLE_OK)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+
+ /* Always cleanup */
+ curl_easy_cleanup(curl);
+ }
+
+ return (int)res;
+}
diff --git a/docs/examples/smtp-authzid.c b/docs/examples/smtp-authzid.c
new file mode 100644
index 00000000..decdb719
--- /dev/null
+++ b/docs/examples/smtp-authzid.c
@@ -0,0 +1,161 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/* <DESC>
+ * Send e-mail on behalf of another user with SMTP
+ * </DESC>
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <curl/curl.h>
+
+/*
+ * This is a simple example show how to send an email using libcurl's SMTP
+ * capabilities.
+ *
+ * Note that this example requires libcurl 7.66.0 or above.
+ */
+
+/* The libcurl options want plain addresses, the viewable headers in the mail
+ * can very well get a full name as well.
+ */
+#define FROM_ADDR "<ursel@example.org>"
+#define SENDER_ADDR "<kurt@example.org>"
+#define TO_ADDR "<addressee@example.net>"
+
+#define FROM_MAIL "Ursel " FROM_ADDR
+#define SENDER_MAIL "Kurt " SENDER_ADDR
+#define TO_MAIL "A Receiver " TO_ADDR
+
+static const char *payload_text[] = {
+ "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
+ "To: " TO_MAIL "\r\n",
+ "From: " FROM_MAIL "\r\n",
+ "Sender: " SENDER_MAIL "\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
+ "Subject: SMTP example message\r\n",
+ "\r\n", /* empty line to divide headers from body, see RFC5322 */
+ "The body of the message starts here.\r\n",
+ "\r\n",
+ "It could be a lot of lines, could be MIME encoded, whatever.\r\n",
+ "Check RFC5322.\r\n",
+ NULL
+};
+
+struct upload_status {
+ int lines_read;
+};
+
+static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
+{
+ struct upload_status *upload_ctx = (struct upload_status *)userp;
+ const char *data;
+
+ if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
+ return 0;
+ }
+
+ data = payload_text[upload_ctx->lines_read];
+
+ if(data) {
+ size_t len = strlen(data);
+ memcpy(ptr, data, len);
+ upload_ctx->lines_read++;
+
+ return len;
+ }
+
+ return 0;
+}
+
+int main(void)
+{
+ CURL *curl;
+ CURLcode res = CURLE_OK;
+ struct curl_slist *recipients = NULL;
+ struct upload_status upload_ctx;
+
+ upload_ctx.lines_read = 0;
+
+ curl = curl_easy_init();
+ if(curl) {
+ /* This is the URL for your mailserver. In this example we connect to the
+ smtp-submission port as we require an authenticated connection. */
+ curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com:587");
+
+ /* Set the username and password */
+ curl_easy_setopt(curl, CURLOPT_USERNAME, "kurt");
+ curl_easy_setopt(curl, CURLOPT_PASSWORD, "xipj3plmq");
+
+ /* Set the authorisation identity (identity to act as) */
+ curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "ursel");
+
+ /* Force PLAIN authentication */
+ curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, "AUTH=PLAIN");
+
+ /* Note that this option isn't strictly required, omitting it will result
+ * in libcurl sending the MAIL FROM command with empty sender data. All
+ * autoresponses should have an empty reverse-path, and should be directed
+ * to the address in the reverse-path which triggered them. Otherwise,
+ * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
+ * details.
+ */
+ curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM_ADDR);
+
+ /* Add a recipient, in this particular case it corresponds to the
+ * To: addressee in the header. */
+ recipients = curl_slist_append(recipients, TO_ADDR);
+ curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
+
+ /* We're using a callback function to specify the payload (the headers and
+ * body of the message). You could just use the CURLOPT_READDATA option to
+ * specify a FILE pointer to read from. */
+ curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
+ curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
+ /* Send the message */
+ res = curl_easy_perform(curl);
+
+ /* Check for errors */
+ if(res != CURLE_OK)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+
+ /* Free the list of recipients */
+ curl_slist_free_all(recipients);
+
+ /* curl won't send the QUIT command until you call cleanup, so you should
+ * be able to re-use this connection for additional messages (setting
+ * CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
+ * curl_easy_perform() again. It may not be a good idea to keep the
+ * connection open for a very long time though (more than a few minutes
+ * may result in the server timing out the connection), and you do want to
+ * clean up in the end.
+ */
+ curl_easy_cleanup(curl);
+ }
+
+ return (int)res;
+}
diff --git a/docs/libcurl/Makefile.in b/docs/libcurl/Makefile.in
index cbc5d848..e9c0559f 100644
--- a/docs/libcurl/Makefile.in
+++ b/docs/libcurl/Makefile.in
@@ -565,8 +565,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -679,6 +683,7 @@ man_MANS = \
curl_multi_info_read.3 \
curl_multi_init.3 \
curl_multi_perform.3 \
+ curl_multi_poll.3 \
curl_multi_remove_handle.3 \
curl_multi_setopt.3 \
curl_multi_socket.3 \
diff --git a/docs/libcurl/Makefile.inc b/docs/libcurl/Makefile.inc
index b4ff45dd..bd88c9c3 100644
--- a/docs/libcurl/Makefile.inc
+++ b/docs/libcurl/Makefile.inc
@@ -46,6 +46,7 @@ man_MANS = \
curl_multi_info_read.3 \
curl_multi_init.3 \
curl_multi_perform.3 \
+ curl_multi_poll.3 \
curl_multi_remove_handle.3 \
curl_multi_setopt.3 \
curl_multi_socket.3 \
diff --git a/docs/libcurl/curl_easy_cleanup.3 b/docs/libcurl/curl_easy_cleanup.3
index 7368eb71..f104f18d 100644
--- a/docs/libcurl/curl_easy_cleanup.3
+++ b/docs/libcurl/curl_easy_cleanup.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_cleanup - End a libcurl easy handle
diff --git a/docs/libcurl/curl_easy_duphandle.3 b/docs/libcurl/curl_easy_duphandle.3
index bc1b1f36..b4b255f4 100644
--- a/docs/libcurl/curl_easy_duphandle.3
+++ b/docs/libcurl/curl_easy_duphandle.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
diff --git a/docs/libcurl/curl_easy_escape.3 b/docs/libcurl/curl_easy_escape.3
index de0255ee..84a3f04d 100644
--- a/docs/libcurl/curl_easy_escape.3
+++ b/docs/libcurl/curl_easy_escape.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_escape - URL encodes the given string
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index 27292837..2308ac62 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_getinfo 3 "April 11, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_getinfo 3 "August 06, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_getinfo - extract information from a curl handle
@@ -158,6 +158,9 @@ Upload size. See \fICURLINFO_CONTENT_LENGTH_UPLOAD_T(3)\fP
.IP CURLINFO_CONTENT_TYPE
Content type from the Content-Type header.
See \fICURLINFO_CONTENT_TYPE(3)\fP
+.IP CURLINFO_RETRY_AFTER
+The value from the from the Retry-After header.
+See \fICURLINFO_RETRY_AFTER(3)\fP
.IP CURLINFO_PRIVATE
User's private data pointer.
See \fICURLINFO_PRIVATE(3)\fP
diff --git a/docs/libcurl/curl_easy_init.3 b/docs/libcurl/curl_easy_init.3
index 78cb76ae..7cf62d59 100644
--- a/docs/libcurl/curl_easy_init.3
+++ b/docs/libcurl/curl_easy_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_init - Start a libcurl easy session
diff --git a/docs/libcurl/curl_easy_pause.3 b/docs/libcurl/curl_easy_pause.3
index 8d8930c9..9eaf7780 100644
--- a/docs/libcurl/curl_easy_pause.3
+++ b/docs/libcurl/curl_easy_pause.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_pause - pause and unpause a connection
diff --git a/docs/libcurl/curl_easy_perform.3 b/docs/libcurl/curl_easy_perform.3
index 40a40229..67e62264 100644
--- a/docs/libcurl/curl_easy_perform.3
+++ b/docs/libcurl/curl_easy_perform.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_perform - perform a blocking file transfer
diff --git a/docs/libcurl/curl_easy_recv.3 b/docs/libcurl/curl_easy_recv.3
index 78e62334..e3b098e2 100644
--- a/docs/libcurl/curl_easy_recv.3
+++ b/docs/libcurl/curl_easy_recv.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
diff --git a/docs/libcurl/curl_easy_reset.3 b/docs/libcurl/curl_easy_reset.3
index 0f148459..b4c8af26 100644
--- a/docs/libcurl/curl_easy_reset.3
+++ b/docs/libcurl/curl_easy_reset.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
diff --git a/docs/libcurl/curl_easy_send.3 b/docs/libcurl/curl_easy_send.3
index acf70d57..cd21e66c 100644
--- a/docs/libcurl/curl_easy_send.3
+++ b/docs/libcurl/curl_easy_send.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_send - sends raw data over an "easy" connection
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index ec871028..ed0cfd02 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_setopt 3 "May 24, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_setopt 3 "August 09, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_setopt \- set options for a curl easy handle
@@ -257,6 +257,8 @@ TLS authentication methods. See \fICURLOPT_TLSAUTH_TYPE(3)\fP
Proxy TLS authentication methods. See \fICURLOPT_PROXY_TLSAUTH_TYPE(3)\fP
.IP CURLOPT_PROXYAUTH
HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
+.IP CURLOPT_SASL_AUTHZID
+SASL authorisation identity (identity to act as). See \fICURLOPT_SASL_AUTHZID(3)\fP
.IP CURLOPT_SASL_IR
Enable SASL initial response. See \fICURLOPT_SASL_IR(3)\fP
.IP CURLOPT_XOAUTH2_BEARER
diff --git a/docs/libcurl/curl_easy_strerror.3 b/docs/libcurl/curl_easy_strerror.3
index a7656396..2f2c16db 100644
--- a/docs/libcurl/curl_easy_strerror.3
+++ b/docs/libcurl/curl_easy_strerror.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_strerror - return string describing error code
diff --git a/docs/libcurl/curl_easy_unescape.3 b/docs/libcurl/curl_easy_unescape.3
index 01d5b78c..2313fbcf 100644
--- a/docs/libcurl/curl_easy_unescape.3
+++ b/docs/libcurl/curl_easy_unescape.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_easy_unescape - URL decodes the given string
diff --git a/docs/libcurl/curl_escape.3 b/docs/libcurl/curl_escape.3
index 8edbc4bc..16408a74 100644
--- a/docs/libcurl/curl_escape.3
+++ b/docs/libcurl/curl_escape.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_escape 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_escape 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_escape - URL encodes the given string
diff --git a/docs/libcurl/curl_formadd.3 b/docs/libcurl/curl_formadd.3
index 52cc980d..99c0dd24 100644
--- a/docs/libcurl/curl_formadd.3
+++ b/docs/libcurl/curl_formadd.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_formadd 3 "December 11, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_formadd 3 "December 11, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
diff --git a/docs/libcurl/curl_formfree.3 b/docs/libcurl/curl_formfree.3
index 8465c96c..0ec6be09 100644
--- a/docs/libcurl/curl_formfree.3
+++ b/docs/libcurl/curl_formfree.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_formfree 3 "August 09, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_formfree 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
diff --git a/docs/libcurl/curl_formget.3 b/docs/libcurl/curl_formget.3
index 011de769..1cda1f40 100644
--- a/docs/libcurl/curl_formget.3
+++ b/docs/libcurl/curl_formget.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_formget 3 "September 02, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_formget 3 "September 02, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
diff --git a/docs/libcurl/curl_free.3 b/docs/libcurl/curl_free.3
index f26604ff..3d8175eb 100644
--- a/docs/libcurl/curl_free.3
+++ b/docs/libcurl/curl_free.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_free 3 "August 09, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_free 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
diff --git a/docs/libcurl/curl_getdate.3 b/docs/libcurl/curl_getdate.3
index e7aa882a..48aa3d10 100644
--- a/docs/libcurl/curl_getdate.3
+++ b/docs/libcurl/curl_getdate.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_getdate 3 "January 18, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_getdate 3 "January 18, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_getdate - Convert a date string to number of seconds
diff --git a/docs/libcurl/curl_getenv.3 b/docs/libcurl/curl_getenv.3
index 2f744909..2425a448 100644
--- a/docs/libcurl/curl_getenv.3
+++ b/docs/libcurl/curl_getenv.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_getenv 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_getenv 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_getenv - return value for environment name
diff --git a/docs/libcurl/curl_global_cleanup.3 b/docs/libcurl/curl_global_cleanup.3
index e82559a1..13fecd3e 100644
--- a/docs/libcurl/curl_global_cleanup.3
+++ b/docs/libcurl/curl_global_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_global_cleanup - global libcurl cleanup
diff --git a/docs/libcurl/curl_global_init.3 b/docs/libcurl/curl_global_init.3
index 879e5084..987cb11f 100644
--- a/docs/libcurl/curl_global_init.3
+++ b/docs/libcurl/curl_global_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_init 3 "April 17, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_global_init 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_global_init - Global libcurl initialisation
diff --git a/docs/libcurl/curl_global_init_mem.3 b/docs/libcurl/curl_global_init_mem.3
index 1f881429..fcfd724e 100644
--- a/docs/libcurl/curl_global_init_mem.3
+++ b/docs/libcurl/curl_global_init_mem.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_init_mem 3 "September 23, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_global_init_mem 3 "August 11, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
@@ -60,6 +60,8 @@ to that man page for documentation.
.SH "CAUTION"
Manipulating these gives considerable powers to the application to severely
screw things up for libcurl. Take care!
+.SH AVAILABILITY
+Added in 7.12.0
.SH "SEE ALSO"
.BR curl_global_init "(3), "
.BR curl_global_cleanup "(3), "
diff --git a/docs/libcurl/curl_global_sslset.3 b/docs/libcurl/curl_global_sslset.3
index e7f9d89a..cdf8c43c 100644
--- a/docs/libcurl/curl_global_sslset.3
+++ b/docs/libcurl/curl_global_sslset.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
diff --git a/docs/libcurl/curl_mime_addpart.3 b/docs/libcurl/curl_mime_addpart.3
index d40dcf07..9f21da3b 100644
--- a/docs/libcurl/curl_mime_addpart.3
+++ b/docs/libcurl/curl_mime_addpart.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
diff --git a/docs/libcurl/curl_mime_data.3 b/docs/libcurl/curl_mime_data.3
index 7700984d..b9a04b21 100644
--- a/docs/libcurl/curl_mime_data.3
+++ b/docs/libcurl/curl_mime_data.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_data - set a mime part's body data from memory
diff --git a/docs/libcurl/curl_mime_data_cb.3 b/docs/libcurl/curl_mime_data_cb.3
index fb6bfe7a..71f9b3c7 100644
--- a/docs/libcurl/curl_mime_data_cb.3
+++ b/docs/libcurl/curl_mime_data_cb.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
diff --git a/docs/libcurl/curl_mime_encoder.3 b/docs/libcurl/curl_mime_encoder.3
index eabaddf7..c9492197 100644
--- a/docs/libcurl/curl_mime_encoder.3
+++ b/docs/libcurl/curl_mime_encoder.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
diff --git a/docs/libcurl/curl_mime_filedata.3 b/docs/libcurl/curl_mime_filedata.3
index 7fa18e00..34e94392 100644
--- a/docs/libcurl/curl_mime_filedata.3
+++ b/docs/libcurl/curl_mime_filedata.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
diff --git a/docs/libcurl/curl_mime_filename.3 b/docs/libcurl/curl_mime_filename.3
index 8b48bb60..3c24716b 100644
--- a/docs/libcurl/curl_mime_filename.3
+++ b/docs/libcurl/curl_mime_filename.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_filename - set a mime part's remote file name
diff --git a/docs/libcurl/curl_mime_free.3 b/docs/libcurl/curl_mime_free.3
index bfae0c24..7f606fc8 100644
--- a/docs/libcurl/curl_mime_free.3
+++ b/docs/libcurl/curl_mime_free.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_free - free a previously built mime structure
diff --git a/docs/libcurl/curl_mime_headers.3 b/docs/libcurl/curl_mime_headers.3
index cba04727..e8554bf4 100644
--- a/docs/libcurl/curl_mime_headers.3
+++ b/docs/libcurl/curl_mime_headers.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_headers - set a mime part's custom headers
diff --git a/docs/libcurl/curl_mime_init.3 b/docs/libcurl/curl_mime_init.3
index f9c34802..cd830e2d 100644
--- a/docs/libcurl/curl_mime_init.3
+++ b/docs/libcurl/curl_mime_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_init - create a mime handle
diff --git a/docs/libcurl/curl_mime_name.3 b/docs/libcurl/curl_mime_name.3
index b5746d6c..0ea661aa 100644
--- a/docs/libcurl/curl_mime_name.3
+++ b/docs/libcurl/curl_mime_name.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_name - set a mime part's name
diff --git a/docs/libcurl/curl_mime_subparts.3 b/docs/libcurl/curl_mime_subparts.3
index e5b947c6..0edcb474 100644
--- a/docs/libcurl/curl_mime_subparts.3
+++ b/docs/libcurl/curl_mime_subparts.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
diff --git a/docs/libcurl/curl_mime_type.3 b/docs/libcurl/curl_mime_type.3
index dd7553c1..3f3925a2 100644
--- a/docs/libcurl/curl_mime_type.3
+++ b/docs/libcurl/curl_mime_type.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_mime_type - set a mime part's content type
diff --git a/docs/libcurl/curl_mprintf.3 b/docs/libcurl/curl_mprintf.3
index cda718c3..04562a53 100644
--- a/docs/libcurl/curl_mprintf.3
+++ b/docs/libcurl/curl_mprintf.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_printf 3 "April 01, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_printf 3 "April 01, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
diff --git a/docs/libcurl/curl_multi_add_handle.3 b/docs/libcurl/curl_multi_add_handle.3
index 2ad36a4f..694e775d 100644
--- a/docs/libcurl/curl_multi_add_handle.3
+++ b/docs/libcurl/curl_multi_add_handle.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
diff --git a/docs/libcurl/curl_multi_assign.3 b/docs/libcurl/curl_multi_assign.3
index c2c78cd0..8a5327ef 100644
--- a/docs/libcurl/curl_multi_assign.3
+++ b/docs/libcurl/curl_multi_assign.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_assign \- set data to associate with an internal socket
diff --git a/docs/libcurl/curl_multi_cleanup.3 b/docs/libcurl/curl_multi_cleanup.3
index bab7a45d..385a41bf 100644
--- a/docs/libcurl/curl_multi_cleanup.3
+++ b/docs/libcurl/curl_multi_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_cleanup - close down a multi session
diff --git a/docs/libcurl/curl_multi_fdset.3 b/docs/libcurl/curl_multi_fdset.3
index 74d7c55f..b649f595 100644
--- a/docs/libcurl/curl_multi_fdset.3
+++ b/docs/libcurl/curl_multi_fdset.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
diff --git a/docs/libcurl/curl_multi_info_read.3 b/docs/libcurl/curl_multi_info_read.3
index 180da19f..89633af5 100644
--- a/docs/libcurl/curl_multi_info_read.3
+++ b/docs/libcurl/curl_multi_info_read.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_info_read - read multi stack informationals
diff --git a/docs/libcurl/curl_multi_init.3 b/docs/libcurl/curl_multi_init.3
index 5435c9e6..eea30153 100644
--- a/docs/libcurl/curl_multi_init.3
+++ b/docs/libcurl/curl_multi_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_init - create a multi handle
diff --git a/docs/libcurl/curl_multi_perform.3 b/docs/libcurl/curl_multi_perform.3
index 017cc75c..1e5892e8 100644
--- a/docs/libcurl/curl_multi_perform.3
+++ b/docs/libcurl/curl_multi_perform.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
diff --git a/docs/libcurl/curl_multi_poll.3 b/docs/libcurl/curl_multi_poll.3
new file mode 100644
index 00000000..ed6f967a
--- /dev/null
+++ b/docs/libcurl/curl_multi_poll.3
@@ -0,0 +1,111 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.TH curl_multi_poll 3 "July 29, 2019" "libcurl 7.66.0" "libcurl Manual"
+
+.SH NAME
+curl_multi_poll - polls on all easy handles in a multi handle
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLMcode curl_multi_poll(CURLM *multi_handle,
+ struct curl_waitfd extra_fds[],
+ unsigned int extra_nfds,
+ int timeout_ms,
+ int *numfds);
+.ad
+.SH DESCRIPTION
+\fIcurl_multi_poll(3)\fP polls all file descriptors used by the curl easy
+handles contained in the given multi handle set. It will block until activity
+is detected on at least one of the handles or \fItimeout_ms\fP has passed.
+Alternatively, if the multi handle has a pending internal timeout that has a
+shorter expiry time than \fItimeout_ms\fP, that shorter time will be used
+instead to make sure timeout accuracy is reasonably kept.
+
+The calling application may pass additional curl_waitfd structures which are
+similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
+
+On completion, if \fInumfds\fP is non-NULL, it will be populated with the
+total number of file descriptors on which interesting events occurred. This
+number can include both libcurl internal descriptors as well as descriptors
+provided in \fIextra_fds\fP.
+
+If no extra file descriptors are provided and libcurl has no file descriptor
+to offer to wait for, this function will instead wait during \fItimeout_ms\fP
+milliseconds (or shorter if an internal timer indicates so). This is the
+detail that makes this function different than \fIcurl_multi_wait(3)\fP.
+
+This function is encouraged to be used instead of select(3) when using the
+multi interface to allow applications to easier circumvent the common problem
+with 1024 maximum file descriptors.
+.SH curl_waitfd
+.nf
+struct curl_waitfd {
+ curl_socket_t fd;
+ short events;
+ short revents;
+};
+.fi
+.IP CURL_WAIT_POLLIN
+Bit flag to curl_waitfd.events indicating the socket should poll on read
+events such as new data received.
+.IP CURL_WAIT_POLLPRI
+Bit flag to curl_waitfd.events indicating the socket should poll on high
+priority read events such as out of band data.
+.IP CURL_WAIT_POLLOUT
+Bit flag to curl_waitfd.events indicating the socket should poll on write
+events such as the socket being clear to write without blocking.
+.SH EXAMPLE
+.nf
+CURL *easy_handle;
+CURLM *multi_handle;
+
+/* add the individual easy handle */
+curl_multi_add_handle(multi_handle, easy_handle);
+
+do {
+ CURLMcode mc;
+ int numfds;
+
+ mc = curl_multi_perform(multi_handle, &still_running);
+
+ if(mc == CURLM_OK) {
+ /* wait for activity or timeout */
+ mc = curl_multi_poll(multi_handle, NULL, 0, 1000, &numfds);
+ }
+
+ if(mc != CURLM_OK) {
+ fprintf(stderr, "curl_multi failed, code %d.\\n", mc);
+ break;
+ }
+
+} while(still_running);
+
+curl_multi_remove_handle(multi_handle, easy_handle);
+.fi
+.SH RETURN VALUE
+CURLMcode type, general libcurl multi interface error code. See
+\fIlibcurl-errors(3)\fP
+.SH AVAILABILITY
+This function was added in libcurl 7.66.0.
+.SH "SEE ALSO"
+.BR curl_multi_fdset "(3), " curl_multi_perform "(3), " curl_multi_wait "(3)"
diff --git a/docs/libcurl/curl_multi_remove_handle.3 b/docs/libcurl/curl_multi_remove_handle.3
index eb366d13..2cc2ef09 100644
--- a/docs/libcurl/curl_multi_remove_handle.3
+++ b/docs/libcurl/curl_multi_remove_handle.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
diff --git a/docs/libcurl/curl_multi_setopt.3 b/docs/libcurl/curl_multi_setopt.3
index 607bc33a..ae9d89c2 100644
--- a/docs/libcurl/curl_multi_setopt.3
+++ b/docs/libcurl/curl_multi_setopt.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_setopt \- set options for a curl multi handle
diff --git a/docs/libcurl/curl_multi_socket.3 b/docs/libcurl/curl_multi_socket.3
index 12e66d4e..5cb5be6b 100644
--- a/docs/libcurl/curl_multi_socket.3
+++ b/docs/libcurl/curl_multi_socket.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_socket \- reads/writes available data
diff --git a/docs/libcurl/curl_multi_socket_action.3 b/docs/libcurl/curl_multi_socket_action.3
index e88f8e88..5f62aec4 100644
--- a/docs/libcurl/curl_multi_socket_action.3
+++ b/docs/libcurl/curl_multi_socket_action.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_socket_action 3 "June 10, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_socket_action 3 "June 10, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
diff --git a/docs/libcurl/curl_multi_strerror.3 b/docs/libcurl/curl_multi_strerror.3
index b90ec1e8..cbd6d850 100644
--- a/docs/libcurl/curl_multi_strerror.3
+++ b/docs/libcurl/curl_multi_strerror.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_strerror - return string describing error code
diff --git a/docs/libcurl/curl_multi_timeout.3 b/docs/libcurl/curl_multi_timeout.3
index 312d371e..f560c222 100644
--- a/docs/libcurl/curl_multi_timeout.3
+++ b/docs/libcurl/curl_multi_timeout.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
diff --git a/docs/libcurl/curl_multi_wait.3 b/docs/libcurl/curl_multi_wait.3
index a7f4efdb..856e9bb9 100644
--- a/docs/libcurl/curl_multi_wait.3
+++ b/docs/libcurl/curl_multi_wait.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_multi_wait 3 "June 26, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_multi_wait 3 "June 26, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
diff --git a/docs/libcurl/curl_share_cleanup.3 b/docs/libcurl/curl_share_cleanup.3
index 8e72cff5..316fc819 100644
--- a/docs/libcurl/curl_share_cleanup.3
+++ b/docs/libcurl/curl_share_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_share_cleanup - Clean up a shared object
diff --git a/docs/libcurl/curl_share_init.3 b/docs/libcurl/curl_share_init.3
index 85526df1..a78e2a6b 100644
--- a/docs/libcurl/curl_share_init.3
+++ b/docs/libcurl/curl_share_init.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_init 3 "September 23, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_share_init 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_share_init - Create a shared object
diff --git a/docs/libcurl/curl_share_setopt.3 b/docs/libcurl/curl_share_setopt.3
index cd50d69f..35d16f8a 100644
--- a/docs/libcurl/curl_share_setopt.3
+++ b/docs/libcurl/curl_share_setopt.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_setopt 3 "June 04, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_share_setopt 3 "June 04, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_share_setopt - Set options for a shared object
diff --git a/docs/libcurl/curl_share_strerror.3 b/docs/libcurl/curl_share_strerror.3
index 6fc01414..f2bd9f9b 100644
--- a/docs/libcurl/curl_share_strerror.3
+++ b/docs/libcurl/curl_share_strerror.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_share_strerror - return string describing error code
diff --git a/docs/libcurl/curl_slist_append.3 b/docs/libcurl/curl_slist_append.3
index 11c1e165..32be30f4 100644
--- a/docs/libcurl/curl_slist_append.3
+++ b/docs/libcurl/curl_slist_append.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_slist_append - add a string to an slist
diff --git a/docs/libcurl/curl_slist_free_all.3 b/docs/libcurl/curl_slist_free_all.3
index cf1aee64..e8fe9fe0 100644
--- a/docs/libcurl/curl_slist_free_all.3
+++ b/docs/libcurl/curl_slist_free_all.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_slist_free_all - free an entire curl_slist list
diff --git a/docs/libcurl/curl_strequal.3 b/docs/libcurl/curl_strequal.3
index 1e43e0e9..0dbbe337 100644
--- a/docs/libcurl/curl_strequal.3
+++ b/docs/libcurl/curl_strequal.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_strequal 3 "June 29, 2017" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_strequal 3 "June 29, 2017" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
diff --git a/docs/libcurl/curl_unescape.3 b/docs/libcurl/curl_unescape.3
index c0cebac0..20f5b13d 100644
--- a/docs/libcurl/curl_unescape.3
+++ b/docs/libcurl/curl_unescape.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_unescape 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_unescape 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_unescape - URL decodes the given string
diff --git a/docs/libcurl/curl_url.3 b/docs/libcurl/curl_url.3
index 99247fbc..bed2ffcc 100644
--- a/docs/libcurl/curl_url.3
+++ b/docs/libcurl/curl_url.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url 3 "March 22, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_url 3 "March 22, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_url - returns a new CURLU handle
diff --git a/docs/libcurl/curl_url_cleanup.3 b/docs/libcurl/curl_url_cleanup.3
index 618535ed..36e29b44 100644
--- a/docs/libcurl/curl_url_cleanup.3
+++ b/docs/libcurl/curl_url_cleanup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_url_cleanup - free a CURLU handle
diff --git a/docs/libcurl/curl_url_dup.3 b/docs/libcurl/curl_url_dup.3
index 2249a2db..2b510b85 100644
--- a/docs/libcurl/curl_url_dup.3
+++ b/docs/libcurl/curl_url_dup.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_url_dup - duplicate a CURLU handle
diff --git a/docs/libcurl/curl_url_get.3 b/docs/libcurl/curl_url_get.3
index 0c829b4f..47be3c79 100644
--- a/docs/libcurl/curl_url_get.3
+++ b/docs/libcurl/curl_url_get.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_get 3 "May 03, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_url_get 3 "May 03, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_url_get - extract a part from a URL
diff --git a/docs/libcurl/curl_url_set.3 b/docs/libcurl/curl_url_set.3
index 8ff01772..8737a629 100644
--- a/docs/libcurl/curl_url_set.3
+++ b/docs/libcurl/curl_url_set.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_url_set 3 "May 03, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_url_set 3 "May 03, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_url_set - set a URL part
diff --git a/docs/libcurl/curl_version.3 b/docs/libcurl/curl_version.3
index 22a04046..3f72c451 100644
--- a/docs/libcurl/curl_version.3
+++ b/docs/libcurl/curl_version.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH curl_version 3 "February 03, 2016" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_version 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_version - returns the libcurl version string
diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3
index 4c4ae966..c85d79e1 100644
--- a/docs/libcurl/curl_version_info.3
+++ b/docs/libcurl/curl_version_info.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH curl_version_info 3 "January 29, 2019" "libcurl 7.65.3" "libcurl Manual"
+.TH curl_version_info 3 "August 13, 2019" "libcurl 7.66.0" "libcurl Manual"
.SH NAME
curl_version_info - returns run-time libcurl version info
@@ -79,6 +79,15 @@ typedef struct {
(MAJOR << 24) | (MINOR << 12) | PATCH */
const char *brotli_version; /* human readable string. */
+ /* when 'age is CURLVERSION_SIXTH or alter (7.66.0 or later), these fields
+ also exist */
+ unsigned int nghttp2_ver_num; /* Numeric nghttp2 version
+ (MAJOR << 16) | (MINOR << 8) | PATCH */
+ const char *nghttp2_version; /* human readable string. */
+
+ const char *quic_version; /* human readable quic (+ HTTP/3) library +
+ version or NULL */
+
} curl_version_info_data;
.fi
@@ -100,6 +109,40 @@ environment.
\fIfeatures\fP can have none, one or more bits set, and the currently defined
bits are:
.RS
+.IP CURL_VERSION_ALTSVC
+HTTP Alt-Svc parsing and the associated options (Added in 7.64.1)
+.IP CURL_VERSION_ASYNCHDNS
+libcurl was built with support for asynchronous name lookups, which allows
+more exact timeouts (even on Windows) and less blocking when using the multi
+interface. (added in 7.10.7)
+.IP CURL_VERSION_BROTLI
+supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0)
+.IP CURL_VERSION_CONV
+libcurl was built with support for character conversions, as provided by the
+CURLOPT_CONV_* callbacks. (Added in 7.15.4)
+.IP CURL_VERSION_CURLDEBUG
+libcurl was built with memory tracking debug capabilities. This is mainly of
+interest for libcurl hackers. (added in 7.19.6)
+.IP CURL_VERSION_DEBUG
+libcurl was built with debug capabilities (added in 7.10.6)
+.IP CURL_VERSION_GSSAPI
+libcurl was built with support for GSS-API. This makes libcurl use provided
+functions for Kerberos and SPNEGO authentication. It also allows libcurl
+to use the current user credentials without the app having to pass them on.
+(Added in 7.38.0)
+.IP CURL_VERSION_GSSNEGOTIATE
+supports HTTP GSS-Negotiate (added in 7.10.6)
+.IP CURL_VERSION_HTTPS_PROXY
+libcurl was built with support for HTTPS-proxy.
+(Added in 7.52.0)
+.IP CURL_VERSION_HTTP2
+libcurl was built with support for HTTP2.
+(Added in 7.33.0)
+.IP CURL_VERSION_HTTP3
+HTTP/3 and QUIC support are built-in (Added in 7.66.0)
+.IP CURL_VERSION_IDN
+libcurl was built with support for IDNA, domain names with international
+letters. (Added in 7.12.0)
.IP CURL_VERSION_IPV6
supports IPv6
.IP CURL_VERSION_KERBEROS4
@@ -107,68 +150,38 @@ supports Kerberos V4 (when using FTP)
.IP CURL_VERSION_KERBEROS5
supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5 proxy
(Added in 7.40.0)
-.IP CURL_VERSION_SSL
-supports SSL (HTTPS/FTPS) (Added in 7.10)
+.IP CURL_VERSION_LARGEFILE
+libcurl was built with support for large files. (Added in 7.11.1)
.IP CURL_VERSION_LIBZ
supports HTTP deflate using libz (Added in 7.10)
+.IP CURL_VERSION_MULTI_SSL
+libcurl was built with multiple SSL backends. For details, see
+\fIcurl_global_sslset(3)\fP.
+(Added in 7.56.0)
.IP CURL_VERSION_NTLM
supports HTTP NTLM (added in 7.10.6)
-.IP CURL_VERSION_GSSNEGOTIATE
-supports HTTP GSS-Negotiate (added in 7.10.6)
-.IP CURL_VERSION_DEBUG
-libcurl was built with debug capabilities (added in 7.10.6)
-.IP CURL_VERSION_CURLDEBUG
-libcurl was built with memory tracking debug capabilities. This is mainly of
-interest for libcurl hackers. (added in 7.19.6)
-.IP CURL_VERSION_ASYNCHDNS
-libcurl was built with support for asynchronous name lookups, which allows
-more exact timeouts (even on Windows) and less blocking when using the multi
-interface. (added in 7.10.7)
+.IP CURL_VERSION_NTLM_WB
+libcurl was built with support for NTLM delegation to a winbind helper.
+(Added in 7.22.0)
+.IP CURL_VERSION_PSL
+libcurl was built with support for Mozilla's Public Suffix List. This makes
+libcurl ignore cookies with a domain that's on the list.
+(Added in 7.47.0)
.IP CURL_VERSION_SPNEGO
libcurl was built with support for SPNEGO authentication (Simple and Protected
GSS-API Negotiation Mechanism, defined in RFC 2478.) (added in 7.10.8)
-.IP CURL_VERSION_LARGEFILE
-libcurl was built with support for large files. (Added in 7.11.1)
-.IP CURL_VERSION_IDN
-libcurl was built with support for IDNA, domain names with international
-letters. (Added in 7.12.0)
+.IP CURL_VERSION_SSL
+supports SSL (HTTPS/FTPS) (Added in 7.10)
.IP CURL_VERSION_SSPI
libcurl was built with support for SSPI. This is only available on Windows and
makes libcurl use Windows-provided functions for Kerberos, NTLM, SPNEGO and
Digest authentication. It also allows libcurl to use the current user
credentials without the app having to pass them on. (Added in 7.13.2)
-.IP CURL_VERSION_GSSAPI
-libcurl was built with support for GSS-API. This makes libcurl use provided
-functions for Kerberos and SPNEGO authentication. It also allows libcurl
-to use the current user credentials without the app having to pass them on.
-(Added in 7.38.0)
-.IP CURL_VERSION_CONV
-libcurl was built with support for character conversions, as provided by the
-CURLOPT_CONV_* callbacks. (Added in 7.15.4)
.IP CURL_VERSION_TLSAUTH_SRP
libcurl was built with support for TLS-SRP. (Added in 7.21.4)
-.IP CURL_VERSION_NTLM_WB
-libcurl was built with support for NTLM delegation to a winbind helper.
-(Added in 7.22.0)
-.IP CURL_VERSION_HTTP2
-libcurl was built with support for HTTP2.
-(Added in 7.33.0)
.IP CURL_VERSION_UNIX_SOCKETS
libcurl was built with support for Unix domain sockets.
(Added in 7.40.0)
-.IP CURL_VERSION_PSL
-libcurl was built with support for Mozilla's Public Suffix List. This makes
-libcurl ignore cookies with a domain that's on the list.
-(Added in 7.47.0)
-.IP CURL_VERSION_HTTPS_PROXY
-libcurl was built with support for HTTPS-proxy.
-(Added in 7.52.0)
-.IP CURL_VERSION_MULTI_SSL
-libcurl was built with multiple SSL backends. For details, see
-\fIcurl_global_sslset(3)\fP.
-(Added in 7.56.0)
-.IP CURL_VERSION_BROTLI
-supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0)
.RE
\fIssl_version\fP is an ASCII string for the TLS library name + version
used. If libcurl has no SSL support, this is NULL. For example "Schannel",
diff --git a/docs/libcurl/libcurl-easy.3 b/docs/libcurl/libcurl-easy.3
index 04c97ce0..6b1334bf 100644
--- a/docs/libcurl/libcurl-easy.3
+++ b/docs/libcurl/libcurl-easy.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl 3 "February 03, 2016" "libcurl 7.65.3" "libcurl easy interface"
+.TH libcurl 3 "February 03, 2016" "libcurl 7.66.0" "libcurl easy interface"
.SH NAME
libcurl-easy \- easy interface overview
diff --git a/docs/libcurl/libcurl-env.3 b/docs/libcurl/libcurl-env.3
index 379ade50..1f5fc0a4 100644
--- a/docs/libcurl/libcurl-env.3
+++ b/docs/libcurl/libcurl-env.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl-env 3 "April 17, 2018" "libcurl 7.65.3" "libcurl environment variables"
+.TH libcurl-env 3 "April 17, 2018" "libcurl 7.66.0" "libcurl environment variables"
.SH NAME
libcurl-env \- environment variables libcurl understands
diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index a982e05c..22cc8dc5 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-errors 3 "November 19, 2018" "libcurl 7.65.3" "libcurl errors"
+.TH libcurl-errors 3 "May 11, 2019" "libcurl 7.66.0" "libcurl errors"
.SH NAME
libcurl-errors \- error codes in libcurl
@@ -255,6 +255,8 @@ Status returned failure when asked with \fICURLOPT_SSL_VERIFYSTATUS(3)\fP.
Stream error in the HTTP/2 framing layer.
.IP "CURLE_RECURSIVE_API_CALL (93)"
An API function was called from inside a callback.
+.IP "CURLE_AUTH_ERROR (94)"
+An authentication function returned an error.
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.
diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3
index 741e5a50..10ee7ffd 100644
--- a/docs/libcurl/libcurl-multi.3
+++ b/docs/libcurl/libcurl-multi.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-multi 3 "June 30, 2018" "libcurl 7.65.3" "libcurl multi interface"
+.TH libcurl-multi 3 "June 30, 2018" "libcurl 7.66.0" "libcurl multi interface"
.SH NAME
libcurl-multi \- how to use the multi interface
diff --git a/docs/libcurl/libcurl-security.3 b/docs/libcurl/libcurl-security.3
index cdc03a83..038a9e84 100644
--- a/docs/libcurl/libcurl-security.3
+++ b/docs/libcurl/libcurl-security.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-security 3 "July 16, 2019" "libcurl 7.65.3" "libcurl security"
+.TH libcurl-security 3 "July 16, 2019" "libcurl 7.66.0" "libcurl security"
.SH NAME
libcurl-security \- security considerations when using libcurl
diff --git a/docs/libcurl/libcurl-share.3 b/docs/libcurl/libcurl-share.3
index b6df028f..f626ed39 100644
--- a/docs/libcurl/libcurl-share.3
+++ b/docs/libcurl/libcurl-share.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl-share 3 "November 27, 2017" "libcurl 7.65.3" "libcurl share interface"
+.TH libcurl-share 3 "November 27, 2017" "libcurl 7.66.0" "libcurl share interface"
.SH NAME
libcurl-share \- how to use the share interface
diff --git a/docs/libcurl/libcurl-symbols.3 b/docs/libcurl/libcurl-symbols.3
index c76a7829..4a6d8921 100644
--- a/docs/libcurl/libcurl-symbols.3
+++ b/docs/libcurl/libcurl-symbols.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl-symbols 3 "jul 19, 2019" "libcurl 7.41.0" "libcurl symbols"
+.TH libcurl-symbols 3 "sep 11, 2019" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
@@ -35,8 +35,6 @@ The last version that featured the specific symbol. Using the symbol in source
code will make it no longer compile error-free after that specified version.
This man page is automatically generated from the symbols-in-versions file.
-.IP CURLALTSVC_ALTUSED
-Introduced in 7.64.1
.IP CURLALTSVC_H1
Introduced in 7.64.1
.IP CURLALTSVC_H2
@@ -92,6 +90,8 @@ Introduced in 7.1
Introduced in 7.18.2
.IP CURLE_ALREADY_COMPLETE
Introduced in 7.7.2
+.IP CURLE_AUTH_ERROR
+Introduced in 7.66.0
.IP CURLE_BAD_CALLING_ORDER
Introduced in 7.1
Deprecated since 7.17.0
@@ -596,6 +596,8 @@ Introduced in 7.18.2
Introduced in 7.4.1
.IP CURLINFO_RESPONSE_CODE
Introduced in 7.10.8
+.IP CURLINFO_RETRY_AFTER
+Introduced in 7.66.0
.IP CURLINFO_RTSP_CLIENT_CSEQ
Introduced in 7.20.0
.IP CURLINFO_RTSP_CSEQ_RECV
@@ -1198,6 +1200,8 @@ Introduced in 7.20.0
Introduced in 7.20.0
.IP CURLOPT_RTSP_TRANSPORT
Introduced in 7.20.0
+.IP CURLOPT_SASL_AUTHZID
+Introduced in 7.66.0
.IP CURLOPT_SASL_IR
Introduced in 7.31.0
.IP CURLOPT_SEEKDATA
@@ -1667,6 +1671,8 @@ Introduced in 7.10
Introduced in 7.11.1
.IP CURLVERSION_THIRD
Introduced in 7.12.0
+.IP CURLVERSION_SIXTH
+Introduced in 7.66.0
.IP CURL_CHUNK_BGN_FUNC_FAIL
Introduced in 7.21.0
.IP CURL_CHUNK_BGN_FUNC_OK
@@ -1763,6 +1769,8 @@ Introduced in 7.47.0
Introduced in 7.33.0
.IP CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
Introduced in 7.49.0
+.IP CURL_HTTP_VERSION_3
+Introduced in 7.66.0
.IP CURL_HTTP_VERSION_NONE
Introduced in 7.9.1
.IP CURL_IPRESOLVE_V4
@@ -1952,6 +1960,8 @@ Introduced in 7.10.6
Deprecated since 7.38.0
.IP CURL_VERSION_HTTP2
Introduced in 7.33.0
+.IP CURL_VERSION_HTTP3
+Introduced in 7.66.0
.IP CURL_VERSION_HTTPS_PROXY
Introduced in 7.52.0
.IP CURL_VERSION_IDN
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
index 15b94d2b..e8659c69 100644
--- a/docs/libcurl/libcurl-thread.3
+++ b/docs/libcurl/libcurl-thread.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-thread 3 "June 30, 2019" "libcurl 7.65.3" "libcurl thread safety"
+.TH libcurl-thread 3 "June 30, 2019" "libcurl 7.66.0" "libcurl thread safety"
.SH NAME
libcurl-thread \- libcurl thread safety
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index 6c494a14..2d7dbc80 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH libcurl-tutorial 3 "June 08, 2019" "libcurl 7.65.3" "libcurl programming"
+.TH libcurl-tutorial 3 "June 08, 2019" "libcurl 7.66.0" "libcurl programming"
.SH NAME
libcurl-tutorial \- libcurl programming tutorial
diff --git a/docs/libcurl/libcurl-url.3 b/docs/libcurl/libcurl-url.3
index fa42ca78..b5583d98 100644
--- a/docs/libcurl/libcurl-url.3
+++ b/docs/libcurl/libcurl-url.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl 3 "September 10, 2018" "libcurl 7.65.3" "libcurl url interface"
+.TH libcurl 3 "September 10, 2018" "libcurl 7.66.0" "libcurl url interface"
.SH NAME
libcurl-url \- URL interface overview
diff --git a/docs/libcurl/libcurl.3 b/docs/libcurl/libcurl.3
index 3154eee1..5d2cc6d0 100644
--- a/docs/libcurl/libcurl.3
+++ b/docs/libcurl/libcurl.3
@@ -19,7 +19,7 @@
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
-.TH libcurl 3 "July 15, 2017" "libcurl 7.65.3" "libcurl overview"
+.TH libcurl 3 "July 15, 2017" "libcurl 7.66.0" "libcurl overview"
.SH NAME
libcurl \- client-side URL transfers
diff --git a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
index c7ee1eb2..3fafa251 100644
--- a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
index e4e6a1a1..3d2f23ef 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
@@ -35,6 +35,8 @@ This time is most often very near to the \fICURLINFO_PRETRANSFER_TIME(3)\fP
time, except for cases such as HTTP pipelining where the pretransfer time can
be delayed due to waits in line for the pipeline and more.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
index a00c016c..220c7738 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
@@ -36,6 +36,8 @@ This time is most often very near to the \fICURLINFO_PRETRANSFER_TIME_T(3)\fP
time, except for cases such as HTTP pipelining where the pretransfer time can
be delayed due to waits in line for the pipeline and more.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_CERTINFO.3 b/docs/libcurl/opts/CURLINFO_CERTINFO.3
index 97ebd2be..8cf8c020 100644
--- a/docs/libcurl/opts/CURLINFO_CERTINFO.3
+++ b/docs/libcurl/opts/CURLINFO_CERTINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
diff --git a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
index 9521cd2b..b14b9f9f 100644
--- a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
+++ b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
index 8d55ff6f..87b30b63 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONNECT_TIME 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
@@ -32,6 +32,8 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
Pass a pointer to a double to receive the total time in seconds from the start
until the connection to the remote host (or proxy) was completed.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
index d06399f8..042b0f27 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
@@ -31,6 +31,9 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *ti
.SH DESCRIPTION
Pass a pointer to a curl_off_t to receive the total time in microseconds
from the start until the connection to the remote host (or proxy) was completed.
+
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
index fe2fd079..253fc7f9 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
index a5a18145..3b2d0d59 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
index 8ca7f7c5..9e09062c 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
index b063590a..c723d200 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
index dc7761db..4f35fabf 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
diff --git a/docs/libcurl/opts/CURLINFO_COOKIELIST.3 b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
index c738a7ef..727bb1cc 100644
--- a/docs/libcurl/opts/CURLINFO_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
diff --git a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
index 550e0476..d04edb94 100644
--- a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
+++ b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME.3 b/docs/libcurl/opts/CURLINFO_FILETIME.3
index 1029db81..45269dd2 100644
--- a/docs/libcurl/opts/CURLINFO_FILETIME.3
+++ b/docs/libcurl/opts/CURLINFO_FILETIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME_T.3 b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
index c9629490..717345de 100644
--- a/docs/libcurl/opts/CURLINFO_FILETIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
diff --git a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
index 5055b0a2..c82b23f2 100644
--- a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
+++ b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
diff --git a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
index f9694a8b..f3a91c76 100644
--- a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
diff --git a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
index 8738a214..edf9b7b9 100644
--- a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
index 2a0b3df9..616dd603 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
index 4cb3533e..543758bd 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_HTTP_VERSION 3 "May 11, 2016" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_VERSION 3 "August 07, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
@@ -29,9 +29,10 @@ CURLINFO_HTTP_VERSION \- get the http version used in the connection
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);
.SH DESCRIPTION
-Pass a pointer to a long to receive the version used in the last http connection.
-The returned value will be CURL_HTTP_VERSION_1_0, CURL_HTTP_VERSION_1_1, or
-CURL_HTTP_VERSION_2_0, or 0 if the version can't be determined.
+Pass a pointer to a long to receive the version used in the last http
+connection. The returned value will be CURL_HTTP_VERSION_1_0,
+CURL_HTTP_VERSION_1_1, CURL_HTTP_VERSION_2_0, CURL_HTTP_VERSION_3 or 0 if the
+version can't be determined.
.SH PROTOCOLS
HTTP
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
index 1a0a99e6..f70e0dcf 100644
--- a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
index 9acb6d2e..05a8e842 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
index a90158cb..c42b910b 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
index 2e3318d6..5838022d 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
@@ -32,6 +32,8 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep
Pass a pointer to a double to receive the total time in seconds from the start
until the name resolving was completed.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
index 8edad92d..25c64dc8 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
@@ -32,6 +32,8 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t
Pass a pointer to a curl_off_t to receive the total time in microseconds
from the start until the name resolving was completed.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
index 0d0bc7a1..0d7e80bc 100644
--- a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
+++ b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
diff --git a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
index a7fb225c..1004e2c8 100644
--- a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
+++ b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
index fcf4392c..6b6cb9db 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
@@ -35,6 +35,8 @@ pre-transfer commands and negotiations that are specific to the particular
protocol(s) involved. It does \fInot\fP involve the sending of the protocol-
specific request that triggers a transfer.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
index 42aa1b25..b8e10043 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
@@ -36,6 +36,8 @@ pre-transfer commands and negotiations that are specific to the particular
protocol(s) involved. It does \fInot\fP involve the sending of the protocol-
specific request that triggers a transfer.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
index c2e5f2f7..202c4f91 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
index 2a6781d1..97a654de 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
diff --git a/docs/libcurl/opts/CURLINFO_PRIVATE.3 b/docs/libcurl/opts/CURLINFO_PRIVATE.3
index ac234b36..afb0b4e0 100644
--- a/docs/libcurl/opts/CURLINFO_PRIVATE.3
+++ b/docs/libcurl/opts/CURLINFO_PRIVATE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PRIVATE \- get the private pointer
diff --git a/docs/libcurl/opts/CURLINFO_PROTOCOL.3 b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
index f33aa38f..d0141005 100644
--- a/docs/libcurl/opts/CURLINFO_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
index 7e46e1cd..8b7973ae 100644
--- a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
index 7bca293c..afda5d6d 100644
--- a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
index 71f1d457..8fbef50e 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
index 9ce2f515..89e2540b 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
index 34a2228e..d1c8a6ec 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
index 2ec26caf..6b12c3be 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
diff --git a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
index 10c15b91..3a62694d 100644
--- a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
diff --git a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
index 37a4c666..3a486489 100644
--- a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
+++ b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
diff --git a/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 b/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3
new file mode 100644
index 00000000..e4c16f29
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3
@@ -0,0 +1,64 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RETRY_AFTER 3 "August 06, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
+
+.SH NAME
+CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t *retry);
+.SH DESCRIPTION
+Pass a pointer to a curl_off_t variable to receive the number of seconds the
+HTTP server suggesets the client should wait until the next request is
+issued. The information from the "Retry-After:" header.
+
+While the HTTP header might contain a fixed date string, the
+\fICURLINFO_RETRY_AFTER(3)\fP will alwaus return number of seconds to wait -
+or zero if there was no header or the header couldn't be parsed.
+.SH DEFAULT
+Returns zero delay if there was no header.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ CURLcode res;
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+ res = curl_easy_perform(curl);
+ if(res == CURLE_OK) {
+ curl_off_t wait = 0;
+ curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &wait);
+ if(wait)
+ printf("Wait for %" CURL_FORMAT_CURL_OFF_T " seconds\\n", wait);
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in curl 7.66.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STDERR "(3), " CURLOPT_HEADERFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
index 0daa988c..a4d7adca 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
index 050d6ca5..fb4bb96c 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
index a0a51e9c..74495e2a 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
index 758cfa07..33dbee09 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
diff --git a/docs/libcurl/opts/CURLINFO_SCHEME.3 b/docs/libcurl/opts/CURLINFO_SCHEME.3
index 7d4ef0f2..15fc3408 100644
--- a/docs/libcurl/opts/CURLINFO_SCHEME.3
+++ b/docs/libcurl/opts/CURLINFO_SCHEME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
index 4b1d4e02..df0fb2cf 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
index 8e520aac..f55f4c79 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
index 8706cf99..91b329c5 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
index 2999eebd..a1dae53e 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
index 05ce5ec2..47ccef02 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
index b5497861..36aae6aa 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
index 8eb3f31e..67547759 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
index b224eb9e..4164cbe3 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
diff --git a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
index e8970276..9ea8ac7b 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
diff --git a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
index 189443d5..b07e59d9 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
index 43761656..dfcbf087 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
@@ -34,6 +34,8 @@ start until the first byte is received by libcurl. This includes
\fICURLINFO_PRETRANSFER_TIME(3)\fP and also the time the server needs to
calculate the result.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
index e7e72b12..f2cca5fe 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
@@ -35,6 +35,8 @@ start until the first byte is received by libcurl. This includes
\fICURLINFO_PRETRANSFER_TIME_T(3)\fP and also the time the server needs to
calculate the result.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
index 06844cc5..da799642 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
index 2f77c128..37720ba0 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TLS_SSL_PTR 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SSL_PTR 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
index 2b0dbd79..885992b0 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TOTAL_TIME 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
@@ -33,6 +33,8 @@ Pass a pointer to a double to receive the total time in seconds for the
previous transfer, including name resolving, TCP connect etc. The double
represents the time in seconds, including fractions.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
index 2e13883c..dae059a7 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2018" "libcurl 7.65.3" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"
.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
@@ -33,6 +33,8 @@ Pass a pointer to a curl_off_t to receive the total time in microseconds
for the previous transfer, including name resolving, TCP connect etc.
The curl_off_t represents the time in microseconds.
+When a redirect is followed, the time from each request is added together.
+
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
.SH PROTOCOLS
All
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
index 9a9964c6..957ba398 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
index 04b06d94..9fdb8fd1 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
index bb5c6cb8..bd830137 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
index aca764b7..2e204518 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
index 1321c57d..788e24d0 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 05, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
index e23a054f..e3e1debc 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index fd05ad25..0b5fc1e3 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING 3 "April 05, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
index e2987d13..599bf927 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 05, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
index 371dc524..6113e7c0 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 05, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
index f3f76d31..b55d41c9 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
index 0f231260..bec3c270 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
index 7a0b08a3..dc6bc01e 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
index e363a5dc..21429cd5 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETFUNCTION 3 "June 24, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETFUNCTION 3 "June 24, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
index d27d37a5..b98c37c6 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
index 02c92a1b..46e7619e 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_TIMERFUNCTION 3 "May 03, 2019" "libcurl 7.65.3" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERFUNCTION 3 "May 03, 2019" "libcurl 7.66.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
diff --git a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
index 842ca647..b94156ed 100644
--- a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
index 82dcb813..02348b95 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
index f01b9d5a..cf877ab2 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
index 5cc8158d..b9149973 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ADDRESS_SCOPE 3 "March 07, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ADDRESS_SCOPE 3 "March 07, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses
diff --git a/docs/libcurl/opts/CURLOPT_ALTSVC.3 b/docs/libcurl/opts/CURLOPT_ALTSVC.3
index 9529d5b0..fe819f6f 100644
--- a/docs/libcurl/opts/CURLOPT_ALTSVC.3
+++ b/docs/libcurl/opts/CURLOPT_ALTSVC.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ALTSVC 3 "April 03, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ALTSVC 3 "August 14, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ALTSVC \- set alt-svc cache file name
@@ -40,6 +40,8 @@ Pass in a pointer to a \fIfilename\fP to instruct libcurl to use that file as
the Alt-Svc cache to read existing cache contents from and possibly also write
it back to a after a transfer, unless \fBCURLALTSVC_READONLYFILE\fP is set in
\fICURLOPT_ALTSVC_CTRL(3)\fP.
+
+Specify a blank file name ("") to make libcurl not load from a file at all.
.SH DEFAULT
NULL. The alt-svc cache is not read nor written to file.
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 b/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
index db0fe359..425bd647 100644
--- a/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
+++ b/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ALTSVC_CTRL 3 "April 03, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ALTSVC_CTRL 3 "August 13, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
@@ -29,7 +29,6 @@ CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
#include <curl/curl.h>
#define CURLALTSVC_IMMEDIATELY (1<<0)
-#define CURLALTSVC_ALTUSED (1<<1)
#define CURLALTSVC_READONLYFILE (1<<2)
#define CURLALTSVC_H1 (1<<3)
#define CURLALTSVC_H2 (1<<4)
@@ -54,10 +53,8 @@ sure both the source and the destination are legitimate.
Setting any bit will enable the alt-svc engine.
.IP "CURLALTSVC_IMMEDIATELY"
If an Alt-Svc: header is received, this instructs libcurl to switch to one of
-those alternatives asap rather than to save it and use for the next request.
-.IP "CURLALTSVC_ALTUSED"
-Issue the Alt-Used: header in all requests that have been redirected by
-alt-svc.
+those alternatives asap rather than to save it and use for the next
+request. (Not currently supported).
.IP "CURLALTSVC_READONLYFILE"
Do not write the alt-svc cache back to the file specified with
\fICURLOPT_ALTSVC(3)\fP even if it gets updated. By default a file specified
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.3 b/docs/libcurl/opts/CURLOPT_APPEND.3
index 562c0cfc..8169f2d7 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.3
+++ b/docs/libcurl/opts/CURLOPT_APPEND.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
index b8bb2c59..463a3967 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
index ef41c118..76fc1563 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
index 2a247b2f..75514957 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CAINFO 3 "June 10, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CAINFO 3 "June 10, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
index 475d3d21..119a2e34 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
index e310abc4..b01d87b7 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
index 8e6833f6..978ab0bc 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 03, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 03, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
index d398906d..a07247c1 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
index eafec071..7af238f3 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
index 3f33a340..90a67684 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
index e9421fc8..eca5bb13 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
index 43dde7c5..72696a8f 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
index 4b1358d3..3e20d078 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
index 6643b524..ca9b8de3 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
index 65632f38..b670aa67 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
index 1d76c13f..e135988b 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
index fc97073d..71647766 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
index 9172aad3..a50c3849 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
index c2ff78d7..e5dc51b9 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
index ba9637ba..4c9f8833 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
index a99af633..b4e3f246 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
index 2c416384..ff67a410 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
index 7478bc81..29bdab84 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
index d97d2d9c..b90afab7 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.3 b/docs/libcurl/opts/CURLOPT_CRLF.3
index beaca2f7..e9013be3 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.3
+++ b/docs/libcurl/opts/CURLOPT_CRLF.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_CRLFILE.3
index e722789f..bb582f5c 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
diff --git a/docs/libcurl/opts/CURLOPT_CURLU.3 b/docs/libcurl/opts/CURLOPT_CURLU.3
index 12aaf586..007f012d 100644
--- a/docs/libcurl/opts/CURLOPT_CURLU.3
+++ b/docs/libcurl/opts/CURLOPT_CURLU.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CURLU 3 "January 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CURLU 3 "January 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
index 69cf52e5..1a8aa1d5 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
index 892b567c..8e5379fb 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
index 3b389425..4c90f9f5 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
diff --git a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
index 0d5b8d00..6c3b1adb 100644
--- a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
index 24ea74cf..03d97599 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
diff --git a/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 b/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
index 588d656e..2aef7079 100644
--- a/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
+++ b/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
index 84450633..044a3b74 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
index 514d7fae..e970b638 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
index f3383b33..0c86ef83 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
index 04a17094..742cef5e 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
index 296aafe4..15df63b2 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
index 9f95b297..6081c775 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
index 7021b97e..43d0e66d 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "March 07, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "March 07, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
diff --git a/docs/libcurl/opts/CURLOPT_DOH_URL.3 b/docs/libcurl/opts/CURLOPT_DOH_URL.3
index daa63ac3..1fe5e22a 100644
--- a/docs/libcurl/opts/CURLOPT_DOH_URL.3
+++ b/docs/libcurl/opts/CURLOPT_DOH_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
index 2cc85e79..8e6c6ed4 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
index 7ddad812..0273cabe 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
index 72da7aff..4c755afe 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
index 1a33b56a..72b4a378 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.3
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.3 b/docs/libcurl/opts/CURLOPT_FILETIME.3
index 119e6c41..5ce110cb 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.3
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
index 5557fca1..119acffd 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
index 977c8924..77215782 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
index 42a61106..68eeecba 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FOLLOWLOCATION 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FOLLOWLOCATION 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
index c11c66cd..262ca893 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
index a7c3ae17..76b4c86d 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/docs/libcurl/opts/CURLOPT_FTPPORT.3
index 35158d08..6c6426e6 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.3
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
index 9e0eaa77..c123b28b 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
index b1f03eec..4dbf50b5 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
index d7f3f358..7e8ea116 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
index 4e8530ea..4be48b50 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
index c562e105..c918d32c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
index 70d55df3..82564a68 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
index faf80715..5a280a79 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
index 7bd78c06..8ff3d5cd 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
index 4bd11502..2780560c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
index eac1e182..0548b722 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
index 52b53fea..549a7aca 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
index ca478fc8..07c2b99f 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
diff --git a/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
index 009dee88..2568afa3 100644
--- a/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
diff --git a/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
index 8dbed46d..62df5fcc 100644
--- a/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
+++ b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
index 7f057f44..929d34a6 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HEADER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
index 8ea6c067..26062a9e 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
index 5541b2d2..f4afcaaa 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADERFUNCTION 3 "November 22, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HEADERFUNCTION 3 "August 27, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
@@ -53,7 +53,7 @@ an error to the library. This will cause the transfer to get aborted and the
libcurl function in progress will return \fICURLE_WRITE_ERROR\fP.
A complete HTTP header that is passed to this function can be up to
-\fICURL_MAX_HTTP_HEADER\fP (100K) bytes.
+\fICURL_MAX_HTTP_HEADER\fP (100K) bytes and includes the final line terminator.
If this option is not set, or if it is set to NULL, but
\fICURLOPT_HEADERDATA(3)\fP is set to anything but NULL, the function used to
@@ -68,6 +68,9 @@ negotiation. If you need to operate on only the headers from the final
response, you will need to collect headers in the callback yourself and use
HTTP status lines, for example, to delimit response boundaries.
+For an HTTP transfer, the status line and the blank line preceding the response
+body are both included as headers and passed to this function.
+
When a server sends a chunked encoded transfer, it may contain a trailer. That
trailer is identical to an HTTP header and if such a trailer is received it is
passed to the application using this callback as well. There are several ways
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
index 4ae5aadd..40127263 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.3
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HEADEROPT 3 "July 03, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HEADEROPT 3 "July 03, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
diff --git a/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 b/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
index 1209e5e4..e1047577 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP09_ALLOWED 3 "December 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTP09_ALLOWED 3 "August 05, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
@@ -32,12 +32,12 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);
Pass the long argument \fIallowed\fP set to 1L to allow HTTP/0.9 responses.
A HTTP/0.9 response is a server response entirely without headers and only a
-body, while you can connect to lots of random TCP services and still get a
-response that curl might consider to be HTTP/0.9.
+body. You can connect to lots of random TCP services and still get a response
+that curl might consider to be HTTP/0.9!
.SH DEFAULT
-curl allows HTTP/0.9 responses by default.
+curl allowed HTTP/0.9 responses by default before 7.66.0
-A future curl version will require this option to be set to allow HTTP/0.9
+Since 7.66.0, libcurl requires this option set to 1L to allow HTTP/0.9
responses.
.SH PROTOCOLS
HTTP
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
index d7b59732..5daa2523 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
index 68d0a518..97199167 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/docs/libcurl/opts/CURLOPT_HTTPGET.3
index f885ff67..8b032e35 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
index 48981dd6..7b702f41 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
index 398dcce6..530c17ae 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
index ee88f445..7192b863 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
index 1c341069..cbfb11ac 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
index 068285a7..284f9e6a 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
index fa621a3a..28395dae 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_HTTP_VERSION 3 "June 25, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_VERSION 3 "August 09, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
@@ -58,6 +58,14 @@ Issue non-TLS HTTP requests using HTTP/2 without HTTP/1.1 Upgrade. It requires
prior knowledge that the server supports HTTP/2 straight away. HTTPS requests
will still do HTTP/2 the standard way with negotiated protocol version in the
TLS handshake. (Added in 7.49.0)
+.IP CURL_HTTP_VERSION_3
+(Added in 7.66.0) Setting this value will make libcurl attempt to use HTTP/3
+directly to server given in the URL. Note that this cannot gracefully
+downgrade to earlier HTTP version if the server doesn't support HTTP/3.
+
+For more reliably upgrading to HTTP/3, set the prefered version to something
+lower and let the server announce its HTTP/3 support via Alt-Svc:. See
+\fICURLOPT_ALTSVC(3)\fP.
.SH DEFAULT
Since curl 7.62.0: CURL_HTTP_VERSION_2TLS
@@ -83,4 +91,4 @@ Along with HTTP
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_SSLVERSION "(3), " CURLOPT_HTTP200ALIASES "(3), "
-.BR CURLOPT_HTTP09_ALLOWED "(3), "
+.BR CURLOPT_HTTP09_ALLOWED "(3), " CURLOPT_ALTSVC "(3) "
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
index c73dfd08..68be6645 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
index d5985f28..2d9a51d6 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
index f0e09c42..e73e78f6 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_INTERFACE.3
index 4a738a9b..36e51e02 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
index 70155641..50ca0b02 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
index 201d55d5..73b6d5c3 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
index 6da93511..8fedf2a3 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
index 03e296e2..db0108fc 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
index c26b75a4..94591c30 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
index c74dcf64..98562ff1 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
diff --git a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
index f59bf71a..914d581c 100644
--- a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
+++ b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
index 199bdf5d..3fee45ef 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
index ca5b19fc..a7ebf578 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
index b599a200..d8adb3f4 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOCALPORT 3 "January 31, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORT 3 "January 31, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
index 4af9c3e2..4e1c3201 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOCALPORTRANGE 3 "January 31, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORTRANGE 3 "January 31, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
index e092f06b..c69d2b34 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
index 510bd03d..f03ca8c0 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
index ec5062b8..795aba7a 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
index 3b79034c..981e5907 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
index 55cb9ff8..a682b4ce 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
index 61e9c95c..651a3666 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAIL_RCPT 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_RCPT 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
diff --git a/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 b/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
index bf96d5b5..d7f298e3 100644
--- a/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
+++ b/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXAGE_CONN 3 "April 14, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAXAGE_CONN 3 "April 14, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
index 9badf0ca..060a3bd2 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
index b42c44f7..6095320d 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
index 29ec3867..1bcf2cd3 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
index 572cf9ef..2c18feda 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
index 4329b4cf..32db5757 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
index 116b58ab..ece0e217 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
diff --git a/docs/libcurl/opts/CURLOPT_MIMEPOST.3 b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
index ef9e2110..102e4779 100644
--- a/docs/libcurl/opts/CURLOPT_MIMEPOST.3
+++ b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.3 b/docs/libcurl/opts/CURLOPT_NETRC.3
index 6ffac178..42bc743e 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NETRC \- request that .netrc is used
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
index 0f0f2617..ba3d3292 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
index a55eadb5..702af6d7 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
index d5d16e59..88d2b8b1 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.3 b/docs/libcurl/opts/CURLOPT_NOBODY.3
index 9458b082..a15d6e02 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.3
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
index 20b1d6f7..c6bcbe29 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
index ec1fbe79..719f3236 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
index ff34d0d4..f93af34a 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
index 4a2b6ec4..fbbaa4f3 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
index 64a29baa..56e8f00f 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PASSWORD.3
index d30a4e51..9a8caf23 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
index 2d7d9d2a..e367aa1d 100644
--- a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
index ae41e87a..af7d1e7e 100644
--- a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PINNEDPUBLICKEY 3 "June 02, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "June 02, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
index 34cfd3a6..49a97dad 100644
--- a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
diff --git a/docs/libcurl/opts/CURLOPT_PORT.3 b/docs/libcurl/opts/CURLOPT_PORT.3
index 8596c265..af8c3396 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.3
+++ b/docs/libcurl/opts/CURLOPT_PORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PORT \- set remote port number to work with
diff --git a/docs/libcurl/opts/CURLOPT_POST.3 b/docs/libcurl/opts/CURLOPT_POST.3
index 200d1ce8..fefa9b1d 100644
--- a/docs/libcurl/opts/CURLOPT_POST.3
+++ b/docs/libcurl/opts/CURLOPT_POST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POST 3 "May 21, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_POST 3 "July 22, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POST \- request an HTTP POST
@@ -56,7 +56,8 @@ If you use POST to an HTTP 1.1 server, you can send data without knowing the
size before starting the POST if you use chunked encoding. You enable this by
adding a header like "Transfer-Encoding: chunked" with
\fICURLOPT_HTTPHEADER(3)\fP. With HTTP 1.0 or without chunked transfer, you
-must specify the size in the request.
+must specify the size in the request. (Since 7.66.0, libcurl will
+automatically use chunked encoding for POSTs if the size is unknown.)
When setting \fICURLOPT_POST(3)\fP to 1, libcurl will automatically set
\fICURLOPT_NOBODY(3)\fP and \fICURLOPT_HTTPGET(3)\fP to 0.
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
index 0dcc948b..641d7dd1 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
index 678bc888..78eea441 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
index b5ef0466..d30e5d40 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
index 8946daf1..69bbd0c8 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
index 1326d5c0..0715e203 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.3
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
index ec8d3fc7..51eda9cb 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
diff --git a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
index 8e9168e7..1dfe4fe1 100644
--- a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
index e95b651b..eb9e6ea8 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.3
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PRIVATE \- store a private pointer
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
index 4dee6d8e..500b24df 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
index b5fa895f..c619e0aa 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
index 99f5fa58..eecd13a5 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.3 b/docs/libcurl/opts/CURLOPT_PROXY.3
index 9b88d912..7e63f575 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY \- set proxy to use
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
index 4b51c3d1..d2d82865 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
index b71766a3..2ae77908 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
index 75728c4c..cbef3050 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
index 91ae5e05..4cc18957 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
index fcb0d151..d1fab6c3 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
index e5c4b657..71fec291 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
index ac322782..a429e22d 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
index 3582e397..0b218b97 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
index 1112a0e0..d6232361 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CAPATH 3 "May 15, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAPATH 3 "May 15, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
index 1f1a975e..95d9f3b1 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
index 57005236..8c1e9d66 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
index 8f689882..a075a460 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 15, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 15, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
index d26a1635..435c084c 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
index 1ad31df9..16484475 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
index 97baba81..eff8cfd5 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
index 6a691b5e..19f06fb9 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
index 4569cad0..e2306e76 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
index 9391e8c2..8c74c9f7 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSLVERSION 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLVERSION 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
index d03598dc..af988088 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
index 82d9acd4..b3f9a41f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
index 284d3d1c..aa393a71 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 02, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
@@ -43,8 +43,15 @@ Curl considers the proxy the intended one when the Common Name field or a
Subject Alternate Name field in the certificate matches the host name in the
proxy string which you told curl to use.
-When the \fIverify\fP value is 1L, \fIcurl_easy_setopt\fP will return an error
-and the option value will not be changed due to old legacy reasons.
+If \fIverify\fP value is set to 1:
+
+In 7.28.0 and earlier: treated as a debug option of some sorts, not supported
+anymore due to frequently leading to programmer mistakes.
+
+From 7.28.1 to 7.65.3: setting it to 1 made curl_easy_setopt() return an error
+and leaving the flag untouched.
+
+From 7.66.0: treats 1 and 2 the same.
When the \fIverify\fP value is 0L, the connection succeeds regardless of the
names used in the certificate. Use that ability with caution!
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
index 340bd09f..9d8c5222 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
index 6e6ef06f..5d69d561 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "May 27, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "May 27, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
index 34508d0a..d3448b16 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
index 43939b42..d1a43b28 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
index a85b1111..1c5720da 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
index c6aef6b7..6726022f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
diff --git a/docs/libcurl/opts/CURLOPT_PUT.3 b/docs/libcurl/opts/CURLOPT_PUT.3
index 917f50e5..2283841c 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.3
+++ b/docs/libcurl/opts/CURLOPT_PUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.3 b/docs/libcurl/opts/CURLOPT_QUOTE.3
index 6fd05957..341d1fd9 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
index debff9fb..6f78448d 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.3 b/docs/libcurl/opts/CURLOPT_RANGE.3
index e6cd269f..0406c283 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.3
+++ b/docs/libcurl/opts/CURLOPT_RANGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RANGE 3 "July 17, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RANGE 3 "July 17, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RANGE \- set byte range to request
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
index ba9e3e29..a0747eff 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.3
+++ b/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
index c8e51734..1994ff9d 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_READFUNCTION 3 "May 15, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_READFUNCTION 3 "August 12, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
@@ -70,8 +70,37 @@ The default internal read callback is fread().
.SH PROTOCOLS
This is used for all protocols when doing uploads.
.SH EXAMPLE
-Here's an example setting a read callback for reading that to upload to an FTP
-site: https://curl.haxx.se/libcurl/c/ftpupload.html
+.nf
+size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userdata)
+{
+ FILE *readhere = (FILE *)userdata;
+ curl_off_t nread;
+
+ /* copy as much data as possible into the 'ptr' buffer, but no more than
+ 'size' * 'nmemb' bytes! */
+ size_t retcode = fread(ptr, size, nmemb, readhere);
+
+ nread = (curl_off_t)retcode;
+
+ fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T
+ " bytes from file\\n", nread);
+ return retcode;
+}
+
+void setup(char *uploadthis)
+{
+ FILE *file = fopen("rb", uploadthis);
+ CURLcode result;
+
+ /* set callback to use */
+ curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
+
+ /* pass in suitable argument to callback */
+ curl_easy_setopt(curl, CURLOPT_READDATA, uploadthis);
+
+ result = curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT
was added in 7.12.1.
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
index fbba225d..3b757caa 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REDIR_PROTOCOLS 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_REDIR_PROTOCOLS 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
index c52e0110..d59ee3b0 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.3
+++ b/docs/libcurl/opts/CURLOPT_REFERER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
diff --git a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
index 66ac8c40..d743f6a2 100644
--- a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
+++ b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
index 8e477025..d6cfc9a7 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
index 967012b5..071beaf4 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
index 61b51bcd..6e5274ce 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
index fe023f74..cebe4f73 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
index a89ea2c1..2b7c2b48 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
index 42ccebdb..1ae220ad 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
index 3695b992..36c042d9 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_REQUEST 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_REQUEST 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
index b2149e6b..5d0956fc 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
index 0cce1761..553a989e 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
index fcc74199..bb2abf56 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_STREAM_URI 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_STREAM_URI 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
index 2e73dd48..fe1d10ff 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
diff --git a/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 b/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3
new file mode 100644
index 00000000..65445475
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3
@@ -0,0 +1,64 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_SASL_AUTHZID 3 "11 Sep 2019" "libcurl 7.66.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_SASL_AUTHZID \- authorisation identity (identity to act as)
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_AUTHZID, char *authzid);
+.SH DESCRIPTION
+Pass a char * as parameter, which should be pointing to the zero terminated
+authorisation identity (authzid) for the transfer. Only applicable to the PLAIN
+SASL authentication mechanism where it is optional.
+
+When not specified only the authentication identity (authcid) as specified by
+the username will be sent to the server, along with the password. The server
+will derive a authzid from the authcid when not provided, which it will then
+uses internally.
+
+When the authzid is specified, the use of which is server dependent, it can be
+used to access another user's inbox, that the user has been granted access to,
+or a shared mailbox for example.
+.SH DEFAULT
+blank
+.SH PROTOCOLS
+IMAP, POP3 and SMTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "imap://example.com/");
+ curl_easy_setopt(curl, CURLOPT_USERNAME, "Kurt");
+ curl_easy_setopt(curl, CURLOPT_PASSWORD, "xipj3plmq");
+ curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "Ursel");
+ ret = curl_easy_perform(curl);
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.66.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_USERNAME "(3), " CURLOPT_PASSWORD "(3), ".BR CURLOPT_USERPWD "(3)"
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/docs/libcurl/opts/CURLOPT_SASL_IR.3
index 29b983eb..1256f5bd 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.3
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
index b59bff7b..efd6b45d 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SEEKDATA 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SEEKDATA 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
index e6f63416..ecec26dc 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
index 59f7db79..5ab8819d 100644
--- a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.3 b/docs/libcurl/opts/CURLOPT_SHARE.3
index ca9cb751..32bdb3cc 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.3
+++ b/docs/libcurl/opts/CURLOPT_SHARE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SHARE \- specify share handle to use
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
index 5fb4057c..f06df5e2 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
index 91cf8ef7..d2537aaf 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
index 51b38f4e..b5a8cf38 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
index fd6a289a..5968ac6b 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
index 2a84bf8d..c54c2c20 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
index 3457e2a4..5b26f02b 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
diff --git a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
index 6a6bc851..fa9d8242 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
index 38c4e8a2..97d3e6d1 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
index 7a8d7e8b..cf1aa37f 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
index cedf9d7a..8d5bde0c 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
index 8325b886..77845388 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
index 7f103826..e9b6b5c7 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
index 6779452a..ec4ae399 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_SSLCERT.3
index a9ff5f93..fbccdfa9 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
index 138338ef..1603884d 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
index 678d763d..46ebefec 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
index 0e0917d6..2fc37c52 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_SSLKEY.3
index 546b10a5..cec31ff7 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
index 07a2e815..993b8aeb 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
index 8b2b4c6e..553f2b64 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSLVERSION 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSLVERSION 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
index ab78b1e1..e88eacc7 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
index 2044c300..f7156b88 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CTX_DATA 3 "June 02, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_DATA 3 "June 02, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
index 148846a7..fd8b8d0b 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_CTX_FUNCTION 3 "June 02, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_FUNCTION 3 "June 02, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
index 1bb9533b..58828a8b 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
index f781edf0..048d03b6 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
index 5a0f1a23..5b6736dc 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
index 32a61f48..dded0575 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
index be9adb18..a4318e56 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
index e11b372d..8c016e59 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
@@ -5,7 +5,7 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYHOST 3 "February 02, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
@@ -46,11 +46,15 @@ Curl considers the server the intended one when the Common Name field or a
Subject Alternate Name field in the certificate matches the host name in the
URL to which you told Curl to connect.
-When the \fIverify\fP value is 1, \fIcurl_easy_setopt\fP will return an error
-and the option value will not be changed. It was previously (in 7.28.0 and
-earlier) a debug option of some sorts, but it is no longer supported due to
-frequently leading to programmer mistakes. Future versions will stop returning
-an error for 1 and just treat 1 and 2 the same.
+If \fIverify\fP value is set to 1:
+
+In 7.28.0 and earlier: treated as a debug option of some sorts, not supported
+anymore due to frequently leading to programmer mistakes.
+
+From 7.28.1 to 7.65.3: setting it to 1 made curl_easy_setopt() return an error
+and leaving the flag untouched.
+
+From 7.66.0: treats 1 and 2 the same.
When the \fIverify\fP value is 0, the connection succeeds regardless of the
names in the certificate. Use that ability with caution!
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
index 0eaebb06..20c33b94 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
index 3d4d918a..186dfc97 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
index 87f68ab2..ae0d1968 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.3
+++ b/docs/libcurl/opts/CURLOPT_STDERR.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
index 5bcc6584..2083b011 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
index d16443f8..caf635f3 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
index d2bcf0a9..7c4a87e2 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
diff --git a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
index 16ddd880..459a88d2 100644
--- a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
+++ b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
diff --git a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
index 7c8c335d..ad2ebd36 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
index ef8d24d0..9390d1c9 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
index 722f958c..82ecf425 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
index ffbd8503..8eb8b4e8 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
index a642f096..9f52b262 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
index 6610fbf0..a23b1b56 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
index e6948d6d..8de6d782 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
index 5015fa39..781e3a34 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
index babd9e72..62f10594 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
index 66605a16..7f8a32f7 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
index 0592b47a..6371f72f 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
index a305373d..74b24f20 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
index 3436e986..43dd3b85 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
diff --git a/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 b/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
index e4956391..f0db0889 100644
--- a/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
+++ b/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLS13_CIPHERS 3 "May 27, 2019" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TLS13_CIPHERS 3 "May 27, 2019" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
index e972edfa..27624722 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
index 0cfa5bb7..766482d0 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
index 877eb7fd..8ff70be1 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 b/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
index a01529c8..e248473a 100644
--- a/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_TRAILERDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRAILERDATA 3 "December 14, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERDATA 3 "December 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME:
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
diff --git a/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
index ed9355fc..3a4c4c02 100644
--- a/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRAILERFUNCTION 3 "December 14, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERFUNCTION 3 "December 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME:
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
index 0619300f..0f7e8f20 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
index 6408725c..615c1b20 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
index c18fb026..1cfcef0b 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
index 0ea12d16..3751b696 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/docs/libcurl/opts/CURLOPT_UPLOAD.3
index 42a1ca6e..ed1268c2 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UPLOAD \- enable data upload
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
index 81dd95e1..88f1e555 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
diff --git a/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
index 8966516e..17af0709 100644
--- a/docs/libcurl/opts/CURLOPT_URL.3
+++ b/docs/libcurl/opts/CURLOPT_URL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_URL \- provide the URL to use in the request
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
index fb0cd5ba..6c53c9b1 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.3
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.3 b/docs/libcurl/opts/CURLOPT_USERNAME.3
index 00760cc9..036e1d86 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.3 b/docs/libcurl/opts/CURLOPT_USERPWD.3
index f7f921d2..50a2f7a5 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/docs/libcurl/opts/CURLOPT_USE_SSL.3
index bc3ac6b1..e248dd61 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.3
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/docs/libcurl/opts/CURLOPT_VERBOSE.3
index 87b984b8..70f2f058 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.3
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
index 51fbcffc..5717d13a 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
index fdc6bec2..8e9cc5f2 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
index 5b3bac0b..71afb185 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
index ef524724..23eb16fb 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
index 3f885ea4..94824800 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
index 29cbca03..cad0417e 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.65.3" "curl_easy_setopt options"
+.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.66.0" "curl_easy_setopt options"
.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
diff --git a/docs/libcurl/opts/Makefile.in b/docs/libcurl/opts/Makefile.in
index 80a9662e..0cde6ab6 100644
--- a/docs/libcurl/opts/Makefile.in
+++ b/docs/libcurl/opts/Makefile.in
@@ -325,8 +325,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -435,6 +439,7 @@ man_MANS = \
CURLINFO_REDIRECT_URL.3 \
CURLINFO_REQUEST_SIZE.3 \
CURLINFO_RESPONSE_CODE.3 \
+ CURLINFO_RETRY_AFTER.3 \
CURLINFO_RTSP_CLIENT_CSEQ.3 \
CURLINFO_RTSP_CSEQ_RECV.3 \
CURLINFO_RTSP_SERVER_CSEQ.3 \
@@ -664,6 +669,7 @@ man_MANS = \
CURLOPT_RTSP_SESSION_ID.3 \
CURLOPT_RTSP_STREAM_URI.3 \
CURLOPT_RTSP_TRANSPORT.3 \
+ CURLOPT_SASL_AUTHZID.3 \
CURLOPT_SASL_IR.3 \
CURLOPT_SEEKDATA.3 \
CURLOPT_SEEKFUNCTION.3 \
diff --git a/docs/libcurl/opts/Makefile.inc b/docs/libcurl/opts/Makefile.inc
index c8e15a5e..b5f62a15 100644
--- a/docs/libcurl/opts/Makefile.inc
+++ b/docs/libcurl/opts/Makefile.inc
@@ -43,6 +43,7 @@ man_MANS = \
CURLINFO_REDIRECT_URL.3 \
CURLINFO_REQUEST_SIZE.3 \
CURLINFO_RESPONSE_CODE.3 \
+ CURLINFO_RETRY_AFTER.3 \
CURLINFO_RTSP_CLIENT_CSEQ.3 \
CURLINFO_RTSP_CSEQ_RECV.3 \
CURLINFO_RTSP_SERVER_CSEQ.3 \
@@ -272,6 +273,7 @@ man_MANS = \
CURLOPT_RTSP_SESSION_ID.3 \
CURLOPT_RTSP_STREAM_URI.3 \
CURLOPT_RTSP_TRANSPORT.3 \
+ CURLOPT_SASL_AUTHZID.3 \
CURLOPT_SASL_IR.3 \
CURLOPT_SEEKDATA.3 \
CURLOPT_SEEKFUNCTION.3 \
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index 5244a7cd..9daad949 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -12,7 +12,6 @@
Name Introduced Deprecated Removed
-CURLALTSVC_ALTUSED 7.64.1
CURLALTSVC_H1 7.64.1
CURLALTSVC_H2 7.64.1
CURLALTSVC_H3 7.64.1
@@ -40,6 +39,7 @@ CURLCLOSEPOLICY_SLOWEST 7.7
CURLE_ABORTED_BY_CALLBACK 7.1
CURLE_AGAIN 7.18.2
CURLE_ALREADY_COMPLETE 7.7.2
+CURLE_AUTH_ERROR 7.66.0
CURLE_BAD_CALLING_ORDER 7.1 7.17.0
CURLE_BAD_CONTENT_ENCODING 7.10
CURLE_BAD_DOWNLOAD_RESUME 7.10
@@ -266,6 +266,7 @@ CURLINFO_REDIRECT_TIME_T 7.61.0
CURLINFO_REDIRECT_URL 7.18.2
CURLINFO_REQUEST_SIZE 7.4.1
CURLINFO_RESPONSE_CODE 7.10.8
+CURLINFO_RETRY_AFTER 7.66.0
CURLINFO_RTSP_CLIENT_CSEQ 7.20.0
CURLINFO_RTSP_CSEQ_RECV 7.20.0
CURLINFO_RTSP_SERVER_CSEQ 7.20.0
@@ -554,6 +555,7 @@ CURLOPT_RTSP_SERVER_CSEQ 7.20.0
CURLOPT_RTSP_SESSION_ID 7.20.0
CURLOPT_RTSP_STREAM_URI 7.20.0
CURLOPT_RTSP_TRANSPORT 7.20.0
+CURLOPT_SASL_AUTHZID 7.66.0
CURLOPT_SASL_IR 7.31.0
CURLOPT_SEEKDATA 7.18.0
CURLOPT_SEEKFUNCTION 7.18.0
@@ -786,6 +788,7 @@ CURLVERSION_FOURTH 7.16.1
CURLVERSION_NOW 7.10
CURLVERSION_SECOND 7.11.1
CURLVERSION_THIRD 7.12.0
+CURLVERSION_SIXTH 7.66.0
CURL_CHUNK_BGN_FUNC_FAIL 7.21.0
CURL_CHUNK_BGN_FUNC_OK 7.21.0
CURL_CHUNK_BGN_FUNC_SKIP 7.21.0
@@ -830,6 +833,7 @@ CURL_HTTP_VERSION_2 7.43.0
CURL_HTTP_VERSION_2TLS 7.47.0
CURL_HTTP_VERSION_2_0 7.33.0
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 7.49.0
+CURL_HTTP_VERSION_3 7.66.0
CURL_HTTP_VERSION_NONE 7.9.1
CURL_IPRESOLVE_V4 7.10.8
CURL_IPRESOLVE_V6 7.10.8
@@ -924,6 +928,7 @@ CURL_VERSION_DEBUG 7.10.6
CURL_VERSION_GSSAPI 7.38.0
CURL_VERSION_GSSNEGOTIATE 7.10.6 7.38.0
CURL_VERSION_HTTP2 7.33.0
+CURL_VERSION_HTTP3 7.66.0
CURL_VERSION_HTTPS_PROXY 7.52.0
CURL_VERSION_IDN 7.12.0
CURL_VERSION_IPV6 7.10
diff --git a/include/Makefile.in b/include/Makefile.in
index d7a1094e..971a42c8 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -331,8 +331,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
diff --git a/include/curl/Makefile.in b/include/curl/Makefile.in
index 220d294e..3bd91bbc 100644
--- a/include/curl/Makefile.in
+++ b/include/curl/Makefile.in
@@ -318,8 +318,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -426,9 +430,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/curl/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu include/curl/Makefile
+ $(AUTOMAKE) --foreign include/curl/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 19f6c0b5..ff0c7749 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_CURL_H
-#define __CURL_CURL_H
+#ifndef CURLINC_CURL_H
+#define CURLINC_CURL_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -284,10 +284,7 @@ typedef enum {
#define CURLFINFOFLAG_KNOWN_SIZE (1<<6)
#define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7)
-/* Content of this structure depends on information which is known and is
- achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man
- page for callbacks returning this structure -- some fields are mandatory,
- some others are optional. The FLAG field has special meaning. */
+/* Information about a single file, used when doing FTP wildcard matching */
struct curl_fileinfo {
char *filename;
curlfiletype filetype;
@@ -603,6 +600,8 @@ typedef enum {
*/
CURLE_RECURSIVE_API_CALL, /* 93 - an api function was called from
inside a callback */
+ CURLE_AUTH_ERROR, /* 94 - an authentication function returned an
+ error */
CURL_LAST /* never use! */
} CURLcode;
@@ -886,7 +885,7 @@ typedef enum {
/* CURLALTSVC_* are bits for the CURLOPT_ALTSVC_CTRL option */
#define CURLALTSVC_IMMEDIATELY (1<<0)
-#define CURLALTSVC_ALTUSED (1<<1)
+
#define CURLALTSVC_READONLYFILE (1<<2)
#define CURLALTSVC_H1 (1<<3)
#define CURLALTSVC_H2 (1<<4)
@@ -1925,6 +1924,9 @@ typedef enum {
/* maximum age of a connection to consider it for reuse (in seconds) */
CINIT(MAXAGE_CONN, LONG, 288),
+ /* SASL authorisation identity */
+ CINIT(SASL_AUTHZID, STRINGPOINT, 289),
+
CURLOPT_LASTENTRY /* the last unused */
} CURLoption;
@@ -1978,7 +1980,8 @@ enum {
CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, /* please use HTTP 2 without HTTP/1.1
Upgrade */
-
+ CURL_HTTP_VERSION_3 = 30, /* Makes use of explicit HTTP/3 without fallback.
+ Use CURLOPT_ALTSVC to enable HTTP/3 upgrade */
CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
};
@@ -2614,8 +2617,9 @@ typedef enum {
CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,
CURLINFO_REDIRECT_TIME_T = CURLINFO_OFF_T + 55,
CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,
+ CURLINFO_RETRY_AFTER = CURLINFO_OFF_T + 57,
- CURLINFO_LASTONE = 56
+ CURLINFO_LASTONE = 57
} CURLINFO;
/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
@@ -2714,6 +2718,7 @@ typedef enum {
CURLVERSION_THIRD,
CURLVERSION_FOURTH,
CURLVERSION_FIFTH,
+ CURLVERSION_SIXTH,
CURLVERSION_LAST /* never actually use this */
} CURLversion;
@@ -2722,7 +2727,7 @@ typedef enum {
meant to be a built-in version number for what kind of struct the caller
expects. If the struct ever changes, we redefine the NOW to another enum
from above. */
-#define CURLVERSION_NOW CURLVERSION_FIFTH
+#define CURLVERSION_NOW CURLVERSION_SIXTH
typedef struct {
CURLversion age; /* age of the returned struct */
@@ -2751,11 +2756,16 @@ typedef struct {
const char *libssh_version; /* human readable string */
/* These fields were added in CURLVERSION_FIFTH */
-
unsigned int brotli_ver_num; /* Numeric Brotli version
(MAJOR << 24) | (MINOR << 12) | PATCH */
const char *brotli_version; /* human readable string. */
+ /* These fields were added in CURLVERSION_SIXTH */
+ unsigned int nghttp2_ver_num; /* Numeric nghttp2 version
+ (MAJOR << 16) | (MINOR << 8) | PATCH */
+ const char *nghttp2_version; /* human readable string. */
+ const char *quic_version; /* human readable quic (+ HTTP/3) library +
+ version or NULL */
} curl_version_info_data;
#define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */
@@ -2788,6 +2798,7 @@ typedef struct {
#define CURL_VERSION_MULTI_SSL (1<<22) /* Multiple SSL backends available */
#define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */
#define CURL_VERSION_ALTSVC (1<<24) /* Alt-Svc handling built-in */
+#define CURL_VERSION_HTTP3 (1<<25) /* HTTP3 support built-in */
/*
* NAME curl_version_info()
@@ -2868,4 +2879,4 @@ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
#endif /* __STDC__ >= 1 */
#endif /* gcc >= 4.3 && !__cplusplus */
-#endif /* __CURL_CURL_H */
+#endif /* CURLINC_CURL_H */
diff --git a/include/curl/curlver.h b/include/curl/curlver.h
index 3e8789e8..f537b920 100644
--- a/include/curl/curlver.h
+++ b/include/curl/curlver.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_CURLVER_H
-#define __CURL_CURLVER_H
+#ifndef CURLINC_CURLVER_H
+#define CURLINC_CURLVER_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -30,13 +30,13 @@
/* This is the version number of the libcurl package from which this header
file origins: */
-#define LIBCURL_VERSION "7.65.3"
+#define LIBCURL_VERSION "7.66.0"
/* The numeric version number is also available "in parts" by using these
defines: */
#define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 65
-#define LIBCURL_VERSION_PATCH 3
+#define LIBCURL_VERSION_MINOR 66
+#define LIBCURL_VERSION_PATCH 0
/* This is the numeric version of the libcurl version number, meant for easier
parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
@@ -57,7 +57,7 @@
CURL_VERSION_BITS() macro since curl's own configure script greps for it
and needs it to contain the full number.
*/
-#define LIBCURL_VERSION_NUM 0x074103
+#define LIBCURL_VERSION_NUM 0x074200
/*
* This is the date and time when the full source package was created. The
@@ -68,10 +68,10 @@
*
* "2007-11-23"
*/
-#define LIBCURL_TIMESTAMP "2019-07-19"
+#define LIBCURL_TIMESTAMP "2019-09-11"
#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
(LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
-#endif /* __CURL_CURLVER_H */
+#endif /* CURLINC_CURLVER_H */
diff --git a/include/curl/easy.h b/include/curl/easy.h
index f42a8a96..592f5d3c 100644
--- a/include/curl/easy.h
+++ b/include/curl/easy.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_EASY_H
-#define __CURL_EASY_H
+#ifndef CURLINC_EASY_H
+#define CURLINC_EASY_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
diff --git a/include/curl/mprintf.h b/include/curl/mprintf.h
index e20f546e..f615ed7d 100644
--- a/include/curl/mprintf.h
+++ b/include/curl/mprintf.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_MPRINTF_H
-#define __CURL_MPRINTF_H
+#ifndef CURLINC_MPRINTF_H
+#define CURLINC_MPRINTF_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -47,4 +47,4 @@ CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
}
#endif
-#endif /* __CURL_MPRINTF_H */
+#endif /* CURLINC_MPRINTF_H */
diff --git a/include/curl/multi.h b/include/curl/multi.h
index b19dbaf7..02df0f38 100644
--- a/include/curl/multi.h
+++ b/include/curl/multi.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_MULTI_H
-#define __CURL_MULTI_H
+#ifndef CURLINC_MULTI_H
+#define CURLINC_MULTI_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -173,6 +173,20 @@ CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
int timeout_ms,
int *ret);
+/*
+ * Name: curl_multi_poll()
+ *
+ * Desc: Poll on all fds within a CURLM set as well as any
+ * additional fds passed to the function.
+ *
+ * Returns: CURLMcode type, general multi error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
+ struct curl_waitfd extra_fds[],
+ unsigned int extra_nfds,
+ int timeout_ms,
+ int *ret);
+
/*
* Name: curl_multi_perform()
*
diff --git a/include/curl/stdcheaders.h b/include/curl/stdcheaders.h
index 027b6f42..a6bdc1a2 100644
--- a/include/curl/stdcheaders.h
+++ b/include/curl/stdcheaders.h
@@ -1,5 +1,5 @@
-#ifndef __STDC_HEADERS_H
-#define __STDC_HEADERS_H
+#ifndef CURLINC_STDCHEADERS_H
+#define CURLINC_STDCHEADERS_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -30,4 +30,4 @@ size_t fwrite(const void *, size_t, size_t, FILE *);
int strcasecmp(const char *, const char *);
int strncasecmp(const char *, const char *, size_t);
-#endif /* __STDC_HEADERS_H */
+#endif /* CURLINC_STDCHEADERS_H */
diff --git a/include/curl/system.h b/include/curl/system.h
index 1e555ec1..cd37c2bf 100644
--- a/include/curl/system.h
+++ b/include/curl/system.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_SYSTEM_H
-#define __CURL_SYSTEM_H
+#ifndef CURLINC_SYSTEM_H
+#define CURLINC_SYSTEM_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -473,21 +473,21 @@
*/
#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551)
-# define __CURL_OFF_T_C_HLPR2(x) x
-# define __CURL_OFF_T_C_HLPR1(x) __CURL_OFF_T_C_HLPR2(x)
-# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \
- __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)
-# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \
- __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)
+# define CURLINC_OFF_T_C_HLPR2(x) x
+# define CURLINC_OFF_T_C_HLPR1(x) CURLINC_OFF_T_C_HLPR2(x)
+# define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \
+ CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)
+# define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \
+ CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)
#else
# ifdef CURL_ISOCPP
-# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix
+# define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix
# else
-# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix
+# define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix
# endif
-# define __CURL_OFF_T_C_HLPR1(Val,Suffix) __CURL_OFF_T_C_HLPR2(Val,Suffix)
-# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)
-# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)
+# define CURLINC_OFF_T_C_HLPR1(Val,Suffix) CURLINC_OFF_T_C_HLPR2(Val,Suffix)
+# define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)
+# define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)
#endif
-#endif /* __CURL_SYSTEM_H */
+#endif /* CURLINC_SYSTEM_H */
diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h
index eeb36abc..03c84fc8 100644
--- a/include/curl/typecheck-gcc.h
+++ b/include/curl/typecheck-gcc.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_TYPECHECK_GCC_H
-#define __CURL_TYPECHECK_GCC_H
+#ifndef CURLINC_TYPECHECK_GCC_H
+#define CURLINC_TYPECHECK_GCC_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -25,10 +25,10 @@
/* wraps curl_easy_setopt() with typechecking */
/* To add a new kind of warning, add an
- * if(_curl_is_sometype_option(_curl_opt))
- * if(!_curl_is_sometype(value))
+ * if(curlcheck_sometype_option(_curl_opt))
+ * if(!curlcheck_sometype(value))
* _curl_easy_setopt_err_sometype();
- * block and define _curl_is_sometype_option, _curl_is_sometype and
+ * block and define curlcheck_sometype_option, curlcheck_sometype and
* _curl_easy_setopt_err_sometype below
*
* NOTE: We use two nested 'if' statements here instead of the && operator, in
@@ -38,112 +38,112 @@
* To add an option that uses the same type as an existing option, you'll just
* need to extend the appropriate _curl_*_option macro
*/
-#define curl_easy_setopt(handle, option, value) \
-__extension__ ({ \
- __typeof__(option) _curl_opt = option; \
- if(__builtin_constant_p(_curl_opt)) { \
- if(_curl_is_long_option(_curl_opt)) \
- if(!_curl_is_long(value)) \
- _curl_easy_setopt_err_long(); \
- if(_curl_is_off_t_option(_curl_opt)) \
- if(!_curl_is_off_t(value)) \
- _curl_easy_setopt_err_curl_off_t(); \
- if(_curl_is_string_option(_curl_opt)) \
- if(!_curl_is_string(value)) \
- _curl_easy_setopt_err_string(); \
- if(_curl_is_write_cb_option(_curl_opt)) \
- if(!_curl_is_write_cb(value)) \
- _curl_easy_setopt_err_write_callback(); \
- if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION) \
- if(!_curl_is_resolver_start_callback(value)) \
- _curl_easy_setopt_err_resolver_start_callback(); \
- if((_curl_opt) == CURLOPT_READFUNCTION) \
- if(!_curl_is_read_cb(value)) \
- _curl_easy_setopt_err_read_cb(); \
- if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \
- if(!_curl_is_ioctl_cb(value)) \
- _curl_easy_setopt_err_ioctl_cb(); \
- if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \
- if(!_curl_is_sockopt_cb(value)) \
- _curl_easy_setopt_err_sockopt_cb(); \
- if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \
- if(!_curl_is_opensocket_cb(value)) \
- _curl_easy_setopt_err_opensocket_cb(); \
- if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \
- if(!_curl_is_progress_cb(value)) \
- _curl_easy_setopt_err_progress_cb(); \
- if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \
- if(!_curl_is_debug_cb(value)) \
- _curl_easy_setopt_err_debug_cb(); \
- if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \
- if(!_curl_is_ssl_ctx_cb(value)) \
- _curl_easy_setopt_err_ssl_ctx_cb(); \
- if(_curl_is_conv_cb_option(_curl_opt)) \
- if(!_curl_is_conv_cb(value)) \
- _curl_easy_setopt_err_conv_cb(); \
- if((_curl_opt) == CURLOPT_SEEKFUNCTION) \
- if(!_curl_is_seek_cb(value)) \
- _curl_easy_setopt_err_seek_cb(); \
- if(_curl_is_cb_data_option(_curl_opt)) \
- if(!_curl_is_cb_data(value)) \
- _curl_easy_setopt_err_cb_data(); \
- if((_curl_opt) == CURLOPT_ERRORBUFFER) \
- if(!_curl_is_error_buffer(value)) \
- _curl_easy_setopt_err_error_buffer(); \
- if((_curl_opt) == CURLOPT_STDERR) \
- if(!_curl_is_FILE(value)) \
- _curl_easy_setopt_err_FILE(); \
- if(_curl_is_postfields_option(_curl_opt)) \
- if(!_curl_is_postfields(value)) \
- _curl_easy_setopt_err_postfields(); \
- if((_curl_opt) == CURLOPT_HTTPPOST) \
- if(!_curl_is_arr((value), struct curl_httppost)) \
- _curl_easy_setopt_err_curl_httpost(); \
- if((_curl_opt) == CURLOPT_MIMEPOST) \
- if(!_curl_is_ptr((value), curl_mime)) \
- _curl_easy_setopt_err_curl_mimepost(); \
- if(_curl_is_slist_option(_curl_opt)) \
- if(!_curl_is_arr((value), struct curl_slist)) \
- _curl_easy_setopt_err_curl_slist(); \
- if((_curl_opt) == CURLOPT_SHARE) \
- if(!_curl_is_ptr((value), CURLSH)) \
- _curl_easy_setopt_err_CURLSH(); \
- } \
- curl_easy_setopt(handle, _curl_opt, value); \
-})
+#define curl_easy_setopt(handle, option, value) \
+ __extension__({ \
+ __typeof__(option) _curl_opt = option; \
+ if(__builtin_constant_p(_curl_opt)) { \
+ if(curlcheck_long_option(_curl_opt)) \
+ if(!curlcheck_long(value)) \
+ _curl_easy_setopt_err_long(); \
+ if(curlcheck_off_t_option(_curl_opt)) \
+ if(!curlcheck_off_t(value)) \
+ _curl_easy_setopt_err_curl_off_t(); \
+ if(curlcheck_string_option(_curl_opt)) \
+ if(!curlcheck_string(value)) \
+ _curl_easy_setopt_err_string(); \
+ if(curlcheck_write_cb_option(_curl_opt)) \
+ if(!curlcheck_write_cb(value)) \
+ _curl_easy_setopt_err_write_callback(); \
+ if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION) \
+ if(!curlcheck_resolver_start_callback(value)) \
+ _curl_easy_setopt_err_resolver_start_callback(); \
+ if((_curl_opt) == CURLOPT_READFUNCTION) \
+ if(!curlcheck_read_cb(value)) \
+ _curl_easy_setopt_err_read_cb(); \
+ if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \
+ if(!curlcheck_ioctl_cb(value)) \
+ _curl_easy_setopt_err_ioctl_cb(); \
+ if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \
+ if(!curlcheck_sockopt_cb(value)) \
+ _curl_easy_setopt_err_sockopt_cb(); \
+ if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \
+ if(!curlcheck_opensocket_cb(value)) \
+ _curl_easy_setopt_err_opensocket_cb(); \
+ if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \
+ if(!curlcheck_progress_cb(value)) \
+ _curl_easy_setopt_err_progress_cb(); \
+ if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \
+ if(!curlcheck_debug_cb(value)) \
+ _curl_easy_setopt_err_debug_cb(); \
+ if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \
+ if(!curlcheck_ssl_ctx_cb(value)) \
+ _curl_easy_setopt_err_ssl_ctx_cb(); \
+ if(curlcheck_conv_cb_option(_curl_opt)) \
+ if(!curlcheck_conv_cb(value)) \
+ _curl_easy_setopt_err_conv_cb(); \
+ if((_curl_opt) == CURLOPT_SEEKFUNCTION) \
+ if(!curlcheck_seek_cb(value)) \
+ _curl_easy_setopt_err_seek_cb(); \
+ if(curlcheck_cb_data_option(_curl_opt)) \
+ if(!curlcheck_cb_data(value)) \
+ _curl_easy_setopt_err_cb_data(); \
+ if((_curl_opt) == CURLOPT_ERRORBUFFER) \
+ if(!curlcheck_error_buffer(value)) \
+ _curl_easy_setopt_err_error_buffer(); \
+ if((_curl_opt) == CURLOPT_STDERR) \
+ if(!curlcheck_FILE(value)) \
+ _curl_easy_setopt_err_FILE(); \
+ if(curlcheck_postfields_option(_curl_opt)) \
+ if(!curlcheck_postfields(value)) \
+ _curl_easy_setopt_err_postfields(); \
+ if((_curl_opt) == CURLOPT_HTTPPOST) \
+ if(!curlcheck_arr((value), struct curl_httppost)) \
+ _curl_easy_setopt_err_curl_httpost(); \
+ if((_curl_opt) == CURLOPT_MIMEPOST) \
+ if(!curlcheck_ptr((value), curl_mime)) \
+ _curl_easy_setopt_err_curl_mimepost(); \
+ if(curlcheck_slist_option(_curl_opt)) \
+ if(!curlcheck_arr((value), struct curl_slist)) \
+ _curl_easy_setopt_err_curl_slist(); \
+ if((_curl_opt) == CURLOPT_SHARE) \
+ if(!curlcheck_ptr((value), CURLSH)) \
+ _curl_easy_setopt_err_CURLSH(); \
+ } \
+ curl_easy_setopt(handle, _curl_opt, value); \
+ })
/* wraps curl_easy_getinfo() with typechecking */
-#define curl_easy_getinfo(handle, info, arg) \
-__extension__ ({ \
- __typeof__(info) _curl_info = info; \
- if(__builtin_constant_p(_curl_info)) { \
- if(_curl_is_string_info(_curl_info)) \
- if(!_curl_is_arr((arg), char *)) \
- _curl_easy_getinfo_err_string(); \
- if(_curl_is_long_info(_curl_info)) \
- if(!_curl_is_arr((arg), long)) \
- _curl_easy_getinfo_err_long(); \
- if(_curl_is_double_info(_curl_info)) \
- if(!_curl_is_arr((arg), double)) \
- _curl_easy_getinfo_err_double(); \
- if(_curl_is_slist_info(_curl_info)) \
- if(!_curl_is_arr((arg), struct curl_slist *)) \
- _curl_easy_getinfo_err_curl_slist(); \
- if(_curl_is_tlssessioninfo_info(_curl_info)) \
- if(!_curl_is_arr((arg), struct curl_tlssessioninfo *)) \
- _curl_easy_getinfo_err_curl_tlssesssioninfo(); \
- if(_curl_is_certinfo_info(_curl_info)) \
- if(!_curl_is_arr((arg), struct curl_certinfo *)) \
- _curl_easy_getinfo_err_curl_certinfo(); \
- if(_curl_is_socket_info(_curl_info)) \
- if(!_curl_is_arr((arg), curl_socket_t)) \
- _curl_easy_getinfo_err_curl_socket(); \
- if(_curl_is_off_t_info(_curl_info)) \
- if(!_curl_is_arr((arg), curl_off_t)) \
- _curl_easy_getinfo_err_curl_off_t(); \
- } \
- curl_easy_getinfo(handle, _curl_info, arg); \
-})
+#define curl_easy_getinfo(handle, info, arg) \
+ __extension__({ \
+ __typeof__(info) _curl_info = info; \
+ if(__builtin_constant_p(_curl_info)) { \
+ if(curlcheck_string_info(_curl_info)) \
+ if(!curlcheck_arr((arg), char *)) \
+ _curl_easy_getinfo_err_string(); \
+ if(curlcheck_long_info(_curl_info)) \
+ if(!curlcheck_arr((arg), long)) \
+ _curl_easy_getinfo_err_long(); \
+ if(curlcheck_double_info(_curl_info)) \
+ if(!curlcheck_arr((arg), double)) \
+ _curl_easy_getinfo_err_double(); \
+ if(curlcheck_slist_info(_curl_info)) \
+ if(!curlcheck_arr((arg), struct curl_slist *)) \
+ _curl_easy_getinfo_err_curl_slist(); \
+ if(curlcheck_tlssessioninfo_info(_curl_info)) \
+ if(!curlcheck_arr((arg), struct curl_tlssessioninfo *)) \
+ _curl_easy_getinfo_err_curl_tlssesssioninfo(); \
+ if(curlcheck_certinfo_info(_curl_info)) \
+ if(!curlcheck_arr((arg), struct curl_certinfo *)) \
+ _curl_easy_getinfo_err_curl_certinfo(); \
+ if(curlcheck_socket_info(_curl_info)) \
+ if(!curlcheck_arr((arg), curl_socket_t)) \
+ _curl_easy_getinfo_err_curl_socket(); \
+ if(curlcheck_off_t_info(_curl_info)) \
+ if(!curlcheck_arr((arg), curl_off_t)) \
+ _curl_easy_getinfo_err_curl_off_t(); \
+ } \
+ curl_easy_getinfo(handle, _curl_info, arg); \
+ })
/*
* For now, just make sure that the functions are called with three arguments
@@ -156,83 +156,83 @@ __extension__ ({ \
* functions */
/* To define a new warning, use _CURL_WARNING(identifier, "message") */
-#define _CURL_WARNING(id, message) \
- static void __attribute__((__warning__(message))) \
- __attribute__((__unused__)) __attribute__((__noinline__)) \
+#define CURLWARNING(id, message) \
+ static void __attribute__((__warning__(message))) \
+ __attribute__((__unused__)) __attribute__((__noinline__)) \
id(void) { __asm__(""); }
-_CURL_WARNING(_curl_easy_setopt_err_long,
+CURLWARNING(_curl_easy_setopt_err_long,
"curl_easy_setopt expects a long argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_off_t,
+CURLWARNING(_curl_easy_setopt_err_curl_off_t,
"curl_easy_setopt expects a curl_off_t argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_string,
+CURLWARNING(_curl_easy_setopt_err_string,
"curl_easy_setopt expects a "
"string ('char *' or char[]) argument for this option"
)
-_CURL_WARNING(_curl_easy_setopt_err_write_callback,
+CURLWARNING(_curl_easy_setopt_err_write_callback,
"curl_easy_setopt expects a curl_write_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_resolver_start_callback,
+CURLWARNING(_curl_easy_setopt_err_resolver_start_callback,
"curl_easy_setopt expects a "
"curl_resolver_start_callback argument for this option"
)
-_CURL_WARNING(_curl_easy_setopt_err_read_cb,
+CURLWARNING(_curl_easy_setopt_err_read_cb,
"curl_easy_setopt expects a curl_read_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb,
+CURLWARNING(_curl_easy_setopt_err_ioctl_cb,
"curl_easy_setopt expects a curl_ioctl_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb,
+CURLWARNING(_curl_easy_setopt_err_sockopt_cb,
"curl_easy_setopt expects a curl_sockopt_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb,
+CURLWARNING(_curl_easy_setopt_err_opensocket_cb,
"curl_easy_setopt expects a "
"curl_opensocket_callback argument for this option"
)
-_CURL_WARNING(_curl_easy_setopt_err_progress_cb,
+CURLWARNING(_curl_easy_setopt_err_progress_cb,
"curl_easy_setopt expects a curl_progress_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_debug_cb,
+CURLWARNING(_curl_easy_setopt_err_debug_cb,
"curl_easy_setopt expects a curl_debug_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb,
+CURLWARNING(_curl_easy_setopt_err_ssl_ctx_cb,
"curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_conv_cb,
+CURLWARNING(_curl_easy_setopt_err_conv_cb,
"curl_easy_setopt expects a curl_conv_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_seek_cb,
+CURLWARNING(_curl_easy_setopt_err_seek_cb,
"curl_easy_setopt expects a curl_seek_callback argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_cb_data,
+CURLWARNING(_curl_easy_setopt_err_cb_data,
"curl_easy_setopt expects a "
"private data pointer as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_error_buffer,
+CURLWARNING(_curl_easy_setopt_err_error_buffer,
"curl_easy_setopt expects a "
"char buffer of CURL_ERROR_SIZE as argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_FILE,
+CURLWARNING(_curl_easy_setopt_err_FILE,
"curl_easy_setopt expects a 'FILE *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_postfields,
+CURLWARNING(_curl_easy_setopt_err_postfields,
"curl_easy_setopt expects a 'void *' or 'char *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_httpost,
+CURLWARNING(_curl_easy_setopt_err_curl_httpost,
"curl_easy_setopt expects a 'struct curl_httppost *' "
"argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_mimepost,
+CURLWARNING(_curl_easy_setopt_err_curl_mimepost,
"curl_easy_setopt expects a 'curl_mime *' "
"argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_curl_slist,
+CURLWARNING(_curl_easy_setopt_err_curl_slist,
"curl_easy_setopt expects a 'struct curl_slist *' argument for this option")
-_CURL_WARNING(_curl_easy_setopt_err_CURLSH,
+CURLWARNING(_curl_easy_setopt_err_CURLSH,
"curl_easy_setopt expects a CURLSH* argument for this option")
-_CURL_WARNING(_curl_easy_getinfo_err_string,
+CURLWARNING(_curl_easy_getinfo_err_string,
"curl_easy_getinfo expects a pointer to 'char *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_long,
+CURLWARNING(_curl_easy_getinfo_err_long,
"curl_easy_getinfo expects a pointer to long for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_double,
+CURLWARNING(_curl_easy_getinfo_err_double,
"curl_easy_getinfo expects a pointer to double for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
+CURLWARNING(_curl_easy_getinfo_err_curl_slist,
"curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo,
+CURLWARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo,
"curl_easy_getinfo expects a pointer to "
"'struct curl_tlssessioninfo *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_certinfo,
+CURLWARNING(_curl_easy_getinfo_err_curl_certinfo,
"curl_easy_getinfo expects a pointer to "
"'struct curl_certinfo *' for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_socket,
+CURLWARNING(_curl_easy_getinfo_err_curl_socket,
"curl_easy_getinfo expects a pointer to curl_socket_t for this info")
-_CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
+CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
"curl_easy_getinfo expects a pointer to curl_off_t for this info")
/* groups of curl_easy_setops options that take the same type of argument */
@@ -244,14 +244,14 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
*/
/* evaluates to true if option takes a long argument */
-#define _curl_is_long_option(option) \
+#define curlcheck_long_option(option) \
(0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)
-#define _curl_is_off_t_option(option) \
+#define curlcheck_off_t_option(option) \
((option) > CURLOPTTYPE_OFF_T)
/* evaluates to true if option takes a char* argument */
-#define _curl_is_string_option(option) \
+#define curlcheck_string_option(option) \
((option) == CURLOPT_ABSTRACT_UNIX_SOCKET || \
(option) == CURLOPT_ACCEPT_ENCODING || \
(option) == CURLOPT_ALTSVC || \
@@ -311,6 +311,7 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
(option) == CURLOPT_RTSP_SESSION_ID || \
(option) == CURLOPT_RTSP_STREAM_URI || \
(option) == CURLOPT_RTSP_TRANSPORT || \
+ (option) == CURLOPT_SASL_AUTHZID || \
(option) == CURLOPT_SERVICE_NAME || \
(option) == CURLOPT_SOCKS5_GSSAPI_SERVICE || \
(option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
@@ -336,18 +337,18 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
0)
/* evaluates to true if option takes a curl_write_callback argument */
-#define _curl_is_write_cb_option(option) \
- ((option) == CURLOPT_HEADERFUNCTION || \
+#define curlcheck_write_cb_option(option) \
+ ((option) == CURLOPT_HEADERFUNCTION || \
(option) == CURLOPT_WRITEFUNCTION)
/* evaluates to true if option takes a curl_conv_callback argument */
-#define _curl_is_conv_cb_option(option) \
- ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \
- (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \
+#define curlcheck_conv_cb_option(option) \
+ ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \
+ (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \
(option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)
/* evaluates to true if option takes a data argument to pass to a callback */
-#define _curl_is_cb_data_option(option) \
+#define curlcheck_cb_data_option(option) \
((option) == CURLOPT_CHUNK_DATA || \
(option) == CURLOPT_CLOSESOCKETDATA || \
(option) == CURLOPT_DEBUGDATA || \
@@ -369,13 +370,13 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
0)
/* evaluates to true if option takes a POST data argument (void* or char*) */
-#define _curl_is_postfields_option(option) \
+#define curlcheck_postfields_option(option) \
((option) == CURLOPT_POSTFIELDS || \
(option) == CURLOPT_COPYPOSTFIELDS || \
0)
/* evaluates to true if option takes a struct curl_slist * argument */
-#define _curl_is_slist_option(option) \
+#define curlcheck_slist_option(option) \
((option) == CURLOPT_HTTP200ALIASES || \
(option) == CURLOPT_HTTPHEADER || \
(option) == CURLOPT_MAIL_RCPT || \
@@ -391,40 +392,40 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
/* groups of curl_easy_getinfo infos that take the same type of argument */
/* evaluates to true if info expects a pointer to char * argument */
-#define _curl_is_string_info(info) \
+#define curlcheck_string_info(info) \
(CURLINFO_STRING < (info) && (info) < CURLINFO_LONG)
/* evaluates to true if info expects a pointer to long argument */
-#define _curl_is_long_info(info) \
+#define curlcheck_long_info(info) \
(CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)
/* evaluates to true if info expects a pointer to double argument */
-#define _curl_is_double_info(info) \
+#define curlcheck_double_info(info) \
(CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)
/* true if info expects a pointer to struct curl_slist * argument */
-#define _curl_is_slist_info(info) \
+#define curlcheck_slist_info(info) \
(((info) == CURLINFO_SSL_ENGINES) || ((info) == CURLINFO_COOKIELIST))
/* true if info expects a pointer to struct curl_tlssessioninfo * argument */
-#define _curl_is_tlssessioninfo_info(info) \
+#define curlcheck_tlssessioninfo_info(info) \
(((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION))
/* true if info expects a pointer to struct curl_certinfo * argument */
-#define _curl_is_certinfo_info(info) ((info) == CURLINFO_CERTINFO)
+#define curlcheck_certinfo_info(info) ((info) == CURLINFO_CERTINFO)
/* true if info expects a pointer to struct curl_socket_t argument */
-#define _curl_is_socket_info(info) \
+#define curlcheck_socket_info(info) \
(CURLINFO_SOCKET < (info) && (info) < CURLINFO_OFF_T)
/* true if info expects a pointer to curl_off_t argument */
-#define _curl_is_off_t_info(info) \
+#define curlcheck_off_t_info(info) \
(CURLINFO_OFF_T < (info))
/* typecheck helpers -- check whether given expression has requested type*/
-/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros,
+/* For pointers, you can use the curlcheck_ptr/curlcheck_arr macros,
* otherwise define a new macro. Search for __builtin_types_compatible_p
* in the GCC manual.
* NOTE: these macros MUST NOT EVALUATE their arguments! The argument is
@@ -434,35 +435,35 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
*/
/* XXX: should evaluate to true if expr is a pointer */
-#define _curl_is_any_ptr(expr) \
+#define curlcheck_any_ptr(expr) \
(sizeof(expr) == sizeof(void *))
/* evaluates to true if expr is NULL */
/* XXX: must not evaluate expr, so this check is not accurate */
-#define _curl_is_NULL(expr) \
+#define curlcheck_NULL(expr) \
(__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))
/* evaluates to true if expr is type*, const type* or NULL */
-#define _curl_is_ptr(expr, type) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), type *) || \
+#define curlcheck_ptr(expr, type) \
+ (curlcheck_NULL(expr) || \
+ __builtin_types_compatible_p(__typeof__(expr), type *) || \
__builtin_types_compatible_p(__typeof__(expr), const type *))
/* evaluates to true if expr is one of type[], type*, NULL or const type* */
-#define _curl_is_arr(expr, type) \
- (_curl_is_ptr((expr), type) || \
+#define curlcheck_arr(expr, type) \
+ (curlcheck_ptr((expr), type) || \
__builtin_types_compatible_p(__typeof__(expr), type []))
/* evaluates to true if expr is a string */
-#define _curl_is_string(expr) \
- (_curl_is_arr((expr), char) || \
- _curl_is_arr((expr), signed char) || \
- _curl_is_arr((expr), unsigned char))
+#define curlcheck_string(expr) \
+ (curlcheck_arr((expr), char) || \
+ curlcheck_arr((expr), signed char) || \
+ curlcheck_arr((expr), unsigned char))
/* evaluates to true if expr is a long (no matter the signedness)
* XXX: for now, int is also accepted (and therefore short and char, which
* are promoted to int when passed to a variadic function) */
-#define _curl_is_long(expr) \
+#define curlcheck_long(expr) \
(__builtin_types_compatible_p(__typeof__(expr), long) || \
__builtin_types_compatible_p(__typeof__(expr), signed long) || \
__builtin_types_compatible_p(__typeof__(expr), unsigned long) || \
@@ -477,59 +478,59 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_off_t,
__builtin_types_compatible_p(__typeof__(expr), unsigned char))
/* evaluates to true if expr is of type curl_off_t */
-#define _curl_is_off_t(expr) \
+#define curlcheck_off_t(expr) \
(__builtin_types_compatible_p(__typeof__(expr), curl_off_t))
/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */
/* XXX: also check size of an char[] array? */
-#define _curl_is_error_buffer(expr) \
- (_curl_is_NULL(expr) || \
- __builtin_types_compatible_p(__typeof__(expr), char *) || \
+#define curlcheck_error_buffer(expr) \
+ (curlcheck_NULL(expr) || \
+ __builtin_types_compatible_p(__typeof__(expr), char *) || \
__builtin_types_compatible_p(__typeof__(expr), char[]))
/* evaluates to true if expr is of type (const) void* or (const) FILE* */
#if 0
-#define _curl_is_cb_data(expr) \
- (_curl_is_ptr((expr), void) || \
- _curl_is_ptr((expr), FILE))
+#define curlcheck_cb_data(expr) \
+ (curlcheck_ptr((expr), void) || \
+ curlcheck_ptr((expr), FILE))
#else /* be less strict */
-#define _curl_is_cb_data(expr) \
- _curl_is_any_ptr(expr)
+#define curlcheck_cb_data(expr) \
+ curlcheck_any_ptr(expr)
#endif
/* evaluates to true if expr is of type FILE* */
-#define _curl_is_FILE(expr) \
- (_curl_is_NULL(expr) || \
+#define curlcheck_FILE(expr) \
+ (curlcheck_NULL(expr) || \
(__builtin_types_compatible_p(__typeof__(expr), FILE *)))
/* evaluates to true if expr can be passed as POST data (void* or char*) */
-#define _curl_is_postfields(expr) \
- (_curl_is_ptr((expr), void) || \
- _curl_is_arr((expr), char) || \
- _curl_is_arr((expr), unsigned char))
+#define curlcheck_postfields(expr) \
+ (curlcheck_ptr((expr), void) || \
+ curlcheck_arr((expr), char) || \
+ curlcheck_arr((expr), unsigned char))
/* helper: __builtin_types_compatible_p distinguishes between functions and
* function pointers, hide it */
-#define _curl_callback_compatible(func, type) \
- (__builtin_types_compatible_p(__typeof__(func), type) || \
+#define curlcheck_cb_compatible(func, type) \
+ (__builtin_types_compatible_p(__typeof__(func), type) || \
__builtin_types_compatible_p(__typeof__(func) *, type))
/* evaluates to true if expr is of type curl_resolver_start_callback */
-#define _curl_is_resolver_start_callback(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_resolver_start_callback))
+#define curlcheck_resolver_start_callback(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_resolver_start_callback))
/* evaluates to true if expr is of type curl_read_callback or "similar" */
-#define _curl_is_read_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), __typeof__(fread) *) || \
- _curl_callback_compatible((expr), curl_read_callback) || \
- _curl_callback_compatible((expr), _curl_read_callback1) || \
- _curl_callback_compatible((expr), _curl_read_callback2) || \
- _curl_callback_compatible((expr), _curl_read_callback3) || \
- _curl_callback_compatible((expr), _curl_read_callback4) || \
- _curl_callback_compatible((expr), _curl_read_callback5) || \
- _curl_callback_compatible((expr), _curl_read_callback6))
+#define curlcheck_read_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), __typeof__(fread) *) || \
+ curlcheck_cb_compatible((expr), curl_read_callback) || \
+ curlcheck_cb_compatible((expr), _curl_read_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_read_callback2) || \
+ curlcheck_cb_compatible((expr), _curl_read_callback3) || \
+ curlcheck_cb_compatible((expr), _curl_read_callback4) || \
+ curlcheck_cb_compatible((expr), _curl_read_callback5) || \
+ curlcheck_cb_compatible((expr), _curl_read_callback6))
typedef size_t (*_curl_read_callback1)(char *, size_t, size_t, void *);
typedef size_t (*_curl_read_callback2)(char *, size_t, size_t, const void *);
typedef size_t (*_curl_read_callback3)(char *, size_t, size_t, FILE *);
@@ -538,16 +539,16 @@ typedef size_t (*_curl_read_callback5)(void *, size_t, size_t, const void *);
typedef size_t (*_curl_read_callback6)(void *, size_t, size_t, FILE *);
/* evaluates to true if expr is of type curl_write_callback or "similar" */
-#define _curl_is_write_cb(expr) \
- (_curl_is_read_cb(expr) || \
- _curl_callback_compatible((expr), __typeof__(fwrite) *) || \
- _curl_callback_compatible((expr), curl_write_callback) || \
- _curl_callback_compatible((expr), _curl_write_callback1) || \
- _curl_callback_compatible((expr), _curl_write_callback2) || \
- _curl_callback_compatible((expr), _curl_write_callback3) || \
- _curl_callback_compatible((expr), _curl_write_callback4) || \
- _curl_callback_compatible((expr), _curl_write_callback5) || \
- _curl_callback_compatible((expr), _curl_write_callback6))
+#define curlcheck_write_cb(expr) \
+ (curlcheck_read_cb(expr) || \
+ curlcheck_cb_compatible((expr), __typeof__(fwrite) *) || \
+ curlcheck_cb_compatible((expr), curl_write_callback) || \
+ curlcheck_cb_compatible((expr), _curl_write_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_write_callback2) || \
+ curlcheck_cb_compatible((expr), _curl_write_callback3) || \
+ curlcheck_cb_compatible((expr), _curl_write_callback4) || \
+ curlcheck_cb_compatible((expr), _curl_write_callback5) || \
+ curlcheck_cb_compatible((expr), _curl_write_callback6))
typedef size_t (*_curl_write_callback1)(const char *, size_t, size_t, void *);
typedef size_t (*_curl_write_callback2)(const char *, size_t, size_t,
const void *);
@@ -558,37 +559,37 @@ typedef size_t (*_curl_write_callback5)(const void *, size_t, size_t,
typedef size_t (*_curl_write_callback6)(const void *, size_t, size_t, FILE *);
/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */
-#define _curl_is_ioctl_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_ioctl_callback) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback1) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback2) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback3) || \
- _curl_callback_compatible((expr), _curl_ioctl_callback4))
+#define curlcheck_ioctl_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_ioctl_callback) || \
+ curlcheck_cb_compatible((expr), _curl_ioctl_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_ioctl_callback2) || \
+ curlcheck_cb_compatible((expr), _curl_ioctl_callback3) || \
+ curlcheck_cb_compatible((expr), _curl_ioctl_callback4))
typedef curlioerr (*_curl_ioctl_callback1)(CURL *, int, void *);
typedef curlioerr (*_curl_ioctl_callback2)(CURL *, int, const void *);
typedef curlioerr (*_curl_ioctl_callback3)(CURL *, curliocmd, void *);
typedef curlioerr (*_curl_ioctl_callback4)(CURL *, curliocmd, const void *);
/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */
-#define _curl_is_sockopt_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_sockopt_callback) || \
- _curl_callback_compatible((expr), _curl_sockopt_callback1) || \
- _curl_callback_compatible((expr), _curl_sockopt_callback2))
+#define curlcheck_sockopt_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_sockopt_callback) || \
+ curlcheck_cb_compatible((expr), _curl_sockopt_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_sockopt_callback2))
typedef int (*_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);
typedef int (*_curl_sockopt_callback2)(const void *, curl_socket_t,
curlsocktype);
/* evaluates to true if expr is of type curl_opensocket_callback or
"similar" */
-#define _curl_is_opensocket_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_opensocket_callback) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback1) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback2) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback3) || \
- _curl_callback_compatible((expr), _curl_opensocket_callback4))
+#define curlcheck_opensocket_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_opensocket_callback) || \
+ curlcheck_cb_compatible((expr), _curl_opensocket_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_opensocket_callback2) || \
+ curlcheck_cb_compatible((expr), _curl_opensocket_callback3) || \
+ curlcheck_cb_compatible((expr), _curl_opensocket_callback4))
typedef curl_socket_t (*_curl_opensocket_callback1)
(void *, curlsocktype, struct curl_sockaddr *);
typedef curl_socket_t (*_curl_opensocket_callback2)
@@ -599,28 +600,28 @@ typedef curl_socket_t (*_curl_opensocket_callback4)
(const void *, curlsocktype, const struct curl_sockaddr *);
/* evaluates to true if expr is of type curl_progress_callback or "similar" */
-#define _curl_is_progress_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_progress_callback) || \
- _curl_callback_compatible((expr), _curl_progress_callback1) || \
- _curl_callback_compatible((expr), _curl_progress_callback2))
+#define curlcheck_progress_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_progress_callback) || \
+ curlcheck_cb_compatible((expr), _curl_progress_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_progress_callback2))
typedef int (*_curl_progress_callback1)(void *,
double, double, double, double);
typedef int (*_curl_progress_callback2)(const void *,
double, double, double, double);
/* evaluates to true if expr is of type curl_debug_callback or "similar" */
-#define _curl_is_debug_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_debug_callback) || \
- _curl_callback_compatible((expr), _curl_debug_callback1) || \
- _curl_callback_compatible((expr), _curl_debug_callback2) || \
- _curl_callback_compatible((expr), _curl_debug_callback3) || \
- _curl_callback_compatible((expr), _curl_debug_callback4) || \
- _curl_callback_compatible((expr), _curl_debug_callback5) || \
- _curl_callback_compatible((expr), _curl_debug_callback6) || \
- _curl_callback_compatible((expr), _curl_debug_callback7) || \
- _curl_callback_compatible((expr), _curl_debug_callback8))
+#define curlcheck_debug_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_debug_callback) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback2) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback3) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback4) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback5) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback6) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback7) || \
+ curlcheck_cb_compatible((expr), _curl_debug_callback8))
typedef int (*_curl_debug_callback1) (CURL *,
curl_infotype, char *, size_t, void *);
typedef int (*_curl_debug_callback2) (CURL *,
@@ -640,17 +641,17 @@ typedef int (*_curl_debug_callback8) (CURL *,
/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */
/* this is getting even messier... */
-#define _curl_is_ssl_ctx_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_ssl_ctx_callback) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) || \
- _curl_callback_compatible((expr), _curl_ssl_ctx_callback8))
+#define curlcheck_ssl_ctx_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_ssl_ctx_callback) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback2) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback3) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback4) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback5) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback6) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback7) || \
+ curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback8))
typedef CURLcode (*_curl_ssl_ctx_callback1)(CURL *, void *, void *);
typedef CURLcode (*_curl_ssl_ctx_callback2)(CURL *, void *, const void *);
typedef CURLcode (*_curl_ssl_ctx_callback3)(CURL *, const void *, void *);
@@ -673,26 +674,26 @@ typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;
#endif
/* evaluates to true if expr is of type curl_conv_callback or "similar" */
-#define _curl_is_conv_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_conv_callback) || \
- _curl_callback_compatible((expr), _curl_conv_callback1) || \
- _curl_callback_compatible((expr), _curl_conv_callback2) || \
- _curl_callback_compatible((expr), _curl_conv_callback3) || \
- _curl_callback_compatible((expr), _curl_conv_callback4))
+#define curlcheck_conv_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_conv_callback) || \
+ curlcheck_cb_compatible((expr), _curl_conv_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_conv_callback2) || \
+ curlcheck_cb_compatible((expr), _curl_conv_callback3) || \
+ curlcheck_cb_compatible((expr), _curl_conv_callback4))
typedef CURLcode (*_curl_conv_callback1)(char *, size_t length);
typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);
typedef CURLcode (*_curl_conv_callback3)(void *, size_t length);
typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);
/* evaluates to true if expr is of type curl_seek_callback or "similar" */
-#define _curl_is_seek_cb(expr) \
- (_curl_is_NULL(expr) || \
- _curl_callback_compatible((expr), curl_seek_callback) || \
- _curl_callback_compatible((expr), _curl_seek_callback1) || \
- _curl_callback_compatible((expr), _curl_seek_callback2))
+#define curlcheck_seek_cb(expr) \
+ (curlcheck_NULL(expr) || \
+ curlcheck_cb_compatible((expr), curl_seek_callback) || \
+ curlcheck_cb_compatible((expr), _curl_seek_callback1) || \
+ curlcheck_cb_compatible((expr), _curl_seek_callback2))
typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);
typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);
-#endif /* __CURL_TYPECHECK_GCC_H */
+#endif /* CURLINC_TYPECHECK_GCC_H */
diff --git a/include/curl/urlapi.h b/include/curl/urlapi.h
index 58e89d85..0f2f152f 100644
--- a/include/curl/urlapi.h
+++ b/include/curl/urlapi.h
@@ -1,5 +1,5 @@
-#ifndef __CURL_URLAPI_H
-#define __CURL_URLAPI_H
+#ifndef CURLINC_URLAPI_H
+#define CURLINC_URLAPI_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -120,4 +120,4 @@ CURL_EXTERN CURLUcode curl_url_set(CURLU *handle, CURLUPart what,
} /* end of extern "C" */
#endif
-#endif
+#endif /* CURLINC_URLAPI_H */
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 7c258b3f..516a2394 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -23,8 +23,8 @@ AUTOMAKE_OPTIONS = foreign nostdinc
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
-EXTRA_DIST = Makefile.m32 config-win32.h \
- config-win32ce.h config-riscos.h config-mac.h curl_config.h.in \
+EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h \
+ config-plan9.h config-riscos.h config-mac.h curl_config.h.in \
makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h \
config-os400.h setup-os400.h config-symbian.h Makefile.Watcom \
@@ -65,7 +65,7 @@ endif
# Prevent LIBS from being used for all link targets
LIBS = $(BLANK_AT_MAKETIME)
-VERSIONINFO=-version-info 9:0:5
+VERSIONINFO=-version-info 10:0:6
# This flag accepts an argument of the form current[:revision[:age]]. So,
# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
# 1.
@@ -138,7 +138,7 @@ CS_ = $(CS_0)
checksrc:
$(CHECKSRC)(@PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
- $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch])
+ $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
if CURLDEBUG
# for debug builds, we scan the sources on all regular make invokes
diff --git a/lib/Makefile.in b/lib/Makefile.in
index da01c26a..28dfe93e 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -205,25 +205,24 @@ am__objects_1 = libcurl_la-file.lo libcurl_la-timeval.lo \
libcurl_la-hostsyn.lo libcurl_la-inet_ntop.lo \
libcurl_la-parsedate.lo libcurl_la-select.lo \
libcurl_la-tftp.lo libcurl_la-splay.lo libcurl_la-strdup.lo \
- libcurl_la-socks.lo libcurl_la-ssh.lo libcurl_la-ssh-libssh.lo \
- libcurl_la-curl_addrinfo.lo libcurl_la-socks_gssapi.lo \
- libcurl_la-socks_sspi.lo libcurl_la-curl_sspi.lo \
- libcurl_la-slist.lo libcurl_la-nonblock.lo \
- libcurl_la-curl_memrchr.lo libcurl_la-imap.lo \
- libcurl_la-pop3.lo libcurl_la-smtp.lo libcurl_la-pingpong.lo \
- libcurl_la-rtsp.lo libcurl_la-curl_threads.lo \
- libcurl_la-warnless.lo libcurl_la-hmac.lo \
- libcurl_la-curl_rtmp.lo libcurl_la-openldap.lo \
- libcurl_la-curl_gethostname.lo libcurl_la-gopher.lo \
- libcurl_la-idn_win32.lo libcurl_la-http_proxy.lo \
- libcurl_la-non-ascii.lo libcurl_la-asyn-ares.lo \
- libcurl_la-asyn-thread.lo libcurl_la-curl_gssapi.lo \
- libcurl_la-http_ntlm.lo libcurl_la-curl_ntlm_wb.lo \
- libcurl_la-curl_ntlm_core.lo libcurl_la-curl_sasl.lo \
- libcurl_la-rand.lo libcurl_la-curl_multibyte.lo \
- libcurl_la-hostcheck.lo libcurl_la-conncache.lo \
- libcurl_la-dotdot.lo libcurl_la-x509asn1.lo \
- libcurl_la-http2.lo libcurl_la-smb.lo \
+ libcurl_la-socks.lo libcurl_la-curl_addrinfo.lo \
+ libcurl_la-socks_gssapi.lo libcurl_la-socks_sspi.lo \
+ libcurl_la-curl_sspi.lo libcurl_la-slist.lo \
+ libcurl_la-nonblock.lo libcurl_la-curl_memrchr.lo \
+ libcurl_la-imap.lo libcurl_la-pop3.lo libcurl_la-smtp.lo \
+ libcurl_la-pingpong.lo libcurl_la-rtsp.lo \
+ libcurl_la-curl_threads.lo libcurl_la-warnless.lo \
+ libcurl_la-hmac.lo libcurl_la-curl_rtmp.lo \
+ libcurl_la-openldap.lo libcurl_la-curl_gethostname.lo \
+ libcurl_la-gopher.lo libcurl_la-idn_win32.lo \
+ libcurl_la-http_proxy.lo libcurl_la-non-ascii.lo \
+ libcurl_la-asyn-ares.lo libcurl_la-asyn-thread.lo \
+ libcurl_la-curl_gssapi.lo libcurl_la-http_ntlm.lo \
+ libcurl_la-curl_ntlm_wb.lo libcurl_la-curl_ntlm_core.lo \
+ libcurl_la-curl_sasl.lo libcurl_la-rand.lo \
+ libcurl_la-curl_multibyte.lo libcurl_la-hostcheck.lo \
+ libcurl_la-conncache.lo libcurl_la-dotdot.lo \
+ libcurl_la-x509asn1.lo libcurl_la-http2.lo libcurl_la-smb.lo \
libcurl_la-curl_endian.lo libcurl_la-curl_des.lo \
libcurl_la-system_win32.lo libcurl_la-mime.lo \
libcurl_la-sha256.lo libcurl_la-setopt.lo \
@@ -247,10 +246,14 @@ am__objects_3 = vtls/libcurl_la-openssl.lo vtls/libcurl_la-gtls.lo \
vtls/libcurl_la-schannel_verify.lo \
vtls/libcurl_la-sectransp.lo vtls/libcurl_la-gskit.lo \
vtls/libcurl_la-mbedtls.lo vtls/libcurl_la-mesalink.lo
-am__objects_4 = $(am__objects_1) $(am__objects_2) $(am__objects_3)
-am__objects_5 =
-am__objects_6 = $(am__objects_5) $(am__objects_5) $(am__objects_5)
-am_libcurl_la_OBJECTS = $(am__objects_4) $(am__objects_6)
+am__objects_4 = vquic/libcurl_la-ngtcp2.lo vquic/libcurl_la-quiche.lo
+am__objects_5 = vssh/libcurl_la-libssh2.lo vssh/libcurl_la-libssh.lo
+am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ $(am__objects_4) $(am__objects_5)
+am__objects_7 =
+am__objects_8 = $(am__objects_7) $(am__objects_7) $(am__objects_7) \
+ $(am__objects_7)
+am_libcurl_la_OBJECTS = $(am__objects_6) $(am__objects_8)
libcurl_la_OBJECTS = $(am_libcurl_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -260,7 +263,7 @@ libcurl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurl_la_CFLAGS) \
$(CFLAGS) $(libcurl_la_LDFLAGS) $(LDFLAGS) -o $@
libcurlu_la_LIBADD =
-am__objects_7 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
+am__objects_9 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
libcurlu_la-base64.lo libcurlu_la-hostip.lo \
libcurlu_la-progress.lo libcurlu_la-formdata.lo \
libcurlu_la-cookie.lo libcurlu_la-http.lo libcurlu_la-sendf.lo \
@@ -287,12 +290,12 @@ am__objects_7 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
libcurlu_la-hostip6.lo libcurlu_la-hostsyn.lo \
libcurlu_la-inet_ntop.lo libcurlu_la-parsedate.lo \
libcurlu_la-select.lo libcurlu_la-tftp.lo libcurlu_la-splay.lo \
- libcurlu_la-strdup.lo libcurlu_la-socks.lo libcurlu_la-ssh.lo \
- libcurlu_la-ssh-libssh.lo libcurlu_la-curl_addrinfo.lo \
- libcurlu_la-socks_gssapi.lo libcurlu_la-socks_sspi.lo \
- libcurlu_la-curl_sspi.lo libcurlu_la-slist.lo \
- libcurlu_la-nonblock.lo libcurlu_la-curl_memrchr.lo \
- libcurlu_la-imap.lo libcurlu_la-pop3.lo libcurlu_la-smtp.lo \
+ libcurlu_la-strdup.lo libcurlu_la-socks.lo \
+ libcurlu_la-curl_addrinfo.lo libcurlu_la-socks_gssapi.lo \
+ libcurlu_la-socks_sspi.lo libcurlu_la-curl_sspi.lo \
+ libcurlu_la-slist.lo libcurlu_la-nonblock.lo \
+ libcurlu_la-curl_memrchr.lo libcurlu_la-imap.lo \
+ libcurlu_la-pop3.lo libcurlu_la-smtp.lo \
libcurlu_la-pingpong.lo libcurlu_la-rtsp.lo \
libcurlu_la-curl_threads.lo libcurlu_la-warnless.lo \
libcurlu_la-hmac.lo libcurlu_la-curl_rtmp.lo \
@@ -313,7 +316,7 @@ am__objects_7 = libcurlu_la-file.lo libcurlu_la-timeval.lo \
libcurlu_la-curl_ctype.lo libcurlu_la-curl_range.lo \
libcurlu_la-psl.lo libcurlu_la-doh.lo libcurlu_la-urlapi.lo \
libcurlu_la-curl_get_line.lo libcurlu_la-altsvc.lo
-am__objects_8 = vauth/libcurlu_la-vauth.lo \
+am__objects_10 = vauth/libcurlu_la-vauth.lo \
vauth/libcurlu_la-cleartext.lo vauth/libcurlu_la-cram.lo \
vauth/libcurlu_la-digest.lo vauth/libcurlu_la-digest_sspi.lo \
vauth/libcurlu_la-krb5_gssapi.lo \
@@ -321,7 +324,7 @@ am__objects_8 = vauth/libcurlu_la-vauth.lo \
vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \
vauth/libcurlu_la-spnego_gssapi.lo \
vauth/libcurlu_la-spnego_sspi.lo
-am__objects_9 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
+am__objects_11 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
vtls/libcurlu_la-vtls.lo vtls/libcurlu_la-nss.lo \
vtls/libcurlu_la-polarssl.lo \
vtls/libcurlu_la-polarssl_threadlock.lo \
@@ -329,8 +332,13 @@ am__objects_9 = vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-gtls.lo \
vtls/libcurlu_la-schannel_verify.lo \
vtls/libcurlu_la-sectransp.lo vtls/libcurlu_la-gskit.lo \
vtls/libcurlu_la-mbedtls.lo vtls/libcurlu_la-mesalink.lo
-am__objects_10 = $(am__objects_7) $(am__objects_8) $(am__objects_9)
-am_libcurlu_la_OBJECTS = $(am__objects_10) $(am__objects_6)
+am__objects_12 = vquic/libcurlu_la-ngtcp2.lo \
+ vquic/libcurlu_la-quiche.lo
+am__objects_13 = vssh/libcurlu_la-libssh2.lo \
+ vssh/libcurlu_la-libssh.lo
+am__objects_14 = $(am__objects_9) $(am__objects_10) $(am__objects_11) \
+ $(am__objects_12) $(am__objects_13)
+am_libcurlu_la_OBJECTS = $(am__objects_14) $(am__objects_8)
libcurlu_la_OBJECTS = $(am_libcurlu_la_OBJECTS)
libcurlu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurlu_la_CFLAGS) \
@@ -441,8 +449,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurl_la-socks_sspi.Plo \
./$(DEPDIR)/libcurl_la-speedcheck.Plo \
./$(DEPDIR)/libcurl_la-splay.Plo \
- ./$(DEPDIR)/libcurl_la-ssh-libssh.Plo \
- ./$(DEPDIR)/libcurl_la-ssh.Plo \
./$(DEPDIR)/libcurl_la-strcase.Plo \
./$(DEPDIR)/libcurl_la-strdup.Plo \
./$(DEPDIR)/libcurl_la-strerror.Plo \
@@ -553,8 +559,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
./$(DEPDIR)/libcurlu_la-socks_sspi.Plo \
./$(DEPDIR)/libcurlu_la-speedcheck.Plo \
./$(DEPDIR)/libcurlu_la-splay.Plo \
- ./$(DEPDIR)/libcurlu_la-ssh-libssh.Plo \
- ./$(DEPDIR)/libcurlu_la-ssh.Plo \
./$(DEPDIR)/libcurlu_la-strcase.Plo \
./$(DEPDIR)/libcurlu_la-strdup.Plo \
./$(DEPDIR)/libcurlu_la-strerror.Plo \
@@ -595,6 +599,14 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo \
vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo \
vauth/$(DEPDIR)/libcurlu_la-vauth.Plo \
+ vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo \
+ vquic/$(DEPDIR)/libcurl_la-quiche.Plo \
+ vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo \
+ vquic/$(DEPDIR)/libcurlu_la-quiche.Plo \
+ vssh/$(DEPDIR)/libcurl_la-libssh.Plo \
+ vssh/$(DEPDIR)/libcurl_la-libssh2.Plo \
+ vssh/$(DEPDIR)/libcurlu_la-libssh.Plo \
+ vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo \
vtls/$(DEPDIR)/libcurl_la-gskit.Plo \
vtls/$(DEPDIR)/libcurl_la-gtls.Plo \
vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo \
@@ -808,8 +820,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -898,8 +914,8 @@ top_srcdir = @top_srcdir@
###########################################################################
AUTOMAKE_OPTIONS = foreign nostdinc
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
-EXTRA_DIST = Makefile.m32 config-win32.h \
- config-win32ce.h config-riscos.h config-mac.h curl_config.h.in \
+EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h \
+ config-plan9.h config-riscos.h config-mac.h curl_config.h.in \
makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h \
config-os400.h setup-os400.h config-symbian.h Makefile.Watcom \
@@ -934,7 +950,7 @@ lib_LTLIBRARIES = libcurl.la
# For the full guide on libcurl ABI rules, see docs/libcurl/ABI
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
-I$(top_srcdir)/lib $(am__append_1) -DBUILDING_LIBCURL
-VERSIONINFO = -version-info 9:0:5
+VERSIONINFO = -version-info 10:0:6
AM_LDFLAGS =
AM_CFLAGS =
libcurl_la_CPPFLAGS_EXTRA = $(am__append_7) $(am__append_8)
@@ -963,6 +979,9 @@ LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h \
vtls/mbedtls.h vtls/mesalink.h
+LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c
+LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h
+LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c \
ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c \
@@ -972,7 +991,7 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c \
strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c \
inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \
- ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \
+ curl_addrinfo.c socks_gssapi.c socks_sspi.c \
curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \
pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \
openldap.c curl_gethostname.c gopher.c idn_win32.c \
@@ -1002,11 +1021,15 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \
curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h \
- curl_get_line.h altsvc.h
+ curl_get_line.h altsvc.h quic.h
LIB_RCFILES = libcurl.rc
-CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES)
-HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES)
+CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
+ $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
+
+HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
+ $(LIB_VQUIC_HFILES)
+
# Makefile.inc provides the CSOURCES and HHEADERS defines
libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
@@ -1179,6 +1202,26 @@ vtls/libcurl_la-mbedtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurl_la-mesalink.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
+vquic/$(am__dirstamp):
+ @$(MKDIR_P) vquic
+ @: > vquic/$(am__dirstamp)
+vquic/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) vquic/$(DEPDIR)
+ @: > vquic/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurl_la-ngtcp2.lo: vquic/$(am__dirstamp) \
+ vquic/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurl_la-quiche.lo: vquic/$(am__dirstamp) \
+ vquic/$(DEPDIR)/$(am__dirstamp)
+vssh/$(am__dirstamp):
+ @$(MKDIR_P) vssh
+ @: > vssh/$(am__dirstamp)
+vssh/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) vssh/$(DEPDIR)
+ @: > vssh/$(DEPDIR)/$(am__dirstamp)
+vssh/libcurl_la-libssh2.lo: vssh/$(am__dirstamp) \
+ vssh/$(DEPDIR)/$(am__dirstamp)
+vssh/libcurl_la-libssh.lo: vssh/$(am__dirstamp) \
+ vssh/$(DEPDIR)/$(am__dirstamp)
libcurl.la: $(libcurl_la_OBJECTS) $(libcurl_la_DEPENDENCIES) $(EXTRA_libcurl_la_DEPENDENCIES)
$(AM_V_CCLD)$(libcurl_la_LINK) -rpath $(libdir) $(libcurl_la_OBJECTS) $(libcurl_la_LIBADD) $(LIBS)
@@ -1232,6 +1275,14 @@ vtls/libcurlu_la-mbedtls.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
vtls/libcurlu_la-mesalink.lo: vtls/$(am__dirstamp) \
vtls/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurlu_la-ngtcp2.lo: vquic/$(am__dirstamp) \
+ vquic/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurlu_la-quiche.lo: vquic/$(am__dirstamp) \
+ vquic/$(DEPDIR)/$(am__dirstamp)
+vssh/libcurlu_la-libssh2.lo: vssh/$(am__dirstamp) \
+ vssh/$(DEPDIR)/$(am__dirstamp)
+vssh/libcurlu_la-libssh.lo: vssh/$(am__dirstamp) \
+ vssh/$(DEPDIR)/$(am__dirstamp)
libcurlu.la: $(libcurlu_la_OBJECTS) $(libcurlu_la_DEPENDENCIES) $(EXTRA_libcurlu_la_DEPENDENCIES)
$(AM_V_CCLD)$(libcurlu_la_LINK) $(am_libcurlu_la_rpath) $(libcurlu_la_OBJECTS) $(libcurlu_la_LIBADD) $(LIBS)
@@ -1240,6 +1291,10 @@ mostlyclean-compile:
-rm -f *.$(OBJEXT)
-rm -f vauth/*.$(OBJEXT)
-rm -f vauth/*.lo
+ -rm -f vquic/*.$(OBJEXT)
+ -rm -f vquic/*.lo
+ -rm -f vssh/*.$(OBJEXT)
+ -rm -f vssh/*.lo
-rm -f vtls/*.$(OBJEXT)
-rm -f vtls/*.lo
@@ -1340,8 +1395,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-speedcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-splay.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ssh-libssh.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ssh.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strcase.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strdup.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strerror.Plo@am__quote@ # am--include-marker
@@ -1452,8 +1505,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-speedcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-splay.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ssh-libssh.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ssh.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strcase.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strdup.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strerror.Plo@am__quote@ # am--include-marker
@@ -1494,6 +1545,14 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-vauth.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-quiche.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-quiche.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurl_la-libssh.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurl_la-libssh2.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurlu_la-libssh.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo@am__quote@ # am--include-marker
@@ -1964,20 +2023,6 @@ libcurl_la-socks.lo: socks.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-socks.lo `test -f 'socks.c' || echo '$(srcdir)/'`socks.c
-libcurl_la-ssh.lo: ssh.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-ssh.lo -MD -MP -MF $(DEPDIR)/libcurl_la-ssh.Tpo -c -o libcurl_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-ssh.Tpo $(DEPDIR)/libcurl_la-ssh.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssh.c' object='libcurl_la-ssh.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
-
-libcurl_la-ssh-libssh.lo: ssh-libssh.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-ssh-libssh.lo -MD -MP -MF $(DEPDIR)/libcurl_la-ssh-libssh.Tpo -c -o libcurl_la-ssh-libssh.lo `test -f 'ssh-libssh.c' || echo '$(srcdir)/'`ssh-libssh.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-ssh-libssh.Tpo $(DEPDIR)/libcurl_la-ssh-libssh.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssh-libssh.c' object='libcurl_la-ssh-libssh.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-ssh-libssh.lo `test -f 'ssh-libssh.c' || echo '$(srcdir)/'`ssh-libssh.c
-
libcurl_la-curl_addrinfo.lo: curl_addrinfo.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-curl_addrinfo.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_addrinfo.Tpo -c -o libcurl_la-curl_addrinfo.lo `test -f 'curl_addrinfo.c' || echo '$(srcdir)/'`curl_addrinfo.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_addrinfo.Tpo $(DEPDIR)/libcurl_la-curl_addrinfo.Plo
@@ -2510,6 +2555,34 @@ vtls/libcurl_la-mesalink.lo: vtls/mesalink.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
+vquic/libcurl_la-ngtcp2.lo: vquic/ngtcp2.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vquic/libcurl_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vquic/ngtcp2.c' object='vquic/libcurl_la-ngtcp2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
+
+vquic/libcurl_la-quiche.lo: vquic/quiche.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vquic/libcurl_la-quiche.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-quiche.Tpo -c -o vquic/libcurl_la-quiche.lo `test -f 'vquic/quiche.c' || echo '$(srcdir)/'`vquic/quiche.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-quiche.Tpo vquic/$(DEPDIR)/libcurl_la-quiche.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vquic/quiche.c' object='vquic/libcurl_la-quiche.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurl_la-quiche.lo `test -f 'vquic/quiche.c' || echo '$(srcdir)/'`vquic/quiche.c
+
+vssh/libcurl_la-libssh2.lo: vssh/libssh2.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vssh/libcurl_la-libssh2.lo -MD -MP -MF vssh/$(DEPDIR)/libcurl_la-libssh2.Tpo -c -o vssh/libcurl_la-libssh2.lo `test -f 'vssh/libssh2.c' || echo '$(srcdir)/'`vssh/libssh2.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vssh/$(DEPDIR)/libcurl_la-libssh2.Tpo vssh/$(DEPDIR)/libcurl_la-libssh2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vssh/libssh2.c' object='vssh/libcurl_la-libssh2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vssh/libcurl_la-libssh2.lo `test -f 'vssh/libssh2.c' || echo '$(srcdir)/'`vssh/libssh2.c
+
+vssh/libcurl_la-libssh.lo: vssh/libssh.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vssh/libcurl_la-libssh.lo -MD -MP -MF vssh/$(DEPDIR)/libcurl_la-libssh.Tpo -c -o vssh/libcurl_la-libssh.lo `test -f 'vssh/libssh.c' || echo '$(srcdir)/'`vssh/libssh.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vssh/$(DEPDIR)/libcurl_la-libssh.Tpo vssh/$(DEPDIR)/libcurl_la-libssh.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vssh/libssh.c' object='vssh/libcurl_la-libssh.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vssh/libcurl_la-libssh.lo `test -f 'vssh/libssh.c' || echo '$(srcdir)/'`vssh/libssh.c
+
libcurlu_la-file.lo: file.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-file.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-file.Tpo -c -o libcurlu_la-file.lo `test -f 'file.c' || echo '$(srcdir)/'`file.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-file.Tpo $(DEPDIR)/libcurlu_la-file.Plo
@@ -2923,20 +2996,6 @@ libcurlu_la-socks.lo: socks.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-socks.lo `test -f 'socks.c' || echo '$(srcdir)/'`socks.c
-libcurlu_la-ssh.lo: ssh.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-ssh.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-ssh.Tpo -c -o libcurlu_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-ssh.Tpo $(DEPDIR)/libcurlu_la-ssh.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssh.c' object='libcurlu_la-ssh.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-ssh.lo `test -f 'ssh.c' || echo '$(srcdir)/'`ssh.c
-
-libcurlu_la-ssh-libssh.lo: ssh-libssh.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-ssh-libssh.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-ssh-libssh.Tpo -c -o libcurlu_la-ssh-libssh.lo `test -f 'ssh-libssh.c' || echo '$(srcdir)/'`ssh-libssh.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-ssh-libssh.Tpo $(DEPDIR)/libcurlu_la-ssh-libssh.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ssh-libssh.c' object='libcurlu_la-ssh-libssh.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-ssh-libssh.lo `test -f 'ssh-libssh.c' || echo '$(srcdir)/'`ssh-libssh.c
-
libcurlu_la-curl_addrinfo.lo: curl_addrinfo.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-curl_addrinfo.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_addrinfo.Tpo -c -o libcurlu_la-curl_addrinfo.lo `test -f 'curl_addrinfo.c' || echo '$(srcdir)/'`curl_addrinfo.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_addrinfo.Tpo $(DEPDIR)/libcurlu_la-curl_addrinfo.Plo
@@ -3469,12 +3528,42 @@ vtls/libcurlu_la-mesalink.lo: vtls/mesalink.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
+vquic/libcurlu_la-ngtcp2.lo: vquic/ngtcp2.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vquic/libcurlu_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vquic/ngtcp2.c' object='vquic/libcurlu_la-ngtcp2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
+
+vquic/libcurlu_la-quiche.lo: vquic/quiche.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vquic/libcurlu_la-quiche.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-quiche.Tpo -c -o vquic/libcurlu_la-quiche.lo `test -f 'vquic/quiche.c' || echo '$(srcdir)/'`vquic/quiche.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-quiche.Tpo vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vquic/quiche.c' object='vquic/libcurlu_la-quiche.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vquic/libcurlu_la-quiche.lo `test -f 'vquic/quiche.c' || echo '$(srcdir)/'`vquic/quiche.c
+
+vssh/libcurlu_la-libssh2.lo: vssh/libssh2.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vssh/libcurlu_la-libssh2.lo -MD -MP -MF vssh/$(DEPDIR)/libcurlu_la-libssh2.Tpo -c -o vssh/libcurlu_la-libssh2.lo `test -f 'vssh/libssh2.c' || echo '$(srcdir)/'`vssh/libssh2.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vssh/$(DEPDIR)/libcurlu_la-libssh2.Tpo vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vssh/libssh2.c' object='vssh/libcurlu_la-libssh2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vssh/libcurlu_la-libssh2.lo `test -f 'vssh/libssh2.c' || echo '$(srcdir)/'`vssh/libssh2.c
+
+vssh/libcurlu_la-libssh.lo: vssh/libssh.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vssh/libcurlu_la-libssh.lo -MD -MP -MF vssh/$(DEPDIR)/libcurlu_la-libssh.Tpo -c -o vssh/libcurlu_la-libssh.lo `test -f 'vssh/libssh.c' || echo '$(srcdir)/'`vssh/libssh.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) vssh/$(DEPDIR)/libcurlu_la-libssh.Tpo vssh/$(DEPDIR)/libcurlu_la-libssh.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vssh/libssh.c' object='vssh/libcurlu_la-libssh.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vssh/libcurlu_la-libssh.lo `test -f 'vssh/libssh.c' || echo '$(srcdir)/'`vssh/libssh.c
+
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
-rm -rf vauth/.libs vauth/_libs
+ -rm -rf vquic/.libs vquic/_libs
+ -rm -rf vssh/.libs vssh/_libs
-rm -rf vtls/.libs vtls/_libs
ID: $(am__tagged_files)
@@ -3598,6 +3687,10 @@ distclean-generic:
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-rm -f vauth/$(DEPDIR)/$(am__dirstamp)
-rm -f vauth/$(am__dirstamp)
+ -rm -f vquic/$(DEPDIR)/$(am__dirstamp)
+ -rm -f vquic/$(am__dirstamp)
+ -rm -f vssh/$(DEPDIR)/$(am__dirstamp)
+ -rm -f vssh/$(am__dirstamp)
-rm -f vtls/$(DEPDIR)/$(am__dirstamp)
-rm -f vtls/$(am__dirstamp)
@@ -3704,8 +3797,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurl_la-socks_sspi.Plo
-rm -f ./$(DEPDIR)/libcurl_la-speedcheck.Plo
-rm -f ./$(DEPDIR)/libcurl_la-splay.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-ssh-libssh.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-ssh.Plo
-rm -f ./$(DEPDIR)/libcurl_la-strcase.Plo
-rm -f ./$(DEPDIR)/libcurl_la-strdup.Plo
-rm -f ./$(DEPDIR)/libcurl_la-strerror.Plo
@@ -3816,8 +3907,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libcurlu_la-socks_sspi.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-speedcheck.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-splay.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-ssh-libssh.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-ssh.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-strcase.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-strdup.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-strerror.Plo
@@ -3858,6 +3947,14 @@ distclean: distclean-am
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
+ -rm -f vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
+ -rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
+ -rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
+ -rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
+ -rm -f vssh/$(DEPDIR)/libcurl_la-libssh.Plo
+ -rm -f vssh/$(DEPDIR)/libcurl_la-libssh2.Plo
+ -rm -f vssh/$(DEPDIR)/libcurlu_la-libssh.Plo
+ -rm -f vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
@@ -4023,8 +4120,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurl_la-socks_sspi.Plo
-rm -f ./$(DEPDIR)/libcurl_la-speedcheck.Plo
-rm -f ./$(DEPDIR)/libcurl_la-splay.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-ssh-libssh.Plo
- -rm -f ./$(DEPDIR)/libcurl_la-ssh.Plo
-rm -f ./$(DEPDIR)/libcurl_la-strcase.Plo
-rm -f ./$(DEPDIR)/libcurl_la-strdup.Plo
-rm -f ./$(DEPDIR)/libcurl_la-strerror.Plo
@@ -4135,8 +4230,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libcurlu_la-socks_sspi.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-speedcheck.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-splay.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-ssh-libssh.Plo
- -rm -f ./$(DEPDIR)/libcurlu_la-ssh.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-strcase.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-strdup.Plo
-rm -f ./$(DEPDIR)/libcurlu_la-strerror.Plo
@@ -4177,6 +4270,14 @@ maintainer-clean: maintainer-clean-am
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
-rm -f vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
+ -rm -f vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
+ -rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
+ -rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
+ -rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
+ -rm -f vssh/$(DEPDIR)/libcurl_la-libssh.Plo
+ -rm -f vssh/$(DEPDIR)/libcurl_la-libssh2.Plo
+ -rm -f vssh/$(DEPDIR)/libcurlu_la-libssh.Plo
+ -rm -f vssh/$(DEPDIR)/libcurlu_la-libssh2.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
-rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
@@ -4244,7 +4345,7 @@ uninstall-am: uninstall-libLTLIBRARIES
checksrc:
$(CHECKSRC)(@PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
- $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch])
+ $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
# for debug builds, we scan the sources on all regular make invokes
@CURLDEBUG_TRUE@all-local: checksrc
diff --git a/lib/Makefile.inc b/lib/Makefile.inc
index 37f70268..3e3a385c 100644
--- a/lib/Makefile.inc
+++ b/lib/Makefile.inc
@@ -37,6 +37,12 @@ LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h \
vtls/wolfssl.h vtls/schannel.h vtls/sectransp.h vtls/gskit.h \
vtls/mbedtls.h vtls/mesalink.h
+LIB_VQUIC_CFILES = vquic/ngtcp2.c vquic/quiche.c
+
+LIB_VQUIC_HFILES = vquic/ngtcp2.h vquic/quiche.h
+
+LIB_VSSH_CFILES = vssh/libssh2.c vssh/libssh.c
+
LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c \
ldap.c version.c getenv.c escape.c mprintf.c telnet.c netrc.c \
@@ -46,7 +52,7 @@ LIB_CFILES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c \
strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c \
inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c \
- ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c \
+ curl_addrinfo.c socks_gssapi.c socks_sspi.c \
curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c \
pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c \
openldap.c curl_gethostname.c gopher.c idn_win32.c \
@@ -76,9 +82,11 @@ LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h \
curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h \
curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h \
- curl_get_line.h altsvc.h
+ curl_get_line.h altsvc.h quic.h
LIB_RCFILES = libcurl.rc
-CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES)
-HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES)
+CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
+ $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
+HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
+ $(LIB_VQUIC_HFILES)
diff --git a/lib/altsvc.c b/lib/altsvc.c
index 85a4e01b..a649fefd 100644
--- a/lib/altsvc.c
+++ b/lib/altsvc.c
@@ -54,10 +54,13 @@ static enum alpnid alpn2alpnid(char *name)
return ALPN_h1;
if(strcasecompare(name, "h2"))
return ALPN_h2;
- if(strcasecompare(name, "h2c"))
- return ALPN_h2c;
+#if (defined(USE_QUICHE) || defined(USE_NGHTTP2)) && !defined(UNITTESTS)
+ if(strcasecompare(name, "h3-22"))
+ return ALPN_h3;
+#else
if(strcasecompare(name, "h3"))
return ALPN_h3;
+#endif
return ALPN_none; /* unknown, probably rubbish input */
}
@@ -69,10 +72,12 @@ const char *Curl_alpnid2str(enum alpnid id)
return "h1";
case ALPN_h2:
return "h2";
- case ALPN_h2c:
- return "h2c";
case ALPN_h3:
+#if (defined(USE_QUICHE) || defined(USE_NGHTTP2)) && !defined(UNITTESTS)
+ return "h3-22";
+#else
return "h3";
+#endif
default:
return ""; /* bad */
}
@@ -81,8 +86,8 @@ const char *Curl_alpnid2str(enum alpnid id)
static void altsvc_free(struct altsvc *as)
{
- free(as->srchost);
- free(as->dsthost);
+ free(as->src.host);
+ free(as->dst.host);
free(as);
}
@@ -97,17 +102,17 @@ static struct altsvc *altsvc_createid(const char *srchost,
if(!as)
return NULL;
- as->srchost = strdup(srchost);
- if(!as->srchost)
+ as->src.host = strdup(srchost);
+ if(!as->src.host)
goto error;
- as->dsthost = strdup(dsthost);
- if(!as->dsthost)
+ as->dst.host = strdup(dsthost);
+ if(!as->dst.host)
goto error;
- as->srcalpnid = srcalpnid;
- as->dstalpnid = dstalpnid;
- as->srcport = curlx_ultous(srcport);
- as->dstport = curlx_ultous(dstport);
+ as->src.alpnid = srcalpnid;
+ as->dst.alpnid = dstalpnid;
+ as->src.port = curlx_ultous(srcport);
+ as->dst.port = curlx_ultous(dstport);
return as;
error:
@@ -226,8 +231,8 @@ static CURLcode altsvc_out(struct altsvc *as, FILE *fp)
"\"%d%02d%02d "
"%02d:%02d:%02d\" "
"%u %d\n",
- Curl_alpnid2str(as->srcalpnid), as->srchost, as->srcport,
- Curl_alpnid2str(as->dstalpnid), as->dsthost, as->dstport,
+ Curl_alpnid2str(as->src.alpnid), as->src.host, as->src.port,
+ Curl_alpnid2str(as->dst.alpnid), as->dst.host, as->dst.port,
stamp.tm_year + 1900, stamp.tm_mon + 1, stamp.tm_mday,
stamp.tm_hour, stamp.tm_min, stamp.tm_sec,
as->persist, as->prio);
@@ -252,7 +257,7 @@ struct altsvcinfo *Curl_altsvc_init(void)
#ifdef USE_NGHTTP2
| CURLALTSVC_H2
#endif
-#ifdef USE_HTTP3
+#ifdef ENABLE_QUIC
| CURLALTSVC_H3
#endif
;
@@ -343,7 +348,7 @@ static CURLcode getalnum(const char **ptr, char *alpnbuf, size_t buflen)
while(*p && ISBLANK(*p))
p++;
protop = p;
- while(*p && ISALNUM(*p))
+ while(*p && !ISBLANK(*p) && (*p != ';') && (*p != '='))
p++;
len = p - protop;
@@ -365,9 +370,9 @@ static void altsvc_flush(struct altsvcinfo *asi, enum alpnid srcalpnid,
for(e = asi->list.head; e; e = n) {
struct altsvc *as = e->ptr;
n = e->next;
- if((srcalpnid == as->srcalpnid) &&
- (srcport == as->srcport) &&
- strcasecompare(srchost, as->srchost)) {
+ if((srcalpnid == as->src.alpnid) &&
+ (srcport == as->src.port) &&
+ strcasecompare(srchost, as->src.host)) {
Curl_llist_remove(&asi->list, e, NULL);
altsvc_free(as);
asi->num--;
@@ -535,31 +540,31 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
bool Curl_altsvc_lookup(struct altsvcinfo *asi,
enum alpnid srcalpnid, const char *srchost,
int srcport,
- enum alpnid *dstalpnid, const char **dsthost,
- int *dstport)
+ struct altsvc **dstentry,
+ const int versions) /* one or more bits */
{
struct curl_llist_element *e;
struct curl_llist_element *n;
time_t now = time(NULL);
DEBUGASSERT(asi);
DEBUGASSERT(srchost);
- DEBUGASSERT(dsthost);
+ DEBUGASSERT(dstentry);
for(e = asi->list.head; e; e = n) {
struct altsvc *as = e->ptr;
n = e->next;
if(as->expires < now) {
/* an expired entry, remove */
+ Curl_llist_remove(&asi->list, e, NULL);
altsvc_free(as);
continue;
}
- if((as->srcalpnid == srcalpnid) &&
- strcasecompare(as->srchost, srchost) &&
- as->srcport == srcport) {
+ if((as->src.alpnid == srcalpnid) &&
+ strcasecompare(as->src.host, srchost) &&
+ (as->src.port == srcport) &&
+ (versions & as->dst.alpnid)) {
/* match */
- *dstalpnid = as->dstalpnid;
- *dsthost = as->dsthost;
- *dstport = as->dstport;
+ *dstentry = as;
return TRUE;
}
}
diff --git a/lib/altsvc.h b/lib/altsvc.h
index eefb45bf..99d0499a 100644
--- a/lib/altsvc.h
+++ b/lib/altsvc.h
@@ -28,20 +28,21 @@
#include "llist.h"
enum alpnid {
- ALPN_none,
- ALPN_h1,
- ALPN_h2,
- ALPN_h2c,
- ALPN_h3
+ ALPN_none = 0,
+ ALPN_h1 = CURLALTSVC_H1,
+ ALPN_h2 = CURLALTSVC_H2,
+ ALPN_h3 = CURLALTSVC_H3
+};
+
+struct althost {
+ char *host;
+ unsigned short port;
+ enum alpnid alpnid;
};
struct altsvc {
- char *srchost;
- char *dsthost;
- unsigned short srcport;
- unsigned short dstport;
- enum alpnid srcalpnid;
- enum alpnid dstalpnid;
+ struct althost src;
+ struct althost dst;
time_t expires;
bool persist;
int prio;
@@ -68,8 +69,8 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
bool Curl_altsvc_lookup(struct altsvcinfo *asi,
enum alpnid srcalpnid, const char *srchost,
int srcport,
- enum alpnid *dstalpnid, const char **dsthost,
- int *dstport);
+ struct altsvc **dstentry,
+ int versions); /* one or more CURLALTSVC_H* bits */
#else
/* disabled */
#define Curl_altsvc_save(a,b)
diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c
index 6b14aa69..835cfa48 100644
--- a/lib/asyn-ares.c
+++ b/lib/asyn-ares.c
@@ -253,16 +253,14 @@ static void destroy_async_data(struct Curl_async *async)
*/
int Curl_resolver_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
-
+ curl_socket_t *socks)
{
struct timeval maxtime;
struct timeval timebuf;
struct timeval *timeout;
long milli;
int max = ares_getsock((ares_channel)conn->data->state.resolver,
- (ares_socket_t *)socks, numsocks);
+ (ares_socket_t *)socks, MAX_SOCKSPEREASYHANDLE);
maxtime.tv_sec = CURL_TIMEOUT_RESOLVE;
maxtime.tv_usec = 0;
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index 55e0811c..24da7488 100644..100755
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -163,6 +163,10 @@ struct thread_sync_data {
char *hostname; /* hostname to resolve, Curl_async.hostname
duplicate */
int port;
+#ifdef HAVE_SOCKETPAIR
+ struct connectdata *conn;
+ curl_socket_t sock_pair[2]; /* socket pair */
+#endif
int sock_error;
Curl_addrinfo *res;
#ifdef HAVE_GETADDRINFO
@@ -197,6 +201,15 @@ void destroy_thread_sync_data(struct thread_sync_data * tsd)
if(tsd->res)
Curl_freeaddrinfo(tsd->res);
+#ifdef HAVE_SOCKETPAIR
+ /*
+ * close one end of the socket pair (may be done in resolver thread);
+ * the other end (for reading) is always closed in the parent thread.
+ */
+ if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
+ sclose(tsd->sock_pair[1]);
+ }
+#endif
memset(tsd, 0, sizeof(*tsd));
}
@@ -230,6 +243,14 @@ int init_thread_sync_data(struct thread_data * td,
Curl_mutex_init(tsd->mtx);
+#ifdef HAVE_SOCKETPAIR
+ /* create socket pair */
+ if(socketpair(AF_LOCAL, SOCK_STREAM, 0, &tsd->sock_pair[0]) < 0) {
+ tsd->sock_pair[0] = CURL_SOCKET_BAD;
+ tsd->sock_pair[1] = CURL_SOCKET_BAD;
+ goto err_exit;
+ }
+#endif
tsd->sock_error = CURL_ASYNC_SUCCESS;
/* Copying hostname string because original can be destroyed by parent
@@ -276,6 +297,9 @@ static unsigned int CURL_STDCALL getaddrinfo_thread(void *arg)
struct thread_data *td = tsd->td;
char service[12];
int rc;
+#ifdef HAVE_SOCKETPAIR
+ char buf[1];
+#endif
msnprintf(service, sizeof(service), "%d", tsd->port);
@@ -298,6 +322,16 @@ static unsigned int CURL_STDCALL getaddrinfo_thread(void *arg)
free(td);
}
else {
+#ifdef HAVE_SOCKETPAIR
+ if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
+ /* DNS has been resolved, signal client task */
+ buf[0] = 1;
+ if(write(tsd->sock_pair[1], buf, sizeof(buf)) < 0) {
+ /* update sock_erro to errno */
+ tsd->sock_error = SOCKERRNO;
+ }
+ }
+#endif
tsd->done = 1;
Curl_mutex_release(tsd->mtx);
}
@@ -348,6 +382,10 @@ static void destroy_async_data(struct Curl_async *async)
if(async->os_specific) {
struct thread_data *td = (struct thread_data*) async->os_specific;
int done;
+#ifdef HAVE_SOCKETPAIR
+ curl_socket_t sock_rd = td->tsd.sock_pair[0];
+ struct connectdata *conn = td->tsd.conn;
+#endif
/*
* if the thread is still blocking in the resolve syscall, detach it and
@@ -369,6 +407,15 @@ static void destroy_async_data(struct Curl_async *async)
free(async->os_specific);
}
+#ifdef HAVE_SOCKETPAIR
+ /*
+ * ensure CURLMOPT_SOCKETFUNCTION fires CURL_POLL_REMOVE
+ * before the FD is invalidated to avoid EBADF on EPOLL_CTL_DEL
+ */
+ if(conn)
+ Curl_multi_closed(conn->data, sock_rd);
+ sclose(sock_rd);
+#endif
}
async->os_specific = NULL;
@@ -569,8 +616,9 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
}
else {
/* poll for name lookup done with exponential backoff up to 250ms */
- timediff_t elapsed = Curl_timediff(Curl_now(),
- data->progress.t_startsingle);
+ /* should be fine even if this converts to 32 bit */
+ time_t elapsed = (time_t)Curl_timediff(Curl_now(),
+ data->progress.t_startsingle);
if(elapsed < 0)
elapsed = 0;
@@ -592,26 +640,45 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
}
int Curl_resolver_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
+ int ret_val = 0;
time_t milli;
timediff_t ms;
struct Curl_easy *data = conn->data;
struct resdata *reslv = (struct resdata *)data->state.resolver;
+#ifdef HAVE_SOCKETPAIR
+ struct thread_data *td = (struct thread_data*)conn->async.os_specific;
+#else
(void)socks;
- (void)numsocks;
- ms = Curl_timediff(Curl_now(), reslv->start);
- if(ms < 3)
- milli = 0;
- else if(ms <= 50)
- milli = ms/3;
- else if(ms <= 250)
- milli = 50;
- else
- milli = 200;
- Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
- return 0;
+#endif
+
+#ifdef HAVE_SOCKETPAIR
+ if(td) {
+ /* return read fd to client for polling the DNS resolution status */
+ socks[0] = td->tsd.sock_pair[0];
+ DEBUGASSERT(td->tsd.conn == conn || !td->tsd.conn);
+ td->tsd.conn = conn;
+ ret_val = GETSOCK_READSOCK(0);
+ }
+ else {
+#endif
+ ms = Curl_timediff(Curl_now(), reslv->start);
+ if(ms < 3)
+ milli = 0;
+ else if(ms <= 50)
+ milli = (time_t)ms/3;
+ else if(ms <= 250)
+ milli = 50;
+ else
+ milli = 200;
+ Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
+#ifdef HAVE_SOCKETPAIR
+ }
+#endif
+
+
+ return ret_val;
}
#ifndef HAVE_GETADDRINFO
@@ -706,7 +773,8 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata *conn,
memset(&hints, 0, sizeof(hints));
hints.ai_family = pf;
- hints.ai_socktype = conn->socktype;
+ hints.ai_socktype = (conn->transport == TRNSPRT_TCP)?
+ SOCK_STREAM : SOCK_DGRAM;
msnprintf(sbuf, sizeof(sbuf), "%d", port);
diff --git a/lib/asyn.h b/lib/asyn.h
index ccd4b1f7..081c3fef 100644
--- a/lib/asyn.h
+++ b/lib/asyn.h
@@ -114,8 +114,7 @@ void Curl_resolver_kill(struct connectdata *conn);
* return bitmask indicating what file descriptors (referring to array indexes
* in the 'sock' array) to wait for, read/write.
*/
-int Curl_resolver_getsock(struct connectdata *conn, curl_socket_t *sock,
- int numsocks);
+int Curl_resolver_getsock(struct connectdata *conn, curl_socket_t *sock);
/*
* Curl_resolver_is_resolved()
diff --git a/lib/base64.c b/lib/base64.c
index fb081a6b..643cef62 100644
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -24,8 +24,8 @@
#include "curl_setup.h"
-#if !defined(CURL_DISABLE_HTTP_AUTH) || defined(USE_LIBSSH2) || \
- defined(USE_LIBSSH) || !defined(CURL_DISABLE_LDAP) || \
+#if !defined(CURL_DISABLE_HTTP_AUTH) || defined(USE_SSH) || \
+ !defined(CURL_DISABLE_LDAP) || \
!defined(CURL_DISABLE_DOH) || defined(USE_SSL)
#include "urldata.h" /* for the Curl_easy definition */
diff --git a/lib/config-os400.h b/lib/config-os400.h
index a741e918..d14bd339 100644
--- a/lib/config-os400.h
+++ b/lib/config-os400.h
@@ -434,6 +434,9 @@
/* Define to enable alt-svc support (experimental) */
#undef USE_ALTSVC
+/* Define to enable HTTP3 support (experimental, requires NGTCP2 or QUICHE) */
+#undef ENABLE_QUIC
+
/* Version number of package */
#undef VERSION
diff --git a/lib/config-plan9.h b/lib/config-plan9.h
new file mode 100644
index 00000000..70833a51
--- /dev/null
+++ b/lib/config-plan9.h
@@ -0,0 +1,217 @@
+#ifndef HEADER_CURL_CONFIG_PLAN9_H
+#define HEADER_CURL_CONFIG_PLAN9_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#define BUILDING_LIBCURL 1
+#define CURL_CA_BUNDLE "/sys/lib/tls/ca.pem"
+#define CURL_CA_PATH "/sys/lib/tls"
+#define CURL_STATICLIB 1
+#define ENABLE_IPV6 1
+#define CURL_DISABLE_LDAP 1
+
+#define NEED_REENTRANT 1
+#define OS "plan9"
+#define PACKAGE "curl"
+#define PACKAGE_NAME "curl"
+#define PACKAGE_BUGREPORT "a suitable mailing list: https://curl.haxx.se/mail/"
+#define PACKAGE_STRING "curl -"
+#define PACKAGE_TARNAME "curl"
+#define PACKAGE_VERSION "-"
+#define RANDOM_FILE "/dev/random"
+#define VERSION "0.0.0" /* TODO */
+
+#define RETSIGTYPE void
+
+#define STDC_HEADERS 1
+
+#ifdef _BITS64
+#error not implement
+#else
+#define SIZEOF_INT 4
+#define SIZEOF_SHORT 2
+#define SIZEOF_LONG 4
+#define SIZEOF_OFF_T 8
+#define SIZEOF_CURL_OFF_T 4 /* curl_off_t = timediff_t = int */
+#define SIZEOF_SIZE_T 4
+#define SIZEOF_TIME_T 4
+#endif
+
+#define HAVE_GETNAMEINFO 1
+#define GETNAMEINFO_QUAL_ARG1 const
+#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
+#define GETNAMEINFO_TYPE_ARG2 int
+#define GETNAMEINFO_TYPE_ARG46 long
+#define GETNAMEINFO_TYPE_ARG7 int
+
+#define HAVE_RECV 1
+#define RECV_TYPE_ARG1 int
+#define RECV_TYPE_ARG2 void *
+#define RECV_TYPE_ARG3 int
+#define RECV_TYPE_ARG4 int
+#define RECV_TYPE_RETV int
+
+#define HAVE_RECVFROM 1
+#define RECVFROM_TYPE_ARG1 int
+#define RECVFROM_TYPE_ARG2 void
+#define RECVFROM_TYPE_ARG2_IS_VOID 1
+#define RECVFROM_TYPE_ARG3 int
+#define RECVFROM_TYPE_ARG4 int
+#define RECVFROM_TYPE_ARG5 void
+#define RECVFROM_TYPE_ARG5_IS_VOID 1
+#define RECVFROM_TYPE_ARG6 int
+#define RECVFROM_TYPE_ARG6_IS_VOID 1
+#define RECVFROM_TYPE_RETV int
+
+#define HAVE_SELECT 1
+#define SELECT_TYPE_ARG1 int
+#define SELECT_TYPE_ARG234 fd_set *
+#define SELECT_TYPE_ARG5 struct timeval *
+#define SELECT_TYPE_RETV int
+
+#define HAVE_SEND 1
+#define SEND_TYPE_ARG1 int
+#define SEND_TYPE_ARG2 void *
+#define SEND_QUAL_ARG2
+#define SEND_TYPE_ARG3 int
+#define SEND_TYPE_ARG4 int
+#define SEND_TYPE_RETV int
+
+#define HAVE_ALARM 1
+#define HAVE_ARPA_INET_H 1
+#define HAVE_ASSERT_H 1
+#define HAVE_BASENAME 1
+#define HAVE_BOOL_T 1
+#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
+#define HAVE_ENGINE_LOAD_BUILTIN_ENGINES 1
+#define HAVE_ERRNO_H 1
+#define HAVE_FCNTL 1
+#define HAVE_FCNTL_H 1
+#define HAVE_FDOPEN 1
+#define HAVE_FORK 1
+#define HAVE_FREEADDRINFO 1
+#define HAVE_FTRUNCATE 1
+#define HAVE_GETADDRINFO 1
+#define HAVE_GETEUID 1
+#define HAVE_GETHOSTBYADDR 1
+#define HAVE_GETHOSTBYNAME 1
+#define HAVE_GETHOSTNAME 1
+#define HAVE_GETPPID 1
+#define HAVE_GETPROTOBYNAME 1
+#define HAVE_GETPWUID 1
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GMTIME_R 1
+#define HAVE_INET_ADDR 1
+#define HAVE_INET_NTOP 1
+#define HAVE_INET_PTON 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_IOCTL 1
+#define HAVE_LIBGEN_H 1
+#define HAVE_LIBSSL 1
+#define HAVE_LIBZ 1
+#define HAVE_LL 1
+#define HAVE_LOCALE_H 1
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LONGLONG 1
+#define HAVE_NETDB_H 1
+#define HAVE_NETINET_IN_H 1
+#define HAVE_NETINET_TCP_H 1
+#define HAVE_PWD_H 1
+#define HAVE_SYS_SELECT_H 1
+
+#define USE_OPENSSL 1
+#define HAVE_OPENSSL_CRYPTO_H 1
+#define HAVE_OPENSSL_ENGINE_H 1
+#define HAVE_OPENSSL_ERR_H 1
+#define HAVE_OPENSSL_PEM_H 1
+#define HAVE_OPENSSL_PKCS12_H 1
+#define HAVE_OPENSSL_RSA_H 1
+#define HAVE_OPENSSL_SSL_H 1
+#define HAVE_OPENSSL_X509_H 1
+
+#define HAVE_PERROR 1
+#define HAVE_PIPE 1
+#define HAVE_POLL 1
+#define HAVE_POLL_FINE 1
+#define HAVE_POLL_H 1
+#define HAVE_PTHREAD_H 1
+#define HAVE_RAND_STATUS 1
+#define HAVE_SETJMP_H 1
+#define HAVE_SETLOCALE 1
+
+#define HAVE_SETSOCKOPT 1
+#define HAVE_SOCK_OPTS 1 /* for /sys/include/ape/sys/socket.h */
+
+#define HAVE_SIGACTION 1
+#define HAVE_SIGNAL 1
+#define HAVE_SIGNAL_H 1
+#define HAVE_SIGSETJMP 1
+#define HAVE_SIG_ATOMIC_T 1
+#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+#define HAVE_SOCKET 1
+#define HAVE_SSL_GET_SHUTDOWN 1
+#define HAVE_STDBOOL_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDIO_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRCASECMP 1
+#define HAVE_STRDUP 1
+#define HAVE_STRING_H 1
+#define HAVE_STRNCASECMP 1
+#define HAVE_STRSTR 1
+#define HAVE_STRTOK_R 1
+#define HAVE_STRTOLL 1
+#define HAVE_STRUCT_TIMEVAL 1
+#define HAVE_SYS_IOCTL_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_SYS_SOCKET_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_UIO_H 1
+#define HAVE_SYS_UN_H 1
+#define HAVE_TERMIOS_H 1
+#define HAVE_TIME_H 1
+#define HAVE_UNAME 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UTIME 1
+#define HAVE_UTIME_H 1
+#define HAVE_WRITEV 1
+
+#define HAVE_ZLIB_H 1
+
+#define HAVE_POSIX_STRERROR_R 1
+#define HAVE_STRERROR_R 1
+#define STRERROR_R_TYPE_ARG3 int
+
+#define TIME_WITH_SYS_TIME 1
+#define USE_BLOCKING_SOCKETS 1
+#define USE_MANUAL 1
+
+#define __attribute__(x)
+
+#ifndef __cplusplus
+#undef inline
+#endif
+
+#endif /* HEADER_CURL_CONFIG_PLAN9_H */
diff --git a/lib/connect.c b/lib/connect.c
index 4a1f2c64..77196250 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -75,6 +75,8 @@
#include "conncache.h"
#include "multihandle.h"
#include "system_win32.h"
+#include "quic.h"
+#include "socks.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -165,7 +167,7 @@ tcpkeepalive(struct Curl_easy *data,
static CURLcode
singleipconnect(struct connectdata *conn,
const Curl_addrinfo *ai, /* start connecting to this */
- curl_socket_t *sock);
+ int sockindex); /* 0 or 1 among the temp ones */
/*
* Curl_timeleft() returns the amount of milliseconds left allowed for the
@@ -595,7 +597,7 @@ static CURLcode trynextip(struct connectdata *conn,
}
if(ai) {
- result = singleipconnect(conn, ai, &conn->tempsock[tempindex]);
+ result = singleipconnect(conn, ai, tempindex);
if(result == CURLE_COULDNT_CONNECT) {
ai = ai->ai_next;
continue;
@@ -625,13 +627,10 @@ void Curl_persistconninfo(struct connectdata *conn)
conn->data->info.conn_local_port = conn->local_port;
}
-UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
- long *port);
-
/* retrieves ip address and port from a sockaddr structure.
note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
-UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
- long *port)
+bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen,
+ char *addr, long *port)
{
struct sockaddr_in *si = NULL;
#ifdef ENABLE_IPV6
@@ -639,6 +638,8 @@ UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
#endif
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
struct sockaddr_un *su = NULL;
+#else
+ (void)salen;
#endif
switch(sa->sa_family) {
@@ -664,8 +665,12 @@ UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
#endif
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
case AF_UNIX:
- su = (struct sockaddr_un*)sa;
- msnprintf(addr, MAX_IPADR_LEN, "%s", su->sun_path);
+ if(salen > sizeof(sa_family_t)) {
+ su = (struct sockaddr_un*)sa;
+ msnprintf(addr, MAX_IPADR_LEN, "%s", su->sun_path);
+ }
+ else
+ addr[0] = 0; /* socket with no name */
*port = 0;
return TRUE;
#endif
@@ -683,8 +688,8 @@ UNITTEST bool getaddressinfo(struct sockaddr *sa, char *addr,
connection */
void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
{
- if(conn->socktype == SOCK_DGRAM)
- /* there's no connection! */
+ if(conn->transport != TRNSPRT_TCP)
+ /* there's no TCP connection! */
return;
#if defined(HAVE_GETPEERNAME) || defined(HAVE_GETSOCKNAME)
@@ -693,10 +698,11 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
char buffer[STRERROR_LEN];
struct Curl_sockaddr_storage ssrem;
struct Curl_sockaddr_storage ssloc;
- curl_socklen_t len;
+ curl_socklen_t plen;
+ curl_socklen_t slen;
#ifdef HAVE_GETPEERNAME
- len = sizeof(struct Curl_sockaddr_storage);
- if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) {
+ plen = sizeof(struct Curl_sockaddr_storage);
+ if(getpeername(sockfd, (struct sockaddr*) &ssrem, &plen)) {
int error = SOCKERRNO;
failf(data, "getpeername() failed with errno %d: %s",
error, Curl_strerror(error, buffer, sizeof(buffer)));
@@ -704,9 +710,9 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
}
#endif
#ifdef HAVE_GETSOCKNAME
- len = sizeof(struct Curl_sockaddr_storage);
+ slen = sizeof(struct Curl_sockaddr_storage);
memset(&ssloc, 0, sizeof(ssloc));
- if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) {
+ if(getsockname(sockfd, (struct sockaddr*) &ssloc, &slen)) {
int error = SOCKERRNO;
failf(data, "getsockname() failed with errno %d: %s",
error, Curl_strerror(error, buffer, sizeof(buffer)));
@@ -714,8 +720,8 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
}
#endif
#ifdef HAVE_GETPEERNAME
- if(!getaddressinfo((struct sockaddr*)&ssrem,
- conn->primary_ip, &conn->primary_port)) {
+ if(!Curl_addr2string((struct sockaddr*)&ssrem, plen,
+ conn->primary_ip, &conn->primary_port)) {
failf(data, "ssrem inet_ntop() failed with errno %d: %s",
errno, Curl_strerror(errno, buffer, sizeof(buffer)));
return;
@@ -723,8 +729,8 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
#endif
#ifdef HAVE_GETSOCKNAME
- if(!getaddressinfo((struct sockaddr*)&ssloc,
- conn->local_ip, &conn->local_port)) {
+ if(!Curl_addr2string((struct sockaddr*)&ssloc, slen,
+ conn->local_ip, &conn->local_port)) {
failf(data, "ssloc inet_ntop() failed with errno %d: %s",
errno, Curl_strerror(errno, buffer, sizeof(buffer)));
return;
@@ -739,6 +745,58 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd)
Curl_persistconninfo(conn);
}
+/* after a TCP connection to the proxy has been verified, this function does
+ the next magic step.
+
+ Note: this function's sub-functions call failf()
+
+*/
+static CURLcode connected_proxy(struct connectdata *conn, int sockindex)
+{
+ CURLcode result = CURLE_OK;
+
+ if(conn->bits.socksproxy) {
+#ifndef CURL_DISABLE_PROXY
+ /* for the secondary socket (FTP), use the "connect to host"
+ * but ignore the "connect to port" (use the secondary port)
+ */
+ const char * const host = conn->bits.httpproxy ?
+ conn->http_proxy.host.name :
+ conn->bits.conn_to_host ?
+ conn->conn_to_host.name :
+ sockindex == SECONDARYSOCKET ?
+ conn->secondaryhostname : conn->host.name;
+ const int port = conn->bits.httpproxy ? (int)conn->http_proxy.port :
+ sockindex == SECONDARYSOCKET ? conn->secondary_port :
+ conn->bits.conn_to_port ? conn->conn_to_port :
+ conn->remote_port;
+ conn->bits.socksproxy_connecting = TRUE;
+ switch(conn->socks_proxy.proxytype) {
+ case CURLPROXY_SOCKS5:
+ case CURLPROXY_SOCKS5_HOSTNAME:
+ result = Curl_SOCKS5(conn->socks_proxy.user, conn->socks_proxy.passwd,
+ host, port, sockindex, conn);
+ break;
+
+ case CURLPROXY_SOCKS4:
+ case CURLPROXY_SOCKS4A:
+ result = Curl_SOCKS4(conn->socks_proxy.user, host, port, sockindex,
+ conn);
+ break;
+
+ default:
+ failf(conn->data, "unknown proxytype option given");
+ result = CURLE_COULDNT_CONNECT;
+ } /* switch proxytype */
+ conn->bits.socksproxy_connecting = FALSE;
+#else
+ (void)sockindex;
+#endif /* CURL_DISABLE_PROXY */
+ }
+
+ return result;
+}
+
/*
* Curl_is_connected() checks if the socket has connected.
*/
@@ -781,6 +839,24 @@ CURLcode Curl_is_connected(struct connectdata *conn,
if(conn->tempsock[i] == CURL_SOCKET_BAD)
continue;
+#ifdef ENABLE_QUIC
+ if(conn->transport == TRNSPRT_QUIC) {
+ result = Curl_quic_is_connected(conn, i, connected);
+ if(result) {
+ error = SOCKERRNO;
+ goto error;
+ }
+ if(*connected) {
+ /* use this socket from now on */
+ conn->sock[sockindex] = conn->tempsock[i];
+ conn->ip_addr = conn->tempaddr[i];
+ conn->tempsock[i] = CURL_SOCKET_BAD;
+ connkeep(conn, "HTTP/3 default");
+ }
+ return result;
+ }
+#endif
+
#ifdef mpeix
/* Call this function once now, and ignore the results. We do this to
"clear" the error state on the socket so that we can later read it
@@ -794,8 +870,8 @@ CURLcode Curl_is_connected(struct connectdata *conn,
if(rc == 0) { /* no connection yet */
error = 0;
if(Curl_timediff(now, conn->connecttime) >= conn->timeoutms_per_addr) {
- infof(data, "After %ldms connect time, move on!\n",
- conn->timeoutms_per_addr);
+ infof(data, "After %" CURL_FORMAT_TIMEDIFF_T
+ "ms connect time, move on!\n", conn->timeoutms_per_addr);
error = ETIMEDOUT;
}
@@ -825,7 +901,7 @@ CURLcode Curl_is_connected(struct connectdata *conn,
}
/* see if we need to do any proxy magic first once we connected */
- result = Curl_connected_proxy(conn, sockindex);
+ result = connected_proxy(conn, sockindex);
if(result)
return result;
@@ -844,6 +920,9 @@ CURLcode Curl_is_connected(struct connectdata *conn,
else if(rc & CURL_CSELECT_ERR)
(void)verifyconnect(conn->tempsock[i], &error);
+#ifdef ENABLE_QUIC
+ error:
+#endif
/*
* The connection failed here, we should attempt to connect to the "next
* address" for the given host. But first remember the latest error.
@@ -861,11 +940,11 @@ CURLcode Curl_is_connected(struct connectdata *conn,
Curl_strerror(error, buffer, sizeof(buffer)));
conn->timeoutms_per_addr = conn->tempaddr[i]->ai_next == NULL ?
- allow : allow / 2;
+ allow : allow / 2;
status = trynextip(conn, sockindex, i);
- if(status != CURLE_COULDNT_CONNECT
- || conn->tempsock[other] == CURL_SOCKET_BAD)
+ if((status != CURLE_COULDNT_CONNECT) ||
+ conn->tempsock[other] == CURL_SOCKET_BAD)
/* the last attempt failed and no other sockets remain open */
result = status;
}
@@ -1004,7 +1083,7 @@ void Curl_sndbufset(curl_socket_t sockfd)
*/
static CURLcode singleipconnect(struct connectdata *conn,
const Curl_addrinfo *ai,
- curl_socket_t *sockp)
+ int sockindex)
{
struct Curl_sockaddr_ex addr;
int rc = -1;
@@ -1020,7 +1099,7 @@ static CURLcode singleipconnect(struct connectdata *conn,
int optval = 1;
#endif
char buffer[STRERROR_LEN];
-
+ curl_socket_t *sockp = &conn->tempsock[sockindex];
*sockp = CURL_SOCKET_BAD;
result = Curl_socket(conn, ai, &addr, &sockfd);
@@ -1031,8 +1110,8 @@ static CURLcode singleipconnect(struct connectdata *conn,
return CURLE_OK;
/* store remote address and port used in this connection attempt */
- if(!getaddressinfo((struct sockaddr*)&addr.sa_addr,
- ipaddress, &port)) {
+ if(!Curl_addr2string((struct sockaddr*)&addr.sa_addr, addr.addrlen,
+ ipaddress, &port)) {
/* malformed address or bug in inet_ntop, try next address */
failf(data, "sa_addr inet_ntop() failed with errno %d: %s",
errno, Curl_strerror(errno, buffer, sizeof(buffer)));
@@ -1099,8 +1178,8 @@ static CURLcode singleipconnect(struct connectdata *conn,
if(conn->num_addr > 1)
Curl_expire(data, conn->timeoutms_per_addr, EXPIRE_DNS_PER_NAME);
- /* Connect TCP sockets, bind UDP */
- if(!isconnected && (conn->socktype == SOCK_STREAM)) {
+ /* Connect TCP and QUIC sockets */
+ if(!isconnected && (conn->transport != TRNSPRT_UDP)) {
if(conn->bits.tcp_fastopen) {
#if defined(CONNECT_DATA_IDEMPOTENT) /* Darwin */
# if defined(HAVE_BUILTIN_AVAILABLE)
@@ -1146,6 +1225,16 @@ static CURLcode singleipconnect(struct connectdata *conn,
if(-1 == rc)
error = SOCKERRNO;
+#ifdef ENABLE_QUIC
+ else if(conn->transport == TRNSPRT_QUIC) {
+ /* pass in 'sockfd' separately since it hasn't been put into the
+ tempsock array at this point */
+ result = Curl_quic_connect(conn, sockfd, sockindex,
+ &addr.sa_addr, addr.addrlen);
+ if(result)
+ error = SOCKERRNO;
+ }
+#endif
}
else {
*sockp = sockfd;
@@ -1219,7 +1308,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
/* start connecting to first IP */
while(conn->tempaddr[0]) {
- result = singleipconnect(conn, conn->tempaddr[0], &(conn->tempsock[0]));
+ result = singleipconnect(conn, conn->tempaddr[0], 0);
if(!result)
break;
conn->tempaddr[0] = conn->tempaddr[0]->ai_next;
@@ -1386,8 +1475,9 @@ CURLcode Curl_socket(struct connectdata *conn,
*/
addr->family = ai->ai_family;
- addr->socktype = conn->socktype;
- addr->protocol = conn->socktype == SOCK_DGRAM?IPPROTO_UDP:ai->ai_protocol;
+ addr->socktype = (conn->transport == TRNSPRT_TCP) ? SOCK_STREAM : SOCK_DGRAM;
+ addr->protocol = conn->transport != TRNSPRT_TCP ? IPPROTO_UDP :
+ ai->ai_protocol;
addr->addrlen = ai->ai_addrlen;
if(addr->addrlen > sizeof(struct Curl_sockaddr_storage))
diff --git a/lib/connect.h b/lib/connect.h
index 6a5c755c..b23085a9 100644
--- a/lib/connect.h
+++ b/lib/connect.h
@@ -51,6 +51,9 @@ timediff_t Curl_timeleft(struct Curl_easy *data,
curl_socket_t Curl_getconnectinfo(struct Curl_easy *data,
struct connectdata **connp);
+bool Curl_addr2string(struct sockaddr *sa, curl_socklen_t salen,
+ char *addr, long *port);
+
/*
* Check if a connection seems to be alive.
*/
diff --git a/lib/cookie.c b/lib/cookie.c
index 9a9e14d0..53ca4023 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -819,22 +819,14 @@ Curl_cookie_add(struct Curl_easy *data,
badcookie = TRUE;
break;
case 1:
- /* This field got its explanation on the 23rd of May 2001 by
- Andrés García:
-
- flag: A TRUE/FALSE value indicating if all machines within a given
- domain can access the variable. This value is set automatically by
- the browser, depending on the value you set for the domain.
-
- As far as I can see, it is set to true when the cookie says
+ /* flag: A TRUE/FALSE value indicating if all machines within a given
+ domain can access the variable. Set TRUE when the cookie says
.domain.com and to false when the domain is complete www.domain.com
*/
co->tailmatch = strcasecompare(ptr, "TRUE")?TRUE:FALSE;
break;
case 2:
- /* It turns out, that sometimes the file format allows the path
- field to remain not filled in, we try to detect this and work
- around it! Andrés García made us aware of this... */
+ /* The file format allows the path field to remain not filled in */
if(strcmp("TRUE", ptr) && strcmp("FALSE", ptr)) {
/* only if the path doesn't look like a boolean option! */
co->path = strdup(ptr);
diff --git a/lib/curl_config.h.in b/lib/curl_config.h.in
index 871c664e..e5abe77b 100644
--- a/lib/curl_config.h.in
+++ b/lib/curl_config.h.in
@@ -486,6 +486,15 @@
/* Define to 1 if you have the <nghttp2/nghttp2.h> header file. */
#undef HAVE_NGHTTP2_NGHTTP2_H
+/* Define to 1 if you have the <nghttp3/nghttp3.h> header file. */
+#undef HAVE_NGHTTP3_NGHTTP3_H
+
+/* Define to 1 if you have the <ngtcp2/ngtcp2_crypto.h> header file. */
+#undef HAVE_NGTCP2_NGTCP2_CRYPTO_H
+
+/* Define to 1 if you have the <ngtcp2/ngtcp2.h> header file. */
+#undef HAVE_NGTCP2_NGTCP2_H
+
/* if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE
*/
#undef HAVE_OLD_GSSMIT
@@ -544,6 +553,9 @@
/* Define to 1 if you have the <pwd.h> header file. */
#undef HAVE_PWD_H
+/* Define to 1 if you have the <quiche.h> header file. */
+#undef HAVE_QUICHE_H
+
/* Define to 1 if you have the `RAND_egd' function. */
#undef HAVE_RAND_EGD
@@ -739,6 +751,9 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
/* Define to 1 if you have the `utime' function. */
#undef HAVE_UTIME
@@ -970,6 +985,15 @@
/* if nghttp2 is in use */
#undef USE_NGHTTP2
+/* if nghttp3 is in use */
+#undef USE_NGHTTP3
+
+/* if ngtcp2 is in use */
+#undef USE_NGTCP2
+
+/* if ngtcp2_crypto_openssl is in use */
+#undef USE_NGTCP2_CRYPTO_OPENSSL
+
/* if NSS is enabled */
#undef USE_NSS
@@ -979,6 +1003,9 @@
/* if OpenSSL is in use */
#undef USE_OPENSSL
+/* if quiche is in use */
+#undef USE_QUICHE
+
/* to enable Windows native SSL/TLS support */
#undef USE_SCHANNEL
diff --git a/lib/curl_md4.h b/lib/curl_md4.h
index 392203f9..82df708c 100644
--- a/lib/curl_md4.h
+++ b/lib/curl_md4.h
@@ -24,14 +24,12 @@
#include "curl_setup.h"
-#if defined(USE_NSS) || defined(USE_OS400CRYPTO) || \
- (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \
- (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C))
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+
+#define MD4_DIGEST_LENGTH 16
void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len);
-#endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) ||
- (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) ||
- (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */
+#endif /* !defined(CURL_DISABLE_CRYPTO_AUTH) */
#endif /* HEADER_CURL_MD4_H */
diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
index 9e6fdcab..19f9b61d 100644
--- a/lib/curl_ntlm_core.c
+++ b/lib/curl_ntlm_core.c
@@ -55,11 +55,6 @@
#ifdef USE_OPENSSL
# include <openssl/des.h>
-# ifndef OPENSSL_NO_MD4
-# include <openssl/md4.h>
-# else
-# include "curl_md4.h"
-# endif
# include <openssl/md5.h>
# include <openssl/ssl.h>
# include <openssl/rand.h>
@@ -79,29 +74,23 @@
#elif defined(USE_GNUTLS_NETTLE)
# include <nettle/des.h>
-# include <nettle/md4.h>
#elif defined(USE_GNUTLS)
# include <gcrypt.h>
# define MD5_DIGEST_LENGTH 16
-# define MD4_DIGEST_LENGTH 16
#elif defined(USE_NSS)
# include <nss.h>
# include <pk11pub.h>
# include <hasht.h>
-# include "curl_md4.h"
# define MD5_DIGEST_LENGTH MD5_LENGTH
#elif defined(USE_MBEDTLS)
# include <mbedtls/des.h>
-# include <mbedtls/md4.h>
-# if !defined(MBEDTLS_MD4_C)
-# include "curl_md4.h"
-# endif
+# include "curl_md4.h"
#elif defined(USE_SECTRANSP)
@@ -110,7 +99,6 @@
#elif defined(USE_OS400CRYPTO)
# include "cipher.mih" /* mih/cipher */
-# include "curl_md4.h"
#elif defined(USE_WIN32_CRYPTO)
# include <wincrypt.h>
#else
@@ -126,6 +114,7 @@
#include "warnless.h"
#include "curl_endian.h"
#include "curl_des.h"
+#include "curl_md4.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
@@ -552,7 +541,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
CURLcode result;
if(len > SIZE_T_MAX/2) /* avoid integer overflow */
return CURLE_OUT_OF_MEMORY;
- pw = len ? malloc(len * 2) : strdup("");
+ pw = len ? malloc(len * 2) : (unsigned char *)strdup("");
if(!pw)
return CURLE_OUT_OF_MEMORY;
@@ -566,57 +555,10 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
if(result)
return result;
- {
- /* Create NT hashed password. */
-#ifdef USE_OPENSSL
-#if !defined(OPENSSL_NO_MD4)
- MD4_CTX MD4pw;
- MD4_Init(&MD4pw);
- MD4_Update(&MD4pw, pw, 2 * len);
- MD4_Final(ntbuffer, &MD4pw);
-#else
- Curl_md4it(ntbuffer, pw, 2 * len);
-#endif
-#elif defined(USE_GNUTLS_NETTLE)
- struct md4_ctx MD4pw;
- md4_init(&MD4pw);
- md4_update(&MD4pw, (unsigned int)(2 * len), pw);
- md4_digest(&MD4pw, MD4_DIGEST_SIZE, ntbuffer);
-#elif defined(USE_GNUTLS)
- gcry_md_hd_t MD4pw;
- gcry_md_open(&MD4pw, GCRY_MD_MD4, 0);
- gcry_md_write(MD4pw, pw, 2 * len);
- memcpy(ntbuffer, gcry_md_read(MD4pw, 0), MD4_DIGEST_LENGTH);
- gcry_md_close(MD4pw);
-#elif defined(USE_NSS)
- Curl_md4it(ntbuffer, pw, 2 * len);
-#elif defined(USE_MBEDTLS)
-#if defined(MBEDTLS_MD4_C)
- mbedtls_md4(pw, 2 * len, ntbuffer);
-#else
- Curl_md4it(ntbuffer, pw, 2 * len);
-#endif
-#elif defined(USE_SECTRANSP)
- (void)CC_MD4(pw, (CC_LONG)(2 * len), ntbuffer);
-#elif defined(USE_OS400CRYPTO)
- Curl_md4it(ntbuffer, pw, 2 * len);
-#elif defined(USE_WIN32_CRYPTO)
- HCRYPTPROV hprov;
- if(CryptAcquireContext(&hprov, NULL, NULL, PROV_RSA_FULL,
- CRYPT_VERIFYCONTEXT)) {
- HCRYPTHASH hhash;
- if(CryptCreateHash(hprov, CALG_MD4, 0, 0, &hhash)) {
- DWORD length = 16;
- CryptHashData(hhash, pw, (unsigned int)len * 2, 0);
- CryptGetHashParam(hhash, HP_HASHVAL, ntbuffer, &length, 0);
- CryptDestroyHash(hhash);
- }
- CryptReleaseContext(hprov, 0);
- }
-#endif
+ /* Create NT hashed password. */
+ Curl_md4it(ntbuffer, pw, 2 * len);
- memset(ntbuffer + 16, 0, 21 - 16);
- }
+ memset(ntbuffer + 16, 0, 21 - 16);
free(pw);
diff --git a/lib/curl_path.c b/lib/curl_path.c
index 85dddcef..f4296346 100644
--- a/lib/curl_path.c
+++ b/lib/curl_path.c
@@ -55,7 +55,7 @@ CURLcode Curl_getworkingpath(struct connectdata *conn,
}
if((working_path_len > 3) && (!memcmp(working_path, "/~/", 3)))
/* It is referenced to the home directory, so strip the leading '/~/' */
- memcpy(real_path, working_path + 3, 4 + working_path_len-3);
+ memcpy(real_path, working_path + 3, working_path_len - 2);
else
memcpy(real_path, working_path, 1 + working_path_len);
}
diff --git a/lib/curl_rtmp.c b/lib/curl_rtmp.c
index 16b1de1a..df8f2b1d 100644
--- a/lib/curl_rtmp.c
+++ b/lib/curl_rtmp.c
@@ -199,13 +199,13 @@ static CURLcode rtmp_setup_connection(struct connectdata *conn)
RTMP_Free(r);
return CURLE_URL_MALFORMAT;
}
- conn->proto.generic = r;
+ conn->proto.rtmp = r;
return CURLE_OK;
}
static CURLcode rtmp_connect(struct connectdata *conn, bool *done)
{
- RTMP *r = conn->proto.generic;
+ RTMP *r = conn->proto.rtmp;
SET_RCVTIMEO(tv, 10);
r->m_sb.sb_socket = (int)conn->sock[FIRSTSOCKET];
@@ -240,7 +240,7 @@ static CURLcode rtmp_connect(struct connectdata *conn, bool *done)
static CURLcode rtmp_do(struct connectdata *conn, bool *done)
{
struct Curl_easy *data = conn->data;
- RTMP *r = conn->proto.generic;
+ RTMP *r = conn->proto.rtmp;
if(!RTMP_ConnectStream(r, 0))
return CURLE_FAILED_INIT;
@@ -268,10 +268,10 @@ static CURLcode rtmp_done(struct connectdata *conn, CURLcode status,
static CURLcode rtmp_disconnect(struct connectdata *conn,
bool dead_connection)
{
- RTMP *r = conn->proto.generic;
+ RTMP *r = conn->proto.rtmp;
(void)dead_connection;
if(r) {
- conn->proto.generic = NULL;
+ conn->proto.rtmp = NULL;
RTMP_Close(r);
RTMP_Free(r);
}
@@ -281,7 +281,7 @@ static CURLcode rtmp_disconnect(struct connectdata *conn,
static ssize_t rtmp_recv(struct connectdata *conn, int sockindex, char *buf,
size_t len, CURLcode *err)
{
- RTMP *r = conn->proto.generic;
+ RTMP *r = conn->proto.rtmp;
ssize_t nread;
(void)sockindex; /* unused */
@@ -302,7 +302,7 @@ static ssize_t rtmp_recv(struct connectdata *conn, int sockindex, char *buf,
static ssize_t rtmp_send(struct connectdata *conn, int sockindex,
const void *buf, size_t len, CURLcode *err)
{
- RTMP *r = conn->proto.generic;
+ RTMP *r = conn->proto.rtmp;
ssize_t num;
(void)sockindex; /* unused */
diff --git a/lib/curl_sasl.c b/lib/curl_sasl.c
index 018e4228..0aa1f5bb 100644
--- a/lib/curl_sasl.c
+++ b/lib/curl_sasl.c
@@ -370,8 +370,9 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn,
sasl->authused = SASL_MECH_PLAIN;
if(force_ir || data->set.sasl_ir)
- result = Curl_auth_create_plain_message(data, NULL, conn->user,
- conn->passwd, &resp, &len);
+ result = Curl_auth_create_plain_message(data, conn->sasl_authzid,
+ conn->user, conn->passwd,
+ &resp, &len);
}
else if(enabledmechs & SASL_MECH_LOGIN) {
mech = SASL_MECH_STRING_LOGIN;
@@ -453,8 +454,9 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn,
*progress = SASL_DONE;
return result;
case SASL_PLAIN:
- result = Curl_auth_create_plain_message(data, NULL, conn->user,
- conn->passwd, &resp, &len);
+ result = Curl_auth_create_plain_message(data, conn->sasl_authzid,
+ conn->user, conn->passwd,
+ &resp, &len);
break;
case SASL_LOGIN:
result = Curl_auth_create_login_message(data, conn->user, &resp, &len);
diff --git a/lib/curl_setup.h b/lib/curl_setup.h
index 27414a54..13af8cde 100644
--- a/lib/curl_setup.h
+++ b/lib/curl_setup.h
@@ -96,6 +96,10 @@
# include "config-vxworks.h"
#endif
+#ifdef __PLAN9__
+# include "config-plan9.h"
+#endif
+
#endif /* HAVE_CONFIG_H */
/* ================================================================ */
@@ -482,7 +486,6 @@
#ifdef WIN32
# define DIR_CHAR "\\"
-# define DOT_CHAR "_"
#else /* WIN32 */
@@ -508,14 +511,6 @@
# endif
# define DIR_CHAR "/"
-# ifndef DOT_CHAR
-# define DOT_CHAR "."
-# endif
-
-# ifdef MSDOS
-# undef DOT_CHAR
-# define DOT_CHAR "_"
-# endif
# ifndef fileno /* sunos 4 have this as a macro! */
int fileno(FILE *stream);
@@ -827,4 +822,8 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf,
#define UNITTEST static
#endif
+#if defined(USE_NGTCP2) || defined(USE_QUICHE)
+#define ENABLE_QUIC
+#endif
+
#endif /* HEADER_CURL_SETUP_H */
diff --git a/lib/doh.h b/lib/doh.h
index 34bfa6f2..f522d330 100644
--- a/lib/doh.h
+++ b/lib/doh.h
@@ -40,8 +40,7 @@ Curl_addrinfo *Curl_doh(struct connectdata *conn,
CURLcode Curl_doh_is_resolved(struct connectdata *conn,
struct Curl_dns_entry **dns);
-int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks);
typedef enum {
DOH_OK,
diff --git a/lib/easy.c b/lib/easy.c
index a4fff5b3..0b0016be 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -187,16 +187,8 @@ static CURLcode global_init(long flags, bool memoryfuncs)
(void)Curl_ipv6works();
-#if defined(USE_LIBSSH2) && defined(HAVE_LIBSSH2_INIT)
- if(libssh2_init(0)) {
- DEBUGF(fprintf(stderr, "Error: libssh2_init failed\n"));
- return CURLE_FAILED_INIT;
- }
-#endif
-
-#if defined(USE_LIBSSH)
- if(ssh_init()) {
- DEBUGF(fprintf(stderr, "Error: libssh_init failed\n"));
+#if defined(USE_SSH)
+ if(Curl_ssh_init()) {
return CURLE_FAILED_INIT;
}
#endif
@@ -274,13 +266,7 @@ void curl_global_cleanup(void)
Curl_amiga_cleanup();
-#if defined(USE_LIBSSH2) && defined(HAVE_LIBSSH2_EXIT)
- (void)libssh2_exit();
-#endif
-
-#if defined(USE_LIBSSH)
- (void)ssh_finalize();
-#endif
+ Curl_ssh_cleanup();
init_flags = 0;
}
@@ -602,27 +588,11 @@ static CURLcode easy_transfer(struct Curl_multi *multi)
while(!done && !mcode) {
int still_running = 0;
- bool gotsocket = FALSE;
-
- mcode = Curl_multi_wait(multi, NULL, 0, 1000, NULL, &gotsocket);
-
- if(!mcode) {
- if(!gotsocket) {
- long sleep_ms;
-
- /* If it returns without any filedescriptor instantly, we need to
- avoid busy-looping during periods where it has nothing particular
- to wait for */
- curl_multi_timeout(multi, &sleep_ms);
- if(sleep_ms) {
- if(sleep_ms > 1000)
- sleep_ms = 1000;
- Curl_wait_ms((int)sleep_ms);
- }
- }
+ mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
+
+ if(!mcode)
mcode = curl_multi_perform(multi, &still_running);
- }
/* only read 'still_running' if curl_multi_perform() return OK */
if(!mcode && !still_running) {
@@ -942,6 +912,8 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
*/
void curl_easy_reset(struct Curl_easy *data)
{
+ long old_buffer_size = data->set.buffer_size;
+
Curl_free_request_state(data);
/* zero out UserDefined data: */
@@ -965,6 +937,18 @@ void curl_easy_reset(struct Curl_easy *data)
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH)
Curl_http_auth_cleanup_digest(data);
#endif
+
+ /* resize receive buffer */
+ if(old_buffer_size != data->set.buffer_size) {
+ char *newbuff = realloc(data->state.buffer, data->set.buffer_size + 1);
+ if(!newbuff) {
+ DEBUGF(fprintf(stderr, "Error: realloc of buffer failed\n"));
+ /* nothing we can do here except use the old size */
+ data->set.buffer_size = old_buffer_size;
+ }
+ else
+ data->state.buffer = newbuff;
+ }
}
/*
@@ -1141,6 +1125,35 @@ CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
}
/*
+ * Wrapper to call functions in Curl_conncache_foreach()
+ *
+ * Returns always 0.
+ */
+static int conn_upkeep(struct connectdata *conn,
+ void *param)
+{
+ /* Param is unused. */
+ (void)param;
+
+ if(conn->handler->connection_check) {
+ /* Do a protocol-specific keepalive check on the connection. */
+ conn->handler->connection_check(conn, CONNCHECK_KEEPALIVE);
+ }
+
+ return 0; /* continue iteration */
+}
+
+static CURLcode upkeep(struct conncache *conn_cache, void *data)
+{
+ /* Loop over every connection and make connection alive. */
+ Curl_conncache_foreach(data,
+ conn_cache,
+ data,
+ conn_upkeep);
+ return CURLE_OK;
+}
+
+/*
* Performs connection upkeep for the given session handle.
*/
CURLcode curl_easy_upkeep(struct Curl_easy *data)
@@ -1151,7 +1164,7 @@ CURLcode curl_easy_upkeep(struct Curl_easy *data)
if(data->multi_easy) {
/* Use the common function to keep connections alive. */
- return Curl_upkeep(&data->multi_easy->conn_cache, data);
+ return upkeep(&data->multi_easy->conn_cache, data);
}
else {
/* No connections, so just return success */
diff --git a/lib/ftp.c b/lib/ftp.c
index 76ebbc44..e807a2ac 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -132,10 +132,8 @@ static CURLcode ftp_connect(struct connectdata *conn, bool *done);
static CURLcode ftp_disconnect(struct connectdata *conn, bool dead_connection);
static CURLcode ftp_do_more(struct connectdata *conn, int *completed);
static CURLcode ftp_multi_statemach(struct connectdata *conn, bool *done);
-static int ftp_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
-static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+static int ftp_getsock(struct connectdata *conn, curl_socket_t *socks);
+static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks);
static CURLcode ftp_doing(struct connectdata *conn,
bool *dophase_done);
static CURLcode ftp_setup_connection(struct connectdata * conn);
@@ -382,7 +380,7 @@ static CURLcode ReceivedServerConnect(struct connectdata *conn, bool *received)
struct ftp_conn *ftpc = &conn->proto.ftpc;
struct pingpong *pp = &ftpc->pp;
int result;
- time_t timeout_ms;
+ timediff_t timeout_ms;
ssize_t nread;
int ftpcode;
@@ -493,7 +491,7 @@ static CURLcode InitiateTransfer(struct connectdata *conn)
static CURLcode AllowServerConnect(struct connectdata *conn, bool *connected)
{
struct Curl_easy *data = conn->data;
- time_t timeout_ms;
+ timediff_t timeout_ms;
CURLcode result = CURLE_OK;
*connected = FALSE;
@@ -810,21 +808,16 @@ static CURLcode ftp_state_pwd(struct connectdata *conn)
/* For the FTP "protocol connect" and "doing" phases only */
static int ftp_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
- return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks);
+ return Curl_pp_getsock(&conn->proto.ftpc.pp, socks);
}
/* For the FTP "DO_MORE" phase only */
-static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks)
+static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks)
{
struct ftp_conn *ftpc = &conn->proto.ftpc;
- if(!numsocks)
- return GETSOCK_BLANK;
-
/* When in DO_MORE state, we could be either waiting for us to connect to a
* remote site, or we could wait for that site to connect to us. Or just
* handle ordinary commands.
@@ -856,7 +849,7 @@ static int ftp_domore_getsock(struct connectdata *conn, curl_socket_t *socks,
return bits;
}
- return Curl_pp_getsock(&conn->proto.ftpc.pp, socks, numsocks);
+ return Curl_pp_getsock(&conn->proto.ftpc.pp, socks);
}
/* This is called after the FTP_QUOTE state is passed.
diff --git a/lib/getenv.c b/lib/getenv.c
index 89d181de..e444a6a3 100644
--- a/lib/getenv.c
+++ b/lib/getenv.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -35,7 +35,7 @@ char *GetEnv(const char *variable)
return NULL;
#else
#ifdef WIN32
- char env[MAX_PATH]; /* MAX_PATH is from windef.h */
+ char env[4096];
char *temp = getenv(variable);
env[0] = '\0';
if(temp != NULL)
diff --git a/lib/getinfo.c b/lib/getinfo.c
index e118da80..2b8f2303 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -235,6 +235,9 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,
case 20:
*param_longp = CURL_HTTP_VERSION_2_0;
break;
+ case 30:
+ *param_longp = CURL_HTTP_VERSION_3;
+ break;
default:
*param_longp = CURL_HTTP_VERSION_NONE;
break;
@@ -243,7 +246,6 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,
case CURLINFO_PROTOCOL:
*param_longp = data->info.conn_protocol;
break;
-
default:
return CURLE_UNKNOWN_OPTION;
}
@@ -301,7 +303,9 @@ static CURLcode getinfo_offt(struct Curl_easy *data, CURLINFO info,
case CURLINFO_REDIRECT_TIME_T:
*param_offt = data->progress.t_redirect;
break;
-
+ case CURLINFO_RETRY_AFTER:
+ *param_offt = data->info.retry_after;
+ break;
default:
return CURLE_UNKNOWN_OPTION;
}
diff --git a/lib/hostip.c b/lib/hostip.c
index cf33ed8f..bd532a89 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -624,7 +624,7 @@ int Curl_resolv_timeout(struct connectdata *conn,
const char *hostname,
int port,
struct Curl_dns_entry **entry,
- time_t timeoutms)
+ timediff_t timeoutms)
{
#ifdef USE_ALARM_TIMEOUT
#ifdef HAVE_SIGACTION
@@ -1027,19 +1027,17 @@ CURLcode Curl_resolv_check(struct connectdata *conn,
}
int Curl_resolv_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
#ifdef CURLRES_ASYNCH
if(conn->data->set.doh)
/* nothing to wait for during DOH resolve, those handles have their own
sockets */
return GETSOCK_BLANK;
- return Curl_resolver_getsock(conn, socks, numsocks);
+ return Curl_resolver_getsock(conn, socks);
#else
(void)conn;
(void)socks;
- (void)numsocks;
return GETSOCK_BLANK;
#endif
}
diff --git a/lib/hostip.h b/lib/hostip.h
index 1bda524b..e0597ea9 100644
--- a/lib/hostip.h
+++ b/lib/hostip.h
@@ -25,6 +25,7 @@
#include "curl_setup.h"
#include "hash.h"
#include "curl_addrinfo.h"
+#include "timeval.h" /* for timediff_t */
#include "asyn.h"
#ifdef HAVE_SETJMP_H
@@ -89,7 +90,7 @@ int Curl_resolv(struct connectdata *conn,
struct Curl_dns_entry **dnsentry);
int Curl_resolv_timeout(struct connectdata *conn, const char *hostname,
int port, struct Curl_dns_entry **dnsentry,
- time_t timeoutms);
+ timediff_t timeoutms);
#ifdef CURLRES_IPV6
/*
@@ -240,7 +241,6 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data);
CURLcode Curl_resolv_check(struct connectdata *conn,
struct Curl_dns_entry **dns);
int Curl_resolv_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
#endif /* HEADER_CURL_HOSTIP_H */
diff --git a/lib/hostip6.c b/lib/hostip6.c
index 5511f1aa..e0e0c58d 100644
--- a/lib/hostip6.c
+++ b/lib/hostip6.c
@@ -165,7 +165,8 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
memset(&hints, 0, sizeof(hints));
hints.ai_family = pf;
- hints.ai_socktype = conn->socktype;
+ hints.ai_socktype = (conn->transport == TRNSPRT_TCP) ?
+ SOCK_STREAM : SOCK_DGRAM;
#ifndef USE_RESOLVE_ON_IPS
/*
diff --git a/lib/http.c b/lib/http.c
index 9fbd7201..28d1fa60 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -88,8 +88,7 @@
*/
static int http_getsock_do(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
static int http_should_fail(struct connectdata *conn);
#ifndef CURL_DISABLE_PROXY
@@ -99,8 +98,7 @@ static CURLcode add_haproxy_protocol_header(struct connectdata *conn);
#ifdef USE_SSL
static CURLcode https_connecting(struct connectdata *conn, bool *done);
static int https_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
#else
#define https_connecting(x,y) CURLE_COULDNT_CONNECT
#endif
@@ -171,10 +169,22 @@ static CURLcode http_setup_conn(struct connectdata *conn)
Curl_mime_initpart(&http->form, conn->data);
data->req.protop = http;
- if(!CONN_INUSE(conn))
- /* if not already multi-using, setup connection details */
- Curl_http2_setup_conn(conn);
- Curl_http2_setup_req(data);
+ if(data->set.httpversion == CURL_HTTP_VERSION_3) {
+ if(conn->handler->flags & PROTOPT_SSL)
+ /* Only go HTTP/3 directly on HTTPS URLs. It needs a UDP socket and does
+ the QUIC dance. */
+ conn->transport = TRNSPRT_QUIC;
+ else {
+ failf(data, "HTTP/3 requested for non-HTTPS URL");
+ return CURLE_URL_MALFORMAT;
+ }
+ }
+ else {
+ if(!CONN_INUSE(conn))
+ /* if not already multi-using, setup connection details */
+ Curl_http2_setup_conn(conn);
+ Curl_http2_setup_req(data);
+ }
return CURLE_OK;
}
@@ -1136,10 +1146,14 @@ Curl_send_buffer *Curl_add_buffer_init(void)
*/
void Curl_add_buffer_free(Curl_send_buffer **inp)
{
- Curl_send_buffer *in = *inp;
- if(in) /* deal with NULL input */
+ Curl_send_buffer *in;
+ if(!inp)
+ return;
+ in = *inp;
+ if(in) { /* deal with NULL input */
free(in->buffer);
- free(in);
+ free(in);
+ }
*inp = NULL;
}
@@ -1497,11 +1511,9 @@ CURLcode Curl_http_connect(struct connectdata *conn, bool *done)
interface and then we're always _sending_ a request and thus we wait for
the single socket to become writable only */
static int http_getsock_do(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
/* write mode */
- (void)numsocks; /* unused, we trust it to be at least 1 */
socks[0] = conn->sock[FIRSTSOCKET];
return GETSOCK_WRITESOCK(0);
}
@@ -1555,6 +1567,13 @@ static CURLcode https_connecting(struct connectdata *conn, bool *done)
CURLcode result;
DEBUGASSERT((conn) && (conn->handler->flags & PROTOPT_SSL));
+#ifdef ENABLE_QUIC
+ if(conn->transport == TRNSPRT_QUIC) {
+ *done = TRUE;
+ return CURLE_OK;
+ }
+#endif
+
/* perform SSL initialization for this socket */
result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, done);
if(result)
@@ -1564,11 +1583,10 @@ static CURLcode https_connecting(struct connectdata *conn, bool *done)
}
static int https_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
if(conn->handler->flags & PROTOPT_SSL)
- return Curl_ssl_getsock(conn, socks, numsocks);
+ return Curl_ssl_getsock(conn, socks);
return GETSOCK_BLANK;
}
#endif /* USE_SSL */
@@ -1650,6 +1668,12 @@ static bool use_http_1_1plus(const struct Curl_easy *data,
static const char *get_http_string(const struct Curl_easy *data,
const struct connectdata *conn)
{
+#ifdef ENABLE_QUIC
+ if((data->set.httpversion == CURL_HTTP_VERSION_3) ||
+ (conn->httpversion == 30))
+ return "3";
+#endif
+
#ifdef USE_NGHTTP2
if(conn->proto.httpc.h2)
return "2";
@@ -1670,7 +1694,7 @@ static CURLcode expect100(struct Curl_easy *data,
data->state.expect100header = FALSE; /* default to false unless it is set
to TRUE below */
if(use_http_1_1plus(data, conn) &&
- (conn->httpversion != 20)) {
+ (conn->httpversion < 20)) {
/* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an
Expect: 100-continue to the headers which actually speeds up post
operations (as there is one packet coming back from the web server) */
@@ -1700,7 +1724,7 @@ enum proxy_use {
will return an error code if one of the headers is
not formatted correctly */
CURLcode Curl_http_compile_trailers(struct curl_slist *trailers,
- Curl_send_buffer *buffer,
+ Curl_send_buffer **buffer,
struct Curl_easy *handle)
{
char *ptr = NULL;
@@ -1726,7 +1750,7 @@ CURLcode Curl_http_compile_trailers(struct curl_slist *trailers,
/* only add correctly formatted trailers */
ptr = strchr(trailers->data, ':');
if(ptr && *(ptr + 1) == ' ') {
- result = Curl_add_bufferf(&buffer, "%s%s", trailers->data,
+ result = Curl_add_bufferf(buffer, "%s%s", trailers->data,
endofline_native);
if(result)
return result;
@@ -1735,7 +1759,7 @@ CURLcode Curl_http_compile_trailers(struct curl_slist *trailers,
infof(handle, "Malformatted trailing header ! Skipping trailer.");
trailers = trailers->next;
}
- result = Curl_add_buffer(&buffer, endofline_network,
+ result = Curl_add_buffer(buffer, endofline_network,
strlen(endofline_network));
return result;
}
@@ -1851,7 +1875,7 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn,
Connection: */
checkprefix("Connection:", compare))
;
- else if((conn->httpversion == 20) &&
+ else if((conn->httpversion >= 20) &&
checkprefix("Transfer-Encoding:", compare))
/* HTTP/2 doesn't support chunked requests */
;
@@ -1982,55 +2006,57 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
const char *httpstring;
Curl_send_buffer *req_buffer;
curl_off_t postsize = 0; /* curl_off_t to handle large file sizes */
+ char *altused = NULL;
/* Always consider the DO phase done after this function call, even if there
may be parts of the request that is not yet sent, since we can deal with
the rest of the request in the PERFORM phase. */
*done = TRUE;
- if(conn->httpversion < 20) { /* unless the connection is re-used and already
- http2 */
- switch(conn->negnpn) {
- case CURL_HTTP_VERSION_2:
- conn->httpversion = 20; /* we know we're on HTTP/2 now */
-
- result = Curl_http2_switched(conn, NULL, 0);
- if(result)
- return result;
- break;
- case CURL_HTTP_VERSION_1_1:
- /* continue with HTTP/1.1 when explicitly requested */
- break;
- default:
- /* Check if user wants to use HTTP/2 with clear TCP*/
-#ifdef USE_NGHTTP2
- if(conn->data->set.httpversion ==
- CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) {
- if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
- /* We don't support HTTP/2 proxies yet. Also it's debatable whether
- or not this setting should apply to HTTP/2 proxies. */
- infof(data, "Ignoring HTTP/2 prior knowledge due to proxy\n");
- break;
- }
-
- DEBUGF(infof(data, "HTTP/2 over clean TCP\n"));
- conn->httpversion = 20;
+ if(conn->transport != TRNSPRT_QUIC) {
+ if(conn->httpversion < 20) { /* unless the connection is re-used and
+ already http2 */
+ switch(conn->negnpn) {
+ case CURL_HTTP_VERSION_2:
+ conn->httpversion = 20; /* we know we're on HTTP/2 now */
result = Curl_http2_switched(conn, NULL, 0);
if(result)
return result;
- }
+ break;
+ case CURL_HTTP_VERSION_1_1:
+ /* continue with HTTP/1.1 when explicitly requested */
+ break;
+ default:
+ /* Check if user wants to use HTTP/2 with clear TCP*/
+#ifdef USE_NGHTTP2
+ if(conn->data->set.httpversion ==
+ CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE) {
+ if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
+ /* We don't support HTTP/2 proxies yet. Also it's debatable
+ whether or not this setting should apply to HTTP/2 proxies. */
+ infof(data, "Ignoring HTTP/2 prior knowledge due to proxy\n");
+ break;
+ }
+
+ DEBUGF(infof(data, "HTTP/2 over clean TCP\n"));
+ conn->httpversion = 20;
+
+ result = Curl_http2_switched(conn, NULL, 0);
+ if(result)
+ return result;
+ }
#endif
- break;
+ break;
+ }
+ }
+ else {
+ /* prepare for a http2 request */
+ result = Curl_http2_setup(conn);
+ if(result)
+ return result;
}
}
- else {
- /* prepare for a http2 request */
- result = Curl_http2_setup(conn);
- if(result)
- return result;
- }
-
http = data->req.protop;
DEBUGASSERT(http);
@@ -2226,14 +2252,16 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
else {
if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
(((httpreq == HTTPREQ_POST_MIME || httpreq == HTTPREQ_POST_FORM) &&
- http->postsize < 0) ||
- (data->set.upload && data->state.infilesize == -1))) {
+ http->postsize < 0) ||
+ ((data->set.upload || httpreq == HTTPREQ_POST) &&
+ data->state.infilesize == -1))) {
if(conn->bits.authneg)
/* don't enable chunked during auth neg */
;
else if(use_http_1_1plus(data, conn)) {
- /* HTTP, upload, unknown file size and not HTTP 1.0 */
- data->req.upload_chunky = TRUE;
+ if(conn->httpversion < 20)
+ /* HTTP, upload, unknown file size and not HTTP 1.0 */
+ data->req.upload_chunky = TRUE;
}
else {
failf(data, "Chunky upload is not supported by HTTP 1.0");
@@ -2334,7 +2362,6 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
/* and no fragment part */
CURLUcode uc;
- char *url;
CURLU *h = curl_url_dup(data->state.uh);
if(!h)
return CURLE_OUT_OF_MEMORY;
@@ -2365,19 +2392,15 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
return CURLE_OUT_OF_MEMORY;
}
}
- /* now extract the new version of the URL */
- uc = curl_url_get(h, CURLUPART_URL, &url, 0);
+ /* Extract the the URL to use in the request. Store in STRING_TEMP_URL for
+ clean-up reasons if the function returns before the free() further
+ down. */
+ uc = curl_url_get(h, CURLUPART_URL, &data->set.str[STRING_TEMP_URL], 0);
if(uc) {
curl_url_cleanup(h);
return CURLE_OUT_OF_MEMORY;
}
- if(data->change.url_alloc)
- free(data->change.url);
-
- data->change.url = url;
- data->change.url_alloc = TRUE;
-
curl_url_cleanup(h);
if(strcasecompare("ftp", data->state.up.scheme)) {
@@ -2556,12 +2579,16 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
query = NULL;
}
+#ifndef CURL_DISABLE_PROXY
/* url */
if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
- char *url = data->change.url;
+ char *url = data->set.str[STRING_TEMP_URL];
result = Curl_add_buffer(&req_buffer, url, strlen(url));
+ Curl_safefree(data->set.str[STRING_TEMP_URL]);
}
- else if(paste_ftp_userpwd)
+ else
+#endif
+ if(paste_ftp_userpwd)
result = Curl_add_bufferf(&req_buffer, "ftp://%s:%s@%s",
conn->user, conn->passwd,
path + sizeof("ftp://") - 1);
@@ -2575,6 +2602,14 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
if(result)
return result;
+#ifdef USE_ALTSVC
+ if(conn->bits.altused && !Curl_checkheaders(conn, "Alt-Used")) {
+ altused = aprintf("Alt-Used: %s:%d\r\n",
+ conn->conn_to_host.name, conn->conn_to_port);
+ if(!altused)
+ return CURLE_OUT_OF_MEMORY;
+ }
+#endif
result =
Curl_add_bufferf(&req_buffer,
"%s" /* ftp typecode (;type=x) */
@@ -2589,7 +2624,8 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
"%s" /* accept-encoding */
"%s" /* referer */
"%s" /* Proxy-Connection */
- "%s",/* transfer-encoding */
+ "%s" /* transfer-encoding */
+ "%s",/* Alt-Used */
ftp_typecode,
httpstring,
@@ -2615,13 +2651,15 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
!conn->bits.tunnel_proxy &&
!Curl_checkProxyheaders(conn, "Proxy-Connection"))?
"Proxy-Connection: Keep-Alive\r\n":"",
- te
+ te,
+ altused ? altused : ""
);
/* clear userpwd and proxyuserpwd to avoid re-using old credentials
* from re-used connections */
Curl_safefree(conn->allocptr.userpwd);
Curl_safefree(conn->allocptr.proxyuserpwd);
+ free(altused);
if(result)
return result;
@@ -3660,6 +3698,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
* guarantees on future behaviors since it isn't within the protocol.
*/
char separator;
+ char twoorthree[2];
nc = sscanf(HEADER1,
" HTTP/%1d.%1d%c%3d",
&httpversion_major,
@@ -3667,8 +3706,8 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
&separator,
&k->httpcode);
- if(nc == 1 && httpversion_major == 2 &&
- 1 == sscanf(HEADER1, " HTTP/2 %d", &k->httpcode)) {
+ if(nc == 1 && httpversion_major >= 2 &&
+ 2 == sscanf(HEADER1, " HTTP/%1[23] %d", twoorthree, &k->httpcode)) {
conn->httpversion = 0;
nc = 4;
separator = ' ';
@@ -3706,7 +3745,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
}
}
else {
- failf(data, "Unsupported HTTP version in response\n");
+ failf(data, "Unsupported HTTP version in response");
return CURLE_UNSUPPORTED_PROTOCOL;
}
}
@@ -3935,6 +3974,19 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
if(result)
return result;
}
+ else if(checkprefix("Retry-After:", k->p)) {
+ /* Retry-After = HTTP-date / delay-seconds */
+ curl_off_t retry_after = 0; /* zero for unknown or "now" */
+ time_t date = curl_getdate(&k->p[12], NULL);
+ if(-1 == date) {
+ /* not a date, try it as a decimal number */
+ (void)curlx_strtoofft(&k->p[12], NULL, 10, &retry_after);
+ }
+ else
+ /* convert date to number of seconds into the future */
+ retry_after = date - time(NULL);
+ data->info.retry_after = retry_after; /* store it */
+ }
else if(!k->http_bodyless && checkprefix("Content-Range:", k->p)) {
/* Content-Range: bytes [num]-
Content-Range: bytes: [num]-
diff --git a/lib/http.h b/lib/http.h
index 72161f6b..f0ddec75 100644
--- a/lib/http.h
+++ b/lib/http.h
@@ -75,7 +75,7 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn,
bool is_connect,
Curl_send_buffer *req_buffer);
CURLcode Curl_http_compile_trailers(struct curl_slist *trailers,
- Curl_send_buffer *buffer,
+ Curl_send_buffer **buffer,
struct Curl_easy *handle);
/* protocol-specific functions set up to be called by the main engine */
@@ -126,6 +126,10 @@ CURLcode Curl_http_auth_act(struct connectdata *conn);
#endif /* CURL_DISABLE_HTTP */
+#ifdef USE_NGHTTP3
+struct h3out; /* see ngtcp2 */
+#endif
+
/****************************************************************************
* HTTP unique setup
***************************************************************************/
@@ -172,19 +176,34 @@ struct HTTP {
int status_code; /* HTTP status code */
const uint8_t *pausedata; /* pointer to data received in on_data_chunk */
size_t pauselen; /* the number of bytes left in data */
- bool closed; /* TRUE on HTTP2 stream close */
bool close_handled; /* TRUE if stream closure is handled by libcurl */
+
+ char **push_headers; /* allocated array */
+ size_t push_headers_used; /* number of entries filled in */
+ size_t push_headers_alloc; /* number of entries allocated */
+#endif
+#if defined(USE_NGHTTP2) || defined(USE_NGHTTP3)
+ bool closed; /* TRUE on HTTP2 stream close */
char *mem; /* points to a buffer in memory to store received data */
size_t len; /* size of the buffer 'mem' points to */
size_t memlen; /* size of data copied to mem */
-
+#endif
+#if defined(USE_NGHTTP2) || defined(ENABLE_QUIC)
+ /* fields used by both HTTP/2 and HTTP/3 */
const uint8_t *upload_mem; /* points to a buffer to read from */
size_t upload_len; /* size of the buffer 'upload_mem' points to */
curl_off_t upload_left; /* number of bytes left to upload */
+#endif
- char **push_headers; /* allocated array */
- size_t push_headers_used; /* number of entries filled in */
- size_t push_headers_alloc; /* number of entries allocated */
+#ifdef ENABLE_QUIC
+ /*********** for HTTP/3 we store stream-local data here *************/
+ int64_t stream3_id; /* stream we are interested in */
+ bool firstbody; /* FALSE until body arrives */
+ bool h3req; /* FALSE until request is issued */
+ bool upload_done;
+#endif
+#ifdef USE_NGHTTP3
+ struct h3out *h3out; /* per-stream buffers for upload */
#endif
};
diff --git a/lib/http2.c b/lib/http2.c
index eb55e62d..31d2d698 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -100,16 +100,11 @@ void Curl_http2_init_userset(struct UserDefined *set)
}
static int http2_perform_getsock(const struct connectdata *conn,
- curl_socket_t *sock, /* points to
- numsocks
- number of
- sockets */
- int numsocks)
+ curl_socket_t *sock)
{
const struct http_conn *c = &conn->proto.httpc;
struct SingleRequest *k = &conn->data->req;
int bitmap = GETSOCK_BLANK;
- (void)numsocks;
sock[0] = conn->sock[FIRSTSOCKET];
@@ -126,11 +121,9 @@ static int http2_perform_getsock(const struct connectdata *conn,
}
static int http2_getsock(struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks
- number of sockets */
- int numsocks)
+ curl_socket_t *socks)
{
- return http2_perform_getsock(conn, sock, numsocks);
+ return http2_perform_getsock(conn, socks);
}
/*
@@ -240,7 +233,7 @@ static unsigned int http2_conncheck(struct connectdata *check,
if(checks_to_perform & CONNCHECK_KEEPALIVE) {
struct curltime now = Curl_now();
- time_t elapsed = Curl_timediff(now, check->keepalive);
+ timediff_t elapsed = Curl_timediff(now, check->keepalive);
if(elapsed > check->upkeep_interval_ms) {
/* Perform an HTTP/2 PING */
@@ -1566,6 +1559,11 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
if(should_close_session(httpc)) {
H2BUGF(infof(data,
"http2_recv: nothing to do in this session\n"));
+ if(conn->bits.close) {
+ /* already marked for closure, return OK and we're done */
+ *err = CURLE_OK;
+ return 0;
+ }
*err = CURLE_HTTP2;
return -1;
}
@@ -1755,6 +1753,9 @@ static ssize_t http2_recv(struct connectdata *conn, int sockindex,
else if(!stream->closed) {
drained_transfer(data, httpc);
}
+ else
+ /* this stream is closed, trigger a another read ASAP to detect that */
+ Curl_expire(data, 0, EXPIRE_RUN_NOW);
return retlen;
}
diff --git a/lib/http_negotiate.c b/lib/http_negotiate.c
index c8f40644..8e1f3bf6 100644
--- a/lib/http_negotiate.c
+++ b/lib/http_negotiate.c
@@ -148,10 +148,10 @@ CURLcode Curl_output_negotiate(struct connectdata *conn, bool proxy)
}
if(!neg_ctx->context) {
result = Curl_input_negotiate(conn, proxy, "Negotiate");
- if(result == CURLE_LOGIN_DENIED) {
+ if(result == CURLE_AUTH_ERROR) {
/* negotiate auth failed, let's continue unauthenticated to stay
* compatible with the behavior before curl-7_64_0-158-g6c6035532 */
- conn->data->state.authproblem = TRUE;
+ authp->done = TRUE;
return CURLE_OK;
}
else if(result)
diff --git a/lib/imap.c b/lib/imap.c
index f3ffa290..ff9b6294 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -95,8 +95,7 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status,
static CURLcode imap_connect(struct connectdata *conn, bool *done);
static CURLcode imap_disconnect(struct connectdata *conn, bool dead);
static CURLcode imap_multi_statemach(struct connectdata *conn, bool *done);
-static int imap_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+static int imap_getsock(struct connectdata *conn, curl_socket_t *socks);
static CURLcode imap_doing(struct connectdata *conn, bool *dophase_done);
static CURLcode imap_setup_connection(struct connectdata *conn);
static char *imap_atom(const char *str, bool escape_only);
@@ -1392,10 +1391,9 @@ static CURLcode imap_init(struct connectdata *conn)
}
/* For the IMAP "protocol connect" and "doing" phases only */
-static int imap_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks)
+static int imap_getsock(struct connectdata *conn, curl_socket_t *socks)
{
- return Curl_pp_getsock(&conn->proto.imapc.pp, socks, numsocks);
+ return Curl_pp_getsock(&conn->proto.imapc.pp, socks);
}
/***********************************************************************
diff --git a/lib/libcurl.plist b/lib/libcurl.plist
index c0adf43f..9db8aa31 100644
--- a/lib/libcurl.plist
+++ b/lib/libcurl.plist
@@ -15,7 +15,7 @@
<string>se.haxx.curl.libcurl</string>
<key>CFBundleVersion</key>
- <string>7.65.3</string>
+ <string>7.66.0</string>
<key>CFBundleName</key>
<string>libcurl</string>
@@ -27,9 +27,9 @@
<string>????</string>
<key>CFBundleShortVersionString</key>
- <string>libcurl 7.65.3</string>
+ <string>libcurl 7.66.0</string>
<key>CFBundleGetInfoString</key>
- <string>libcurl.plist 7.65.3</string>
+ <string>libcurl.plist 7.66.0</string>
</dict>
</plist>
diff --git a/lib/md4.c b/lib/md4.c
index 0b4ea9a3..bbf89750 100644
--- a/lib/md4.c
+++ b/lib/md4.c
@@ -1,5 +1,223 @@
-/*
- * !checksrc! disable COPYRIGHT
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+
+#include "curl_md4.h"
+#include "warnless.h"
+
+#ifdef USE_OPENSSL
+#include <openssl/opensslconf.h>
+#endif
+#ifdef USE_MBEDTLS
+#include <mbedtls/config.h>
+#endif
+
+#if defined(USE_GNUTLS_NETTLE)
+
+#include <nettle/md4.h>
+
+#include "curl_memory.h"
+
+/* The last #include file should be: */
+#include "memdebug.h"
+
+typedef struct md4_ctx MD4_CTX;
+
+static void MD4_Init(MD4_CTX *ctx)
+{
+ md4_init(ctx);
+}
+
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
+{
+ md4_update(ctx, size, data);
+}
+
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
+{
+ md4_digest(ctx, MD4_DIGEST_SIZE, result);
+}
+
+#elif defined(USE_GNUTLS)
+
+#include <gcrypt.h>
+
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
+
+typedef struct gcry_md_hd_t MD4_CTX;
+
+static void MD4_Init(MD4_CTX *ctx)
+{
+ gcry_md_open(ctx, GCRY_MD_MD4, 0);
+}
+
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
+{
+ gcry_md_write(*ctx, data, size);
+}
+
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
+{
+ memcpy(result, gcry_md_read(ctx, 0), MD4_DIGEST_LENGTH);
+ gcry_md_close(ctx);
+}
+
+#elif defined(USE_OPENSSL) && !defined(OPENSSL_NO_MD4)
+/* When OpenSSL is available we use the MD4-functions from OpenSSL */
+#include <openssl/md4.h>
+
+#elif defined(USE_SECTRANSP)
+
+#include <CommonCrypto/CommonDigest.h>
+
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
+
+typedef struct {
+ void *data;
+ unsigned long size;
+} MD4_CTX;
+
+static void MD4_Init(MD4_CTX *ctx)
+{
+ ctx->data = NULL;
+ ctx->size = 0;
+}
+
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
+{
+ if(ctx->data == NULL) {
+ ctx->data = malloc(size);
+ if(ctx->data != NULL) {
+ memcpy(ctx->data, data, size);
+ ctx->size = size;
+ }
+ }
+}
+
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
+{
+ if(ctx->data != NULL) {
+ (void)CC_MD4(ctx->data, (CC_LONG) ctx->size, result);
+
+ Curl_safefree(ctx->data);
+ ctx->size = 0;
+ }
+}
+
+#elif defined(USE_WIN32_CRYPTO)
+
+#include <wincrypt.h>
+
+#include "curl_memory.h"
+ /* The last #include file should be: */
+#include "memdebug.h"
+
+typedef struct {
+ HCRYPTPROV hCryptProv;
+ HCRYPTHASH hHash;
+} MD4_CTX;
+
+static void MD4_Init(MD4_CTX *ctx)
+{
+ ctx->hCryptProv = 0;
+ ctx->hHash = 0;
+
+ if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_FULL,
+ CRYPT_VERIFYCONTEXT)) {
+ CryptCreateHash(ctx->hCryptProv, CALG_MD4, 0, 0, &ctx->hHash);
+ }
+}
+
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
+{
+ CryptHashData(ctx->hHash, data, (unsigned int) size, 0);
+}
+
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
+{
+ unsigned long length = 0;
+
+ CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
+ if(length == MD4_DIGEST_LENGTH)
+ CryptGetHashParam(ctx->hHash, HP_HASHVAL, result, &length, 0);
+
+ if(ctx->hHash)
+ CryptDestroyHash(ctx->hHash);
+
+ if(ctx->hCryptProv)
+ CryptReleaseContext(ctx->hCryptProv, 0);
+}
+
+#elif(defined(USE_MBEDTLS) && defined(MBEDTLS_MD4_C))
+
+#include <mbedtls/md4.h>
+
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
+
+typedef struct {
+ void *data;
+ unsigned long size;
+} MD4_CTX;
+
+static void MD4_Init(MD4_CTX *ctx)
+{
+ ctx->data = NULL;
+ ctx->size = 0;
+}
+
+static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
+{
+ if(ctx->data == NULL) {
+ ctx->data = malloc(size);
+ if(ctx->data != NULL) {
+ memcpy(ctx->data, data, size);
+ ctx->size = size;
+ }
+ }
+}
+
+static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
+{
+ if(ctx->data != NULL) {
+ mbedtls_md4(ctx->data, ctx->size, result);
+
+ Curl_safefree(ctx->data);
+ ctx->size = 0;
+ }
+}
+
+#else
+/* When no other crypto library is available, or the crypto library doesn't
+ * support MD4, we use this code segment this implementation of it
+ *
* This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
* MD4 Message-Digest Algorithm (RFC 1320).
*
@@ -36,26 +254,6 @@
* compile-time configuration.
*/
-#include "curl_setup.h"
-
-#ifdef USE_OPENSSL
-#include <openssl/opensslconf.h>
-#endif
-#ifdef USE_MBEDTLS
-#include <mbedtls/config.h>
-#endif
-
-/* The NSS, OS/400, and when not included, OpenSSL and mbed TLS crypto
- * libraries do not provide the MD4 hash algorithm, so we use this
- * implementation of it */
-#if defined(USE_NSS) || defined(USE_OS400CRYPTO) || \
- (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \
- (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C))
-
-#include "curl_md4.h"
-#include "warnless.h"
-
-#ifndef HAVE_OPENSSL
#include <string.h>
@@ -305,7 +503,7 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
memset(ctx, 0, sizeof(*ctx));
}
-#endif
+#endif /* CRYPTO LIBS */
void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)
{
@@ -315,6 +513,4 @@ void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)
MD4_Final(output, &ctx);
}
-#endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) ||
- (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) ||
- (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */
+#endif /* CURL_DISABLE_CRYPTO_AUTH */
diff --git a/lib/multi.c b/lib/multi.c
index 2b6b1bc5..2e91e4ff 100644..100755
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -818,25 +818,27 @@ void Curl_attach_connnection(struct Curl_easy *data,
}
static int waitconnect_getsock(struct connectdata *conn,
- curl_socket_t *sock,
- int numsocks)
+ curl_socket_t *sock)
{
int i;
int s = 0;
int rc = 0;
- if(!numsocks)
- return GETSOCK_BLANK;
-
#ifdef USE_SSL
if(CONNECT_FIRSTSOCKET_PROXY_SSL())
- return Curl_ssl_getsock(conn, sock, numsocks);
+ return Curl_ssl_getsock(conn, sock);
#endif
for(i = 0; i<2; i++) {
if(conn->tempsock[i] != CURL_SOCKET_BAD) {
sock[s] = conn->tempsock[i];
- rc |= GETSOCK_WRITESOCK(s++);
+ rc |= GETSOCK_WRITESOCK(s);
+#ifdef ENABLE_QUIC
+ if(conn->transport == TRNSPRT_QUIC)
+ /* when connecting QUIC, we want to read the socket too */
+ rc |= GETSOCK_READSOCK(s);
+#endif
+ s++;
}
}
@@ -844,12 +846,8 @@ static int waitconnect_getsock(struct connectdata *conn,
}
static int waitproxyconnect_getsock(struct connectdata *conn,
- curl_socket_t *sock,
- int numsocks)
+ curl_socket_t *sock)
{
- if(!numsocks)
- return GETSOCK_BLANK;
-
sock[0] = conn->sock[FIRSTSOCKET];
/* when we've sent a CONNECT to a proxy, we should rather wait for the
@@ -861,19 +859,37 @@ static int waitproxyconnect_getsock(struct connectdata *conn,
}
static int domore_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
if(conn && conn->handler->domore_getsock)
- return conn->handler->domore_getsock(conn, socks, numsocks);
+ return conn->handler->domore_getsock(conn, socks);
+ return GETSOCK_BLANK;
+}
+
+static int doing_getsock(struct connectdata *conn,
+ curl_socket_t *socks)
+{
+ if(conn && conn->handler->doing_getsock)
+ return conn->handler->doing_getsock(conn, socks);
return GETSOCK_BLANK;
}
-/* returns bitmapped flags for this handle and its sockets */
+static int protocol_getsock(struct connectdata *conn,
+ curl_socket_t *socks)
+{
+ if(conn->handler->proto_getsock)
+ return conn->handler->proto_getsock(conn, socks);
+ /* Backup getsock logic. Since there is a live socket in use, we must wait
+ for it or it will be removed from watching when the multi_socket API is
+ used. */
+ socks[0] = conn->sock[FIRSTSOCKET];
+ return GETSOCK_READSOCK(0) | GETSOCK_WRITESOCK(0);
+}
+
+/* returns bitmapped flags for this handle and its sockets. The 'socks[]'
+ array contains MAX_SOCKSPEREASYHANDLE entries. */
static int multi_getsock(struct Curl_easy *data,
- curl_socket_t *socks, /* points to numsocks number
- of sockets */
- int numsocks)
+ curl_socket_t *socks)
{
/* The no connection case can happen when this is called from
curl_multi_remove_handle() => singlesocket() => multi_getsock().
@@ -905,30 +921,30 @@ static int multi_getsock(struct Curl_easy *data,
return 0;
case CURLM_STATE_WAITRESOLVE:
- return Curl_resolv_getsock(data->conn, socks, numsocks);
+ return Curl_resolv_getsock(data->conn, socks);
case CURLM_STATE_PROTOCONNECT:
case CURLM_STATE_SENDPROTOCONNECT:
- return Curl_protocol_getsock(data->conn, socks, numsocks);
+ return protocol_getsock(data->conn, socks);
case CURLM_STATE_DO:
case CURLM_STATE_DOING:
- return Curl_doing_getsock(data->conn, socks, numsocks);
+ return doing_getsock(data->conn, socks);
case CURLM_STATE_WAITPROXYCONNECT:
- return waitproxyconnect_getsock(data->conn, socks, numsocks);
+ return waitproxyconnect_getsock(data->conn, socks);
case CURLM_STATE_WAITCONNECT:
- return waitconnect_getsock(data->conn, socks, numsocks);
+ return waitconnect_getsock(data->conn, socks);
case CURLM_STATE_DO_MORE:
- return domore_getsock(data->conn, socks, numsocks);
+ return domore_getsock(data->conn, socks);
case CURLM_STATE_DO_DONE: /* since is set after DO is completed, we switch
to waiting for the same as the *PERFORM
states */
case CURLM_STATE_PERFORM:
- return Curl_single_getsock(data->conn, socks, numsocks);
+ return Curl_single_getsock(data->conn, socks);
}
}
@@ -954,7 +970,7 @@ CURLMcode curl_multi_fdset(struct Curl_multi *multi,
data = multi->easyp;
while(data) {
- int bitmap = multi_getsock(data, sockbunch, MAX_SOCKSPEREASYHANDLE);
+ int bitmap = multi_getsock(data, sockbunch);
for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++) {
curl_socket_t s = CURL_SOCKET_BAD;
@@ -984,12 +1000,12 @@ CURLMcode curl_multi_fdset(struct Curl_multi *multi,
#define NUM_POLLS_ON_STACK 10
-CURLMcode Curl_multi_wait(struct Curl_multi *multi,
- struct curl_waitfd extra_fds[],
- unsigned int extra_nfds,
- int timeout_ms,
- int *ret,
- bool *gotsocket) /* if any socket was checked */
+static CURLMcode Curl_multi_wait(struct Curl_multi *multi,
+ struct curl_waitfd extra_fds[],
+ unsigned int extra_nfds,
+ int timeout_ms,
+ int *ret,
+ bool extrawait) /* when no socket, wait */
{
struct Curl_easy *data;
curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE];
@@ -1003,9 +1019,6 @@ CURLMcode Curl_multi_wait(struct Curl_multi *multi,
struct pollfd a_few_on_stack[NUM_POLLS_ON_STACK];
struct pollfd *ufds = &a_few_on_stack[0];
- if(gotsocket)
- *gotsocket = FALSE;
-
if(!GOOD_MULTI_HANDLE(multi))
return CURLM_BAD_HANDLE;
@@ -1015,7 +1028,7 @@ CURLMcode Curl_multi_wait(struct Curl_multi *multi,
/* Count up how many fds we have from the multi handle */
data = multi->easyp;
while(data) {
- bitmap = multi_getsock(data, sockbunch, MAX_SOCKSPEREASYHANDLE);
+ bitmap = multi_getsock(data, sockbunch);
for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++) {
curl_socket_t s = CURL_SOCKET_BAD;
@@ -1065,7 +1078,7 @@ CURLMcode Curl_multi_wait(struct Curl_multi *multi,
/* Add the curl handles to our pollfds first */
data = multi->easyp;
while(data) {
- bitmap = multi_getsock(data, sockbunch, MAX_SOCKSPEREASYHANDLE);
+ bitmap = multi_getsock(data, sockbunch);
for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++) {
curl_socket_t s = CURL_SOCKET_BAD;
@@ -1134,9 +1147,19 @@ CURLMcode Curl_multi_wait(struct Curl_multi *multi,
free(ufds);
if(ret)
*ret = retcode;
- if(gotsocket && (extra_fds || curlfds))
+ if(!extrawait || extra_fds || curlfds)
/* if any socket was checked */
- *gotsocket = TRUE;
+ ;
+ else {
+ long sleep_ms = 0;
+
+ /* Avoid busy-looping when there's nothing particular to wait for */
+ if(!curl_multi_timeout(multi, &sleep_ms) && sleep_ms) {
+ if(sleep_ms > timeout_ms)
+ sleep_ms = timeout_ms;
+ Curl_wait_ms((int)sleep_ms);
+ }
+ }
return CURLM_OK;
}
@@ -1147,7 +1170,16 @@ CURLMcode curl_multi_wait(struct Curl_multi *multi,
int timeout_ms,
int *ret)
{
- return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, NULL);
+ return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, FALSE);
+}
+
+CURLMcode curl_multi_poll(struct Curl_multi *multi,
+ struct curl_waitfd extra_fds[],
+ unsigned int extra_nfds,
+ int timeout_ms,
+ int *ret)
+{
+ return Curl_multi_wait(multi, extra_fds, extra_nfds, timeout_ms, ret, TRUE);
}
/*
@@ -1247,6 +1279,109 @@ static CURLcode multi_do_more(struct connectdata *conn, int *complete)
return result;
}
+/*
+ * We are doing protocol-specific connecting and this is being called over and
+ * over from the multi interface until the connection phase is done on
+ * protocol layer.
+ */
+
+static CURLcode protocol_connecting(struct connectdata *conn,
+ bool *done)
+{
+ CURLcode result = CURLE_OK;
+
+ if(conn && conn->handler->connecting) {
+ *done = FALSE;
+ result = conn->handler->connecting(conn, done);
+ }
+ else
+ *done = TRUE;
+
+ return result;
+}
+
+/*
+ * We are DOING this is being called over and over from the multi interface
+ * until the DOING phase is done on protocol layer.
+ */
+
+static CURLcode protocol_doing(struct connectdata *conn, bool *done)
+{
+ CURLcode result = CURLE_OK;
+
+ if(conn && conn->handler->doing) {
+ *done = FALSE;
+ result = conn->handler->doing(conn, done);
+ }
+ else
+ *done = TRUE;
+
+ return result;
+}
+
+/*
+ * We have discovered that the TCP connection has been successful, we can now
+ * proceed with some action.
+ *
+ */
+static CURLcode protocol_connect(struct connectdata *conn,
+ bool *protocol_done)
+{
+ CURLcode result = CURLE_OK;
+
+ DEBUGASSERT(conn);
+ DEBUGASSERT(protocol_done);
+
+ *protocol_done = FALSE;
+
+ if(conn->bits.tcpconnect[FIRSTSOCKET] && conn->bits.protoconnstart) {
+ /* We already are connected, get back. This may happen when the connect
+ worked fine in the first call, like when we connect to a local server
+ or proxy. Note that we don't know if the protocol is actually done.
+
+ Unless this protocol doesn't have any protocol-connect callback, as
+ then we know we're done. */
+ if(!conn->handler->connecting)
+ *protocol_done = TRUE;
+
+ return CURLE_OK;
+ }
+
+ if(!conn->bits.protoconnstart) {
+
+ result = Curl_proxy_connect(conn, FIRSTSOCKET);
+ if(result)
+ return result;
+
+ if(CONNECT_FIRSTSOCKET_PROXY_SSL())
+ /* wait for HTTPS proxy SSL initialization to complete */
+ return CURLE_OK;
+
+ if(conn->bits.tunnel_proxy && conn->bits.httpproxy &&
+ Curl_connect_ongoing(conn))
+ /* when using an HTTP tunnel proxy, await complete tunnel establishment
+ before proceeding further. Return CURLE_OK so we'll be called again */
+ return CURLE_OK;
+
+ if(conn->handler->connect_it) {
+ /* is there a protocol-specific connect() procedure? */
+
+ /* Call the protocol-specific connect function */
+ result = conn->handler->connect_it(conn, protocol_done);
+ }
+ else
+ *protocol_done = TRUE;
+
+ /* it has started, possibly even completed but that knowledge isn't stored
+ in this bit! */
+ if(!result)
+ conn->bits.protoconnstart = TRUE;
+ }
+
+ return result; /* pass back status */
+}
+
+
static CURLMcode multi_runsingle(struct Curl_multi *multi,
struct curltime now,
struct Curl_easy *data)
@@ -1254,7 +1389,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
struct Curl_message *msg = NULL;
bool connected;
bool async;
- bool protocol_connect = FALSE;
+ bool protocol_connected = FALSE;
bool dophase_done = FALSE;
bool done = FALSE;
CURLMcode rc;
@@ -1373,7 +1508,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
if(data->set.connecttimeout)
Curl_expire(data, data->set.connecttimeout, EXPIRE_CONNECTTIMEOUT);
- result = Curl_connect(data, &async, &protocol_connect);
+ result = Curl_connect(data, &async, &protocol_connected);
if(CURLE_NO_CONNECTION_AVAILABLE == result) {
/* There was no connection available. We will go to the pending
state and wait for an available connection. */
@@ -1401,7 +1536,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
WAITDO or DO! */
rc = CURLM_CALL_MULTI_PERFORM;
- if(protocol_connect)
+ if(protocol_connected)
multistate(data, CURLM_STATE_DO);
else {
#ifndef CURL_DISABLE_HTTP
@@ -1456,7 +1591,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
if(dns) {
/* Perform the next step in the connection phase, and then move on
to the WAITCONNECT state */
- result = Curl_once_resolved(data->conn, &protocol_connect);
+ result = Curl_once_resolved(data->conn, &protocol_connected);
if(result)
/* if Curl_once_resolved() returns failure, the connection struct
@@ -1465,7 +1600,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
else {
/* call again please so that we get the next socket setup */
rc = CURLM_CALL_MULTI_PERFORM;
- if(protocol_connect)
+ if(protocol_connected)
multistate(data, CURLM_STATE_DO);
else {
#ifndef CURL_DISABLE_HTTP
@@ -1490,7 +1625,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
case CURLM_STATE_WAITPROXYCONNECT:
/* this is HTTP-specific, but sending CONNECT to a proxy is HTTP... */
DEBUGASSERT(data->conn);
- result = Curl_http_connect(data->conn, &protocol_connect);
+ result = Curl_http_connect(data->conn, &protocol_connected);
if(data->conn->bits.proxy_connect_closed) {
rc = CURLM_CALL_MULTI_PERFORM;
@@ -1541,8 +1676,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
break;
case CURLM_STATE_SENDPROTOCONNECT:
- result = Curl_protocol_connect(data->conn, &protocol_connect);
- if(!result && !protocol_connect)
+ result = protocol_connect(data->conn, &protocol_connected);
+ if(!result && !protocol_connected)
/* switch to waiting state */
multistate(data, CURLM_STATE_PROTOCONNECT);
else if(!result) {
@@ -1560,8 +1695,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
case CURLM_STATE_PROTOCONNECT:
/* protocol-specific connect phase */
- result = Curl_protocol_connecting(data->conn, &protocol_connect);
- if(!result && protocol_connect) {
+ result = protocol_connecting(data->conn, &protocol_connected);
+ if(!result && protocol_connected) {
/* after the connect has completed, go WAITDO or DO */
multistate(data, CURLM_STATE_DO);
rc = CURLM_CALL_MULTI_PERFORM;
@@ -1683,8 +1818,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
case CURLM_STATE_DOING:
/* we continue DOING until the DO phase is complete */
DEBUGASSERT(data->conn);
- result = Curl_protocol_doing(data->conn,
- &dophase_done);
+ result = protocol_doing(data->conn, &dophase_done);
if(!result) {
if(dophase_done) {
/* after DO, go DO_DONE or DO_MORE */
@@ -2012,13 +2146,15 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
if(stream_error) {
/* Don't attempt to send data over a connection that timed out */
bool dead_connection = result == CURLE_OPERATION_TIMEDOUT;
- /* disconnect properly */
- Curl_disconnect(data, data->conn, dead_connection);
+ struct connectdata *conn = data->conn;
/* This is where we make sure that the conn pointer is reset.
We don't have to do this in every case block above where a
failure is detected */
detach_connnection(data);
+
+ /* disconnect properly */
+ Curl_disconnect(data, conn, dead_connection);
}
}
else if(data->mstate == CURLM_STATE_CONNECT) {
@@ -2234,7 +2370,7 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
/* Fill in the 'current' struct with the state as it is now: what sockets to
supervise and for what actions */
- curraction = multi_getsock(data, socks, MAX_SOCKSPEREASYHANDLE);
+ curraction = multi_getsock(data, socks);
/* We have 0 .. N sockets already and we get to know about the 0 .. M
sockets we should have from now on. Detect the differences, remove no
@@ -2846,7 +2982,7 @@ multi_addtimeout(struct Curl_easy *data,
*
* Expire replaces a former timeout using the same id if already set.
*/
-void Curl_expire(struct Curl_easy *data, time_t milli, expire_id id)
+void Curl_expire(struct Curl_easy *data, timediff_t milli, expire_id id)
{
struct Curl_multi *multi = data->multi;
struct curltime *nowp = &data->state.expiretime;
@@ -2860,7 +2996,7 @@ void Curl_expire(struct Curl_easy *data, time_t milli, expire_id id)
DEBUGASSERT(id < EXPIRE_LAST);
set = Curl_now();
- set.tv_sec += milli/1000;
+ set.tv_sec += (time_t)(milli/1000); /* might be a 64 to 32 bit conversion */
set.tv_usec += (unsigned int)(milli%1000)*1000;
if(set.tv_usec >= 1000000) {
diff --git a/lib/multiif.h b/lib/multiif.h
index a6445586..0755a7cd 100644
--- a/lib/multiif.h
+++ b/lib/multiif.h
@@ -27,7 +27,7 @@
*/
void Curl_updatesocket(struct Curl_easy *data);
-void Curl_expire(struct Curl_easy *data, time_t milli, expire_id);
+void Curl_expire(struct Curl_easy *data, timediff_t milli, expire_id);
void Curl_expire_clear(struct Curl_easy *data);
void Curl_expire_done(struct Curl_easy *data, expire_id id);
void Curl_update_timer(struct Curl_multi *multi);
@@ -89,11 +89,4 @@ CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
struct Curl_easy *data,
struct connectdata *conn);
-CURLMcode Curl_multi_wait(struct Curl_multi *multi,
- struct curl_waitfd extra_fds[],
- unsigned int extra_nfds,
- int timeout_ms,
- int *ret,
- bool *gotsocket); /* if any socket was checked */
-
#endif /* HEADER_CURL_MULTIIF_H */
diff --git a/lib/netrc.c b/lib/netrc.c
index f41636e9..c74065e8 100644
--- a/lib/netrc.c
+++ b/lib/netrc.c
@@ -45,27 +45,27 @@ enum host_lookup_state {
HOSTVALID /* this is "our" machine! */
};
+#define NETRC_FILE_MISSING 1
+#define NETRC_FAILED -1
+#define NETRC_SUCCESS 0
+
/*
- * @unittest: 1304
- *
- * *loginp and *passwordp MUST be allocated if they aren't NULL when passed
- * in.
+ * Returns zero on success.
*/
-int Curl_parsenetrc(const char *host,
- char **loginp,
- char **passwordp,
- bool *login_changed,
- bool *password_changed,
- char *netrcfile)
+static int parsenetrc(const char *host,
+ char **loginp,
+ char **passwordp,
+ bool *login_changed,
+ bool *password_changed,
+ char *netrcfile)
{
FILE *file;
- int retcode = 1;
+ int retcode = NETRC_FILE_MISSING;
char *login = *loginp;
char *password = *passwordp;
bool specific_login = (login && *login != 0);
bool login_alloc = FALSE;
bool password_alloc = FALSE;
- bool netrc_alloc = FALSE;
enum host_lookup_state state = NOTHING;
char state_login = 0; /* Found a login keyword */
@@ -73,51 +73,9 @@ int Curl_parsenetrc(const char *host,
int state_our_login = FALSE; /* With specific_login, found *our* login
name */
-#define NETRC DOT_CHAR "netrc"
-
- if(!netrcfile) {
- bool home_alloc = FALSE;
- char *home = curl_getenv("HOME"); /* portable environment reader */
- if(home) {
- home_alloc = TRUE;
-#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
- }
- else {
- struct passwd pw, *pw_res;
- char pwbuf[1024];
- if(!getpwuid_r(geteuid(), &pw, pwbuf, sizeof(pwbuf), &pw_res)
- && pw_res) {
- home = strdup(pw.pw_dir);
- if(!home)
- return -1;
- home_alloc = TRUE;
- }
-#elif defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
- }
- else {
- struct passwd *pw;
- pw = getpwuid(geteuid());
- if(pw) {
- home = pw->pw_dir;
- }
-#endif
- }
-
- if(!home)
- return retcode; /* no home directory found (or possibly out of memory) */
-
- netrcfile = curl_maprintf("%s%s%s", home, DIR_CHAR, NETRC);
- if(home_alloc)
- free(home);
- if(!netrcfile) {
- return -1;
- }
- netrc_alloc = TRUE;
- }
+ DEBUGASSERT(netrcfile);
file = fopen(netrcfile, FOPEN_READTEXT);
- if(netrc_alloc)
- free(netrcfile);
if(file) {
char *tok;
char *tok_buf;
@@ -148,14 +106,14 @@ int Curl_parsenetrc(const char *host,
}
else if(strcasecompare("default", tok)) {
state = HOSTVALID;
- retcode = 0; /* we did find our host */
+ retcode = NETRC_SUCCESS; /* we did find our host */
}
break;
case HOSTFOUND:
if(strcasecompare(host, tok)) {
/* and yes, this is our host! */
state = HOSTVALID;
- retcode = 0; /* we did find our host */
+ retcode = NETRC_SUCCESS; /* we did find our host */
}
else
/* not our host */
@@ -174,7 +132,7 @@ int Curl_parsenetrc(const char *host,
}
login = strdup(tok);
if(!login) {
- retcode = -1; /* allocation failed */
+ retcode = NETRC_FAILED; /* allocation failed */
goto out;
}
login_alloc = TRUE;
@@ -190,7 +148,7 @@ int Curl_parsenetrc(const char *host,
}
password = strdup(tok);
if(!password) {
- retcode = -1; /* allocation failed */
+ retcode = NETRC_FAILED; /* allocation failed */
goto out;
}
password_alloc = TRUE;
@@ -215,6 +173,7 @@ int Curl_parsenetrc(const char *host,
out:
if(!retcode) {
+ /* success */
*login_changed = FALSE;
*password_changed = FALSE;
if(login_alloc) {
@@ -242,4 +201,78 @@ int Curl_parsenetrc(const char *host,
return retcode;
}
+/*
+ * @unittest: 1304
+ *
+ * *loginp and *passwordp MUST be allocated if they aren't NULL when passed
+ * in.
+ */
+int Curl_parsenetrc(const char *host,
+ char **loginp,
+ char **passwordp,
+ bool *login_changed,
+ bool *password_changed,
+ char *netrcfile)
+{
+ int retcode = 1;
+ char *filealloc = NULL;
+
+ if(!netrcfile) {
+ char *home = NULL;
+ char *homea = curl_getenv("HOME"); /* portable environment reader */
+ if(homea) {
+ home = homea;
+#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
+ }
+ else {
+ struct passwd pw, *pw_res;
+ char pwbuf[1024];
+ if(!getpwuid_r(geteuid(), &pw, pwbuf, sizeof(pwbuf), &pw_res)
+ && pw_res) {
+ home = pw.pw_dir;
+ }
+#elif defined(HAVE_GETPWUID) && defined(HAVE_GETEUID)
+ }
+ else {
+ struct passwd *pw;
+ pw = getpwuid(geteuid());
+ if(pw) {
+ home = pw->pw_dir;
+ }
+#endif
+ }
+
+ if(!home)
+ return retcode; /* no home directory found (or possibly out of
+ memory) */
+
+ filealloc = curl_maprintf("%s%s.netrc", home, DIR_CHAR);
+ if(!filealloc) {
+ free(homea);
+ return -1;
+ }
+ retcode = parsenetrc(host, loginp, passwordp, login_changed,
+ password_changed, filealloc);
+ free(filealloc);
+#ifdef WIN32
+ if(retcode == NETRC_FILE_MISSING) {
+ /* fallback to the old-style "_netrc" file */
+ filealloc = curl_maprintf("%s%s_netrc", home, DIR_CHAR);
+ if(!filealloc) {
+ free(homea);
+ return -1;
+ }
+ retcode = parsenetrc(host, loginp, passwordp, login_changed,
+ password_changed, filealloc);
+ free(filealloc);
+ }
+#endif
+ free(homea);
+ }
+ else
+ retcode = parsenetrc(host, loginp, passwordp, login_changed,
+ password_changed, netrcfile);
+ return retcode;
+}
+
#endif
diff --git a/lib/openldap.c b/lib/openldap.c
index eeab2c7a..734ca5fa 100644
--- a/lib/openldap.c
+++ b/lib/openldap.c
@@ -151,7 +151,7 @@ static const char *url_errs[] = {
"bad or missing extensions"
};
-typedef struct ldapconninfo {
+struct ldapconninfo {
LDAP *ld;
Curl_recv *recv; /* for stacking SSL handler */
Curl_send *send;
@@ -160,7 +160,7 @@ typedef struct ldapconninfo {
bool ssldone;
bool sslinst;
bool didbind;
-} ldapconninfo;
+};
typedef struct ldapreqinfo {
int msgid;
@@ -169,7 +169,7 @@ typedef struct ldapreqinfo {
static CURLcode ldap_setup_connection(struct connectdata *conn)
{
- ldapconninfo *li;
+ struct ldapconninfo *li;
LDAPURLDesc *lud;
struct Curl_easy *data = conn->data;
int rc, proto;
@@ -190,11 +190,11 @@ static CURLcode ldap_setup_connection(struct connectdata *conn)
proto = ldap_pvt_url_scheme2proto(lud->lud_scheme);
ldap_free_urldesc(lud);
- li = calloc(1, sizeof(ldapconninfo));
+ li = calloc(1, sizeof(struct ldapconninfo));
if(!li)
return CURLE_OUT_OF_MEMORY;
li->proto = proto;
- conn->proto.generic = li;
+ conn->proto.ldapc = li;
connkeep(conn, "OpenLDAP default");
return CURLE_OK;
}
@@ -205,7 +205,7 @@ static Sockbuf_IO ldapsb_tls;
static CURLcode ldap_connect(struct connectdata *conn, bool *done)
{
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
struct Curl_easy *data = conn->data;
int rc, proto = LDAP_VERSION3;
char hosturl[1024];
@@ -252,7 +252,7 @@ static CURLcode ldap_connect(struct connectdata *conn, bool *done)
static CURLcode ldap_connecting(struct connectdata *conn, bool *done)
{
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
struct Curl_easy *data = conn->data;
LDAPMessage *msg = NULL;
struct timeval tv = {0, 1}, *tvp;
@@ -357,7 +357,7 @@ static CURLcode ldap_connecting(struct connectdata *conn, bool *done)
static CURLcode ldap_disconnect(struct connectdata *conn, bool dead_connection)
{
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
(void) dead_connection;
if(li) {
@@ -365,7 +365,7 @@ static CURLcode ldap_disconnect(struct connectdata *conn, bool dead_connection)
ldap_unbind_ext(li->ld, NULL, NULL);
li->ld = NULL;
}
- conn->proto.generic = NULL;
+ conn->proto.ldapc = NULL;
free(li);
}
return CURLE_OK;
@@ -373,7 +373,7 @@ static CURLcode ldap_disconnect(struct connectdata *conn, bool dead_connection)
static CURLcode ldap_do(struct connectdata *conn, bool *done)
{
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
ldapreqinfo *lr;
CURLcode status = CURLE_OK;
int rc = 0;
@@ -427,7 +427,7 @@ static CURLcode ldap_done(struct connectdata *conn, CURLcode res,
if(lr) {
/* if there was a search in progress, abandon it */
if(lr->msgid) {
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
ldap_abandon_ext(li->ld, lr->msgid, NULL, NULL);
lr->msgid = 0;
}
@@ -441,7 +441,7 @@ static CURLcode ldap_done(struct connectdata *conn, CURLcode res,
static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf,
size_t len, CURLcode *err)
{
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
struct Curl_easy *data = conn->data;
ldapreqinfo *lr = data->req.protop;
int rc, ret;
@@ -718,7 +718,7 @@ static ber_slen_t
ldapsb_tls_read(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
{
struct connectdata *conn = sbiod->sbiod_pvt;
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
ber_slen_t ret;
CURLcode err = CURLE_RECV_ERROR;
@@ -733,7 +733,7 @@ static ber_slen_t
ldapsb_tls_write(Sockbuf_IO_Desc *sbiod, void *buf, ber_len_t len)
{
struct connectdata *conn = sbiod->sbiod_pvt;
- ldapconninfo *li = conn->proto.generic;
+ struct ldapconninfo *li = conn->proto.ldapc;
ber_slen_t ret;
CURLcode err = CURLE_SEND_ERROR;
diff --git a/lib/pingpong.c b/lib/pingpong.c
index e9568ee3..d0710053 100644
--- a/lib/pingpong.c
+++ b/lib/pingpong.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -60,12 +60,12 @@ time_t Curl_pp_state_timeout(struct pingpong *pp, bool disconnecting)
/* Without a requested timeout, we only wait 'response_time' seconds for the
full response to arrive before we bail out */
timeout_ms = response_time -
- Curl_timediff(Curl_now(), pp->response); /* spent time */
+ (time_t)Curl_timediff(Curl_now(), pp->response); /* spent time */
if(data->set.timeout && !disconnecting) {
/* if timeout is requested, find out how much remaining time we have */
time_t timeout2_ms = data->set.timeout - /* timeout time */
- Curl_timediff(Curl_now(), conn->now); /* spent time */
+ (time_t)Curl_timediff(Curl_now(), conn->now); /* spent time */
/* pick the lowest number */
timeout_ms = CURLMIN(timeout_ms, timeout2_ms);
@@ -463,14 +463,9 @@ CURLcode Curl_pp_readresp(curl_socket_t sockfd,
}
int Curl_pp_getsock(struct pingpong *pp,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
struct connectdata *conn = pp->conn;
-
- if(!numsocks)
- return GETSOCK_BLANK;
-
socks[0] = conn->sock[FIRSTSOCKET];
if(pp->sendleft) {
diff --git a/lib/pingpong.h b/lib/pingpong.h
index dbe1f8d3..849a7c0f 100644
--- a/lib/pingpong.h
+++ b/lib/pingpong.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -135,8 +135,7 @@ CURLcode Curl_pp_flushsend(struct pingpong *pp);
/* call this when a pingpong connection is disconnected */
CURLcode Curl_pp_disconnect(struct pingpong *pp);
-int Curl_pp_getsock(struct pingpong *pp, curl_socket_t *socks,
- int numsocks);
+int Curl_pp_getsock(struct pingpong *pp, curl_socket_t *socks);
/***********************************************************************
diff --git a/lib/pop3.c b/lib/pop3.c
index a681d521..57c1373a 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -95,8 +95,7 @@ static CURLcode pop3_done(struct connectdata *conn, CURLcode status,
static CURLcode pop3_connect(struct connectdata *conn, bool *done);
static CURLcode pop3_disconnect(struct connectdata *conn, bool dead);
static CURLcode pop3_multi_statemach(struct connectdata *conn, bool *done);
-static int pop3_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+static int pop3_getsock(struct connectdata *conn, curl_socket_t *socks);
static CURLcode pop3_doing(struct connectdata *conn, bool *dophase_done);
static CURLcode pop3_setup_connection(struct connectdata *conn);
static CURLcode pop3_parse_url_options(struct connectdata *conn);
@@ -1055,10 +1054,9 @@ static CURLcode pop3_init(struct connectdata *conn)
}
/* For the POP3 "protocol connect" and "doing" phases only */
-static int pop3_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks)
+static int pop3_getsock(struct connectdata *conn, curl_socket_t *socks)
{
- return Curl_pp_getsock(&conn->proto.pop3c.pp, socks, numsocks);
+ return Curl_pp_getsock(&conn->proto.pop3c.pp, socks);
}
/***********************************************************************
diff --git a/lib/progress.c b/lib/progress.c
index 9f953ef5..2aa92959 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -26,6 +26,7 @@
#include "sendf.h"
#include "multiif.h"
#include "progress.h"
+#include "timeval.h"
#include "curl_printf.h"
/* check rate limits within this many recent milliseconds, at minimum. */
@@ -168,7 +169,7 @@ void Curl_pgrsResetTransferSizes(struct Curl_easy *data)
void Curl_pgrsTime(struct Curl_easy *data, timerid timer)
{
struct curltime now = Curl_now();
- time_t *delta = NULL;
+ timediff_t *delta = NULL;
switch(timer) {
default:
@@ -238,6 +239,8 @@ void Curl_pgrsStartNow(struct Curl_easy *data)
data->progress.ul_limit_start.tv_usec = 0;
data->progress.dl_limit_start.tv_sec = 0;
data->progress.dl_limit_start.tv_usec = 0;
+ data->progress.downloaded = 0;
+ data->progress.uploaded = 0;
/* clear all bits except HIDE and HEADERS_OUT */
data->progress.flags &= PGRS_HIDE|PGRS_HEADERS_OUT;
Curl_ratelimit(data, data->progress.start);
@@ -268,8 +271,8 @@ timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize,
struct curltime now)
{
curl_off_t size = cursize - startsize;
- time_t minimum;
- time_t actual;
+ timediff_t minimum;
+ timediff_t actual;
if(!limit || !size)
return 0;
@@ -282,10 +285,10 @@ timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize,
minimum = (time_t) (CURL_OFF_T_C(1000) * size / limit);
else {
minimum = (time_t) (size / limit);
- if(minimum < TIME_T_MAX/1000)
+ if(minimum < TIMEDIFF_T_MAX/1000)
minimum *= 1000;
else
- minimum = TIME_T_MAX;
+ minimum = TIMEDIFF_T_MAX;
}
/*
diff --git a/lib/quic.h b/lib/quic.h
new file mode 100644
index 00000000..6c132a32
--- /dev/null
+++ b/lib/quic.h
@@ -0,0 +1,53 @@
+#ifndef HEADER_CURL_QUIC_H
+#define HEADER_CURL_QUIC_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef ENABLE_QUIC
+#ifdef USE_NGTCP2
+#include "vquic/ngtcp2.h"
+#endif
+#ifdef USE_QUICHE
+#include "vquic/quiche.h"
+#endif
+
+#include "urldata.h"
+
+/* functions provided by the specific backends */
+CURLcode Curl_quic_connect(struct connectdata *conn,
+ curl_socket_t sockfd,
+ int sockindex,
+ const struct sockaddr *addr,
+ socklen_t addrlen);
+CURLcode Curl_quic_is_connected(struct connectdata *conn,
+ curl_socket_t sockfd,
+ bool *connected);
+int Curl_quic_ver(char *p, size_t len);
+CURLcode Curl_quic_done_sending(struct connectdata *conn);
+
+#else /* ENABLE_QUIC */
+#define Curl_quic_done_sending(x)
+#endif /* !ENABLE_QUIC */
+
+#endif /* HEADER_CURL_QUIC_H */
diff --git a/lib/rtsp.c b/lib/rtsp.c
index 25e194a2..bba4c16a 100644
--- a/lib/rtsp.c
+++ b/lib/rtsp.c
@@ -52,10 +52,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done);
static CURLcode rtsp_done(struct connectdata *conn, CURLcode, bool premature);
static CURLcode rtsp_connect(struct connectdata *conn, bool *done);
static CURLcode rtsp_disconnect(struct connectdata *conn, bool dead);
-
-static int rtsp_getsock_do(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+static int rtsp_getsock_do(struct connectdata *conn, curl_socket_t *socks);
/*
* Parse and write out any available RTP data.
@@ -77,11 +74,9 @@ static unsigned int rtsp_conncheck(struct connectdata *check,
interface and then we're always _sending_ a request and thus we wait for
the single socket to become writable only */
static int rtsp_getsock_do(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
/* write mode */
- (void)numsocks; /* unused, we trust it to be at least 1 */
socks[0] = conn->sock[FIRSTSOCKET];
return GETSOCK_WRITESOCK(0);
}
diff --git a/lib/security.c b/lib/security.c
index 550ea2da..c5e4e135 100644
--- a/lib/security.c
+++ b/lib/security.c
@@ -191,7 +191,6 @@ static CURLcode read_data(struct connectdata *conn,
struct krb5buffer *buf)
{
int len;
- void *tmp = NULL;
CURLcode result;
result = socket_read(fd, &len, sizeof(len));
@@ -201,12 +200,11 @@ static CURLcode read_data(struct connectdata *conn,
if(len) {
/* only realloc if there was a length */
len = ntohl(len);
- tmp = Curl_saferealloc(buf->data, len);
+ buf->data = Curl_saferealloc(buf->data, len);
}
- if(tmp == NULL)
+ if(!len || !buf->data)
return CURLE_OUT_OF_MEMORY;
- buf->data = tmp;
result = socket_read(fd, buf->data, len);
if(result)
return result;
diff --git a/lib/select.h b/lib/select.h
index 9a1ba45a..f5652a74 100644
--- a/lib/select.h
+++ b/lib/select.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -77,9 +77,9 @@ int Curl_socket_check(curl_socket_t readfd, curl_socket_t readfd2,
time_t timeout_ms);
#define SOCKET_READABLE(x,z) \
- Curl_socket_check(x, CURL_SOCKET_BAD, CURL_SOCKET_BAD, z)
+ Curl_socket_check(x, CURL_SOCKET_BAD, CURL_SOCKET_BAD, (time_t)z)
#define SOCKET_WRITABLE(x,z) \
- Curl_socket_check(CURL_SOCKET_BAD, CURL_SOCKET_BAD, x, z)
+ Curl_socket_check(CURL_SOCKET_BAD, CURL_SOCKET_BAD, x, (time_t)z)
int Curl_poll(struct pollfd ufds[], unsigned int nfds, int timeout_ms);
diff --git a/lib/setopt.c b/lib/setopt.c
index 1dbf00fa..8909035a 100644
--- a/lib/setopt.c
+++ b/lib/setopt.c
@@ -809,6 +809,11 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
arg = va_arg(param, long);
if(arg < CURL_HTTP_VERSION_NONE)
return CURLE_BAD_FUNCTION_ARGUMENT;
+#ifdef ENABLE_QUIC
+ if(arg == CURL_HTTP_VERSION_3)
+ ;
+ else
+#endif
#ifndef USE_NGHTTP2
if(arg >= CURL_HTTP_VERSION_2)
return CURLE_UNSUPPORTED_PROTOCOL;
@@ -1778,16 +1783,9 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
arg = va_arg(param, long);
/* Obviously people are not reading documentation and too many thought
- this argument took a boolean when it wasn't and misused it. We thus ban
- 1 as a sensible input and we warn about its use. Then we only have the
- 2 action internally stored as TRUE. */
-
- if(1 == arg) {
- failf(data, "CURLOPT_SSL_VERIFYHOST no longer supports 1 as value!");
- return CURLE_BAD_FUNCTION_ARGUMENT;
- }
-
- data->set.ssl.primary.verifyhost = (0 != arg) ? TRUE : FALSE;
+ this argument took a boolean when it wasn't and misused it.
+ Treat 1 and 2 the same */
+ data->set.ssl.primary.verifyhost = (bool)((arg & 3) ? TRUE : FALSE);
/* Update the current connection ssl_config. */
if(data->conn) {
@@ -1802,17 +1800,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
*/
arg = va_arg(param, long);
- /* Obviously people are not reading documentation and too many thought
- this argument took a boolean when it wasn't and misused it. We thus ban
- 1 as a sensible input and we warn about its use. Then we only have the
- 2 action internally stored as TRUE. */
-
- if(1 == arg) {
- failf(data, "CURLOPT_SSL_VERIFYHOST no longer supports 1 as value!");
- return CURLE_BAD_FUNCTION_ARGUMENT;
- }
-
- data->set.proxy_ssl.primary.verifyhost = (0 != arg)?TRUE:FALSE;
+ /* Treat both 1 and 2 as TRUE */
+ data->set.proxy_ssl.primary.verifyhost = (bool)((arg & 3)?TRUE:FALSE);
/* Update the current connection proxy_ssl_config. */
if(data->conn) {
@@ -2402,6 +2391,12 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
break;
#endif
+ case CURLOPT_SASL_AUTHZID:
+ /* Authorisation identity (identity to act as) */
+ result = Curl_setstropt(&data->set.str[STRING_SASL_AUTHZID],
+ va_arg(param, char *));
+ break;
+
case CURLOPT_SASL_IR:
/* Enable/disable SASL initial response */
data->set.sasl_ir = (0 != va_arg(param, long)) ? TRUE : FALSE;
diff --git a/lib/smb.c b/lib/smb.c
index 870244cb..f66c05ca 100644
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -6,7 +6,7 @@
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
- * Copyright (C) 2016-2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2016-2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -64,8 +64,7 @@ static CURLcode smb_request_state(struct connectdata *conn, bool *done);
static CURLcode smb_done(struct connectdata *conn, CURLcode status,
bool premature);
static CURLcode smb_disconnect(struct connectdata *conn, bool dead);
-static int smb_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+static int smb_getsock(struct connectdata *conn, curl_socket_t *socks);
static CURLcode smb_parse_url_path(struct connectdata *conn);
/*
@@ -607,6 +606,7 @@ static CURLcode smb_send_and_recv(struct connectdata *conn, void **msg)
{
struct smb_conn *smbc = &conn->proto.smbc;
CURLcode result;
+ *msg = NULL; /* if it returns early */
/* Check if there is data in the transfer buffer */
if(!smbc->send_size && smbc->upload_size) {
@@ -936,12 +936,8 @@ static CURLcode smb_disconnect(struct connectdata *conn, bool dead)
return CURLE_OK;
}
-static int smb_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks)
+static int smb_getsock(struct connectdata *conn, curl_socket_t *socks)
{
- if(!numsocks)
- return GETSOCK_BLANK;
-
socks[0] = conn->sock[FIRSTSOCKET];
return GETSOCK_READSOCK(0) | GETSOCK_WRITESOCK(0);
}
diff --git a/lib/smtp.c b/lib/smtp.c
index e10d0fbf..65220b0f 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -95,8 +95,7 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
static CURLcode smtp_connect(struct connectdata *conn, bool *done);
static CURLcode smtp_disconnect(struct connectdata *conn, bool dead);
static CURLcode smtp_multi_statemach(struct connectdata *conn, bool *done);
-static int smtp_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+static int smtp_getsock(struct connectdata *conn, curl_socket_t *socks);
static CURLcode smtp_doing(struct connectdata *conn, bool *dophase_done);
static CURLcode smtp_setup_connection(struct connectdata *conn);
static CURLcode smtp_parse_url_options(struct connectdata *conn);
@@ -715,7 +714,7 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
result = CURLE_REMOTE_ACCESS_DENIED;
}
}
- else {
+ else if(len >= 4) {
line += 4;
len -= 4;
@@ -786,6 +785,10 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
result = smtp_perform_authentication(conn);
}
}
+ else {
+ failf(data, "Unexpectedly short EHLO response");
+ result = CURLE_WEIRD_SERVER_REPLY;
+ }
return result;
}
@@ -1114,10 +1117,9 @@ static CURLcode smtp_init(struct connectdata *conn)
}
/* For the SMTP "protocol connect" and "doing" phases only */
-static int smtp_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks)
+static int smtp_getsock(struct connectdata *conn, curl_socket_t *socks)
{
- return Curl_pp_getsock(&conn->proto.smtpc.pp, socks, numsocks);
+ return Curl_pp_getsock(&conn->proto.smtpc.pp, socks);
}
/***********************************************************************
diff --git a/lib/ssh.h b/lib/ssh.h
index 0620aac3..3213c5a5 100644
--- a/lib/ssh.h
+++ b/lib/ssh.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -239,7 +239,16 @@ extern const struct Curl_handler Curl_handler_sftp;
extern const struct Curl_handler Curl_handler_scp;
extern const struct Curl_handler Curl_handler_sftp;
-
#endif /* USE_LIBSSH2 */
+#ifdef USE_SSH
+/* generic SSH backend functions */
+CURLcode Curl_ssh_init(void);
+void Curl_ssh_cleanup(void);
+size_t Curl_ssh_version(char *buffer, size_t buflen);
+#else
+/* for non-SSH builds */
+#define Curl_ssh_cleanup()
+#endif
+
#endif /* HEADER_CURL_SSH_H */
diff --git a/lib/strerror.c b/lib/strerror.c
index e273f376..d0650d80 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -311,6 +311,9 @@ curl_easy_strerror(CURLcode error)
case CURLE_RECURSIVE_API_CALL:
return "API function called from within callback";
+ case CURLE_AUTH_ERROR:
+ return "An authentication function returned an error";
+
/* error codes not used by current libcurl */
case CURLE_OBSOLETE20:
case CURLE_OBSOLETE24:
diff --git a/lib/tftp.c b/lib/tftp.c
index 289cda28..346f293d 100644
--- a/lib/tftp.c
+++ b/lib/tftp.c
@@ -157,8 +157,7 @@ static CURLcode tftp_done(struct connectdata *conn,
static CURLcode tftp_setup_connection(struct connectdata * conn);
static CURLcode tftp_multi_statemach(struct connectdata *conn, bool *done);
static CURLcode tftp_doing(struct connectdata *conn, bool *dophase_done);
-static int tftp_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+static int tftp_getsock(struct connectdata *conn, curl_socket_t *socks);
static CURLcode tftp_translate_code(tftp_error_t error);
@@ -404,13 +403,14 @@ static CURLcode tftp_parse_option_ack(tftp_state_data_t *state,
return CURLE_OK;
}
-static size_t tftp_option_add(tftp_state_data_t *state, size_t csize,
- char *buf, const char *option)
+static CURLcode tftp_option_add(tftp_state_data_t *state, size_t *csize,
+ char *buf, const char *option)
{
- if(( strlen(option) + csize + 1) > (size_t)state->blksize)
- return 0;
+ if(( strlen(option) + *csize + 1) > (size_t)state->blksize)
+ return CURLE_TFTP_ILLEGAL;
strcpy(buf, option);
- return strlen(option) + 1;
+ *csize += strlen(option) + 1;
+ return CURLE_OK;
}
static CURLcode tftp_connect_for_tx(tftp_state_data_t *state,
@@ -511,26 +511,38 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)
else
strcpy(buf, "0"); /* the destination is large enough */
- sbytes += tftp_option_add(state, sbytes,
- (char *)state->spacket.data + sbytes,
- TFTP_OPTION_TSIZE);
- sbytes += tftp_option_add(state, sbytes,
- (char *)state->spacket.data + sbytes, buf);
+ result = tftp_option_add(state, &sbytes,
+ (char *)state->spacket.data + sbytes,
+ TFTP_OPTION_TSIZE);
+ if(result == CURLE_OK)
+ result = tftp_option_add(state, &sbytes,
+ (char *)state->spacket.data + sbytes, buf);
+
/* add blksize option */
msnprintf(buf, sizeof(buf), "%d", state->requested_blksize);
- sbytes += tftp_option_add(state, sbytes,
- (char *)state->spacket.data + sbytes,
- TFTP_OPTION_BLKSIZE);
- sbytes += tftp_option_add(state, sbytes,
- (char *)state->spacket.data + sbytes, buf);
+ if(result == CURLE_OK)
+ result = tftp_option_add(state, &sbytes,
+ (char *)state->spacket.data + sbytes,
+ TFTP_OPTION_BLKSIZE);
+ if(result == CURLE_OK)
+ result = tftp_option_add(state, &sbytes,
+ (char *)state->spacket.data + sbytes, buf);
/* add timeout option */
msnprintf(buf, sizeof(buf), "%d", state->retry_time);
- sbytes += tftp_option_add(state, sbytes,
- (char *)state->spacket.data + sbytes,
- TFTP_OPTION_INTERVAL);
- sbytes += tftp_option_add(state, sbytes,
- (char *)state->spacket.data + sbytes, buf);
+ if(result == CURLE_OK)
+ result = tftp_option_add(state, &sbytes,
+ (char *)state->spacket.data + sbytes,
+ TFTP_OPTION_INTERVAL);
+ if(result == CURLE_OK)
+ result = tftp_option_add(state, &sbytes,
+ (char *)state->spacket.data + sbytes, buf);
+
+ if(result != CURLE_OK) {
+ failf(data, "TFTP buffer too small for options");
+ free(filename);
+ return CURLE_TFTP_ILLEGAL;
+ }
}
/* the typecase for the 3rd argument is mostly for systems that do
@@ -973,6 +985,7 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
{
tftp_state_data_t *state;
int blksize;
+ int need_blksize;
blksize = TFTP_BLKSIZE_DEFAULT;
@@ -987,15 +1000,20 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
return CURLE_TFTP_ILLEGAL;
}
+ need_blksize = blksize;
+ /* default size is the fallback when no OACK is received */
+ if(need_blksize < TFTP_BLKSIZE_DEFAULT)
+ need_blksize = TFTP_BLKSIZE_DEFAULT;
+
if(!state->rpacket.data) {
- state->rpacket.data = calloc(1, blksize + 2 + 2);
+ state->rpacket.data = calloc(1, need_blksize + 2 + 2);
if(!state->rpacket.data)
return CURLE_OUT_OF_MEMORY;
}
if(!state->spacket.data) {
- state->spacket.data = calloc(1, blksize + 2 + 2);
+ state->spacket.data = calloc(1, need_blksize + 2 + 2);
if(!state->spacket.data)
return CURLE_OUT_OF_MEMORY;
@@ -1009,7 +1027,7 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done)
state->sockfd = state->conn->sock[FIRSTSOCKET];
state->state = TFTP_STATE_START;
state->error = TFTP_ERR_NONE;
- state->blksize = blksize;
+ state->blksize = TFTP_BLKSIZE_DEFAULT; /* Unless updated by OACK response */
state->requested_blksize = blksize;
((struct sockaddr *)&state->local_addr)->sa_family =
@@ -1082,14 +1100,9 @@ static CURLcode tftp_done(struct connectdata *conn, CURLcode status,
* The getsock callback
*
**********************************************************/
-static int tftp_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks)
+static int tftp_getsock(struct connectdata *conn, curl_socket_t *socks)
{
- if(!numsocks)
- return GETSOCK_BLANK;
-
socks[0] = conn->sock[FIRSTSOCKET];
-
return GETSOCK_READSOCK(0);
}
@@ -1376,7 +1389,7 @@ static CURLcode tftp_setup_connection(struct connectdata * conn)
struct Curl_easy *data = conn->data;
char *type;
- conn->socktype = SOCK_DGRAM; /* UDP datagram based */
+ conn->transport = TRNSPRT_UDP;
/* TFTP URLs support an extension like ";mode=<typecode>" that
* we'll try to get now! */
diff --git a/lib/timeval.c b/lib/timeval.c
index e2bd7fd1..9b05cf05 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -174,14 +174,6 @@ struct curltime Curl_now(void)
#endif
-#if SIZEOF_TIME_T < 8
-#define TIME_MAX INT_MAX
-#define TIME_MIN INT_MIN
-#else
-#define TIME_MAX 9223372036854775807LL
-#define TIME_MIN -9223372036854775807LL
-#endif
-
/*
* Returns: time difference in number of milliseconds. For too large diffs it
* returns max value.
@@ -191,10 +183,10 @@ struct curltime Curl_now(void)
timediff_t Curl_timediff(struct curltime newer, struct curltime older)
{
timediff_t diff = (timediff_t)newer.tv_sec-older.tv_sec;
- if(diff >= (TIME_MAX/1000))
- return TIME_MAX;
- else if(diff <= (TIME_MIN/1000))
- return TIME_MIN;
+ if(diff >= (TIMEDIFF_T_MAX/1000))
+ return TIMEDIFF_T_MAX;
+ else if(diff <= (TIMEDIFF_T_MIN/1000))
+ return TIMEDIFF_T_MIN;
return diff * 1000 + (newer.tv_usec-older.tv_usec)/1000;
}
@@ -205,9 +197,9 @@ timediff_t Curl_timediff(struct curltime newer, struct curltime older)
timediff_t Curl_timediff_us(struct curltime newer, struct curltime older)
{
timediff_t diff = (timediff_t)newer.tv_sec-older.tv_sec;
- if(diff >= (TIME_MAX/1000000))
- return TIME_MAX;
- else if(diff <= (TIME_MIN/1000000))
- return TIME_MIN;
+ if(diff >= (TIMEDIFF_T_MAX/1000000))
+ return TIMEDIFF_T_MAX;
+ else if(diff <= (TIMEDIFF_T_MIN/1000000))
+ return TIMEDIFF_T_MIN;
return diff * 1000000 + newer.tv_usec-older.tv_usec;
}
diff --git a/lib/timeval.h b/lib/timeval.h
index 96867d71..53e06360 100644
--- a/lib/timeval.h
+++ b/lib/timeval.h
@@ -24,13 +24,13 @@
#include "curl_setup.h"
-#if SIZEOF_TIME_T < 8
-typedef int timediff_t;
-#define CURL_FORMAT_TIMEDIFF_T "d"
-#else
+/* Use a larger type even for 32 bit time_t systems so that we can keep
+ microsecond accuracy in it */
typedef curl_off_t timediff_t;
#define CURL_FORMAT_TIMEDIFF_T CURL_FORMAT_CURL_OFF_T
-#endif
+
+#define TIMEDIFF_T_MAX CURL_OFF_T_MAX
+#define TIMEDIFF_T_MIN CURL_OFF_T_MIN
struct curltime {
time_t tv_sec; /* seconds */
diff --git a/lib/transfer.c b/lib/transfer.c
index b9bb5f6e..ef0d8063 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -176,7 +176,7 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, size_t bytes,
#ifndef CURL_DISABLE_HTTP
if(data->state.trailers_state == TRAILERS_INITIALIZED) {
struct curl_slist *trailers = NULL;
- CURLcode c;
+ CURLcode result;
int trailers_ret_code;
/* at this point we already verified that the callback exists
@@ -195,17 +195,18 @@ CURLcode Curl_fillreadbuffer(struct connectdata *conn, size_t bytes,
data->set.trailer_data);
Curl_set_in_callback(data, false);
if(trailers_ret_code == CURL_TRAILERFUNC_OK) {
- c = Curl_http_compile_trailers(trailers, data->state.trailers_buf, data);
+ result = Curl_http_compile_trailers(trailers, &data->state.trailers_buf,
+ data);
}
else {
failf(data, "operation aborted by trailing headers callback");
*nreadp = 0;
- c = CURLE_ABORTED_BY_CALLBACK;
+ result = CURLE_ABORTED_BY_CALLBACK;
}
- if(c != CURLE_OK) {
+ if(result) {
Curl_add_buffer_free(&data->state.trailers_buf);
curl_slist_free_all(trailers);
- return c;
+ return result;
}
infof(data, "Successfully compiled trailers.\r\n");
curl_slist_free_all(trailers);
@@ -497,7 +498,7 @@ static int data_pending(const struct connectdata *conn)
TRUE. The thing is if we read everything, then http2_recv won't
be called and we cannot signal the HTTP/2 stream has closed. As
a workaround, we return nonzero here to call http2_recv. */
- ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion == 20);
+ ((conn->handler->protocol&PROTO_FAMILY_HTTP) && conn->httpversion >= 20);
#else
Curl_ssl_data_pending(conn, FIRSTSOCKET);
#endif
@@ -601,7 +602,7 @@ static CURLcode readwrite_data(struct Curl_easy *data,
nread = 0;
}
- if((k->bytecount == 0) && (k->writebytecount == 0)) {
+ if(!k->bytecount) {
Curl_pgrsTime(data, TIMER_STARTTRANSFER);
if(k->exp100 > EXP100_SEND_DATA)
/* set time stamp to compare with when waiting for the 100 */
@@ -942,7 +943,9 @@ CURLcode Curl_done_sending(struct connectdata *conn,
{
k->keepon &= ~KEEP_SEND; /* we're done writing */
+ /* These functions should be moved into the handler struct! */
Curl_http2_done_sending(conn);
+ Curl_quic_done_sending(conn);
if(conn->bits.rewindaftersend) {
CURLcode result = Curl_readrewind(conn);
@@ -1354,20 +1357,14 @@ CURLcode Curl_readwrite(struct connectdata *conn,
* in the proper state to have this information available.
*/
int Curl_single_getsock(const struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks number
- of sockets */
- int numsocks)
+ curl_socket_t *sock)
{
const struct Curl_easy *data = conn->data;
int bitmap = GETSOCK_BLANK;
unsigned sockindex = 0;
if(conn->handler->perform_getsock)
- return conn->handler->perform_getsock(conn, sock, numsocks);
-
- if(numsocks < 2)
- /* simple check but we might need two slots */
- return GETSOCK_BLANK;
+ return conn->handler->perform_getsock(conn, sock);
/* don't include HOLD and PAUSE connections */
if((data->req.keepon & KEEP_RECVBITS) == KEEP_RECV) {
diff --git a/lib/transfer.h b/lib/transfer.h
index da36f19f..67fd91f2 100644
--- a/lib/transfer.h
+++ b/lib/transfer.h
@@ -47,8 +47,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
struct Curl_easy *data, bool *done,
bool *comeback);
int Curl_single_getsock(const struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
CURLcode Curl_readrewind(struct connectdata *conn);
CURLcode Curl_fillreadbuffer(struct connectdata *conn, size_t bytes,
size_t *nreadp);
diff --git a/lib/url.c b/lib/url.c
index 2b47b235..b7cf7bed 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -112,7 +112,6 @@ bool curl_win32_idn_to_ascii(const char *in, char **out);
#include "connect.h"
#include "inet_ntop.h"
#include "http_ntlm.h"
-#include "socks.h"
#include "curl_rtmp.h"
#include "gopher.h"
#include "http_proxy.h"
@@ -546,7 +545,7 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
set->upkeep_interval_ms = CURL_UPKEEP_INTERVAL_DEFAULT;
set->maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */
set->maxage_conn = 118;
- set->http09_allowed = TRUE;
+ set->http09_allowed = FALSE;
set->httpversion =
#ifdef USE_NGHTTP2
CURL_HTTP_VERSION_2TLS
@@ -715,6 +714,7 @@ static void conn_free(struct connectdata *conn)
Curl_safefree(conn->user);
Curl_safefree(conn->passwd);
Curl_safefree(conn->oauth_bearer);
+ Curl_safefree(conn->sasl_authzid);
Curl_safefree(conn->options);
Curl_safefree(conn->http_proxy.user);
Curl_safefree(conn->socks_proxy.user);
@@ -972,7 +972,8 @@ static int call_extract_if_dead(struct connectdata *conn, void *param)
static void prune_dead_connections(struct Curl_easy *data)
{
struct curltime now = Curl_now();
- time_t elapsed = Curl_timediff(now, data->state.conn_cache->last_cleanup);
+ timediff_t elapsed =
+ Curl_timediff(now, data->state.conn_cache->last_cleanup);
if(elapsed >= 1000L) {
struct prunedead prune;
@@ -1371,58 +1372,6 @@ ConnectionExists(struct Curl_easy *data,
return FALSE; /* no matching connecting exists */
}
-/* after a TCP connection to the proxy has been verified, this function does
- the next magic step.
-
- Note: this function's sub-functions call failf()
-
-*/
-CURLcode Curl_connected_proxy(struct connectdata *conn, int sockindex)
-{
- CURLcode result = CURLE_OK;
-
- if(conn->bits.socksproxy) {
-#ifndef CURL_DISABLE_PROXY
- /* for the secondary socket (FTP), use the "connect to host"
- * but ignore the "connect to port" (use the secondary port)
- */
- const char * const host = conn->bits.httpproxy ?
- conn->http_proxy.host.name :
- conn->bits.conn_to_host ?
- conn->conn_to_host.name :
- sockindex == SECONDARYSOCKET ?
- conn->secondaryhostname : conn->host.name;
- const int port = conn->bits.httpproxy ? (int)conn->http_proxy.port :
- sockindex == SECONDARYSOCKET ? conn->secondary_port :
- conn->bits.conn_to_port ? conn->conn_to_port :
- conn->remote_port;
- conn->bits.socksproxy_connecting = TRUE;
- switch(conn->socks_proxy.proxytype) {
- case CURLPROXY_SOCKS5:
- case CURLPROXY_SOCKS5_HOSTNAME:
- result = Curl_SOCKS5(conn->socks_proxy.user, conn->socks_proxy.passwd,
- host, port, sockindex, conn);
- break;
-
- case CURLPROXY_SOCKS4:
- case CURLPROXY_SOCKS4A:
- result = Curl_SOCKS4(conn->socks_proxy.user, host, port, sockindex,
- conn);
- break;
-
- default:
- failf(conn->data, "unknown proxytype option given");
- result = CURLE_COULDNT_CONNECT;
- } /* switch proxytype */
- conn->bits.socksproxy_connecting = FALSE;
-#else
- (void)sockindex;
-#endif /* CURL_DISABLE_PROXY */
- }
-
- return result;
-}
-
/*
* verboseconnect() displays verbose information after a connect
*/
@@ -1439,127 +1388,6 @@ void Curl_verboseconnect(struct connectdata *conn)
}
#endif
-int Curl_protocol_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
-{
- if(conn->handler->proto_getsock)
- return conn->handler->proto_getsock(conn, socks, numsocks);
- /* Backup getsock logic. Since there is a live socket in use, we must wait
- for it or it will be removed from watching when the multi_socket API is
- used. */
- socks[0] = conn->sock[FIRSTSOCKET];
- return GETSOCK_READSOCK(0) | GETSOCK_WRITESOCK(0);
-}
-
-int Curl_doing_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
-{
- if(conn && conn->handler->doing_getsock)
- return conn->handler->doing_getsock(conn, socks, numsocks);
- return GETSOCK_BLANK;
-}
-
-/*
- * We are doing protocol-specific connecting and this is being called over and
- * over from the multi interface until the connection phase is done on
- * protocol layer.
- */
-
-CURLcode Curl_protocol_connecting(struct connectdata *conn,
- bool *done)
-{
- CURLcode result = CURLE_OK;
-
- if(conn && conn->handler->connecting) {
- *done = FALSE;
- result = conn->handler->connecting(conn, done);
- }
- else
- *done = TRUE;
-
- return result;
-}
-
-/*
- * We are DOING this is being called over and over from the multi interface
- * until the DOING phase is done on protocol layer.
- */
-
-CURLcode Curl_protocol_doing(struct connectdata *conn, bool *done)
-{
- CURLcode result = CURLE_OK;
-
- if(conn && conn->handler->doing) {
- *done = FALSE;
- result = conn->handler->doing(conn, done);
- }
- else
- *done = TRUE;
-
- return result;
-}
-
-/*
- * We have discovered that the TCP connection has been successful, we can now
- * proceed with some action.
- *
- */
-CURLcode Curl_protocol_connect(struct connectdata *conn,
- bool *protocol_done)
-{
- CURLcode result = CURLE_OK;
-
- *protocol_done = FALSE;
-
- if(conn->bits.tcpconnect[FIRSTSOCKET] && conn->bits.protoconnstart) {
- /* We already are connected, get back. This may happen when the connect
- worked fine in the first call, like when we connect to a local server
- or proxy. Note that we don't know if the protocol is actually done.
-
- Unless this protocol doesn't have any protocol-connect callback, as
- then we know we're done. */
- if(!conn->handler->connecting)
- *protocol_done = TRUE;
-
- return CURLE_OK;
- }
-
- if(!conn->bits.protoconnstart) {
-
- result = Curl_proxy_connect(conn, FIRSTSOCKET);
- if(result)
- return result;
-
- if(CONNECT_FIRSTSOCKET_PROXY_SSL())
- /* wait for HTTPS proxy SSL initialization to complete */
- return CURLE_OK;
-
- if(conn->bits.tunnel_proxy && conn->bits.httpproxy &&
- Curl_connect_ongoing(conn))
- /* when using an HTTP tunnel proxy, await complete tunnel establishment
- before proceeding further. Return CURLE_OK so we'll be called again */
- return CURLE_OK;
-
- if(conn->handler->connect_it) {
- /* is there a protocol-specific connect() procedure? */
-
- /* Call the protocol-specific connect function */
- result = conn->handler->connect_it(conn, protocol_done);
- }
- else
- *protocol_done = TRUE;
-
- /* it has started, possibly even completed but that knowledge isn't stored
- in this bit! */
- if(!result)
- conn->bits.protoconnstart = TRUE;
- }
-
- return result; /* pass back status */
-}
-
/*
* Helpers for IDNA conversions.
*/
@@ -1774,6 +1602,7 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
conn->proxy_ssl_config.verifyhost = data->set.proxy_ssl.primary.verifyhost;
conn->ip_version = data->set.ipver;
conn->bits.connect_only = data->set.connect_only;
+ conn->transport = TRNSPRT_TCP; /* most of them are TCP streams */
#if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
defined(NTLM_WB_ENABLED)
@@ -2110,7 +1939,6 @@ static CURLcode setup_connection_internals(struct connectdata *conn)
{
const struct Curl_handler * p;
CURLcode result;
- conn->socktype = SOCK_STREAM; /* most of them are TCP streams */
/* Perform setup complement if some. */
p = conn->handler;
@@ -2860,8 +2688,7 @@ static CURLcode override_login(struct Curl_easy *data,
&netrc_user_changed, &netrc_passwd_changed,
data->set.str[STRING_NETRC_FILE]);
if(ret > 0) {
- infof(data, "Couldn't find host %s in the "
- DOT_CHAR "netrc file; using defaults\n",
+ infof(data, "Couldn't find host %s in the .netrc file; using defaults\n",
conn->host.name);
}
else if(ret < 0) {
@@ -3158,26 +2985,65 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
if(data->asi && !host && (port == -1) &&
(conn->handler->protocol == CURLPROTO_HTTPS)) {
/* no connect_to match, try alt-svc! */
- const char *nhost;
- int nport;
- enum alpnid nalpnid;
+ enum alpnid srcalpnid;
bool hit;
+ struct altsvc *as;
+ const int allowed_versions = ( ALPN_h1
+#ifdef USE_NGHTTP2
+ | ALPN_h2
+#endif
+#ifdef ENABLE_QUIC
+ | ALPN_h3
+#endif
+ ) & data->asi->flags;
+
host = conn->host.rawalloc;
+#ifdef USE_NGHTTP2
+ /* with h2 support, check that first */
+ srcalpnid = ALPN_h2;
hit = Curl_altsvc_lookup(data->asi,
- ALPN_h1, host, conn->remote_port, /* from */
- &nalpnid, &nhost, &nport /* to */);
+ srcalpnid, host, conn->remote_port, /* from */
+ &as /* to */,
+ allowed_versions);
+ if(!hit)
+#endif
+ {
+ srcalpnid = ALPN_h1;
+ hit = Curl_altsvc_lookup(data->asi,
+ srcalpnid, host, conn->remote_port, /* from */
+ &as /* to */,
+ allowed_versions);
+ }
if(hit) {
- char *hostd = strdup((char *)nhost);
+ char *hostd = strdup((char *)as->dst.host);
if(!hostd)
return CURLE_OUT_OF_MEMORY;
conn->conn_to_host.rawalloc = hostd;
conn->conn_to_host.name = hostd;
conn->bits.conn_to_host = TRUE;
- conn->conn_to_port = nport;
+ conn->conn_to_port = as->dst.port;
conn->bits.conn_to_port = TRUE;
+ conn->bits.altused = TRUE;
infof(data, "Alt-svc connecting from [%s]%s:%d to [%s]%s:%d\n",
- Curl_alpnid2str(ALPN_h1), host, conn->remote_port,
- Curl_alpnid2str(nalpnid), hostd, nport);
+ Curl_alpnid2str(srcalpnid), host, conn->remote_port,
+ Curl_alpnid2str(as->dst.alpnid), hostd, as->dst.port);
+ if(srcalpnid != as->dst.alpnid) {
+ /* protocol version switch */
+ switch(as->dst.alpnid) {
+ case ALPN_h1:
+ conn->httpversion = 11;
+ break;
+ case ALPN_h2:
+ conn->httpversion = 20;
+ break;
+ case ALPN_h3:
+ conn->transport = TRNSPRT_QUIC;
+ conn->httpversion = 30;
+ break;
+ default: /* shouldn't be possible */
+ break;
+ }
+ }
}
}
#endif
@@ -3464,6 +3330,14 @@ static CURLcode create_conn(struct Curl_easy *data,
}
}
+ if(data->set.str[STRING_SASL_AUTHZID]) {
+ conn->sasl_authzid = strdup(data->set.str[STRING_SASL_AUTHZID]);
+ if(!conn->sasl_authzid) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto out;
+ }
+ }
+
#ifdef USE_UNIX_SOCKETS
if(data->set.str[STRING_UNIX_SOCKET_PATH]) {
conn->unix_domain_socket = strdup(data->set.str[STRING_UNIX_SOCKET_PATH]);
@@ -4162,34 +4036,3 @@ static unsigned int get_protocol_family(unsigned int protocol)
return family;
}
-
-
-/*
- * Wrapper to call functions in Curl_conncache_foreach()
- *
- * Returns always 0.
- */
-static int conn_upkeep(struct connectdata *conn,
- void *param)
-{
- /* Param is unused. */
- (void)param;
-
- if(conn->handler->connection_check) {
- /* Do a protocol-specific keepalive check on the connection. */
- conn->handler->connection_check(conn, CONNCHECK_KEEPALIVE);
- }
-
- return 0; /* continue iteration */
-}
-
-CURLcode Curl_upkeep(struct conncache *conn_cache,
- void *data)
-{
- /* Loop over every connection and make connection alive. */
- Curl_conncache_foreach(data,
- conn_cache,
- data,
- conn_upkeep);
- return CURLE_OK;
-}
diff --git a/lib/url.h b/lib/url.h
index 7c87432c..f4d611ad 100644
--- a/lib/url.h
+++ b/lib/url.h
@@ -53,23 +53,12 @@ CURLcode Curl_close(struct Curl_easy *data); /* opposite of curl_open() */
CURLcode Curl_connect(struct Curl_easy *, bool *async, bool *protocol_connect);
CURLcode Curl_disconnect(struct Curl_easy *data,
struct connectdata *, bool dead_connection);
-CURLcode Curl_protocol_connect(struct connectdata *conn, bool *done);
-CURLcode Curl_protocol_connecting(struct connectdata *conn, bool *done);
-CURLcode Curl_protocol_doing(struct connectdata *conn, bool *done);
CURLcode Curl_setup_conn(struct connectdata *conn,
bool *protocol_done);
void Curl_free_request_state(struct Curl_easy *data);
-
-int Curl_protocol_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
-int Curl_doing_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
CURLcode Curl_parse_login_details(const char *login, const size_t len,
char **userptr, char **passwdptr,
char **optionsptr);
-CURLcode Curl_upkeep(struct conncache *conn_cache, void *data);
const struct Curl_handler *Curl_builtin_scheme(const char *scheme);
@@ -77,8 +66,6 @@ const struct Curl_handler *Curl_builtin_scheme(const char *scheme);
#define CURL_DEFAULT_HTTPS_PROXY_PORT 443 /* default https proxy port unless
specified */
-CURLcode Curl_connected_proxy(struct connectdata *conn, int sockindex);
-
#ifdef CURL_DISABLE_VERBOSE_STRINGS
#define Curl_verboseconnect(x) Curl_nop_stmt
#else
diff --git a/lib/urlapi.c b/lib/urlapi.c
index d07e4f5d..a0ee331d 100644
--- a/lib/urlapi.c
+++ b/lib/urlapi.c
@@ -29,6 +29,7 @@
#include "url.h"
#include "escape.h"
#include "curl_ctype.h"
+#include "inet_pton.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
@@ -591,20 +592,22 @@ static CURLUcode junkscan(char *part)
static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
{
- const char *l = NULL; /* accepted characters */
size_t len;
size_t hlen = strlen(hostname);
if(hostname[0] == '[') {
+ char dest[16]; /* fits a binary IPv6 address */
+ const char *l = "0123456789abcdefABCDEF:.";
hostname++;
- l = "0123456789abcdefABCDEF::.";
hlen -= 2;
- }
- if(l) {
+ if(hostname[hlen] != ']')
+ return CURLUE_MALFORMED_INPUT;
+
/* only valid letters are ok */
len = strspn(hostname, l);
if(hlen != len) {
+ hlen = len;
if(hostname[len] == '%') {
/* this could now be '%[zone id]' */
char zoneid[16];
@@ -628,6 +631,12 @@ static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
return CURLUE_MALFORMED_INPUT;
/* hostname is fine */
}
+#ifdef ENABLE_IPV6
+ hostname[hlen] = 0; /* end the address there */
+ if(1 != Curl_inet_pton(AF_INET6, hostname, dest))
+ return CURLUE_MALFORMED_INPUT;
+ hostname[hlen] = ']'; /* restore ending bracket */
+#endif
}
else {
/* letters from the second string is not ok */
diff --git a/lib/urldata.h b/lib/urldata.h
index fdc185b2..acc1fd1b 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -129,6 +129,7 @@ typedef ssize_t (Curl_recv)(struct connectdata *conn, /* connection data */
#include "smb.h"
#include "wildcard.h"
#include "multihandle.h"
+#include "quic.h"
#ifdef HAVE_GSSAPI
# ifdef HAVE_GSSGNU
@@ -404,6 +405,7 @@ struct ConnectBits {
the first time on the first connect function call */
bit close:1; /* if set, we close the connection after this request */
bit reuse:1; /* if set, this is a re-used connection */
+ bit altused:1; /* this is an alt-svc "redirect" */
bit conn_to_host:1; /* if set, this connection has a "connect to host"
that overrides the host in the URL */
bit conn_to_port:1; /* if set, this connection has a "connect to port"
@@ -663,27 +665,23 @@ struct Curl_handler {
/* Called from the multi interface during the PROTOCONNECT phase, and it
should then return a proper fd set */
int (*proto_getsock)(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
/* Called from the multi interface during the DOING phase, and it should
then return a proper fd set */
int (*doing_getsock)(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
/* Called from the multi interface during the DO_MORE phase, and it should
then return a proper fd set */
int (*domore_getsock)(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
/* Called from the multi interface during the DO_DONE, PERFORM and
WAITPERFORM phases, and it should then return a proper fd set. Not setting
this will make libcurl use the generic default one. */
int (*perform_getsock)(const struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks);
+ curl_socket_t *socks);
/* This function *MAY* be set to a protocol-dependent function that is run
* by the curl_disconnect(), as a step in the disconnection. If the handler
@@ -782,6 +780,8 @@ struct http_connect_state {
bit close_connection:1;
};
+struct ldapconninfo;
+
/*
* The connectdata struct contains all fields and variables that should be
* unique for an entire connection.
@@ -831,7 +831,16 @@ struct connectdata {
unsigned int scope_id; /* Scope id for IPv6 */
- int socktype; /* SOCK_STREAM or SOCK_DGRAM */
+ enum {
+ TRNSPRT_TCP = 3,
+ TRNSPRT_UDP = 4,
+ TRNSPRT_QUIC = 5
+ } transport;
+
+#ifdef ENABLE_QUIC
+ struct quicsocket hequic[2]; /* two, for happy eyeballs! */
+ struct quicsocket *quic;
+#endif
struct hostname host;
char *hostname_resolve; /* host name to resolve to address, allocated */
@@ -870,7 +879,8 @@ struct connectdata {
char *passwd; /* password string, allocated */
char *options; /* options string, allocated */
- char *oauth_bearer; /* bearer token for OAuth 2.0, allocated */
+ char *oauth_bearer; /* bearer token for OAuth 2.0, allocated */
+ char *sasl_authzid; /* authorisation identity string, allocated */
int httpversion; /* the HTTP version*10 reported by the server */
int rtspversion; /* the RTSP version*10 reported by the server */
@@ -904,8 +914,8 @@ struct connectdata {
struct curltime connecttime;
/* The two fields below get set in Curl_connecthost */
int num_addr; /* number of addresses to try to connect to */
- time_t timeoutms_per_addr; /* how long time in milliseconds to spend on
- trying to connect to each IP address */
+ timediff_t timeoutms_per_addr; /* how long time in milliseconds to spend on
+ trying to connect to each IP address */
const struct Curl_handler *handler; /* Connection's protocol handler */
const struct Curl_handler *given; /* The protocol first given */
@@ -1010,7 +1020,8 @@ struct connectdata {
struct smtp_conn smtpc;
struct rtsp_conn rtspc;
struct smb_conn smbc;
- void *generic; /* RTMP and LDAP use this */
+ void *rtmp;
+ struct ldapconninfo *ldapc;
} proto;
int cselect_bits; /* bitmask of socket events */
@@ -1065,6 +1076,7 @@ struct PureInfo {
long numconnects; /* how many new connection did libcurl created */
char *contenttype; /* the content type of the object */
char *wouldredirect; /* URL this would've been redirected to if asked to */
+ curl_off_t retry_after; /* info from Retry-After: header */
/* PureInfo members 'conn_primary_ip', 'conn_primary_port', 'conn_local_ip'
and, 'conn_local_port' are copied over from the connectdata struct in
@@ -1084,7 +1096,6 @@ struct PureInfo {
OpenSSL, GnuTLS, Schannel, NSS and GSKit
builds. Asked for with CURLOPT_CERTINFO
/ CURLINFO_CERTINFO */
-
bit timecond:1; /* set to TRUE if the time condition didn't match, which
thus made the document NOT get fetched */
};
@@ -1103,17 +1114,17 @@ struct Progress {
int width; /* screen width at download start */
int flags; /* see progress.h */
- time_t timespent;
+ timediff_t timespent;
curl_off_t dlspeed;
curl_off_t ulspeed;
- time_t t_nslookup;
- time_t t_connect;
- time_t t_appconnect;
- time_t t_pretransfer;
- time_t t_starttransfer;
- time_t t_redirect;
+ timediff_t t_nslookup;
+ timediff_t t_connect;
+ timediff_t t_appconnect;
+ timediff_t t_pretransfer;
+ timediff_t t_starttransfer;
+ timediff_t t_redirect;
struct curltime start;
struct curltime t_startsingle;
@@ -1221,6 +1232,7 @@ typedef enum {
EXPIRE_SPEEDCHECK,
EXPIRE_TIMEOUT,
EXPIRE_TOOFAST,
+ EXPIRE_QUIC,
EXPIRE_LAST /* not an actual timer, used as a marker only */
} expire_id;
@@ -1493,6 +1505,10 @@ enum dupstring {
#ifdef USE_ALTSVC
STRING_ALTSVC, /* CURLOPT_ALTSVC */
#endif
+ STRING_SASL_AUTHZID, /* CURLOPT_SASL_AUTHZID */
+#ifndef CURL_DISABLE_PROXY
+ STRING_TEMP_URL, /* temp URL storage for proxy use */
+#endif
/* -- end of zero-terminated strings -- */
STRING_LASTZEROTERMINATED,
diff --git a/lib/vauth/digest_sspi.c b/lib/vauth/digest_sspi.c
index fe8093e8..a1090568 100644
--- a/lib/vauth/digest_sspi.c
+++ b/lib/vauth/digest_sspi.c
@@ -61,6 +61,11 @@ bool Curl_auth_is_digest_supported(void)
status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_DIGEST),
&SecurityPackage);
+ /* Release the package buffer as it is not required anymore */
+ if(status == SEC_E_OK) {
+ s_pSecFn->FreeContextBuffer(SecurityPackage);
+ }
+
return (status == SEC_E_OK ? TRUE : FALSE);
}
@@ -220,7 +225,10 @@ CURLcode Curl_auth_create_digest_md5_message(struct Curl_easy *data,
free(output_token);
free(input_token);
- return CURLE_RECV_ERROR;
+ if(status == SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
/* Base64 encode the response */
@@ -607,7 +615,10 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data,
Curl_safefree(digest->http_context);
- return CURLE_OUT_OF_MEMORY;
+ if(status == SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
output_token_len = resp_buf.cbBuffer;
diff --git a/lib/vauth/krb5_gssapi.c b/lib/vauth/krb5_gssapi.c
index ea0a5f18..95bab0e2 100644
--- a/lib/vauth/krb5_gssapi.c
+++ b/lib/vauth/krb5_gssapi.c
@@ -121,7 +121,7 @@ CURLcode Curl_auth_create_gssapi_user_message(struct Curl_easy *data,
free(spn);
- return CURLE_OUT_OF_MEMORY;
+ return CURLE_AUTH_ERROR;
}
free(spn);
@@ -168,7 +168,7 @@ CURLcode Curl_auth_create_gssapi_user_message(struct Curl_easy *data,
Curl_gss_log_error(data, "gss_init_sec_context() failed: ",
major_status, minor_status);
- return CURLE_RECV_ERROR;
+ return CURLE_AUTH_ERROR;
}
if(output_token.value && output_token.length) {
@@ -252,7 +252,7 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
free(chlg);
- return CURLE_OUT_OF_MEMORY;
+ return CURLE_AUTH_ERROR;
}
/* Convert the username from internal format to a displayable token */
@@ -264,7 +264,7 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
free(chlg);
- return CURLE_OUT_OF_MEMORY;
+ return CURLE_AUTH_ERROR;
}
/* Setup the challenge "input" security buffer */
@@ -355,7 +355,7 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
free(message);
- return CURLE_OUT_OF_MEMORY;
+ return CURLE_AUTH_ERROR;
}
/* Base64 encode the response */
diff --git a/lib/vauth/krb5_sspi.c b/lib/vauth/krb5_sspi.c
index 1f6e462b..98041d91 100644
--- a/lib/vauth/krb5_sspi.c
+++ b/lib/vauth/krb5_sspi.c
@@ -58,6 +58,11 @@ bool Curl_auth_is_gssapi_supported(void)
TEXT(SP_NAME_KERBEROS),
&SecurityPackage);
+ /* Release the package buffer as it is not required anymore */
+ if(status == SEC_E_OK) {
+ s_pSecFn->FreeContextBuffer(SecurityPackage);
+ }
+
return (status == SEC_E_OK ? TRUE : FALSE);
}
@@ -217,8 +222,12 @@ CURLcode Curl_auth_create_gssapi_user_message(struct Curl_easy *data,
/* Free the decoded challenge as it is not required anymore */
free(chlg);
+ if(status == SEC_E_INSUFFICIENT_MEMORY) {
+ return CURLE_OUT_OF_MEMORY;
+ }
+
if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED) {
- return CURLE_RECV_ERROR;
+ return CURLE_AUTH_ERROR;
}
if(memcmp(&context, krb5->context, sizeof(context))) {
@@ -309,7 +318,10 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
if(status != SEC_E_OK) {
free(chlg);
- return CURLE_OUT_OF_MEMORY;
+ if(status == SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
/* Get the fully qualified username back from the context */
@@ -319,7 +331,10 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
if(status != SEC_E_OK) {
free(chlg);
- return CURLE_RECV_ERROR;
+ if(status == SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
/* Setup the "input" security buffer */
@@ -438,7 +453,10 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
free(message);
free(trailer);
- return CURLE_OUT_OF_MEMORY;
+ if(status == SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
/* Allocate the encryption (wrap) buffer */
diff --git a/lib/vauth/ntlm_sspi.c b/lib/vauth/ntlm_sspi.c
index 589cca16..cd6cb79c 100644
--- a/lib/vauth/ntlm_sspi.c
+++ b/lib/vauth/ntlm_sspi.c
@@ -56,6 +56,11 @@ bool Curl_auth_is_ntlm_supported(void)
status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NTLM),
&SecurityPackage);
+ /* Release the package buffer as it is not required anymore */
+ if(status == SEC_E_OK) {
+ s_pSecFn->FreeContextBuffer(SecurityPackage);
+ }
+
return (status == SEC_E_OK ? TRUE : FALSE);
}
@@ -169,8 +174,10 @@ CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
if(status == SEC_I_COMPLETE_NEEDED ||
status == SEC_I_COMPLETE_AND_CONTINUE)
s_pSecFn->CompleteAuthToken(ntlm->context, &type_1_desc);
+ else if(status == SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
else if(status != SEC_E_OK && status != SEC_I_CONTINUE_NEEDED)
- return CURLE_RECV_ERROR;
+ return CURLE_AUTH_ERROR;
/* Base64 encode the response */
return Curl_base64_encode(data, (char *) ntlm->output_token,
@@ -316,7 +323,10 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
infof(data, "NTLM handshake failure (type-3 message): Status=%x\n",
status);
- return CURLE_RECV_ERROR;
+ if(status == SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
/* Base64 encode the response */
diff --git a/lib/vauth/spnego_gssapi.c b/lib/vauth/spnego_gssapi.c
index 5d43e110..ed7ce029 100644
--- a/lib/vauth/spnego_gssapi.c
+++ b/lib/vauth/spnego_gssapi.c
@@ -121,7 +121,7 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
free(spn);
- return CURLE_OUT_OF_MEMORY;
+ return CURLE_AUTH_ERROR;
}
free(spn);
@@ -170,14 +170,14 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
Curl_gss_log_error(data, "gss_init_sec_context() failed: ",
major_status, minor_status);
- return CURLE_LOGIN_DENIED;
+ return CURLE_AUTH_ERROR;
}
if(!output_token.value || !output_token.length) {
if(output_token.value)
gss_release_buffer(&unused_status, &output_token);
- return CURLE_OUT_OF_MEMORY;
+ return CURLE_AUTH_ERROR;
}
/* Free previous token */
diff --git a/lib/vauth/spnego_sspi.c b/lib/vauth/spnego_sspi.c
index 4b21cc76..b9c2cf7d 100644
--- a/lib/vauth/spnego_sspi.c
+++ b/lib/vauth/spnego_sspi.c
@@ -59,6 +59,12 @@ bool Curl_auth_is_spnego_supported(void)
TEXT(SP_NAME_NEGOTIATE),
&SecurityPackage);
+ /* Release the package buffer as it is not required anymore */
+ if(status == SEC_E_OK) {
+ s_pSecFn->FreeContextBuffer(SecurityPackage);
+ }
+
+
return (status == SEC_E_OK ? TRUE : FALSE);
}
@@ -165,7 +171,7 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
nego->p_identity, NULL, NULL,
nego->credentials, &expiry);
if(nego->status != SEC_E_OK)
- return CURLE_LOGIN_DENIED;
+ return CURLE_AUTH_ERROR;
/* Allocate our new context handle */
nego->context = calloc(1, sizeof(CtxtHandle));
@@ -251,14 +257,25 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
char buffer[STRERROR_LEN];
failf(data, "InitializeSecurityContext failed: %s",
Curl_sspi_strerror(nego->status, buffer, sizeof(buffer)));
- return CURLE_OUT_OF_MEMORY;
+
+ if(nego->status == (DWORD)SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
if(nego->status == SEC_I_COMPLETE_NEEDED ||
nego->status == SEC_I_COMPLETE_AND_CONTINUE) {
nego->status = s_pSecFn->CompleteAuthToken(nego->context, &resp_desc);
if(GSS_ERROR(nego->status)) {
- return CURLE_RECV_ERROR;
+ char buffer[STRERROR_LEN];
+ failf(data, "CompleteAuthToken failed: %s",
+ Curl_sspi_strerror(nego->status, buffer, sizeof(buffer)));
+
+ if(nego->status == (DWORD)SEC_E_INSUFFICIENT_MEMORY)
+ return CURLE_OUT_OF_MEMORY;
+
+ return CURLE_AUTH_ERROR;
}
}
diff --git a/lib/version.c b/lib/version.c
index 14b0531d..ae2b09d3 100644
--- a/lib/version.c
+++ b/lib/version.c
@@ -27,6 +27,7 @@
#include "vtls/vtls.h"
#include "http2.h"
#include "ssh.h"
+#include "quic.h"
#include "curl_printf.h"
#ifdef USE_ARES
@@ -53,18 +54,6 @@
#include <librtmp/rtmp.h>
#endif
-#ifdef USE_LIBSSH2
-#include <libssh2.h>
-#endif
-
-#ifdef HAVE_LIBSSH2_VERSION
-/* get it run-time if possible */
-#define CURL_LIBSSH2_VERSION libssh2_version(0)
-#else
-/* use build-time if run-time not possible */
-#define CURL_LIBSSH2_VERSION LIBSSH2_VERSION
-#endif
-
#ifdef HAVE_ZLIB_H
#include <zlib.h>
#ifdef __SYMBIAN32__
@@ -102,7 +91,7 @@ static size_t brotli_version(char *buf, size_t bufsz)
char *curl_version(void)
{
static bool initialized;
- static char version[200];
+ static char version[250];
char *ptr = version;
size_t len;
size_t left = sizeof(version);
@@ -172,18 +161,22 @@ char *curl_version(void)
left -= len;
ptr += len;
#endif
-#ifdef USE_LIBSSH2
- len = msnprintf(ptr, left, " libssh2/%s", CURL_LIBSSH2_VERSION);
+#ifdef USE_SSH
+ if(left) {
+ *ptr++=' ';
+ left--;
+ }
+ len = Curl_ssh_version(ptr, left);
left -= len;
ptr += len;
#endif
-#ifdef USE_LIBSSH
- len = msnprintf(ptr, left, " libssh/%s", CURL_LIBSSH_VERSION);
+#ifdef USE_NGHTTP2
+ len = Curl_http2_ver(ptr, left);
left -= len;
ptr += len;
#endif
-#ifdef USE_NGHTTP2
- len = Curl_http2_ver(ptr, left);
+#ifdef ENABLE_QUIC
+ len = Curl_quic_ver(ptr, left);
left -= len;
ptr += len;
#endif
@@ -358,6 +351,9 @@ static curl_version_info_data version_info = {
#if defined(USE_NGHTTP2)
| CURL_VERSION_HTTP2
#endif
+#if defined(ENABLE_QUIC)
+ | CURL_VERSION_HTTP3
+#endif
#if defined(USE_UNIX_SOCKETS)
| CURL_VERSION_UNIX_SOCKETS
#endif
@@ -385,6 +381,9 @@ static curl_version_info_data version_info = {
NULL, /* ssh lib version */
0, /* brotli_ver_num */
NULL, /* brotli version */
+ 0, /* nghttp2 version number */
+ NULL, /* nghttp2 version string */
+ NULL /* quic library string */
};
curl_version_info_data *curl_version_info(CURLversion stamp)
@@ -446,11 +445,8 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
#endif /* _LIBICONV_VERSION */
#endif
-#if defined(USE_LIBSSH2)
- msnprintf(ssh_buffer, sizeof(ssh_buffer), "libssh2/%s", LIBSSH2_VERSION);
- version_info.libssh_version = ssh_buffer;
-#elif defined(USE_LIBSSH)
- msnprintf(ssh_buffer, sizeof(ssh_buffer), "libssh/%s", CURL_LIBSSH_VERSION);
+#if defined(USE_SSH)
+ Curl_ssh_version(ssh_buffer, sizeof(ssh_buffer));
version_info.libssh_version = ssh_buffer;
#endif
@@ -460,6 +456,22 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
version_info.brotli_version = brotli_buffer;
#endif
+#ifdef USE_NGHTTP2
+ {
+ nghttp2_info *h2 = nghttp2_version(0);
+ version_info.nghttp2_ver_num = h2->version_num;
+ version_info.nghttp2_version = h2->version_str;
+ }
+#endif
+
+#ifdef ENABLE_QUIC
+ {
+ static char quicbuffer[80];
+ Curl_quic_ver(quicbuffer, sizeof(quicbuffer));
+ version_info.quic_version = quicbuffer;
+ }
+#endif
+
(void)stamp; /* avoid compiler warnings, we don't use this */
initialized = true;
diff --git a/lib/vquic/ngtcp2.c b/lib/vquic/ngtcp2.c
new file mode 100644
index 00000000..6b3d53ee
--- /dev/null
+++ b/lib/vquic/ngtcp2.c
@@ -0,0 +1,1600 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_NGTCP2
+#include <ngtcp2/ngtcp2.h>
+#include <ngtcp2/ngtcp2_crypto.h>
+#include <nghttp3/nghttp3.h>
+#include <openssl/err.h>
+#include "urldata.h"
+#include "sendf.h"
+#include "strdup.h"
+#include "rand.h"
+#include "ngtcp2.h"
+#include "multiif.h"
+#include "strcase.h"
+#include "connect.h"
+#include "strerror.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/* #define DEBUG_NGTCP2 */
+#define DEBUG_HTTP3
+#ifdef DEBUG_HTTP3
+#define H3BUGF(x) x
+#else
+#define H3BUGF(x) do { } WHILE_FALSE
+#endif
+
+/*
+ * This holds outgoing HTTP/3 stream data that is used by nghttp3 until acked.
+ * It is used as a circular buffer. Add new bytes at the end until it reaches
+ * the far end, then start over at index 0 again.
+ */
+
+#define H3_SEND_SIZE (20*1024)
+struct h3out {
+ uint8_t buf[H3_SEND_SIZE];
+ size_t used; /* number of bytes used in the buffer */
+ size_t windex; /* index in the buffer where to start writing the next
+ data block */
+};
+
+#define QUIC_MAX_STREAMS (256*1024)
+#define QUIC_MAX_DATA (1*1024*1024)
+#define QUIC_IDLE_TIMEOUT 60000 /* milliseconds */
+#define QUIC_CIPHERS \
+ "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_" \
+ "POLY1305_SHA256:TLS_AES_128_CCM_SHA256"
+#define QUIC_GROUPS "P-256:X25519:P-384:P-521"
+
+static CURLcode ng_process_ingress(struct connectdata *conn,
+ curl_socket_t sockfd,
+ struct quicsocket *qs);
+static CURLcode ng_flush_egress(struct connectdata *conn, int sockfd,
+ struct quicsocket *qs);
+static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
+ size_t datalen, void *user_data,
+ void *stream_user_data);
+
+static ngtcp2_tstamp timestamp(void)
+{
+ struct curltime ct = Curl_now();
+ return ct.tv_sec * NGTCP2_SECONDS + ct.tv_usec * NGTCP2_MICROSECONDS;
+}
+
+#ifdef DEBUG_NGTCP2
+static void quic_printf(void *user_data, const char *fmt, ...)
+{
+ va_list ap;
+ (void)user_data; /* TODO, use this to do infof() instead long-term */
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+#endif
+
+static ngtcp2_crypto_level
+quic_from_ossl_level(OSSL_ENCRYPTION_LEVEL ossl_level)
+{
+ switch(ossl_level) {
+ case ssl_encryption_initial:
+ return NGTCP2_CRYPTO_LEVEL_INITIAL;
+ case ssl_encryption_early_data:
+ return NGTCP2_CRYPTO_LEVEL_EARLY;
+ case ssl_encryption_handshake:
+ return NGTCP2_CRYPTO_LEVEL_HANDSHAKE;
+ case ssl_encryption_application:
+ return NGTCP2_CRYPTO_LEVEL_APP;
+ default:
+ assert(0);
+ }
+}
+
+static int setup_initial_crypto_context(struct quicsocket *qs)
+{
+ const ngtcp2_cid *dcid = ngtcp2_conn_get_dcid(qs->qconn);
+
+ if(ngtcp2_crypto_derive_and_install_initial_key(
+ qs->qconn, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, dcid,
+ NGTCP2_CRYPTO_SIDE_CLIENT) != 0)
+ return -1;
+
+ return 0;
+}
+
+static void quic_settings(ngtcp2_settings *s,
+ uint64_t stream_buffer_size)
+{
+ ngtcp2_settings_default(s);
+#ifdef DEBUG_NGTCP2
+ s->log_printf = quic_printf;
+#else
+ s->log_printf = NULL;
+#endif
+ s->initial_ts = timestamp();
+ s->max_stream_data_bidi_local = stream_buffer_size;
+ s->max_stream_data_bidi_remote = QUIC_MAX_STREAMS;
+ s->max_stream_data_uni = QUIC_MAX_STREAMS;
+ s->max_data = QUIC_MAX_DATA;
+ s->max_streams_bidi = 1;
+ s->max_streams_uni = 3;
+ s->idle_timeout = QUIC_IDLE_TIMEOUT;
+}
+
+static FILE *keylog_file; /* not thread-safe */
+static void keylog_callback(const SSL *ssl, const char *line)
+{
+ (void)ssl;
+ fputs(line, keylog_file);
+ fputc('\n', keylog_file);
+ fflush(keylog_file);
+}
+
+static int init_ngh3_conn(struct quicsocket *qs);
+
+static int quic_set_encryption_secrets(SSL *ssl,
+ OSSL_ENCRYPTION_LEVEL ossl_level,
+ const uint8_t *rx_secret,
+ const uint8_t *tx_secret,
+ size_t secretlen)
+{
+ struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
+ int level = quic_from_ossl_level(ossl_level);
+
+ if(ngtcp2_crypto_derive_and_install_key(
+ qs->qconn, ssl, NULL, NULL, NULL, NULL, NULL, NULL, level, rx_secret,
+ tx_secret, secretlen, NGTCP2_CRYPTO_SIDE_CLIENT) != 0)
+ return 0;
+
+ if(level == NGTCP2_CRYPTO_LEVEL_APP && init_ngh3_conn(qs) != CURLE_OK)
+ return 0;
+
+ return 1;
+}
+
+static int quic_add_handshake_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,
+ const uint8_t *data, size_t len)
+{
+ struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
+ struct quic_handshake *crypto_data;
+ ngtcp2_crypto_level level = quic_from_ossl_level(ossl_level);
+ int rv;
+
+ crypto_data = &qs->client_crypto_data[level];
+ if(crypto_data->buf == NULL) {
+ crypto_data->buf = malloc(4096);
+ crypto_data->alloclen = 4096;
+ /* TODO Explode if malloc failed */
+ }
+
+ /* TODO Just pretend that handshake does not grow more than 4KiB for
+ now */
+ assert(crypto_data->len + len <= crypto_data->alloclen);
+
+ memcpy(&crypto_data->buf[crypto_data->len], data, len);
+ crypto_data->len += len;
+
+ rv = ngtcp2_conn_submit_crypto_data(
+ qs->qconn, level, (uint8_t *)(&crypto_data->buf[crypto_data->len] - len),
+ len);
+ if(rv) {
+ fprintf(stderr, "write_client_handshake failed\n");
+ }
+ assert(0 == rv);
+
+ return 1;
+}
+
+static int quic_flush_flight(SSL *ssl)
+{
+ (void)ssl;
+ return 1;
+}
+
+static int quic_send_alert(SSL *ssl, enum ssl_encryption_level_t level,
+ uint8_t alert)
+{
+ struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
+ (void)level;
+
+ qs->tls_alert = alert;
+ return 1;
+}
+
+static SSL_QUIC_METHOD quic_method = {quic_set_encryption_secrets,
+ quic_add_handshake_data,
+ quic_flush_flight, quic_send_alert};
+
+static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
+{
+ SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method());
+ const char *keylog_filename;
+
+ SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_3_VERSION);
+ SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_3_VERSION);
+
+ SSL_CTX_set_default_verify_paths(ssl_ctx);
+
+ if(SSL_CTX_set_ciphersuites(ssl_ctx, QUIC_CIPHERS) != 1) {
+ failf(data, "SSL_CTX_set_ciphersuites: %s",
+ ERR_error_string(ERR_get_error(), NULL));
+ return NULL;
+ }
+
+ if(SSL_CTX_set1_groups_list(ssl_ctx, QUIC_GROUPS) != 1) {
+ failf(data, "SSL_CTX_set1_groups_list failed");
+ return NULL;
+ }
+
+ SSL_CTX_set_quic_method(ssl_ctx, &quic_method);
+
+ keylog_filename = getenv("SSLKEYLOGFILE");
+ if(keylog_filename) {
+ keylog_file = fopen(keylog_filename, "wb");
+ if(keylog_file) {
+ SSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
+ }
+ }
+
+ return ssl_ctx;
+}
+
+/** SSL callbacks ***/
+
+static int quic_init_ssl(struct quicsocket *qs)
+{
+ const uint8_t *alpn = NULL;
+ size_t alpnlen = 0;
+ /* this will need some attention when HTTPS proxy over QUIC get fixed */
+ const char * const hostname = qs->conn->host.name;
+
+ if(qs->ssl)
+ SSL_free(qs->ssl);
+
+ qs->ssl = SSL_new(qs->sslctx);
+
+ SSL_set_app_data(qs->ssl, qs);
+ SSL_set_connect_state(qs->ssl);
+
+ switch(qs->version) {
+#ifdef NGTCP2_PROTO_VER
+ case NGTCP2_PROTO_VER:
+ alpn = (const uint8_t *)NGTCP2_ALPN_H3;
+ alpnlen = sizeof(NGTCP2_ALPN_H3) - 1;
+ break;
+#endif
+ }
+ if(alpn)
+ SSL_set_alpn_protos(qs->ssl, alpn, (int)alpnlen);
+
+ /* set SNI */
+ SSL_set_tlsext_host_name(qs->ssl, hostname);
+ return 0;
+}
+
+static int cb_initial(ngtcp2_conn *quic, void *user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+
+ if(ngtcp2_crypto_read_write_crypto_data(
+ quic, qs->ssl, NGTCP2_CRYPTO_LEVEL_INITIAL, NULL, 0) != 0)
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+
+ return 0;
+}
+
+static int
+cb_recv_crypto_data(ngtcp2_conn *tconn, ngtcp2_crypto_level crypto_level,
+ uint64_t offset,
+ const uint8_t *data, size_t datalen,
+ void *user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ (void)offset;
+
+ if(ngtcp2_crypto_read_write_crypto_data(tconn, qs->ssl, crypto_level, data,
+ datalen) != 0)
+ return NGTCP2_ERR_CRYPTO;
+
+ return 0;
+}
+
+static int cb_handshake_completed(ngtcp2_conn *tconn, void *user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ (void)tconn;
+ infof(qs->conn->data, "QUIC handshake is completed\n");
+
+ return 0;
+}
+
+static int cb_recv_stream_data(ngtcp2_conn *tconn, int64_t stream_id,
+ int fin, uint64_t offset,
+ const uint8_t *buf, size_t buflen,
+ void *user_data, void *stream_user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ ssize_t nconsumed;
+ (void)offset;
+ (void)stream_user_data;
+
+ infof(qs->conn->data, "Received %ld bytes data on stream %u\n",
+ buflen, stream_id);
+
+ nconsumed =
+ nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin);
+ if(nconsumed < 0) {
+ failf(qs->conn->data, "nghttp3_conn_read_stream returned error: %s\n",
+ nghttp3_strerror((int)nconsumed));
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
+ ngtcp2_conn_extend_max_stream_offset(tconn, stream_id, nconsumed);
+ ngtcp2_conn_extend_max_offset(tconn, nconsumed);
+
+ return 0;
+}
+
+static int
+cb_acked_stream_data_offset(ngtcp2_conn *tconn, int64_t stream_id,
+ uint64_t offset, size_t datalen, void *user_data,
+ void *stream_user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ int rv;
+ (void)stream_id;
+ (void)tconn;
+ (void)offset;
+ (void)datalen;
+ (void)stream_user_data;
+
+ rv = nghttp3_conn_add_ack_offset(qs->h3conn, stream_id, datalen);
+ if(rv != 0) {
+ failf(qs->conn->data, "nghttp3_conn_add_ack_offset returned error: %s\n",
+ nghttp3_strerror(rv));
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
+ return 0;
+}
+
+static int cb_stream_close(ngtcp2_conn *tconn, int64_t stream_id,
+ uint64_t app_error_code,
+ void *user_data, void *stream_user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ int rv;
+ (void)tconn;
+ (void)stream_user_data;
+ /* stream is closed... */
+
+ rv = nghttp3_conn_close_stream(qs->h3conn, stream_id,
+ app_error_code);
+ if(rv != 0) {
+ failf(qs->conn->data, "nghttp3_conn_close_stream returned error: %s\n",
+ nghttp3_strerror(rv));
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
+ return 0;
+}
+
+static int cb_stream_reset(ngtcp2_conn *tconn, int64_t stream_id,
+ uint64_t final_size, uint64_t app_error_code,
+ void *user_data, void *stream_user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ int rv;
+ (void)tconn;
+ (void)final_size;
+ (void)app_error_code;
+ (void)stream_user_data;
+
+ rv = nghttp3_conn_reset_stream(qs->h3conn, stream_id);
+ if(rv != 0) {
+ failf(qs->conn->data, "nghttp3_conn_reset_stream returned error: %s\n",
+ nghttp3_strerror(rv));
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
+ return 0;
+}
+
+static int cb_recv_retry(ngtcp2_conn *tconn, const ngtcp2_pkt_hd *hd,
+ const ngtcp2_pkt_retry *retry, void *user_data)
+{
+ /* Re-generate handshake secrets here because connection ID might change. */
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ (void)tconn;
+ (void)hd;
+ (void)retry;
+
+ setup_initial_crypto_context(qs);
+
+ return 0;
+}
+
+static int cb_extend_max_local_streams_bidi(ngtcp2_conn *tconn,
+ uint64_t max_streams,
+ void *user_data)
+{
+ (void)tconn;
+ (void)max_streams;
+ (void)user_data;
+
+ return 0;
+}
+
+static int cb_extend_max_stream_data(ngtcp2_conn *tconn, int64_t stream_id,
+ uint64_t max_data, void *user_data,
+ void *stream_user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ int rv;
+ (void)tconn;
+ (void)max_data;
+ (void)stream_user_data;
+
+ rv = nghttp3_conn_unblock_stream(qs->h3conn, stream_id);
+ if(rv != 0) {
+ failf(qs->conn->data, "nghttp3_conn_unblock_stream returned error: %s\n",
+ nghttp3_strerror(rv));
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ }
+
+ return 0;
+}
+
+static int cb_get_new_connection_id(ngtcp2_conn *tconn, ngtcp2_cid *cid,
+ uint8_t *token, size_t cidlen,
+ void *user_data)
+{
+ struct quicsocket *qs = (struct quicsocket *)user_data;
+ CURLcode result;
+ (void)tconn;
+
+ result = Curl_rand(qs->conn->data, cid->data, cidlen);
+ if(result)
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+ cid->datalen = cidlen;
+
+ result = Curl_rand(qs->conn->data, token, NGTCP2_STATELESS_RESET_TOKENLEN);
+ if(result)
+ return NGTCP2_ERR_CALLBACK_FAILURE;
+
+ return 0;
+}
+
+static ngtcp2_conn_callbacks ng_callbacks = {
+ cb_initial,
+ NULL, /* recv_client_initial */
+ cb_recv_crypto_data,
+ cb_handshake_completed,
+ NULL, /* recv_version_negotiation */
+ ngtcp2_crypto_encrypt_cb,
+ ngtcp2_crypto_decrypt_cb,
+ ngtcp2_crypto_hp_mask_cb,
+ cb_recv_stream_data,
+ NULL, /* acked_crypto_offset */
+ cb_acked_stream_data_offset,
+ NULL, /* stream_open */
+ cb_stream_close,
+ NULL, /* recv_stateless_reset */
+ cb_recv_retry,
+ cb_extend_max_local_streams_bidi,
+ NULL, /* extend_max_local_streams_uni */
+ NULL, /* rand */
+ cb_get_new_connection_id,
+ NULL, /* remove_connection_id */
+ NULL, /* update_key */
+ NULL, /* path_validation */
+ NULL, /* select_preferred_addr */
+ cb_stream_reset,
+ NULL, /* extend_max_remote_streams_bidi */
+ NULL, /* extend_max_remote_streams_uni */
+ cb_extend_max_stream_data,
+};
+
+/*
+ * Might be called twice for happy eyeballs.
+ */
+CURLcode Curl_quic_connect(struct connectdata *conn,
+ curl_socket_t sockfd,
+ int sockindex,
+ const struct sockaddr *addr,
+ socklen_t addrlen)
+{
+ int rc;
+ int rv;
+ CURLcode result;
+ ngtcp2_path path; /* TODO: this must be initialized properly */
+ struct Curl_easy *data = conn->data;
+ struct quicsocket *qs = &conn->hequic[sockindex];
+ char ipbuf[40];
+ long port;
+ uint8_t paramsbuf[64];
+ ngtcp2_transport_params params;
+ ssize_t nwrite;
+
+ qs->conn = conn;
+
+ /* extract the used address as a string */
+ if(!Curl_addr2string((struct sockaddr*)addr, addrlen, ipbuf, &port)) {
+ char buffer[STRERROR_LEN];
+ failf(data, "ssrem inet_ntop() failed with errno %d: %s",
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+
+ infof(data, "Connect socket %d over QUIC to %s:%ld\n",
+ sockfd, ipbuf, port);
+
+ qs->version = NGTCP2_PROTO_VER;
+ qs->sslctx = quic_ssl_ctx(data);
+ if(!qs->sslctx)
+ return CURLE_FAILED_INIT; /* TODO: better return code */
+
+ if(quic_init_ssl(qs))
+ return CURLE_FAILED_INIT; /* TODO: better return code */
+
+ qs->dcid.datalen = NGTCP2_MAX_CIDLEN;
+ result = Curl_rand(data, qs->dcid.data, NGTCP2_MAX_CIDLEN);
+ if(result)
+ return result;
+
+ qs->scid.datalen = NGTCP2_MAX_CIDLEN;
+ result = Curl_rand(data, qs->scid.data, NGTCP2_MAX_CIDLEN);
+ if(result)
+ return result;
+
+ quic_settings(&qs->settings, data->set.buffer_size);
+
+ qs->local_addrlen = sizeof(qs->local_addr);
+ rv = getsockname(sockfd, (struct sockaddr *)&qs->local_addr,
+ &qs->local_addrlen);
+ if(rv == -1)
+ return CURLE_FAILED_INIT;
+
+ ngtcp2_addr_init(&path.local, (uint8_t *)&qs->local_addr, qs->local_addrlen,
+ NULL);
+ ngtcp2_addr_init(&path.remote, (uint8_t*)addr, addrlen, NULL);
+
+#ifdef NGTCP2_PROTO_VER
+#define QUICVER NGTCP2_PROTO_VER
+#else
+#error "unsupported ngtcp2 version"
+#endif
+ rc = ngtcp2_conn_client_new(&qs->qconn, &qs->dcid, &qs->scid, &path, QUICVER,
+ &ng_callbacks, &qs->settings, NULL, qs);
+ if(rc)
+ return CURLE_FAILED_INIT; /* TODO: create a QUIC error code */
+
+ ngtcp2_conn_get_local_transport_params(qs->qconn, &params);
+ nwrite = ngtcp2_encode_transport_params(
+ paramsbuf, sizeof(paramsbuf), NGTCP2_TRANSPORT_PARAMS_TYPE_CLIENT_HELLO,
+ &params);
+ if(nwrite < 0) {
+ fprintf(stderr, "ngtcp2_encode_transport_params: %s\n",
+ ngtcp2_strerror((int)nwrite));
+
+ return CURLE_FAILED_INIT;
+ }
+
+ if(!SSL_set_quic_transport_params(qs->ssl, paramsbuf, nwrite))
+ return CURLE_FAILED_INIT;
+
+ rc = setup_initial_crypto_context(qs);
+ if(rc)
+ return CURLE_FAILED_INIT; /* TODO: better return code */
+
+ return CURLE_OK;
+}
+
+/*
+ * Store ngtp2 version info in this buffer, Prefix with a space. Return total
+ * length written.
+ */
+int Curl_quic_ver(char *p, size_t len)
+{
+ ngtcp2_info *ng2 = ngtcp2_version(0);
+ nghttp3_info *ht3 = nghttp3_version(0);
+ return msnprintf(p, len, " ngtcp2/%s nghttp3/%s",
+ ng2->version_str, ht3->version_str);
+}
+
+static int ng_getsock(struct connectdata *conn, curl_socket_t *socks)
+{
+ struct SingleRequest *k = &conn->data->req;
+ int bitmap = GETSOCK_BLANK;
+
+ socks[0] = conn->sock[FIRSTSOCKET];
+
+ /* in a HTTP/2 connection we can basically always get a frame so we should
+ always be ready for one */
+ bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
+
+ /* we're still uploading or the HTTP/2 layer wants to send data */
+ if((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND)
+ bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
+
+ return bitmap;
+}
+
+static int ng_perform_getsock(const struct connectdata *conn,
+ curl_socket_t *socks)
+{
+ return ng_getsock((struct connectdata *)conn, socks);
+}
+
+static CURLcode ng_disconnect(struct connectdata *conn,
+ bool dead_connection)
+{
+ (void)conn;
+ (void)dead_connection;
+ return CURLE_OK;
+}
+
+static unsigned int ng_conncheck(struct connectdata *conn,
+ unsigned int checks_to_perform)
+{
+ (void)conn;
+ (void)checks_to_perform;
+ return CONNRESULT_NONE;
+}
+
+static const struct Curl_handler Curl_handler_http3 = {
+ "HTTPS", /* scheme */
+ ZERO_NULL, /* setup_connection */
+ Curl_http, /* do_it */
+ Curl_http_done, /* done */
+ ZERO_NULL, /* do_more */
+ ZERO_NULL, /* connect_it */
+ ZERO_NULL, /* connecting */
+ ZERO_NULL, /* doing */
+ ng_getsock, /* proto_getsock */
+ ng_getsock, /* doing_getsock */
+ ZERO_NULL, /* domore_getsock */
+ ng_perform_getsock, /* perform_getsock */
+ ng_disconnect, /* disconnect */
+ ZERO_NULL, /* readwrite */
+ ng_conncheck, /* connection_check */
+ PORT_HTTP, /* defport */
+ CURLPROTO_HTTPS, /* protocol */
+ PROTOPT_SSL | PROTOPT_STREAM /* flags */
+};
+
+static int cb_h3_stream_close(nghttp3_conn *conn, int64_t stream_id,
+ uint64_t app_error_code, void *user_data,
+ void *stream_user_data)
+{
+ struct Curl_easy *data = stream_user_data;
+ struct HTTP *stream = data->req.protop;
+ (void)conn;
+ (void)stream_id;
+ (void)app_error_code;
+ (void)user_data;
+ fprintf(stderr, "cb_h3_stream_close CALLED\n");
+
+ stream->closed = TRUE;
+ Curl_expire(data, 0, EXPIRE_QUIC);
+ return 0;
+}
+
+static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream_id,
+ const uint8_t *buf, size_t buflen,
+ void *user_data, void *stream_user_data)
+{
+ struct quicsocket *qs = user_data;
+ size_t ncopy;
+ struct Curl_easy *data = stream_user_data;
+ struct HTTP *stream = data->req.protop;
+ (void)conn;
+ fprintf(stderr, "cb_h3_recv_data CALLED with %d bytes\n", buflen);
+
+ /* TODO: this needs to be handled properly */
+ DEBUGASSERT(buflen <= stream->len);
+
+ ncopy = CURLMIN(stream->len, buflen);
+ memcpy(stream->mem, buf, ncopy);
+ stream->len -= ncopy;
+ stream->memlen += ncopy;
+#if 0 /* extra debugging of incoming h3 data */
+ fprintf(stderr, "!! Copies %zd bytes to %p (total %zd)\n",
+ ncopy, stream->mem, stream->memlen);
+ {
+ size_t i;
+ for(i = 0; i < ncopy; i++) {
+ fprintf(stderr, "!! data[%d]: %02x '%c'\n", i, buf[i], buf[i]);
+ }
+ }
+#endif
+ stream->mem += ncopy;
+
+ ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, buflen);
+ ngtcp2_conn_extend_max_offset(qs->qconn, buflen);
+
+ return 0;
+}
+
+static int cb_h3_deferred_consume(nghttp3_conn *conn, int64_t stream_id,
+ size_t consumed, void *user_data,
+ void *stream_user_data)
+{
+ struct quicsocket *qs = user_data;
+ (void)conn;
+ (void)stream_user_data;
+ fprintf(stderr, "cb_h3_deferred_consume CALLED\n");
+
+ ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, consumed);
+ ngtcp2_conn_extend_max_offset(qs->qconn, consumed);
+
+ return 0;
+}
+
+/* Decode HTTP status code. Returns -1 if no valid status code was
+ decoded. (duplicate from http2.c) */
+static int decode_status_code(const uint8_t *value, size_t len)
+{
+ int i;
+ int res;
+
+ if(len != 3) {
+ return -1;
+ }
+
+ res = 0;
+
+ for(i = 0; i < 3; ++i) {
+ char c = value[i];
+
+ if(c < '0' || c > '9') {
+ return -1;
+ }
+
+ res *= 10;
+ res += c - '0';
+ }
+
+ return res;
+}
+
+static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
+ void *user_data, void *stream_user_data)
+{
+ struct Curl_easy *data = stream_user_data;
+ struct HTTP *stream = data->req.protop;
+ (void)conn;
+ (void)stream_id;
+ (void)user_data;
+
+ if(stream->memlen >= 2) {
+ memcpy(stream->mem, "\r\n", 2);
+ stream->len -= 2;
+ stream->memlen += 2;
+ stream->mem += 2;
+ }
+ return 0;
+}
+
+static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
+ int32_t token, nghttp3_rcbuf *name,
+ nghttp3_rcbuf *value, uint8_t flags,
+ void *user_data, void *stream_user_data)
+{
+ nghttp3_vec h3name = nghttp3_rcbuf_get_buf(name);
+ nghttp3_vec h3val = nghttp3_rcbuf_get_buf(value);
+ struct Curl_easy *data = stream_user_data;
+ struct HTTP *stream = data->req.protop;
+ size_t ncopy;
+ (void)conn;
+ (void)stream_id;
+ (void)token;
+ (void)flags;
+ (void)user_data;
+
+ fprintf(stderr, "cb_h3_recv_header called!\n");
+
+ if(h3name.len == sizeof(":status") - 1 &&
+ !memcmp(":status", h3name.base, h3name.len)) {
+ int status = decode_status_code(h3val.base, h3val.len);
+ DEBUGASSERT(status != -1);
+ msnprintf(stream->mem, stream->len, "HTTP/3 %03d \r\n", status);
+ }
+ else {
+ /* store as a HTTP1-style header */
+ msnprintf(stream->mem, stream->len, "%.*s: %.*s\n",
+ h3name.len, h3name.base, h3val.len, h3val.base);
+ }
+
+ ncopy = strlen(stream->mem);
+ stream->len -= ncopy;
+ stream->memlen += ncopy;
+ stream->mem += ncopy;
+ return 0;
+}
+
+static int cb_h3_send_stop_sending(nghttp3_conn *conn, int64_t stream_id,
+ uint64_t app_error_code,
+ void *user_data,
+ void *stream_user_data)
+{
+ (void)conn;
+ (void)stream_id;
+ (void)app_error_code;
+ (void)user_data;
+ (void)stream_user_data;
+ fprintf(stderr, "cb_h3_send_stop_sending CALLED\n");
+ return 0;
+}
+
+static nghttp3_conn_callbacks ngh3_callbacks = {
+ cb_h3_acked_stream_data, /* acked_stream_data */
+ cb_h3_stream_close,
+ cb_h3_recv_data,
+ cb_h3_deferred_consume,
+ NULL, /* begin_headers */
+ cb_h3_recv_header,
+ cb_h3_end_headers,
+ NULL, /* begin_trailers */
+ cb_h3_recv_header,
+ NULL, /* end_trailers */
+ NULL, /* http_begin_push_promise */
+ NULL, /* http_recv_push_promise */
+ NULL, /* http_end_push_promise */
+ NULL, /* http_cancel_push */
+ cb_h3_send_stop_sending,
+ NULL, /* push_stream */
+ NULL, /* end_stream */
+};
+
+static int init_ngh3_conn(struct quicsocket *qs)
+{
+ CURLcode result;
+ int rc;
+ int64_t ctrl_stream_id, qpack_enc_stream_id, qpack_dec_stream_id;
+
+ if(ngtcp2_conn_get_max_local_streams_uni(qs->qconn) < 3) {
+ failf(qs->conn->data, "too few available QUIC streams");
+ return CURLE_FAILED_INIT;
+ }
+
+ nghttp3_conn_settings_default(&qs->h3settings);
+
+ rc = nghttp3_conn_client_new(&qs->h3conn,
+ &ngh3_callbacks,
+ &qs->h3settings,
+ nghttp3_mem_default(),
+ qs);
+ if(rc) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ rc = ngtcp2_conn_open_uni_stream(qs->qconn, &ctrl_stream_id, NULL);
+ if(rc) {
+ result = CURLE_FAILED_INIT;
+ goto fail;
+ }
+
+ rc = nghttp3_conn_bind_control_stream(qs->h3conn, ctrl_stream_id);
+ if(rc) {
+ result = CURLE_FAILED_INIT;
+ goto fail;
+ }
+
+ rc = ngtcp2_conn_open_uni_stream(qs->qconn, &qpack_enc_stream_id, NULL);
+ if(rc) {
+ result = CURLE_FAILED_INIT;
+ goto fail;
+ }
+
+ rc = ngtcp2_conn_open_uni_stream(qs->qconn, &qpack_dec_stream_id, NULL);
+ if(rc) {
+ result = CURLE_FAILED_INIT;
+ goto fail;
+ }
+
+ rc = nghttp3_conn_bind_qpack_streams(qs->h3conn, qpack_enc_stream_id,
+ qpack_dec_stream_id);
+ if(rc) {
+ result = CURLE_FAILED_INIT;
+ goto fail;
+ }
+
+ return CURLE_OK;
+ fail:
+
+ return result;
+}
+
+static Curl_recv ngh3_stream_recv;
+static Curl_send ngh3_stream_send;
+
+/* incoming data frames on the h3 stream */
+static ssize_t ngh3_stream_recv(struct connectdata *conn,
+ int sockindex,
+ char *buf,
+ size_t buffersize,
+ CURLcode *curlcode)
+{
+ curl_socket_t sockfd = conn->sock[sockindex];
+ struct HTTP *stream = conn->data->req.protop;
+ struct quicsocket *qs = conn->quic;
+
+ fprintf(stderr, "ngh3_stream_recv CALLED (easy %p, socket %d)\n",
+ conn->data, sockfd);
+
+ if(!stream->memlen) {
+ /* remember where to store incoming data for this stream and how big the
+ buffer is */
+ stream->mem = buf;
+ stream->len = buffersize;
+ }
+ /* else, there's data in the buffer already */
+
+ if(ng_process_ingress(conn, sockfd, qs)) {
+ *curlcode = CURLE_RECV_ERROR;
+ return -1;
+ }
+ if(ng_flush_egress(conn, sockfd, qs)) {
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+
+ if(stream->memlen) {
+ ssize_t memlen = stream->memlen;
+ /* data arrived */
+ *curlcode = CURLE_OK;
+ /* reset to allow more data to come */
+ stream->memlen = 0;
+ stream->mem = buf;
+ stream->len = buffersize;
+ H3BUGF(infof(conn->data, "!! ngh3_stream_recv returns %zd bytes at %p\n",
+ memlen, buf));
+ return memlen;
+ }
+
+ if(stream->closed) {
+ *curlcode = CURLE_OK;
+ return 0;
+ }
+
+ infof(conn->data, "ngh3_stream_recv returns 0 bytes and EAGAIN\n");
+ *curlcode = CURLE_AGAIN;
+ return -1;
+}
+
+/* this amount of data has now been acked on this stream */
+static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
+ size_t datalen, void *user_data,
+ void *stream_user_data)
+{
+ struct Curl_easy *data = stream_user_data;
+ struct HTTP *stream = data->req.protop;
+ (void)conn;
+ (void)stream_id;
+ (void)user_data;
+
+ if(!data->set.postfields) {
+ stream->h3out->used -= datalen;
+ fprintf(stderr, "cb_h3_acked_stream_data, %zd bytes, %zd left unacked\n",
+ datalen, stream->h3out->used);
+ DEBUGASSERT(stream->h3out->used < H3_SEND_SIZE);
+ }
+ return 0;
+}
+
+static int cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
+ const uint8_t **pdata,
+ size_t *pdatalen, uint32_t *pflags,
+ void *user_data, void *stream_user_data)
+{
+ struct Curl_easy *data = stream_user_data;
+ size_t nread;
+ struct HTTP *stream = data->req.protop;
+ (void)conn;
+ (void)stream_id;
+ (void)user_data;
+
+ if(data->set.postfields) {
+ *pdata = data->set.postfields;
+ *pdatalen = data->state.infilesize;
+ *pflags = NGHTTP3_DATA_FLAG_EOF;
+ return 0;
+ }
+
+ nread = CURLMIN(stream->upload_len, H3_SEND_SIZE - stream->h3out->used);
+ if(nread > 0) {
+ /* nghttp3 wants us to hold on to the data until it tells us it is okay to
+ delete it. Append the data at the end of the h3out buffer. Since we can
+ only return consecutive data, copy the amount that fits and the next
+ part comes in next invoke. */
+ struct h3out *out = stream->h3out;
+ if(nread + out->windex > H3_SEND_SIZE)
+ nread = H3_SEND_SIZE - out->windex;
+
+ memcpy(&out->buf[out->windex], stream->upload_mem, nread);
+ out->windex += nread;
+ out->used += nread;
+
+ /* that's the chunk we return to nghttp3 */
+ *pdata = &out->buf[out->windex];
+ *pdatalen = nread;
+
+ if(out->windex == H3_SEND_SIZE)
+ out->windex = 0; /* wrap */
+ stream->upload_mem += nread;
+ stream->upload_len -= nread;
+ if(data->state.infilesize != -1) {
+ stream->upload_left -= nread;
+ if(!stream->upload_left)
+ *pflags = NGHTTP3_DATA_FLAG_EOF;
+ }
+ fprintf(stderr, "cb_h3_readfunction %zd bytes%s (at %zd unacked)\n",
+ nread, *pflags == NGHTTP3_DATA_FLAG_EOF?" EOF":"",
+ out->used);
+ }
+ if(stream->upload_done && !stream->upload_len &&
+ (stream->upload_left <= 0)) {
+ H3BUGF(infof(data, "!!!!!!!!! cb_h3_readfunction sets EOF\n"));
+ *pdata = NULL;
+ *pdatalen = 0;
+ *pflags = NGHTTP3_DATA_FLAG_EOF;
+ }
+ else if(!nread) {
+ *pdatalen = 0;
+ return NGHTTP3_ERR_WOULDBLOCK;
+ }
+ return 0;
+}
+
+/* Index where :authority header field will appear in request header
+ field list. */
+#define AUTHORITY_DST_IDX 3
+
+static CURLcode http_request(struct connectdata *conn, const void *mem,
+ size_t len)
+{
+ struct HTTP *stream = conn->data->req.protop;
+ size_t nheader;
+ size_t i;
+ size_t authority_idx;
+ char *hdbuf = (char *)mem;
+ char *end, *line_end;
+ struct quicsocket *qs = conn->quic;
+ CURLcode result = CURLE_OK;
+ struct Curl_easy *data = conn->data;
+ nghttp3_nv *nva = NULL;
+ int64_t stream3_id;
+ int rc;
+ struct h3out *h3out = NULL;
+
+ rc = ngtcp2_conn_open_bidi_stream(qs->qconn, &stream3_id, NULL);
+ if(rc) {
+ failf(conn->data, "can get bidi streams");
+ result = CURLE_SEND_ERROR;
+ goto fail;
+ }
+
+ stream->stream3_id = stream3_id;
+ stream->h3req = TRUE; /* senf off! */
+
+ /* Calculate number of headers contained in [mem, mem + len). Assumes a
+ correctly generated HTTP header field block. */
+ nheader = 0;
+ for(i = 1; i < len; ++i) {
+ if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
+ ++nheader;
+ ++i;
+ }
+ }
+ if(nheader < 2)
+ goto fail;
+
+ /* We counted additional 2 \r\n in the first and last line. We need 3
+ new headers: :method, :path and :scheme. Therefore we need one
+ more space. */
+ nheader += 1;
+ nva = malloc(sizeof(nghttp3_nv) * nheader);
+ if(!nva) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ /* Extract :method, :path from request line
+ We do line endings with CRLF so checking for CR is enough */
+ line_end = memchr(hdbuf, '\r', len);
+ if(!line_end) {
+ result = CURLE_BAD_FUNCTION_ARGUMENT; /* internal error */
+ goto fail;
+ }
+
+ /* Method does not contain spaces */
+ end = memchr(hdbuf, ' ', line_end - hdbuf);
+ if(!end || end == hdbuf)
+ goto fail;
+ nva[0].name = (unsigned char *)":method";
+ nva[0].namelen = strlen((char *)nva[0].name);
+ nva[0].value = (unsigned char *)hdbuf;
+ nva[0].valuelen = (size_t)(end - hdbuf);
+ nva[0].flags = NGHTTP3_NV_FLAG_NONE;
+
+ hdbuf = end + 1;
+
+ /* Path may contain spaces so scan backwards */
+ end = NULL;
+ for(i = (size_t)(line_end - hdbuf); i; --i) {
+ if(hdbuf[i - 1] == ' ') {
+ end = &hdbuf[i - 1];
+ break;
+ }
+ }
+ if(!end || end == hdbuf)
+ goto fail;
+ nva[1].name = (unsigned char *)":path";
+ nva[1].namelen = strlen((char *)nva[1].name);
+ nva[1].value = (unsigned char *)hdbuf;
+ nva[1].valuelen = (size_t)(end - hdbuf);
+ nva[1].flags = NGHTTP3_NV_FLAG_NONE;
+
+ nva[2].name = (unsigned char *)":scheme";
+ nva[2].namelen = strlen((char *)nva[2].name);
+ if(conn->handler->flags & PROTOPT_SSL)
+ nva[2].value = (unsigned char *)"https";
+ else
+ nva[2].value = (unsigned char *)"http";
+ nva[2].valuelen = strlen((char *)nva[2].value);
+ nva[2].flags = NGHTTP3_NV_FLAG_NONE;
+
+
+ authority_idx = 0;
+ i = 3;
+ while(i < nheader) {
+ size_t hlen;
+
+ hdbuf = line_end + 2;
+
+ /* check for next CR, but only within the piece of data left in the given
+ buffer */
+ line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
+ if(!line_end || (line_end == hdbuf))
+ goto fail;
+
+ /* header continuation lines are not supported */
+ if(*hdbuf == ' ' || *hdbuf == '\t')
+ goto fail;
+
+ for(end = hdbuf; end < line_end && *end != ':'; ++end)
+ ;
+ if(end == hdbuf || end == line_end)
+ goto fail;
+ hlen = end - hdbuf;
+
+ if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
+ authority_idx = i;
+ nva[i].name = (unsigned char *)":authority";
+ nva[i].namelen = strlen((char *)nva[i].name);
+ }
+ else {
+ nva[i].name = (unsigned char *)hdbuf;
+ nva[i].namelen = (size_t)(end - hdbuf);
+ }
+ nva[i].flags = NGHTTP3_NV_FLAG_NONE;
+ hdbuf = end + 1;
+ while(*hdbuf == ' ' || *hdbuf == '\t')
+ ++hdbuf;
+ end = line_end;
+
+#if 0 /* This should probably go in more or less like this */
+ switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
+ end - hdbuf)) {
+ case HEADERINST_IGNORE:
+ /* skip header fields prohibited by HTTP/2 specification. */
+ --nheader;
+ continue;
+ case HEADERINST_TE_TRAILERS:
+ nva[i].value = (uint8_t*)"trailers";
+ nva[i].value_len = sizeof("trailers") - 1;
+ break;
+ default:
+ nva[i].value = (unsigned char *)hdbuf;
+ nva[i].value_len = (size_t)(end - hdbuf);
+ }
+#endif
+ nva[i].value = (unsigned char *)hdbuf;
+ nva[i].valuelen = (size_t)(end - hdbuf);
+ nva[i].flags = NGHTTP3_NV_FLAG_NONE;
+
+ ++i;
+ }
+
+ /* :authority must come before non-pseudo header fields */
+ if(authority_idx != 0 && authority_idx != AUTHORITY_DST_IDX) {
+ nghttp3_nv authority = nva[authority_idx];
+ for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
+ nva[i] = nva[i - 1];
+ }
+ nva[i] = authority;
+ }
+
+ /* Warn stream may be rejected if cumulative length of headers is too
+ large. */
+#define MAX_ACC 60000 /* <64KB to account for some overhead */
+ {
+ size_t acc = 0;
+ for(i = 0; i < nheader; ++i)
+ acc += nva[i].namelen + nva[i].valuelen;
+
+ if(acc > MAX_ACC) {
+ infof(data, "http_request: Warning: The cumulative length of all "
+ "headers exceeds %zu bytes and that could cause the "
+ "stream to be rejected.\n", MAX_ACC);
+ }
+ }
+
+ switch(data->set.httpreq) {
+ case HTTPREQ_POST:
+ case HTTPREQ_POST_FORM:
+ case HTTPREQ_POST_MIME:
+ case HTTPREQ_PUT: {
+ nghttp3_data_reader data_reader;
+ if(data->state.infilesize != -1)
+ stream->upload_left = data->state.infilesize;
+ else
+ /* data sending without specifying the data amount up front */
+ stream->upload_left = -1; /* unknown, but not zero */
+
+ data_reader.read_data = cb_h3_readfunction;
+
+ h3out = calloc(sizeof(struct h3out), 1);
+ if(!h3out) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ stream->h3out = h3out;
+
+ rc = nghttp3_conn_submit_request(qs->h3conn, stream->stream3_id,
+ nva, nheader, &data_reader,
+ conn->data);
+ if(rc) {
+ result = CURLE_SEND_ERROR;
+ goto fail;
+ }
+ break;
+ }
+ default:
+ stream->upload_left = 0; /* nothing left to send */
+ rc = nghttp3_conn_submit_request(qs->h3conn, stream->stream3_id,
+ nva, nheader,
+ NULL, /* no body! */
+ conn->data);
+ if(rc) {
+ result = CURLE_SEND_ERROR;
+ goto fail;
+ }
+ break;
+ }
+
+ Curl_safefree(nva);
+
+ infof(data, "Using HTTP/3 Stream ID: %x (easy handle %p)\n",
+ stream3_id, (void *)data);
+
+ return CURLE_OK;
+
+fail:
+ free(nva);
+ return result;
+}
+static ssize_t ngh3_stream_send(struct connectdata *conn,
+ int sockindex,
+ const void *mem,
+ size_t len,
+ CURLcode *curlcode)
+{
+ ssize_t sent;
+ struct quicsocket *qs = conn->quic;
+ curl_socket_t sockfd = conn->sock[sockindex];
+ struct HTTP *stream = conn->data->req.protop;
+
+ if(!stream->h3req) {
+ CURLcode result = http_request(conn, mem, len);
+ if(result) {
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+ sent = len;
+ }
+ else {
+ fprintf(stderr, "ngh3_stream_send() wants to send %zd bytes\n", len);
+ if(!stream->upload_len) {
+ stream->upload_mem = mem;
+ stream->upload_len = len;
+ (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
+ sent = len;
+ }
+ else {
+ *curlcode = CURLE_AGAIN;
+ return -1;
+ }
+ }
+
+ if(ng_flush_egress(conn, sockfd, qs)) {
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+
+ *curlcode = CURLE_OK;
+ return sent;
+}
+
+static void ng_has_connected(struct connectdata *conn, int tempindex)
+{
+ conn->recv[FIRSTSOCKET] = ngh3_stream_recv;
+ conn->send[FIRSTSOCKET] = ngh3_stream_send;
+ conn->handler = &Curl_handler_http3;
+ conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
+ conn->httpversion = 30;
+ conn->bundle->multiuse = BUNDLE_MULTIPLEX;
+ conn->quic = &conn->hequic[tempindex];
+ DEBUGF(infof(conn->data, "ngtcp2 established connection!\n"));
+}
+
+/*
+ * There can be multiple connection attempts going on in parallel.
+ */
+CURLcode Curl_quic_is_connected(struct connectdata *conn,
+ int sockindex,
+ bool *done)
+{
+ CURLcode result;
+ struct quicsocket *qs = &conn->hequic[sockindex];
+ curl_socket_t sockfd = conn->tempsock[sockindex];
+
+ result = ng_process_ingress(conn, sockfd, qs);
+ if(result)
+ return result;
+
+ result = ng_flush_egress(conn, sockfd, qs);
+ if(result)
+ return result;
+
+ if(ngtcp2_conn_get_handshake_completed(qs->qconn)) {
+ *done = TRUE;
+ ng_has_connected(conn, sockindex);
+ }
+
+ return result;
+}
+
+static CURLcode ng_process_ingress(struct connectdata *conn, int sockfd,
+ struct quicsocket *qs)
+{
+ ssize_t recvd;
+ int rv;
+ uint8_t buf[65536];
+ size_t bufsize = sizeof(buf);
+ struct sockaddr_storage remote_addr;
+ socklen_t remote_addrlen;
+ ngtcp2_path path;
+ ngtcp2_tstamp ts = timestamp();
+
+ for(;;) {
+ remote_addrlen = sizeof(remote_addr);
+ while((recvd = recvfrom(sockfd, buf, bufsize, MSG_DONTWAIT,
+ (struct sockaddr *)&remote_addr,
+ &remote_addrlen)) == -1 &&
+ errno == EINTR)
+ ;
+ if(recvd == -1) {
+ if(errno == EAGAIN || errno == EWOULDBLOCK)
+ break;
+
+ failf(conn->data, "ngtcp2: recvfrom() unexpectedly returned %d", recvd);
+ return CURLE_RECV_ERROR;
+ }
+
+ ngtcp2_addr_init(&path.local, (uint8_t *)&qs->local_addr,
+ qs->local_addrlen, NULL);
+ ngtcp2_addr_init(&path.remote, (uint8_t *)&remote_addr, remote_addrlen,
+ NULL);
+
+ rv = ngtcp2_conn_read_pkt(qs->qconn, &path, buf, recvd, ts);
+ if(rv != 0) {
+ /* TODO Send CONNECTION_CLOSE if possible */
+ return CURLE_RECV_ERROR;
+ }
+ }
+
+ return CURLE_OK;
+}
+
+static CURLcode ng_flush_egress(struct connectdata *conn, int sockfd,
+ struct quicsocket *qs)
+{
+ int rv;
+ ssize_t sent;
+ ssize_t outlen;
+ uint8_t out[NGTCP2_MAX_PKTLEN_IPV4];
+ size_t pktlen;
+ ngtcp2_path_storage ps;
+ ngtcp2_tstamp ts = timestamp();
+ struct sockaddr_storage remote_addr;
+ ngtcp2_tstamp expiry;
+ ngtcp2_duration timeout;
+ int64_t stream_id;
+ ssize_t veccnt;
+ int fin;
+ nghttp3_vec vec[16];
+ ssize_t ndatalen;
+
+ switch(qs->local_addr.ss_family) {
+ case AF_INET:
+ pktlen = NGTCP2_MAX_PKTLEN_IPV4;
+ break;
+ case AF_INET6:
+ pktlen = NGTCP2_MAX_PKTLEN_IPV6;
+ break;
+ default:
+ assert(0);
+ }
+
+ rv = ngtcp2_conn_handle_expiry(qs->qconn, ts);
+ if(rv != 0) {
+ failf(conn->data, "ngtcp2_conn_handle_expiry returned error: %s\n",
+ ngtcp2_strerror(rv));
+ return CURLE_SEND_ERROR;
+ }
+
+ ngtcp2_path_storage_zero(&ps);
+
+ for(;;) {
+ outlen = -1;
+ if(qs->h3conn && ngtcp2_conn_get_max_data_left(qs->qconn)) {
+ veccnt = nghttp3_conn_writev_stream(qs->h3conn, &stream_id, &fin, vec,
+ sizeof(vec) / sizeof(vec[0]));
+ if(veccnt < 0) {
+ failf(conn->data, "nghttp3_conn_writev_stream returned error: %s\n",
+ nghttp3_strerror((int)veccnt));
+ return CURLE_SEND_ERROR;
+ }
+ else if(veccnt > 0) {
+ outlen =
+ ngtcp2_conn_writev_stream(qs->qconn, &ps.path,
+ out, pktlen, &ndatalen,
+ NGTCP2_WRITE_STREAM_FLAG_MORE,
+ stream_id, fin,
+ (const ngtcp2_vec *)vec, veccnt, ts);
+ if(outlen == 0) {
+ break;
+ }
+ if(outlen < 0) {
+ if(outlen == NGTCP2_ERR_STREAM_DATA_BLOCKED ||
+ outlen == NGTCP2_ERR_STREAM_SHUT_WR) {
+ rv = nghttp3_conn_block_stream(qs->h3conn, stream_id);
+ if(rv != 0) {
+ failf(conn->data,
+ "nghttp3_conn_block_stream returned error: %s\n",
+ nghttp3_strerror(rv));
+ return CURLE_SEND_ERROR;
+ }
+ continue;
+ }
+ else if(outlen == NGTCP2_ERR_WRITE_STREAM_MORE) {
+ assert(ndatalen > 0);
+ rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id,
+ ndatalen);
+ if(rv != 0) {
+ failf(conn->data,
+ "nghttp3_conn_add_write_offset returned error: %s\n",
+ nghttp3_strerror(rv));
+ return CURLE_SEND_ERROR;
+ }
+ continue;
+ }
+ else {
+ failf(conn->data, "ngtcp2_conn_writev_stream returned error: %s\n",
+ ngtcp2_strerror((int)outlen));
+ return CURLE_SEND_ERROR;
+ }
+ }
+ else if(ndatalen > 0) {
+ rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id, ndatalen);
+ if(rv != 0) {
+ failf(conn->data,
+ "nghttp3_conn_add_write_offset returned error: %s\n",
+ nghttp3_strerror(rv));
+ return CURLE_SEND_ERROR;
+ }
+ }
+ }
+ }
+ if(outlen < 0) {
+ outlen = ngtcp2_conn_write_pkt(qs->qconn, &ps.path, out, pktlen, ts);
+ if(outlen < 0) {
+ failf(conn->data, "ngtcp2_conn_write_pkt returned error: %s\n",
+ ngtcp2_strerror((int)outlen));
+ return CURLE_SEND_ERROR;
+ }
+ if(outlen == 0)
+ break;
+ }
+
+ memcpy(&remote_addr, ps.path.remote.addr, ps.path.remote.addrlen);
+ while((sent = sendto(sockfd, out, outlen, MSG_DONTWAIT,
+ (struct sockaddr *)&remote_addr,
+ (socklen_t)ps.path.remote.addrlen)) == -1 &&
+ errno == EINTR)
+ ;
+
+ if(sent == -1) {
+ if(errno == EAGAIN || errno == EWOULDBLOCK) {
+ /* TODO Cache packet */
+ break;
+ }
+ else {
+ failf(conn->data, "sendto() returned %zd (errno %d)\n", sent,
+ SOCKERRNO);
+ return CURLE_SEND_ERROR;
+ }
+ }
+ }
+
+ expiry = ngtcp2_conn_get_expiry(qs->qconn);
+ if(expiry != UINT64_MAX) {
+ if(expiry <= ts) {
+ timeout = NGTCP2_MILLISECONDS;
+ }
+ else {
+ timeout = expiry - ts;
+ }
+ Curl_expire(conn->data, timeout / NGTCP2_MILLISECONDS, EXPIRE_QUIC);
+ }
+
+ return CURLE_OK;
+}
+
+/*
+ * Called from transfer.c:done_sending when we stop HTTP/3 uploading.
+ */
+CURLcode Curl_quic_done_sending(struct connectdata *conn)
+{
+ if(conn->handler == &Curl_handler_http3) {
+ /* only for HTTP/3 transfers */
+ struct HTTP *stream = conn->data->req.protop;
+ struct quicsocket *qs = conn->quic;
+ fprintf(stderr, "!!! Curl_quic_done_sending stream %zu\n",
+ stream->stream3_id);
+ stream->upload_done = TRUE;
+ (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
+ }
+
+ return CURLE_OK;
+}
+#endif
diff --git a/lib/vquic/ngtcp2.h b/lib/vquic/ngtcp2.h
new file mode 100644
index 00000000..5570fc7e
--- /dev/null
+++ b/lib/vquic/ngtcp2.h
@@ -0,0 +1,63 @@
+#ifndef HEADER_CURL_VQUIC_NGTCP2_H
+#define HEADER_CURL_VQUIC_NGTCP2_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_NGTCP2
+
+#include <ngtcp2/ngtcp2.h>
+#include <nghttp3/nghttp3.h>
+#include <openssl/ssl.h>
+
+struct quic_handshake {
+ char *buf; /* pointer to the buffer */
+ size_t alloclen; /* size of allocation */
+ size_t len; /* size of content in buffer */
+ size_t nread; /* how many bytes have been read */
+};
+
+struct quicsocket {
+ struct connectdata *conn; /* point back to the connection */
+ ngtcp2_conn *qconn;
+ ngtcp2_cid dcid;
+ ngtcp2_cid scid;
+ uint32_t version;
+ ngtcp2_settings settings;
+ SSL_CTX *sslctx;
+ SSL *ssl;
+ struct quic_handshake client_crypto_data[3];
+ /* the last TLS alert description generated by the local endpoint */
+ uint8_t tls_alert;
+ struct sockaddr_storage local_addr;
+ socklen_t local_addrlen;
+
+ nghttp3_conn *h3conn;
+ nghttp3_conn_settings h3settings;
+};
+
+#include "urldata.h"
+
+#endif
+
+#endif /* HEADER_CURL_VQUIC_NGTCP2_H */
diff --git a/lib/vquic/quiche.c b/lib/vquic/quiche.c
new file mode 100644
index 00000000..7f9b34a1
--- /dev/null
+++ b/lib/vquic/quiche.c
@@ -0,0 +1,780 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_QUICHE
+#include <quiche.h>
+#include <openssl/err.h>
+#include "urldata.h"
+#include "sendf.h"
+#include "strdup.h"
+#include "rand.h"
+#include "quic.h"
+#include "strcase.h"
+#include "multiif.h"
+#include "connect.h"
+#include "strerror.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+#define DEBUG_HTTP3
+/* #define DEBUG_QUICHE */
+#ifdef DEBUG_HTTP3
+#define H3BUGF(x) x
+#else
+#define H3BUGF(x) do { } WHILE_FALSE
+#endif
+
+#define QUIC_MAX_STREAMS (256*1024)
+#define QUIC_MAX_DATA (1*1024*1024)
+#define QUIC_IDLE_TIMEOUT 60 * 1000 /* milliseconds */
+
+static CURLcode process_ingress(struct connectdata *conn,
+ curl_socket_t sockfd,
+ struct quicsocket *qs);
+
+static CURLcode flush_egress(struct connectdata *conn, curl_socket_t sockfd,
+ struct quicsocket *qs);
+
+static CURLcode http_request(struct connectdata *conn, const void *mem,
+ size_t len);
+static Curl_recv h3_stream_recv;
+static Curl_send h3_stream_send;
+
+
+static int quiche_getsock(struct connectdata *conn, curl_socket_t *socks)
+{
+ struct SingleRequest *k = &conn->data->req;
+ int bitmap = GETSOCK_BLANK;
+
+ socks[0] = conn->sock[FIRSTSOCKET];
+
+ /* in a HTTP/2 connection we can basically always get a frame so we should
+ always be ready for one */
+ bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
+
+ /* we're still uploading or the HTTP/2 layer wants to send data */
+ if((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND)
+ bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
+
+ return bitmap;
+}
+
+static int quiche_perform_getsock(const struct connectdata *conn,
+ curl_socket_t *socks)
+{
+ return quiche_getsock((struct connectdata *)conn, socks);
+}
+
+static CURLcode quiche_disconnect(struct connectdata *conn,
+ bool dead_connection)
+{
+ struct quicsocket *qs = conn->quic;
+ (void)dead_connection;
+ quiche_h3_config_free(qs->h3config);
+ quiche_h3_conn_free(qs->h3c);
+ quiche_config_free(qs->cfg);
+ quiche_conn_free(qs->conn);
+ return CURLE_OK;
+}
+
+static unsigned int quiche_conncheck(struct connectdata *conn,
+ unsigned int checks_to_perform)
+{
+ (void)conn;
+ (void)checks_to_perform;
+ return CONNRESULT_NONE;
+}
+
+static CURLcode quiche_do(struct connectdata *conn, bool *done)
+{
+ struct HTTP *stream = conn->data->req.protop;
+ stream->h3req = FALSE; /* not sent */
+ return Curl_http(conn, done);
+}
+
+static const struct Curl_handler Curl_handler_http3 = {
+ "HTTPS", /* scheme */
+ ZERO_NULL, /* setup_connection */
+ quiche_do, /* do_it */
+ Curl_http_done, /* done */
+ ZERO_NULL, /* do_more */
+ ZERO_NULL, /* connect_it */
+ ZERO_NULL, /* connecting */
+ ZERO_NULL, /* doing */
+ quiche_getsock, /* proto_getsock */
+ quiche_getsock, /* doing_getsock */
+ ZERO_NULL, /* domore_getsock */
+ quiche_perform_getsock, /* perform_getsock */
+ quiche_disconnect, /* disconnect */
+ ZERO_NULL, /* readwrite */
+ quiche_conncheck, /* connection_check */
+ PORT_HTTP, /* defport */
+ CURLPROTO_HTTPS, /* protocol */
+ PROTOPT_SSL | PROTOPT_STREAM /* flags */
+};
+
+#ifdef DEBUG_QUICHE
+static void quiche_debug_log(const char *line, void *argp)
+{
+ (void)argp;
+ fprintf(stderr, "%s\n", line);
+}
+#endif
+
+CURLcode Curl_quic_connect(struct connectdata *conn, curl_socket_t sockfd,
+ int sockindex,
+ const struct sockaddr *addr, socklen_t addrlen)
+{
+ CURLcode result;
+ struct quicsocket *qs = &conn->hequic[sockindex];
+ struct Curl_easy *data = conn->data;
+
+#ifdef DEBUG_QUICHE
+ /* initialize debug log callback only once */
+ static int debug_log_init = 0;
+ if(!debug_log_init) {
+ quiche_enable_debug_logging(quiche_debug_log, NULL);
+ debug_log_init = 1;
+ }
+#endif
+
+ (void)addr;
+ (void)addrlen;
+
+ qs->cfg = quiche_config_new(QUICHE_PROTOCOL_VERSION);
+ if(!qs->cfg) {
+ failf(data, "can't create quiche config");
+ return CURLE_FAILED_INIT;
+ }
+
+ quiche_config_set_idle_timeout(qs->cfg, QUIC_IDLE_TIMEOUT);
+ quiche_config_set_initial_max_data(qs->cfg, QUIC_MAX_DATA);
+ quiche_config_set_initial_max_stream_data_bidi_local(qs->cfg, QUIC_MAX_DATA);
+ quiche_config_set_initial_max_stream_data_bidi_remote(qs->cfg,
+ QUIC_MAX_DATA);
+ quiche_config_set_initial_max_stream_data_uni(qs->cfg, QUIC_MAX_DATA);
+ quiche_config_set_initial_max_streams_bidi(qs->cfg, QUIC_MAX_STREAMS);
+ quiche_config_set_initial_max_streams_uni(qs->cfg, QUIC_MAX_STREAMS);
+ quiche_config_set_application_protos(qs->cfg,
+ (uint8_t *)
+ QUICHE_H3_APPLICATION_PROTOCOL,
+ sizeof(QUICHE_H3_APPLICATION_PROTOCOL)
+ - 1);
+
+ result = Curl_rand(data, qs->scid, sizeof(qs->scid));
+ if(result)
+ return result;
+
+ if(getenv("SSLKEYLOGFILE"))
+ quiche_config_log_keys(qs->cfg);
+
+ qs->conn = quiche_connect(conn->host.name, (const uint8_t *) qs->scid,
+ sizeof(qs->scid), qs->cfg);
+ if(!qs->conn) {
+ failf(data, "can't create quiche connection");
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ result = flush_egress(conn, sockfd, qs);
+ if(result)
+ return result;
+
+#if 0
+ /* store the used address as a string */
+ if(!Curl_addr2string((struct sockaddr*)addr,
+ conn->primary_ip, &conn->primary_port)) {
+ char buffer[STRERROR_LEN];
+ failf(data, "ssrem inet_ntop() failed with errno %d: %s",
+ errno, Curl_strerror(errno, buffer, sizeof(buffer)));
+ return CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+ memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
+#endif
+ /* for connection reuse purposes: */
+ conn->ssl[FIRSTSOCKET].state = ssl_connection_complete;
+
+ infof(data, "Sent QUIC client Initial, ALPN: %s\n",
+ QUICHE_H3_APPLICATION_PROTOCOL + 1);
+
+ return CURLE_OK;
+}
+
+static CURLcode quiche_has_connected(struct connectdata *conn,
+ int sockindex,
+ int tempindex)
+{
+ CURLcode result;
+ struct quicsocket *qs = conn->quic = &conn->hequic[tempindex];
+
+ conn->recv[sockindex] = h3_stream_recv;
+ conn->send[sockindex] = h3_stream_send;
+ conn->handler = &Curl_handler_http3;
+ conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
+ conn->httpversion = 30;
+ conn->bundle->multiuse = BUNDLE_MULTIPLEX;
+
+ qs->h3config = quiche_h3_config_new(0, 1024, 0, 0);
+ if(!qs->h3config)
+ return CURLE_OUT_OF_MEMORY;
+
+ /* Create a new HTTP/3 connection on the QUIC connection. */
+ qs->h3c = quiche_h3_conn_new_with_transport(qs->conn, qs->h3config);
+ if(!qs->h3c) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto fail;
+ }
+ if(conn->hequic[1-tempindex].cfg) {
+ qs = &conn->hequic[1-tempindex];
+ quiche_config_free(qs->cfg);
+ quiche_conn_free(qs->conn);
+ qs->cfg = NULL;
+ qs->conn = NULL;
+ }
+ return CURLE_OK;
+ fail:
+ quiche_h3_config_free(qs->h3config);
+ quiche_h3_conn_free(qs->h3c);
+ return result;
+}
+
+/*
+ * This function gets polled to check if this QUIC connection has connected.
+ */
+CURLcode Curl_quic_is_connected(struct connectdata *conn, int sockindex,
+ bool *done)
+{
+ CURLcode result;
+ struct quicsocket *qs = &conn->hequic[sockindex];
+ curl_socket_t sockfd = conn->tempsock[sockindex];
+
+ result = process_ingress(conn, sockfd, qs);
+ if(result)
+ return result;
+
+ result = flush_egress(conn, sockfd, qs);
+ if(result)
+ return result;
+
+ if(quiche_conn_is_established(qs->conn)) {
+ *done = TRUE;
+ result = quiche_has_connected(conn, 0, sockindex);
+ DEBUGF(infof(conn->data, "quiche established connection!\n"));
+ }
+
+ return result;
+}
+
+static CURLcode process_ingress(struct connectdata *conn, int sockfd,
+ struct quicsocket *qs)
+{
+ ssize_t recvd;
+ struct Curl_easy *data = conn->data;
+ uint8_t *buf = (uint8_t *)data->state.buffer;
+ size_t bufsize = data->set.buffer_size;
+
+ /* in case the timeout expired */
+ quiche_conn_on_timeout(qs->conn);
+
+ do {
+ recvd = recv(sockfd, buf, bufsize, 0);
+ if((recvd < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK)))
+ break;
+
+ if(recvd < 0) {
+ failf(conn->data, "quiche: recv() unexpectedly returned %d "
+ "(errno: %d, socket %d)", recvd, SOCKERRNO, sockfd);
+ return CURLE_RECV_ERROR;
+ }
+
+ recvd = quiche_conn_recv(qs->conn, buf, recvd);
+ if(recvd == QUICHE_ERR_DONE)
+ break;
+
+ if(recvd < 0) {
+ failf(conn->data, "quiche_conn_recv() == %d", recvd);
+ return CURLE_RECV_ERROR;
+ }
+ } while(1);
+
+ return CURLE_OK;
+}
+
+/*
+ * flush_egress drains the buffers and sends off data.
+ * Calls failf() on errors.
+ */
+static CURLcode flush_egress(struct connectdata *conn, int sockfd,
+ struct quicsocket *qs)
+{
+ ssize_t sent;
+ static uint8_t out[1200];
+ int64_t timeout_ns;
+
+ do {
+ sent = quiche_conn_send(qs->conn, out, sizeof(out));
+ if(sent == QUICHE_ERR_DONE)
+ break;
+
+ if(sent < 0) {
+ failf(conn->data, "quiche_conn_send returned %zd\n",
+ sent);
+ return CURLE_SEND_ERROR;
+ }
+
+ sent = send(sockfd, out, sent, 0);
+ if(sent < 0) {
+ failf(conn->data, "send() returned %zd\n", sent);
+ return CURLE_SEND_ERROR;
+ }
+ } while(1);
+
+ /* time until the next timeout event, as nanoseconds. */
+ timeout_ns = quiche_conn_timeout_as_nanos(qs->conn);
+ if(timeout_ns)
+ /* expire uses milliseconds */
+ Curl_expire(conn->data, (timeout_ns + 999999) / 1000000, EXPIRE_QUIC);
+
+ return CURLE_OK;
+}
+
+struct h3h1header {
+ char *dest;
+ size_t destlen; /* left to use */
+ size_t nlen; /* used */
+};
+
+static int cb_each_header(uint8_t *name, size_t name_len,
+ uint8_t *value, size_t value_len,
+ void *argp)
+{
+ struct h3h1header *headers = (struct h3h1header *)argp;
+ size_t olen = 0;
+
+ if((name_len == 7) && !strncmp(":status", (char *)name, 7)) {
+ msnprintf(headers->dest,
+ headers->destlen, "HTTP/3 %.*s\n",
+ (int) value_len, value);
+ }
+ else {
+ msnprintf(headers->dest,
+ headers->destlen, "%.*s: %.*s\n",
+ (int)name_len, name, (int) value_len, value);
+ }
+ olen = strlen(headers->dest);
+ headers->destlen -= olen;
+ headers->nlen += olen;
+ headers->dest += olen;
+ return 0;
+}
+
+static ssize_t h3_stream_recv(struct connectdata *conn,
+ int sockindex,
+ char *buf,
+ size_t buffersize,
+ CURLcode *curlcode)
+{
+ ssize_t recvd = -1;
+ ssize_t rcode;
+ struct quicsocket *qs = conn->quic;
+ curl_socket_t sockfd = conn->sock[sockindex];
+ quiche_h3_event *ev;
+ int rc;
+ struct h3h1header headers;
+ struct HTTP *stream = conn->data->req.protop;
+ headers.dest = buf;
+ headers.destlen = buffersize;
+ headers.nlen = 0;
+
+ if(process_ingress(conn, sockfd, qs)) {
+ infof(conn->data, "h3_stream_recv returns on ingress\n");
+ *curlcode = CURLE_RECV_ERROR;
+ return -1;
+ }
+
+ while(recvd < 0) {
+ int64_t s = quiche_h3_conn_poll(qs->h3c, qs->conn, &ev);
+ if(s < 0)
+ /* nothing more to do */
+ break;
+
+ if(s != stream->stream3_id) {
+ /* another transfer, ignore for now */
+ infof(conn->data, "Got h3 for stream %u, expects %u\n",
+ s, stream->stream3_id);
+ continue;
+ }
+
+ switch(quiche_h3_event_type(ev)) {
+ case QUICHE_H3_EVENT_HEADERS:
+ rc = quiche_h3_event_for_each_header(ev, cb_each_header, &headers);
+ if(rc) {
+ /* what do we do about this? */
+ }
+ recvd = headers.nlen;
+ break;
+ case QUICHE_H3_EVENT_DATA:
+ if(!stream->firstbody) {
+ /* add a header-body separator CRLF */
+ buf[0] = '\r';
+ buf[1] = '\n';
+ buf += 2;
+ buffersize -= 2;
+ stream->firstbody = TRUE;
+ recvd = 2; /* two bytes already */
+ }
+ else
+ recvd = 0;
+ rcode = quiche_h3_recv_body(qs->h3c, qs->conn, s, (unsigned char *)buf,
+ buffersize);
+ if(rcode <= 0) {
+ recvd = -1;
+ break;
+ }
+ recvd += rcode;
+ break;
+
+ case QUICHE_H3_EVENT_FINISHED:
+ if(quiche_conn_close(qs->conn, true, 0, NULL, 0) < 0) {
+ ;
+ }
+ recvd = 0; /* end of stream */
+ break;
+ default:
+ break;
+ }
+
+ quiche_h3_event_free(ev);
+ }
+ if(flush_egress(conn, sockfd, qs)) {
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+
+ *curlcode = (-1 == recvd)? CURLE_AGAIN : CURLE_OK;
+ if(recvd >= 0)
+ /* Get this called again to drain the event queue */
+ Curl_expire(conn->data, 0, EXPIRE_QUIC);
+ return recvd;
+}
+
+static ssize_t h3_stream_send(struct connectdata *conn,
+ int sockindex,
+ const void *mem,
+ size_t len,
+ CURLcode *curlcode)
+{
+ ssize_t sent;
+ struct quicsocket *qs = conn->quic;
+ curl_socket_t sockfd = conn->sock[sockindex];
+ struct HTTP *stream = conn->data->req.protop;
+
+ if(!stream->h3req) {
+ CURLcode result = http_request(conn, mem, len);
+ if(result) {
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+ sent = len;
+ }
+ else {
+ H3BUGF(infof(conn->data, "Pass on %zd body bytes to quiche\n",
+ len));
+ sent = quiche_h3_send_body(qs->h3c, qs->conn, stream->stream3_id,
+ (uint8_t *)mem, len, FALSE);
+ if(sent < 0) {
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+ }
+
+ if(flush_egress(conn, sockfd, qs)) {
+ *curlcode = CURLE_SEND_ERROR;
+ return -1;
+ }
+
+ *curlcode = CURLE_OK;
+ return sent;
+}
+
+/*
+ * Store quiche version info in this buffer, Prefix with a space. Return total
+ * length written.
+ */
+int Curl_quic_ver(char *p, size_t len)
+{
+ return msnprintf(p, len, " quiche/%s", quiche_version());
+}
+
+/* Index where :authority header field will appear in request header
+ field list. */
+#define AUTHORITY_DST_IDX 3
+
+static CURLcode http_request(struct connectdata *conn, const void *mem,
+ size_t len)
+{
+ /*
+ */
+ struct HTTP *stream = conn->data->req.protop;
+ size_t nheader;
+ size_t i;
+ size_t authority_idx;
+ char *hdbuf = (char *)mem;
+ char *end, *line_end;
+ int64_t stream3_id;
+ quiche_h3_header *nva = NULL;
+ struct quicsocket *qs = conn->quic;
+ CURLcode result = CURLE_OK;
+ struct Curl_easy *data = conn->data;
+
+ stream->h3req = TRUE; /* senf off! */
+
+ /* Calculate number of headers contained in [mem, mem + len). Assumes a
+ correctly generated HTTP header field block. */
+ nheader = 0;
+ for(i = 1; i < len; ++i) {
+ if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
+ ++nheader;
+ ++i;
+ }
+ }
+ if(nheader < 2)
+ goto fail;
+
+ /* We counted additional 2 \r\n in the first and last line. We need 3
+ new headers: :method, :path and :scheme. Therefore we need one
+ more space. */
+ nheader += 1;
+ nva = malloc(sizeof(quiche_h3_header) * nheader);
+ if(!nva) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto fail;
+ }
+
+ /* Extract :method, :path from request line
+ We do line endings with CRLF so checking for CR is enough */
+ line_end = memchr(hdbuf, '\r', len);
+ if(!line_end) {
+ result = CURLE_BAD_FUNCTION_ARGUMENT; /* internal error */
+ goto fail;
+ }
+
+ /* Method does not contain spaces */
+ end = memchr(hdbuf, ' ', line_end - hdbuf);
+ if(!end || end == hdbuf)
+ goto fail;
+ nva[0].name = (unsigned char *)":method";
+ nva[0].name_len = strlen((char *)nva[0].name);
+ nva[0].value = (unsigned char *)hdbuf;
+ nva[0].value_len = (size_t)(end - hdbuf);
+
+ hdbuf = end + 1;
+
+ /* Path may contain spaces so scan backwards */
+ end = NULL;
+ for(i = (size_t)(line_end - hdbuf); i; --i) {
+ if(hdbuf[i - 1] == ' ') {
+ end = &hdbuf[i - 1];
+ break;
+ }
+ }
+ if(!end || end == hdbuf)
+ goto fail;
+ nva[1].name = (unsigned char *)":path";
+ nva[1].name_len = strlen((char *)nva[1].name);
+ nva[1].value = (unsigned char *)hdbuf;
+ nva[1].value_len = (size_t)(end - hdbuf);
+
+ nva[2].name = (unsigned char *)":scheme";
+ nva[2].name_len = strlen((char *)nva[2].name);
+ if(conn->handler->flags & PROTOPT_SSL)
+ nva[2].value = (unsigned char *)"https";
+ else
+ nva[2].value = (unsigned char *)"http";
+ nva[2].value_len = strlen((char *)nva[2].value);
+
+
+ authority_idx = 0;
+ i = 3;
+ while(i < nheader) {
+ size_t hlen;
+
+ hdbuf = line_end + 2;
+
+ /* check for next CR, but only within the piece of data left in the given
+ buffer */
+ line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
+ if(!line_end || (line_end == hdbuf))
+ goto fail;
+
+ /* header continuation lines are not supported */
+ if(*hdbuf == ' ' || *hdbuf == '\t')
+ goto fail;
+
+ for(end = hdbuf; end < line_end && *end != ':'; ++end)
+ ;
+ if(end == hdbuf || end == line_end)
+ goto fail;
+ hlen = end - hdbuf;
+
+ if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
+ authority_idx = i;
+ nva[i].name = (unsigned char *)":authority";
+ nva[i].name_len = strlen((char *)nva[i].name);
+ }
+ else {
+ nva[i].name = (unsigned char *)hdbuf;
+ nva[i].name_len = (size_t)(end - hdbuf);
+ }
+ hdbuf = end + 1;
+ while(*hdbuf == ' ' || *hdbuf == '\t')
+ ++hdbuf;
+ end = line_end;
+
+#if 0 /* This should probably go in more or less like this */
+ switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
+ end - hdbuf)) {
+ case HEADERINST_IGNORE:
+ /* skip header fields prohibited by HTTP/2 specification. */
+ --nheader;
+ continue;
+ case HEADERINST_TE_TRAILERS:
+ nva[i].value = (uint8_t*)"trailers";
+ nva[i].value_len = sizeof("trailers") - 1;
+ break;
+ default:
+ nva[i].value = (unsigned char *)hdbuf;
+ nva[i].value_len = (size_t)(end - hdbuf);
+ }
+#endif
+ nva[i].value = (unsigned char *)hdbuf;
+ nva[i].value_len = (size_t)(end - hdbuf);
+
+ ++i;
+ }
+
+ /* :authority must come before non-pseudo header fields */
+ if(authority_idx != 0 && authority_idx != AUTHORITY_DST_IDX) {
+ quiche_h3_header authority = nva[authority_idx];
+ for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
+ nva[i] = nva[i - 1];
+ }
+ nva[i] = authority;
+ }
+
+ /* Warn stream may be rejected if cumulative length of headers is too
+ large. */
+#define MAX_ACC 60000 /* <64KB to account for some overhead */
+ {
+ size_t acc = 0;
+
+ for(i = 0; i < nheader; ++i) {
+ acc += nva[i].name_len + nva[i].value_len;
+
+ H3BUGF(infof(data, "h3 [%.*s: %.*s]\n",
+ nva[i].name_len, nva[i].name,
+ nva[i].value_len, nva[i].value));
+ }
+
+ if(acc > MAX_ACC) {
+ infof(data, "http_request: Warning: The cumulative length of all "
+ "headers exceeds %zu bytes and that could cause the "
+ "stream to be rejected.\n", MAX_ACC);
+ }
+ }
+
+ switch(data->set.httpreq) {
+ case HTTPREQ_POST:
+ case HTTPREQ_POST_FORM:
+ case HTTPREQ_POST_MIME:
+ case HTTPREQ_PUT:
+ if(data->state.infilesize != -1)
+ stream->upload_left = data->state.infilesize;
+ else
+ /* data sending without specifying the data amount up front */
+ stream->upload_left = -1; /* unknown, but not zero */
+
+ stream3_id = quiche_h3_send_request(qs->h3c, qs->conn, nva, nheader,
+ stream->upload_left ? FALSE: TRUE);
+ if((stream3_id >= 0) && data->set.postfields) {
+ ssize_t sent = quiche_h3_send_body(qs->h3c, qs->conn, stream3_id,
+ (uint8_t *)data->set.postfields,
+ stream->upload_left, TRUE);
+ if(sent <= 0) {
+ failf(data, "quiche_h3_send_body failed!");
+ result = CURLE_SEND_ERROR;
+ }
+ stream->upload_left = 0; /* nothing left to send */
+ }
+ break;
+ default:
+ stream3_id = quiche_h3_send_request(qs->h3c, qs->conn, nva, nheader,
+ TRUE);
+ break;
+ }
+
+ Curl_safefree(nva);
+
+ if(stream3_id < 0) {
+ H3BUGF(infof(data, "quiche_h3_send_request returned %d\n",
+ stream3_id));
+ result = CURLE_SEND_ERROR;
+ goto fail;
+ }
+
+ infof(data, "Using HTTP/3 Stream ID: %x (easy handle %p)\n",
+ stream3_id, (void *)data);
+ stream->stream3_id = stream3_id;
+
+ return CURLE_OK;
+
+fail:
+ free(nva);
+ return result;
+}
+
+/*
+ * Called from transfer.c:done_sending when we stop HTTP/3 uploading.
+ */
+CURLcode Curl_quic_done_sending(struct connectdata *conn)
+{
+ if(conn->handler == &Curl_handler_http3) {
+ /* only for HTTP/3 transfers */
+ ssize_t sent;
+ struct HTTP *stream = conn->data->req.protop;
+ struct quicsocket *qs = conn->quic;
+ fprintf(stderr, "!!! Curl_quic_done_sending\n");
+ stream->upload_done = TRUE;
+ sent = quiche_h3_send_body(qs->h3c, qs->conn, stream->stream3_id,
+ NULL, 0, TRUE);
+ if(sent < 0)
+ return CURLE_SEND_ERROR;
+ }
+
+ return CURLE_OK;
+}
+
+#endif
diff --git a/lib/vquic/quiche.h b/lib/vquic/quiche.h
new file mode 100644
index 00000000..c8d1837b
--- /dev/null
+++ b/lib/vquic/quiche.h
@@ -0,0 +1,49 @@
+#ifndef HEADER_CURL_VQUIC_QUICHE_H
+#define HEADER_CURL_VQUIC_QUICHE_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef USE_QUICHE
+
+#include <quiche.h>
+
+struct quic_handshake {
+ char *buf; /* pointer to the buffer */
+ size_t alloclen; /* size of allocation */
+ size_t len; /* size of content in buffer */
+ size_t nread; /* how many bytes have been read */
+};
+
+struct quicsocket {
+ quiche_config *cfg;
+ quiche_conn *conn;
+ quiche_h3_conn *h3c;
+ quiche_h3_config *h3config;
+ uint8_t scid[QUICHE_MAX_CONN_ID_LEN];
+ uint32_t version;
+};
+
+#endif
+
+#endif /* HEADER_CURL_VQUIC_QUICHE_H */
diff --git a/lib/ssh-libssh.c b/lib/vssh/libssh.c
index ca133767..76956a3c 100644
--- a/lib/ssh-libssh.c
+++ b/lib/vssh/libssh.c
@@ -126,13 +126,9 @@ CURLcode sftp_perform(struct connectdata *conn,
static void sftp_quote(struct connectdata *conn);
static void sftp_quote_stat(struct connectdata *conn);
-
-static int myssh_getsock(struct connectdata *conn, curl_socket_t *sock,
- int numsocks);
-
+static int myssh_getsock(struct connectdata *conn, curl_socket_t *sock);
static int myssh_perform_getsock(const struct connectdata *conn,
- curl_socket_t *sock,
- int numsocks);
+ curl_socket_t *sock);
static CURLcode myssh_setup_connection(struct connectdata *conn);
@@ -1119,7 +1115,7 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
flags = O_WRONLY|O_APPEND;
else
/* Clear file before writing (normal behaviour) */
- flags = O_WRONLY|O_APPEND|O_CREAT|O_TRUNC;
+ flags = O_WRONLY|O_CREAT|O_TRUNC;
if(sshc->sftp_file)
sftp_close(sshc->sftp_file);
@@ -1913,13 +1909,9 @@ static CURLcode myssh_statemach_act(struct connectdata *conn, bool *block)
/* called by the multi interface to figure out what socket(s) to wait for and
for what actions in the DO_DONE, PERFORM and WAITPERFORM states */
static int myssh_perform_getsock(const struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks
- number of sockets */
- int numsocks)
+ curl_socket_t *sock)
{
int bitmap = GETSOCK_BLANK;
- (void) numsocks;
-
sock[0] = conn->sock[FIRSTSOCKET];
if(conn->waitfor & KEEP_RECV)
@@ -1934,13 +1926,11 @@ static int myssh_perform_getsock(const struct connectdata *conn,
/* Generic function called by the multi interface to figure out what socket(s)
to wait for and for what actions during the DOING and PROTOCONNECT states*/
static int myssh_getsock(struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks
- number of sockets */
- int numsocks)
+ curl_socket_t *sock)
{
/* if we know the direction we can use the generic *_getsock() function even
for the protocol_connect and doing states */
- return myssh_perform_getsock(conn, sock, numsocks);
+ return myssh_perform_getsock(conn, sock);
}
static void myssh_block2waitfor(struct connectdata *conn, bool block)
@@ -2735,5 +2725,23 @@ static void sftp_quote_stat(struct connectdata *conn)
return;
}
+CURLcode Curl_ssh_init(void)
+{
+ if(ssh_init()) {
+ DEBUGF(fprintf(stderr, "Error: libssh_init failed\n"));
+ return CURLE_FAILED_INIT;
+ }
+ return CURLE_OK;
+}
+
+void Curl_ssh_cleanup(void)
+{
+ (void)ssh_finalize();
+}
+
+size_t Curl_ssh_version(char *buffer, size_t buflen)
+{
+ return msnprintf(buffer, buflen, "libssh/%s", CURL_LIBSSH_VERSION);
+}
#endif /* USE_LIBSSH */
diff --git a/lib/ssh.c b/lib/vssh/libssh2.c
index a265c3c9..2b25a514 100644
--- a/lib/ssh.c
+++ b/lib/vssh/libssh2.c
@@ -125,17 +125,9 @@ static
CURLcode sftp_perform(struct connectdata *conn,
bool *connected,
bool *dophase_done);
-
-static int ssh_getsock(struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks number
- of sockets */
- int numsocks);
-
+static int ssh_getsock(struct connectdata *conn, curl_socket_t *sock);
static int ssh_perform_getsock(const struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks
- number of sockets */
- int numsocks);
-
+ curl_socket_t *sock);
static CURLcode ssh_setup_connection(struct connectdata *conn);
/*
@@ -2700,13 +2692,10 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
/* called by the multi interface to figure out what socket(s) to wait for and
for what actions in the DO_DONE, PERFORM and WAITPERFORM states */
static int ssh_perform_getsock(const struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks
- number of sockets */
- int numsocks)
+ curl_socket_t *sock)
{
#ifdef HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
int bitmap = GETSOCK_BLANK;
- (void)numsocks;
sock[0] = conn->sock[FIRSTSOCKET];
@@ -2720,28 +2709,25 @@ static int ssh_perform_getsock(const struct connectdata *conn,
#else
/* if we don't know the direction we can use the generic *_getsock()
function even for the protocol_connect and doing states */
- return Curl_single_getsock(conn, sock, numsocks);
+ return Curl_single_getsock(conn, sock);
#endif
}
/* Generic function called by the multi interface to figure out what socket(s)
to wait for and for what actions during the DOING and PROTOCONNECT states*/
static int ssh_getsock(struct connectdata *conn,
- curl_socket_t *sock, /* points to numsocks number
- of sockets */
- int numsocks)
+ curl_socket_t *sock)
{
#ifndef HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
(void)conn;
(void)sock;
- (void)numsocks;
/* if we don't know any direction we can just play along as we used to and
not provide any sensible info */
return GETSOCK_BLANK;
#else
/* if we know the direction we can use the generic *_getsock() function even
for the protocol_connect and doing states */
- return ssh_perform_getsock(conn, sock, numsocks);
+ return ssh_perform_getsock(conn, sock);
#endif
}
@@ -3334,4 +3320,27 @@ static const char *sftp_libssh2_strerror(int err)
return "Unknown error in libssh2";
}
+CURLcode Curl_ssh_init(void)
+{
+#ifdef HAVE_LIBSSH2_INIT
+ if(libssh2_init(0)) {
+ DEBUGF(fprintf(stderr, "Error: libssh2_init failed\n"));
+ return CURLE_FAILED_INIT;
+ }
+#endif
+ return CURLE_OK;
+}
+
+void Curl_ssh_cleanup(void)
+{
+#ifdef HAVE_LIBSSH2_EXIT
+ (void)libssh2_exit();
+#endif
+}
+
+size_t Curl_ssh_version(char *buffer, size_t buflen)
+{
+ return msnprintf(buffer, buflen, "libssh2/%s", LIBSSH2_VERSION);
+}
+
#endif /* USE_LIBSSH2 */
diff --git a/lib/vtls/mesalink.c b/lib/vtls/mesalink.c
index 7ca4f0ea..9507888b 100644
--- a/lib/vtls/mesalink.c
+++ b/lib/vtls/mesalink.c
@@ -73,6 +73,17 @@ struct ssl_backend_data
static Curl_recv mesalink_recv;
static Curl_send mesalink_send;
+static int do_file_type(const char *type)
+{
+ if(!type || !type[0])
+ return SSL_FILETYPE_PEM;
+ if(strcasecompare(type, "PEM"))
+ return SSL_FILETYPE_PEM;
+ if(strcasecompare(type, "DER"))
+ return SSL_FILETYPE_ASN1;
+ return -1;
+}
+
/*
* This function loads all the client/CA certificates and CRLs. Setup the TLS
* layer and do all necessary magic.
@@ -83,9 +94,6 @@ mesalink_connect_step1(struct connectdata *conn, int sockindex)
char *ciphers;
struct Curl_easy *data = conn->data;
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
- const char *const ssl_cafile = SSL_CONN_CONFIG(CAfile);
- const char *const ssl_capath = SSL_CONN_CONFIG(CApath);
struct in_addr addr4;
#ifdef ENABLE_IPV6
struct in6_addr addr6;
@@ -142,21 +150,25 @@ mesalink_connect_step1(struct connectdata *conn, int sockindex)
}
SSL_CTX_set_verify(
- BACKEND->ctx, verifypeer ? SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL);
+ BACKEND->ctx, SSL_CONN_CONFIG(verifypeer) ?
+ SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL);
- if(ssl_cafile || ssl_capath) {
- if(!SSL_CTX_load_verify_locations(BACKEND->ctx, ssl_cafile, ssl_capath)) {
- if(verifypeer) {
+ if(SSL_CONN_CONFIG(CAfile) || SSL_CONN_CONFIG(CApath)) {
+ if(!SSL_CTX_load_verify_locations(BACKEND->ctx, SSL_CONN_CONFIG(CAfile),
+ SSL_CONN_CONFIG(CApath))) {
+ if(SSL_CONN_CONFIG(verifypeer)) {
failf(data,
"error setting certificate verify locations:\n"
" CAfile: %s\n CApath: %s",
- ssl_cafile ? ssl_cafile : "none",
- ssl_capath ? ssl_capath : "none");
+ SSL_CONN_CONFIG(CAfile) ?
+ SSL_CONN_CONFIG(CAfile) : "none",
+ SSL_CONN_CONFIG(CApath) ?
+ SSL_CONN_CONFIG(CApath) : "none");
return CURLE_SSL_CACERT_BADFILE;
}
infof(data,
- "error setting certificate verify locations,"
- " continuing anyway:\n");
+ "error setting certificate verify locations,"
+ " continuing anyway:\n");
}
else {
infof(data, "successfully set certificate verify locations:\n");
@@ -164,8 +176,32 @@ mesalink_connect_step1(struct connectdata *conn, int sockindex)
infof(data,
" CAfile: %s\n"
" CApath: %s\n",
- ssl_cafile ? ssl_cafile : "none",
- ssl_capath ? ssl_capath : "none");
+ SSL_CONN_CONFIG(CAfile)?
+ SSL_CONN_CONFIG(CAfile): "none",
+ SSL_CONN_CONFIG(CApath)?
+ SSL_CONN_CONFIG(CApath): "none");
+ }
+
+ if(SSL_SET_OPTION(cert) && SSL_SET_OPTION(key)) {
+ int file_type = do_file_type(SSL_SET_OPTION(cert_type));
+
+ if(SSL_CTX_use_certificate_chain_file(BACKEND->ctx, SSL_SET_OPTION(cert),
+ file_type) != 1) {
+ failf(data, "unable to use client certificate (no key or wrong pass"
+ " phrase?)");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+
+ file_type = do_file_type(SSL_SET_OPTION(key_type));
+ if(SSL_CTX_use_PrivateKey_file(BACKEND->ctx, SSL_SET_OPTION(key),
+ file_type) != 1) {
+ failf(data, "unable to set private key");
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ infof(data,
+ "client cert: %s\n",
+ SSL_CONN_CONFIG(clientcert)?
+ SSL_CONN_CONFIG(clientcert): "none");
}
ciphers = SSL_CONN_CONFIG(cipher_list);
diff --git a/lib/vtls/nss.c b/lib/vtls/nss.c
index 482fd5e9..435f3e93 100644
--- a/lib/vtls/nss.c
+++ b/lib/vtls/nss.c
@@ -1734,20 +1734,16 @@ static CURLcode nss_init_sslver(SSLVersionRange *sslver,
CURLcode result;
const long min = SSL_CONN_CONFIG(version);
const long max = SSL_CONN_CONFIG(version_max);
-
- /* map CURL_SSLVERSION_DEFAULT to NSS default */
- if(min == CURL_SSLVERSION_DEFAULT || max == CURL_SSLVERSION_MAX_DEFAULT) {
- /* map CURL_SSLVERSION_DEFAULT to NSS default */
- if(SSL_VersionRangeGetDefault(ssl_variant_stream, sslver) != SECSuccess)
- return CURLE_SSL_CONNECT_ERROR;
- /* ... but make sure we use at least TLSv1.0 according to libcurl API */
- if(sslver->min < SSL_LIBRARY_VERSION_TLS_1_0)
- sslver->min = SSL_LIBRARY_VERSION_TLS_1_0;
- }
+ SSLVersionRange vrange;
switch(min) {
case CURL_SSLVERSION_TLSv1:
case CURL_SSLVERSION_DEFAULT:
+ /* Bump our minimum TLS version if NSS has stricter requirements. */
+ if(SSL_VersionRangeGetDefault(ssl_variant_stream, &vrange) != SECSuccess)
+ return CURLE_SSL_CONNECT_ERROR;
+ if(sslver->min < vrange.min)
+ sslver->min = vrange.min;
break;
default:
result = nss_sslver_from_curl(&sslver->min, min);
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index fb9f2712..385f2817 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -25,11 +25,6 @@
* but vtls.c should ever call or use these functions.
*/
-/*
- * The original SSLeay-using code for curl was written by Linas Vepstas and
- * Sampo Kellomaki 1998.
- */
-
#include "curl_setup.h"
#ifdef USE_OPENSSL
@@ -396,7 +391,11 @@ static const char *SSL_ERROR_to_str(int err)
*/
static char *ossl_strerror(unsigned long error, char *buf, size_t size)
{
+#ifdef OPENSSL_IS_BORINGSSL
+ ERR_error_string_n((uint32_t)error, buf, size);
+#else
ERR_error_string_n(error, buf, size);
+#endif
return buf;
}
@@ -1534,8 +1533,13 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
altnames = X509_get_ext_d2i(server_cert, NID_subject_alt_name, NULL, NULL);
if(altnames) {
+#ifdef OPENSSL_IS_BORINGSSL
+ size_t numalts;
+ size_t i;
+#else
int numalts;
int i;
+#endif
bool dnsmatched = FALSE;
bool ipmatched = FALSE;
@@ -1565,11 +1569,10 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
assumed that the data returned by ASN1_STRING_data() is null
terminated or does not contain embedded nulls." But also that
"The actual format of the data will depend on the actual string
- type itself: for example for and IA5String the data will be ASCII"
+ type itself: for example for an IA5String the data will be ASCII"
- Gisle researched the OpenSSL sources:
- "I checked the 0.9.6 and 0.9.8 sources before my patch and
- it always 0-terminates an IA5String."
+ It has been however verified that in 0.9.6 and 0.9.7, IA5String
+ is always zero-terminated.
*/
if((altlen == strlen(altptr)) &&
/* if this isn't true, there was an embedded zero in the name
@@ -1633,8 +1636,7 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert)
/* In OpenSSL 0.9.7d and earlier, ASN1_STRING_to_UTF8 fails if the input
is already UTF-8 encoded. We check for this case and copy the raw
string manually to avoid the problem. This code can be made
- conditional in the future when OpenSSL has been fixed. Work-around
- brought by Alexis S. L. Carvalho. */
+ conditional in the future when OpenSSL has been fixed. */
if(tmp) {
if(ASN1_STRING_type(tmp) == V_ASN1_UTF8STRING) {
j = ASN1_STRING_length(tmp);
@@ -2154,9 +2156,96 @@ get_ssl_version_txt(SSL *ssl)
}
#endif
+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
+static CURLcode
+set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
+{
+ /* first, TLS min version... */
+ long curl_ssl_version_min = SSL_CONN_CONFIG(version);
+ long curl_ssl_version_max;
+
+ /* convert cURL min SSL version option to OpenSSL constant */
+ long ossl_ssl_version_min = 0;
+ long ossl_ssl_version_max = 0;
+ switch(curl_ssl_version_min) {
+ case CURL_SSLVERSION_TLSv1: /* TLS 1.x */
+ case CURL_SSLVERSION_TLSv1_0:
+ ossl_ssl_version_min = TLS1_VERSION;
+ break;
+ case CURL_SSLVERSION_TLSv1_1:
+ ossl_ssl_version_min = TLS1_1_VERSION;
+ break;
+ case CURL_SSLVERSION_TLSv1_2:
+ ossl_ssl_version_min = TLS1_2_VERSION;
+ break;
+#ifdef TLS1_3_VERSION
+ case CURL_SSLVERSION_TLSv1_3:
+ ossl_ssl_version_min = TLS1_3_VERSION;
+ break;
+#endif
+ }
+
+ /* CURL_SSLVERSION_DEFAULT means that no option was selected.
+ We don't want to pass 0 to SSL_CTX_set_min_proto_version as
+ it would enable all versions down to the lowest supported by
+ the library.
+ So we skip this, and stay with the OS default
+ */
+ if(curl_ssl_version_min != CURL_SSLVERSION_DEFAULT) {
+ if(!SSL_CTX_set_min_proto_version(ctx, ossl_ssl_version_min)) {
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+ }
+
+ /* ... then, TLS max version */
+ curl_ssl_version_max = SSL_CONN_CONFIG(version_max);
+
+ /* convert cURL max SSL version option to OpenSSL constant */
+ ossl_ssl_version_max = 0;
+ switch(curl_ssl_version_max) {
+ case CURL_SSLVERSION_MAX_TLSv1_0:
+ ossl_ssl_version_max = TLS1_VERSION;
+ break;
+ case CURL_SSLVERSION_MAX_TLSv1_1:
+ ossl_ssl_version_max = TLS1_1_VERSION;
+ break;
+ case CURL_SSLVERSION_MAX_TLSv1_2:
+ ossl_ssl_version_max = TLS1_2_VERSION;
+ break;
+#ifdef TLS1_3_VERSION
+ case CURL_SSLVERSION_MAX_TLSv1_3:
+ ossl_ssl_version_max = TLS1_3_VERSION;
+ break;
+#endif
+ case CURL_SSLVERSION_MAX_NONE: /* none selected */
+ case CURL_SSLVERSION_MAX_DEFAULT: /* max selected */
+ default:
+ /* SSL_CTX_set_max_proto_version states that:
+ setting the maximum to 0 will enable
+ protocol versions up to the highest version
+ supported by the library */
+ ossl_ssl_version_max = 0;
+ break;
+ }
+
+ if(!SSL_CTX_set_max_proto_version(ctx, ossl_ssl_version_max)) {
+ return CURLE_SSL_CONNECT_ERROR;
+ }
+
+ return CURLE_OK;
+}
+#endif
+
+#ifdef OPENSSL_IS_BORINGSSL
+typedef uint32_t ctx_option_t;
+#else
+typedef long ctx_option_t;
+#endif
+
+#if (OPENSSL_VERSION_NUMBER < 0x10100000L) /* 1.1.0 */
static CURLcode
-set_ssl_version_min_max(long *ctx_options, struct connectdata *conn,
- int sockindex)
+set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
+ struct connectdata *conn, int sockindex)
{
#if (OPENSSL_VERSION_NUMBER < 0x1000100FL) || !defined(TLS1_3_VERSION)
/* convoluted #if condition just to avoid compiler warnings on unused
@@ -2228,6 +2317,7 @@ set_ssl_version_min_max(long *ctx_options, struct connectdata *conn,
}
return CURLE_OK;
}
+#endif
/* The "new session" callback must return zero if the session can be removed
* or non-zero if the session has been put into the session cache.
@@ -2294,7 +2384,8 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
X509_LOOKUP *lookup = NULL;
curl_socket_t sockfd = conn->sock[sockindex];
struct ssl_connect_data *connssl = &conn->ssl[sockindex];
- long ctx_options = 0;
+ ctx_option_t ctx_options = 0;
+
#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
bool sni;
const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
@@ -2457,48 +2548,66 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
#endif
switch(ssl_version) {
- case CURL_SSLVERSION_SSLv3:
- ctx_options |= SSL_OP_NO_SSLv2;
- ctx_options |= SSL_OP_NO_TLSv1;
-#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
- ctx_options |= SSL_OP_NO_TLSv1_1;
- ctx_options |= SSL_OP_NO_TLSv1_2;
-#ifdef TLS1_3_VERSION
- ctx_options |= SSL_OP_NO_TLSv1_3;
-#endif
+ /* "--sslv2" option means SSLv2 only, disable all others */
+ case CURL_SSLVERSION_SSLv2:
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L /* 1.1.0 */
+ SSL_CTX_set_min_proto_version(BACKEND->ctx, SSL2_VERSION);
+ SSL_CTX_set_max_proto_version(BACKEND->ctx, SSL2_VERSION);
+#else
+ ctx_options |= SSL_OP_NO_SSLv3;
+ ctx_options |= SSL_OP_NO_TLSv1;
+# if OPENSSL_VERSION_NUMBER >= 0x1000100FL
+ ctx_options |= SSL_OP_NO_TLSv1_1;
+ ctx_options |= SSL_OP_NO_TLSv1_2;
+# ifdef TLS1_3_VERSION
+ ctx_options |= SSL_OP_NO_TLSv1_3;
+# endif
+# endif
#endif
- break;
-
- case CURL_SSLVERSION_DEFAULT:
- case CURL_SSLVERSION_TLSv1:
- case CURL_SSLVERSION_TLSv1_0:
- case CURL_SSLVERSION_TLSv1_1:
- case CURL_SSLVERSION_TLSv1_2:
- case CURL_SSLVERSION_TLSv1_3:
- /* asking for any TLS version as the minimum, means no SSL versions
- allowed */
- ctx_options |= SSL_OP_NO_SSLv2;
- ctx_options |= SSL_OP_NO_SSLv3;
- result = set_ssl_version_min_max(&ctx_options, conn, sockindex);
- if(result != CURLE_OK)
- return result;
- break;
+ break;
- case CURL_SSLVERSION_SSLv2:
- ctx_options |= SSL_OP_NO_SSLv3;
- ctx_options |= SSL_OP_NO_TLSv1;
-#if OPENSSL_VERSION_NUMBER >= 0x1000100FL
- ctx_options |= SSL_OP_NO_TLSv1_1;
- ctx_options |= SSL_OP_NO_TLSv1_2;
-#ifdef TLS1_3_VERSION
- ctx_options |= SSL_OP_NO_TLSv1_3;
+ /* "--sslv3" option means SSLv3 only, disable all others */
+ case CURL_SSLVERSION_SSLv3:
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L /* 1.1.0 */
+ SSL_CTX_set_min_proto_version(BACKEND->ctx, SSL3_VERSION);
+ SSL_CTX_set_max_proto_version(BACKEND->ctx, SSL3_VERSION);
+#else
+ ctx_options |= SSL_OP_NO_SSLv2;
+ ctx_options |= SSL_OP_NO_TLSv1;
+# if OPENSSL_VERSION_NUMBER >= 0x1000100FL
+ ctx_options |= SSL_OP_NO_TLSv1_1;
+ ctx_options |= SSL_OP_NO_TLSv1_2;
+# ifdef TLS1_3_VERSION
+ ctx_options |= SSL_OP_NO_TLSv1_3;
+# endif
+# endif
#endif
+ break;
+
+ /* "--tlsv<x.y>" options mean TLS >= version <x.y> */
+ case CURL_SSLVERSION_DEFAULT:
+ case CURL_SSLVERSION_TLSv1: /* TLS >= version 1.0 */
+ case CURL_SSLVERSION_TLSv1_0: /* TLS >= version 1.0 */
+ case CURL_SSLVERSION_TLSv1_1: /* TLS >= version 1.1 */
+ case CURL_SSLVERSION_TLSv1_2: /* TLS >= version 1.2 */
+ case CURL_SSLVERSION_TLSv1_3: /* TLS >= version 1.3 */
+ /* asking for any TLS version as the minimum, means no SSL versions
+ allowed */
+ ctx_options |= SSL_OP_NO_SSLv2;
+ ctx_options |= SSL_OP_NO_SSLv3;
+
+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
+ result = set_ssl_version_min_max(BACKEND->ctx, conn);
+#else
+ result = set_ssl_version_min_max_legacy(&ctx_options, conn, sockindex);
#endif
- break;
+ if(result != CURLE_OK)
+ return result;
+ break;
- default:
- failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
- return CURLE_SSL_CONNECT_ERROR;
+ default:
+ failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
+ return CURLE_SSL_CONNECT_ERROR;
}
SSL_CTX_set_options(BACKEND->ctx, ctx_options);
@@ -2654,11 +2763,11 @@ static CURLcode ossl_connect_step1(struct connectdata *conn, int sockindex)
}
/* Try building a chain using issuers in the trusted store first to avoid
- problems with server-sent legacy intermediates.
- Newer versions of OpenSSL do alternate chain checking by default which
- gives us the same fix without as much of a performance hit (slight), so we
- prefer that if available.
- https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
+ problems with server-sent legacy intermediates. Newer versions of
+ OpenSSL do alternate chain checking by default which gives us the same
+ fix without as much of a performance hit (slight), so we prefer that if
+ available.
+ https://rt.openssl.org/Ticket/Display.html?id=3621&user=guest&pass=guest
*/
#if defined(X509_V_FLAG_TRUSTED_FIRST) && !defined(X509_V_FLAG_NO_ALT_CHAINS)
if(verifypeer) {
@@ -3038,6 +3147,12 @@ static int X509V3_ext(struct Curl_easy *data,
return 0; /* all is fine */
}
+#ifdef OPENSSL_IS_BORINGSSL
+typedef size_t numcert_t;
+#else
+typedef int numcert_t;
+#endif
+
static CURLcode get_cert_chain(struct connectdata *conn,
struct ssl_connect_data *connssl)
@@ -3046,7 +3161,7 @@ static CURLcode get_cert_chain(struct connectdata *conn,
STACK_OF(X509) *sk;
int i;
struct Curl_easy *data = conn->data;
- int numcerts;
+ numcert_t numcerts;
BIO *mem;
sk = SSL_get_peer_cert_chain(BACKEND->handle);
@@ -3056,14 +3171,14 @@ static CURLcode get_cert_chain(struct connectdata *conn,
numcerts = sk_X509_num(sk);
- result = Curl_ssl_init_certinfo(data, numcerts);
+ result = Curl_ssl_init_certinfo(data, (int)numcerts);
if(result) {
return result;
}
mem = BIO_new(BIO_s_mem());
- for(i = 0; i < numcerts; i++) {
+ for(i = 0; i < (int)numcerts; i++) {
ASN1_INTEGER *num;
X509 *x = sk_X509_value(sk, i);
EVP_PKEY *pubkey = NULL;
diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index 6a0e60fb..42281989 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -515,14 +515,10 @@ void Curl_ssl_close_all(struct Curl_easy *data)
#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
defined(USE_SECTRANSP) || defined(USE_POLARSSL) || defined(USE_NSS) || \
defined(USE_MBEDTLS) || defined(USE_WOLFSSL)
-int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks)
+int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks)
{
struct ssl_connect_data *connssl = &conn->ssl[FIRSTSOCKET];
- if(!numsocks)
- return GETSOCK_BLANK;
-
if(connssl->connecting_state == ssl_connect_2_writing) {
/* write mode */
socks[0] = conn->sock[FIRSTSOCKET];
@@ -538,12 +534,10 @@ int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks,
}
#else
int Curl_ssl_getsock(struct connectdata *conn,
- curl_socket_t *socks,
- int numsocks)
+ curl_socket_t *socks)
{
(void)conn;
(void)socks;
- (void)numsocks;
return GETSOCK_BLANK;
}
/* USE_OPENSSL || USE_GNUTLS || USE_SCHANNEL || USE_SECTRANSP || USE_NSS */
diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
index 173d360d..61d8416c 100644
--- a/lib/vtls/vtls.h
+++ b/lib/vtls/vtls.h
@@ -143,8 +143,7 @@ bool Curl_ssl_config_matches(struct ssl_primary_config* data,
bool Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
struct ssl_primary_config *dest);
void Curl_free_primary_ssl_config(struct ssl_primary_config* sslc);
-int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks,
- int numsocks);
+int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks);
int Curl_ssl_backend(void);
diff --git a/packages/Makefile.in b/packages/Makefile.in
index b8e3f945..af3d79af 100644
--- a/packages/Makefile.in
+++ b/packages/Makefile.in
@@ -329,8 +329,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -438,9 +442,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu packages/Makefile
+ $(AUTOMAKE) --foreign packages/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400
index c653cece..95a55841 100644
--- a/packages/OS400/README.OS400
+++ b/packages/OS400/README.OS400
@@ -120,6 +120,7 @@ options:
CURLOPT_RTSP_SESSION_UID
CURLOPT_RTSP_STREAM_URI
CURLOPT_RTSP_TRANSPORT
+ CURLOPT_SASL_AUTHZID
CURLOPT_SERVICE_NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
diff --git a/packages/OS400/ccsidcurl.c b/packages/OS400/ccsidcurl.c
index 4b462a27..11e4c777 100644
--- a/packages/OS400/ccsidcurl.c
+++ b/packages/OS400/ccsidcurl.c
@@ -1141,12 +1141,7 @@ curl_easy_setopt_ccsid(CURL *curl, CURLoption tag, ...)
if(testwarn) {
testwarn = 0;
- if(
-#ifdef USE_ALTSVC
- (int) STRING_LASTZEROTERMINATED != (int) STRING_ALTSVC + 1 ||
-#else
- (int) STRING_LASTZEROTERMINATED != (int) STRING_DOH + 1 ||
-#endif
+ if((int) STRING_LASTZEROTERMINATED != (int) STRING_SASL_AUTHZID + 1 ||
(int) STRING_LAST != (int) STRING_COPYPOSTFIELDS + 1)
curl_mfprintf(stderr,
"*** WARNING: curl_easy_setopt_ccsid() should be reworked ***\n");
@@ -1213,6 +1208,7 @@ curl_easy_setopt_ccsid(CURL *curl, CURLoption tag, ...)
case CURLOPT_RTSP_SESSION_ID:
case CURLOPT_RTSP_STREAM_URI:
case CURLOPT_RTSP_TRANSPORT:
+ case CURLOPT_SASL_AUTHZID:
case CURLOPT_SERVICE_NAME:
case CURLOPT_SOCKS5_GSSAPI_SERVICE:
case CURLOPT_SSH_HOST_PUBLIC_KEY_MD5:
diff --git a/packages/OS400/ccsidcurl.h b/packages/OS400/ccsidcurl.h
index 895db700..9594f661 100644
--- a/packages/OS400/ccsidcurl.h
+++ b/packages/OS400/ccsidcurl.h
@@ -1,3 +1,5 @@
+#ifndef CURLINC_CCSIDCURL_H
+#define CURLINC_CCSIDCURL_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
@@ -5,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -20,10 +22,6 @@
*
*
***************************************************************************/
-
-#ifndef __CURL_CCSIDCURL_H
-#define __CURL_CCSIDCURL_H
-
#include "curl.h"
#include "easy.h"
#include "multi.h"
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index 8e36bac3..5a53b1b2 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -138,6 +138,8 @@
d c X'00800000'
d CURL_VERSION_ALTSVC...
d c X'01000000'
+ d CURL_VERSION_HTTP3...
+ d c X'02000000'
*
d CURL_HTTPPOST_FILENAME...
d c X'00000001'
@@ -1418,6 +1420,8 @@
d c 10287
d CURLOPT_MAXAGE_CONN...
d c 00288
+ d CURLOPT_SASL_AUTHZID...
+ d c 10289
*
/if not defined(CURL_NO_OLDIES)
d CURLOPT_FILE c 10001
diff --git a/packages/vms/Makefile.in b/packages/vms/Makefile.in
index 059f7a22..e9088986 100644
--- a/packages/vms/Makefile.in
+++ b/packages/vms/Makefile.in
@@ -269,8 +269,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -384,9 +388,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/vms/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/vms/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu packages/vms/Makefile
+ $(AUTOMAKE) --foreign packages/vms/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/plan9/BUILD.PLAN9.txt b/plan9/BUILD.PLAN9.txt
new file mode 100644
index 00000000..6df23d31
--- /dev/null
+++ b/plan9/BUILD.PLAN9.txt
@@ -0,0 +1,55 @@
+Prerequirement
+==============
+This document describes how to compile, build and install curl and libcurl
+from sources using mk. To build it, you will require to install latest
+9legacy patches into Plan 9. Also Plan 9 still have no configuration option so
+both zlib and libopenssl are required too.
+
+The zlib that is available on Plan 9 can be downloaded from:
+
+ https://github.com/madler/zlib/pull/398
+
+LibreSSL Portable can be downloaded from:
+
+ https://github.com/libressl-portable/portable/pull/510
+
+Instruction
+===========
+First, you should construct namespace as like described below:
+
+% bind -ac ../lib lib
+% bind -ac ../src src
+% bind -ac ../include include
+% bind -ac .. .
+
+Then you will see as shown below (excerpt):
+
+ curl.git/
+ |_plan9
+ | |_BUILD.PLAN9.txt
+ | |_CHANGES
+ | |_CMake
+ | | :
+ | |_mkfile
+ | |_mkfile.proto
+ | |_include
+ | | |_Makefile.am
+ | | | :
+ | | |_mkfile
+ | |_lib
+ | | |_CMakeLists.txt
+ | | | :
+ | | |_mkfile
+ | | |_mkfile.inc
+ | |_src
+ | | |_CMakeLists.txt
+ | | | :
+ | | |_mkfile
+ | | |_mkfile.inc
+ |_lib
+ |_src
+
+After constructing namespace, you can run mk on plan9 directory.
+
+% mk
+% mk install
diff --git a/plan9/include/mkfile b/plan9/include/mkfile
new file mode 100644
index 00000000..c1ed850f
--- /dev/null
+++ b/plan9/include/mkfile
@@ -0,0 +1,34 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+DIR=/sys/include/ape/curl
+HFILES=`{ls curl/*.h}
+
+all:V: $HFILES
+
+install:V: all
+ mkdir -p $DIR
+ cp curl/*.h $DIR/
+
+clean:V: $HFILES # do nothing
+
+nuke:V: clean
diff --git a/plan9/lib/mkfile b/plan9/lib/mkfile
new file mode 100644
index 00000000..d7a7ac5e
--- /dev/null
+++ b/plan9/lib/mkfile
@@ -0,0 +1,39 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+<../mkfile.proto
+<|mkfile.inc
+
+CFLAGS=$CFLAGS -I../include -I. -c
+
+OFILES=${CSOURCES:%.c=%.$O}
+HFILES=$HHEADERS
+LIB=/$objtype/lib/ape/libcurl.a
+
+CLEANFILES=\
+ ${LIB_VAUTH_CFILES:%.c=%.$O}\
+ ${LIB_VTLS_CFILES:%.c=%.$O}\
+
+</sys/src/cmd/mklib
+
+%.$O: %.c
+ $CC $CFLAGS -o $target $stem.c
diff --git a/plan9/lib/mkfile.inc b/plan9/lib/mkfile.inc
new file mode 100755
index 00000000..0966d773
--- /dev/null
+++ b/plan9/lib/mkfile.inc
@@ -0,0 +1,25 @@
+#!/bin/rc
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+# rename $(VAR) -> $VAR
+sed 's/\$\(([A-Z_]+)\)/$\1/g' Makefile.inc
diff --git a/plan9/mkfile b/plan9/mkfile
new file mode 100644
index 00000000..a9b4fe6d
--- /dev/null
+++ b/plan9/mkfile
@@ -0,0 +1,36 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+</sys/src/ape/config
+
+DIRS=\
+ lib\
+ src\
+ include\
+
+default:V: all
+
+all install clean nuke:V:
+ for(i in $DIRS) @{
+ cd $i
+ mk $target
+ }
diff --git a/plan9/mkfile.proto b/plan9/mkfile.proto
new file mode 100644
index 00000000..edb79f50
--- /dev/null
+++ b/plan9/mkfile.proto
@@ -0,0 +1,30 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+</sys/src/ape/config
+
+CFLAGS=\
+ -D__PLAN9__\
+ -D_POSIX_SOURCE\
+ -D_BSD_EXTENSION\
+ -D_SUSV2_SOURCE\
+ -D_REENTRANT_SOURCE\
diff --git a/plan9/src/mkfile b/plan9/src/mkfile
new file mode 100644
index 00000000..889d0668
--- /dev/null
+++ b/plan9/src/mkfile
@@ -0,0 +1,45 @@
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+<../mkfile.proto
+<|mkfile.inc
+
+CFLAGS=$CFLAGS -I../include -I../lib -c
+
+OFILES=${CURL_CFILES:%.c=%.$O}
+HFILES=$CURL_HFILES
+
+LIB=\
+ /$objtype/lib/ape/libcurl.a\
+ /$objtype/lib/ape/libssl.a\
+ /$objtype/lib/ape/libcrypto.a\
+ /$objtype/lib/ape/libz.a\
+
+BIN=/$objtype/bin
+TARG=curl
+
+CLEANFILES=tool_hugehelp.c
+
+</sys/src/cmd/mkone
+
+tool_hugehelp.c:
+ echo 'void hugehelp(void) {}' >$target
diff --git a/plan9/src/mkfile.inc b/plan9/src/mkfile.inc
new file mode 100755
index 00000000..0966d773
--- /dev/null
+++ b/plan9/src/mkfile.inc
@@ -0,0 +1,25 @@
+#!/bin/rc
+#***************************************************************************
+# _ _ ____ _
+# Project ___| | | | _ \| |
+# / __| | | | |_) | |
+# | (__| |_| | _ <| |___
+# \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at https://curl.haxx.se/docs/copyright.html.
+#
+# You may opt to use, copy, modify, merge, publish, distribute and/or sell
+# copies of the Software, and permit persons to whom the Software is
+# furnished to do so, under the terms of the COPYING file.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+###########################################################################
+
+# rename $(VAR) -> $VAR
+sed 's/\$\(([A-Z_]+)\)/$\1/g' Makefile.inc
diff --git a/projects/Windows/VC10/lib/libcurl.vcxproj b/projects/Windows/VC10/lib/libcurl.vcxproj
index a534b133..7a60664c 100644
--- a/projects/Windows/VC10/lib/libcurl.vcxproj
+++ b/projects/Windows/VC10/lib/libcurl.vcxproj
@@ -2417,8 +2417,6 @@
<ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
<ClCompile Include="..\..\..\..\lib\speedcheck.c" />
<ClCompile Include="..\..\..\..\lib\splay.c" />
- <ClCompile Include="..\..\..\..\lib\ssh.c" />
- <ClCompile Include="..\..\..\..\lib\ssh-libssh.c" />
<ClCompile Include="..\..\..\..\lib\strcase.c" />
<ClCompile Include="..\..\..\..\lib\strdup.c" />
<ClCompile Include="..\..\..\..\lib\strerror.c" />
@@ -2540,6 +2538,7 @@
<ClInclude Include="..\..\..\..\lib\pop3.h" />
<ClInclude Include="..\..\..\..\lib\progress.h" />
<ClInclude Include="..\..\..\..\lib\psl.h" />
+ <ClInclude Include="..\..\..\..\lib\quic.h" />
<ClInclude Include="..\..\..\..\lib\rand.h" />
<ClInclude Include="..\..\..\..\lib\rtsp.h" />
<ClInclude Include="..\..\..\..\lib\select.h" />
diff --git a/projects/Windows/VC10/src/curl.vcxproj b/projects/Windows/VC10/src/curl.vcxproj
index 850dd6f9..a4dfabca 100644
--- a/projects/Windows/VC10/src/curl.vcxproj
+++ b/projects/Windows/VC10/src/curl.vcxproj
@@ -2662,6 +2662,7 @@
<ClCompile Include="..\..\..\..\src\tool_panykey.c" />
<ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />
<ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_progress.c" />
<ClCompile Include="..\..\..\..\src\tool_setopt.c" />
<ClCompile Include="..\..\..\..\src\tool_sleep.c" />
<ClCompile Include="..\..\..\..\src\tool_strdup.c" />
@@ -2709,6 +2710,7 @@
<ClInclude Include="..\..\..\..\src\tool_panykey.h" />
<ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />
<ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_progress.h" />
<ClInclude Include="..\..\..\..\src\tool_sdecls.h" />
<ClInclude Include="..\..\..\..\src\tool_setopt.h" />
<ClInclude Include="..\..\..\..\src\tool_setup.h" />
diff --git a/projects/Windows/VC11/lib/libcurl.vcxproj b/projects/Windows/VC11/lib/libcurl.vcxproj
index cd7979f6..0aea58de 100644
--- a/projects/Windows/VC11/lib/libcurl.vcxproj
+++ b/projects/Windows/VC11/lib/libcurl.vcxproj
@@ -2473,8 +2473,6 @@
<ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
<ClCompile Include="..\..\..\..\lib\speedcheck.c" />
<ClCompile Include="..\..\..\..\lib\splay.c" />
- <ClCompile Include="..\..\..\..\lib\ssh.c" />
- <ClCompile Include="..\..\..\..\lib\ssh-libssh.c" />
<ClCompile Include="..\..\..\..\lib\strcase.c" />
<ClCompile Include="..\..\..\..\lib\strdup.c" />
<ClCompile Include="..\..\..\..\lib\strerror.c" />
@@ -2596,6 +2594,7 @@
<ClInclude Include="..\..\..\..\lib\pop3.h" />
<ClInclude Include="..\..\..\..\lib\progress.h" />
<ClInclude Include="..\..\..\..\lib\psl.h" />
+ <ClInclude Include="..\..\..\..\lib\quic.h" />
<ClInclude Include="..\..\..\..\lib\rand.h" />
<ClInclude Include="..\..\..\..\lib\rtsp.h" />
<ClInclude Include="..\..\..\..\lib\select.h" />
diff --git a/projects/Windows/VC11/src/curl.vcxproj b/projects/Windows/VC11/src/curl.vcxproj
index 3e6beb10..0c9adcbc 100644
--- a/projects/Windows/VC11/src/curl.vcxproj
+++ b/projects/Windows/VC11/src/curl.vcxproj
@@ -2718,6 +2718,7 @@
<ClCompile Include="..\..\..\..\src\tool_panykey.c" />
<ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />
<ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_progress.c" />
<ClCompile Include="..\..\..\..\src\tool_setopt.c" />
<ClCompile Include="..\..\..\..\src\tool_sleep.c" />
<ClCompile Include="..\..\..\..\src\tool_strdup.c" />
@@ -2765,6 +2766,7 @@
<ClInclude Include="..\..\..\..\src\tool_panykey.h" />
<ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />
<ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_progress.h" />
<ClInclude Include="..\..\..\..\src\tool_sdecls.h" />
<ClInclude Include="..\..\..\..\src\tool_setopt.h" />
<ClInclude Include="..\..\..\..\src\tool_setup.h" />
diff --git a/projects/Windows/VC12/lib/libcurl.vcxproj b/projects/Windows/VC12/lib/libcurl.vcxproj
index c77e935d..01a7bae6 100644
--- a/projects/Windows/VC12/lib/libcurl.vcxproj
+++ b/projects/Windows/VC12/lib/libcurl.vcxproj
@@ -2473,8 +2473,6 @@
<ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
<ClCompile Include="..\..\..\..\lib\speedcheck.c" />
<ClCompile Include="..\..\..\..\lib\splay.c" />
- <ClCompile Include="..\..\..\..\lib\ssh.c" />
- <ClCompile Include="..\..\..\..\lib\ssh-libssh.c" />
<ClCompile Include="..\..\..\..\lib\strcase.c" />
<ClCompile Include="..\..\..\..\lib\strdup.c" />
<ClCompile Include="..\..\..\..\lib\strerror.c" />
@@ -2596,6 +2594,7 @@
<ClInclude Include="..\..\..\..\lib\pop3.h" />
<ClInclude Include="..\..\..\..\lib\progress.h" />
<ClInclude Include="..\..\..\..\lib\psl.h" />
+ <ClInclude Include="..\..\..\..\lib\quic.h" />
<ClInclude Include="..\..\..\..\lib\rand.h" />
<ClInclude Include="..\..\..\..\lib\rtsp.h" />
<ClInclude Include="..\..\..\..\lib\select.h" />
diff --git a/projects/Windows/VC12/src/curl.vcxproj b/projects/Windows/VC12/src/curl.vcxproj
index bb3bb764..c03c56de 100644
--- a/projects/Windows/VC12/src/curl.vcxproj
+++ b/projects/Windows/VC12/src/curl.vcxproj
@@ -2718,6 +2718,7 @@
<ClCompile Include="..\..\..\..\src\tool_panykey.c" />
<ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />
<ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_progress.c" />
<ClCompile Include="..\..\..\..\src\tool_setopt.c" />
<ClCompile Include="..\..\..\..\src\tool_sleep.c" />
<ClCompile Include="..\..\..\..\src\tool_strdup.c" />
@@ -2765,6 +2766,7 @@
<ClInclude Include="..\..\..\..\src\tool_panykey.h" />
<ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />
<ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_progress.h" />
<ClInclude Include="..\..\..\..\src\tool_sdecls.h" />
<ClInclude Include="..\..\..\..\src\tool_setopt.h" />
<ClInclude Include="..\..\..\..\src\tool_setup.h" />
diff --git a/projects/Windows/VC14/lib/libcurl.vcxproj b/projects/Windows/VC14/lib/libcurl.vcxproj
index 9ca70939..943046d0 100644
--- a/projects/Windows/VC14/lib/libcurl.vcxproj
+++ b/projects/Windows/VC14/lib/libcurl.vcxproj
@@ -2473,8 +2473,6 @@
<ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
<ClCompile Include="..\..\..\..\lib\speedcheck.c" />
<ClCompile Include="..\..\..\..\lib\splay.c" />
- <ClCompile Include="..\..\..\..\lib\ssh.c" />
- <ClCompile Include="..\..\..\..\lib\ssh-libssh.c" />
<ClCompile Include="..\..\..\..\lib\strcase.c" />
<ClCompile Include="..\..\..\..\lib\strdup.c" />
<ClCompile Include="..\..\..\..\lib\strerror.c" />
@@ -2596,6 +2594,7 @@
<ClInclude Include="..\..\..\..\lib\pop3.h" />
<ClInclude Include="..\..\..\..\lib\progress.h" />
<ClInclude Include="..\..\..\..\lib\psl.h" />
+ <ClInclude Include="..\..\..\..\lib\quic.h" />
<ClInclude Include="..\..\..\..\lib\rand.h" />
<ClInclude Include="..\..\..\..\lib\rtsp.h" />
<ClInclude Include="..\..\..\..\lib\select.h" />
diff --git a/projects/Windows/VC14/src/curl.vcxproj b/projects/Windows/VC14/src/curl.vcxproj
index c2089600..36806609 100644
--- a/projects/Windows/VC14/src/curl.vcxproj
+++ b/projects/Windows/VC14/src/curl.vcxproj
@@ -2718,6 +2718,7 @@
<ClCompile Include="..\..\..\..\src\tool_panykey.c" />
<ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />
<ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_progress.c" />
<ClCompile Include="..\..\..\..\src\tool_setopt.c" />
<ClCompile Include="..\..\..\..\src\tool_sleep.c" />
<ClCompile Include="..\..\..\..\src\tool_strdup.c" />
@@ -2765,6 +2766,7 @@
<ClInclude Include="..\..\..\..\src\tool_panykey.h" />
<ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />
<ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_progress.h" />
<ClInclude Include="..\..\..\..\src\tool_sdecls.h" />
<ClInclude Include="..\..\..\..\src\tool_setopt.h" />
<ClInclude Include="..\..\..\..\src\tool_setup.h" />
diff --git a/projects/Windows/VC15/lib/libcurl.vcxproj b/projects/Windows/VC15/lib/libcurl.vcxproj
index 3a6978d0..1f14dbab 100644
--- a/projects/Windows/VC15/lib/libcurl.vcxproj
+++ b/projects/Windows/VC15/lib/libcurl.vcxproj
@@ -2445,8 +2445,6 @@
<ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
<ClCompile Include="..\..\..\..\lib\speedcheck.c" />
<ClCompile Include="..\..\..\..\lib\splay.c" />
- <ClCompile Include="..\..\..\..\lib\ssh.c" />
- <ClCompile Include="..\..\..\..\lib\ssh-libssh.c" />
<ClCompile Include="..\..\..\..\lib\strcase.c" />
<ClCompile Include="..\..\..\..\lib\strdup.c" />
<ClCompile Include="..\..\..\..\lib\strerror.c" />
@@ -2568,6 +2566,7 @@
<ClInclude Include="..\..\..\..\lib\pop3.h" />
<ClInclude Include="..\..\..\..\lib\progress.h" />
<ClInclude Include="..\..\..\..\lib\psl.h" />
+ <ClInclude Include="..\..\..\..\lib\quic.h" />
<ClInclude Include="..\..\..\..\lib\rand.h" />
<ClInclude Include="..\..\..\..\lib\rtsp.h" />
<ClInclude Include="..\..\..\..\lib\select.h" />
diff --git a/projects/Windows/VC15/src/curl.vcxproj b/projects/Windows/VC15/src/curl.vcxproj
index 7c12fab8..f1d44833 100644
--- a/projects/Windows/VC15/src/curl.vcxproj
+++ b/projects/Windows/VC15/src/curl.vcxproj
@@ -2690,6 +2690,7 @@
<ClCompile Include="..\..\..\..\src\tool_panykey.c" />
<ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />
<ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />
+ <ClCompile Include="..\..\..\..\src\tool_progress.c" />
<ClCompile Include="..\..\..\..\src\tool_setopt.c" />
<ClCompile Include="..\..\..\..\src\tool_sleep.c" />
<ClCompile Include="..\..\..\..\src\tool_strdup.c" />
@@ -2737,6 +2738,7 @@
<ClInclude Include="..\..\..\..\src\tool_panykey.h" />
<ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />
<ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />
+ <ClInclude Include="..\..\..\..\src\tool_progress.h" />
<ClInclude Include="..\..\..\..\src\tool_sdecls.h" />
<ClInclude Include="..\..\..\..\src\tool_setopt.h" />
<ClInclude Include="..\..\..\..\src\tool_setup.h" />
diff --git a/projects/Windows/VC6/lib/libcurl.dsp b/projects/Windows/VC6/lib/libcurl.dsp
index 16c65184..19bea26e 100644
--- a/projects/Windows/VC6/lib/libcurl.dsp
+++ b/projects/Windows/VC6/lib/libcurl.dsp
@@ -1106,14 +1106,6 @@ SOURCE=..\..\..\..\lib\splay.c
# End Source File
# Begin Source File
-SOURCE=..\..\..\..\lib\ssh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\lib\ssh-libssh.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\..\..\lib\strcase.c
# End Source File
# Begin Source File
@@ -1594,6 +1586,10 @@ SOURCE=..\..\..\..\lib\psl.h
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\lib\quic.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\lib\rand.h
# End Source File
# Begin Source File
diff --git a/projects/Windows/VC6/src/curl.dsp b/projects/Windows/VC6/src/curl.dsp
index 05dd73c7..ff2617a9 100644
--- a/projects/Windows/VC6/src/curl.dsp
+++ b/projects/Windows/VC6/src/curl.dsp
@@ -819,6 +819,10 @@ SOURCE=..\..\..\..\src\tool_parsecfg.c
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\src\tool_progress.c
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\src\tool_setopt.c
# End Source File
# Begin Source File
@@ -1003,6 +1007,10 @@ SOURCE=..\..\..\..\src\tool_parsecfg.h
# End Source File
# Begin Source File
+SOURCE=..\..\..\..\src\tool_progress.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\..\..\src\tool_sdecls.h
# End Source File
# Begin Source File
diff --git a/projects/Windows/VC7.1/lib/libcurl.vcproj b/projects/Windows/VC7.1/lib/libcurl.vcproj
index 0203dbee..3b07dca1 100644
--- a/projects/Windows/VC7.1/lib/libcurl.vcproj
+++ b/projects/Windows/VC7.1/lib/libcurl.vcproj
@@ -1538,12 +1538,6 @@
RelativePath="..\..\..\..\lib\splay.c">
</File>
<File
- RelativePath="..\..\..\..\lib\ssh.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ssh-libssh.c">
- </File>
- <File
RelativePath="..\..\..\..\lib\strcase.c">
</File>
<File
@@ -1830,6 +1824,9 @@
RelativePath="..\..\..\..\lib\psl.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\quic.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\rand.h">
</File>
<File
diff --git a/projects/Windows/VC7.1/src/curl.vcproj b/projects/Windows/VC7.1/src/curl.vcproj
index 8fecea6b..00f6a7f6 100644
--- a/projects/Windows/VC7.1/src/curl.vcproj
+++ b/projects/Windows/VC7.1/src/curl.vcproj
@@ -1467,6 +1467,9 @@
RelativePath="..\..\..\..\src\tool_parsecfg.c">
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.c">
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_setopt.c">
</File>
<File
@@ -1606,6 +1609,9 @@
RelativePath="..\..\..\..\src\tool_parsecfg.h">
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.h">
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_sdecls.h">
</File>
<File
diff --git a/projects/Windows/VC7/lib/libcurl.vcproj b/projects/Windows/VC7/lib/libcurl.vcproj
index bab7b564..61e31c22 100644
--- a/projects/Windows/VC7/lib/libcurl.vcproj
+++ b/projects/Windows/VC7/lib/libcurl.vcproj
@@ -1392,12 +1392,6 @@
RelativePath="..\..\..\..\lib\splay.c">
</File>
<File
- RelativePath="..\..\..\..\lib\ssh.c">
- </File>
- <File
- RelativePath="..\..\..\..\lib\ssh-libssh.c">
- </File>
- <File
RelativePath="..\..\..\..\lib\strcase.c">
</File>
<File
@@ -1684,6 +1678,9 @@
RelativePath="..\..\..\..\lib\psl.h">
</File>
<File
+ RelativePath="..\..\..\..\lib\quic.h">
+ </File>
+ <File
RelativePath="..\..\..\..\lib\rand.h">
</File>
<File
diff --git a/projects/Windows/VC7/src/curl.vcproj b/projects/Windows/VC7/src/curl.vcproj
index 821aebc3..fe5a6a8f 100644
--- a/projects/Windows/VC7/src/curl.vcproj
+++ b/projects/Windows/VC7/src/curl.vcproj
@@ -1321,6 +1321,9 @@
RelativePath="..\..\..\..\src\tool_parsecfg.c">
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.c">
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_setopt.c">
</File>
<File
@@ -1460,6 +1463,9 @@
RelativePath="..\..\..\..\src\tool_parsecfg.h">
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.h">
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_sdecls.h">
</File>
<File
diff --git a/projects/Windows/VC8/lib/libcurl.vcproj b/projects/Windows/VC8/lib/libcurl.vcproj
index a9e670d2..f258fc77 100644
--- a/projects/Windows/VC8/lib/libcurl.vcproj
+++ b/projects/Windows/VC8/lib/libcurl.vcproj
@@ -3993,14 +3993,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\ssh.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ssh-libssh.c"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\strcase.c"
>
</File>
@@ -4381,6 +4373,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\quic.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\rand.h"
>
</File>
diff --git a/projects/Windows/VC8/src/curl.vcproj b/projects/Windows/VC8/src/curl.vcproj
index fb031cf1..7b554c78 100644
--- a/projects/Windows/VC8/src/curl.vcproj
+++ b/projects/Windows/VC8/src/curl.vcproj
@@ -4221,6 +4221,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_setopt.c"
>
</File>
@@ -4405,6 +4409,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_sdecls.h"
>
</File>
diff --git a/projects/Windows/VC9/lib/libcurl.vcproj b/projects/Windows/VC9/lib/libcurl.vcproj
index f3999d8e..a02a0d97 100644
--- a/projects/Windows/VC9/lib/libcurl.vcproj
+++ b/projects/Windows/VC9/lib/libcurl.vcproj
@@ -3934,14 +3934,6 @@
>
</File>
<File
- RelativePath="..\..\..\..\lib\ssh.c"
- >
- </File>
- <File
- RelativePath="..\..\..\..\lib\ssh-libssh.c"
- >
- </File>
- <File
RelativePath="..\..\..\..\lib\strcase.c"
>
</File>
@@ -4322,6 +4314,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\lib\quic.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\lib\rand.h"
>
</File>
diff --git a/projects/Windows/VC9/src/curl.vcproj b/projects/Windows/VC9/src/curl.vcproj
index 1d0ae65e..6e702f49 100644
--- a/projects/Windows/VC9/src/curl.vcproj
+++ b/projects/Windows/VC9/src/curl.vcproj
@@ -4078,6 +4078,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_setopt.c"
>
</File>
@@ -4262,6 +4266,10 @@
>
</File>
<File
+ RelativePath="..\..\..\..\src\tool_progress.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\src\tool_sdecls.h"
>
</File>
diff --git a/projects/build-openssl.bat b/projects/build-openssl.bat
index 793a63be..c9633b44 100644
--- a/projects/build-openssl.bat
+++ b/projects/build-openssl.bat
@@ -95,6 +95,19 @@ rem ***************************************************************************
) else (
set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
)
+ ) else if /i "%~1" == "vc14.2" (
+ set VC_VER=14.2
+ set VC_DESC=VC14.2
+
+ rem Determine the VC14.2 path based on the installed edition in descending
+ rem order (Enterprise, then Professional and finally Community)
+ if exist "%PF%\Microsoft Visual Studio\2019\Enterprise\VC" (
+ set "VC_PATH=Microsoft Visual Studio\2019\Enterprise\VC"
+ ) else if exist "%PF%\Microsoft Visual Studio\2019\Professional\VC" (
+ set "VC_PATH=Microsoft Visual Studio\2019\Professional\VC"
+ ) else (
+ set "VC_PATH=Microsoft Visual Studio\2019\Community\VC"
+ )
) else if /i "%~1%" == "x86" (
set BUILD_PLATFORM=x86
) else if /i "%~1%" == "x64" (
@@ -202,6 +215,7 @@ rem ***************************************************************************
if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
+ if "%VC_VER%" == "14.2" set VCVARS_PLATFORM=amd64
)
if exist "%START_DIR%\ms\do_ms.bat" (
@@ -222,6 +236,8 @@ rem ***************************************************************************
call "%ABS_VC_PATH%\bin\vcvars32"
) else if "%VC_VER%" == "14.1" (
call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
+ ) else if "%VC_VER%" == "14.2" (
+ call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
) else (
call "%ABS_VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
)
@@ -569,7 +585,7 @@ rem
if not exist "%OUTDIR%\DLL Release" (
mkdir "%OUTDIR%\DLL Release" 1>nul
)
-
+
move !build_dir!\lib\*.lib "%OUTDIR%\DLL Release" 1>nul
move !build_dir!\bin\*.dll "%OUTDIR%\DLL Release" 1>nul
move !build_dir!\bin\*.exe "%OUTDIR%\DLL Release" 1>nul
@@ -605,6 +621,7 @@ rem
echo vc12 - Use Visual Studio 2013
echo vc14 - Use Visual Studio 2015
echo vc14.1 - Use Visual Studio 2017
+ echo vc14.2 - Use Visual Studio 2019
echo.
echo Platform:
echo.
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
index 2e58190b..01fbf94f 100644
--- a/scripts/Makefile.in
+++ b/scripts/Makefile.in
@@ -269,8 +269,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -372,9 +376,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign scripts/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu scripts/Makefile
+ $(AUTOMAKE) --foreign scripts/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/src/Makefile.am b/src/Makefile.am
index a26a5707..90f15624 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -123,7 +123,7 @@ $(HUGE): $(MANPAGE) $(MKHELP)
else # HAVE_LIBZ
# This generates the tool_hugehelp.c file uncompressed only
$(HUGE): $(MANPAGE) $(MKHELP)
- $(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE): \
+ $(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE); \
$(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE) )
endif
diff --git a/src/Makefile.in b/src/Makefile.in
index 54c3a061..ec1b71b3 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -139,9 +139,9 @@ am__libcurltool_la_SOURCES_DIST = slist_wc.c tool_binmode.c \
tool_getpass.c tool_help.c tool_helpers.c tool_homedir.c \
tool_hugehelp.c tool_libinfo.c tool_main.c tool_metalink.c \
tool_msgs.c tool_operate.c tool_operhlp.c tool_panykey.c \
- tool_paramhlp.c tool_parsecfg.c tool_strdup.c tool_setopt.c \
- tool_sleep.c tool_urlglob.c tool_util.c tool_vms.c \
- tool_writeout.c tool_xattr.c ../lib/strtoofft.c \
+ tool_paramhlp.c tool_parsecfg.c tool_progress.c tool_strdup.c \
+ tool_setopt.c tool_sleep.c tool_urlglob.c tool_util.c \
+ tool_vms.c tool_writeout.c tool_xattr.c ../lib/strtoofft.c \
../lib/nonblock.c ../lib/warnless.c ../lib/curl_ctype.c \
slist_wc.h tool_binmode.h tool_bname.h tool_cb_dbg.h \
tool_cb_hdr.h tool_cb_prg.h tool_cb_rea.h tool_cb_see.h \
@@ -150,10 +150,10 @@ am__libcurltool_la_SOURCES_DIST = slist_wc.c tool_binmode.c \
tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \
tool_homedir.h tool_hugehelp.h tool_libinfo.h tool_main.h \
tool_metalink.h tool_msgs.h tool_operate.h tool_operhlp.h \
- tool_panykey.h tool_paramhlp.h tool_parsecfg.h tool_sdecls.h \
- tool_setopt.h tool_setup.h tool_sleep.h tool_strdup.h \
- tool_urlglob.h tool_util.h tool_version.h tool_vms.h \
- tool_writeout.h tool_xattr.h
+ tool_panykey.h tool_paramhlp.h tool_parsecfg.h tool_progress.h \
+ tool_sdecls.h tool_setopt.h tool_setup.h tool_sleep.h \
+ tool_strdup.h tool_urlglob.h tool_util.h tool_version.h \
+ tool_vms.h tool_writeout.h tool_xattr.h
am__objects_1 = libcurltool_la-slist_wc.lo \
libcurltool_la-tool_binmode.lo libcurltool_la-tool_bname.lo \
libcurltool_la-tool_cb_dbg.lo libcurltool_la-tool_cb_hdr.lo \
@@ -170,7 +170,8 @@ am__objects_1 = libcurltool_la-slist_wc.lo \
libcurltool_la-tool_metalink.lo libcurltool_la-tool_msgs.lo \
libcurltool_la-tool_operate.lo libcurltool_la-tool_operhlp.lo \
libcurltool_la-tool_panykey.lo libcurltool_la-tool_paramhlp.lo \
- libcurltool_la-tool_parsecfg.lo libcurltool_la-tool_strdup.lo \
+ libcurltool_la-tool_parsecfg.lo \
+ libcurltool_la-tool_progress.lo libcurltool_la-tool_strdup.lo \
libcurltool_la-tool_setopt.lo libcurltool_la-tool_sleep.lo \
libcurltool_la-tool_urlglob.lo libcurltool_la-tool_util.lo \
libcurltool_la-tool_vms.lo libcurltool_la-tool_writeout.lo \
@@ -209,11 +210,11 @@ am__objects_6 = curl-slist_wc.$(OBJEXT) curl-tool_binmode.$(OBJEXT) \
curl-tool_metalink.$(OBJEXT) curl-tool_msgs.$(OBJEXT) \
curl-tool_operate.$(OBJEXT) curl-tool_operhlp.$(OBJEXT) \
curl-tool_panykey.$(OBJEXT) curl-tool_paramhlp.$(OBJEXT) \
- curl-tool_parsecfg.$(OBJEXT) curl-tool_strdup.$(OBJEXT) \
- curl-tool_setopt.$(OBJEXT) curl-tool_sleep.$(OBJEXT) \
- curl-tool_urlglob.$(OBJEXT) curl-tool_util.$(OBJEXT) \
- curl-tool_vms.$(OBJEXT) curl-tool_writeout.$(OBJEXT) \
- curl-tool_xattr.$(OBJEXT)
+ curl-tool_parsecfg.$(OBJEXT) curl-tool_progress.$(OBJEXT) \
+ curl-tool_strdup.$(OBJEXT) curl-tool_setopt.$(OBJEXT) \
+ curl-tool_sleep.$(OBJEXT) curl-tool_urlglob.$(OBJEXT) \
+ curl-tool_util.$(OBJEXT) curl-tool_vms.$(OBJEXT) \
+ curl-tool_writeout.$(OBJEXT) curl-tool_xattr.$(OBJEXT)
am__objects_7 = ../lib/curl-strtoofft.$(OBJEXT) \
../lib/curl-nonblock.$(OBJEXT) ../lib/curl-warnless.$(OBJEXT) \
../lib/curl-curl_ctype.$(OBJEXT)
@@ -276,6 +277,7 @@ am__depfiles_remade = ../lib/$(DEPDIR)/curl-curl_ctype.Po \
./$(DEPDIR)/curl-tool_panykey.Po \
./$(DEPDIR)/curl-tool_paramhlp.Po \
./$(DEPDIR)/curl-tool_parsecfg.Po \
+ ./$(DEPDIR)/curl-tool_progress.Po \
./$(DEPDIR)/curl-tool_setopt.Po ./$(DEPDIR)/curl-tool_sleep.Po \
./$(DEPDIR)/curl-tool_strdup.Po \
./$(DEPDIR)/curl-tool_urlglob.Po ./$(DEPDIR)/curl-tool_util.Po \
@@ -312,6 +314,7 @@ am__depfiles_remade = ../lib/$(DEPDIR)/curl-curl_ctype.Po \
./$(DEPDIR)/libcurltool_la-tool_panykey.Plo \
./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo \
./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo \
+ ./$(DEPDIR)/libcurltool_la-tool_progress.Plo \
./$(DEPDIR)/libcurltool_la-tool_setopt.Plo \
./$(DEPDIR)/libcurltool_la-tool_sleep.Plo \
./$(DEPDIR)/libcurltool_la-tool_strdup.Plo \
@@ -549,8 +552,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -701,6 +708,7 @@ CURL_CFILES = \
tool_panykey.c \
tool_paramhlp.c \
tool_parsecfg.c \
+ tool_progress.c \
tool_strdup.c \
tool_setopt.c \
tool_sleep.c \
@@ -742,6 +750,7 @@ CURL_HFILES = \
tool_panykey.h \
tool_paramhlp.h \
tool_parsecfg.h \
+ tool_progress.h \
tool_sdecls.h \
tool_setopt.h \
tool_setup.h \
@@ -968,6 +977,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_panykey.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_paramhlp.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_parsecfg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_progress.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_setopt.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_sleep.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curl-tool_strdup.Po@am__quote@ # am--include-marker
@@ -1007,6 +1017,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_panykey.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_progress.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_setopt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_sleep.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_strdup.Plo@am__quote@ # am--include-marker
@@ -1263,6 +1274,13 @@ libcurltool_la-tool_parsecfg.lo: tool_parsecfg.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_parsecfg.lo `test -f 'tool_parsecfg.c' || echo '$(srcdir)/'`tool_parsecfg.c
+libcurltool_la-tool_progress.lo: tool_progress.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_progress.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_progress.Tpo -c -o libcurltool_la-tool_progress.lo `test -f 'tool_progress.c' || echo '$(srcdir)/'`tool_progress.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_progress.Tpo $(DEPDIR)/libcurltool_la-tool_progress.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_progress.c' object='libcurltool_la-tool_progress.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_progress.lo `test -f 'tool_progress.c' || echo '$(srcdir)/'`tool_progress.c
+
libcurltool_la-tool_strdup.lo: tool_strdup.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_strdup.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_strdup.Tpo -c -o libcurltool_la-tool_strdup.lo `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_strdup.Tpo $(DEPDIR)/libcurltool_la-tool_strdup.Plo
@@ -1781,6 +1799,20 @@ curl-tool_parsecfg.obj: tool_parsecfg.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_parsecfg.obj `if test -f 'tool_parsecfg.c'; then $(CYGPATH_W) 'tool_parsecfg.c'; else $(CYGPATH_W) '$(srcdir)/tool_parsecfg.c'; fi`
+curl-tool_progress.o: tool_progress.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_progress.o -MD -MP -MF $(DEPDIR)/curl-tool_progress.Tpo -c -o curl-tool_progress.o `test -f 'tool_progress.c' || echo '$(srcdir)/'`tool_progress.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curl-tool_progress.Tpo $(DEPDIR)/curl-tool_progress.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_progress.c' object='curl-tool_progress.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_progress.o `test -f 'tool_progress.c' || echo '$(srcdir)/'`tool_progress.c
+
+curl-tool_progress.obj: tool_progress.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_progress.obj -MD -MP -MF $(DEPDIR)/curl-tool_progress.Tpo -c -o curl-tool_progress.obj `if test -f 'tool_progress.c'; then $(CYGPATH_W) 'tool_progress.c'; else $(CYGPATH_W) '$(srcdir)/tool_progress.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curl-tool_progress.Tpo $(DEPDIR)/curl-tool_progress.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_progress.c' object='curl-tool_progress.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o curl-tool_progress.obj `if test -f 'tool_progress.c'; then $(CYGPATH_W) 'tool_progress.c'; else $(CYGPATH_W) '$(srcdir)/tool_progress.c'; fi`
+
curl-tool_strdup.o: tool_strdup.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(curl_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT curl-tool_strdup.o -MD -MP -MF $(DEPDIR)/curl-tool_strdup.Tpo -c -o curl-tool_strdup.o `test -f 'tool_strdup.c' || echo '$(srcdir)/'`tool_strdup.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/curl-tool_strdup.Tpo $(DEPDIR)/curl-tool_strdup.Po
@@ -2200,6 +2232,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/curl-tool_panykey.Po
-rm -f ./$(DEPDIR)/curl-tool_paramhlp.Po
-rm -f ./$(DEPDIR)/curl-tool_parsecfg.Po
+ -rm -f ./$(DEPDIR)/curl-tool_progress.Po
-rm -f ./$(DEPDIR)/curl-tool_setopt.Po
-rm -f ./$(DEPDIR)/curl-tool_sleep.Po
-rm -f ./$(DEPDIR)/curl-tool_strdup.Po
@@ -2239,6 +2272,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/libcurltool_la-tool_panykey.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_progress.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_setopt.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_sleep.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_strdup.Plo
@@ -2331,6 +2365,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/curl-tool_panykey.Po
-rm -f ./$(DEPDIR)/curl-tool_paramhlp.Po
-rm -f ./$(DEPDIR)/curl-tool_parsecfg.Po
+ -rm -f ./$(DEPDIR)/curl-tool_progress.Po
-rm -f ./$(DEPDIR)/curl-tool_setopt.Po
-rm -f ./$(DEPDIR)/curl-tool_sleep.Po
-rm -f ./$(DEPDIR)/curl-tool_strdup.Po
@@ -2370,6 +2405,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/libcurltool_la-tool_panykey.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_paramhlp.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_parsecfg.Plo
+ -rm -f ./$(DEPDIR)/libcurltool_la-tool_progress.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_setopt.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_sleep.Plo
-rm -f ./$(DEPDIR)/libcurltool_la-tool_strdup.Plo
@@ -2436,7 +2472,7 @@ uninstall-am: uninstall-binPROGRAMS
@HAVE_LIBZ_TRUE@@USE_MANUAL_TRUE@ echo '#endif /* HAVE_LIBZ */' >> $(HUGE) )
# This generates the tool_hugehelp.c file uncompressed only
@HAVE_LIBZ_FALSE@@USE_MANUAL_TRUE@$(HUGE): $(MANPAGE) $(MKHELP)
-@HAVE_LIBZ_FALSE@@USE_MANUAL_TRUE@ $(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE): \
+@HAVE_LIBZ_FALSE@@USE_MANUAL_TRUE@ $(HUGECMD)(echo '#include "tool_setup.h"' > $(HUGE); \
@HAVE_LIBZ_FALSE@@USE_MANUAL_TRUE@ $(NROFF) $(MANPAGE) | $(PERL) $(MKHELP) >> $(HUGE) )
# built-in manual has been disabled, make a blank file
diff --git a/src/Makefile.inc b/src/Makefile.inc
index e1e8306b..dd6b9d33 100644
--- a/src/Makefile.inc
+++ b/src/Makefile.inc
@@ -54,6 +54,7 @@ CURL_CFILES = \
tool_panykey.c \
tool_paramhlp.c \
tool_parsecfg.c \
+ tool_progress.c \
tool_strdup.c \
tool_setopt.c \
tool_sleep.c \
@@ -95,6 +96,7 @@ CURL_HFILES = \
tool_panykey.h \
tool_paramhlp.h \
tool_parsecfg.h \
+ tool_progress.h \
tool_sdecls.h \
tool_setopt.h \
tool_setup.h \
diff --git a/src/tool_cb_hdr.c b/src/tool_cb_hdr.c
index 3844904c..b0880f18 100644
--- a/src/tool_cb_hdr.c
+++ b/src/tool_cb_hdr.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -32,6 +32,7 @@
#include "tool_msgs.h"
#include "tool_cb_hdr.h"
#include "tool_cb_wrt.h"
+#include "tool_operate.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -54,9 +55,10 @@ static char *parse_filename(const char *ptr, size_t len);
size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
{
- struct HdrCbData *hdrcbdata = userdata;
- struct OutStruct *outs = hdrcbdata->outs;
- struct OutStruct *heads = hdrcbdata->heads;
+ struct per_transfer *per = userdata;
+ struct HdrCbData *hdrcbdata = &per->hdrcbdata;
+ struct OutStruct *outs = &per->outs;
+ struct OutStruct *heads = &per->heads;
const char *str = ptr;
const size_t cb = size * nmemb;
const char *end = (char *)ptr + cb;
@@ -100,7 +102,7 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
* Content-Disposition header specifying a filename property.
*/
- curl_easy_getinfo(outs->config->easy, CURLINFO_PROTOCOL, &protocol);
+ curl_easy_getinfo(per->curl, CURLINFO_PROTOCOL, &protocol);
if(hdrcbdata->honor_cd_filename &&
(cb > 20) && checkprefix("Content-disposition:", str) &&
(protocol & (CURLPROTO_HTTPS|CURLPROTO_HTTP))) {
diff --git a/src/tool_cb_wrt.c b/src/tool_cb_wrt.c
index 2f699f32..0f47b4d0 100644
--- a/src/tool_cb_wrt.c
+++ b/src/tool_cb_wrt.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -28,6 +28,7 @@
#include "tool_cfgable.h"
#include "tool_msgs.h"
#include "tool_cb_wrt.h"
+#include "tool_operate.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -75,7 +76,8 @@ bool tool_create_output_file(struct OutStruct *outs)
size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
{
size_t rc;
- struct OutStruct *outs = userdata;
+ struct per_transfer *per = userdata;
+ struct OutStruct *outs = &per->outs;
struct OperationConfig *config = outs->config;
size_t bytes = sz * nmemb;
bool is_tty = config->global->isatty;
@@ -202,7 +204,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
if(config->readbusy) {
config->readbusy = FALSE;
- curl_easy_pause(config->easy, CURLPAUSE_CONT);
+ curl_easy_pause(per->curl, CURLPAUSE_CONT);
}
if(config->nobuffer) {
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
index 7d178e47..efa8c50b 100644
--- a/src/tool_cfgable.c
+++ b/src/tool_cfgable.c
@@ -43,7 +43,7 @@ void config_init(struct OperationConfig* config)
config->proto_default = NULL;
config->tcp_nodelay = TRUE; /* enabled by default */
config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
- config->http09_allowed = TRUE;
+ config->http09_allowed = FALSE;
}
static void free_config_fields(struct OperationConfig *config)
@@ -133,6 +133,7 @@ static void free_config_fields(struct OperationConfig *config)
Curl_safefree(config->krblevel);
Curl_safefree(config->oauth_bearer);
+ Curl_safefree(config->sasl_authzid);
Curl_safefree(config->unix_socket_path);
Curl_safefree(config->writeout);
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index e374a7f0..ff80f8eb 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -38,7 +38,6 @@ typedef enum {
struct GlobalConfig;
struct OperationConfig {
- CURL *easy; /* A copy of the handle from GlobalConfig */
bool remote_time;
char *random_file;
char *egd_file;
@@ -97,6 +96,7 @@ struct OperationConfig {
char *mail_from;
struct curl_slist *mail_rcpt;
char *mail_auth;
+ char *sasl_authzid; /* Authorisation identity (identity to use) */
bool sasl_ir; /* Enable/disable SASL initial response */
bool proxytunnel;
bool ftp_append; /* APPE on ftp */
@@ -242,9 +242,6 @@ struct OperationConfig {
bool use_metalink; /* process given URLs as metalink XML file */
metalinkfile *metalinkfile_list; /* point to the first node */
metalinkfile *metalinkfile_last; /* point to the last/current node */
-#ifdef CURLDEBUG
- bool test_event_based;
-#endif
char *oauth_bearer; /* OAuth 2.0 bearer token */
bool nonpn; /* enable/disable TLS NPN extension */
bool noalpn; /* enable/disable TLS ALPN extension */
@@ -268,7 +265,6 @@ struct OperationConfig {
};
struct GlobalConfig {
- CURL *easy; /* Once we have one, we keep it here */
int showerror; /* -1 == unset, default => show errors
0 => -s is used to NOT show errors
1 => -S has been used to show errors */
@@ -286,6 +282,11 @@ struct GlobalConfig {
char *libcurl; /* Output libcurl code to this file name */
bool fail_early; /* exit on first transfer error */
bool styled_output; /* enable fancy output style detection */
+#ifdef CURLDEBUG
+ bool test_event_based;
+#endif
+ bool parallel;
+ long parallel_max;
struct OperationConfig *first;
struct OperationConfig *current;
struct OperationConfig *last; /* Always last in the struct */
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index b347121f..2c186838 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -40,6 +40,7 @@
#include "tool_msgs.h"
#include "tool_paramhlp.h"
#include "tool_parsecfg.h"
+#include "tool_main.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -177,7 +178,8 @@ static const struct LongShort aliases[]= {
{"$H", "mail-auth", ARG_STRING},
{"$I", "post303", ARG_BOOL},
{"$J", "metalink", ARG_BOOL},
- {"$K", "sasl-ir", ARG_BOOL},
+ {"$6", "sasl-authzid", ARG_STRING},
+ {"$K", "sasl-ir", ARG_BOOL },
{"$L", "test-event", ARG_BOOL},
{"$M", "unix-socket", ARG_FILENAME},
{"$N", "path-as-is", ARG_BOOL},
@@ -199,6 +201,7 @@ static const struct LongShort aliases[]= {
{"01", "http1.1", ARG_NONE},
{"02", "http2", ARG_NONE},
{"03", "http2-prior-knowledge", ARG_NONE},
+ {"04", "http3", ARG_NONE},
{"09", "http0.9", ARG_BOOL},
{"1", "tlsv1", ARG_NONE},
{"10", "tlsv1.0", ARG_NONE},
@@ -316,6 +319,8 @@ static const struct LongShort aliases[]= {
{"Y", "speed-limit", ARG_STRING},
{"y", "speed-time", ARG_STRING},
{"z", "time-cond", ARG_STRING},
+ {"Z", "parallel", ARG_BOOL},
+ {"Zb", "parallel-max", ARG_STRING},
{"#", "progress-bar", ARG_BOOL},
{":", "next", ARG_NONE},
};
@@ -907,12 +912,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
config->retry_connrefused = toggle;
break;
case 'h': /* --retry-delay */
- err = str2unum(&config->retry_delay, nextarg);
+ err = str2unummax(&config->retry_delay, nextarg, LONG_MAX/1000);
if(err)
return err;
break;
case 'i': /* --retry-max-time */
- err = str2unum(&config->retry_maxtime, nextarg);
+ err = str2unummax(&config->retry_maxtime, nextarg, LONG_MAX/1000);
if(err)
return err;
break;
@@ -1099,12 +1104,15 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
#endif
break;
}
+ case '6': /* --sasl-authzid */
+ GetStr(&config->sasl_authzid, nextarg);
+ break;
case 'K': /* --sasl-ir */
config->sasl_ir = toggle;
break;
case 'L': /* --test-event */
#ifdef CURLDEBUG
- config->test_event_based = toggle;
+ global->test_event_based = toggle;
#else
warnf(global, "--test-event is ignored unless a debug build!\n");
#endif
@@ -1186,10 +1194,14 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
/* HTTP version 2.0 */
config->httpversion = CURL_HTTP_VERSION_2_0;
break;
- case '3':
+ case '3': /* --http2-prior-knowledge */
/* HTTP version 2.0 over clean TCP*/
config->httpversion = CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE;
break;
+ case '4': /* --http3 */
+ /* HTTP version 3 go over QUIC - at once */
+ config->httpversion = CURL_HTTP_VERSION_3;
+ break;
case '9':
/* Allow HTTP/0.9 responses! */
config->http09_allowed = toggle;
@@ -1356,7 +1368,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
size = 0;
}
else {
- char *enc = curl_easy_escape(config->easy, postdata, (int)size);
+ char *enc = curl_easy_escape(NULL, postdata, (int)size);
Curl_safefree(postdata); /* no matter if it worked or not */
if(enc) {
/* now make a string with the name from above and append the
@@ -2127,6 +2139,21 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
if(!config->low_speed_time)
config->low_speed_time = 30;
break;
+ case 'Z':
+ switch(subletter) {
+ case '\0': /* --parallel */
+ global->parallel = toggle;
+ break;
+ case 'b': /* --parallel-max */
+ err = str2unum(&global->parallel_max, nextarg);
+ if(err)
+ return err;
+ if((global->parallel_max > MAX_PARALLEL) ||
+ (global->parallel_max < 1))
+ global->parallel_max = PARALLEL_DEFAULT;
+ break;
+ }
+ break;
case 'z': /* time condition coming up */
switch(*nextarg) {
case '+':
@@ -2176,14 +2203,14 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
return PARAM_OK;
}
-ParameterError parse_args(struct GlobalConfig *config, int argc,
+ParameterError parse_args(struct GlobalConfig *global, int argc,
argv_item_t argv[])
{
int i;
bool stillflags;
char *orig_opt = NULL;
ParameterError result = PARAM_OK;
- struct OperationConfig *operation = config->first;
+ struct OperationConfig *config = global->first;
for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
orig_opt = argv[i];
@@ -2199,31 +2226,28 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
else {
char *nextarg = (i < (argc - 1)) ? argv[i + 1] : NULL;
- result = getparameter(flag, nextarg, &passarg, config, operation);
+ result = getparameter(flag, nextarg, &passarg, global, config);
if(result == PARAM_NEXT_OPERATION) {
/* Reset result as PARAM_NEXT_OPERATION is only used here and not
returned from this function */
result = PARAM_OK;
- if(operation->url_list && operation->url_list->url) {
+ if(config->url_list && config->url_list->url) {
/* Allocate the next config */
- operation->next = malloc(sizeof(struct OperationConfig));
- if(operation->next) {
+ config->next = malloc(sizeof(struct OperationConfig));
+ if(config->next) {
/* Initialise the newly created config */
- config_init(operation->next);
-
- /* Copy the easy handle */
- operation->next->easy = config->easy;
+ config_init(config->next);
/* Set the global config pointer */
- operation->next->global = config;
+ config->next->global = global;
- /* Update the last operation pointer */
- config->last = operation->next;
+ /* Update the last config pointer */
+ global->last = config->next;
/* Move onto the new config */
- operation->next->prev = operation;
- operation = operation->next;
+ config->next->prev = config;
+ config = config->next;
}
else
result = PARAM_NO_MEM;
@@ -2237,8 +2261,8 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
bool used;
/* Just add the URL please */
- result = getparameter((char *)"--url", argv[i], &used, config,
- operation);
+ result = getparameter((char *)"--url", argv[i], &used, global,
+ config);
}
}
@@ -2249,9 +2273,9 @@ ParameterError parse_args(struct GlobalConfig *config, int argc,
const char *reason = param2text(result);
if(orig_opt && strcmp(":", orig_opt))
- helpf(config->errors, "option %s: %s\n", orig_opt, reason);
+ helpf(global->errors, "option %s: %s\n", orig_opt, reason);
else
- helpf(config->errors, "%s\n", reason);
+ helpf(global->errors, "%s\n", reason);
}
return result;
diff --git a/src/tool_help.c b/src/tool_help.c
index 9209a13d..27143905 100644
--- a/src/tool_help.c
+++ b/src/tool_help.c
@@ -20,7 +20,7 @@
*
***************************************************************************/
#include "tool_setup.h"
-#ifdef HAVE_STRCASECMP
+#if defined(HAVE_STRCASECMP) && defined(HAVE_STRINGS_H)
#include <strings.h>
#endif
@@ -191,6 +191,8 @@ static const struct helptxt helptext[] = {
"Use HTTP 2"},
{" --http2-prior-knowledge",
"Use HTTP 2 without HTTP/1.1 Upgrade"},
+ {" --http3",
+ "Use HTTP v3"},
{" --ignore-content-length",
"Ignore the size of the remote resource"},
{"-i, --include",
@@ -273,6 +275,10 @@ static const struct helptxt helptext[] = {
"OAuth 2 Bearer Token"},
{"-o, --output <file>",
"Write to file instead of stdout"},
+ {"-Z, --parallel",
+ "Perform transfers in parallel"},
+ {" --parallel-max",
+ "Maximum concurrency for parallel transfers"},
{" --pass <phrase>",
"Pass phrase for the private key"},
{" --path-as-is",
@@ -385,6 +391,8 @@ static const struct helptxt helptext[] = {
"Wait time between retries"},
{" --retry-max-time <seconds>",
"Retry only within this period"},
+ {" --sasl-authzid <identity> ",
+ "Use this identity to act as during SASL PLAIN authentication"},
{" --sasl-ir",
"Enable initial response in SASL authentication"},
{" --service-name <name>",
@@ -526,6 +534,7 @@ static const struct feat feats[] = {
{"CharConv", CURL_VERSION_CONV},
{"TLS-SRP", CURL_VERSION_TLSAUTH_SRP},
{"HTTP2", CURL_VERSION_HTTP2},
+ {"HTTP3", CURL_VERSION_HTTP3},
{"UnixSockets", CURL_VERSION_UNIX_SOCKETS},
{"HTTPS-proxy", CURL_VERSION_HTTPS_PROXY},
{"MultiSSL", CURL_VERSION_MULTI_SSL},
@@ -602,8 +611,9 @@ void tool_version_info(void)
}
}
-void tool_list_engines(CURL *curl)
+void tool_list_engines(void)
{
+ CURL *curl = curl_easy_init();
struct curl_slist *engines = NULL;
/* Get the list of engines */
@@ -620,4 +630,5 @@ void tool_list_engines(CURL *curl)
/* Cleanup the list of engines */
curl_slist_free_all(engines);
+ curl_easy_cleanup(curl);
}
diff --git a/src/tool_help.h b/src/tool_help.h
index 0289f301..bfb5dcdf 100644
--- a/src/tool_help.h
+++ b/src/tool_help.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -24,7 +24,7 @@
#include "tool_setup.h"
void tool_help(void);
-void tool_list_engines(CURL *curl);
+void tool_list_engines(void);
void tool_version_info(void);
#endif /* HEADER_CURL_TOOL_HELP_H */
diff --git a/src/tool_hugehelp.c b/src/tool_hugehelp.c
index 3d943d6c..43209be5 100644
--- a/src/tool_hugehelp.c
+++ b/src/tool_hugehelp.c
@@ -468,7 +468,7 @@ void hugehelp(void)
fputs(
" PROFILE%\\Application Data'.\n"
"\n"
-" 2) On windows, if there is no _curlrc file in the home dir, it\n"
+" 2) On windows, if there is no .curlrc file in the home dir, it\n"
" checks for one in the same dir the curl executable is placed. On\n"
" Unix-like systems, it will simply try to load .curlrc from the\n"
" determined home dir.\n"
@@ -1491,13 +1491,12 @@ void hugehelp(void)
" response since curl will simply transparently downgrade - if al-\n"
" lowed.\n"
"\n"
-" A future curl version will deny continuing if the response isn't\n"
-" at least HTTP/1.0 unless this option is used.\n"
+" Since curl 7.66.0, HTTP/0.9 is disabled by default.\n"
"\n"
" -0, --http1.0\n"
, stdout);
fputs(
-" (HTTP) Tells curl to use HTTP version 1.0 instead of using its\n"
+" (HTTP) Tells curl to use HTTP version 1.0 instead of using its\n"
" internally preferred HTTP version.\n"
"\n"
" This option overrides --http1.1 and --http2.\n"
@@ -1505,16 +1504,16 @@ void hugehelp(void)
" --http1.1\n"
" (HTTP) Tells curl to use HTTP version 1.1.\n"
"\n"
-" This option overrides -0, --http1.0 and --http2. Added in\n"
+" This option overrides -0, --http1.0 and --http2. Added in\n"
" 7.33.0.\n"
"\n"
" --http2-prior-knowledge\n"
-" (HTTP) Tells curl to issue its non-TLS HTTP requests using\n"
+" (HTTP) Tells curl to issue its non-TLS HTTP requests using\n"
, stdout);
fputs(
-" HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge\n"
-" that the server supports HTTP/2 straight away. HTTPS requests\n"
-" will still do HTTP/2 the standard way with negotiated protocol\n"
+" HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge\n"
+" that the server supports HTTP/2 straight away. HTTPS requests\n"
+" will still do HTTP/2 the standard way with negotiated protocol\n"
" version in the TLS handshake.\n"
"\n"
" --http2-prior-knowledge requires that the underlying libcurl was\n"
@@ -1526,15 +1525,39 @@ void hugehelp(void)
" --http2\n"
" (HTTP) Tells curl to use HTTP version 2.\n"
"\n"
-" See also --no-alpn. --http2 requires that the underlying libcurl\n"
-" was built to support HTTP/2. This option overrides --http1.1 and\n"
-" -0, --http1.0 and --http2-prior-knowledge. Added in 7.33.0.\n"
+" See also --http1.1 and --http3. --http2 requires that the under-\n"
+" lying libcurl was built to support HTTP/2. This option overrides\n"
+" --http1.1 and -0, --http1.0 and --http2-prior-knowledge. Added\n"
+" in 7.33.0.\n"
+"\n"
+" --http3\n"
+" (HTTP) WARNING: this option is experiemental. Do not use in pro-\n"
+" duction.\n"
+"\n"
+, stdout);
+ fputs(
+" Tells curl to use HTTP version 3 directly to the host and port\n"
+" number used in the URL. A normal HTTP/3 transaction will be done\n"
+" to a host and then get redirected via Alt-SVc, but this option\n"
+" allows a user to circumvent that when you know that the target\n"
+" speaks HTTP/3 on the given host and port.\n"
+"\n"
+" This option will make curl fail if a QUIC connection cannot be\n"
+, stdout);
+ fputs(
+" established, it cannot fall back to a lower HTTP version on its\n"
+" own.\n"
+"\n"
+" See also --http1.1 and --http2. --http3 requires that the under-\n"
+" lying libcurl was built to support HTTP/3. This option overrides\n"
+" --http1.1 and -0, --http1.0 and --http2 and --http2-prior-knowl-\n"
+" edge. Added in 7.66.0.\n"
"\n"
" --ignore-content-length\n"
" (FTP HTTP) For HTTP, Ignore the Content-Length header. This is\n"
-" particularly useful for servers running Apache 1.x, which will\n"
, stdout);
fputs(
+" particularly useful for servers running Apache 1.x, which will\n"
" report incorrect Content-Length for files larger than 2 giga-\n"
" bytes.\n"
"\n"
@@ -1544,10 +1567,10 @@ void hugehelp(void)
" -i, --include\n"
" Include the HTTP response headers in the output. The HTTP re-\n"
" sponse headers can include things like server name, cookies,\n"
-" date of the document, HTTP version and more...\n"
-"\n"
, stdout);
fputs(
+" date of the document, HTTP version and more...\n"
+"\n"
" To view the request headers, consider the -v, --verbose option.\n"
"\n"
" See also -v, --verbose.\n"
@@ -1557,9 +1580,9 @@ void hugehelp(void)
" be secure. This option allows curl to proceed and operate even\n"
" for server connections otherwise considered insecure.\n"
"\n"
-" The server connection is verified by making sure the server's\n"
, stdout);
fputs(
+" The server connection is verified by making sure the server's\n"
" certificate contains the right name and verifies successfully\n"
" using the cert store.\n"
"\n"
@@ -1570,24 +1593,24 @@ void hugehelp(void)
" --interface <name>\n"
"\n"
" Perform an operation using a specified interface. You can enter\n"
+, stdout);
+ fputs(
" interface name, IP address or host name. An example could look\n"
" like:\n"
"\n"
-, stdout);
- fputs(
" curl --interface eth0:1 https://www.example.com/\n"
"\n"
" If this option is used several times, the last one will be used.\n"
" On Linux it can be used to specify a VRF, but the binary needs\n"
" to either have CAP_NET_RAW or to be run as root. More informa-\n"
" tion about Linux VRF: https://www.kernel.org/doc/Documenta-\n"
+, stdout);
+ fputs(
" tion/networking/vrf.txt\n"
"\n"
" See also --dns-interface.\n"
"\n"
" -4, --ipv4\n"
-, stdout);
- fputs(
" This option tells curl to resolve names to IPv4 addresses only,\n"
" and not for example try IPv6.\n"
"\n"
@@ -1598,11 +1621,11 @@ void hugehelp(void)
" This option tells curl to resolve names to IPv6 addresses only,\n"
" and not for example try IPv4.\n"
"\n"
+, stdout);
+ fputs(
" See also --http1.1 and --http2. This option overrides -4,\n"
" --ipv4.\n"
"\n"
-, stdout);
- fputs(
" -j, --junk-session-cookies\n"
" (HTTP) When curl is told to read cookies from a given file, this\n"
" option will make it discard all \"session cookies\". This will ba-\n"
@@ -1610,20 +1633,20 @@ void hugehelp(void)
" Typical browsers always discard session cookies when they're\n"
" closed down.\n"
"\n"
+, stdout);
+ fputs(
" See also -b, --cookie and -c, --cookie-jar.\n"
"\n"
" --keepalive-time <seconds>\n"
-, stdout);
- fputs(
" This option sets the time a connection needs to remain idle be-\n"
" fore sending keepalive probes and the time between individual\n"
" keepalive probes. It is currently effective on operating systems\n"
" offering the TCP_KEEPIDLE and TCP_KEEPINTVL socket options\n"
" (meaning Linux, recent AIX, HP-UX and more). This option has no\n"
-" effect if --no-keepalive is used.\n"
-"\n"
, stdout);
fputs(
+" effect if --no-keepalive is used.\n"
+"\n"
" If this option is used several times, the last one will be used.\n"
" If unspecified, the option defaults to 60 seconds.\n"
"\n"
@@ -1634,10 +1657,10 @@ void hugehelp(void)
" vided private key is. DER, PEM, and ENG are supported. If not\n"
" specified, PEM is assumed.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
-"\n"
, stdout);
fputs(
+" If this option is used several times, the last one will be used.\n"
+"\n"
" --key <key>\n"
" (TLS SSH) Private key file name. Allows you to provide your pri-\n"
" vate key in this separate file. For SSH, if not specified, curl\n"
@@ -1645,32 +1668,32 @@ void hugehelp(void)
" '~/.ssh/id_dsa', './id_rsa', './id_dsa'.\n"
"\n"
" If curl is built against OpenSSL library, and the engine pkcs11\n"
-" is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
, stdout);
fputs(
+" is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
" ify a private key located in a PKCS#11 device. A string begin-\n"
" ning with \"pkcs11:\" will be interpreted as a PKCS#11 URI. If a\n"
" PKCS#11 URI is provided, then the --engine option will be set as\n"
" \"pkcs11\" if none was provided and the --key-type option will be\n"
" set as \"ENG\" if none was provided.\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" --krb <level>\n"
-, stdout);
- fputs(
" (FTP) Enable Kerberos authentication and use. The level must be\n"
" entered and should be one of 'clear', 'safe', 'confidential', or\n"
" 'private'. Should you use a level that is not one of these,\n"
" 'private' will instead be used.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
" --krb requires that the underlying libcurl was built to support\n"
" Kerberos.\n"
"\n"
" --libcurl <file>\n"
-, stdout);
- fputs(
" Append this option to any ordinary curl command line, and you\n"
" will get a libcurl-using C source code written to the file that\n"
" does the equivalent of what your command-line operation does!\n"
@@ -1678,52 +1701,52 @@ void hugehelp(void)
" If this option is used several times, the last given file name\n"
" will be used.\n"
"\n"
+, stdout);
+ fputs(
" Added in 7.16.1.\n"
"\n"
" --limit-rate <speed>\n"
" Specify the maximum transfer rate you want curl to use - for\n"
-, stdout);
- fputs(
" both downloads and uploads. This feature is useful if you have a\n"
" limited pipe and you'd like your transfer not to use your entire\n"
" bandwidth. To make it slower than it otherwise would be.\n"
"\n"
" The given speed is measured in bytes/second, unless a suffix is\n"
-" appended. Appending 'k' or 'K' will count the number as kilo-\n"
-" bytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it\n"
, stdout);
fputs(
+" appended. Appending 'k' or 'K' will count the number as kilo-\n"
+" bytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it\n"
" gigabytes. Examples: 200K, 3m and 1G.\n"
"\n"
" If you also use the -Y, --speed-limit option, that option will\n"
" take precedence and might cripple the rate-limiting slightly, to\n"
" help keeping the speed-limit logic working.\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" -l, --list-only\n"
" (FTP POP3) (FTP) When listing an FTP directory, this switch\n"
-, stdout);
- fputs(
" forces a name-only view. This is especially useful if the user\n"
" wants to machine-parse the contents of an FTP directory since\n"
" the normal directory view doesn't use a standard look or format.\n"
" When used like this, the option causes a NLST command to be sent\n"
+, stdout);
+ fputs(
" to the server instead of LIST.\n"
"\n"
" Note: Some FTP servers list only files in their response to\n"
-, stdout);
- fputs(
" NLST; they do not include sub-directories and symbolic links.\n"
"\n"
" (POP3) When retrieving a specific email from POP3, this switch\n"
" forces a LIST command to be performed instead of RETR. This is\n"
" particularly useful if the user wants to see if a specific mes-\n"
+, stdout);
+ fputs(
" sage id exists on the server and what size it is.\n"
"\n"
" Note: When combined with -X, --request, this option can be used\n"
-, stdout);
- fputs(
" to send an UIDL command instead, so the user may use the email's\n"
" unique identifier rather than it's message id to make the re-\n"
" quest.\n"
@@ -1732,10 +1755,10 @@ void hugehelp(void)
"\n"
" --local-port <num/range>\n"
" Set a preferred single number or range (FROM-TO) of local port\n"
-" numbers to use for the connection(s). Note that port numbers by\n"
-" nature are a scarce resource that will be busy at times so set-\n"
, stdout);
fputs(
+" numbers to use for the connection(s). Note that port numbers by\n"
+" nature are a scarce resource that will be busy at times so set-\n"
" ting this range to something too narrow might cause unnecessary\n"
" connection setup failures.\n"
"\n"
@@ -1744,10 +1767,10 @@ void hugehelp(void)
" --location-trusted\n"
" (HTTP) Like -L, --location, but will allow sending the name +\n"
" password to all hosts that the site may redirect to. This may or\n"
-" may not introduce a security breach if the site redirects you to\n"
-" a site to which you'll send your authentication info (which is\n"
, stdout);
fputs(
+" may not introduce a security breach if the site redirects you to\n"
+" a site to which you'll send your authentication info (which is\n"
" plaintext in the case of HTTP Basic authentication).\n"
"\n"
" See also -u, --user.\n"
@@ -1755,28 +1778,28 @@ void hugehelp(void)
" -L, --location\n"
" (HTTP) If the server reports that the requested page has moved\n"
" to a different location (indicated with a Location: header and a\n"
-" 3XX response code), this option will make curl redo the request\n"
-" on the new place. If used together with -i, --include or -I,\n"
, stdout);
fputs(
+" 3XX response code), this option will make curl redo the request\n"
+" on the new place. If used together with -i, --include or -I,\n"
" --head, headers from all requested pages will be shown. When au-\n"
" thentication is used, curl only sends its credentials to the\n"
" initial host. If a redirect takes curl to a different host, it\n"
" won't be able to intercept the user+password. See also --loca-\n"
+, stdout);
+ fputs(
" tion-trusted on how to change this. You can limit the amount of\n"
" redirects to follow by using the --max-redirs option.\n"
"\n"
-, stdout);
- fputs(
" When curl follows a redirect and the request is not a plain GET\n"
" (for example POST or PUT), it will do the following request with\n"
" a GET if the HTTP response was 301, 302, or 303. If the response\n"
" code was any other 3xx code, curl will re-send the following re-\n"
+, stdout);
+ fputs(
" quest using the same unmodified method.\n"
"\n"
" You can tell curl to not change the non-GET request method to\n"
-, stdout);
- fputs(
" GET after a 30x response by using the dedicated options for\n"
" that: --post301, --post302 and --post303.\n"
"\n"
@@ -1785,9 +1808,9 @@ void hugehelp(void)
" authentication.\n"
"\n"
" You can use the login options to specify protocol specific op-\n"
-" tions that may be used during authentication. At present only\n"
, stdout);
fputs(
+" tions that may be used during authentication. At present only\n"
" IMAP, POP3 and SMTP support login options. For more information\n"
" about the login options please see RFC 2384, RFC 5092 and IETF\n"
" draft draft-earhart-url-smtp-00.txt\n"
@@ -1797,9 +1820,9 @@ void hugehelp(void)
" Added in 7.34.0.\n"
"\n"
" --mail-auth <address>\n"
-" (SMTP) Specify a single address. This will be used to specify\n"
, stdout);
fputs(
+" (SMTP) Specify a single address. This will be used to specify\n"
" the authentication address (identity) of a submitted message\n"
" that is being relayed to another server.\n"
"\n"
@@ -1811,9 +1834,9 @@ void hugehelp(void)
"\n"
" See also --mail-rcpt and --mail-auth. Added in 7.20.0.\n"
"\n"
-" --mail-rcpt <address>\n"
, stdout);
fputs(
+" --mail-rcpt <address>\n"
" (SMTP) Specify a single address, user name or mailing list name.\n"
" Repeat this option several times to send to multiple recipients.\n"
" When performing a mail transfer, the recipient should specify a\n"
@@ -2153,40 +2176,57 @@ void hugehelp(void)
" See also -O, --remote-name and --remote-name-all and -J, --re-\n"
" mote-header-name.\n"
"\n"
+" --parallel-max\n"
+" When asked to do parallel transfers, using -Z, --parallel, this\n"
+" option controls the maximum amount of transfers to do simultane-\n"
+" ously.\n"
+"\n"
+" The default is 50.\n"
+"\n"
+" See also -Z, --parallel. Added in 7.66.0.\n"
+"\n"
+" -Z, --parallel\n"
+, stdout);
+ fputs(
+" Makes curl perform its transfers in parallel as compared to the\n"
+" regular serial manner.\n"
+"\n"
+" Added in 7.66.0.\n"
+"\n"
" --pass <phrase>\n"
" (SSH TLS) Passphrase for the private key\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --path-as-is\n"
-" Tell curl to not handle sequences of /../ or /./ in the given\n"
+" Tell curl to not handle sequences of /../ or /./ in the given\n"
+" URL path. Normally curl will squash or merge them according to\n"
, stdout);
fputs(
-" URL path. Normally curl will squash or merge them according to\n"
" standards but with this option set you tell it not to do that.\n"
"\n"
" Added in 7.42.0.\n"
"\n"
" --pinnedpubkey <hashes>\n"
-" (TLS) Tells curl to use the specified public key file (or\n"
-" hashes) to verify the peer. This can be a path to a file which\n"
+" (TLS) Tells curl to use the specified public key file (or\n"
+" hashes) to verify the peer. This can be a path to a file which\n"
" contains a single public key in PEM or DER format, or any number\n"
-, stdout);
- fputs(
" of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
" rated by ';'\n"
"\n"
-" When negotiating a TLS or SSL connection, the server sends a\n"
-" certificate indicating its identity. A public key is extracted\n"
-" from this certificate and if it does not exactly match the pub-\n"
-" lic key provided to this option, curl will abort the connection\n"
-" before sending or receiving any data.\n"
-"\n"
, stdout);
fputs(
+" When negotiating a TLS or SSL connection, the server sends a\n"
+" certificate indicating its identity. A public key is extracted\n"
+" from this certificate and if it does not exactly match the pub-\n"
+" lic key provided to this option, curl will abort the connection\n"
+" before sending or receiving any data.\n"
+"\n"
" PEM/DER support:\n"
" 7.39.0: OpenSSL, GnuTLS and GSKit\n"
" 7.43.0: NSS and wolfSSL\n"
+, stdout);
+ fputs(
" 7.47.0: mbedtls sha256 support:\n"
" 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL\n"
" 7.47.0: mbedtls Other SSL backends not supported.\n"
@@ -2195,66 +2235,66 @@ void hugehelp(void)
"\n"
" --post301\n"
" (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
+" requests into GET requests when following a 301 redirection. The\n"
, stdout);
fputs(
-" requests into GET requests when following a 301 redirection. The\n"
-" non-RFC behaviour is ubiquitous in web browsers, so curl does\n"
-" the conversion by default to maintain consistency. However, a\n"
-" server may require a POST to remain a POST after such a redi-\n"
-" rection. This option is meaningful only when using -L, --loca-\n"
+" non-RFC behaviour is ubiquitous in web browsers, so curl does\n"
+" the conversion by default to maintain consistency. However, a\n"
+" server may require a POST to remain a POST after such a redi-\n"
+" rection. This option is meaningful only when using -L, --loca-\n"
" tion.\n"
"\n"
-" See also --post302 and --post303 and -L, --location. Added in\n"
-, stdout);
- fputs(
+" See also --post302 and --post303 and -L, --location. Added in\n"
" 7.17.1.\n"
"\n"
" --post302\n"
-" (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
-" requests into GET requests when following a 302 redirection. The\n"
-" non-RFC behaviour is ubiquitous in web browsers, so curl does\n"
-" the conversion by default to maintain consistency. However, a\n"
-" server may require a POST to remain a POST after such a redi-\n"
, stdout);
fputs(
-" rection. This option is meaningful only when using -L, --loca-\n"
+" (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
+" requests into GET requests when following a 302 redirection. The\n"
+" non-RFC behaviour is ubiquitous in web browsers, so curl does\n"
+" the conversion by default to maintain consistency. However, a\n"
+" server may require a POST to remain a POST after such a redi-\n"
+" rection. This option is meaningful only when using -L, --loca-\n"
" tion.\n"
"\n"
-" See also --post301 and --post303 and -L, --location. Added in\n"
+, stdout);
+ fputs(
+" See also --post301 and --post303 and -L, --location. Added in\n"
" 7.19.1.\n"
"\n"
" --post303\n"
" (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
-" requests into GET requests when following 303 redirections. A\n"
+" requests into GET requests when following 303 redirections. A\n"
" server may require a POST to remain a POST after a 303 redirect-\n"
-, stdout);
- fputs(
" ion. This option is meaningful only when using -L, --location.\n"
"\n"
-" See also --post302 and --post301 and -L, --location. Added in\n"
+, stdout);
+ fputs(
+" See also --post302 and --post301 and -L, --location. Added in\n"
" 7.26.0.\n"
"\n"
" --preproxy [protocol://]host[:port]\n"
-" Use the specified SOCKS proxy before connecting to an HTTP or\n"
-" HTTPS -x, --proxy. In such a case curl first connects to the\n"
-" SOCKS proxy and then connects (through SOCKS) to the HTTP or\n"
-, stdout);
- fputs(
+" Use the specified SOCKS proxy before connecting to an HTTP or\n"
+" HTTPS -x, --proxy. In such a case curl first connects to the\n"
+" SOCKS proxy and then connects (through SOCKS) to the HTTP or\n"
" HTTPS proxy. Hence pre proxy.\n"
"\n"
+, stdout);
+ fputs(
" The pre proxy string should be specified with a protocol:// pre-\n"
-" fix to specify alternative proxy protocols. Use socks4://,\n"
-" socks4a://, socks5:// or socks5h:// to request the specific\n"
-" SOCKS version to be used. No protocol specified will make curl\n"
+" fix to specify alternative proxy protocols. Use socks4://,\n"
+" socks4a://, socks5:// or socks5h:// to request the specific\n"
+" SOCKS version to be used. No protocol specified will make curl\n"
" default to SOCKS4.\n"
"\n"
-" If the port number is not specified in the proxy string, it is\n"
-, stdout);
- fputs(
+" If the port number is not specified in the proxy string, it is\n"
" assumed to be 1080.\n"
"\n"
+, stdout);
+ fputs(
" User and password that might be provided in the proxy string are\n"
-" URL decoded by curl. This allows you to pass in special charac-\n"
+" URL decoded by curl. This allows you to pass in special charac-\n"
" ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -2267,10 +2307,10 @@ void hugehelp(void)
fputs(
" stead of the standard, more informational, meter.\n"
"\n"
-" This progress bar draws a single line of '#' characters across\n"
+" This progress bar draws a single line of '#' characters across\n"
" the screen and shows a percentage if the transfer size is known.\n"
-" For transfers without a known size, there will be space ship\n"
-" (-=o=-) that moves back and forth but only while data is being\n"
+" For transfers without a known size, there will be space ship\n"
+" (-=o=-) that moves back and forth but only while data is being\n"
" transferred, with a set of flying hash sign symbols on top.\n"
"\n"
" --proto-default <protocol>\n"
@@ -2282,12 +2322,12 @@ void hugehelp(void)
"\n"
" curl --proto-default https ftp.mozilla.org\n"
"\n"
-" An unknown or unsupported protocol causes error CURLE_UNSUP-\n"
+" An unknown or unsupported protocol causes error CURLE_UNSUP-\n"
" PORTED_PROTOCOL (1).\n"
"\n"
" This option does not change the default proxy protocol (http).\n"
"\n"
-" Without this option curl would make a guess based on the host,\n"
+" Without this option curl would make a guess based on the host,\n"
" see --url for details.\n"
"\n"
, stdout);
@@ -2295,8 +2335,8 @@ void hugehelp(void)
" Added in 7.45.0.\n"
"\n"
" --proto-redir <protocols>\n"
-" Tells curl to limit what protocols it may use on redirect. Pro-\n"
-" tocols denied by --proto are not overridden by this option. See\n"
+" Tells curl to limit what protocols it may use on redirect. Pro-\n"
+" tocols denied by --proto are not overridden by this option. See\n"
" --proto for how protocols are represented.\n"
"\n"
" Example, allow only HTTP and HTTPS on redirect:\n"
@@ -2307,9 +2347,9 @@ void hugehelp(void)
, stdout);
fputs(
" (7.65.2). Older versions of curl allowed all protocols on redi-\n"
-" rect except several disabled for security reasons: Since 7.19.4\n"
-" FILE and SCP are disabled, and since 7.40.0 SMB and SMBS are\n"
-" also disabled. Specifying all or +all enables all protocols on\n"
+" rect except several disabled for security reasons: Since 7.19.4\n"
+" FILE and SCP are disabled, and since 7.40.0 SMB and SMBS are\n"
+" also disabled. Specifying all or +all enables all protocols on\n"
" redirect, including those disabled for security.\n"
"\n"
" Added in 7.20.2.\n"
@@ -2317,9 +2357,9 @@ void hugehelp(void)
" --proto <protocols>\n"
, stdout);
fputs(
-" Tells curl to limit what protocols it may use in the transfer.\n"
-" Protocols are evaluated left to right, are comma separated, and\n"
-" are each a protocol name or 'all', optionally prefixed by zero\n"
+" Tells curl to limit what protocols it may use in the transfer.\n"
+" Protocols are evaluated left to right, are comma separated, and\n"
+" are each a protocol name or 'all', optionally prefixed by zero\n"
" or more modifiers. Available modifiers are:\n"
"\n"
" + Permit this protocol in addition to protocols already permit-\n"
@@ -2327,11 +2367,11 @@ void hugehelp(void)
"\n"
, stdout);
fputs(
-" - Deny this protocol, removing it from the list of protocols\n"
+" - Deny this protocol, removing it from the list of protocols\n"
" already permitted.\n"
"\n"
-" = Permit only this protocol (ignoring the list already permit-\n"
-" ted), though subject to later modification by subsequent en-\n"
+" = Permit only this protocol (ignoring the list already permit-\n"
+" ted), though subject to later modification by subsequent en-\n"
" tries in the comma separated list.\n"
"\n"
" For example:\n"
@@ -2348,7 +2388,7 @@ void hugehelp(void)
"\n"
" Unknown protocols produce a warning. This allows scripts to safely rely\n"
" on being able to disable potentially dangerous protocols, without rely-\n"
-" ing upon support for that protocol being built into curl to avoid an\n"
+" ing upon support for that protocol being built into curl to avoid an\n"
" error.\n"
"\n"
" This option can be used multiple times, in which case the effect is the\n"
@@ -2359,8 +2399,8 @@ void hugehelp(void)
" See also --proto-redir and --proto-default. Added in 7.20.2.\n"
"\n"
" --proxy-anyauth\n"
-" Tells curl to pick a suitable authentication method when commu-\n"
-" nicating with the given HTTP proxy. This might cause an extra\n"
+" Tells curl to pick a suitable authentication method when commu-\n"
+" nicating with the given HTTP proxy. This might cause an extra\n"
" request/response round-trip.\n"
"\n"
" See also -x, --proxy and --proxy-basic and --proxy-digest. Added\n"
@@ -2369,9 +2409,9 @@ void hugehelp(void)
" --proxy-basic\n"
, stdout);
fputs(
-" Tells curl to use HTTP Basic authentication when communicating\n"
+" Tells curl to use HTTP Basic authentication when communicating\n"
" with the given proxy. Use --basic for enabling HTTP Basic with a\n"
-" remote host. Basic is the default authentication method curl\n"
+" remote host. Basic is the default authentication method curl\n"
" uses with proxies.\n"
"\n"
" See also -x, --proxy and --proxy-anyauth and --proxy-digest.\n"
@@ -2381,13 +2421,13 @@ void hugehelp(void)
"\n"
, stdout);
fputs(
-" See also --proxy-capath and --cacert and --capath and -x,\n"
+" See also --proxy-capath and --cacert and --capath and -x,\n"
" --proxy. Added in 7.52.0.\n"
"\n"
" --proxy-capath <dir>\n"
" Same as --capath but used in HTTPS proxy context.\n"
"\n"
-" See also --proxy-cacert and -x, --proxy and --capath. Added in\n"
+" See also --proxy-cacert and -x, --proxy and --capath. Added in\n"
" 7.52.0.\n"
"\n"
" --proxy-cert-type <type>\n"
@@ -2413,7 +2453,7 @@ void hugehelp(void)
" Added in 7.52.0.\n"
"\n"
" --proxy-digest\n"
-" Tells curl to use HTTP Digest authentication when communicating\n"
+" Tells curl to use HTTP Digest authentication when communicating\n"
, stdout);
fputs(
" with the given proxy. Use --digest for enabling HTTP Digest with\n"
@@ -2422,30 +2462,30 @@ void hugehelp(void)
" See also -x, --proxy and --proxy-anyauth and --proxy-basic.\n"
"\n"
" --proxy-header <header/@file>\n"
-" (HTTP) Extra header to include in the request when sending HTTP\n"
+" (HTTP) Extra header to include in the request when sending HTTP\n"
" to a proxy. You may specify any number of extra headers. This is\n"
-" the equivalent option to -H, --header but is for proxy communi-\n"
+" the equivalent option to -H, --header but is for proxy communi-\n"
, stdout);
fputs(
-" cation only like in CONNECT requests when you want a separate\n"
-" header sent to the proxy to what is sent to the actual remote\n"
+" cation only like in CONNECT requests when you want a separate\n"
+" header sent to the proxy to what is sent to the actual remote\n"
" host.\n"
"\n"
-" curl will make sure that each header you add/replace is sent\n"
+" curl will make sure that each header you add/replace is sent\n"
" with the proper end-of-line marker, you should thus not add that\n"
" as a part of the header content: do not add newlines or carriage\n"
" returns, they will only mess things up for you.\n"
"\n"
, stdout);
fputs(
-" Headers specified with this option will not be included in re-\n"
+" Headers specified with this option will not be included in re-\n"
" quests that curl knows will not be sent to a proxy.\n"
"\n"
-" Starting in 7.55.0, this option can take an argument in @file-\n"
-" name style, which then adds a header for each line in the input\n"
+" Starting in 7.55.0, this option can take an argument in @file-\n"
+" name style, which then adds a header for each line in the input\n"
" file. Using @- will make curl read the header file from stdin.\n"
"\n"
-" This option can be used multiple times to add/replace/remove\n"
+" This option can be used multiple times to add/replace/remove\n"
" multiple headers.\n"
"\n"
, stdout);
@@ -2465,7 +2505,7 @@ void hugehelp(void)
" Same as --key but used in HTTPS proxy context.\n"
"\n"
" --proxy-negotiate\n"
-" Tells curl to use HTTP Negotiate (SPNEGO) authentication when\n"
+" Tells curl to use HTTP Negotiate (SPNEGO) authentication when\n"
, stdout);
fputs(
" communicating with the given proxy. Use --negotiate for enabling\n"
@@ -2474,7 +2514,7 @@ void hugehelp(void)
" See also --proxy-anyauth and --proxy-basic. Added in 7.17.1.\n"
"\n"
" --proxy-ntlm\n"
-" Tells curl to use HTTP NTLM authentication when communicating\n"
+" Tells curl to use HTTP NTLM authentication when communicating\n"
" with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
" host.\n"
"\n"
@@ -2488,18 +2528,18 @@ void hugehelp(void)
" Added in 7.52.0.\n"
"\n"
" --proxy-pinnedpubkey <hashes>\n"
-" (TLS) Tells curl to use the specified public key file (or\n"
-" hashes) to verify the proxy. This can be a path to a file which\n"
+" (TLS) Tells curl to use the specified public key file (or\n"
+" hashes) to verify the proxy. This can be a path to a file which\n"
" contains a single public key in PEM or DER format, or any number\n"
" of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
, stdout);
fputs(
" rated by ';'\n"
"\n"
-" When negotiating a TLS or SSL connection, the server sends a\n"
-" certificate indicating its identity. A public key is extracted\n"
-" from this certificate and if it does not exactly match the pub-\n"
-" lic key provided to this option, curl will abort the connection\n"
+" When negotiating a TLS or SSL connection, the server sends a\n"
+" certificate indicating its identity. A public key is extracted\n"
+" from this certificate and if it does not exactly match the pub-\n"
+" lic key provided to this option, curl will abort the connection\n"
" before sending or receiving any data.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -2507,7 +2547,7 @@ void hugehelp(void)
, stdout);
fputs(
" --proxy-service-name <name>\n"
-" This option allows you to change the service name for proxy ne-\n"
+" This option allows you to change the service name for proxy ne-\n"
" gotiation.\n"
"\n"
" Added in 7.43.0.\n"
@@ -2518,18 +2558,18 @@ void hugehelp(void)
" Added in 7.52.0.\n"
"\n"
" --proxy-tls13-ciphers <ciphersuite list>\n"
-" (TLS) Specifies which cipher suites to use in the connection to\n"
+" (TLS) Specifies which cipher suites to use in the connection to\n"
, stdout);
fputs(
" your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers\n"
-" suites must specify valid ciphers. Read up on TLS 1.3 cipher\n"
+" suites must specify valid ciphers. Read up on TLS 1.3 cipher\n"
" suite details on this URL:\n"
"\n"
" https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
-" This option is currently used only when curl is built to use\n"
+" This option is currently used only when curl is built to use\n"
" OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
-" you can try setting TLS 1.3 cipher suites by using the --proxy-\n"
+" you can try setting TLS 1.3 cipher suites by using the --proxy-\n"
, stdout);
fputs(
" ciphers option.\n"
@@ -2559,20 +2599,20 @@ void hugehelp(void)
" Added in 7.52.0.\n"
"\n"
" -U, --proxy-user <user:password>\n"
-" Specify the user name and password to use for proxy authentica-\n"
+" Specify the user name and password to use for proxy authentica-\n"
" tion.\n"
"\n"
-" If you use a Windows SSPI-enabled curl binary and do either Ne-\n"
-" gotiate or NTLM authentication then you can tell curl to select\n"
+" If you use a Windows SSPI-enabled curl binary and do either Ne-\n"
+" gotiate or NTLM authentication then you can tell curl to select\n"
, stdout);
fputs(
" the user name and password from your environment by specifying a\n"
" single colon with this option: \"-U :\".\n"
"\n"
" On systems where it works, curl will hide the given option argu-\n"
-" ment from process listings. This is not enough to protect cre-\n"
-" dentials from possibly getting seen by other users on the same\n"
-" system as they will still be visible for a brief moment before\n"
+" ment from process listings. This is not enough to protect cre-\n"
+" dentials from possibly getting seen by other users on the same\n"
+" system as they will still be visible for a brief moment before\n"
, stdout);
fputs(
" cleared. Such sensitive data should be retrieved from a file in-\n"
@@ -2582,7 +2622,7 @@ void hugehelp(void)
" -x, --proxy [protocol://]host[:port]\n"
" Use the specified proxy.\n"
"\n"
-" The proxy string can be specified with a protocol:// prefix. No\n"
+" The proxy string can be specified with a protocol:// prefix. No\n"
" protocol specified or http:// will be treated as HTTP proxy. Use\n"
, stdout);
fputs(
@@ -2590,62 +2630,62 @@ void hugehelp(void)
" cific SOCKS version to be used. (The protocol support was added\n"
" in curl 7.21.7)\n"
"\n"
-" HTTPS proxy support via https:// protocol prefix was added in\n"
+" HTTPS proxy support via https:// protocol prefix was added in\n"
" 7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
-" Unrecognized and unsupported proxy protocols cause an error\n"
-" since 7.52.0. Prior versions may ignore the protocol and use\n"
+" Unrecognized and unsupported proxy protocols cause an error\n"
+" since 7.52.0. Prior versions may ignore the protocol and use\n"
, stdout);
fputs(
" http:// instead.\n"
"\n"
-" If the port number is not specified in the proxy string, it is\n"
+" If the port number is not specified in the proxy string, it is\n"
" assumed to be 1080.\n"
"\n"
-" This option overrides existing environment variables that set\n"
-" the proxy to use. If there's an environment variable setting a\n"
+" This option overrides existing environment variables that set\n"
+" the proxy to use. If there's an environment variable setting a\n"
" proxy, you can set proxy to \"\" to override it.\n"
"\n"
" All operations that are performed over an HTTP proxy will trans-\n"
, stdout);
fputs(
-" parently be converted to HTTP. It means that certain protocol\n"
+" parently be converted to HTTP. It means that certain protocol\n"
" specific operations might not be available. This is not the case\n"
" if you can tunnel through the proxy, as one with the -p, --prox-\n"
" ytunnel option.\n"
"\n"
" User and password that might be provided in the proxy string are\n"
-" URL decoded by curl. This allows you to pass in special charac-\n"
+" URL decoded by curl. This allows you to pass in special charac-\n"
" ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
, stdout);
fputs(
-" The proxy host can be specified the exact same way as the proxy\n"
-" environment variables, including the protocol prefix (http://)\n"
+" The proxy host can be specified the exact same way as the proxy\n"
+" environment variables, including the protocol prefix (http://)\n"
" and the embedded user + password.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --proxy1.0 <host[:port]>\n"
-" Use the specified HTTP 1.0 proxy. If the port number is not\n"
+" Use the specified HTTP 1.0 proxy. If the port number is not\n"
" specified, it is assumed at port 1080.\n"
"\n"
, stdout);
fputs(
-" The only difference between this and the HTTP proxy option -x,\n"
-" --proxy, is that attempts to use CONNECT through the proxy will\n"
+" The only difference between this and the HTTP proxy option -x,\n"
+" --proxy, is that attempts to use CONNECT through the proxy will\n"
" specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
" -p, --proxytunnel\n"
-" When an HTTP proxy is used -x, --proxy, this option will make\n"
-" curl tunnel through the proxy. The tunnel approach is made with\n"
-" the HTTP proxy CONNECT request and requires that the proxy al-\n"
+" When an HTTP proxy is used -x, --proxy, this option will make\n"
+" curl tunnel through the proxy. The tunnel approach is made with\n"
+" the HTTP proxy CONNECT request and requires that the proxy al-\n"
, stdout);
fputs(
" lows direct connect to the remote port number curl wants to tun-\n"
" nel through to.\n"
"\n"
-" To suppress proxy CONNECT response headers when curl is set to\n"
+" To suppress proxy CONNECT response headers when curl is set to\n"
" output headers use --suppress-connect-headers.\n"
"\n"
" See also -x, --proxy.\n"
@@ -2658,53 +2698,53 @@ void hugehelp(void)
fputs(
" If this option is used several times, the last one will be used.\n"
" (As of 7.39.0, curl attempts to automatically extract the public\n"
-" key from the private key file, so passing this option is gener-\n"
+" key from the private key file, so passing this option is gener-\n"
" ally not required. Note that this public key extraction requires\n"
-" libcurl to be linked against a copy of libssh2 1.2.8 or higher\n"
+" libcurl to be linked against a copy of libssh2 1.2.8 or higher\n"
" that is itself linked against OpenSSL.)\n"
"\n"
" -Q, --quote\n"
, stdout);
fputs(
-" (FTP SFTP) Send an arbitrary command to the remote FTP or SFTP\n"
-" server. Quote commands are sent BEFORE the transfer takes place\n"
-" (just after the initial PWD command in an FTP transfer, to be\n"
+" (FTP SFTP) Send an arbitrary command to the remote FTP or SFTP\n"
+" server. Quote commands are sent BEFORE the transfer takes place\n"
+" (just after the initial PWD command in an FTP transfer, to be\n"
" exact). To make commands take place after a successful transfer,\n"
-" prefix them with a dash '-'. To make commands be sent after\n"
+" prefix them with a dash '-'. To make commands be sent after\n"
" curl has changed the working directory, just before the transfer\n"
, stdout);
fputs(
-" command(s), prefix the command with a '+' (this is only sup-\n"
+" command(s), prefix the command with a '+' (this is only sup-\n"
" ported for FTP). You may specify any number of commands.\n"
"\n"
-" If the server returns failure for one of the commands, the en-\n"
+" If the server returns failure for one of the commands, the en-\n"
" tire operation will be aborted. You must send syntactically cor-\n"
-" rect FTP commands as RFC 959 defines to FTP servers, or one of\n"
+" rect FTP commands as RFC 959 defines to FTP servers, or one of\n"
" the commands listed below to SFTP servers.\n"
"\n"
, stdout);
fputs(
-" Prefix the command with an asterisk (*) to make curl continue\n"
-" even if the command fails as by default curl will stop at first\n"
+" Prefix the command with an asterisk (*) to make curl continue\n"
+" even if the command fails as by default curl will stop at first\n"
" failure.\n"
"\n"
" This option can be used multiple times.\n"
"\n"
-" SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
-" quote commands itself before sending them to the server. File\n"
+" SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
+" quote commands itself before sending them to the server. File\n"
" names may be quoted shell-style to embed spaces or special char-\n"
, stdout);
fputs(
-" acters. Following is the list of all supported SFTP quote com-\n"
+" acters. Following is the list of all supported SFTP quote com-\n"
" mands:\n"
"\n"
" chgrp group file\n"
-" The chgrp command sets the group ID of the file named by\n"
-" the file operand to the group ID specified by the group\n"
+" The chgrp command sets the group ID of the file named by\n"
+" the file operand to the group ID specified by the group\n"
" operand. The group operand is a decimal integer group ID.\n"
"\n"
" chmod mode file\n"
-" The chmod command modifies the file mode bits of the\n"
+" The chmod command modifies the file mode bits of the\n"
, stdout);
fputs(
" specified file. The mode operand is an octal integer mode\n"
@@ -2712,18 +2752,18 @@ void hugehelp(void)
"\n"
" chown user file\n"
" The chown command sets the owner of the file named by the\n"
-" file operand to the user ID specified by the user oper-\n"
+" file operand to the user ID specified by the user oper-\n"
" and. The user operand is a decimal integer user ID.\n"
"\n"
" ln source_file target_file\n"
" The ln and symlink commands create a symbolic link at the\n"
, stdout);
fputs(
-" target_file location pointing to the source_file loca-\n"
+" target_file location pointing to the source_file loca-\n"
" tion.\n"
"\n"
" mkdir directory_name\n"
-" The mkdir command creates the directory named by the di-\n"
+" The mkdir command creates the directory named by the di-\n"
" rectory_name operand.\n"
"\n"
" pwd The pwd command returns the absolute pathname of the cur-\n"
@@ -2733,7 +2773,7 @@ void hugehelp(void)
, stdout);
fputs(
" The rename command renames the file or directory named by\n"
-" the source operand to the destination path named by the\n"
+" the source operand to the destination path named by the\n"
" target operand.\n"
"\n"
" rm file\n"
@@ -2741,7 +2781,7 @@ void hugehelp(void)
" erand.\n"
"\n"
" rmdir directory\n"
-" The rmdir command removes the directory entry specified\n"
+" The rmdir command removes the directory entry specified\n"
, stdout);
fputs(
" by the directory operand, provided it is empty.\n"
@@ -2751,14 +2791,14 @@ void hugehelp(void)
"\n"
" --random-file <file>\n"
" Specify the path name to file containing what will be considered\n"
-" as random data. The data may be used to seed the random engine\n"
+" as random data. The data may be used to seed the random engine\n"
" for SSL connections. See also the --egd-file option.\n"
"\n"
" -r, --range <range>\n"
, stdout);
fputs(
" (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
-" ment) from an HTTP/1.1, FTP or SFTP server or a local FILE.\n"
+" ment) from an HTTP/1.1, FTP or SFTP server or a local FILE.\n"
" Ranges can be specified in a number of ways.\n"
"\n"
" 0-499 specifies the first 500 bytes\n"
@@ -2776,30 +2816,30 @@ void hugehelp(void)
" 100-199,500-599\n"
" specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
-" (*) = NOTE that this will cause the server to reply with a mul-\n"
+" (*) = NOTE that this will cause the server to reply with a mul-\n"
" tipart response!\n"
"\n"
-" Only digit characters (0-9) are valid in the 'start' and 'stop'\n"
-" fields of the 'start-stop' range syntax. If a non-digit charac-\n"
+" Only digit characters (0-9) are valid in the 'start' and 'stop'\n"
+" fields of the 'start-stop' range syntax. If a non-digit charac-\n"
, stdout);
fputs(
" ter is given in the range, the server's response will be unspec-\n"
" ified, depending on the server's configuration.\n"
"\n"
-" You should also be aware that many HTTP/1.1 servers do not have\n"
-" this feature enabled, so that when you attempt to get a range,\n"
+" You should also be aware that many HTTP/1.1 servers do not have\n"
+" this feature enabled, so that when you attempt to get a range,\n"
" you'll instead get the whole document.\n"
"\n"
-" FTP and SFTP range downloads only support the simple 'start-\n"
+" FTP and SFTP range downloads only support the simple 'start-\n"
, stdout);
fputs(
-" stop' syntax (optionally with one of the numbers omitted). FTP\n"
+" stop' syntax (optionally with one of the numbers omitted). FTP\n"
" use depends on the extended FTP command SIZE.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --raw (HTTP) When used, it disables all internal HTTP decoding of con-\n"
-" tent or transfer encodings and instead makes them passed on un-\n"
+" tent or transfer encodings and instead makes them passed on un-\n"
" altered, raw.\n"
"\n"
" Added in 7.16.2.\n"
@@ -2809,9 +2849,9 @@ void hugehelp(void)
fputs(
" (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
" This can also be set with the -H, --header flag of course. When\n"
-" used with -L, --location you can append \";auto\" to the -e,\n"
-" --referer URL to make curl automatically set the previous URL\n"
-" when it follows a Location: header. The \";auto\" string can be\n"
+" used with -L, --location you can append \";auto\" to the -e,\n"
+" --referer URL to make curl automatically set the previous URL\n"
+" when it follows a Location: header. The \";auto\" string can be\n"
" used alone, even if you don't set an initial -e, --referer.\n"
"\n"
, stdout);
@@ -2822,29 +2862,29 @@ void hugehelp(void)
"\n"
" -J, --remote-header-name\n"
" (HTTP) This option tells the -O, --remote-name option to use the\n"
-" server-specified Content-Disposition filename instead of ex-\n"
+" server-specified Content-Disposition filename instead of ex-\n"
" tracting a filename from the URL.\n"
"\n"
-" If the server specifies a file name and a file with that name\n"
+" If the server specifies a file name and a file with that name\n"
, stdout);
fputs(
-" already exists in the current working directory it will not be\n"
+" already exists in the current working directory it will not be\n"
" overwritten and an error will occur. If the server doesn't spec-\n"
" ify a file name then this option has no effect.\n"
"\n"
-" There's no attempt to decode %-sequences (yet) in the provided\n"
+" There's no attempt to decode %-sequences (yet) in the provided\n"
" file name, so this option may provide you with rather unexpected\n"
" file names.\n"
"\n"
-" WARNING: Exercise judicious use of this option, especially on\n"
+" WARNING: Exercise judicious use of this option, especially on\n"
, stdout);
fputs(
-" Windows. A rogue server could send you the name of a DLL or\n"
-" other file that could possibly be loaded automatically by Win-\n"
+" Windows. A rogue server could send you the name of a DLL or\n"
+" other file that could possibly be loaded automatically by Win-\n"
" dows or some third party software.\n"
"\n"
" --remote-name-all\n"
-" This option changes the default action for all given URLs to be\n"
+" This option changes the default action for all given URLs to be\n"
" dealt with as if -O, --remote-name were used for each one. So if\n"
" you want to disable that for a specific URL after --remote-name-\n"
, stdout);
@@ -2854,76 +2894,76 @@ void hugehelp(void)
" Added in 7.19.0.\n"
"\n"
" -O, --remote-name\n"
-" Write output to a local file named like the remote file we get.\n"
-" (Only the file part of the remote file is used, the path is cut\n"
+" Write output to a local file named like the remote file we get.\n"
+" (Only the file part of the remote file is used, the path is cut\n"
" off.)\n"
"\n"
-" The file will be saved in the current working directory. If you\n"
-" want the file saved in a different directory, make sure you\n"
+" The file will be saved in the current working directory. If you\n"
+" want the file saved in a different directory, make sure you\n"
, stdout);
fputs(
-" change the current working directory before invoking curl with\n"
+" change the current working directory before invoking curl with\n"
" this option.\n"
"\n"
-" The remote file name to use for saving is extracted from the\n"
-" given URL, nothing else, and if it already exists it will be\n"
-" overwritten. If you want the server to be able to choose the\n"
+" The remote file name to use for saving is extracted from the\n"
+" given URL, nothing else, and if it already exists it will be\n"
+" overwritten. If you want the server to be able to choose the\n"
" file name refer to -J, --remote-header-name which can be used in\n"
, stdout);
fputs(
-" addition to this option. If the server chooses a file name and\n"
+" addition to this option. If the server chooses a file name and\n"
" that name already exists it will not be overwritten.\n"
"\n"
" There is no URL decoding done on the file name. If it has %20 or\n"
-" other URL encoded parts of the name, they will end up as-is as\n"
+" other URL encoded parts of the name, they will end up as-is as\n"
" file name.\n"
"\n"
-" You may use this option as many times as the number of URLs you\n"
+" You may use this option as many times as the number of URLs you\n"
" have.\n"
"\n"
" -R, --remote-time\n"
, stdout);
fputs(
-" When used, this will make curl attempt to figure out the time-\n"
-" stamp of the remote file, and if that is available make the lo-\n"
+" When used, this will make curl attempt to figure out the time-\n"
+" stamp of the remote file, and if that is available make the lo-\n"
" cal file get that same timestamp.\n"
"\n"
" --request-target\n"
-" (HTTP) Tells curl to use an alternative \"target\" (path) instead\n"
-" of using the path as provided in the URL. Particularly useful\n"
-" when wanting to issue HTTP requests without leading slash or\n"
+" (HTTP) Tells curl to use an alternative \"target\" (path) instead\n"
+" of using the path as provided in the URL. Particularly useful\n"
+" when wanting to issue HTTP requests without leading slash or\n"
, stdout);
fputs(
-" other data that doesn't follow the regular URL pattern, like\n"
+" other data that doesn't follow the regular URL pattern, like\n"
" \"OPTIONS *\".\n"
"\n"
" Added in 7.55.0.\n"
"\n"
" -X, --request <command>\n"
" (HTTP) Specifies a custom request method to use when communicat-\n"
-" ing with the HTTP server. The specified request method will be\n"
-" used instead of the method otherwise used (which defaults to\n"
-" GET). Read the HTTP 1.1 specification for details and explana-\n"
+" ing with the HTTP server. The specified request method will be\n"
+" used instead of the method otherwise used (which defaults to\n"
+" GET). Read the HTTP 1.1 specification for details and explana-\n"
, stdout);
fputs(
-" tions. Common additional HTTP requests include PUT and DELETE,\n"
+" tions. Common additional HTTP requests include PUT and DELETE,\n"
" but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
" and more.\n"
"\n"
-" Normally you don't need this option. All sorts of GET, HEAD,\n"
+" Normally you don't need this option. All sorts of GET, HEAD,\n"
" POST and PUT requests are rather invoked by using dedicated com-\n"
" mand line options.\n"
"\n"
-" This option only changes the actual word used in the HTTP re-\n"
+" This option only changes the actual word used in the HTTP re-\n"
, stdout);
fputs(
" quest, it does not alter the way curl behaves. So for example if\n"
-" you want to make a proper HEAD request, using -X HEAD will not\n"
+" you want to make a proper HEAD request, using -X HEAD will not\n"
" suffice. You need to use the -I, --head option.\n"
"\n"
-" The method string you set with -X, --request will be used for\n"
-" all requests, which if you for example use -L, --location may\n"
-" cause unintended side-effects when curl doesn't change request\n"
+" The method string you set with -X, --request will be used for\n"
+" all requests, which if you for example use -L, --location may\n"
+" cause unintended side-effects when curl doesn't change request\n"
, stdout);
fputs(
" method according to the HTTP 30x response codes - and similar.\n"
@@ -2934,7 +2974,7 @@ void hugehelp(void)
" (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
" RETR. (Added in 7.26.0)\n"
"\n"
-" (IMAP) Specifies a custom IMAP command to use instead of LIST.\n"
+" (IMAP) Specifies a custom IMAP command to use instead of LIST.\n"
" (Added in 7.30.0)\n"
"\n"
, stdout);
@@ -2945,22 +2985,22 @@ void hugehelp(void)
" If this option is used several times, the last one will be used.\n"
"\n"
" --resolve <host:port:address[,address]...>\n"
-" Provide a custom address for a specific host and port pair. Us-\n"
-" ing this, you can make the curl requests(s) use a specified ad-\n"
-" dress and prevent the otherwise normally resolved address to be\n"
+" Provide a custom address for a specific host and port pair. Us-\n"
+" ing this, you can make the curl requests(s) use a specified ad-\n"
+" dress and prevent the otherwise normally resolved address to be\n"
, stdout);
fputs(
-" used. Consider it a sort of /etc/hosts alternative provided on\n"
-" the command line. The port number should be the number used for\n"
-" the specific protocol the host will be used for. It means you\n"
+" used. Consider it a sort of /etc/hosts alternative provided on\n"
+" the command line. The port number should be the number used for\n"
+" the specific protocol the host will be used for. It means you\n"
" need several entries if you want to provide address for the same\n"
" host but different ports.\n"
"\n"
-" By specifying '*' as host you can tell curl to resolve any host\n"
+" By specifying '*' as host you can tell curl to resolve any host\n"
, stdout);
fputs(
" and specific port pair to the specified address. Wildcard is re-\n"
-" solved last so any --resolve with a specific host and port will\n"
+" solved last so any --resolve with a specific host and port will\n"
" be used first.\n"
"\n"
" The provided address set by this option will be used even if -4,\n"
@@ -2970,7 +3010,7 @@ void hugehelp(void)
"\n"
, stdout);
fputs(
-" Support for providing multiple IP addresses per entry was added\n"
+" Support for providing multiple IP addresses per entry was added\n"
" in 7.59.0.\n"
"\n"
" Support for resolving with wildcard was added in 7.64.0.\n"
@@ -2981,8 +3021,8 @@ void hugehelp(void)
" Added in 7.21.3.\n"
"\n"
" --retry-connrefused\n"
-" In addition to the other conditions, consider ECONNREFUSED as a\n"
-" transient error too for --retry. This option is used together\n"
+" In addition to the other conditions, consider ECONNREFUSED as a\n"
+" transient error too for --retry. This option is used together\n"
, stdout);
fputs(
" with --retry.\n"
@@ -2990,10 +3030,10 @@ void hugehelp(void)
" Added in 7.52.0.\n"
"\n"
" --retry-delay <seconds>\n"
-" Make curl sleep this amount of time before each retry when a\n"
-" transfer has failed with a transient error (it changes the de-\n"
-" fault backoff time algorithm between retries). This option is\n"
-" only interesting if --retry is also used. Setting this delay to\n"
+" Make curl sleep this amount of time before each retry when a\n"
+" transfer has failed with a transient error (it changes the de-\n"
+" fault backoff time algorithm between retries). This option is\n"
+" only interesting if --retry is also used. Setting this delay to\n"
" zero will make curl use the default backoff time.\n"
"\n"
, stdout);
@@ -3003,13 +3043,13 @@ void hugehelp(void)
" Added in 7.12.3.\n"
"\n"
" --retry-max-time <seconds>\n"
-" The retry timer is reset before the first transfer attempt. Re-\n"
-" tries will be done as usual (see --retry) as long as the timer\n"
+" The retry timer is reset before the first transfer attempt. Re-\n"
+" tries will be done as usual (see --retry) as long as the timer\n"
" hasn't reached this given limit. Notice that if the timer hasn't\n"
-" reached the limit, the request will be made and while perform-\n"
+" reached the limit, the request will be made and while perform-\n"
, stdout);
fputs(
-" ing, it may take longer than this given time period. To limit a\n"
+" ing, it may take longer than this given time period. To limit a\n"
" single request's maximum time, use -m, --max-time. Set this op-\n"
" tion to zero to not timeout retries.\n"
"\n"
@@ -3018,30 +3058,49 @@ void hugehelp(void)
" Added in 7.12.3.\n"
"\n"
" --retry <num>\n"
-" If a transient error is returned when curl tries to perform a\n"
+" If a transient error is returned when curl tries to perform a\n"
, stdout);
fputs(
-" transfer, it will retry this number of times before giving up.\n"
-" Setting the number to 0 makes curl do no retries (which is the\n"
-" default). Transient error means either: a timeout, an FTP 4xx\n"
+" transfer, it will retry this number of times before giving up.\n"
+" Setting the number to 0 makes curl do no retries (which is the\n"
+" default). Transient error means either: a timeout, an FTP 4xx\n"
" response code or an HTTP 408 or 5xx response code.\n"
"\n"
-" When curl is about to retry a transfer, it will first wait one\n"
-" second and then for all forthcoming retries it will double the\n"
+" When curl is about to retry a transfer, it will first wait one\n"
+" second and then for all forthcoming retries it will double the\n"
, stdout);
fputs(
-" waiting time until it reaches 10 minutes which then will be the\n"
-" delay between the rest of the retries. By using --retry-delay\n"
-" you disable this exponential backoff algorithm. See also\n"
+" waiting time until it reaches 10 minutes which then will be the\n"
+" delay between the rest of the retries. By using --retry-delay\n"
+" you disable this exponential backoff algorithm. See also\n"
" --retry-max-time to limit the total time allowed for retries.\n"
"\n"
+" Since curl 7.66.0, curl will comply with the Retry-After: re-\n"
+" sponse header if one was present to know when to issue the next\n"
+" retry.\n"
+"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" Added in 7.12.3.\n"
"\n"
-" --sasl-ir\n"
+" --sasl-authzid\n"
+" Use this authorisation identity (authzid), during SASL PLAIN au-\n"
+" thentication, in addition to the authentication identity (auth-\n"
+" cid) as specified by -u, --user.\n"
+"\n"
+" If the option isn't specified, the server will derive the au-\n"
+" thzid from the authcid, but if specified, and depending on the\n"
, stdout);
fputs(
+" server implementation, it may be used to access another user's\n"
+" inbox, that the user has been granted access to, or a shared\n"
+" mailbox for example.\n"
+"\n"
+" Added in 7.66.0.\n"
+"\n"
+" --sasl-ir\n"
" Enable initial response in SASL authentication.\n"
"\n"
" Added in 7.31.0.\n"
@@ -3049,7 +3108,9 @@ void hugehelp(void)
" --service-name <name>\n"
" This option allows you to change the service name for SPNEGO.\n"
"\n"
-" Examples: --negotiate --service-name sockd would use\n"
+, stdout);
+ fputs(
+" Examples: --negotiate --service-name sockd would use\n"
" sockd/server-name.\n"
"\n"
" Added in 7.43.0.\n"
@@ -3057,33 +3118,33 @@ void hugehelp(void)
" When used with -s, --silent, it makes curl show an error message\n"
" if it fails.\n"
" -s, --silent\n"
+" Silent or quiet mode. Don't show progress meter or error mes-\n"
+" sages. Makes Curl mute. It will still output the data you ask\n"
, stdout);
fputs(
-" Silent or quiet mode. Don't show progress meter or error mes-\n"
-" sages. Makes Curl mute. It will still output the data you ask\n"
" for, potentially even to the terminal/stdout unless you redirect\n"
" it.\n"
"\n"
-" Use -S, --show-error in addition to this option to disable\n"
+" Use -S, --show-error in addition to this option to disable\n"
" progress meter but still show error messages.\n"
"\n"
" See also -v, --verbose and --stderr.\n"
"\n"
" --socks4 <host[:port]>\n"
-, stdout);
- fputs(
" Use the specified SOCKS4 proxy. If the port number is not speci-\n"
" fied, it is assumed at port 1080.\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+, stdout);
+ fputs(
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
" Since 7.21.7, this option is superfluous since you can specify a\n"
" socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
, stdout);
fputs(
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
" such a case curl first connects to the SOCKS proxy and then con-\n"
" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
@@ -3095,20 +3156,20 @@ void hugehelp(void)
" Use the specified SOCKS4a proxy. If the port number is not spec-\n"
" ified, it is assumed at port 1080.\n"
"\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
, stdout);
fputs(
-" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
" Since 7.21.7, this option is superfluous since you can specify a\n"
-" socks4a proxy with -x, --proxy using a socks4a:// protocol pre-\n"
+" socks4a proxy with -x, --proxy using a socks4a:// protocol pre-\n"
" fix.\n"
"\n"
" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
+" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
+" such a case curl first connects to the SOCKS proxy and then con-\n"
, stdout);
fputs(
-" such a case curl first connects to the SOCKS proxy and then con-\n"
" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -3117,127 +3178,125 @@ void hugehelp(void)
"\n"
" --socks5-basic\n"
" Tells curl to use username/password authentication when connect-\n"
-" ing to a SOCKS5 proxy. The username/password authentication is\n"
-, stdout);
- fputs(
-" enabled by default. Use --socks5-gssapi to force GSS-API au-\n"
+" ing to a SOCKS5 proxy. The username/password authentication is\n"
+" enabled by default. Use --socks5-gssapi to force GSS-API au-\n"
" thentication to SOCKS5 proxies.\n"
"\n"
+, stdout);
+ fputs(
" Added in 7.55.0.\n"
"\n"
" --socks5-gssapi-nec\n"
-" As part of the GSS-API negotiation a protection mode is negoti-\n"
-" ated. RFC 1961 says in section 4.3/4.4 it should be protected,\n"
-" but the NEC reference implementation does not. The option\n"
-, stdout);
- fputs(
-" --socks5-gssapi-nec allows the unprotected exchange of the pro-\n"
+" As part of the GSS-API negotiation a protection mode is negoti-\n"
+" ated. RFC 1961 says in section 4.3/4.4 it should be protected,\n"
+" but the NEC reference implementation does not. The option\n"
+" --socks5-gssapi-nec allows the unprotected exchange of the pro-\n"
" tection mode negotiation.\n"
"\n"
" Added in 7.19.4.\n"
"\n"
" --socks5-gssapi-service <name>\n"
+, stdout);
+ fputs(
" The default service name for a socks server is rcmd/server-fqdn.\n"
" This option allows you to change it.\n"
"\n"
-" Examples: --socks5 proxy-name --socks5-gssapi-service sockd\n"
-" would use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
-, stdout);
- fputs(
-" service sockd/real-name would use sockd/real-name for cases\n"
+" Examples: --socks5 proxy-name --socks5-gssapi-service sockd\n"
+" would use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
+" service sockd/real-name would use sockd/real-name for cases\n"
" where the proxy-name does not match the principal name.\n"
"\n"
" Added in 7.19.4.\n"
"\n"
" --socks5-gssapi\n"
-" Tells curl to use GSS-API authentication when connecting to a\n"
-" SOCKS5 proxy. The GSS-API authentication is enabled by default\n"
-" (if curl is compiled with GSS-API support). Use --socks5-basic\n"
, stdout);
fputs(
+" Tells curl to use GSS-API authentication when connecting to a\n"
+" SOCKS5 proxy. The GSS-API authentication is enabled by default\n"
+" (if curl is compiled with GSS-API support). Use --socks5-basic\n"
" to force username/password authentication to SOCKS5 proxies.\n"
"\n"
" Added in 7.55.0.\n"
"\n"
" --socks5-hostname <host[:port]>\n"
-" Use the specified SOCKS5 proxy (and let the proxy resolve the\n"
-" host name). If the port number is not specified, it is assumed\n"
+" Use the specified SOCKS5 proxy (and let the proxy resolve the\n"
+, stdout);
+ fputs(
+" host name). If the port number is not specified, it is assumed\n"
" at port 1080.\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
-, stdout);
- fputs(
" Since 7.21.7, this option is superfluous since you can specify a\n"
" socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
" col prefix.\n"
"\n"
" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
+, stdout);
+ fputs(
+" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
" such a case curl first connects to the SOCKS proxy and then con-\n"
" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" Added in 7.18.0.\n"
"\n"
" --socks5 <host[:port]>\n"
-" Use the specified SOCKS5 proxy - but resolve the host name lo-\n"
-" cally. If the port number is not specified, it is assumed at\n"
+" Use the specified SOCKS5 proxy - but resolve the host name lo-\n"
+, stdout);
+ fputs(
+" cally. If the port number is not specified, it is assumed at\n"
" port 1080.\n"
"\n"
-" This option overrides any previous use of -x, --proxy, as they\n"
+" This option overrides any previous use of -x, --proxy, as they\n"
" are mutually exclusive.\n"
"\n"
-, stdout);
- fputs(
" Since 7.21.7, this option is superfluous since you can specify a\n"
" socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
" Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
+, stdout);
+ fputs(
+" the same time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
" such a case curl first connects to the SOCKS proxy and then con-\n"
" nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
-" This option (as well as --socks4) does not work with IPV6, FTPS\n"
+" This option (as well as --socks4) does not work with IPV6, FTPS\n"
" or LDAP.\n"
"\n"
" Added in 7.18.0.\n"
"\n"
" -Y, --speed-limit <speed>\n"
+, stdout);
+ fputs(
" If a download is slower than this given speed (in bytes per sec-\n"
-" ond) for speed-time seconds it gets aborted. speed-time is set\n"
+" ond) for speed-time seconds it gets aborted. speed-time is set\n"
" with -y, --speed-time and is 30 if not set.\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" -y, --speed-time <seconds>\n"
" If a download is slower than speed-limit bytes per second during\n"
" a speed-time period, the download gets aborted. If speed-time is\n"
-" used, the default speed-limit will be 1 unless set with -Y,\n"
-" --speed-limit.\n"
-"\n"
-" This option controls transfers and thus will not affect slow\n"
, stdout);
fputs(
-" connects etc. If this is a concern for you, try the --connect-\n"
+" used, the default speed-limit will be 1 unless set with -Y,\n"
+" --speed-limit.\n"
+"\n"
+" This option controls transfers and thus will not affect slow\n"
+" connects etc. If this is a concern for you, try the --connect-\n"
" timeout option.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --ssl-allow-beast\n"
" This option tells curl to not work around a security flaw in the\n"
-" SSL3 and TLS1.0 protocols known as BEAST. If this option isn't\n"
-" used, the SSL layer may use workarounds known to cause interop-\n"
, stdout);
fputs(
+" SSL3 and TLS1.0 protocols known as BEAST. If this option isn't\n"
+" used, the SSL layer may use workarounds known to cause interop-\n"
" erability problems with some older SSL implementations. WARNING:\n"
" this option loosens the SSL security, and by using this flag you\n"
" ask for exactly that.\n"
@@ -3246,13 +3305,13 @@ void hugehelp(void)
"\n"
" --ssl-no-revoke\n"
" (Schannel) This option tells curl to disable certificate revoca-\n"
+, stdout);
+ fputs(
" tion checks. WARNING: this option loosens the SSL security, and\n"
" by using this flag you ask for exactly that.\n"
"\n"
" Added in 7.44.0.\n"
"\n"
-, stdout);
- fputs(
" --ssl-reqd\n"
" (FTP IMAP POP3 SMTP) Require SSL/TLS for the connection. Termi-\n"
" nates the connection if the server doesn't support SSL/TLS.\n"
@@ -3261,45 +3320,45 @@ void hugehelp(void)
"\n"
" Added in 7.20.0.\n"
"\n"
-" --ssl (FTP IMAP POP3 SMTP) Try to use SSL/TLS for the connection. Re-\n"
-" verts to a non-secure connection if the server doesn't support\n"
, stdout);
fputs(
-" SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for differ-\n"
+" --ssl (FTP IMAP POP3 SMTP) Try to use SSL/TLS for the connection. Re-\n"
+" verts to a non-secure connection if the server doesn't support\n"
+" SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for differ-\n"
" ent levels of encryption required.\n"
"\n"
-" This option was formerly known as --ftp-ssl (Added in 7.11.0).\n"
-" That option name can still be used but will be removed in a fu-\n"
+" This option was formerly known as --ftp-ssl (Added in 7.11.0).\n"
+" That option name can still be used but will be removed in a fu-\n"
" ture version.\n"
"\n"
+, stdout);
+ fputs(
" Added in 7.20.0.\n"
"\n"
" -2, --sslv2\n"
-" (SSL) Forces curl to use SSL version 2 when negotiating with a\n"
-, stdout);
- fputs(
-" remote SSL server. Sometimes curl is built without SSLv2 sup-\n"
+" (SSL) Forces curl to use SSL version 2 when negotiating with a\n"
+" remote SSL server. Sometimes curl is built without SSLv2 sup-\n"
" port. SSLv2 is widely considered insecure (see RFC 6176).\n"
"\n"
-" See also --http1.1 and --http2. -2, --sslv2 requires that the\n"
-" underlying libcurl was built to support TLS. This option over-\n"
+" See also --http1.1 and --http2. -2, --sslv2 requires that the\n"
+" underlying libcurl was built to support TLS. This option over-\n"
+, stdout);
+ fputs(
" rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
" -3, --sslv3\n"
-" (SSL) Forces curl to use SSL version 3 when negotiating with a\n"
-, stdout);
- fputs(
-" remote SSL server. Sometimes curl is built without SSLv3 sup-\n"
+" (SSL) Forces curl to use SSL version 3 when negotiating with a\n"
+" remote SSL server. Sometimes curl is built without SSLv3 sup-\n"
" port. SSLv3 is widely considered insecure (see RFC 7568).\n"
"\n"
-" See also --http1.1 and --http2. -3, --sslv3 requires that the\n"
-" underlying libcurl was built to support TLS. This option over-\n"
+" See also --http1.1 and --http2. -3, --sslv3 requires that the\n"
+" underlying libcurl was built to support TLS. This option over-\n"
+, stdout);
+ fputs(
" rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
" --stderr\n"
-" Redirect all writes to stderr to the specified file instead. If\n"
-, stdout);
- fputs(
+" Redirect all writes to stderr to the specified file instead. If\n"
" the file name is a plain '-', it is instead written to stdout.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -3307,24 +3366,24 @@ void hugehelp(void)
" See also -v, --verbose and -s, --silent.\n"
"\n"
" --styled-output\n"
-" Enables the automatic use of bold font styles when writing HTTP\n"
-" headers to the terminal. Use --no-styled-output to switch them\n"
+" Enables the automatic use of bold font styles when writing HTTP\n"
+, stdout);
+ fputs(
+" headers to the terminal. Use --no-styled-output to switch them\n"
" off.\n"
"\n"
" Added in 7.61.0.\n"
"\n"
" --suppress-connect-headers\n"
+" When -p, --proxytunnel is used and a CONNECT request is made\n"
+" don't output proxy CONNECT response headers. This option is\n"
+" meant to be used with -D, --dump-header or -i, --include which\n"
+" are used to show protocol headers in the output. It has no ef-\n"
, stdout);
fputs(
-" When -p, --proxytunnel is used and a CONNECT request is made\n"
-" don't output proxy CONNECT response headers. This option is\n"
-" meant to be used with -D, --dump-header or -i, --include which\n"
-" are used to show protocol headers in the output. It has no ef-\n"
-" fect on debug options such as -v, --verbose or --trace, or any\n"
+" fect on debug options such as -v, --verbose or --trace, or any\n"
" statistics.\n"
"\n"
-, stdout);
- fputs(
" See also -D, --dump-header and -i, --include and -p, --proxytun-\n"
" nel.\n"
"\n"
@@ -3334,12 +3393,12 @@ void hugehelp(void)
" Added in 7.49.0.\n"
"\n"
" --tcp-nodelay\n"
-" Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
+" Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
" page for details about this option.\n"
"\n"
-" Since 7.50.2, curl sets this option by default and you need to\n"
, stdout);
fputs(
+" Since 7.50.2, curl sets this option by default and you need to\n"
" explicitly switch it off if you don't want it on.\n"
"\n"
" Added in 7.11.2.\n"
@@ -3354,9 +3413,9 @@ void hugehelp(void)
" NEW_ENV=<var,val> Sets an environment variable.\n"
"\n"
" --tftp-blksize <value>\n"
-" (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block\n"
, stdout);
fputs(
+" (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block\n"
" size that curl will try to use when transferring data to or from\n"
" a TFTP server. By default 512 bytes will be used.\n"
"\n"
@@ -3367,46 +3426,46 @@ void hugehelp(void)
" --tftp-no-options\n"
" (TFTP) Tells curl not to send TFTP options requests.\n"
"\n"
-" This option improves interop with some legacy servers that do\n"
, stdout);
fputs(
-" not acknowledge or properly implement TFTP options. When this\n"
+" This option improves interop with some legacy servers that do\n"
+" not acknowledge or properly implement TFTP options. When this\n"
" option is used --tftp-blksize is ignored.\n"
"\n"
" Added in 7.48.0.\n"
"\n"
" -z, --time-cond <time>\n"
-" (HTTP FTP) Request a file that has been modified later than the\n"
-" given time and date, or one that has been modified before that\n"
-" time. The <date expression> can be all sorts of date strings or\n"
+" (HTTP FTP) Request a file that has been modified later than the\n"
+" given time and date, or one that has been modified before that\n"
, stdout);
fputs(
+" time. The <date expression> can be all sorts of date strings or\n"
" if it doesn't match any internal ones, it is taken as a filename\n"
-" and tries to get the modification date (mtime) from <file> in-\n"
+" and tries to get the modification date (mtime) from <file> in-\n"
" stead. See the curl_getdate(3) man pages for date expression de-\n"
" tails.\n"
"\n"
" Start the date expression with a dash (-) to make it request for\n"
-" a document that is older than the given date/time, default is a\n"
-" document that is newer than the specified date/time.\n"
-"\n"
+" a document that is older than the given date/time, default is a\n"
, stdout);
fputs(
+" document that is newer than the specified date/time.\n"
+"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --tls-max <VERSION>\n"
" (SSL) VERSION defines maximum supported TLS version. The minimum\n"
-" acceptable version is set by tlsv1.0, tlsv1.1, tlsv1.2 or\n"
+" acceptable version is set by tlsv1.0, tlsv1.1, tlsv1.2 or\n"
" tlsv1.3.\n"
"\n"
" default\n"
" Use up to recommended TLS version.\n"
"\n"
" 1.0 Use up to TLSv1.0.\n"
-" 1.1 Use up to TLSv1.1.\n"
-" 1.2 Use up to TLSv1.2.\n"
, stdout);
fputs(
+" 1.1 Use up to TLSv1.1.\n"
+" 1.2 Use up to TLSv1.2.\n"
" 1.3 Use up to TLSv1.3.\n"
"\n"
" See also --tlsv1.0 and --tlsv1.1 and --tlsv1.2 and --tlsv1.3. --tls-max\n"
@@ -3414,128 +3473,128 @@ void hugehelp(void)
" 7.54.0.\n"
"\n"
" --tls13-ciphers <list of TLS 1.3 ciphersuites>\n"
-" (TLS) Specifies which cipher suites to use in the connection if\n"
-" it negotiates TLS 1.3. The list of ciphers suites must specify\n"
+" (TLS) Specifies which cipher suites to use in the connection if\n"
, stdout);
fputs(
-" valid ciphers. Read up on TLS 1.3 cipher suite details on this\n"
+" it negotiates TLS 1.3. The list of ciphers suites must specify\n"
+" valid ciphers. Read up on TLS 1.3 cipher suite details on this\n"
" URL:\n"
"\n"
" https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
-" This option is currently used only when curl is built to use\n"
+" This option is currently used only when curl is built to use\n"
" OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
" you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
" option.\n"
"\n"
-" If this option is used several times, the last one will be used.\n"
-"\n"
, stdout);
fputs(
+" If this option is used several times, the last one will be used.\n"
+"\n"
" --tlsauthtype <type>\n"
-" Set TLS authentication type. Currently, the only supported op-\n"
+" Set TLS authentication type. Currently, the only supported op-\n"
" tion is \"SRP\", for TLS-SRP (RFC 5054). If --tlsuser and\n"
-" --tlspassword are specified but --tlsauthtype is not, then this\n"
-" option defaults to \"SRP\". This option works only if the under-\n"
-" lying libcurl is built with TLS-SRP support, which requires\n"
-" OpenSSL or GnuTLS with TLS-SRP support.\n"
-"\n"
+" --tlspassword are specified but --tlsauthtype is not, then this\n"
+" option defaults to \"SRP\". This option works only if the under-\n"
, stdout);
fputs(
+" lying libcurl is built with TLS-SRP support, which requires\n"
+" OpenSSL or GnuTLS with TLS-SRP support.\n"
+"\n"
" Added in 7.21.4.\n"
"\n"
" --tlspassword\n"
-" Set password for use with the TLS authentication method speci-\n"
+" Set password for use with the TLS authentication method speci-\n"
" fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
"\n"
" Added in 7.21.4.\n"
" --tlsuser <name>\n"
-" Set username for use with the TLS authentication method speci-\n"
-" fied with --tlsauthtype. Requires that --tlspassword also is\n"
+" Set username for use with the TLS authentication method speci-\n"
+, stdout);
+ fputs(
+" fied with --tlsauthtype. Requires that --tlspassword also is\n"
" set.\n"
"\n"
" Added in 7.21.4.\n"
"\n"
" --tlsv1.0\n"
-, stdout);
- fputs(
-" (TLS) Forces curl to use TLS version 1.0 or later when connect-\n"
+" (TLS) Forces curl to use TLS version 1.0 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
-" In old versions of curl this option was documented to allow\n"
-" _only_ TLS 1.0, but behavior was inconsistent depending on the\n"
+" In old versions of curl this option was documented to allow\n"
+" _only_ TLS 1.0, but behavior was inconsistent depending on the\n"
+, stdout);
+ fputs(
" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
" sion.\n"
"\n"
" Added in 7.34.0.\n"
"\n"
" --tlsv1.1\n"
-, stdout);
- fputs(
-" (TLS) Forces curl to use TLS version 1.1 or later when connect-\n"
+" (TLS) Forces curl to use TLS version 1.1 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
-" In old versions of curl this option was documented to allow\n"
-" _only_ TLS 1.1, but behavior was inconsistent depending on the\n"
+" In old versions of curl this option was documented to allow\n"
+" _only_ TLS 1.1, but behavior was inconsistent depending on the\n"
+, stdout);
+ fputs(
" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
" sion.\n"
"\n"
" Added in 7.34.0.\n"
"\n"
" --tlsv1.2\n"
-, stdout);
- fputs(
-" (TLS) Forces curl to use TLS version 1.2 or later when connect-\n"
+" (TLS) Forces curl to use TLS version 1.2 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
-" In old versions of curl this option was documented to allow\n"
-" _only_ TLS 1.2, but behavior was inconsistent depending on the\n"
+" In old versions of curl this option was documented to allow\n"
+" _only_ TLS 1.2, but behavior was inconsistent depending on the\n"
+, stdout);
+ fputs(
" TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
" sion.\n"
"\n"
" Added in 7.34.0.\n"
"\n"
" --tlsv1.3\n"
-, stdout);
- fputs(
-" (TLS) Forces curl to use TLS version 1.3 or later when connect-\n"
+" (TLS) Forces curl to use TLS version 1.3 or later when connect-\n"
" ing to a remote TLS server.\n"
"\n"
" Note that TLS 1.3 is only supported by a subset of TLS backends.\n"
" At the time of this writing, they are BoringSSL, NSS, and Secure\n"
+, stdout);
+ fputs(
" Transport (on iOS 11 or later, and macOS 10.13 or later).\n"
"\n"
" Added in 7.52.0.\n"
"\n"
" -1, --tlsv1\n"
-" (SSL) Tells curl to use at least TLS version 1.x when negotiat-\n"
-, stdout);
- fputs(
-" ing with a remote TLS server. That means TLS version 1.0 or\n"
+" (SSL) Tells curl to use at least TLS version 1.x when negotiat-\n"
+" ing with a remote TLS server. That means TLS version 1.0 or\n"
" higher\n"
"\n"
-" See also --http1.1 and --http2. -1, --tlsv1 requires that the\n"
-" underlying libcurl was built to support TLS. This option over-\n"
+" See also --http1.1 and --http2. -1, --tlsv1 requires that the\n"
+" underlying libcurl was built to support TLS. This option over-\n"
+, stdout);
+ fputs(
" rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
" --tr-encoding\n"
" (HTTP) Request a compressed Transfer-Encoding response using one\n"
-" of the algorithms curl supports, and uncompress the data while\n"
-, stdout);
- fputs(
+" of the algorithms curl supports, and uncompress the data while\n"
" receiving it.\n"
"\n"
" Added in 7.21.6.\n"
"\n"
" --trace-ascii <file>\n"
" Enables a full trace dump of all incoming and outgoing data, in-\n"
-" cluding descriptive information, to the given output file. Use\n"
+" cluding descriptive information, to the given output file. Use\n"
+, stdout);
+ fputs(
" \"-\" as filename to have the output sent to stdout.\n"
"\n"
" This is very similar to --trace, but leaves out the hex part and\n"
-" only shows the ASCII part of the dump. It makes smaller output\n"
-, stdout);
- fputs(
+" only shows the ASCII part of the dump. It makes smaller output\n"
" that might be easier to read for untrained humans.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
@@ -3543,214 +3602,216 @@ void hugehelp(void)
" This option overrides --trace and -v, --verbose.\n"
"\n"
" --trace-time\n"
-" Prepends a time stamp to each trace or verbose line that curl\n"
+, stdout);
+ fputs(
+" Prepends a time stamp to each trace or verbose line that curl\n"
" displays.\n"
"\n"
" Added in 7.14.0.\n"
"\n"
" --trace <file>\n"
" Enables a full trace dump of all incoming and outgoing data, in-\n"
-, stdout);
- fputs(
-" cluding descriptive information, to the given output file. Use\n"
-" \"-\" as filename to have the output sent to stdout. Use \"%\" as\n"
+" cluding descriptive information, to the given output file. Use\n"
+" \"-\" as filename to have the output sent to stdout. Use \"%\" as\n"
" filename to have the output sent to stderr.\n"
"\n"
+, stdout);
+ fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" This option overrides -v, --verbose and --trace-ascii.\n"
"\n"
" --unix-socket <path>\n"
" (HTTP) Connect through this Unix domain socket, instead of using\n"
-, stdout);
- fputs(
" the network.\n"
"\n"
" Added in 7.40.0.\n"
"\n"
" -T, --upload-file <file>\n"
-" This transfers the specified local file to the remote URL. If\n"
+" This transfers the specified local file to the remote URL. If\n"
+, stdout);
+ fputs(
" there is no file part in the specified URL, curl will append the\n"
" local file name. NOTE that you must use a trailing / on the last\n"
-" directory to really prove to Curl that there is no file name or\n"
+" directory to really prove to Curl that there is no file name or\n"
" curl will think that your last directory name is the remote file\n"
-, stdout);
- fputs(
" name to use. That will most likely cause the upload operation to\n"
" fail. If this is used on an HTTP(S) server, the PUT command will\n"
" be used.\n"
"\n"
-" Use the file name \"-\" (a single dash) to use stdin instead of a\n"
-" given file. Alternately, the file name \".\" (a single period)\n"
-" may be specified instead of \"-\" to use stdin in non-blocking\n"
-" mode to allow reading server output while stdin is being up-\n"
, stdout);
fputs(
+" Use the file name \"-\" (a single dash) to use stdin instead of a\n"
+" given file. Alternately, the file name \".\" (a single period)\n"
+" may be specified instead of \"-\" to use stdin in non-blocking\n"
+" mode to allow reading server output while stdin is being up-\n"
" loaded.\n"
"\n"
-" You can specify one -T, --upload-file for each URL on the com-\n"
-" mand line. Each -T, --upload-file + URL pair specifies what to\n"
-" upload and to where. curl also supports \"globbing\" of the -T,\n"
-" --upload-file argument, meaning that you can upload multiple\n"
-" files to a single URL by using the same URL globbing style sup-\n"
-" ported in the URL, like this:\n"
-"\n"
+" You can specify one -T, --upload-file for each URL on the com-\n"
+" mand line. Each -T, --upload-file + URL pair specifies what to\n"
, stdout);
fputs(
+" upload and to where. curl also supports \"globbing\" of the -T,\n"
+" --upload-file argument, meaning that you can upload multiple\n"
+" files to a single URL by using the same URL globbing style sup-\n"
+" ported in the URL, like this:\n"
+"\n"
" curl --upload-file \"{file1,file2}\" http://www.example.com\n"
"\n"
" or even\n"
"\n"
" curl -T \"img[1-1000].png\" ftp://ftp.example.com/upload/\n"
"\n"
-" When uploading to an SMTP server: the uploaded data is assumed\n"
+, stdout);
+ fputs(
+" When uploading to an SMTP server: the uploaded data is assumed\n"
" to be RFC 5322 formatted. It has to feature the necessary set of\n"
-" headers and mail body formatted correctly by the user as curl\n"
+" headers and mail body formatted correctly by the user as curl\n"
" will not transcode nor encode it further in any way.\n"
"\n"
" --url <url>\n"
-, stdout);
- fputs(
-" Specify a URL to fetch. This option is mostly handy when you\n"
+" Specify a URL to fetch. This option is mostly handy when you\n"
" want to specify URL(s) in a config file.\n"
"\n"
-" If the given URL is missing a scheme name (such as \"http://\" or\n"
-" \"ftp://\" etc) then curl will make a guess based on the host. If\n"
-" the outermost sub-domain name matches DICT, FTP, IMAP, LDAP,\n"
-" POP3 or SMTP then that protocol will be used, otherwise HTTP\n"
, stdout);
fputs(
+" If the given URL is missing a scheme name (such as \"http://\" or\n"
+" \"ftp://\" etc) then curl will make a guess based on the host. If\n"
+" the outermost sub-domain name matches DICT, FTP, IMAP, LDAP,\n"
+" POP3 or SMTP then that protocol will be used, otherwise HTTP\n"
" will be used. Since 7.45.0 guessing can be disabled by setting a\n"
" default protocol, see --proto-default for details.\n"
"\n"
-" This option may be used any number of times. To control where\n"
-" this URL is written, use the -o, --output or the -O, --remote-\n"
+, stdout);
+ fputs(
+" This option may be used any number of times. To control where\n"
+" this URL is written, use the -o, --output or the -O, --remote-\n"
" name options.\n"
"\n"
" -B, --use-ascii\n"
-" (FTP LDAP) Enable ASCII transfer. For FTP, this can also be en-\n"
-, stdout);
- fputs(
-" forced by using a URL that ends with \";type=A\". This option\n"
+" (FTP LDAP) Enable ASCII transfer. For FTP, this can also be en-\n"
+" forced by using a URL that ends with \";type=A\". This option\n"
" causes data sent to stdout to be in text mode for win32 systems.\n"
"\n"
" -A, --user-agent <name>\n"
+, stdout);
+ fputs(
" (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
-" To encode blanks in the string, surround the string with single\n"
-" quote marks. This header can also be set with the -H, --header\n"
+" To encode blanks in the string, surround the string with single\n"
+" quote marks. This header can also be set with the -H, --header\n"
" or the --proxy-header options.\n"
"\n"
-, stdout);
- fputs(
" If this option is used several times, the last one will be used.\n"
"\n"
" -u, --user <user:password>\n"
" Specify the user name and password to use for server authentica-\n"
+, stdout);
+ fputs(
" tion. Overrides -n, --netrc and --netrc-optional.\n"
"\n"
-" If you simply specify the user name, curl will prompt for a\n"
+" If you simply specify the user name, curl will prompt for a\n"
" password.\n"
"\n"
-" The user name and passwords are split up on the first colon,\n"
-, stdout);
- fputs(
-" which makes it impossible to use a colon in the user name with\n"
+" The user name and passwords are split up on the first colon,\n"
+" which makes it impossible to use a colon in the user name with\n"
" this option. The password can, still.\n"
"\n"
" On systems where it works, curl will hide the given option argu-\n"
-" ment from process listings. This is not enough to protect cre-\n"
-" dentials from possibly getting seen by other users on the same\n"
-" system as they will still be visible for a brief moment before\n"
, stdout);
fputs(
+" ment from process listings. This is not enough to protect cre-\n"
+" dentials from possibly getting seen by other users on the same\n"
+" system as they will still be visible for a brief moment before\n"
" cleared. Such sensitive data should be retrieved from a file in-\n"
" stead or similar and never used in clear text in a command line.\n"
-" When using Kerberos V5 with a Windows based server you should\n"
-" include the Windows domain name in the user name, in order for\n"
-" the server to successfully obtain a Kerberos Ticket. If you\n"
-" don't then the initial authentication handshake may fail.\n"
-"\n"
+" When using Kerberos V5 with a Windows based server you should\n"
, stdout);
fputs(
-" When using NTLM, the user name can be specified simply as the\n"
-" user name, without the domain, if there is a single domain and\n"
+" include the Windows domain name in the user name, in order for\n"
+" the server to successfully obtain a Kerberos Ticket. If you\n"
+" don't then the initial authentication handshake may fail.\n"
+"\n"
+" When using NTLM, the user name can be specified simply as the\n"
+" user name, without the domain, if there is a single domain and\n"
" forest in your setup for example.\n"
"\n"
-" To specify the domain name use either Down-Level Logon Name or\n"
+, stdout);
+ fputs(
+" To specify the domain name use either Down-Level Logon Name or\n"
" UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
" user@example.com respectively.\n"
"\n"
-" If you use a Windows SSPI-enabled curl binary and perform Ker-\n"
+" If you use a Windows SSPI-enabled curl binary and perform Ker-\n"
+" beros V5, Negotiate, NTLM or Digest authentication then you can\n"
+" tell curl to select the user name and password from your envi-\n"
, stdout);
fputs(
-" beros V5, Negotiate, NTLM or Digest authentication then you can\n"
-" tell curl to select the user name and password from your envi-\n"
" ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" -v, --verbose\n"
-" Makes curl verbose during the operation. Useful for debugging\n"
-" and seeing what's going on \"under the hood\". A line starting\n"
+" Makes curl verbose during the operation. Useful for debugging\n"
+" and seeing what's going on \"under the hood\". A line starting\n"
+" with '>' means \"header data\" sent by curl, '<' means \"header\n"
+" data\" received by curl that is hidden in normal cases, and a\n"
, stdout);
fputs(
-" with '>' means \"header data\" sent by curl, '<' means \"header\n"
-" data\" received by curl that is hidden in normal cases, and a\n"
" line starting with '*' means additional info provided by curl.\n"
"\n"
" If you only want HTTP headers in the output, -i, --include might\n"
" be the option you're looking for.\n"
"\n"
-" If you think this option still doesn't give you enough details,\n"
-, stdout);
- fputs(
+" If you think this option still doesn't give you enough details,\n"
" consider using --trace or --trace-ascii instead.\n"
"\n"
" Use -s, --silent to make curl really quiet.\n"
"\n"
-" See also -i, --include. This option overrides --trace and\n"
+" See also -i, --include. This option overrides --trace and\n"
+, stdout);
+ fputs(
" --trace-ascii.\n"
"\n"
" -V, --version\n"
" Displays information about curl and the libcurl version it uses.\n"
-" The first line includes the full version of curl, libcurl and\n"
+" The first line includes the full version of curl, libcurl and\n"
" other 3rd party libraries linked with the executable.\n"
"\n"
-, stdout);
- fputs(
-" The second line (starts with \"Protocols:\") shows all protocols\n"
+" The second line (starts with \"Protocols:\") shows all protocols\n"
" that libcurl reports to support.\n"
"\n"
" The third line (starts with \"Features:\") shows specific features\n"
+, stdout);
+ fputs(
" libcurl reports to offer. Available features include:\n"
"\n"
" IPv6 You can use IPv6 with this.\n"
"\n"
" krb4 Krb4 for FTP is supported.\n"
"\n"
-" SSL SSL versions of various protocols are supported, such as\n"
-, stdout);
- fputs(
+" SSL SSL versions of various protocols are supported, such as\n"
" HTTPS, FTPS, POP3S and so on.\n"
"\n"
-" libz Automatic decompression of compressed files over HTTP is\n"
+" libz Automatic decompression of compressed files over HTTP is\n"
" supported.\n"
"\n"
" NTLM NTLM authentication is supported.\n"
"\n"
-" Debug This curl uses a libcurl built with Debug. This enables\n"
-" more error-tracking and memory debugging etc. For curl-\n"
+, stdout);
+ fputs(
+" Debug This curl uses a libcurl built with Debug. This enables\n"
+" more error-tracking and memory debugging etc. For curl-\n"
" developers only!\n"
"\n"
" AsynchDNS\n"
-, stdout);
- fputs(
-" This curl uses asynchronous name resolves. Asynchronous\n"
-" name resolves can be done using either the c-ares or the\n"
+" This curl uses asynchronous name resolves. Asynchronous\n"
+" name resolves can be done using either the c-ares or the\n"
" threaded resolver backends.\n"
"\n"
" SPNEGO SPNEGO authentication is supported.\n"
"\n"
+, stdout);
+ fputs(
" Largefile\n"
" This curl supports transfers of large files, files larger\n"
" than 2GB.\n"
@@ -3758,16 +3819,16 @@ void hugehelp(void)
" IDN This curl supports IDN - international domain names.\n"
"\n"
" GSS-API\n"
-, stdout);
- fputs(
" GSS-API is supported.\n"
"\n"
" SSPI SSPI is supported.\n"
"\n"
" TLS-SRP\n"
-" SRP (Secure Remote Password) authentication is supported\n"
+" SRP (Secure Remote Password) authentication is supported\n"
" for TLS.\n"
"\n"
+, stdout);
+ fputs(
" HTTP2 HTTP/2 support has been built-in.\n"
"\n"
" UnixSockets\n"
@@ -3777,120 +3838,120 @@ void hugehelp(void)
" This curl is built to support HTTPS proxy.\n"
"\n"
" Metalink\n"
+" This curl supports Metalink (both version 3 and 4 (RFC\n"
+" 5854)), which describes mirrors and hashes. curl will\n"
+" use mirrors for failover if there are errors (such as the\n"
, stdout);
fputs(
-" This curl supports Metalink (both version 3 and 4 (RFC\n"
-" 5854)), which describes mirrors and hashes. curl will\n"
-" use mirrors for failover if there are errors (such as the\n"
" file or server not being available).\n"
"\n"
-" PSL PSL is short for Public Suffix List and means that this\n"
-" curl has been built with knowledge about \"public suf-\n"
+" PSL PSL is short for Public Suffix List and means that this\n"
+" curl has been built with knowledge about \"public suf-\n"
" fixes\".\n"
"\n"
-, stdout);
- fputs(
" MultiSSL\n"
" This curl supports multiple TLS backends.\n"
"\n"
" -w, --write-out <format>\n"
" Make curl display information on stdout after a completed trans-\n"
-" fer. The format is a string that may contain plain text mixed\n"
-" with any number of variables. The format can be specified as a\n"
-" literal \"string\", or you can have curl read the format from a\n"
, stdout);
fputs(
-" file with \"@filename\" and to tell curl to read the format from\n"
+" fer. The format is a string that may contain plain text mixed\n"
+" with any number of variables. The format can be specified as a\n"
+" literal \"string\", or you can have curl read the format from a\n"
+" file with \"@filename\" and to tell curl to read the format from\n"
" stdin you write \"@-\".\n"
"\n"
-" The variables present in the output format will be substituted\n"
-" by the value or text that curl thinks fit, as described below.\n"
-" All variables are specified as %{variable_name} and to output a\n"
-" normal % you just write them as %%. You can output a newline by\n"
+" The variables present in the output format will be substituted\n"
, stdout);
fputs(
+" by the value or text that curl thinks fit, as described below.\n"
+" All variables are specified as %{variable_name} and to output a\n"
+" normal % you just write them as %%. You can output a newline by\n"
" using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
-" The output will be written to standard output, but this can be\n"
+" The output will be written to standard output, but this can be\n"
" switched to standard error by using %{stderr}.\n"
"\n"
+, stdout);
+ fputs(
" NOTE: The %-symbol is a special symbol in the win32-environment,\n"
-" where all occurrences of % must be doubled when using this op-\n"
+" where all occurrences of % must be doubled when using this op-\n"
" tion.\n"
"\n"
" The variables available are:\n"
"\n"
-, stdout);
- fputs(
-" content_type The Content-Type of the requested document, if\n"
+" content_type The Content-Type of the requested document, if\n"
" there was any.\n"
"\n"
" filename_effective\n"
-" The ultimate filename that curl writes out to.\n"
-" This is only meaningful if curl is told to write\n"
-" to a file with the -O, --remote-name or -o,\n"
-" --output option. It's most useful in combination\n"
+" The ultimate filename that curl writes out to.\n"
, stdout);
fputs(
-" with the -J, --remote-header-name option. (Added\n"
+" This is only meaningful if curl is told to write\n"
+" to a file with the -O, --remote-name or -o,\n"
+" --output option. It's most useful in combination\n"
+" with the -J, --remote-header-name option. (Added\n"
" in 7.26.0)\n"
"\n"
" ftp_entry_path The initial path curl ended up in when logging on\n"
+, stdout);
+ fputs(
" to the remote FTP server. (Added in 7.15.4)\n"
"\n"
" http_code The numerical response code that was found in the\n"
-" last retrieved HTTP(S) or FTP(s) transfer. In\n"
-, stdout);
- fputs(
-" 7.18.2 the alias response_code was added to show\n"
+" last retrieved HTTP(S) or FTP(s) transfer. In\n"
+" 7.18.2 the alias response_code was added to show\n"
" the same info.\n"
"\n"
" http_connect The numerical code that was found in the last re-\n"
-" sponse (from a proxy) to a curl CONNECT request.\n"
+, stdout);
+ fputs(
+" sponse (from a proxy) to a curl CONNECT request.\n"
" (Added in 7.12.4)\n"
"\n"
" http_version The http version that was effectively used.\n"
" (Added in 7.50.0)\n"
"\n"
-, stdout);
- fputs(
-" local_ip The IP address of the local end of the most re-\n"
-" cently done connection - can be either IPv4 or\n"
+" local_ip The IP address of the local end of the most re-\n"
+" cently done connection - can be either IPv4 or\n"
" IPv6 (Added in 7.29.0)\n"
"\n"
-" local_port The local port number of the most recently done\n"
+, stdout);
+ fputs(
+" local_port The local port number of the most recently done\n"
" connection (Added in 7.29.0)\n"
"\n"
-" num_connects Number of new connects made in the recent trans-\n"
+" num_connects Number of new connects made in the recent trans-\n"
" fer. (Added in 7.12.3)\n"
"\n"
-, stdout);
- fputs(
" num_redirects Number of redirects that were followed in the re-\n"
" quest. (Added in 7.12.3)\n"
"\n"
" proxy_ssl_verify_result\n"
+, stdout);
+ fputs(
" The result of the HTTPS proxy's SSL peer certifi-\n"
" cate verification that was requested. 0 means the\n"
" verification was successful. (Added in 7.52.0)\n"
"\n"
" redirect_url When an HTTP request was made without -L, --loca-\n"
+" tion to follow redirects (or when --max-redir is\n"
+" met), this variable will show the actual URL a\n"
, stdout);
fputs(
-" tion to follow redirects (or when --max-redir is\n"
-" met), this variable will show the actual URL a\n"
" redirect would have gone to. (Added in 7.18.2)\n"
"\n"
-" remote_ip The remote IP address of the most recently done\n"
+" remote_ip The remote IP address of the most recently done\n"
" connection - can be either IPv4 or IPv6 (Added in\n"
" 7.29.0)\n"
"\n"
-, stdout);
- fputs(
-" remote_port The remote port number of the most recently done\n"
+" remote_port The remote port number of the most recently done\n"
" connection (Added in 7.29.0)\n"
"\n"
-" scheme The URL scheme (sometimes called protocol) that\n"
+" scheme The URL scheme (sometimes called protocol) that\n"
+, stdout);
+ fputs(
" was effectively used (Added in 7.52.0)\n"
"\n"
" size_download The total amount of bytes that were downloaded.\n"
@@ -3898,102 +3959,102 @@ void hugehelp(void)
" size_header The total amount of bytes of the downloaded head-\n"
" ers.\n"
"\n"
-, stdout);
- fputs(
-" size_request The total amount of bytes that were sent in the\n"
+" size_request The total amount of bytes that were sent in the\n"
" HTTP request.\n"
"\n"
" size_upload The total amount of bytes that were uploaded.\n"
"\n"
+, stdout);
+ fputs(
" speed_download The average download speed that curl measured for\n"
" the complete download. Bytes per second.\n"
"\n"
-" speed_upload The average upload speed that curl measured for\n"
+" speed_upload The average upload speed that curl measured for\n"
" the complete upload. Bytes per second.\n"
"\n"
-, stdout);
- fputs(
" ssl_verify_result\n"
-" The result of the SSL peer certificate verifica-\n"
+" The result of the SSL peer certificate verifica-\n"
" tion that was requested. 0 means the verification\n"
+, stdout);
+ fputs(
" was successful. (Added in 7.19.0)\n"
"\n"
-" stderr From this point on, the -w, --write-out output\n"
-" will be written to standard error. (Added in\n"
+" stderr From this point on, the -w, --write-out output\n"
+" will be written to standard error. (Added in\n"
" 7.63.0)\n"
"\n"
+" stdout From this point on, the -w, --write-out output\n"
+" will be written to standard output. This is the\n"
+" default, but can be used to switch back after\n"
, stdout);
fputs(
-" stdout From this point on, the -w, --write-out output\n"
-" will be written to standard output. This is the\n"
-" default, but can be used to switch back after\n"
" switching to stderr. (Added in 7.63.0)\n"
"\n"
" time_appconnect\n"
-" The time, in seconds, it took from the start un-\n"
-" til the SSL/SSH/etc connect/handshake to the re-\n"
-, stdout);
- fputs(
+" The time, in seconds, it took from the start un-\n"
+" til the SSL/SSH/etc connect/handshake to the re-\n"
" mote host was completed. (Added in 7.19.0)\n"
"\n"
-" time_connect The time, in seconds, it took from the start un-\n"
+" time_connect The time, in seconds, it took from the start un-\n"
" til the TCP connect to the remote host (or proxy)\n"
+, stdout);
+ fputs(
" was completed.\n"
"\n"
" time_namelookup\n"
-" The time, in seconds, it took from the start un-\n"
+" The time, in seconds, it took from the start un-\n"
" til the name resolving was completed.\n"
"\n"
" time_pretransfer\n"
+" The time, in seconds, it took from the start un-\n"
+" til the file transfer was just about to begin.\n"
+" This includes all pre-transfer commands and nego-\n"
, stdout);
fputs(
-" The time, in seconds, it took from the start un-\n"
-" til the file transfer was just about to begin.\n"
-" This includes all pre-transfer commands and nego-\n"
" tiations that are specific to the particular pro-\n"
" tocol(s) involved.\n"
"\n"
" time_redirect The time, in seconds, it took for all redirection\n"
+" steps including name lookup, connect, pretransfer\n"
+" and transfer before the final transaction was\n"
+" started. time_redirect shows the complete execu-\n"
, stdout);
fputs(
-" steps including name lookup, connect, pretransfer\n"
-" and transfer before the final transaction was\n"
-" started. time_redirect shows the complete execu-\n"
-" tion time for multiple redirections. (Added in\n"
+" tion time for multiple redirections. (Added in\n"
" 7.12.3)\n"
"\n"
" time_starttransfer\n"
-" The time, in seconds, it took from the start un-\n"
+" The time, in seconds, it took from the start un-\n"
+" til the first byte was just about to be trans-\n"
+" ferred. This includes time_pretransfer and also\n"
+" the time the server needed to calculate the re-\n"
, stdout);
fputs(
-" til the first byte was just about to be trans-\n"
-" ferred. This includes time_pretransfer and also\n"
-" the time the server needed to calculate the re-\n"
" sult.\n"
"\n"
-" time_total The total time, in seconds, that the full opera-\n"
+" time_total The total time, in seconds, that the full opera-\n"
" tion lasted.\n"
"\n"
" url_effective The URL that was fetched last. This is most mean-\n"
-, stdout);
- fputs(
-" ingful if you've told curl to follow location:\n"
+" ingful if you've told curl to follow location:\n"
" headers.\n"
"\n"
" If this option is used several times, the last one will be used.\n"
"\n"
" --xattr\n"
-" When saving output to a file, this option tells curl to store\n"
-" certain file metadata in extended file attributes. Currently,\n"
-" the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
, stdout);
fputs(
-" the content type is stored in the mime_type attribute. If the\n"
-" file system does not support extended attributes, a warning is\n"
+" When saving output to a file, this option tells curl to store\n"
+" certain file metadata in extended file attributes. Currently,\n"
+" the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
+" the content type is stored in the mime_type attribute. If the\n"
+" file system does not support extended attributes, a warning is\n"
" issued.\n"
"\n"
"FILES\n"
" ~/.curlrc\n"
+, stdout);
+ fputs(
" Default config file, see -K, --config for details.\n"
"\n"
"ENVIRONMENT\n"
@@ -4001,70 +4062,68 @@ void hugehelp(void)
" The lower case version has precedence. http_proxy is an exception as it\n"
" is only available in lower case.\n"
"\n"
-, stdout);
- fputs(
-" Using an environment variable to set the proxy has the same effect as\n"
+" Using an environment variable to set the proxy has the same effect as\n"
" using the -x, --proxy option.\n"
"\n"
" http_proxy [protocol://]<host>[:port]\n"
" Sets the proxy server to use for HTTP.\n"
+, stdout);
+ fputs(
" HTTPS_PROXY [protocol://]<host>[:port]\n"
" Sets the proxy server to use for HTTPS.\n"
"\n"
" [url-protocol]_PROXY [protocol://]<host>[:port]\n"
-" Sets the proxy server to use for [url-protocol], where the pro-\n"
-, stdout);
- fputs(
-" tocol is a protocol that curl supports and as specified in a\n"
+" Sets the proxy server to use for [url-protocol], where the pro-\n"
+" tocol is a protocol that curl supports and as specified in a\n"
" URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
"\n"
" ALL_PROXY [protocol://]<host>[:port]\n"
-" Sets the proxy server to use if no protocol-specific proxy is\n"
+" Sets the proxy server to use if no protocol-specific proxy is\n"
+, stdout);
+ fputs(
" set.\n"
"\n"
" NO_PROXY <comma-separated list of hosts/domains>\n"
-" list of host names that shouldn't go through any proxy. If set\n"
+" list of host names that shouldn't go through any proxy. If set\n"
" to an asterisk '*' only, it matches all hosts. Each name in this\n"
-, stdout);
- fputs(
" list is matched as either a domain name which contains the host-\n"
" name, or the hostname itself.\n"
"\n"
-" This environment variable disables use of the proxy even when\n"
-" specified with the -x, --proxy option. That is NO_PROXY=di-\n"
-" rect.example.com curl -x http://proxy.example.com http://di-\n"
-" rect.example.com accesses the target URL directly, and\n"
+" This environment variable disables use of the proxy even when\n"
, stdout);
fputs(
-" NO_PROXY=direct.example.com curl -x http://proxy.example.com\n"
+" specified with the -x, --proxy option. That is NO_PROXY=di-\n"
+" rect.example.com curl -x http://proxy.example.com http://di-\n"
+" rect.example.com accesses the target URL directly, and\n"
+" NO_PROXY=direct.example.com curl -x http://proxy.example.com\n"
" http://somewhere.example.com accesses the target URL through the\n"
" proxy.\n"
"\n"
-" The list of host names can also be include numerical IP ad-\n"
-" dresses, and IPv6 versions should then be given without enclos-\n"
+" The list of host names can also be include numerical IP ad-\n"
+, stdout);
+ fputs(
+" dresses, and IPv6 versions should then be given without enclos-\n"
" ing brackets.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
-" Since curl version 7.21.7, the proxy string may be specified with a\n"
-, stdout);
- fputs(
+" Since curl version 7.21.7, the proxy string may be specified with a\n"
" protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
-" If no protocol is specified in the proxy string or if the string\n"
-" doesn't match a supported one, the proxy will be treated as an HTTP\n"
+" If no protocol is specified in the proxy string or if the string\n"
+" doesn't match a supported one, the proxy will be treated as an HTTP\n"
" proxy.\n"
"\n"
+, stdout);
+ fputs(
" The supported proxy protocol prefixes are as follows:\n"
"\n"
" http://\n"
-" Makes it use it as an HTTP proxy. The default if no scheme pre-\n"
+" Makes it use it as an HTTP proxy. The default if no scheme pre-\n"
" fix is used.\n"
"\n"
" https://\n"
" Makes it treated as an HTTPS proxy.\n"
"\n"
-, stdout);
- fputs(
" socks4://\n"
" Makes it the equivalent of --socks4\n"
"\n"
@@ -4075,15 +4134,15 @@ void hugehelp(void)
" Makes it the equivalent of --socks5\n"
"\n"
" socks5h://\n"
+, stdout);
+ fputs(
" Makes it the equivalent of --socks5-hostname\n"
"\n"
"EXIT CODES\n"
-" There are a bunch of different error codes and their corresponding er-\n"
+" There are a bunch of different error codes and their corresponding er-\n"
" ror messages that may appear during bad conditions. At the time of this\n"
" writing, the exit codes are:\n"
"\n"
-, stdout);
- fputs(
" 1 Unsupported protocol. This build of curl has no support for this\n"
" protocol.\n"
"\n"
@@ -4091,77 +4150,77 @@ void hugehelp(void)
"\n"
" 3 URL malformed. The syntax was not correct.\n"
"\n"
-" 4 A feature or option that was needed to perform the desired re-\n"
-" quest was not enabled or was explicitly disabled at build-time.\n"
+, stdout);
+ fputs(
+" 4 A feature or option that was needed to perform the desired re-\n"
+" quest was not enabled or was explicitly disabled at build-time.\n"
" To make curl able to do this, you probably need another build of\n"
" libcurl!\n"
"\n"
-, stdout);
- fputs(
-" 5 Couldn't resolve proxy. The given proxy host could not be re-\n"
+" 5 Couldn't resolve proxy. The given proxy host could not be re-\n"
" solved.\n"
"\n"
" 6 Couldn't resolve host. The given remote host was not resolved.\n"
"\n"
" 7 Failed to connect to host.\n"
"\n"
-" 8 Weird server reply. The server sent data curl couldn't parse.\n"
-"\n"
-" 9 FTP access denied. The server denied login or denied access to\n"
-" the particular resource or directory you wanted to reach. Most\n"
, stdout);
fputs(
-" often you tried to change to a directory that doesn't exist on\n"
+" 8 Weird server reply. The server sent data curl couldn't parse.\n"
+"\n"
+" 9 FTP access denied. The server denied login or denied access to\n"
+" the particular resource or directory you wanted to reach. Most\n"
+" often you tried to change to a directory that doesn't exist on\n"
" the server.\n"
"\n"
-" 10 FTP accept failed. While waiting for the server to connect back\n"
-" when an active FTP session is used, an error code was sent over\n"
+" 10 FTP accept failed. While waiting for the server to connect back\n"
+" when an active FTP session is used, an error code was sent over\n"
+, stdout);
+ fputs(
" the control connection or similar.\n"
"\n"
-" 11 FTP weird PASS reply. Curl couldn't parse the reply sent to the\n"
+" 11 FTP weird PASS reply. Curl couldn't parse the reply sent to the\n"
" PASS request.\n"
"\n"
-, stdout);
- fputs(
-" 12 During an active FTP session while waiting for the server to\n"
+" 12 During an active FTP session while waiting for the server to\n"
" connect back to curl, the timeout expired.\n"
"\n"
-" 13 FTP weird PASV reply, Curl couldn't parse the reply sent to the\n"
+" 13 FTP weird PASV reply, Curl couldn't parse the reply sent to the\n"
" PASV request.\n"
"\n"
-" 14 FTP weird 227 format. Curl couldn't parse the 227-line the\n"
+" 14 FTP weird 227 format. Curl couldn't parse the 227-line the\n"
+, stdout);
+ fputs(
" server sent.\n"
"\n"
-" 15 FTP can't get host. Couldn't resolve the host IP we got in the\n"
+" 15 FTP can't get host. Couldn't resolve the host IP we got in the\n"
" 227-line.\n"
"\n"
-, stdout);
- fputs(
" 16 HTTP/2 error. A problem was detected in the HTTP2 framing layer.\n"
" This is somewhat generic and can be one out of several problems,\n"
" see the error message for details.\n"
"\n"
-" 17 FTP couldn't set binary. Couldn't change transfer method to bi-\n"
+" 17 FTP couldn't set binary. Couldn't change transfer method to bi-\n"
" nary.\n"
"\n"
+, stdout);
+ fputs(
" 18 Partial file. Only a part of the file was transferred.\n"
"\n"
-" 19 FTP couldn't download/access the given file, the RETR (or simi-\n"
+" 19 FTP couldn't download/access the given file, the RETR (or simi-\n"
" lar) command failed.\n"
"\n"
-, stdout);
- fputs(
" 21 FTP quote error. A quote command returned error from the server.\n"
-" 22 HTTP page not retrieved. The requested url was not found or re-\n"
-" turned another error with the HTTP error code being 400 or\n"
+" 22 HTTP page not retrieved. The requested url was not found or re-\n"
+" turned another error with the HTTP error code being 400 or\n"
" above. This return code only appears if -f, --fail is used.\n"
"\n"
-" 23 Write error. Curl couldn't write data to a local filesystem or\n"
-" similar.\n"
-"\n"
-" 25 FTP couldn't STOR file. The server denied the STOR operation,\n"
, stdout);
fputs(
+" 23 Write error. Curl couldn't write data to a local filesystem or\n"
+" similar.\n"
+"\n"
+" 25 FTP couldn't STOR file. The server denied the STOR operation,\n"
" used for FTP uploading.\n"
"\n"
" 26 Read error. Various reading problems.\n"
@@ -4171,26 +4230,26 @@ void hugehelp(void)
" 28 Operation timeout. The specified time-out period was reached ac-\n"
" cording to the conditions.\n"
"\n"
-" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
-" support the PORT command, try doing a transfer using PASV in-\n"
-" stead!\n"
-"\n"
, stdout);
fputs(
-" 31 FTP couldn't use REST. The REST command failed. This command is\n"
+" 30 FTP PORT failed. The PORT command failed. Not all FTP servers\n"
+" support the PORT command, try doing a transfer using PASV in-\n"
+" stead!\n"
+"\n"
+" 31 FTP couldn't use REST. The REST command failed. This command is\n"
" used for resumed FTP transfers.\n"
"\n"
" 33 HTTP range error. The range \"command\" didn't work.\n"
"\n"
" 34 HTTP post error. Internal post-request generation error.\n"
"\n"
+, stdout);
+ fputs(
" 35 SSL connect error. The SSL handshaking failed.\n"
"\n"
-" 36 Bad download resume. Couldn't continue an earlier aborted down-\n"
+" 36 Bad download resume. Couldn't continue an earlier aborted down-\n"
" load.\n"
"\n"
-, stdout);
- fputs(
" 37 FILE couldn't read file. Failed to open the file. Permissions?\n"
"\n"
" 38 LDAP cannot bind. LDAP bind operation failed.\n"
@@ -4200,29 +4259,29 @@ void hugehelp(void)
" 41 Function not found. A required LDAP function was not found.\n"
"\n"
" 42 Aborted by callback. An application told curl to abort the oper-\n"
+, stdout);
+ fputs(
" ation.\n"
"\n"
" 43 Internal error. A function was called with a bad parameter.\n"
"\n"
-, stdout);
- fputs(
-" 45 Interface error. A specified outgoing interface could not be\n"
+" 45 Interface error. A specified outgoing interface could not be\n"
" used.\n"
"\n"
" 47 Too many redirects. When following redirects, curl hit the maxi-\n"
" mum amount.\n"
"\n"
-" 48 Unknown option specified to libcurl. This indicates that you\n"
-" passed a weird option to curl that was passed on to libcurl and\n"
+" 48 Unknown option specified to libcurl. This indicates that you\n"
+" passed a weird option to curl that was passed on to libcurl and\n"
+, stdout);
+ fputs(
" rejected. Read up in the manual!\n"
"\n"
" 49 Malformed telnet option.\n"
"\n"
-, stdout);
- fputs(
" 51 The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
-" 52 The server didn't reply anything, which here is considered an\n"
+" 52 The server didn't reply anything, which here is considered an\n"
" error.\n"
"\n"
" 53 SSL crypto engine not found.\n"
@@ -4233,13 +4292,13 @@ void hugehelp(void)
"\n"
" 56 Failure in receiving network data.\n"
"\n"
+, stdout);
+ fputs(
" 58 Problem with the local certificate.\n"
"\n"
" 59 Couldn't use specified SSL cipher.\n"
"\n"
-, stdout);
- fputs(
-" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
+" 60 Peer certificate cannot be authenticated with known CA certifi-\n"
" cates.\n"
"\n"
" 61 Unrecognized transfer encoding.\n"
@@ -4254,11 +4313,11 @@ void hugehelp(void)
"\n"
" 66 Failed to initialise SSL Engine.\n"
"\n"
-" 67 The user name, password, or similar was not accepted and curl\n"
-" failed to log in.\n"
-"\n"
, stdout);
fputs(
+" 67 The user name, password, or similar was not accepted and curl\n"
+" failed to log in.\n"
+"\n"
" 68 File not found on TFTP server.\n"
"\n"
" 69 Permission problem on TFTP server.\n"
@@ -4275,31 +4334,31 @@ void hugehelp(void)
"\n"
" 75 Character conversion failed.\n"
"\n"
+, stdout);
+ fputs(
" 76 Character conversion functions required.\n"
"\n"
" 77 Problem with reading the SSL CA cert (path? access rights?).\n"
"\n"
-, stdout);
- fputs(
" 78 The resource referenced in the URL does not exist.\n"
"\n"
" 79 An unspecified error occurred during the SSH session.\n"
"\n"
" 80 Failed to shut down the SSL connection.\n"
"\n"
-" 82 Could not load CRL file, missing or wrong format (added in\n"
+" 82 Could not load CRL file, missing or wrong format (added in\n"
" 7.19.0).\n"
"\n"
" 83 Issuer check failed (added in 7.19.0).\n"
"\n"
+, stdout);
+ fputs(
" 84 The FTP PRET command failed\n"
"\n"
" 85 RTSP: mismatch of CSeq numbers\n"
"\n"
" 86 RTSP: mismatch of Session Identifiers\n"
"\n"
-, stdout);
- fputs(
" 87 unable to parse FTP file list\n"
"\n"
" 88 FTP chunk callback reported error\n"
@@ -4312,13 +4371,13 @@ void hugehelp(void)
"\n"
" 92 Stream error in HTTP/2 framing layer.\n"
"\n"
+, stdout);
+ fputs(
" XX More error codes will appear here in future releases. The exist-\n"
" ing ones are meant to never change.\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
-, stdout);
- fputs(
-" Daniel Stenberg is the main author, but the whole list of contributors\n"
+" Daniel Stenberg is the main author, but the whole list of contributors\n"
" is found in the separate THANKS file.\n"
"\n"
"WWW\n"
@@ -4344,3926 +4403,3976 @@ void hugehelp(void) {}
#include "memdebug.h" /* keep this as LAST include */
static const unsigned char hugehelpgz[] = {
/* This mumbo-jumbo is the huge help text compressed with gzip.
- Thanks to this operation, the size of this data shrank from 167622
- to 47001 bytes. You can disable the use of compressed help
+ Thanks to this operation, the size of this data shrank from 169779
+ to 47597 bytes. You can disable the use of compressed help
texts by NOT passing -c to the mkhelp.pl tool. */
0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
- 0x7b, 0x77, 0xdc, 0xc6, 0xb1, 0x2f, 0xfa, 0xbf, 0x3f, 0x05, 0x36, 0xb3,
- 0x72, 0x48, 0xee, 0xcc, 0x0c, 0x1f, 0x7a, 0x59, 0x8a, 0x9c, 0x6d, 0x45,
- 0xa2, 0x6c, 0x6e, 0x53, 0x22, 0x0f, 0x87, 0xb2, 0x9d, 0x1b, 0x7b, 0x69,
- 0x61, 0x66, 0x30, 0x24, 0xa2, 0x19, 0x60, 0x02, 0x60, 0xf8, 0xc8, 0x3e,
- 0xb9, 0x9f, 0xfd, 0x76, 0xfd, 0xaa, 0xaa, 0xbb, 0x81, 0x6e, 0x0c, 0x69,
- 0xc7, 0xf6, 0x79, 0xdd, 0xec, 0xb5, 0x2d, 0x89, 0x04, 0x1a, 0xfd, 0xa8,
- 0xae, 0x77, 0xfd, 0x2a, 0x49, 0xee, 0xfb, 0xdf, 0x47, 0xfc, 0xff, 0x47,
- 0xf3, 0x3f, 0xf3, 0xe7, 0x67, 0x49, 0x72, 0x56, 0x95, 0x7f, 0xcb, 0xa6,
- 0x4d, 0xfc, 0xd9, 0x8f, 0x1f, 0xff, 0x47, 0xc2, 0xff, 0x67, 0xde, 0xf9,
- 0xc1, 0xfc, 0xf9, 0xd9, 0xc6, 0xb1, 0xf7, 0x12, 0xf7, 0xc2, 0xff, 0xf8,
- 0xb8, 0x9b, 0xdc, 0xf7, 0xc2, 0xff, 0x48, 0x76, 0xf0, 0xc2, 0x47, 0xf9,
- 0xc2, 0x4b, 0xfa, 0xfb, 0xc7, 0x8f, 0x9b, 0x3f, 0xf2, 0x03, 0xcd, 0x8a,
- 0xfe, 0xb3, 0x47, 0xef, 0xfd, 0xf0, 0x91, 0xfe, 0x6a, 0x7e, 0xf2, 0xd9,
- 0x67, 0xef, 0x5f, 0xbd, 0x3b, 0xd2, 0x57, 0xa7, 0xeb, 0x6a, 0x91, 0x0c,
- 0x93, 0xa6, 0x4a, 0x8b, 0x7a, 0x9e, 0x55, 0x49, 0x9a, 0x7c, 0x38, 0x3f,
- 0xf9, 0xec, 0xb3, 0xf1, 0x5f, 0xde, 0x9f, 0x9e, 0x8d, 0x8f, 0xc7, 0xad,
- 0xc7, 0xfe, 0x5a, 0xae, 0x9a, 0xbc, 0x2c, 0x6a, 0x33, 0x7d, 0xf3, 0x50,
- 0xfd, 0xe3, 0x67, 0x9f, 0xbd, 0x39, 0x1a, 0xbf, 0x3e, 0x3f, 0x3e, 0xbb,
- 0x38, 0x3e, 0x7d, 0xdf, 0x7a, 0x32, 0xc9, 0xeb, 0xc4, 0x0c, 0xd5, 0x94,
- 0xe5, 0xc2, 0xfc, 0xc7, 0x8d, 0x3e, 0x4b, 0x9b, 0x34, 0x99, 0x57, 0xe5,
- 0x32, 0x29, 0x2b, 0xfa, 0x45, 0x9a, 0xd4, 0x59, 0x75, 0x9d, 0x55, 0x83,
- 0x64, 0x5d, 0xe7, 0xc5, 0x65, 0x52, 0x16, 0x59, 0x52, 0xce, 0x93, 0xe6,
- 0x2a, 0xd3, 0xe1, 0xea, 0xf5, 0x6a, 0x55, 0x56, 0x4d, 0x36, 0x4b, 0x56,
- 0x55, 0xd9, 0x94, 0xd3, 0x72, 0x51, 0x27, 0x3b, 0x6f, 0x8e, 0x5f, 0x5f,
- 0x0c, 0x92, 0xb7, 0xc7, 0x27, 0x47, 0xe6, 0xbf, 0x17, 0x67, 0xf8, 0xcf,
- 0x78, 0x90, 0x7c, 0x75, 0x7a, 0xf6, 0xf5, 0xd1, 0xf9, 0x20, 0xf9, 0xfa,
- 0x82, 0x7e, 0x46, 0xff, 0x35, 0x3f, 0x4c, 0x8e, 0xdf, 0xbd, 0x3a, 0x1b,
- 0xe8, 0x70, 0xf4, 0x0f, 0xfa, 0xe1, 0xc9, 0x1b, 0xf3, 0x43, 0xfe, 0x83,
- 0xfe, 0x79, 0x76, 0x7a, 0xf6, 0x48, 0xfe, 0xa0, 0x7f, 0x9e, 0x5f, 0xbc,
- 0x33, 0xbf, 0x3d, 0xbf, 0x18, 0x9b, 0xff, 0x8e, 0x5f, 0xd3, 0x7f, 0xf0,
- 0x95, 0xf1, 0xbb, 0x3f, 0xe3, 0x3f, 0x63, 0x3b, 0xdc, 0xf8, 0x1d, 0xff,
- 0x1c, 0x5f, 0xba, 0x38, 0x3a, 0x79, 0x7f, 0x74, 0x91, 0xa4, 0xc5, 0x2c,
- 0xb9, 0x30, 0xcf, 0xef, 0x8e, 0x92, 0x8b, 0xab, 0x2c, 0x99, 0x96, 0xcb,
- 0x25, 0xfd, 0xc8, 0xec, 0xc8, 0x2c, 0xab, 0xf3, 0xcb, 0xc2, 0x2c, 0xc5,
- 0xac, 0xfc, 0xa6, 0xac, 0x3e, 0x25, 0xc9, 0x4d, 0xde, 0x5c, 0x95, 0xeb,
- 0x46, 0x87, 0x5b, 0x9b, 0xdd, 0x48, 0xf2, 0xa2, 0xc9, 0xaa, 0x74, 0x4a,
- 0x3b, 0x3d, 0xfa, 0xac, 0xb5, 0xab, 0xe5, 0xdc, 0xec, 0x61, 0x6d, 0x36,
- 0x6d, 0xb2, 0xae, 0x17, 0x65, 0x3a, 0xa3, 0xad, 0x32, 0xaf, 0xcc, 0xd7,
- 0x66, 0x93, 0xab, 0x7c, 0xfa, 0xa9, 0x4e, 0x16, 0xf9, 0xa7, 0x8c, 0x36,
- 0xea, 0xf6, 0x4e, 0x37, 0x6e, 0xc0, 0x83, 0xa6, 0x6b, 0xb3, 0xa7, 0xc5,
- 0x50, 0x87, 0x6b, 0xf2, 0x69, 0x4a, 0x1f, 0xc0, 0xce, 0x25, 0xeb, 0x15,
- 0x8d, 0xc6, 0x3b, 0x96, 0xac, 0xca, 0xda, 0xbc, 0x34, 0x1e, 0x9f, 0x98,
- 0x99, 0x17, 0x45, 0x86, 0x79, 0xd4, 0x03, 0xf3, 0x8f, 0xf2, 0x53, 0x9e,
- 0x99, 0xbf, 0xcc, 0xf3, 0x45, 0x96, 0xf0, 0x89, 0xda, 0xe1, 0xe8, 0x68,
- 0x93, 0x2a, 0xab, 0xd7, 0xcb, 0xcc, 0xec, 0xde, 0xbb, 0xac, 0x49, 0x17,
- 0x79, 0xf1, 0xc9, 0xfc, 0x95, 0x16, 0xbe, 0x2c, 0xab, 0x6c, 0x94, 0xbc,
- 0xaa, 0x93, 0xbb, 0x72, 0x6d, 0x16, 0xbc, 0x58, 0x98, 0x33, 0xcf, 0x92,
- 0x49, 0xb6, 0x28, 0x6f, 0x06, 0x74, 0xd2, 0x49, 0xb1, 0x5e, 0x4e, 0xcc,
- 0x00, 0xe5, 0xdc, 0x0d, 0x97, 0x36, 0x6b, 0x33, 0x1c, 0x3f, 0xbd, 0x4c,
- 0xcd, 0x9a, 0xcc, 0xbb, 0x55, 0x72, 0x95, 0x99, 0x35, 0xd7, 0xab, 0xbc,
- 0xf8, 0xb7, 0xf6, 0xbe, 0x98, 0xad, 0x5d, 0x95, 0x37, 0x59, 0x65, 0x76,
- 0x76, 0x72, 0x97, 0x98, 0x4d, 0x98, 0x30, 0x11, 0xce, 0x0d, 0x91, 0x25,
- 0xa9, 0x19, 0xc2, 0x12, 0xe0, 0xb0, 0xca, 0x16, 0x29, 0x11, 0x93, 0xfd,
- 0xc6, 0xc8, 0x1c, 0x62, 0x66, 0xa9, 0x4d, 0x5e, 0xdd, 0x79, 0xb4, 0x8b,
- 0x97, 0x67, 0x66, 0x25, 0xf9, 0xa2, 0x36, 0xc7, 0x40, 0x97, 0x42, 0x9e,
- 0xa1, 0x43, 0x25, 0xfa, 0x37, 0xb4, 0x79, 0x57, 0x34, 0xe9, 0x2d, 0x3e,
- 0x2f, 0xb4, 0x39, 0x9c, 0x65, 0xab, 0xac, 0x98, 0x65, 0x45, 0x33, 0x4a,
- 0xfe, 0x52, 0xae, 0xb7, 0xcd, 0xb7, 0xe7, 0xb9, 0xd9, 0x83, 0x54, 0x86,
- 0x32, 0x5f, 0x36, 0x44, 0x30, 0xad, 0xf2, 0x95, 0x77, 0x14, 0x65, 0x61,
- 0xce, 0x3c, 0x39, 0x7f, 0xfb, 0x3a, 0x79, 0xf4, 0xfc, 0xf3, 0xa7, 0xee,
- 0xcc, 0xcd, 0x00, 0xc9, 0x34, 0x2d, 0xcc, 0x8a, 0xb3, 0x69, 0x3e, 0xbf,
- 0x4b, 0x96, 0xeb, 0x45, 0x93, 0xaf, 0xcc, 0xee, 0xd3, 0xe5, 0xa3, 0x0b,
- 0xb4, 0x4a, 0xab, 0xa6, 0x26, 0x22, 0xc0, 0x0f, 0xb0, 0xf6, 0x9b, 0x2a,
- 0x6f, 0xe8, 0x22, 0xe1, 0x77, 0x66, 0x86, 0x59, 0x53, 0xeb, 0x70, 0x44,
- 0x6b, 0xe6, 0x3b, 0x13, 0x43, 0x5b, 0x66, 0x6b, 0xd3, 0xda, 0x7c, 0xf4,
- 0xc5, 0x67, 0x8e, 0x83, 0x5c, 0x35, 0xcd, 0xea, 0xc5, 0xde, 0x5e, 0x9d,
- 0x37, 0xd9, 0xe8, 0xbf, 0xcc, 0x3d, 0x1c, 0x34, 0x37, 0xe5, 0xa0, 0xb9,
- 0xaa, 0xb2, 0xec, 0x9f, 0x23, 0x43, 0xc3, 0xf6, 0x49, 0xf3, 0xdd, 0x3b,
- 0x99, 0xd8, 0x65, 0xd6, 0x98, 0x2f, 0xfc, 0x7d, 0x9d, 0x15, 0x34, 0xa2,
- 0x99, 0x47, 0xba, 0x58, 0x5d, 0xa5, 0xe6, 0x38, 0x33, 0x43, 0x8d, 0x74,
- 0xb3, 0x0d, 0xc1, 0xd0, 0xac, 0xf8, 0x6e, 0xff, 0xf5, 0xc7, 0xf0, 0xa3,
- 0x73, 0x7c, 0xd3, 0xfc, 0x77, 0x94, 0xdd, 0xa6, 0x4b, 0xb3, 0x36, 0xfa,
- 0xd4, 0x1e, 0x91, 0xd8, 0x5f, 0x0f, 0x86, 0x07, 0xfb, 0xfb, 0x3f, 0x8e,
- 0x9a, 0xdb, 0xe6, 0x61, 0xcf, 0xef, 0xef, 0xbb, 0x37, 0xe8, 0xd1, 0x1d,
- 0x5a, 0x6f, 0xb2, 0x30, 0x24, 0x43, 0x1f, 0xff, 0x47, 0x56, 0x95, 0xf5,
- 0xee, 0xc3, 0x46, 0x4a, 0x87, 0xff, 0x68, 0x7f, 0xf7, 0x7d, 0x56, 0x83,
- 0x66, 0xdc, 0x5a, 0x93, 0xb4, 0x32, 0x74, 0x5b, 0x36, 0x8e, 0x3d, 0x0d,
- 0xcc, 0xa5, 0x6c, 0xec, 0xce, 0x98, 0x3b, 0x67, 0x9e, 0x36, 0x8c, 0x2d,
- 0x5d, 0x10, 0x4f, 0xab, 0x93, 0x22, 0xbb, 0xb5, 0xb7, 0xdc, 0xdc, 0xfe,
- 0x2c, 0x9d, 0x5e, 0x25, 0xa5, 0x21, 0xfe, 0x2a, 0x72, 0x04, 0xfe, 0x84,
- 0xd2, 0x6a, 0x7a, 0x95, 0x5f, 0x9b, 0xdd, 0x78, 0xfe, 0xfc, 0xe9, 0xd0,
- 0xfc, 0xe7, 0xf9, 0x8f, 0x7b, 0xd7, 0xe5, 0xc2, 0x6c, 0xce, 0xe3, 0x1f,
- 0xf7, 0xe8, 0x88, 0xff, 0x2b, 0x1d, 0x4c, 0x06, 0xd3, 0x7f, 0x8e, 0xae,
- 0x9a, 0xe5, 0xa2, 0x97, 0x70, 0xd2, 0xc2, 0xfc, 0xff, 0xb2, 0x5c, 0x17,
- 0x8d, 0x25, 0x16, 0x43, 0x73, 0x8d, 0xc7, 0x9c, 0xcc, 0x75, 0x35, 0x77,
- 0x94, 0x48, 0x9b, 0x68, 0x88, 0x6e, 0x9d, 0xb9, 0xa0, 0xee, 0x3a, 0x36,
- 0xd3, 0x2b, 0x5a, 0xbf, 0xa1, 0x9e, 0x54, 0x36, 0xa1, 0xc9, 0x53, 0xba,
- 0x99, 0x86, 0x41, 0x10, 0xc3, 0xc2, 0x58, 0xfc, 0xb5, 0xdc, 0x3c, 0x58,
- 0x56, 0xb3, 0xac, 0x1a, 0x75, 0xa7, 0x61, 0xaf, 0xac, 0xf7, 0xcd, 0x44,
- 0x25, 0x0a, 0xfd, 0x00, 0x13, 0x5b, 0xe6, 0xb7, 0x66, 0x04, 0x30, 0xcc,
- 0x02, 0x13, 0xe7, 0xd1, 0x12, 0x9a, 0x31, 0x3e, 0xa3, 0xef, 0xbb, 0x2b,
- 0x6b, 0xa6, 0xde, 0x5a, 0x3a, 0x3e, 0xea, 0x16, 0x9f, 0x98, 0xc3, 0x5b,
- 0x99, 0xb7, 0xd6, 0xc4, 0x57, 0x71, 0xad, 0x69, 0x18, 0xc3, 0x10, 0x2e,
- 0xcd, 0xb9, 0x98, 0xb3, 0x20, 0x2a, 0xa6, 0xa3, 0xba, 0x4b, 0xde, 0x1b,
- 0x82, 0x61, 0x66, 0xe4, 0x11, 0xfb, 0x22, 0x6b, 0x9a, 0x7b, 0x8f, 0xc9,
- 0x51, 0xec, 0x8b, 0x83, 0x80, 0x68, 0xfb, 0x9e, 0x37, 0x74, 0xf6, 0xe2,
- 0xb0, 0xfd, 0xf0, 0x77, 0x86, 0x49, 0xbb, 0xeb, 0x62, 0xbe, 0xfe, 0x5f,
- 0xff, 0xf4, 0xa8, 0xee, 0x86, 0x7e, 0x9b, 0x17, 0xd7, 0xe5, 0x27, 0xb3,
- 0x45, 0x90, 0xa2, 0x69, 0x7b, 0x37, 0x89, 0x0f, 0x2d, 0x57, 0x8d, 0x15,
- 0x4f, 0x44, 0x8e, 0xe6, 0x47, 0x93, 0x74, 0xb2, 0xb8, 0x4b, 0xae, 0xd2,
- 0xeb, 0x8c, 0xd6, 0xbb, 0x32, 0x74, 0x4a, 0x3b, 0x60, 0xc4, 0xc6, 0x02,
- 0x7c, 0x4c, 0x18, 0xc3, 0xac, 0x5c, 0x4f, 0x0c, 0x73, 0xf9, 0xfb, 0xba,
- 0x6c, 0x78, 0x63, 0xd2, 0xeb, 0x32, 0x9f, 0xb5, 0x64, 0xf1, 0x55, 0x46,
- 0x0c, 0x8d, 0x3e, 0x0c, 0x21, 0x65, 0x18, 0x2a, 0xcd, 0x14, 0x17, 0x2d,
- 0x6f, 0x48, 0xdc, 0x19, 0x56, 0x98, 0x2e, 0xea, 0x32, 0x49, 0x2e, 0x4b,
- 0xba, 0x25, 0x60, 0xc0, 0x20, 0x73, 0x73, 0x28, 0x57, 0x29, 0x49, 0x35,
- 0x23, 0xc0, 0xec, 0x3d, 0xa8, 0x32, 0xf0, 0x62, 0x9c, 0x54, 0xba, 0x18,
- 0xb0, 0xf4, 0xa2, 0x77, 0x64, 0xab, 0x92, 0xed, 0xff, 0xb6, 0x3d, 0x48,
- 0xb6, 0xff, 0x63, 0x1b, 0xf4, 0xb0, 0xfd, 0xef, 0xdb, 0xee, 0x9c, 0x8d,
- 0x32, 0x76, 0x9d, 0xcf, 0x32, 0x26, 0x89, 0xe3, 0xb3, 0xeb, 0xa7, 0xc9,
- 0x3f, 0x48, 0x77, 0x30, 0xbc, 0x36, 0xbb, 0x55, 0x82, 0xd4, 0xb5, 0x99,
- 0xb7, 0x13, 0xc3, 0x74, 0xd3, 0x15, 0x29, 0x11, 0x59, 0x35, 0x35, 0xd4,
- 0x9b, 0x5e, 0x1a, 0x7a, 0x35, 0xb2, 0x58, 0x87, 0xa3, 0xf1, 0xe9, 0x15,
- 0x5e, 0x96, 0x61, 0x90, 0x49, 0x91, 0x2e, 0xcd, 0x8d, 0x38, 0xa1, 0x19,
- 0xe5, 0x45, 0x78, 0x98, 0x7f, 0x9d, 0x67, 0x9f, 0xef, 0xbf, 0x78, 0xf1,
- 0xe8, 0xf7, 0x87, 0x4f, 0xb2, 0xe6, 0x6a, 0xff, 0xc7, 0x3d, 0xfb, 0xc8,
- 0xf1, 0x1c, 0xdb, 0xae, 0xe4, 0xa7, 0x93, 0x30, 0x52, 0xde, 0x4a, 0x09,
- 0xf3, 0xbe, 0xf9, 0x7b, 0x36, 0xcf, 0x6f, 0x07, 0xaa, 0x2f, 0xf1, 0x9d,
- 0x4b, 0x0d, 0xa9, 0x99, 0xf3, 0x23, 0x16, 0xa1, 0xc3, 0x5d, 0xae, 0xb3,
- 0xda, 0xec, 0xe4, 0xcd, 0x55, 0xda, 0x24, 0x76, 0x00, 0x3e, 0xd9, 0x65,
- 0x7e, 0x79, 0xd5, 0x24, 0x37, 0x29, 0x09, 0x9b, 0xe3, 0x86, 0x87, 0x20,
- 0x29, 0x6f, 0x44, 0xcc, 0x3c, 0x35, 0xb2, 0x82, 0xce, 0x10, 0x22, 0x7d,
- 0xe2, 0x34, 0x8c, 0xc6, 0x90, 0x39, 0x1f, 0x88, 0x53, 0xa7, 0x26, 0x69,
- 0x4d, 0x97, 0xb6, 0x30, 0xcc, 0xa1, 0x31, 0x3a, 0xc2, 0x9a, 0xfe, 0x75,
- 0x65, 0xb4, 0x00, 0xec, 0x81, 0x4c, 0x14, 0x82, 0xf2, 0x2d, 0x1d, 0x27,
- 0x9d, 0x8d, 0x15, 0x5e, 0xe6, 0x90, 0x06, 0x72, 0xcc, 0xf6, 0x8d, 0xda,
- 0x5c, 0x38, 0xc3, 0x99, 0x2c, 0x65, 0x6c, 0x11, 0x93, 0xdd, 0xe2, 0x75,
- 0x62, 0x8e, 0x69, 0x4d, 0x8a, 0x02, 0xab, 0x03, 0x66, 0xf2, 0xde, 0x62,
- 0xcd, 0xa6, 0xa5, 0x9f, 0x48, 0x25, 0xe9, 0x28, 0x3e, 0x78, 0x6d, 0x56,
- 0x1a, 0x22, 0x33, 0xb3, 0x35, 0xcc, 0x98, 0x56, 0x46, 0x2c, 0x16, 0xbb,
- 0x02, 0x22, 0x37, 0x63, 0xd2, 0x0f, 0xf3, 0x86, 0x64, 0x0c, 0x74, 0x58,
- 0x33, 0x5f, 0xb3, 0x29, 0x50, 0x44, 0x0d, 0xa3, 0xf6, 0xd6, 0x0f, 0xf1,
- 0x68, 0x9e, 0x4d, 0xae, 0x8d, 0x96, 0x62, 0x14, 0xd2, 0xcc, 0xbe, 0x05,
- 0x79, 0x3e, 0x25, 0xdd, 0x68, 0x61, 0xee, 0xcb, 0xb4, 0xac, 0x2a, 0xd2,
- 0xf7, 0xe9, 0x04, 0x27, 0xcc, 0x44, 0x97, 0x99, 0x51, 0x23, 0xfc, 0xed,
- 0xcc, 0x49, 0xa0, 0x19, 0xfe, 0x62, 0xf4, 0x12, 0x70, 0x10, 0xa3, 0x3f,
- 0x80, 0xe7, 0x63, 0xe1, 0x98, 0x1d, 0x8d, 0x3d, 0x9d, 0x66, 0xab, 0xa6,
- 0x8e, 0xad, 0x49, 0x0f, 0xdc, 0x4c, 0xa7, 0xca, 0x68, 0xe7, 0x7d, 0xa5,
- 0x0b, 0xfb, 0x6a, 0x85, 0x3e, 0xf4, 0x2e, 0xd5, 0x63, 0x8c, 0x1e, 0x56,
- 0xdb, 0x5d, 0x6b, 0x40, 0x1b, 0x86, 0x8d, 0x61, 0xcf, 0x97, 0x34, 0x51,
- 0x7a, 0xb8, 0xe6, 0x9b, 0x0a, 0xd6, 0x4c, 0x07, 0xc9, 0x9a, 0x36, 0x7f,
- 0x97, 0x44, 0x97, 0xd9, 0x4f, 0x3b, 0xb8, 0xf9, 0xaa, 0x3d, 0x53, 0xfa,
- 0x3c, 0xa9, 0xf8, 0x46, 0x92, 0xcf, 0xea, 0x2b, 0xa3, 0x7c, 0xd5, 0x72,
- 0xb3, 0xf3, 0xa5, 0xa1, 0x99, 0x6b, 0x3a, 0xdf, 0x55, 0x96, 0xcd, 0x46,
- 0xc9, 0xe9, 0x9c, 0xb8, 0x6a, 0x65, 0x26, 0xdd, 0xe0, 0xd7, 0x24, 0x55,
- 0xcc, 0xbe, 0xcd, 0xa0, 0xc4, 0xdb, 0xab, 0xc5, 0x53, 0xf1, 0xa4, 0x03,
- 0x38, 0x79, 0x6a, 0x7e, 0x62, 0x66, 0xbb, 0x68, 0x8b, 0x20, 0xdc, 0x43,
- 0xc3, 0xbd, 0x69, 0x7a, 0x93, 0x2c, 0x01, 0x25, 0x4e, 0xb2, 0xe6, 0x26,
- 0xcb, 0xec, 0x70, 0x75, 0x66, 0xc4, 0x1e, 0x1d, 0x1a, 0x6b, 0x7e, 0x60,
- 0x86, 0xb4, 0xb5, 0x67, 0xe7, 0xa7, 0x5f, 0x9d, 0x1f, 0x8d, 0xc7, 0xc9,
- 0xbb, 0xa3, 0x8b, 0xa3, 0xf3, 0xd6, 0x4e, 0x17, 0x65, 0xb5, 0xc4, 0x89,
- 0xce, 0xf2, 0x7a, 0xb5, 0x48, 0xef, 0xe8, 0xa8, 0xcd, 0x4a, 0x2e, 0x2b,
- 0xba, 0x59, 0xcb, 0x8c, 0xa4, 0xc2, 0x6c, 0x0d, 0x4e, 0x66, 0xc4, 0x91,
- 0x39, 0x3e, 0xd1, 0x78, 0x89, 0x99, 0x40, 0x4d, 0x2e, 0x2e, 0xdd, 0x4e,
- 0x1b, 0x8e, 0x23, 0x92, 0x94, 0x44, 0xa9, 0x3d, 0x0f, 0x52, 0x3d, 0x61,
- 0xdc, 0x0c, 0xdc, 0xcf, 0x78, 0x9b, 0x58, 0xb4, 0x19, 0x9a, 0xcd, 0x97,
- 0x60, 0x76, 0xe6, 0x4f, 0xa7, 0x6d, 0x66, 0x73, 0xa3, 0x6a, 0x1b, 0xe9,
- 0xca, 0x96, 0x42, 0x77, 0x4e, 0x3a, 0x5b, 0xab, 0x1f, 0x1b, 0x32, 0x24,
- 0xd6, 0x4c, 0x03, 0xf2, 0x54, 0xf8, 0x0b, 0x96, 0x89, 0x19, 0x9d, 0x84,
- 0x78, 0x9f, 0x3c, 0xb6, 0xa2, 0x29, 0x64, 0xe6, 0x64, 0x67, 0x3c, 0x7c,
- 0xbd, 0x9e, 0xe3, 0x22, 0x27, 0x3b, 0x46, 0x33, 0x7f, 0x67, 0xac, 0x25,
- 0x63, 0xb1, 0x0c, 0x92, 0xb3, 0x5d, 0xbc, 0x77, 0xb0, 0x7f, 0xf8, 0x98,
- 0x19, 0xc1, 0x48, 0x87, 0x7b, 0xeb, 0x31, 0xe2, 0x83, 0x4f, 0x74, 0xbc,
- 0xfc, 0x10, 0x0d, 0x3e, 0x4a, 0x0e, 0xde, 0xf1, 0x4f, 0x1e, 0x7f, 0xfe,
- 0xe4, 0xd9, 0x53, 0xf9, 0x61, 0x9b, 0xc0, 0xed, 0xfc, 0x41, 0x1d, 0xb0,
- 0xfc, 0xc8, 0x14, 0x34, 0x33, 0x31, 0xab, 0x5b, 0xe6, 0x85, 0xb9, 0x26,
- 0xe6, 0x5a, 0x09, 0xaf, 0x22, 0x7a, 0x36, 0x93, 0x9f, 0x33, 0x67, 0x93,
- 0x73, 0x6d, 0x9b, 0x94, 0xe6, 0x65, 0x43, 0xb2, 0x86, 0x97, 0xdb, 0x43,
- 0x62, 0x35, 0xa1, 0xa1, 0x89, 0xa4, 0x13, 0x62, 0xb0, 0x64, 0x57, 0x19,
- 0x05, 0x38, 0x8b, 0x7e, 0xcd, 0x4a, 0x45, 0xf3, 0x86, 0x99, 0x9b, 0x91,
- 0x89, 0x24, 0xe6, 0xc2, 0x7d, 0x37, 0xac, 0x00, 0x1c, 0xf2, 0x26, 0xaf,
- 0xc1, 0x1a, 0x6e, 0xca, 0xf5, 0xc2, 0x58, 0x31, 0xf4, 0xc0, 0x7a, 0x85,
- 0x17, 0xcc, 0xa7, 0x56, 0x8e, 0x07, 0x18, 0x8d, 0x85, 0x68, 0xa7, 0x3b,
- 0x8a, 0x99, 0x9a, 0xf9, 0xe7, 0xca, 0x90, 0x12, 0x4f, 0x67, 0xd4, 0x95,
- 0x10, 0xe0, 0x7d, 0x01, 0x25, 0xd2, 0x9d, 0x07, 0xd3, 0x3e, 0x3b, 0x1d,
- 0x5f, 0x90, 0x06, 0x70, 0xf6, 0xe1, 0xc2, 0x0c, 0x64, 0x54, 0x80, 0xba,
- 0x31, 0x44, 0x49, 0x2f, 0x16, 0x19, 0x4c, 0x48, 0x1d, 0xce, 0xd0, 0x5e,
- 0x0e, 0x46, 0x05, 0xb5, 0x46, 0x3f, 0xc9, 0x73, 0x64, 0x1b, 0x9b, 0xae,
- 0xa0, 0x5a, 0xd8, 0x2c, 0xc3, 0xed, 0x3b, 0xc9, 0xce, 0x9f, 0x76, 0x0d,
- 0xcd, 0x0e, 0x4b, 0xbb, 0x3b, 0xc3, 0xa1, 0xbc, 0x6a, 0xbe, 0x5d, 0xe7,
- 0xcb, 0x7c, 0x91, 0x56, 0xde, 0xd4, 0x99, 0xa3, 0xd2, 0xfd, 0xb4, 0x7c,
- 0x65, 0x6a, 0xa8, 0x06, 0xd3, 0x76, 0xa6, 0x24, 0xed, 0x21, 0xb8, 0x92,
- 0x3b, 0xaa, 0x19, 0x29, 0x04, 0xd0, 0x98, 0x57, 0xb9, 0xdd, 0x3a, 0x3a,
- 0x33, 0x62, 0x57, 0xad, 0x8d, 0xea, 0x9e, 0x5b, 0xb0, 0x71, 0x24, 0x91,
- 0xe0, 0xa9, 0xb0, 0x5b, 0x97, 0x6c, 0x4d, 0xd2, 0x6a, 0x2b, 0xb1, 0xbc,
- 0x98, 0xef, 0x26, 0xdd, 0x90, 0x2a, 0xbb, 0x5c, 0x9b, 0x15, 0x24, 0xbc,
- 0xbb, 0xb4, 0xd2, 0xdf, 0x79, 0x2b, 0xd5, 0x01, 0x86, 0x13, 0x7a, 0x24,
- 0xaf, 0xd9, 0xcc, 0x9c, 0x1b, 0xbb, 0x85, 0x2e, 0x8d, 0xea, 0xaf, 0xd0,
- 0x68, 0x84, 0x62, 0x22, 0x04, 0xe3, 0xe9, 0xb5, 0xe6, 0xaa, 0x34, 0x99,
- 0x61, 0x34, 0x60, 0xff, 0xf4, 0xe4, 0xd0, 0x1c, 0xd9, 0x70, 0x58, 0x9b,
- 0xfd, 0x27, 0xdd, 0x7b, 0x25, 0x36, 0xfd, 0x29, 0x1c, 0x26, 0xd6, 0xb7,
- 0x72, 0x2a, 0x3a, 0x30, 0xc4, 0x26, 0xbf, 0x0b, 0x16, 0x6a, 0x14, 0xd5,
- 0x1b, 0xf3, 0xe1, 0xd4, 0x1c, 0x99, 0xb9, 0x70, 0xef, 0x68, 0xa3, 0xd8,
- 0x37, 0x92, 0x58, 0xb5, 0x19, 0x94, 0x91, 0xd3, 0xbd, 0x4f, 0x9d, 0x2e,
- 0x33, 0x9b, 0xe5, 0xf4, 0x5b, 0x73, 0xbf, 0x8c, 0x84, 0x5b, 0x67, 0xb0,
- 0x3d, 0x64, 0x53, 0x97, 0x6e, 0x33, 0x61, 0xc6, 0xd6, 0x57, 0x25, 0x99,
- 0x89, 0x5b, 0xcc, 0x8b, 0x87, 0xf4, 0xad, 0x2d, 0xc8, 0xf3, 0x65, 0xa2,
- 0xdf, 0x92, 0x4f, 0x99, 0x75, 0xcc, 0x7c, 0xdd, 0x6c, 0x60, 0x04, 0xcd,
- 0x9d, 0x67, 0x24, 0x80, 0x57, 0xf3, 0xdc, 0x2b, 0xab, 0xf0, 0x18, 0x91,
- 0xba, 0x22, 0x65, 0x4a, 0x78, 0x38, 0x84, 0x21, 0xae, 0x6c, 0xcd, 0x53,
- 0x1b, 0x98, 0xbd, 0xa5, 0x27, 0x2f, 0xaf, 0xf4, 0x51, 0x4f, 0xb0, 0xa6,
- 0x66, 0x71, 0x24, 0x1c, 0xc8, 0x9e, 0x9e, 0x29, 0xdf, 0x2f, 0x2b, 0x66,
- 0x66, 0x8b, 0xd2, 0xd0, 0xf2, 0x16, 0xab, 0xac, 0x32, 0x6d, 0x9a, 0x35,
- 0xcd, 0x92, 0x76, 0x9c, 0xfd, 0x4c, 0xa5, 0x3d, 0x1b, 0x3b, 0x69, 0xd9,
- 0xaf, 0xfa, 0xde, 0xa9, 0xb9, 0x8d, 0x1a, 0x63, 0x8f, 0x8c, 0xe8, 0xac,
- 0x89, 0x8e, 0x75, 0xe7, 0x41, 0xde, 0x46, 0xd4, 0x6d, 0x37, 0x7c, 0x1f,
- 0x61, 0x63, 0x75, 0x76, 0xbe, 0x06, 0xf9, 0x88, 0x20, 0xb3, 0x2b, 0x33,
- 0x2b, 0x9a, 0xe5, 0x29, 0xe8, 0x84, 0x8f, 0x06, 0xca, 0x88, 0xb3, 0x08,
- 0x23, 0x7a, 0xf0, 0x5d, 0xd7, 0xa0, 0x5b, 0x2c, 0x7c, 0x91, 0xa4, 0x73,
- 0x1a, 0x9e, 0x9a, 0xb5, 0x9f, 0x60, 0x1d, 0xc3, 0xeb, 0x84, 0xae, 0x9f,
- 0x31, 0x1b, 0xe8, 0x2e, 0x0e, 0x4f, 0x4f, 0xae, 0xbd, 0x6b, 0x44, 0x96,
- 0x7b, 0x41, 0x7a, 0xca, 0x00, 0xde, 0x91, 0x49, 0x59, 0x1a, 0x33, 0xd9,
- 0x2d, 0x8d, 0xe4, 0x41, 0x56, 0x10, 0xb5, 0xcb, 0x89, 0x1a, 0x96, 0xb0,
- 0xb2, 0xfc, 0xf6, 0xce, 0x98, 0x4b, 0xe9, 0x65, 0x9a, 0x5b, 0x7a, 0x93,
- 0x9b, 0x31, 0x4b, 0xf4, 0xe1, 0xa2, 0x94, 0xe7, 0xe9, 0xa8, 0x48, 0x05,
- 0x12, 0xbe, 0xb5, 0xae, 0xf9, 0xfa, 0x98, 0x55, 0x19, 0xce, 0x03, 0xde,
- 0x21, 0xe3, 0x92, 0xda, 0xa8, 0xc3, 0x4d, 0xa0, 0x28, 0x93, 0xce, 0x09,
- 0xe6, 0x0b, 0x0d, 0xd2, 0x8c, 0xb8, 0x35, 0x4a, 0xbe, 0x2e, 0x6f, 0x32,
- 0xf8, 0x0a, 0xa1, 0xdf, 0xe7, 0xe4, 0xed, 0x32, 0xaa, 0xe0, 0x4d, 0x96,
- 0x2c, 0x8d, 0xea, 0x69, 0x76, 0x13, 0xda, 0x07, 0x7e, 0xe6, 0x99, 0x87,
- 0x86, 0xc2, 0x6f, 0x78, 0x97, 0xec, 0x2a, 0xec, 0x51, 0xce, 0xf9, 0x4a,
- 0x24, 0x3b, 0x50, 0x6f, 0xa6, 0xb4, 0x5b, 0xab, 0xc6, 0xad, 0xc2, 0x6e,
- 0xc8, 0x4d, 0x5a, 0x7b, 0x97, 0x2b, 0x83, 0x69, 0xfa, 0x6c, 0x74, 0xf0,
- 0x7c, 0xb4, 0x3f, 0x32, 0x86, 0x48, 0x76, 0x9d, 0x97, 0xeb, 0xda, 0x7c,
- 0x9a, 0xa6, 0xe1, 0xde, 0xc9, 0xe8, 0x56, 0x36, 0xe5, 0xe5, 0xe5, 0x82,
- 0x75, 0x9e, 0xbd, 0x72, 0x3e, 0x67, 0xdd, 0xc7, 0x68, 0x7a, 0x56, 0x7f,
- 0x66, 0x0b, 0x88, 0x76, 0x46, 0xae, 0x1b, 0xb3, 0xd4, 0xd0, 0x44, 0x1e,
- 0x39, 0xe7, 0xc5, 0x70, 0x98, 0x4e, 0xea, 0x86, 0x8c, 0xa9, 0xe1, 0xba,
- 0xc8, 0x6f, 0x87, 0x75, 0x39, 0xfd, 0x64, 0x0e, 0xe5, 0xe5, 0x2a, 0x6d,
- 0xae, 0xfe, 0xd4, 0x71, 0x09, 0xef, 0x90, 0x2c, 0xd9, 0x4d, 0x92, 0xd7,
- 0xac, 0x56, 0xd2, 0x4e, 0x54, 0x7c, 0xdf, 0xcc, 0x69, 0xca, 0x28, 0xc9,
- 0x07, 0x33, 0x8a, 0xa1, 0xe5, 0xa5, 0x39, 0xd4, 0x84, 0x07, 0x1b, 0x28,
- 0x2b, 0xed, 0x0c, 0x07, 0x87, 0x23, 0x89, 0x11, 0xf8, 0xed, 0xcc, 0xd5,
- 0x29, 0xab, 0x4f, 0x46, 0xd1, 0x7e, 0x6f, 0x4c, 0xc6, 0x17, 0xf4, 0x6f,
- 0xc3, 0xc2, 0x1a, 0x6c, 0xb9, 0x48, 0x56, 0x33, 0x23, 0x66, 0xc6, 0x64,
- 0x91, 0xa7, 0x93, 0x61, 0x67, 0x38, 0xf9, 0xbe, 0x7c, 0x34, 0x51, 0x5b,
- 0x43, 0x49, 0x29, 0xd9, 0xfe, 0xd2, 0xd8, 0x7f, 0x57, 0x7c, 0xec, 0x18,
- 0x90, 0xd7, 0x68, 0x28, 0xf4, 0xd2, 0x58, 0x10, 0x45, 0xd3, 0x1d, 0xee,
- 0x0a, 0xa2, 0x9a, 0xa4, 0x0c, 0x1b, 0xbb, 0x20, 0x12, 0xf1, 0x00, 0x59,
- 0xfb, 0x73, 0xf4, 0x59, 0xe7, 0xb5, 0x57, 0xee, 0x4c, 0x9f, 0x3c, 0x32,
- 0x67, 0xea, 0x6f, 0xf4, 0xa2, 0x19, 0xd6, 0xd7, 0xd3, 0xe4, 0x25, 0xb4,
- 0x6f, 0x22, 0xd3, 0xe8, 0x06, 0x8f, 0x77, 0x93, 0xef, 0x5e, 0x9d, 0xbf,
- 0x3f, 0x7e, 0xff, 0xd5, 0x0b, 0xfe, 0xa8, 0x50, 0x9a, 0xf9, 0x5b, 0x76,
- 0xbb, 0x22, 0x3f, 0x18, 0xcd, 0xd6, 0x88, 0xb2, 0x24, 0x79, 0x53, 0xc2,
- 0x1e, 0x01, 0xc3, 0x24, 0x81, 0xd5, 0x19, 0xce, 0x88, 0x96, 0xd9, 0xba,
- 0xe3, 0xfb, 0xb5, 0x0c, 0xdb, 0x0d, 0xcc, 0xd7, 0x93, 0x37, 0x59, 0xe7,
- 0x68, 0xf8, 0x23, 0xbb, 0x8f, 0xa1, 0x2f, 0x8d, 0x48, 0x5a, 0xc2, 0xcc,
- 0xd7, 0x99, 0x77, 0xbf, 0x54, 0x1a, 0x63, 0x97, 0xed, 0x7c, 0x33, 0xde,
- 0xad, 0xb9, 0x36, 0xb4, 0x4b, 0x3a, 0xd8, 0xd4, 0xb0, 0xa3, 0x4c, 0x14,
- 0x07, 0xb0, 0x3a, 0x98, 0x0d, 0xc2, 0xca, 0x46, 0xc9, 0xab, 0x79, 0xf7,
- 0x28, 0x49, 0x77, 0x21, 0xad, 0x5e, 0xa5, 0xe0, 0xcc, 0x29, 0xc2, 0xec,
- 0xe5, 0xe5, 0x11, 0x75, 0x98, 0xda, 0x9c, 0xcf, 0x4c, 0x25, 0x3d, 0x7d,
- 0xa6, 0x33, 0x1c, 0x4c, 0x4f, 0xb0, 0x19, 0x52, 0x0a, 0x73, 0x3a, 0x50,
- 0x32, 0xfd, 0x0c, 0xa3, 0x5e, 0x96, 0x33, 0xd8, 0x11, 0xc1, 0xfe, 0x8c,
- 0xad, 0xc3, 0x67, 0x6b, 0xcb, 0xad, 0x3a, 0xd9, 0x21, 0xd7, 0x9f, 0xa1,
- 0x82, 0xe2, 0xb2, 0xb9, 0xda, 0x75, 0x6e, 0x0d, 0x52, 0x53, 0xcc, 0x82,
- 0xf7, 0xcc, 0x44, 0xb0, 0xee, 0xa2, 0x4b, 0xea, 0x70, 0x3b, 0x43, 0xf3,
- 0xfc, 0xdb, 0xba, 0x6e, 0x60, 0x0d, 0x89, 0xf8, 0xe7, 0x95, 0x98, 0x99,
- 0x2d, 0xb3, 0x65, 0x59, 0xdd, 0x05, 0x13, 0x39, 0x86, 0xf2, 0x41, 0x86,
- 0xa7, 0x9c, 0x16, 0xd1, 0x01, 0xe4, 0xa3, 0xba, 0x04, 0xc9, 0x08, 0x20,
- 0x9f, 0xba, 0xb5, 0x03, 0xa1, 0x34, 0x19, 0x06, 0x64, 0xec, 0x6f, 0xe7,
- 0xb0, 0x55, 0x03, 0x0a, 0x8e, 0x1e, 0xb6, 0xed, 0xc5, 0x9a, 0x9a, 0x88,
- 0x0b, 0x87, 0xfe, 0x7f, 0x91, 0x12, 0xd7, 0x29, 0xb2, 0xd6, 0x09, 0x41,
- 0x7a, 0xf0, 0xd2, 0x36, 0x91, 0xfb, 0xd3, 0xc7, 0xa3, 0x83, 0x16, 0xb9,
- 0x17, 0x77, 0x14, 0x28, 0x88, 0xf3, 0x90, 0x0b, 0xa3, 0x38, 0xd6, 0x3c,
- 0x67, 0xb3, 0x8b, 0xf3, 0xfc, 0x72, 0x5d, 0x65, 0xac, 0xc1, 0x21, 0xb6,
- 0xa0, 0x21, 0x05, 0x52, 0x8a, 0xae, 0x4a, 0x78, 0xe2, 0x8d, 0x30, 0xcd,
- 0x16, 0xf3, 0x41, 0x67, 0x38, 0x98, 0x2f, 0xa0, 0x7e, 0x9a, 0x3e, 0x98,
- 0xa6, 0x31, 0x53, 0x30, 0x58, 0x91, 0x89, 0x12, 0xbb, 0x34, 0x0c, 0x25,
- 0x21, 0x57, 0x74, 0x32, 0x5d, 0xa4, 0xf9, 0x12, 0x64, 0x2a, 0xae, 0xd6,
- 0x51, 0xec, 0x5a, 0x90, 0x81, 0x41, 0x6f, 0x4f, 0xc8, 0xf4, 0xad, 0x6a,
- 0x92, 0xcc, 0x38, 0x55, 0xd5, 0x9c, 0xd9, 0xb0, 0xbc, 0xca, 0xa6, 0x9f,
- 0x94, 0x79, 0xa9, 0xca, 0xd9, 0xa5, 0x63, 0x8a, 0x31, 0xc0, 0xbe, 0x36,
- 0x4f, 0xad, 0x6b, 0xba, 0x26, 0x75, 0x9d, 0x93, 0xfb, 0x8c, 0xcc, 0xc1,
- 0xf5, 0x14, 0x56, 0x22, 0x2e, 0x8c, 0xa1, 0x6e, 0xe5, 0x80, 0x89, 0x61,
- 0xa9, 0xc5, 0x6c, 0xd8, 0x54, 0xf9, 0xaa, 0x6f, 0x76, 0x7c, 0x2a, 0x6d,
- 0x05, 0xb5, 0x16, 0x8b, 0x1d, 0xc6, 0x30, 0x9b, 0xc7, 0xd3, 0xa4, 0xb3,
- 0x9b, 0x5d, 0xa2, 0xc4, 0xde, 0x0e, 0xc8, 0x1f, 0x94, 0x1b, 0x7d, 0x81,
- 0x8d, 0x25, 0xb8, 0x3b, 0x8d, 0x69, 0x24, 0x82, 0xcb, 0x58, 0x71, 0xf9,
- 0x14, 0x4a, 0x50, 0x7e, 0x99, 0x51, 0x2c, 0xc7, 0xc8, 0xb2, 0x66, 0x61,
- 0x54, 0xa3, 0x90, 0xc6, 0xcd, 0x6f, 0xb2, 0xcb, 0xb2, 0x21, 0x6d, 0x24,
- 0x20, 0x93, 0x0f, 0xe0, 0xf3, 0x96, 0x26, 0x54, 0xed, 0xf7, 0x75, 0xb2,
- 0x9c, 0xf5, 0x71, 0xf3, 0x69, 0x56, 0xfb, 0xc5, 0xe3, 0x50, 0x37, 0xe6,
- 0x66, 0x75, 0x4f, 0xdd, 0x8c, 0x36, 0xcd, 0x60, 0x7b, 0x41, 0x71, 0x54,
- 0xbd, 0x55, 0x15, 0x7e, 0x62, 0x09, 0xa4, 0x23, 0x37, 0x37, 0xf9, 0x34,
- 0x53, 0x77, 0x9c, 0xf8, 0xa8, 0x17, 0x79, 0xc8, 0xea, 0x97, 0x74, 0x27,
- 0xcd, 0x4b, 0xac, 0x93, 0x93, 0xf7, 0xe4, 0x26, 0x27, 0x9d, 0x5d, 0x98,
- 0x1e, 0x54, 0x32, 0x11, 0x07, 0x69, 0x95, 0xc3, 0x55, 0x64, 0x86, 0x93,
- 0x79, 0x7a, 0x16, 0xbd, 0x7f, 0xc7, 0x78, 0xde, 0x78, 0x5f, 0xcc, 0x18,
- 0x67, 0xbe, 0xe0, 0x72, 0xcd, 0xd3, 0x7c, 0x11, 0xd9, 0x27, 0x30, 0xb2,
- 0xcb, 0x0c, 0x5e, 0x35, 0x3e, 0x83, 0x35, 0x6d, 0x3a, 0xc5, 0xdd, 0x42,
- 0x26, 0x95, 0x65, 0x6c, 0x4f, 0xc0, 0xf8, 0xb8, 0xbd, 0xb3, 0xdb, 0x0b,
- 0xa5, 0x8d, 0xcf, 0x4e, 0xfe, 0xce, 0xc7, 0xe7, 0x5d, 0xcf, 0x94, 0x46,
- 0x4d, 0x57, 0x14, 0x60, 0xea, 0xde, 0x50, 0x32, 0xbd, 0x28, 0x46, 0xb9,
- 0xab, 0x1e, 0xe4, 0x4c, 0xfc, 0xe7, 0x36, 0xb6, 0x07, 0x86, 0x44, 0x3c,
- 0x4d, 0xae, 0x30, 0x8f, 0x23, 0x1c, 0xb8, 0xcb, 0xcb, 0x8d, 0x7c, 0x35,
- 0xe2, 0x18, 0x3c, 0xb4, 0x45, 0xb1, 0xa5, 0x61, 0x5f, 0x36, 0xc2, 0x44,
- 0x1e, 0x5f, 0xe1, 0x75, 0x30, 0xb4, 0x70, 0x67, 0x63, 0xbc, 0x9c, 0x4c,
- 0x3f, 0xd2, 0x93, 0x59, 0xca, 0x0c, 0x12, 0xd6, 0xeb, 0x98, 0x59, 0x4d,
- 0xd9, 0x07, 0x2c, 0x3a, 0x04, 0x8b, 0x1a, 0x4c, 0x75, 0xbe, 0x48, 0x2f,
- 0xe1, 0x5e, 0xbb, 0xec, 0xde, 0xd0, 0xa2, 0x94, 0x40, 0x5f, 0x5d, 0x1a,
- 0xf6, 0x4e, 0xab, 0x16, 0xd7, 0x56, 0x9d, 0xec, 0x18, 0x22, 0x5b, 0xac,
- 0x21, 0xee, 0x4f, 0xcd, 0xf2, 0xc6, 0xe3, 0xaf, 0x77, 0x7d, 0xf6, 0x86,
- 0xdd, 0x7d, 0x08, 0x73, 0x23, 0xee, 0x04, 0x23, 0xfc, 0xcf, 0x7c, 0x1e,
- 0x6d, 0x06, 0x67, 0xad, 0x3b, 0x5f, 0x93, 0x53, 0xba, 0xa4, 0x55, 0x90,
- 0x2b, 0x74, 0x64, 0xaf, 0x3e, 0x3d, 0xa9, 0x1e, 0x59, 0x26, 0xec, 0x96,
- 0x82, 0xb0, 0xae, 0xd7, 0x70, 0x4e, 0x41, 0x1e, 0x77, 0x87, 0x33, 0xcc,
- 0xde, 0xb0, 0xa2, 0x75, 0x41, 0x7f, 0x5a, 0x1d, 0x3a, 0x87, 0x35, 0x47,
- 0x67, 0x51, 0x91, 0x0b, 0x9c, 0xec, 0x60, 0xab, 0x83, 0x1a, 0x9e, 0xa2,
- 0x63, 0xd3, 0x5e, 0x76, 0x2f, 0xa1, 0xd1, 0xd0, 0xc0, 0x6e, 0x8c, 0x08,
- 0x35, 0x82, 0x99, 0x2e, 0x5c, 0x0f, 0xf7, 0xde, 0xa9, 0xd7, 0x86, 0xbf,
- 0x90, 0xe9, 0x20, 0xcc, 0x83, 0xe8, 0xb1, 0x3b, 0x3b, 0x66, 0x2f, 0x46,
- 0xd2, 0x78, 0x7c, 0x64, 0xf7, 0x97, 0xbe, 0x20, 0x38, 0x34, 0xff, 0x14,
- 0x8d, 0xf8, 0xcd, 0x8c, 0x41, 0x06, 0x95, 0x2c, 0xd0, 0xc6, 0x2e, 0x4e,
- 0xc6, 0xb1, 0xc3, 0x6c, 0xc7, 0xa7, 0xe8, 0x7d, 0x62, 0xb6, 0xe4, 0x46,
- 0x64, 0xb7, 0x6a, 0x49, 0x46, 0x81, 0x17, 0xa3, 0xf2, 0xfd, 0x7d, 0xab,
- 0x8c, 0x82, 0x59, 0x6c, 0x2f, 0x73, 0xf0, 0x9b, 0x18, 0x18, 0x09, 0x6b,
- 0xd2, 0x4e, 0xac, 0x0b, 0xf5, 0xf5, 0x2b, 0x7f, 0x5c, 0xf8, 0x4c, 0xbb,
- 0x17, 0xc1, 0xfb, 0xfd, 0x4e, 0xbd, 0x6b, 0x79, 0x98, 0x19, 0xe5, 0xec,
- 0xe8, 0x1d, 0xec, 0xd7, 0xd4, 0xd0, 0xcd, 0x7b, 0x75, 0x57, 0x6a, 0x6c,
- 0x7b, 0xb2, 0xce, 0x17, 0xad, 0x98, 0x80, 0x33, 0xb9, 0x11, 0x58, 0x66,
- 0xd2, 0xc2, 0xd4, 0x38, 0xba, 0x95, 0xc3, 0x3d, 0xdc, 0x25, 0xb4, 0xe6,
- 0x6e, 0x25, 0x9e, 0xed, 0x75, 0xdd, 0x72, 0x20, 0xa9, 0x5c, 0x5e, 0x34,
- 0xd0, 0xb2, 0xc9, 0xae, 0xf5, 0xc6, 0x0c, 0x4e, 0x08, 0xd3, 0x22, 0x31,
- 0x70, 0x59, 0xe4, 0xff, 0x10, 0x1d, 0x34, 0x2b, 0xae, 0xf3, 0xaa, 0x2c,
- 0x48, 0xcb, 0x35, 0xa6, 0x6f, 0x95, 0x83, 0x2d, 0x93, 0xfa, 0x65, 0x18,
- 0xc7, 0xf6, 0xeb, 0x0f, 0xe7, 0x27, 0x1f, 0x5f, 0xbf, 0xfa, 0xf8, 0xe7,
- 0x0f, 0xef, 0xdf, 0x9c, 0x1c, 0x6d, 0x77, 0x86, 0x23, 0x9f, 0x5f, 0x2e,
- 0x8e, 0xfa, 0x9a, 0x2c, 0x0f, 0x5c, 0x12, 0x33, 0x45, 0x1e, 0xf9, 0x32,
- 0xbf, 0x36, 0x0c, 0x0d, 0x86, 0x04, 0x7c, 0xf4, 0xf8, 0x1b, 0xbc, 0x5a,
- 0xb2, 0xe1, 0x9d, 0xe1, 0x26, 0x6b, 0xd2, 0xd3, 0x46, 0x2d, 0x6d, 0x59,
- 0xaf, 0x8a, 0x58, 0xed, 0x3a, 0xc1, 0x88, 0x86, 0x4d, 0x5a, 0x54, 0x31,
- 0x23, 0xf3, 0xc5, 0x33, 0x12, 0x3d, 0x77, 0xfd, 0xba, 0x31, 0x56, 0x92,
- 0x06, 0x08, 0x8c, 0xd6, 0x56, 0x7e, 0xd2, 0x2c, 0x03, 0x63, 0x62, 0xbd,
- 0x8a, 0x1c, 0x77, 0xed, 0x34, 0xd1, 0x59, 0xb2, 0x4d, 0x23, 0x19, 0xfa,
- 0x1d, 0xca, 0x24, 0xa7, 0x55, 0x63, 0xec, 0x9b, 0x2c, 0xc7, 0xc5, 0xd0,
- 0x28, 0x2a, 0xe9, 0xac, 0x70, 0xce, 0x05, 0x1a, 0xb6, 0xd1, 0x35, 0x69,
- 0x0f, 0xa0, 0xdd, 0x67, 0xb7, 0x19, 0x6e, 0x9e, 0xbc, 0xf5, 0x7a, 0x5d,
- 0xe1, 0x36, 0x7f, 0x67, 0xb4, 0x11, 0xe2, 0x7e, 0x6f, 0xe0, 0xdd, 0x33,
- 0x2f, 0xe8, 0x43, 0x46, 0xcc, 0x74, 0x45, 0x5e, 0xb9, 0xa0, 0xb8, 0x6a,
- 0x0a, 0x4f, 0x0a, 0xfc, 0x5e, 0x67, 0xaf, 0x2e, 0xbe, 0x8e, 0x2a, 0xb3,
- 0x2e, 0xa5, 0x47, 0x48, 0x11, 0x8a, 0x79, 0xdd, 0xc8, 0x05, 0x79, 0x3f,
- 0x1e, 0x27, 0x48, 0x18, 0x59, 0xe4, 0x93, 0x2a, 0xa5, 0x6f, 0xd2, 0x8f,
- 0xe9, 0xa7, 0x86, 0xac, 0x3b, 0xc3, 0x9d, 0x7d, 0xf3, 0x7a, 0xfc, 0xbb,
- 0x83, 0x03, 0xd2, 0xe2, 0xd7, 0x66, 0x5f, 0x76, 0xcc, 0x2b, 0x45, 0x6d,
- 0x6e, 0xe6, 0x72, 0x54, 0x97, 0xbb, 0x10, 0xdb, 0xb5, 0xa8, 0x03, 0xe9,
- 0xb5, 0x91, 0xb6, 0xa0, 0x23, 0x25, 0x6a, 0x73, 0x9c, 0xc1, 0x9e, 0x80,
- 0xd1, 0x49, 0x36, 0x8d, 0xe1, 0x17, 0x46, 0x5e, 0x2f, 0x42, 0x85, 0x7c,
- 0x27, 0x3f, 0x1d, 0x4b, 0x2e, 0x4a, 0x3a, 0x35, 0x7f, 0x25, 0x47, 0xc1,
- 0x2e, 0xad, 0xac, 0x7d, 0xc3, 0x74, 0x55, 0x63, 0xd6, 0x46, 0x2f, 0xc8,
- 0x7c, 0x41, 0x0a, 0x4d, 0xc8, 0x15, 0x8a, 0xee, 0xe5, 0x72, 0x69, 0x4a,
- 0x20, 0x87, 0x49, 0x3a, 0xfd, 0x74, 0x93, 0x56, 0x33, 0xb6, 0x87, 0x0c,
- 0xc5, 0x4c, 0xf2, 0x45, 0xde, 0xdc, 0xb1, 0x5d, 0xdb, 0xb5, 0xa9, 0x39,
- 0x3e, 0x4a, 0x1b, 0x68, 0xee, 0xd1, 0xa5, 0x31, 0xf9, 0x49, 0xfb, 0x24,
- 0x15, 0x3f, 0x6f, 0x7c, 0x93, 0x16, 0x2a, 0x52, 0x63, 0x55, 0x1c, 0xfb,
- 0xed, 0x40, 0x3c, 0x36, 0x7c, 0x8f, 0x30, 0x4d, 0x47, 0xbb, 0xca, 0x06,
- 0x7d, 0x26, 0xa5, 0xe4, 0x93, 0xd4, 0x77, 0x46, 0xca, 0x2f, 0x93, 0x88,
- 0x8a, 0x88, 0xec, 0xa1, 0xe4, 0x9b, 0xec, 0xce, 0xd8, 0xcf, 0x79, 0xe1,
- 0x38, 0x25, 0xdb, 0xf7, 0x19, 0x59, 0x77, 0xac, 0x8b, 0xe6, 0xea, 0x4c,
- 0xcf, 0x24, 0x1e, 0xc2, 0x92, 0x24, 0x74, 0x20, 0xf0, 0xfb, 0xaa, 0x87,
- 0xd3, 0x10, 0xdb, 0x75, 0x8b, 0x25, 0xe3, 0x4b, 0xe1, 0x21, 0x8e, 0xcd,
- 0xcf, 0x8b, 0x22, 0x5b, 0xc8, 0xf1, 0x5d, 0x6c, 0x3a, 0x00, 0xfb, 0xac,
- 0x99, 0xf2, 0x77, 0x7c, 0xa3, 0x3b, 0xc3, 0x3d, 0xe3, 0xe0, 0x7e, 0xda,
- 0xa8, 0x4c, 0xd2, 0xac, 0x21, 0x63, 0x15, 0xed, 0xdb, 0x5f, 0x8d, 0x7a,
- 0x3f, 0x13, 0xdc, 0xa6, 0xca, 0x1d, 0x7a, 0xfb, 0xcc, 0xd9, 0x29, 0x8a,
- 0x43, 0xa6, 0x33, 0x96, 0x23, 0xfe, 0xa3, 0xd5, 0xac, 0x10, 0xc0, 0xe8,
- 0x0c, 0xe7, 0x6b, 0xd9, 0x2a, 0xc3, 0x64, 0x1d, 0xdb, 0x46, 0x4f, 0x2d,
- 0x2b, 0xf8, 0x8b, 0xaa, 0xd2, 0x9c, 0x75, 0xeb, 0x3c, 0x77, 0x58, 0xd9,
- 0xe8, 0x5e, 0x13, 0xe1, 0xe6, 0xde, 0xc6, 0xec, 0xc6, 0x2e, 0x7a, 0xa0,
- 0x99, 0x84, 0x26, 0x6b, 0xaf, 0xc5, 0xd9, 0x96, 0xd0, 0xe0, 0xd2, 0x2f,
- 0x0d, 0x1b, 0xfb, 0xd7, 0x05, 0x34, 0x33, 0x43, 0x30, 0xbf, 0x50, 0x66,
- 0x09, 0x2d, 0xb6, 0x04, 0xf5, 0x3b, 0x95, 0xc8, 0x34, 0x09, 0xeb, 0x82,
- 0x5d, 0x71, 0xc2, 0x00, 0x2b, 0x8e, 0xec, 0x4b, 0x0e, 0xcd, 0x00, 0x72,
- 0x07, 0x8a, 0xcb, 0xf1, 0xc5, 0x56, 0xb2, 0x93, 0x8d, 0x2e, 0xcd, 0x78,
- 0x5b, 0x34, 0xce, 0xc1, 0x0b, 0xfa, 0xef, 0x21, 0xfe, 0xfb, 0x68, 0x4b,
- 0x53, 0xfb, 0xfc, 0xad, 0x27, 0x69, 0xde, 0x95, 0x45, 0x1c, 0x8f, 0x73,
- 0xc2, 0x7d, 0xc0, 0x3e, 0xe6, 0x3e, 0xc6, 0xc3, 0x3a, 0xeb, 0x09, 0xef,
- 0x72, 0xa8, 0x6e, 0xe9, 0x36, 0x2c, 0xd9, 0x1f, 0x71, 0x9d, 0xb1, 0x43,
- 0xc4, 0xac, 0x6c, 0x6a, 0xd4, 0x43, 0xb8, 0x11, 0xf5, 0x56, 0x4d, 0x3f,
- 0x56, 0xd9, 0x55, 0x5a, 0x5f, 0x25, 0xeb, 0x86, 0x89, 0xd0, 0xd0, 0x6d,
- 0x77, 0xb8, 0xd5, 0x22, 0x77, 0x9e, 0x36, 0xf9, 0xf4, 0x48, 0xed, 0x3e,
- 0x77, 0x8a, 0x1c, 0x01, 0x59, 0x94, 0x37, 0xfa, 0xcc, 0x50, 0x72, 0xed,
- 0x62, 0x6a, 0x81, 0x39, 0x4d, 0xf8, 0x4d, 0xe8, 0x31, 0x3f, 0x92, 0xbd,
- 0x24, 0x6d, 0x92, 0x12, 0x01, 0x0d, 0x8b, 0x9b, 0x9b, 0x1d, 0x23, 0x8b,
- 0x6e, 0x81, 0x73, 0x23, 0xdb, 0x15, 0xf3, 0x0e, 0x4c, 0x53, 0xd1, 0xf3,
- 0xf2, 0xb9, 0x78, 0x6f, 0xe5, 0xdf, 0x90, 0xa7, 0xa2, 0x7d, 0xd5, 0x1c,
- 0xed, 0xee, 0xaa, 0x5e, 0xf7, 0x93, 0xb6, 0x32, 0x48, 0xab, 0xe9, 0xc8,
- 0x62, 0x39, 0x60, 0xa2, 0x74, 0x9d, 0x5f, 0xc2, 0xd6, 0x88, 0x39, 0x30,
- 0xd8, 0x29, 0xf5, 0x2f, 0x5d, 0x12, 0x33, 0xe3, 0x21, 0xf9, 0x4b, 0xd7,
- 0xf5, 0x03, 0xee, 0x88, 0xc7, 0x74, 0xf9, 0x1d, 0xeb, 0x2f, 0xe6, 0xa8,
- 0xbe, 0xbf, 0x01, 0x5d, 0x2a, 0xbc, 0xf3, 0x08, 0xe3, 0xb5, 0x77, 0xb3,
- 0xc6, 0x3c, 0xd0, 0xb9, 0xb8, 0x48, 0x76, 0xd2, 0x4f, 0xe9, 0x28, 0x39,
- 0x7d, 0x3d, 0x3e, 0xa3, 0x4f, 0x18, 0xea, 0x28, 0x2e, 0xcd, 0x2c, 0x4e,
- 0xc6, 0x9d, 0xe1, 0xb2, 0xdb, 0x26, 0x2b, 0xea, 0x98, 0x83, 0x32, 0xdc,
- 0x66, 0x8d, 0x22, 0x68, 0x7a, 0x8d, 0x4c, 0xd6, 0x58, 0xfa, 0x88, 0x8b,
- 0x53, 0x98, 0x97, 0x72, 0x30, 0x12, 0xbe, 0x6a, 0xc1, 0x87, 0x56, 0xe6,
- 0xe6, 0xcf, 0x76, 0xad, 0xab, 0x66, 0xa0, 0xb4, 0x60, 0xc3, 0x85, 0xf5,
- 0xfa, 0x92, 0x6c, 0x90, 0x5a, 0xed, 0x46, 0xfb, 0x05, 0xb3, 0x1b, 0xa1,
- 0xaa, 0x20, 0xcb, 0xb6, 0x9e, 0x44, 0x63, 0x35, 0x51, 0x26, 0x15, 0x54,
- 0xa4, 0xa2, 0x74, 0xa3, 0x52, 0x36, 0x05, 0xb2, 0x46, 0x73, 0x04, 0xd8,
- 0xa6, 0x99, 0x51, 0x41, 0x67, 0x11, 0x25, 0x80, 0x0f, 0x45, 0x0d, 0xa7,
- 0xb9, 0x64, 0x8a, 0x46, 0xfc, 0x3f, 0x18, 0x68, 0xca, 0x2a, 0x1a, 0x51,
- 0x3d, 0x02, 0x15, 0x39, 0xf9, 0x49, 0x49, 0x61, 0x66, 0x53, 0x9d, 0xc6,
- 0xb3, 0xf7, 0xff, 0xab, 0x62, 0x6d, 0x36, 0x3e, 0x22, 0x8d, 0x49, 0xa9,
- 0x22, 0x31, 0x43, 0x1b, 0xb8, 0xc9, 0xb1, 0xf7, 0xf8, 0xa0, 0xed, 0xc7,
- 0x06, 0xb1, 0x19, 0x03, 0x20, 0x4b, 0x5e, 0xd2, 0x7f, 0xef, 0xe5, 0xca,
- 0x48, 0x5d, 0xc1, 0xf3, 0x12, 0xef, 0x64, 0xde, 0x29, 0xbe, 0x98, 0xa4,
- 0xcd, 0xa0, 0x03, 0xe9, 0x05, 0x72, 0x1b, 0x11, 0xdf, 0x1b, 0x24, 0x6f,
- 0x28, 0x21, 0xfb, 0xe8, 0xfd, 0x57, 0xa0, 0x81, 0xb3, 0x83, 0x43, 0x44,
- 0x97, 0xac, 0xf5, 0x30, 0xc3, 0x47, 0x6a, 0x76, 0x24, 0x70, 0x74, 0x38,
- 0x54, 0x7c, 0x21, 0x13, 0x06, 0x60, 0xa3, 0x14, 0x16, 0x44, 0xf6, 0xd0,
- 0xec, 0xd7, 0x93, 0x5f, 0x81, 0x21, 0x7a, 0x34, 0x90, 0x1d, 0x14, 0xc7,
- 0xcc, 0xa7, 0xec, 0xce, 0xfd, 0x0d, 0xbb, 0xea, 0x6d, 0xb5, 0x7b, 0xf8,
- 0xa5, 0xb7, 0x49, 0x7f, 0x7d, 0x41, 0x19, 0x4a, 0x46, 0x4b, 0x9d, 0xfd,
- 0xf8, 0xf3, 0x24, 0x62, 0x7c, 0xe7, 0x23, 0xce, 0x16, 0xf8, 0xb9, 0x34,
- 0x17, 0x88, 0x43, 0xff, 0xcc, 0xe2, 0x25, 0x1d, 0x9e, 0x32, 0xe5, 0x89,
- 0xe0, 0xd3, 0xc2, 0xaa, 0x24, 0x43, 0x4e, 0x00, 0x43, 0x42, 0x58, 0x77,
- 0xef, 0xa7, 0xe5, 0x22, 0x90, 0x75, 0x2d, 0xc3, 0x15, 0xfa, 0xfc, 0xa1,
- 0xc8, 0x37, 0x18, 0x73, 0xcc, 0x6c, 0x44, 0x8b, 0xee, 0x5e, 0x07, 0xab,
- 0x53, 0x43, 0xfd, 0x72, 0x92, 0x91, 0xde, 0xe4, 0x17, 0x11, 0xe6, 0xc6,
- 0xd4, 0x58, 0x53, 0x1a, 0x25, 0x4e, 0xe3, 0x8d, 0xa9, 0xff, 0xe6, 0x6c,
- 0x75, 0x6f, 0xcd, 0xa1, 0x93, 0x9f, 0xc9, 0xee, 0xda, 0xc0, 0xf7, 0x34,
- 0x19, 0x26, 0x57, 0xe5, 0xaa, 0x9f, 0x4b, 0x32, 0x69, 0x18, 0xc3, 0xe0,
- 0x8c, 0x03, 0xf1, 0x46, 0x49, 0x66, 0x55, 0xcb, 0x97, 0xcf, 0xe4, 0x47,
- 0x96, 0xe8, 0x96, 0xb7, 0x25, 0x5b, 0xb1, 0xa3, 0x68, 0x38, 0xf8, 0x29,
- 0x57, 0x28, 0xbf, 0xa6, 0xad, 0x53, 0xda, 0x71, 0x8e, 0xcd, 0xb6, 0xea,
- 0x5b, 0x16, 0xf4, 0x67, 0x41, 0x3e, 0xb1, 0x7f, 0x8b, 0x10, 0x64, 0x94,
- 0x16, 0xc9, 0x37, 0x2e, 0xb1, 0x0f, 0x28, 0x30, 0x94, 0x04, 0x29, 0x59,
- 0xe8, 0x8b, 0xbb, 0x07, 0x19, 0x74, 0xaa, 0x80, 0xa8, 0xdd, 0xe6, 0x19,
- 0x73, 0x81, 0xb5, 0xd3, 0x25, 0x10, 0xc3, 0xc6, 0x1b, 0x4a, 0x29, 0x61,
- 0xda, 0x25, 0xdf, 0x6b, 0x3e, 0xfd, 0x84, 0xc8, 0x8b, 0x48, 0x28, 0x7f,
- 0x7d, 0x9a, 0xb7, 0xc7, 0x19, 0xa7, 0x91, 0x23, 0x80, 0x2d, 0x49, 0x4e,
- 0x61, 0xa2, 0x49, 0x92, 0xce, 0x79, 0xc1, 0x3a, 0x5b, 0xaf, 0x97, 0xc1,
- 0xcc, 0xf5, 0xe3, 0x9b, 0xe3, 0xf3, 0x64, 0x87, 0x34, 0xf0, 0xae, 0x91,
- 0xab, 0xe2, 0x7d, 0x2f, 0x6b, 0xa6, 0x7b, 0xab, 0x4f, 0xf9, 0x9e, 0x31,
- 0x36, 0x67, 0x93, 0x5d, 0x6b, 0x44, 0xe1, 0x73, 0x44, 0x85, 0xd6, 0x30,
- 0x55, 0xcb, 0x14, 0xa6, 0x69, 0xe0, 0x7a, 0x74, 0xa6, 0x2a, 0x57, 0xb8,
- 0x58, 0x1b, 0x95, 0xb7, 0x89, 0x09, 0x1a, 0x21, 0x1a, 0xce, 0x8e, 0x40,
- 0x60, 0x27, 0x63, 0xbf, 0xb4, 0xb1, 0xb1, 0xbb, 0x77, 0x95, 0xb3, 0x1f,
- 0xc5, 0x91, 0xc3, 0x0e, 0x1c, 0x4d, 0xd9, 0x13, 0x71, 0xe1, 0xb4, 0xdf,
- 0x01, 0x25, 0x5b, 0xd2, 0xa6, 0xac, 0x48, 0x24, 0xcd, 0xc8, 0x0d, 0xd8,
- 0x1d, 0x0e, 0x9a, 0xdc, 0xd6, 0x68, 0x6f, 0x2b, 0xb1, 0xe9, 0xa5, 0x66,
- 0x97, 0x39, 0x7f, 0xda, 0x06, 0xbe, 0x0c, 0x89, 0xcd, 0xd7, 0xb5, 0xf5,
- 0x63, 0xa6, 0xf6, 0xbc, 0x46, 0x31, 0x86, 0xea, 0x1d, 0xa7, 0xd5, 0xb9,
- 0x8c, 0x6e, 0x8c, 0x9b, 0xe5, 0x5b, 0xeb, 0x32, 0x29, 0x1c, 0xd5, 0xd6,
- 0x0f, 0x5b, 0x89, 0x97, 0x9e, 0xd8, 0xca, 0x52, 0xcc, 0x5d, 0x02, 0x91,
- 0x27, 0x04, 0x8c, 0x44, 0xb6, 0x77, 0x78, 0x96, 0x2d, 0xf2, 0x65, 0x0e,
- 0xdb, 0xcb, 0x9f, 0xc2, 0x30, 0x16, 0x20, 0x74, 0x53, 0xfa, 0x21, 0x9c,
- 0x92, 0xa6, 0xfc, 0xa6, 0xf4, 0x6b, 0x33, 0x25, 0x78, 0xc4, 0x38, 0x23,
- 0x33, 0x6e, 0x35, 0xb7, 0x27, 0x64, 0x93, 0x86, 0x37, 0x44, 0x8e, 0xed,
- 0x5d, 0xea, 0x53, 0xe5, 0x9d, 0x4b, 0x44, 0x2f, 0x3d, 0x33, 0xb5, 0x64,
- 0xf5, 0x69, 0x5a, 0x1f, 0x1c, 0x74, 0x05, 0x5d, 0xed, 0x28, 0x4a, 0xec,
- 0xf7, 0xd4, 0x12, 0xe6, 0x87, 0xf3, 0xe3, 0x64, 0x87, 0x8a, 0x44, 0x9e,
- 0x3d, 0x39, 0x38, 0xdc, 0xf5, 0x33, 0x4b, 0x94, 0x01, 0x84, 0x72, 0xf3,
- 0x8e, 0x43, 0xb2, 0xde, 0x05, 0x5c, 0x94, 0xd3, 0x54, 0x34, 0x0e, 0x37,
- 0xf4, 0x2c, 0xbb, 0xce, 0xa7, 0x54, 0xa3, 0x43, 0x01, 0x79, 0xe2, 0xc1,
- 0x93, 0xcc, 0x4c, 0x32, 0xd8, 0x71, 0x97, 0xd1, 0xcb, 0xb3, 0x37, 0x26,
- 0x92, 0xd5, 0x94, 0x29, 0x6f, 0xda, 0xd0, 0x40, 0x23, 0x7b, 0xe7, 0xcf,
- 0x5a, 0xa2, 0x04, 0x69, 0x8f, 0x27, 0x88, 0xd6, 0xc5, 0x15, 0x34, 0xd0,
- 0x31, 0x06, 0x2e, 0xf0, 0x33, 0x1c, 0xca, 0x66, 0x09, 0xeb, 0xb5, 0xb1,
- 0x63, 0xca, 0x40, 0xe9, 0x1e, 0xa0, 0xcc, 0x69, 0x8b, 0x04, 0x49, 0x01,
- 0xe1, 0x9e, 0xba, 0x41, 0xed, 0xee, 0xfb, 0x9a, 0x50, 0x7b, 0xd4, 0xd0,
- 0x53, 0x0e, 0xc2, 0x31, 0x9a, 0x4b, 0x7c, 0xc8, 0xdf, 0xc8, 0xc9, 0xd4,
- 0x66, 0x9f, 0x72, 0x3c, 0x74, 0xf6, 0xe2, 0x35, 0x9c, 0xb0, 0xa2, 0xa0,
- 0xfc, 0x36, 0xd5, 0xc7, 0x03, 0x39, 0x6e, 0x5e, 0xdf, 0x53, 0x21, 0x04,
- 0x29, 0xa4, 0xfe, 0x46, 0xf6, 0xfc, 0x18, 0xe6, 0x09, 0x4f, 0xcf, 0x27,
- 0x71, 0xf4, 0x40, 0x29, 0xb6, 0x29, 0x1c, 0xa1, 0xaf, 0x58, 0x05, 0xbf,
- 0x39, 0xa2, 0x69, 0x39, 0xeb, 0x98, 0xec, 0xb4, 0x09, 0x9e, 0xc0, 0x03,
- 0xf7, 0xe3, 0x50, 0x25, 0x38, 0x5e, 0xdc, 0x93, 0x4d, 0x94, 0xca, 0xee,
- 0xf5, 0x9f, 0xc4, 0x03, 0x63, 0x1e, 0x35, 0xb0, 0xc0, 0x9f, 0xc5, 0x01,
- 0xef, 0xf1, 0x39, 0xbd, 0x0e, 0x24, 0x76, 0x6d, 0x95, 0x21, 0xa7, 0xab,
- 0x51, 0xb2, 0x78, 0x82, 0x8d, 0x0b, 0x2d, 0x1a, 0x4a, 0x1b, 0x44, 0x4a,
- 0x00, 0xe5, 0x7c, 0x75, 0xee, 0x26, 0x3b, 0x76, 0xcc, 0x75, 0xd9, 0x39,
- 0xe1, 0x20, 0x65, 0x72, 0xf6, 0xf6, 0x7b, 0xe5, 0x96, 0x31, 0x03, 0x1e,
- 0x8e, 0xa8, 0x3f, 0xda, 0xec, 0x30, 0x63, 0x51, 0x50, 0xa6, 0x5a, 0x2e,
- 0x59, 0x9f, 0xec, 0x26, 0x42, 0x38, 0x7c, 0xd7, 0x25, 0x33, 0xd2, 0x56,
- 0x6f, 0xbd, 0xc4, 0xef, 0xba, 0xb1, 0xa6, 0x92, 0x2d, 0x99, 0x3f, 0xfd,
- 0xc0, 0xbf, 0x66, 0x1e, 0x6b, 0xfe, 0xd5, 0x5c, 0xad, 0x97, 0x13, 0x73,
- 0x9e, 0x45, 0xf3, 0xa7, 0xad, 0x84, 0x83, 0xad, 0x73, 0xd9, 0xcf, 0x0d,
- 0x66, 0x67, 0xae, 0xf5, 0x3a, 0xea, 0x5b, 0x6c, 0xed, 0x1a, 0xcf, 0x4e,
- 0x6b, 0x07, 0x5c, 0x7e, 0x9e, 0x39, 0x3c, 0xf6, 0x65, 0x07, 0xaa, 0xde,
- 0x07, 0x43, 0x9e, 0x3f, 0xbc, 0xfb, 0xcb, 0x0f, 0xcf, 0x1f, 0x3d, 0x4e,
- 0x9f, 0xa5, 0xd3, 0xa7, 0xf3, 0xcf, 0xd3, 0x27, 0xb3, 0x27, 0xcf, 0x9e,
- 0x1f, 0x7e, 0xfe, 0x24, 0x7d, 0xf6, 0x78, 0x9e, 0x3e, 0x3d, 0xc8, 0x0e,
- 0x9e, 0xcf, 0x0f, 0x1f, 0xcd, 0x66, 0xf3, 0xec, 0xf3, 0xd9, 0xb3, 0x74,
- 0x6b, 0x04, 0xf3, 0x4b, 0xa7, 0x1e, 0xb2, 0x5a, 0x0d, 0xbc, 0xa5, 0xc9,
- 0xf8, 0xeb, 0x57, 0xc3, 0x83, 0xe4, 0x2a, 0xbb, 0xd5, 0x0b, 0xc6, 0x1e,
- 0x4d, 0x9b, 0x75, 0x97, 0x49, 0x5e, 0x75, 0xff, 0x62, 0xb5, 0x50, 0x90,
- 0xb2, 0xa6, 0xc9, 0x57, 0x02, 0x0d, 0x98, 0x77, 0x51, 0xb7, 0x95, 0xf3,
- 0xea, 0xac, 0xff, 0xf0, 0x85, 0xfa, 0xec, 0x69, 0x5d, 0xdd, 0xcb, 0x7f,
- 0x62, 0xde, 0x59, 0xbc, 0x4b, 0xa7, 0x46, 0x49, 0x32, 0x7b, 0x22, 0x0f,
- 0x8e, 0x8d, 0x69, 0x6b, 0xd8, 0xf4, 0x20, 0x91, 0xbf, 0x90, 0x97, 0xd8,
- 0x1b, 0xe3, 0xab, 0xaa, 0x5c, 0xaf, 0xce, 0xca, 0x45, 0x3e, 0xbd, 0xdb,
- 0x34, 0x9c, 0xff, 0x58, 0xeb, 0x17, 0x47, 0xcc, 0xc2, 0xf3, 0x3a, 0xfb,
- 0x0d, 0x4d, 0x2b, 0x8f, 0x1d, 0x3f, 0xc0, 0xb6, 0x1a, 0x4e, 0xf3, 0xd5,
- 0x15, 0xc5, 0x79, 0x5f, 0x22, 0xcb, 0x8f, 0x42, 0x33, 0xfc, 0x83, 0xb8,
- 0x4d, 0x35, 0x96, 0x1b, 0x59, 0xcb, 0x79, 0xea, 0xdb, 0xa2, 0x71, 0xe5,
- 0x5a, 0x02, 0xa7, 0x6e, 0x2a, 0xc9, 0x2c, 0xcd, 0x03, 0x3f, 0x9e, 0xfb,
- 0x10, 0xdf, 0x76, 0xd5, 0xb6, 0xd9, 0x79, 0x21, 0xbf, 0x1a, 0x25, 0xe7,
- 0x88, 0x93, 0xaf, 0x57, 0x6c, 0x5e, 0xc0, 0x9f, 0xcf, 0xbf, 0xeb, 0x5e,
- 0x34, 0x9a, 0xbc, 0x50, 0x0c, 0x17, 0xe2, 0x99, 0x1d, 0xfd, 0x70, 0x7e,
- 0xf2, 0xa2, 0xbb, 0x4f, 0x28, 0x36, 0xaa, 0x5f, 0xec, 0xed, 0x21, 0xe4,
- 0x73, 0x95, 0xde, 0xde, 0x8e, 0xea, 0x6c, 0x6f, 0x56, 0x4e, 0xeb, 0xbd,
- 0xba, 0x5e, 0xe8, 0x6e, 0xb4, 0x6b, 0xff, 0x7e, 0x05, 0x6f, 0x6e, 0xb9,
- 0x04, 0xdb, 0xca, 0x66, 0xc3, 0xba, 0x0e, 0x72, 0x83, 0xc6, 0xaf, 0x35,
- 0xf3, 0xe0, 0x48, 0x72, 0xd2, 0x20, 0xe7, 0x86, 0x66, 0x77, 0xc7, 0xe3,
- 0xaf, 0x13, 0x7d, 0x19, 0xdb, 0x6b, 0x43, 0xe2, 0x36, 0x2f, 0x67, 0x10,
- 0x51, 0xc3, 0x52, 0x61, 0xd8, 0x7f, 0xf4, 0x1d, 0x3a, 0xa4, 0x4e, 0x97,
- 0xfc, 0x87, 0xd4, 0xae, 0xe4, 0xcd, 0xc6, 0x44, 0xbe, 0xa7, 0x1d, 0x07,
- 0x88, 0x5d, 0x44, 0x3c, 0xfe, 0xaf, 0x4e, 0xb0, 0x34, 0x71, 0x4f, 0x3a,
- 0x8f, 0x50, 0xb7, 0x38, 0xdd, 0x50, 0xef, 0x65, 0x59, 0x19, 0xe1, 0xb1,
- 0xac, 0x63, 0x5e, 0x50, 0xbd, 0xe5, 0x35, 0xab, 0x7d, 0x35, 0xe7, 0x22,
- 0x9a, 0x61, 0x0a, 0x6f, 0x70, 0x73, 0x8c, 0xc8, 0x61, 0x1c, 0xf9, 0x87,
- 0x15, 0x8d, 0x6f, 0xe9, 0xe1, 0xf5, 0x79, 0xd1, 0xd6, 0x85, 0x0b, 0x7e,
- 0x40, 0x1c, 0x9b, 0xc9, 0x4a, 0x61, 0x59, 0x60, 0x21, 0x20, 0xf7, 0x1f,
- 0x62, 0x82, 0x74, 0x88, 0xaa, 0x2a, 0x3d, 0xa5, 0x76, 0xf8, 0x0d, 0x8c,
- 0x4b, 0x23, 0x1d, 0xf3, 0x4b, 0x0d, 0xaf, 0xf7, 0xe4, 0xd8, 0x91, 0xe8,
- 0x6a, 0x90, 0xbb, 0x2c, 0xe5, 0xe0, 0x24, 0x14, 0x28, 0x85, 0x0d, 0xa9,
- 0x25, 0x92, 0x9d, 0xc9, 0xe9, 0x40, 0xad, 0x2a, 0xf8, 0xe0, 0x26, 0x50,
- 0xcd, 0x8f, 0x7b, 0x9c, 0xd2, 0xa8, 0xf4, 0x5e, 0x62, 0x78, 0x71, 0x5f,
- 0x78, 0x89, 0x6d, 0xa4, 0x95, 0xc1, 0xcd, 0x60, 0x9e, 0xe9, 0x5a, 0x7b,
- 0xc8, 0xb9, 0xb5, 0x3a, 0x5f, 0xac, 0xc4, 0xb5, 0xbb, 0x1e, 0x4d, 0xbd,
- 0xd7, 0xbd, 0xcd, 0x51, 0x54, 0x9d, 0x22, 0xaf, 0x3f, 0x26, 0xda, 0x4b,
- 0x2f, 0x48, 0x4b, 0x03, 0x86, 0x32, 0xaf, 0xb1, 0x69, 0x93, 0x5a, 0xa9,
- 0x04, 0x85, 0xc0, 0x70, 0x20, 0x23, 0xf6, 0x28, 0xe3, 0x9c, 0x4a, 0xe9,
- 0x17, 0xa5, 0x53, 0xb0, 0x0c, 0xe1, 0x19, 0x5e, 0x88, 0x6a, 0xc4, 0x51,
- 0xc0, 0xb7, 0xb9, 0x26, 0x89, 0x93, 0x08, 0xb9, 0xb6, 0x8e, 0xb3, 0xbd,
- 0xf8, 0x67, 0x10, 0x5f, 0x13, 0x8d, 0x91, 0x3b, 0x7e, 0x46, 0xe7, 0x17,
- 0x73, 0x0d, 0x49, 0x56, 0x3e, 0x17, 0x3a, 0xe6, 0x28, 0xe1, 0x95, 0xa2,
- 0x4f, 0x2e, 0x32, 0x50, 0xcf, 0x76, 0x5d, 0x4a, 0xca, 0x26, 0x4d, 0x94,
- 0xe6, 0xc9, 0x73, 0xec, 0x92, 0xba, 0x2d, 0xe8, 0x6c, 0x19, 0x23, 0x69,
- 0xed, 0x72, 0xf5, 0xeb, 0x30, 0x5a, 0xe9, 0x36, 0x33, 0x66, 0xbd, 0x06,
- 0x75, 0x0f, 0x98, 0x48, 0x95, 0xe9, 0x17, 0x8a, 0xb2, 0x3b, 0x29, 0x9d,
- 0x47, 0x2c, 0x1f, 0x55, 0x73, 0xfb, 0xbd, 0x09, 0x68, 0x8e, 0xbf, 0x3d,
- 0xe5, 0x9e, 0xec, 0xcd, 0x2c, 0x71, 0x8f, 0x24, 0xce, 0xce, 0x74, 0xc7,
- 0x08, 0x7f, 0x03, 0x2a, 0x36, 0x6a, 0x9e, 0xfa, 0x0b, 0x9a, 0xd3, 0x17,
- 0xbb, 0x31, 0x3f, 0xb1, 0x1b, 0x49, 0x29, 0x8a, 0xee, 0xe9, 0xa2, 0xac,
- 0x35, 0xfe, 0x42, 0xca, 0x05, 0xd7, 0xdd, 0x1a, 0x6e, 0xf0, 0x9d, 0xfc,
- 0x80, 0x8f, 0xa6, 0x33, 0x1c, 0x3f, 0x35, 0x90, 0x29, 0xce, 0x9d, 0xb2,
- 0x21, 0xb6, 0xaa, 0x2b, 0x16, 0x26, 0x6d, 0xc3, 0x5a, 0x93, 0x2f, 0x92,
- 0x1f, 0x7e, 0x18, 0x24, 0xc6, 0x48, 0xee, 0x0c, 0xf7, 0x43, 0x63, 0x7e,
- 0x6a, 0x68, 0xf1, 0x07, 0x2e, 0x58, 0xfa, 0xe1, 0x9a, 0x8c, 0x40, 0x72,
- 0x30, 0xd7, 0x0b, 0x8a, 0x1e, 0xb1, 0x9a, 0xdd, 0xf6, 0xca, 0x71, 0x3d,
- 0xf4, 0x86, 0xd4, 0x2c, 0x67, 0xb7, 0x73, 0x2a, 0xa6, 0x39, 0xb0, 0xf5,
- 0xb2, 0x10, 0xeb, 0x84, 0x89, 0x13, 0xf7, 0x1e, 0x72, 0x60, 0xfb, 0x77,
- 0xdb, 0x8e, 0x90, 0x62, 0x7b, 0x57, 0x65, 0x2c, 0xe9, 0x21, 0xaa, 0x72,
- 0x4f, 0x4c, 0x69, 0xf5, 0x30, 0xcc, 0xcd, 0x84, 0xc3, 0xa5, 0xc4, 0x4c,
- 0x4f, 0xc9, 0xb9, 0xce, 0x65, 0x60, 0x5d, 0x31, 0xee, 0x4c, 0x49, 0xaa,
- 0x8d, 0x5b, 0x5d, 0xdd, 0xd5, 0x94, 0xc9, 0x21, 0xb3, 0x09, 0x6e, 0x4f,
- 0x6f, 0x82, 0xb1, 0xec, 0x3d, 0x15, 0xf5, 0x10, 0x1f, 0x20, 0xe6, 0xd7,
- 0x62, 0x9d, 0x66, 0x46, 0xdb, 0xc3, 0x6d, 0x1b, 0x0b, 0x93, 0x7c, 0x99,
- 0x20, 0x97, 0xde, 0x26, 0x67, 0xbb, 0xe4, 0xc3, 0xe0, 0x93, 0x5e, 0x52,
- 0x5c, 0xe9, 0xa7, 0x3b, 0xba, 0xe2, 0x76, 0xaa, 0x4e, 0xd5, 0x28, 0xbe,
- 0x7c, 0x5f, 0xf8, 0x4f, 0xc4, 0xe1, 0x84, 0xb4, 0x48, 0x98, 0x1e, 0x3a,
- 0x00, 0xbc, 0x21, 0x2e, 0x3c, 0x34, 0x1c, 0x02, 0x67, 0x64, 0xc5, 0xd8,
- 0x20, 0x44, 0x12, 0xc8, 0x3c, 0xb8, 0xa3, 0x4a, 0xb0, 0xd5, 0x22, 0xe0,
- 0xb7, 0x92, 0x0a, 0xa8, 0xc5, 0xd6, 0x74, 0xc1, 0x09, 0x90, 0xe2, 0xa6,
- 0x10, 0x40, 0x81, 0x71, 0x09, 0xaf, 0xcc, 0x14, 0x39, 0x0c, 0x92, 0x2e,
- 0x23, 0x35, 0x65, 0x11, 0x2b, 0x90, 0x64, 0x60, 0xa0, 0x03, 0xd1, 0x7c,
- 0xbe, 0x48, 0xb6, 0xfa, 0x35, 0xa1, 0xad, 0xee, 0x1b, 0xc8, 0x80, 0x74,
- 0x2e, 0x4e, 0xa9, 0x97, 0xc7, 0x44, 0x76, 0x24, 0x93, 0x6e, 0xf8, 0x77,
- 0x4e, 0x68, 0xe3, 0x92, 0x2e, 0x91, 0xaf, 0xbb, 0x9c, 0x20, 0x5c, 0x47,
- 0x22, 0xfb, 0x2e, 0xcb, 0xca, 0xa3, 0x0f, 0x97, 0xa7, 0x94, 0xc3, 0x7d,
- 0x0d, 0xe9, 0xc5, 0xd2, 0xce, 0x7b, 0x3a, 0x08, 0xc5, 0xeb, 0xdb, 0x54,
- 0x71, 0x42, 0xdf, 0x13, 0x97, 0xb4, 0x8a, 0x0e, 0x7b, 0xa3, 0x57, 0x0b,
- 0xe0, 0x74, 0x68, 0xad, 0x0b, 0x54, 0xa2, 0x60, 0x77, 0x0e, 0x76, 0x6d,
- 0x75, 0x24, 0xc0, 0x36, 0x38, 0x33, 0x5b, 0xf4, 0x84, 0xad, 0xab, 0x92,
- 0x73, 0x89, 0xb6, 0x5e, 0x50, 0xe1, 0x9e, 0xdc, 0x46, 0xac, 0x51, 0x61,
- 0x10, 0x3a, 0xc3, 0x21, 0x53, 0xeb, 0xeb, 0xd3, 0x77, 0x47, 0xed, 0x0c,
- 0x5c, 0xfc, 0x24, 0xe6, 0x7c, 0x35, 0xec, 0xea, 0xad, 0xe1, 0x30, 0x4c,
- 0x03, 0x69, 0xa0, 0xcd, 0x31, 0x6d, 0x99, 0x69, 0x5d, 0x66, 0xcd, 0xea,
- 0x66, 0x9d, 0xcf, 0x76, 0x76, 0x89, 0x46, 0xa8, 0xdc, 0x64, 0x88, 0x1a,
- 0x27, 0x36, 0x0d, 0xeb, 0x64, 0x87, 0x15, 0xf4, 0x2a, 0x6b, 0xd6, 0x55,
- 0xc1, 0x0e, 0x73, 0x9a, 0x7b, 0xd7, 0xc8, 0x32, 0xd2, 0x99, 0x45, 0x9d,
- 0xef, 0x1c, 0x10, 0xcc, 0x1c, 0x4e, 0x61, 0xe2, 0x01, 0x8d, 0xb9, 0x7b,
- 0x6a, 0xf3, 0x3e, 0x70, 0xf0, 0x58, 0x4b, 0x20, 0xbf, 0xfc, 0x9d, 0x48,
- 0x5e, 0x9d, 0x9d, 0xbd, 0x79, 0x75, 0xf1, 0xca, 0xae, 0x0d, 0x02, 0x1a,
- 0xcc, 0x05, 0x1a, 0xb2, 0xe1, 0x43, 0xa4, 0x35, 0xd1, 0x93, 0xdb, 0xbf,
- 0xff, 0x30, 0x3e, 0x3a, 0xef, 0x1e, 0xec, 0xd9, 0xf9, 0x29, 0x01, 0x12,
- 0xfd, 0xfe, 0x87, 0x57, 0xab, 0xd5, 0x42, 0x83, 0x82, 0x6f, 0xd2, 0x26,
- 0xdd, 0x0e, 0x6e, 0xf5, 0xe1, 0x2e, 0xcd, 0xef, 0xc6, 0xce, 0x6f, 0x2e,
- 0x42, 0x0e, 0xa6, 0x7e, 0xf2, 0x91, 0x0e, 0xb4, 0x9a, 0x6a, 0xfa, 0xad,
- 0xdd, 0x0d, 0x6c, 0x00, 0xb2, 0x67, 0xfb, 0x17, 0x52, 0x3a, 0x4e, 0xa6,
- 0x89, 0x64, 0xba, 0x59, 0x0b, 0x63, 0x64, 0x67, 0xd3, 0x75, 0xa3, 0x24,
- 0x0f, 0xfa, 0xa2, 0x2a, 0xee, 0xee, 0xbe, 0x04, 0xc7, 0xe3, 0xc2, 0x28,
- 0xcc, 0x05, 0x00, 0x22, 0x60, 0x08, 0x0d, 0x29, 0xd2, 0x23, 0x99, 0x2d,
- 0x73, 0xb1, 0x08, 0x4d, 0xcd, 0x32, 0x0e, 0xab, 0x00, 0x54, 0x80, 0xa7,
- 0x14, 0x6c, 0xc8, 0xef, 0xcc, 0x6d, 0x1c, 0x26, 0x47, 0x52, 0xed, 0x86,
- 0x85, 0x9b, 0x1f, 0x04, 0x0f, 0x35, 0xd6, 0x7c, 0x10, 0x76, 0x1f, 0xe7,
- 0x15, 0x1e, 0xd0, 0xc6, 0x56, 0x57, 0x04, 0x70, 0x69, 0xab, 0x79, 0x88,
- 0xa6, 0x4d, 0x9b, 0x0e, 0xeb, 0x69, 0x2b, 0x92, 0xf4, 0x34, 0x4c, 0x2f,
- 0x89, 0xbc, 0xcc, 0xa3, 0x46, 0xbb, 0x36, 0x46, 0x13, 0xfd, 0x6b, 0xef,
- 0x60, 0xb4, 0xbf, 0x15, 0x4e, 0x9e, 0x2e, 0x0b, 0x40, 0x52, 0x6c, 0x54,
- 0x8d, 0xb8, 0x61, 0x53, 0x96, 0xf7, 0xce, 0x8f, 0x59, 0x98, 0xd1, 0x4f,
- 0x57, 0x66, 0xfc, 0xe8, 0x54, 0x86, 0xa7, 0x41, 0x16, 0x08, 0x65, 0xee,
- 0x56, 0xca, 0x14, 0x0d, 0x4f, 0x2c, 0xca, 0x1b, 0x5a, 0x89, 0x21, 0xb5,
- 0xc5, 0xa2, 0x85, 0x66, 0xb3, 0x15, 0xdf, 0xe6, 0x02, 0xc0, 0x51, 0x59,
- 0x77, 0xb7, 0xa3, 0x91, 0x6b, 0x55, 0x3e, 0x7d, 0x0d, 0xcf, 0xa6, 0xbc,
- 0xc2, 0x8a, 0xb4, 0x94, 0xe0, 0x83, 0x09, 0x18, 0x2e, 0x17, 0xf0, 0xbd,
- 0x85, 0x9f, 0x99, 0x31, 0xd4, 0xf4, 0x90, 0x21, 0x0d, 0x42, 0x5a, 0xe9,
- 0x4b, 0xae, 0x55, 0x0f, 0x6c, 0xf9, 0x77, 0xe9, 0x6d, 0xbe, 0x5c, 0x2f,
- 0xf1, 0x31, 0xa2, 0x6d, 0x79, 0x4c, 0xe2, 0x09, 0xf0, 0x2a, 0x72, 0x7a,
- 0x0a, 0x88, 0x7c, 0xbb, 0x4e, 0x3c, 0x8b, 0x3e, 0x26, 0x64, 0x8c, 0x48,
- 0x1e, 0xb9, 0xe5, 0x41, 0x59, 0x40, 0xc0, 0xa1, 0xee, 0x78, 0x03, 0x8c,
- 0x7e, 0x90, 0x52, 0xce, 0x41, 0x5d, 0xda, 0x84, 0x9d, 0x08, 0x3b, 0x67,
- 0xb0, 0x04, 0xd1, 0xe1, 0xbc, 0x7c, 0xd5, 0xac, 0xca, 0xcb, 0x99, 0xbd,
- 0x37, 0xa4, 0x3f, 0xe6, 0xc5, 0xda, 0xec, 0x33, 0xfb, 0x92, 0x39, 0x08,
- 0x41, 0xbf, 0x0a, 0x3c, 0x84, 0xc8, 0xaa, 0x1f, 0xa3, 0x58, 0x42, 0x53,
- 0x50, 0x9f, 0x8d, 0x1e, 0x1d, 0x8e, 0xf6, 0x07, 0x2d, 0x83, 0x5e, 0x30,
- 0x25, 0xcc, 0xed, 0x9a, 0xe6, 0x4b, 0x5b, 0x6f, 0x3a, 0xfa, 0xcd, 0x1c,
- 0x37, 0xc8, 0x08, 0x5f, 0xa6, 0xb7, 0x38, 0xbe, 0xe8, 0xb1, 0x96, 0xc9,
- 0xcb, 0xaf, 0x4f, 0xc7, 0x17, 0x07, 0x2f, 0xce, 0x4e, 0xcf, 0xcd, 0x7f,
- 0xe9, 0xef, 0x87, 0xf8, 0xfb, 0x61, 0x60, 0x55, 0xbe, 0x95, 0x0c, 0x5a,
- 0x2d, 0xd6, 0x81, 0x86, 0x02, 0x8d, 0x86, 0x77, 0x33, 0xf1, 0x06, 0x22,
- 0xbd, 0x1c, 0x6c, 0x70, 0x6a, 0x2b, 0x1a, 0xbb, 0x47, 0xec, 0x7d, 0x4a,
- 0x93, 0xec, 0x46, 0x49, 0x98, 0xc8, 0x97, 0x37, 0xaa, 0x4d, 0x49, 0x2d,
- 0xbc, 0x56, 0xd9, 0x77, 0x7d, 0xdd, 0x5c, 0xc7, 0x2c, 0xf5, 0x39, 0x8a,
- 0x57, 0x87, 0xdc, 0xb0, 0xf6, 0xaf, 0xa6, 0x0b, 0xa3, 0xdd, 0x67, 0x94,
- 0x4b, 0x32, 0xcb, 0x38, 0xc0, 0x42, 0x3f, 0x89, 0x19, 0x26, 0xe6, 0xfa,
- 0x49, 0xc9, 0x42, 0x90, 0x60, 0x08, 0x8a, 0xd4, 0xa8, 0x8e, 0x99, 0x8d,
- 0x99, 0x63, 0x6e, 0x34, 0x71, 0xde, 0x8e, 0x22, 0x0b, 0x2a, 0x04, 0x18,
- 0x47, 0xce, 0x77, 0x62, 0xa1, 0x48, 0x1f, 0xe5, 0xf6, 0xef, 0x4f, 0x2f,
- 0x92, 0x74, 0x3e, 0x57, 0x6c, 0x00, 0x2a, 0x4b, 0x20, 0x8d, 0x75, 0x6f,
- 0xc5, 0x92, 0x2c, 0x6d, 0x62, 0xa9, 0x1b, 0xa2, 0x8f, 0x5c, 0x9c, 0x8c,
- 0xf7, 0xc8, 0x85, 0xc5, 0x49, 0x70, 0xe3, 0xf7, 0xc7, 0x83, 0x96, 0xaf,
- 0xda, 0x4f, 0x7d, 0xd9, 0x25, 0x49, 0x19, 0x57, 0x28, 0x52, 0x4f, 0x16,
- 0x3a, 0xc4, 0x19, 0x4a, 0xaa, 0xc3, 0x91, 0x6e, 0x49, 0x35, 0xd8, 0x16,
- 0x8e, 0x76, 0x2b, 0xd1, 0xa8, 0x29, 0xec, 0xe2, 0xe5, 0xaa, 0xb9, 0x0b,
- 0xeb, 0x45, 0xe1, 0xdb, 0x20, 0x1c, 0x16, 0x52, 0x3a, 0xb6, 0xc8, 0x2c,
- 0xa1, 0x65, 0x61, 0x49, 0x5b, 0x23, 0x1e, 0xf6, 0x70, 0x0b, 0xa3, 0x62,
- 0x50, 0xf3, 0x77, 0x1a, 0x13, 0x44, 0x3b, 0xc9, 0x62, 0xe9, 0xfd, 0xfc,
- 0x21, 0x6f, 0xf0, 0xc4, 0x0e, 0x6f, 0x26, 0x66, 0xeb, 0xd4, 0x94, 0x3a,
- 0x88, 0xc1, 0x94, 0x55, 0x7e, 0x49, 0x79, 0x02, 0xdd, 0xd2, 0x31, 0x37,
- 0x91, 0xc0, 0x33, 0x45, 0xca, 0x58, 0xdd, 0x6c, 0x79, 0xae, 0x84, 0x26,
- 0x48, 0xd0, 0x47, 0xda, 0x68, 0xa5, 0x26, 0x8d, 0x4e, 0x87, 0xf8, 0x4f,
- 0x13, 0xd1, 0xe3, 0x59, 0xd9, 0x33, 0xab, 0x23, 0xb9, 0xe3, 0x82, 0x40,
- 0x5a, 0xfa, 0xa3, 0x77, 0x09, 0x48, 0x38, 0xc7, 0x8d, 0x32, 0x70, 0x0e,
- 0x1b, 0x75, 0x87, 0x63, 0xc4, 0x36, 0xc3, 0x11, 0xb4, 0xea, 0x63, 0xeb,
- 0xe0, 0xf0, 0xd9, 0x68, 0xdf, 0xfc, 0x9f, 0x39, 0x14, 0xd1, 0x8f, 0x00,
- 0x17, 0xe5, 0x60, 0x81, 0xec, 0x93, 0xd9, 0x6d, 0x97, 0x24, 0x59, 0x00,
- 0x95, 0xd5, 0xe5, 0xd6, 0xc6, 0x1a, 0xd6, 0x96, 0x48, 0xa1, 0x83, 0xb4,
- 0xe2, 0x24, 0x9d, 0xc9, 0x4f, 0xf4, 0x8e, 0x57, 0xeb, 0x45, 0x24, 0xad,
- 0xcf, 0x73, 0x23, 0x93, 0x76, 0xb6, 0xb8, 0x16, 0x27, 0xf2, 0xd7, 0xc4,
- 0x9b, 0xb8, 0x8e, 0x6f, 0xd4, 0x4a, 0x8a, 0x7a, 0xde, 0xf2, 0x09, 0xbe,
- 0x16, 0x93, 0x0d, 0x9c, 0x79, 0x68, 0x2e, 0xc3, 0xcb, 0x72, 0x3e, 0xaf,
- 0xb3, 0xa6, 0x2b, 0x80, 0x5e, 0xcb, 0x23, 0x7b, 0xe7, 0x00, 0x38, 0x04,
- 0xa7, 0xd2, 0x8a, 0x9b, 0xa4, 0x0d, 0xcb, 0x93, 0x48, 0x16, 0x1a, 0xb3,
- 0x2d, 0x1e, 0x6e, 0x14, 0x29, 0x32, 0xf0, 0x7f, 0xaf, 0x19, 0x22, 0x5c,
- 0x15, 0xaf, 0x60, 0x2f, 0x28, 0xb7, 0x62, 0x1c, 0x17, 0x91, 0x74, 0x5d,
- 0x54, 0x36, 0xbd, 0x12, 0x9f, 0xf2, 0xd5, 0x8a, 0xcc, 0x1b, 0x46, 0x38,
- 0x03, 0xd9, 0xda, 0x00, 0x1a, 0xe2, 0xb8, 0x20, 0x65, 0xcd, 0x16, 0x34,
- 0x4a, 0xf2, 0x54, 0x64, 0xfe, 0x24, 0x9b, 0x87, 0x41, 0x20, 0x4e, 0x6a,
- 0xf4, 0x61, 0x6d, 0xa4, 0x46, 0x77, 0x46, 0x10, 0x36, 0x45, 0xaa, 0x2c,
- 0x66, 0xee, 0x01, 0x3e, 0x48, 0xf1, 0xdf, 0x20, 0x72, 0xff, 0x5d, 0x71,
- 0x96, 0xf5, 0xc3, 0x8d, 0x8f, 0xff, 0x9f, 0x23, 0x07, 0x42, 0x64, 0x51,
- 0x7e, 0xb8, 0xdc, 0x25, 0x56, 0x3c, 0x64, 0x6e, 0xe1, 0xf0, 0xb5, 0x39,
- 0xaf, 0x2d, 0x4c, 0xc5, 0xa5, 0x9a, 0x94, 0x9d, 0x72, 0x0c, 0xd8, 0x3d,
- 0xa4, 0x49, 0x40, 0x1b, 0xda, 0xa3, 0xba, 0xff, 0x40, 0x34, 0x30, 0x46,
- 0x25, 0xfb, 0x17, 0x65, 0x8d, 0xb8, 0x1d, 0x8d, 0x54, 0xcd, 0xf9, 0x35,
- 0x27, 0xa2, 0x2c, 0xee, 0xe5, 0x05, 0xa9, 0x8c, 0xac, 0xc0, 0x04, 0x25,
- 0x19, 0x5a, 0x07, 0xcb, 0x68, 0x27, 0xeb, 0xe6, 0x37, 0x8c, 0x9d, 0x54,
- 0x44, 0xbf, 0x80, 0xb1, 0xf3, 0x88, 0x7a, 0xca, 0x44, 0x4d, 0x58, 0x9d,
- 0xc3, 0xbf, 0x19, 0x2b, 0xfb, 0xa5, 0xba, 0x29, 0xfa, 0x80, 0x01, 0xd4,
- 0xa9, 0x41, 0x45, 0x14, 0x30, 0xc2, 0x40, 0x1b, 0x16, 0x9f, 0x46, 0xb7,
- 0x9a, 0x61, 0x75, 0x52, 0xe8, 0x32, 0x00, 0x02, 0xed, 0xde, 0xf9, 0x39,
- 0x40, 0x6f, 0xbc, 0xf2, 0x6f, 0x5b, 0x3b, 0x39, 0xa2, 0x28, 0xd5, 0x82,
- 0x47, 0xa8, 0x39, 0xb1, 0x52, 0xc6, 0x50, 0xa3, 0x21, 0x0f, 0x64, 0x6e,
- 0x5e, 0x0c, 0xb9, 0xb8, 0x5a, 0x9f, 0x45, 0x30, 0x8d, 0x50, 0xdb, 0x84,
- 0x1c, 0xf9, 0x88, 0xd8, 0x0c, 0x6f, 0x24, 0xb1, 0x02, 0x6a, 0x2d, 0x3e,
- 0x1b, 0x73, 0xa3, 0xb3, 0x2f, 0x12, 0x0e, 0x44, 0xfe, 0x38, 0x39, 0xc8,
- 0x3e, 0x19, 0xdd, 0xb9, 0x18, 0xd0, 0x4f, 0x51, 0x88, 0x6a, 0x2f, 0x19,
- 0xfb, 0x36, 0x9a, 0x8c, 0x83, 0x16, 0x59, 0x44, 0x97, 0xf5, 0x9e, 0x95,
- 0x47, 0x3d, 0x37, 0xca, 0xfb, 0xac, 0x91, 0xd4, 0x11, 0x9e, 0xbc, 0xd6,
- 0x66, 0xa1, 0xbe, 0xeb, 0x78, 0xde, 0x19, 0x0e, 0x70, 0x71, 0x59, 0xd3,
- 0xae, 0xd6, 0x97, 0x18, 0x2e, 0x63, 0x64, 0x91, 0x2f, 0x74, 0x60, 0xae,
- 0xc1, 0x96, 0xfa, 0x65, 0x79, 0x05, 0xf1, 0xd4, 0x05, 0x9d, 0x0e, 0xb9,
- 0x89, 0x9a, 0x59, 0x8c, 0x26, 0x59, 0xf7, 0xd5, 0x0b, 0x29, 0xd0, 0x81,
- 0x7e, 0x3a, 0x04, 0x81, 0xa0, 0x21, 0x7a, 0xef, 0xbe, 0xa6, 0x89, 0x2b,
- 0x91, 0xaa, 0x42, 0xaf, 0xaa, 0x94, 0x52, 0x68, 0xaa, 0x99, 0x7a, 0x46,
- 0x74, 0xa2, 0x86, 0x0b, 0x8b, 0x5d, 0x74, 0x93, 0x82, 0xd2, 0xec, 0xf8,
- 0xb1, 0xda, 0x07, 0x2f, 0xff, 0x71, 0x38, 0x71, 0xe4, 0xec, 0xe0, 0x73,
- 0xa2, 0x69, 0x4a, 0xf2, 0x10, 0xd1, 0xbc, 0x11, 0x2c, 0xdb, 0x8d, 0x57,
- 0x5c, 0x0a, 0x44, 0x1a, 0xbb, 0x29, 0xbc, 0x85, 0x37, 0x57, 0xe5, 0x22,
- 0x8b, 0x85, 0x48, 0xbc, 0x92, 0x5f, 0x80, 0xbb, 0x50, 0x5a, 0x2f, 0xbc,
- 0xcd, 0xd7, 0xc8, 0x18, 0x6e, 0x85, 0x4e, 0x8c, 0x7e, 0x97, 0xa5, 0x54,
- 0x70, 0x64, 0x93, 0xe6, 0xaf, 0x07, 0x41, 0x1a, 0xbb, 0xb9, 0xe7, 0x93,
- 0xb2, 0xb6, 0xf4, 0x42, 0x85, 0xb5, 0x24, 0x41, 0x6e, 0xd2, 0x0a, 0x8c,
- 0x59, 0x50, 0xb2, 0x14, 0x40, 0xd4, 0xcf, 0x19, 0x24, 0x55, 0xb0, 0x5b,
- 0xef, 0x90, 0x53, 0x31, 0xba, 0x21, 0x13, 0xa3, 0x00, 0x90, 0x9b, 0x16,
- 0xb4, 0x43, 0x43, 0x0a, 0xfe, 0xd5, 0x15, 0xa0, 0x70, 0xa5, 0x62, 0xdd,
- 0xdc, 0xc3, 0x2b, 0x92, 0xe9, 0x79, 0xb3, 0x4e, 0x9b, 0x87, 0x25, 0x6c,
- 0xf7, 0xf1, 0x26, 0x66, 0x4e, 0x7e, 0x3e, 0x6a, 0x1f, 0x66, 0x43, 0x4f,
- 0x14, 0xd1, 0x3f, 0xc8, 0x97, 0x74, 0xd7, 0xfe, 0xc7, 0x3d, 0x8c, 0xe9,
- 0x0c, 0x88, 0x7e, 0x57, 0x6d, 0x48, 0x28, 0xd4, 0xe4, 0x8a, 0x3c, 0xd1,
- 0xca, 0x37, 0x1e, 0x53, 0xc5, 0xfd, 0x71, 0x24, 0xd0, 0x8f, 0xe8, 0x98,
- 0x99, 0xce, 0xe2, 0xce, 0x0d, 0xe8, 0x95, 0xcc, 0x6a, 0x86, 0xb7, 0x07,
- 0x97, 0x67, 0xbf, 0x10, 0x64, 0x2d, 0x6d, 0x8d, 0x8d, 0x0a, 0xce, 0xdf,
- 0x7c, 0xb1, 0xa5, 0xe8, 0xa3, 0x16, 0x4e, 0x49, 0xb8, 0x88, 0x14, 0x6d,
- 0x69, 0xfd, 0x87, 0xfa, 0xea, 0xe9, 0xfa, 0x77, 0x87, 0x23, 0x28, 0xee,
- 0x83, 0x2f, 0xbe, 0x7d, 0x75, 0xf2, 0xe1, 0xe8, 0xe0, 0x8f, 0x09, 0xfd,
- 0xeb, 0x90, 0xff, 0x75, 0xb8, 0x15, 0x3b, 0x2e, 0xc3, 0xa8, 0xb6, 0xbf,
- 0xd8, 0x4e, 0xea, 0xbb, 0xe5, 0xa4, 0x5c, 0xd8, 0x03, 0x93, 0xad, 0xd0,
- 0x40, 0xda, 0x40, 0xa4, 0xb8, 0x2d, 0xdd, 0x16, 0x57, 0x79, 0x97, 0x65,
- 0xd7, 0x92, 0x74, 0xa8, 0xec, 0x06, 0x11, 0x3c, 0xbf, 0x96, 0xb8, 0x41,
- 0xa5, 0xb5, 0xf2, 0x30, 0x89, 0xe5, 0xf5, 0x25, 0x82, 0x42, 0x28, 0xe9,
- 0xc5, 0xae, 0x23, 0x9c, 0x83, 0xc5, 0x8b, 0x83, 0x74, 0xf6, 0x19, 0x46,
- 0x98, 0x6d, 0x66, 0xb8, 0x13, 0xae, 0x94, 0xc5, 0x9d, 0xe6, 0xd7, 0xc5,
- 0x40, 0x20, 0x34, 0x8e, 0x3b, 0xc1, 0x1f, 0xd8, 0xae, 0x32, 0xcb, 0x7a,
- 0xb1, 0x6a, 0x7a, 0xb7, 0x3b, 0xdc, 0x44, 0x74, 0x17, 0x0f, 0x9a, 0xeb,
- 0x84, 0xd0, 0xc0, 0x86, 0x9a, 0x9e, 0xe1, 0x5c, 0x1d, 0x64, 0x8c, 0xce,
- 0x48, 0xb3, 0x56, 0x7f, 0x46, 0xe2, 0x81, 0x3f, 0x5b, 0x18, 0x49, 0xc1,
- 0x61, 0x4c, 0x5a, 0x21, 0x41, 0xf6, 0x35, 0x87, 0xd0, 0x2b, 0x0c, 0x04,
- 0x63, 0x36, 0x07, 0xe9, 0x26, 0xcb, 0x20, 0x3b, 0xab, 0x30, 0x9a, 0xe4,
- 0x8e, 0x61, 0xef, 0xbb, 0x3e, 0x26, 0x88, 0x1e, 0x9f, 0xb8, 0x25, 0x1a,
- 0x1b, 0x51, 0xed, 0x89, 0x15, 0x5c, 0x5c, 0xb5, 0x04, 0x8d, 0xaa, 0x7c,
- 0x5a, 0xe0, 0xcc, 0xf1, 0x59, 0x91, 0x1c, 0x3c, 0x0c, 0x93, 0x29, 0x65,
- 0x6f, 0x2e, 0xd2, 0x00, 0x89, 0x06, 0x77, 0x4d, 0xe1, 0x30, 0x28, 0xd0,
- 0x6f, 0x09, 0xdf, 0x7c, 0xff, 0x6e, 0x91, 0xed, 0xaa, 0x61, 0xa0, 0xc2,
- 0x6e, 0xef, 0x5d, 0xf9, 0x0f, 0x33, 0xef, 0x54, 0x3e, 0x12, 0x93, 0x99,
- 0x22, 0x02, 0x7b, 0x67, 0xee, 0xf8, 0x0b, 0x97, 0x89, 0xfb, 0x5c, 0xa3,
- 0x65, 0x1b, 0x23, 0x08, 0x4c, 0x7a, 0x19, 0x52, 0xb5, 0x03, 0xd2, 0x11,
- 0xed, 0x22, 0x90, 0xd0, 0x1e, 0xde, 0x8c, 0x21, 0xe5, 0x52, 0x32, 0x74,
- 0x2c, 0x89, 0x89, 0xd8, 0xe9, 0xb2, 0xf0, 0xae, 0x4e, 0xd5, 0x23, 0x88,
- 0x8e, 0x6e, 0xb3, 0x6a, 0x4a, 0x50, 0x13, 0x53, 0xa3, 0x97, 0x82, 0x9f,
- 0xce, 0xc5, 0x3d, 0x45, 0xb9, 0x54, 0x92, 0x15, 0xdf, 0xc6, 0x85, 0x81,
- 0xf8, 0x55, 0x3a, 0xeb, 0x25, 0x31, 0xe4, 0x3e, 0x4c, 0x0d, 0x61, 0x8c,
- 0x2c, 0x04, 0x9e, 0x0a, 0xc8, 0x36, 0xfb, 0xd0, 0x22, 0x33, 0x84, 0x13,
- 0x82, 0x8c, 0x3d, 0xec, 0xb0, 0xbe, 0xe8, 0x9d, 0xa6, 0x90, 0x0b, 0xe6,
- 0xc2, 0x80, 0x66, 0x2e, 0x3a, 0x44, 0x50, 0x01, 0xc0, 0x85, 0xea, 0x4f,
- 0x4f, 0xb4, 0xa7, 0x03, 0xfc, 0x0e, 0x44, 0x4b, 0x8a, 0x3b, 0x45, 0x93,
- 0xda, 0x81, 0xd8, 0x64, 0xe5, 0x50, 0x31, 0x07, 0xa1, 0x79, 0x85, 0xc5,
- 0xc8, 0x8b, 0xf2, 0x86, 0x62, 0x30, 0x6d, 0x04, 0x50, 0x05, 0xfb, 0xe1,
- 0x9c, 0x3a, 0xe6, 0xcb, 0x43, 0xd2, 0x95, 0xf8, 0xb3, 0x23, 0x8d, 0xd6,
- 0x46, 0x29, 0x40, 0xcb, 0x69, 0xbb, 0x95, 0x48, 0xa9, 0xcb, 0xa0, 0x68,
- 0xd8, 0x99, 0xcc, 0xfa, 0x85, 0x03, 0xe0, 0x8a, 0x09, 0x36, 0xac, 0x78,
- 0x52, 0x36, 0x57, 0x5e, 0x1e, 0x2a, 0x81, 0xfa, 0x91, 0x9f, 0x67, 0xbe,
- 0x6e, 0x60, 0x04, 0xa8, 0x19, 0xd8, 0x48, 0xaa, 0xb1, 0x38, 0x8b, 0x82,
- 0xac, 0x87, 0x4f, 0x04, 0xfe, 0x46, 0x4b, 0xb4, 0x00, 0xb6, 0x94, 0x40,
- 0x5b, 0x20, 0x53, 0x9c, 0xe8, 0xd2, 0x18, 0xc0, 0xc0, 0x17, 0x34, 0xdf,
- 0xa4, 0x44, 0xa5, 0xba, 0x26, 0x2c, 0x39, 0xa4, 0xa4, 0x9a, 0x8d, 0x0d,
- 0x20, 0x27, 0x00, 0x92, 0x54, 0xf8, 0x47, 0xba, 0xc3, 0xf0, 0x37, 0x0e,
- 0xb8, 0x89, 0x71, 0x31, 0xc8, 0x6a, 0x9f, 0xc8, 0xd1, 0xd4, 0xb8, 0xbf,
- 0x44, 0x0f, 0x11, 0xa7, 0x88, 0xd5, 0x5f, 0x7b, 0x2e, 0xec, 0xbf, 0x6c,
- 0xd4, 0x04, 0x46, 0x5e, 0x55, 0x33, 0x80, 0x2e, 0x20, 0x88, 0x6d, 0x62,
- 0x3c, 0xb6, 0x3b, 0x64, 0x5c, 0xa9, 0x8b, 0xbf, 0xc5, 0xe2, 0xbc, 0xeb,
- 0xd5, 0x0c, 0x6a, 0x9f, 0xbe, 0x03, 0x45, 0xc9, 0x03, 0xc2, 0xac, 0x4b,
- 0xb9, 0x8d, 0x18, 0x9e, 0x98, 0x8c, 0xe3, 0x32, 0x31, 0x90, 0x9c, 0xee,
- 0xfd, 0xf7, 0x03, 0x2c, 0x2d, 0xa4, 0x36, 0xf6, 0xe1, 0x2c, 0x7d, 0xde,
- 0x60, 0x5e, 0x84, 0xf0, 0x1d, 0x1a, 0xda, 0xaf, 0x63, 0x81, 0x4a, 0x15,
- 0xe0, 0x86, 0xc3, 0xff, 0x6d, 0x5d, 0x4c, 0x3b, 0x32, 0xaa, 0x1c, 0x78,
- 0x78, 0x9c, 0x12, 0x95, 0xb5, 0x12, 0xa2, 0x4b, 0xf4, 0xf8, 0x90, 0xc0,
- 0xdf, 0x50, 0x45, 0x28, 0x55, 0x6f, 0x90, 0x78, 0x5b, 0x78, 0x25, 0xb4,
- 0x57, 0xb9, 0x39, 0xa1, 0x6a, 0x7a, 0x05, 0x24, 0x01, 0xf8, 0x91, 0x32,
- 0x75, 0x8e, 0x06, 0x8a, 0xb0, 0x78, 0xfe, 0x31, 0xac, 0xe8, 0x62, 0x39,
- 0xb1, 0x23, 0x42, 0x0b, 0x29, 0x0b, 0x65, 0xd2, 0x7d, 0xf3, 0x0c, 0x33,
- 0xbb, 0xae, 0x68, 0xcf, 0xb3, 0x45, 0xed, 0x04, 0xa4, 0x7d, 0xc7, 0x49,
- 0x4a, 0x18, 0xe1, 0x05, 0x7c, 0xb2, 0x2c, 0x8a, 0xf3, 0xe8, 0x0d, 0xc7,
- 0x4c, 0x8c, 0x9a, 0x23, 0x93, 0x21, 0xbb, 0x92, 0xe8, 0xe4, 0x4e, 0x31,
- 0x66, 0x64, 0x84, 0x2e, 0xcc, 0x4c, 0x20, 0x79, 0x4a, 0xbb, 0x6f, 0x02,
- 0x60, 0xa3, 0x5b, 0x95, 0x2b, 0xde, 0x3a, 0x93, 0x0a, 0x39, 0x32, 0xa8,
- 0x7c, 0x1a, 0x7d, 0x40, 0x28, 0xfe, 0x35, 0x1c, 0xce, 0x9b, 0x20, 0x5d,
- 0xcb, 0x3b, 0xeb, 0x36, 0x09, 0x2c, 0xe6, 0x82, 0xd1, 0xf3, 0x4e, 0xd1,
- 0xf8, 0xae, 0xa9, 0x86, 0x27, 0x39, 0x79, 0xcb, 0x5e, 0xbc, 0xd7, 0xe7,
- 0xf4, 0xb7, 0xdc, 0x22, 0x14, 0xa1, 0x0e, 0x17, 0x8d, 0x3d, 0x38, 0x41,
- 0xf6, 0xdd, 0xb7, 0xdd, 0x32, 0xcc, 0x9d, 0xd3, 0xf1, 0xde, 0xa3, 0xe7,
- 0xfb, 0xbb, 0x91, 0x9c, 0x65, 0xf3, 0x0d, 0x1f, 0xa7, 0xf0, 0xf1, 0xfe,
- 0x68, 0x7f, 0xb7, 0x33, 0x1b, 0xda, 0xee, 0x0d, 0x00, 0x2a, 0x8a, 0xae,
- 0x6e, 0x85, 0x06, 0x92, 0x91, 0x5d, 0xb1, 0x96, 0xe4, 0x4d, 0xfb, 0xc5,
- 0xa4, 0xe7, 0xd9, 0xb5, 0x21, 0xb5, 0x68, 0xfe, 0xda, 0x49, 0x5e, 0x8b,
- 0x61, 0x43, 0x92, 0x4c, 0x65, 0x0b, 0x55, 0x6b, 0xb7, 0x73, 0x82, 0xf1,
- 0x08, 0x09, 0x4b, 0xce, 0x75, 0x88, 0x44, 0x5b, 0x6a, 0x33, 0xa9, 0x0a,
- 0x89, 0x79, 0x88, 0xe9, 0xff, 0xea, 0xce, 0x96, 0x57, 0x2d, 0xb4, 0xc7,
- 0x67, 0xfe, 0x99, 0x92, 0xa6, 0x3f, 0x4c, 0xeb, 0x69, 0x9e, 0xb3, 0x3d,
- 0xd3, 0x63, 0xc6, 0x68, 0xc6, 0x23, 0x30, 0xe4, 0x50, 0x49, 0x9d, 0xa7,
- 0x1c, 0xaa, 0x75, 0x40, 0xa5, 0xc1, 0xb0, 0xa4, 0xac, 0x1a, 0x12, 0xdb,
- 0x34, 0xae, 0xd8, 0xf0, 0xd4, 0xac, 0x45, 0xb0, 0x95, 0xad, 0x7e, 0x59,
- 0x77, 0xd5, 0x28, 0x73, 0x17, 0x18, 0xae, 0x6c, 0x55, 0x85, 0xf5, 0x7d,
- 0x94, 0x9b, 0x89, 0x8c, 0xe7, 0xb4, 0xa9, 0x4b, 0xda, 0xa7, 0xd8, 0xa6,
- 0xc2, 0x43, 0x01, 0x74, 0x5a, 0x6b, 0x40, 0xd9, 0xbb, 0x2f, 0xf9, 0x40,
- 0x5f, 0x0e, 0x5c, 0xba, 0x4e, 0xcb, 0x00, 0x4a, 0x23, 0x8a, 0x20, 0x83,
- 0xeb, 0x27, 0x08, 0x8f, 0x73, 0x25, 0x15, 0x2d, 0x44, 0x5a, 0x4c, 0xc0,
- 0xed, 0xc1, 0x39, 0x22, 0xd2, 0x60, 0x82, 0x60, 0x88, 0xec, 0x6e, 0x45,
- 0xc0, 0xa5, 0x06, 0x66, 0x7d, 0x80, 0xee, 0x04, 0x05, 0x15, 0xd9, 0x0d,
- 0x71, 0xe3, 0x5a, 0x54, 0x89, 0xaa, 0xca, 0xc9, 0x6f, 0x64, 0x93, 0x0b,
- 0x58, 0x1d, 0xa3, 0x2c, 0x4c, 0x12, 0xce, 0xb3, 0x48, 0x6d, 0xf7, 0x14,
- 0xb7, 0xb3, 0xb6, 0x39, 0xdb, 0x05, 0xe0, 0x27, 0x09, 0x5f, 0x2e, 0xd8,
- 0x1b, 0xf4, 0x07, 0xc0, 0xe4, 0x14, 0x74, 0xb6, 0x69, 0xa7, 0x7f, 0x90,
- 0xd6, 0xce, 0xf9, 0xcd, 0x0c, 0x6f, 0x56, 0xb6, 0x0c, 0xcc, 0xba, 0x3f,
- 0x5c, 0xb2, 0x77, 0x3b, 0xbc, 0xb9, 0xb9, 0x19, 0xd2, 0x85, 0xa3, 0x9c,
- 0x1c, 0x29, 0xb3, 0x18, 0xb5, 0xc0, 0xa3, 0x61, 0x57, 0xb2, 0xc9, 0x49,
- 0x4c, 0x24, 0x8c, 0x6f, 0x78, 0x29, 0x52, 0xd5, 0x24, 0x6f, 0x50, 0xcf,
- 0x27, 0xc4, 0x85, 0xd7, 0xa4, 0xae, 0x4e, 0xa6, 0x03, 0x0d, 0x47, 0x1d,
- 0x51, 0x91, 0xdb, 0xe7, 0xd6, 0x42, 0xf0, 0x53, 0xd3, 0x26, 0xa3, 0xfa,
- 0x75, 0xf3, 0x89, 0xe5, 0x8b, 0x64, 0xf8, 0x75, 0xb2, 0xf5, 0x5a, 0x56,
- 0x7b, 0x61, 0x9e, 0x78, 0xd1, 0x5e, 0x0b, 0x3f, 0x1c, 0x06, 0x73, 0xcc,
- 0xbb, 0x5b, 0x0f, 0x83, 0x4f, 0xec, 0xbd, 0xc8, 0xe8, 0xae, 0xe2, 0xb2,
- 0x66, 0x9a, 0x88, 0xb3, 0x8e, 0xd2, 0x5e, 0xd8, 0xad, 0xc5, 0x98, 0x67,
- 0x58, 0x7a, 0x5a, 0x4b, 0x27, 0x9e, 0x09, 0xdf, 0xf0, 0x0d, 0xd7, 0xb1,
- 0x4a, 0x6f, 0xee, 0xbf, 0xe3, 0xde, 0x4d, 0x14, 0xea, 0x5d, 0xc0, 0xd5,
- 0xe5, 0xe1, 0x11, 0x93, 0x7f, 0xc7, 0x26, 0x61, 0x46, 0x66, 0x2a, 0x7d,
- 0x30, 0x5c, 0x31, 0x15, 0x1b, 0xa6, 0xa2, 0x97, 0x7e, 0xb9, 0xa1, 0x0e,
- 0xcd, 0x39, 0x85, 0xdd, 0x2a, 0x5a, 0x91, 0x8f, 0x0e, 0xac, 0x29, 0x96,
- 0x65, 0xa9, 0xea, 0x01, 0x8c, 0xc6, 0xad, 0x6e, 0x60, 0x2f, 0xa7, 0xd0,
- 0x32, 0x3b, 0xf6, 0xbc, 0x65, 0x0a, 0x02, 0x6e, 0x2c, 0xbd, 0x93, 0xe3,
- 0x1c, 0x74, 0x55, 0x15, 0xa0, 0x4c, 0x5c, 0x56, 0x59, 0x45, 0x84, 0x8e,
- 0x2c, 0xf8, 0xa1, 0xa6, 0x30, 0xc7, 0x84, 0xb5, 0x61, 0x28, 0xaf, 0xbf,
- 0x3a, 0x46, 0x36, 0xb7, 0x61, 0xa4, 0x85, 0x80, 0x38, 0xf0, 0xfc, 0xb9,
- 0xe5, 0x91, 0x35, 0x6a, 0x2f, 0x89, 0x95, 0x70, 0x49, 0x64, 0x9a, 0xc4,
- 0x00, 0x50, 0xd5, 0xe6, 0x48, 0xd4, 0xb8, 0x90, 0xa4, 0x55, 0xb1, 0x11,
- 0xe4, 0xf2, 0xda, 0xf0, 0x6e, 0xea, 0x4a, 0x04, 0xa2, 0xfb, 0x85, 0xaf,
- 0x2b, 0xd8, 0x48, 0x5a, 0x4b, 0x04, 0x17, 0xca, 0x5a, 0x90, 0x3e, 0xee,
- 0xe8, 0x95, 0x5b, 0x48, 0x65, 0x61, 0xde, 0x9b, 0x7c, 0x3e, 0xde, 0xe1,
- 0x0d, 0x67, 0xd2, 0xf1, 0xa4, 0xd8, 0xad, 0xcb, 0x7c, 0x8f, 0x01, 0xd7,
- 0x62, 0x91, 0x2f, 0x2d, 0xe6, 0xb9, 0xb5, 0x89, 0x91, 0x86, 0x19, 0xff,
- 0x27, 0x49, 0x28, 0xc8, 0x5d, 0xc3, 0xf3, 0x48, 0xf3, 0xd0, 0x7a, 0x49,
- 0x7f, 0x34, 0x85, 0xf2, 0x93, 0x84, 0xd8, 0xf8, 0x70, 0x64, 0xff, 0x7d,
- 0x41, 0xda, 0xd2, 0x97, 0xe2, 0xa8, 0xa2, 0x3c, 0xf8, 0xda, 0xb3, 0x46,
- 0xa4, 0x58, 0x16, 0x73, 0xd7, 0x1a, 0x21, 0xda, 0x86, 0xf8, 0x70, 0x1c,
- 0xe1, 0xf4, 0x76, 0x8f, 0x29, 0x8e, 0x60, 0xe7, 0x6b, 0x6e, 0x23, 0xf6,
- 0x6f, 0xdd, 0xcd, 0xfb, 0xe2, 0xfe, 0xdd, 0xfb, 0xa9, 0xdb, 0xb7, 0x79,
- 0xf7, 0xb8, 0x7d, 0x83, 0x26, 0xcb, 0x7e, 0xe1, 0x39, 0xe8, 0x90, 0xec,
- 0xc1, 0xd6, 0x97, 0x75, 0xd4, 0xb5, 0xb9, 0x8c, 0x67, 0x64, 0x7e, 0xf1,
- 0x4b, 0x9d, 0x3a, 0x88, 0x11, 0x16, 0x3d, 0x4d, 0x3e, 0x3e, 0x1c, 0x87,
- 0x15, 0x71, 0xf6, 0x3e, 0xf6, 0xa2, 0xe8, 0xe1, 0x18, 0x41, 0xf0, 0x8b,
- 0xa7, 0x0d, 0x13, 0xf3, 0x04, 0x69, 0x9e, 0xc3, 0xf8, 0x70, 0x5a, 0x08,
- 0x28, 0x8a, 0x78, 0xb0, 0xbe, 0x2f, 0x55, 0xf0, 0x3f, 0x7c, 0x71, 0x48,
- 0x2b, 0x72, 0x2d, 0x03, 0xfd, 0x8c, 0x10, 0x0e, 0xc1, 0xec, 0x84, 0x7e,
- 0x43, 0xbd, 0x3e, 0x02, 0x03, 0xc9, 0x2d, 0xa4, 0x54, 0x25, 0xd8, 0x1d,
- 0xb4, 0x37, 0x8c, 0xa0, 0xee, 0x20, 0x0c, 0xf4, 0x94, 0xf3, 0xde, 0x33,
- 0xd6, 0xb3, 0xa3, 0xb6, 0x0c, 0xd1, 0xb3, 0xfb, 0x3f, 0x69, 0x7d, 0xa0,
- 0x67, 0x47, 0x06, 0x14, 0x61, 0xa8, 0x19, 0xc3, 0x1b, 0x49, 0xf7, 0x09,
- 0xaa, 0x15, 0x48, 0xc4, 0xf7, 0xcc, 0x0e, 0xe8, 0x03, 0xa4, 0x14, 0x51,
- 0xbc, 0x75, 0x21, 0x70, 0xa1, 0x0c, 0xf3, 0xfe, 0x85, 0x53, 0x66, 0x86,
- 0xb4, 0xc8, 0xa1, 0x90, 0xec, 0x08, 0x44, 0xb8, 0x81, 0x52, 0x2d, 0x65,
- 0xc6, 0x89, 0x32, 0x20, 0xbf, 0x7e, 0xd1, 0xa8, 0xf8, 0xaa, 0x22, 0xdb,
- 0x5b, 0x92, 0xf2, 0xe0, 0xf3, 0x96, 0xa4, 0x74, 0xef, 0x6c, 0x92, 0x91,
- 0xe3, 0x8c, 0x13, 0xd2, 0x7c, 0x07, 0x26, 0x5e, 0xe2, 0x2a, 0x6b, 0x6a,
- 0xe4, 0x11, 0xa6, 0x36, 0xd1, 0xab, 0x41, 0xd1, 0x31, 0xe7, 0x16, 0x79,
- 0xb5, 0x93, 0x48, 0x30, 0xa7, 0xa8, 0x99, 0x58, 0x47, 0xc9, 0xa4, 0x2a,
- 0x6f, 0x6a, 0xa8, 0xa3, 0x6a, 0xa0, 0xa6, 0x9c, 0x02, 0x7b, 0x15, 0x94,
- 0x44, 0x9b, 0xed, 0x5d, 0x58, 0x1c, 0xd8, 0xaf, 0x2f, 0xde, 0x9d, 0x70,
- 0x63, 0x07, 0xae, 0xce, 0xa5, 0x22, 0x24, 0x99, 0xf3, 0x7a, 0xb2, 0x34,
- 0x96, 0xb4, 0xd1, 0x4e, 0x1a, 0x66, 0x65, 0xca, 0x1d, 0x83, 0x12, 0x62,
- 0x84, 0xf4, 0x24, 0x20, 0xbc, 0x8a, 0xc5, 0x67, 0x44, 0x91, 0xf4, 0x70,
- 0xa8, 0x3c, 0x0d, 0xf8, 0xa7, 0xeb, 0xba, 0xc6, 0x4e, 0x46, 0x46, 0x0c,
- 0xf4, 0xa8, 0xb7, 0x74, 0x14, 0xf4, 0x48, 0x70, 0xfb, 0x3c, 0x35, 0x0d,
- 0xfd, 0xc7, 0x00, 0x29, 0x6d, 0x3d, 0x34, 0xa4, 0x75, 0xd9, 0xe6, 0x23,
- 0x40, 0xcd, 0x4a, 0xdb, 0x9a, 0x56, 0x50, 0x56, 0x6b, 0x35, 0x2f, 0xd7,
- 0x46, 0xc4, 0x57, 0xbe, 0x48, 0x0f, 0x21, 0x7d, 0x48, 0x02, 0x49, 0xeb,
- 0x8a, 0x9c, 0x79, 0xac, 0x55, 0x0f, 0x22, 0x39, 0xf7, 0xa2, 0x90, 0xa8,
- 0x37, 0xdf, 0x86, 0x36, 0x5b, 0xa6, 0x9e, 0xf6, 0x4b, 0xa0, 0xb1, 0xbd,
- 0x1b, 0x1c, 0x51, 0x12, 0x19, 0xa1, 0x0a, 0xc5, 0x14, 0x38, 0x4d, 0x43,
- 0x6c, 0x66, 0x74, 0xb4, 0x03, 0x4b, 0xe1, 0x1c, 0x0f, 0xd4, 0xbb, 0xa8,
- 0x82, 0xed, 0x9a, 0x89, 0xd4, 0xae, 0x7f, 0x84, 0xda, 0xcb, 0x00, 0xea,
- 0x02, 0x34, 0x17, 0x1a, 0x48, 0x94, 0x6d, 0x7f, 0x57, 0xe8, 0x7f, 0x14,
- 0xff, 0xd7, 0xc0, 0x0b, 0xaf, 0xe5, 0xe4, 0x81, 0xf2, 0xe3, 0x85, 0x2e,
- 0xb2, 0xbe, 0xcc, 0xaa, 0x4b, 0x2e, 0x43, 0x60, 0x48, 0xd8, 0x28, 0x8a,
- 0x45, 0x9a, 0x78, 0x28, 0x6d, 0x49, 0xf2, 0xdf, 0x86, 0x2c, 0x51, 0xe1,
- 0xaa, 0x5a, 0x53, 0xfd, 0x8b, 0xf8, 0xd3, 0xb7, 0x87, 0x33, 0x66, 0x2b,
- 0xb3, 0xb4, 0x30, 0x3b, 0x61, 0x6e, 0x6c, 0x98, 0x1f, 0xb3, 0x58, 0x7c,
- 0xb1, 0x28, 0xd7, 0xf5, 0xdd, 0x76, 0x22, 0xbd, 0x7c, 0xa4, 0xfd, 0x45,
- 0x23, 0xb9, 0x3c, 0x74, 0x96, 0xe6, 0x7c, 0xd7, 0xc5, 0x27, 0x15, 0x8a,
- 0x54, 0xa9, 0x50, 0xb3, 0xa3, 0xb6, 0x33, 0xdc, 0xb6, 0xf7, 0xb1, 0xff,
- 0xe6, 0x8f, 0x1d, 0xdd, 0x65, 0xb8, 0xff, 0xd9, 0x70, 0x7e, 0x98, 0xe5,
- 0xec, 0x42, 0x32, 0x31, 0xb3, 0x39, 0x69, 0x45, 0xea, 0xec, 0x80, 0x24,
- 0x3c, 0x18, 0x86, 0x57, 0x43, 0x0e, 0x2e, 0x75, 0x03, 0xfc, 0xa6, 0xa7,
- 0xf8, 0xc4, 0x49, 0x1e, 0x0e, 0x28, 0x39, 0xe4, 0x3c, 0x86, 0x30, 0xb1,
- 0xbd, 0x6f, 0xfc, 0x12, 0xb8, 0x51, 0x72, 0x66, 0xf6, 0x2b, 0x80, 0x9a,
- 0xa0, 0x48, 0xb6, 0x1d, 0x2e, 0x6d, 0x81, 0x9e, 0xce, 0xcb, 0x72, 0x92,
- 0x56, 0xdb, 0xb2, 0xf7, 0x40, 0x55, 0x37, 0x03, 0xce, 0xd8, 0xf9, 0x42,
- 0x67, 0x3d, 0x9c, 0x0d, 0xa2, 0x37, 0x9a, 0x74, 0x06, 0xbc, 0x3b, 0xd2,
- 0xa2, 0x0e, 0xfd, 0x39, 0x05, 0xc8, 0xcb, 0xc5, 0xcc, 0x6e, 0x85, 0xff,
- 0xd5, 0xc8, 0xa1, 0xa1, 0x36, 0xc1, 0xb9, 0x02, 0xd4, 0x13, 0x80, 0xf2,
- 0x16, 0x75, 0x16, 0x58, 0xa7, 0x3e, 0xa1, 0xb8, 0x13, 0x6c, 0x08, 0x25,
- 0x4e, 0xc4, 0x61, 0x5b, 0x24, 0x48, 0x62, 0x4d, 0x70, 0x8f, 0x39, 0xd0,
- 0x8c, 0x62, 0x3c, 0xc6, 0xf1, 0x94, 0xd0, 0xe1, 0xee, 0xb3, 0x2f, 0xc9,
- 0x56, 0xdd, 0x90, 0xe9, 0xe6, 0x73, 0x0d, 0x4f, 0x8e, 0x39, 0x63, 0xae,
- 0x2b, 0xdc, 0x36, 0xb8, 0x76, 0x1d, 0x2e, 0x2e, 0xd8, 0xab, 0xf0, 0x57,
- 0x76, 0x82, 0x0c, 0x8f, 0x35, 0x8b, 0x8e, 0xff, 0x79, 0x01, 0xc4, 0x66,
- 0x38, 0x27, 0x87, 0x11, 0xd2, 0x6c, 0x59, 0x97, 0xd9, 0x22, 0xbb, 0xe4,
- 0xd5, 0xbe, 0x3c, 0x39, 0xfa, 0xf6, 0xe8, 0x24, 0x10, 0x9b, 0x5f, 0x8d,
- 0xc7, 0x7b, 0x9f, 0xb2, 0x6a, 0x82, 0xa6, 0xac, 0x14, 0xb8, 0x48, 0xf0,
- 0x9c, 0x4d, 0xf0, 0xf2, 0x64, 0xc9, 0x8d, 0x83, 0x6c, 0x91, 0x44, 0xef,
- 0xc0, 0x67, 0x43, 0x19, 0xbc, 0xfc, 0x49, 0x81, 0x79, 0x47, 0xc9, 0x91,
- 0xe4, 0x12, 0x42, 0x36, 0x4e, 0xab, 0x6c, 0xc6, 0x3d, 0x4b, 0xc3, 0x2c,
- 0x42, 0x20, 0x7b, 0x50, 0x5f, 0x0e, 0x3a, 0x54, 0xce, 0x24, 0x47, 0x00,
- 0xcb, 0x2e, 0x22, 0x78, 0x63, 0x85, 0xea, 0xf9, 0xe4, 0x8d, 0x7c, 0x53,
- 0xea, 0x51, 0x69, 0x97, 0x18, 0xd8, 0x8d, 0xad, 0x94, 0xd3, 0x6f, 0x86,
- 0xaf, 0xc6, 0xc3, 0x37, 0x47, 0x27, 0x47, 0x5f, 0xbd, 0xba, 0x38, 0xb2,
- 0x78, 0xe6, 0x75, 0xd6, 0xa3, 0x82, 0x89, 0xfe, 0xf5, 0x8d, 0x6c, 0x0b,
- 0xd6, 0x4f, 0x58, 0xf8, 0x4d, 0xce, 0x0d, 0x59, 0x14, 0xf2, 0x9f, 0x3b,
- 0x6b, 0x93, 0x55, 0xd4, 0x70, 0x9e, 0x60, 0x7c, 0x38, 0x73, 0x2f, 0x16,
- 0x4b, 0x99, 0x6a, 0xb0, 0x82, 0x74, 0x71, 0x43, 0x8d, 0xd9, 0x3e, 0x14,
- 0x94, 0x4a, 0x9f, 0xdb, 0x52, 0x52, 0x5e, 0xbd, 0xef, 0x11, 0x72, 0x3b,
- 0xdb, 0x3a, 0x60, 0x20, 0xd3, 0xf7, 0xf8, 0x0b, 0xb4, 0x0c, 0x1c, 0xf1,
- 0xe3, 0x37, 0x78, 0xb2, 0x83, 0x31, 0xee, 0xa0, 0xd1, 0x89, 0xc1, 0xc8,
- 0xaf, 0x22, 0x80, 0x25, 0x44, 0x40, 0xf5, 0xf4, 0x2a, 0x5b, 0x8a, 0x2a,
- 0x4b, 0xa9, 0x09, 0x08, 0x82, 0x73, 0x4d, 0xa5, 0xe0, 0x05, 0x71, 0x0a,
- 0xd9, 0x24, 0x63, 0xc8, 0x05, 0x60, 0xa4, 0x11, 0x5d, 0xc7, 0x52, 0x7d,
- 0x6f, 0xa8, 0xe3, 0x00, 0xc5, 0x5a, 0x28, 0x6d, 0x07, 0x05, 0xc6, 0x23,
- 0x24, 0x18, 0x7a, 0x79, 0x03, 0x61, 0x9e, 0x00, 0x77, 0x0f, 0xec, 0xde,
- 0x59, 0x0b, 0x60, 0x6e, 0xd1, 0xd6, 0x4b, 0xb8, 0xce, 0xf0, 0x23, 0x6e,
- 0x5e, 0x22, 0x3a, 0x37, 0x4d, 0xf2, 0x67, 0x3a, 0xaa, 0xa5, 0x3c, 0x41,
- 0xca, 0x0d, 0xc9, 0x8d, 0x05, 0x33, 0x38, 0x9e, 0xb5, 0x1d, 0x65, 0x1a,
- 0xd2, 0x8d, 0xd5, 0x9b, 0x2e, 0xb3, 0x07, 0x86, 0x56, 0x9f, 0xc9, 0xe9,
- 0xe0, 0x47, 0xd2, 0x88, 0xc0, 0xa6, 0x78, 0x44, 0x5d, 0xf9, 0x8e, 0x63,
- 0xb4, 0x7b, 0x15, 0x10, 0x46, 0xbc, 0xfe, 0x35, 0xec, 0x28, 0x61, 0x4b,
- 0xed, 0x86, 0xd9, 0x2a, 0x00, 0xec, 0xde, 0x79, 0xab, 0xf8, 0xfb, 0x56,
- 0xb7, 0xf4, 0x7b, 0xad, 0x79, 0xad, 0x91, 0x8e, 0xce, 0xce, 0xb9, 0xbb,
- 0xfa, 0x09, 0xfd, 0x45, 0x22, 0x6f, 0x75, 0x0c, 0xff, 0x4e, 0xba, 0x7f,
- 0x50, 0x32, 0x4a, 0x86, 0xd0, 0x8d, 0x0d, 0xa6, 0x6b, 0x32, 0x22, 0xe7,
- 0x9f, 0x0a, 0xd0, 0xba, 0x5c, 0x07, 0x6c, 0x71, 0x90, 0xfc, 0x6f, 0x1b,
- 0x74, 0xd2, 0x4c, 0x68, 0x0a, 0x82, 0x50, 0x84, 0x49, 0x70, 0x0e, 0xad,
- 0x06, 0x48, 0x4e, 0xe9, 0x97, 0xa4, 0x6f, 0xb2, 0x5c, 0x6b, 0xfa, 0x38,
- 0x2f, 0xb7, 0x40, 0x10, 0x95, 0x88, 0x86, 0xa5, 0x37, 0x93, 0x0a, 0xed,
- 0x5c, 0x53, 0x33, 0x95, 0x51, 0x67, 0xa9, 0x68, 0xc8, 0x45, 0xb0, 0x9b,
- 0x61, 0x3c, 0x04, 0xad, 0xc8, 0xc4, 0x11, 0x27, 0x59, 0xe9, 0x58, 0xb0,
- 0xe6, 0xda, 0x0f, 0x24, 0xc7, 0x80, 0x2c, 0x08, 0xb4, 0x1d, 0xe2, 0x7a,
- 0x01, 0x24, 0x1f, 0x04, 0x1a, 0xbe, 0xd4, 0x24, 0x68, 0x26, 0x5a, 0x76,
- 0x27, 0x61, 0x73, 0x56, 0x08, 0xe7, 0x12, 0x9e, 0x4c, 0x01, 0x28, 0x0b,
- 0xd3, 0x66, 0xc2, 0x1a, 0x0c, 0xb2, 0xfa, 0xae, 0xd2, 0x22, 0x72, 0xe7,
- 0xcc, 0xc6, 0xdb, 0x9e, 0x68, 0x58, 0xa5, 0x1c, 0x5b, 0x44, 0x89, 0x27,
- 0xda, 0xe8, 0xc2, 0x5a, 0x19, 0x43, 0xcf, 0x30, 0xb0, 0x9c, 0xe2, 0x1a,
- 0x32, 0x15, 0xde, 0x19, 0x34, 0x06, 0x12, 0x7a, 0x2b, 0x63, 0x54, 0x25,
- 0xcc, 0xc5, 0x45, 0x5b, 0x5a, 0x24, 0xd8, 0x5f, 0xf4, 0x6d, 0x3d, 0xf3,
- 0xa8, 0xb0, 0xf1, 0x50, 0x75, 0xa9, 0xc7, 0x70, 0xbb, 0x04, 0x07, 0xc7,
- 0x07, 0x61, 0x5f, 0x74, 0x33, 0x50, 0x32, 0x2e, 0xba, 0x30, 0xdf, 0xc6,
- 0x74, 0xc9, 0x0d, 0x64, 0x23, 0xb2, 0x44, 0x3c, 0xc1, 0xf7, 0xdf, 0x60,
- 0x72, 0xf4, 0x1d, 0xbc, 0x80, 0x7b, 0x4f, 0xd0, 0x43, 0x97, 0xda, 0xe3,
- 0x89, 0x49, 0x79, 0x92, 0x99, 0xef, 0xe5, 0xd4, 0x03, 0xcf, 0x0f, 0x03,
- 0x84, 0x69, 0xce, 0xb5, 0x21, 0x40, 0x54, 0x05, 0x94, 0xec, 0x00, 0xa2,
- 0x77, 0x29, 0x97, 0x22, 0x4b, 0xfc, 0x06, 0x92, 0x20, 0x08, 0x58, 0x0c,
- 0x67, 0x03, 0x89, 0x67, 0x22, 0xbd, 0xb1, 0xac, 0xc2, 0x12, 0xd8, 0xa9,
- 0xc5, 0x5a, 0xd2, 0x27, 0xd3, 0xfa, 0x3a, 0x7e, 0xc3, 0xeb, 0xeb, 0xe8,
- 0x0d, 0x7f, 0xc0, 0x3d, 0x77, 0xf6, 0xd6, 0xd1, 0xd9, 0xf8, 0xdb, 0xa4,
- 0x07, 0x34, 0x82, 0x3b, 0xb9, 0xf0, 0x15, 0x77, 0xab, 0x23, 0xa2, 0xf7,
- 0xaf, 0x79, 0xff, 0x3d, 0x8f, 0xc6, 0x07, 0x82, 0x7b, 0x6e, 0xbe, 0x2f,
- 0x97, 0xfb, 0xec, 0xd5, 0xf8, 0x5b, 0xef, 0x5a, 0x7b, 0x24, 0x10, 0x2b,
- 0xc6, 0xb4, 0x99, 0xed, 0x14, 0x24, 0x66, 0xd2, 0xa1, 0xc1, 0xa2, 0xf4,
- 0x5e, 0x5f, 0x3f, 0x84, 0xde, 0xcd, 0x4c, 0x02, 0x7a, 0x0f, 0xf6, 0x78,
- 0x13, 0xbd, 0xfb, 0x07, 0xd5, 0x4e, 0x9a, 0xf5, 0xa8, 0xbd, 0xe0, 0x2e,
- 0xda, 0x54, 0xe0, 0xd1, 0x47, 0xe6, 0x14, 0x48, 0x14, 0xd2, 0x0e, 0x53,
- 0x09, 0x31, 0xcf, 0x9f, 0x46, 0xe8, 0xe6, 0x85, 0x80, 0xd0, 0xf5, 0x3c,
- 0xe3, 0x94, 0xde, 0x47, 0xe8, 0x9a, 0x52, 0x9c, 0x31, 0x91, 0xfb, 0x34,
- 0x1e, 0xd2, 0xb7, 0x47, 0xb5, 0x7e, 0x19, 0x78, 0xb8, 0x43, 0x9a, 0x69,
- 0xe6, 0xa0, 0x0c, 0x1c, 0x90, 0x43, 0x04, 0x5c, 0x44, 0x41, 0x19, 0xb8,
- 0x20, 0x36, 0x74, 0xe7, 0xdb, 0xd2, 0xfc, 0x56, 0xf5, 0x43, 0xa5, 0x1a,
- 0x36, 0x37, 0x56, 0x23, 0xa1, 0x0d, 0xf7, 0x80, 0x0f, 0x28, 0x30, 0x0f,
- 0x6e, 0x64, 0x0b, 0x3d, 0x28, 0x8b, 0x56, 0xa7, 0xd7, 0x19, 0xe5, 0x79,
- 0x00, 0x86, 0xac, 0x7b, 0x4f, 0x49, 0xcd, 0x83, 0x36, 0x40, 0x8a, 0xca,
- 0x30, 0x2f, 0x86, 0x61, 0x1a, 0xb4, 0x1f, 0xda, 0x6a, 0x5a, 0xd8, 0xb4,
- 0x54, 0xa2, 0x08, 0x85, 0x57, 0x82, 0x1c, 0xa4, 0x8c, 0xc2, 0xd2, 0x94,
- 0x98, 0x00, 0x7b, 0x25, 0x23, 0x05, 0xb5, 0x51, 0x84, 0xb5, 0x76, 0xbb,
- 0x97, 0xa6, 0x6c, 0x39, 0xe3, 0x9e, 0x76, 0x50, 0x8c, 0x67, 0x45, 0x3d,
- 0x74, 0x1d, 0xda, 0x5f, 0xda, 0xbf, 0x06, 0xf6, 0xc5, 0x9b, 0xf7, 0x63,
- 0x8a, 0x5c, 0x65, 0xa8, 0x35, 0x50, 0x33, 0xb8, 0xce, 0xb8, 0x3e, 0xe4,
- 0x12, 0x9c, 0xc3, 0x3c, 0x62, 0x0b, 0xfe, 0x6c, 0x53, 0xc4, 0x97, 0x51,
- 0x87, 0x10, 0x3e, 0x11, 0x14, 0xea, 0xa5, 0x5c, 0x70, 0x63, 0x6c, 0x3b,
- 0xc4, 0xc5, 0x69, 0x05, 0x6e, 0x6e, 0x5a, 0xd1, 0x0e, 0xcf, 0x53, 0x04,
- 0xe3, 0x48, 0xcb, 0xf2, 0x68, 0x1a, 0xbb, 0xda, 0x9e, 0x79, 0xc5, 0x88,
- 0xec, 0x82, 0x41, 0x66, 0x3b, 0x5c, 0x15, 0x9d, 0xae, 0xf4, 0xdd, 0xc5,
- 0x0a, 0x66, 0x92, 0xe4, 0x8c, 0xed, 0x6e, 0x34, 0x1e, 0x69, 0x03, 0x57,
- 0xd7, 0x8f, 0x87, 0xf4, 0xb0, 0xa4, 0x1f, 0xda, 0x9f, 0x3e, 0xc5, 0x4f,
- 0x47, 0xc1, 0x46, 0x07, 0x25, 0x34, 0xd2, 0x41, 0xd5, 0xa2, 0xe3, 0x52,
- 0x76, 0x63, 0x31, 0xa3, 0xce, 0x1b, 0x38, 0x7b, 0x6d, 0xa4, 0x40, 0x68,
- 0x89, 0x8c, 0x79, 0xe8, 0x9a, 0xb7, 0x25, 0x01, 0x4e, 0x8b, 0xd1, 0x6d,
- 0xea, 0xd6, 0xa1, 0x3f, 0x7a, 0x14, 0x39, 0x74, 0x3b, 0xe7, 0x97, 0xb2,
- 0xcc, 0xf8, 0x91, 0xb7, 0xa4, 0xcb, 0x24, 0xe7, 0xfe, 0x56, 0x2f, 0xf3,
- 0xd5, 0x50, 0xdf, 0x62, 0xe1, 0xb1, 0x4c, 0x3f, 0x89, 0x48, 0x7f, 0x2c,
- 0x74, 0x30, 0x0c, 0x60, 0x56, 0xb8, 0xdd, 0x32, 0xba, 0x52, 0xbb, 0x75,
- 0xb6, 0x88, 0x46, 0xf4, 0xad, 0xc6, 0x82, 0xb6, 0x12, 0x51, 0xf0, 0x77,
- 0x62, 0x35, 0x5f, 0x9a, 0x9d, 0xed, 0xfb, 0x78, 0xb4, 0xbe, 0x03, 0x33,
- 0xb1, 0xef, 0xde, 0x73, 0x7e, 0x8e, 0xc8, 0x36, 0x9f, 0x9f, 0xee, 0xd9,
- 0xff, 0x1a, 0xe7, 0xf7, 0xf4, 0x57, 0x39, 0xbf, 0xa7, 0xff, 0xcb, 0x9c,
- 0xdf, 0xd3, 0x7f, 0xf9, 0xfc, 0x1e, 0x07, 0xe7, 0xf7, 0xf4, 0x7f, 0x95,
- 0xf3, 0xd3, 0xfe, 0x6a, 0x7a, 0x7a, 0x59, 0x70, 0x7e, 0x63, 0x49, 0x1b,
- 0x51, 0x60, 0x3e, 0xda, 0x69, 0x7d, 0x8b, 0x83, 0x34, 0x92, 0xe8, 0xc8,
- 0x5e, 0x70, 0xcd, 0xb5, 0x65, 0x68, 0xc8, 0x9e, 0x86, 0x25, 0x23, 0x2d,
- 0xab, 0xd0, 0x41, 0x8f, 0xcf, 0x12, 0x3b, 0x01, 0xef, 0x18, 0x1c, 0xd0,
- 0x16, 0x14, 0xb4, 0xa8, 0x8b, 0xba, 0x26, 0xbf, 0xa5, 0x59, 0x3f, 0x97,
- 0x57, 0xd6, 0xae, 0x28, 0x38, 0x86, 0xa4, 0x65, 0x36, 0xee, 0xc5, 0x4b,
- 0xda, 0xae, 0x21, 0x3f, 0xfe, 0xa7, 0x68, 0xb1, 0x1b, 0x3a, 0x36, 0xbb,
- 0x29, 0xc5, 0xc2, 0x12, 0xde, 0xd6, 0xb9, 0x73, 0xb3, 0xd1, 0x2c, 0xef,
- 0xd0, 0x62, 0x67, 0xd6, 0x55, 0x75, 0xec, 0x09, 0xde, 0x7f, 0x64, 0xe5,
- 0x15, 0x70, 0x7c, 0x5e, 0x7e, 0x38, 0x0f, 0x7d, 0x6f, 0x66, 0xa9, 0x21,
- 0x34, 0xa2, 0x39, 0xae, 0x21, 0xd9, 0xf6, 0x43, 0xa0, 0xc4, 0x9b, 0xdb,
- 0x78, 0xfa, 0xf5, 0xae, 0xe7, 0x04, 0x42, 0xd0, 0xa2, 0x8c, 0xf5, 0xbb,
- 0xe3, 0xb2, 0x5b, 0x5b, 0x5a, 0x5e, 0x0f, 0x3a, 0x3d, 0x2e, 0x6d, 0xda,
- 0xbb, 0x53, 0x52, 0xe0, 0x1d, 0x91, 0x82, 0xdd, 0x2a, 0xe8, 0x6f, 0x49,
- 0xca, 0x60, 0x5e, 0x0b, 0x6a, 0x1c, 0xc1, 0x68, 0xa8, 0x1c, 0xc4, 0xcc,
- 0x7e, 0xcb, 0x8c, 0xbf, 0xa7, 0x87, 0xad, 0x5d, 0x7d, 0x03, 0x5d, 0x71,
- 0xbd, 0x5c, 0x49, 0x69, 0xf1, 0x3d, 0xa5, 0x95, 0x09, 0x77, 0x63, 0x44,
- 0xd9, 0x24, 0xbb, 0xf7, 0xa5, 0xca, 0x48, 0x2d, 0x73, 0x5b, 0x5a, 0x21,
- 0xe6, 0x7b, 0x2f, 0x30, 0x5a, 0x14, 0x8b, 0xea, 0xa2, 0x9b, 0x20, 0xc5,
- 0x15, 0x31, 0x8a, 0xaf, 0x4e, 0x5c, 0xd2, 0xd3, 0x9a, 0xa5, 0xd0, 0x01,
- 0x20, 0x00, 0xfc, 0xd5, 0x18, 0x38, 0x37, 0xa2, 0x84, 0x54, 0x60, 0x45,
- 0x73, 0x66, 0x74, 0x41, 0xf3, 0xaa, 0x19, 0x66, 0x24, 0x55, 0x56, 0xb5,
- 0x17, 0xa7, 0xb6, 0x85, 0x21, 0x00, 0x77, 0x8a, 0x55, 0x07, 0x20, 0xd8,
- 0x03, 0xf5, 0x56, 0xb2, 0xfa, 0x04, 0xba, 0xc3, 0x62, 0x33, 0x15, 0xd7,
- 0x5a, 0x7b, 0xd3, 0x6a, 0x51, 0x32, 0x9c, 0x84, 0xe1, 0x80, 0x56, 0x09,
- 0xe0, 0xbf, 0x81, 0x36, 0x7a, 0xca, 0x32, 0x58, 0x35, 0xf3, 0x1c, 0x13,
- 0x91, 0x9b, 0xe4, 0x57, 0x7d, 0x44, 0x5d, 0x01, 0x64, 0xe8, 0xe8, 0x02,
- 0xa5, 0x5f, 0x05, 0x37, 0x01, 0x69, 0xbb, 0xa4, 0x3a, 0x46, 0x12, 0x67,
- 0xff, 0x06, 0x09, 0x85, 0x02, 0x30, 0x10, 0x3d, 0xc6, 0x56, 0x0a, 0x38,
- 0xe7, 0x16, 0x5f, 0x65, 0x7e, 0xd5, 0xb4, 0x85, 0xa0, 0xe4, 0x28, 0x05,
- 0x27, 0x2f, 0x9a, 0x5d, 0x94, 0x4c, 0xd8, 0xa0, 0xe1, 0x10, 0x50, 0x11,
- 0x64, 0xea, 0x5b, 0x82, 0xe2, 0xb4, 0x16, 0xe8, 0x59, 0x6e, 0xb9, 0x0c,
- 0xd0, 0x9b, 0xdf, 0xae, 0x4a, 0xd9, 0xcb, 0x0c, 0xf7, 0x59, 0x54, 0x76,
- 0xc9, 0xe1, 0xff, 0x4d, 0x59, 0xc8, 0x1d, 0xc0, 0x35, 0x6e, 0x26, 0x6e,
- 0x21, 0xd7, 0xe0, 0x11, 0x2c, 0x9a, 0xaa, 0x5c, 0xdd, 0x25, 0x5f, 0xa5,
- 0xb4, 0x2c, 0xa8, 0xf5, 0x69, 0xb6, 0x0c, 0x4a, 0xd3, 0xb8, 0xbd, 0xb8,
- 0xa8, 0xd9, 0xdc, 0x6a, 0x5c, 0x57, 0x08, 0xbb, 0x80, 0xb7, 0xc5, 0x10,
- 0xab, 0xd9, 0x2f, 0x72, 0x26, 0x4b, 0xd9, 0x08, 0xa7, 0x5e, 0x8f, 0xc7,
- 0x27, 0xa1, 0x2d, 0xa7, 0x8d, 0x8d, 0x36, 0x62, 0x12, 0x60, 0xb4, 0x61,
- 0x37, 0x3a, 0x22, 0x83, 0xbf, 0x8c, 0x72, 0x0e, 0x59, 0x77, 0xb6, 0x50,
- 0xcc, 0x0e, 0xc5, 0x91, 0x9f, 0x56, 0x77, 0x2b, 0x32, 0xbe, 0xa4, 0x08,
- 0x97, 0xaf, 0x39, 0xcd, 0x8f, 0x41, 0x60, 0x37, 0x96, 0x3d, 0x7f, 0xa8,
- 0x3d, 0x2c, 0x75, 0xc8, 0x52, 0x8a, 0xdf, 0x13, 0x28, 0x32, 0x81, 0x5b,
- 0x89, 0x6c, 0x25, 0xa9, 0x33, 0x03, 0x9a, 0x4b, 0x6f, 0x8f, 0x33, 0xe9,
- 0x5c, 0xd6, 0xe9, 0x8e, 0xc1, 0xe6, 0x0c, 0x59, 0x5a, 0x84, 0x88, 0x88,
- 0x70, 0xca, 0xae, 0xca, 0x77, 0x79, 0x43, 0xaa, 0xf6, 0xba, 0x37, 0xc3,
- 0x36, 0x4f, 0x48, 0x09, 0xe1, 0xa1, 0x08, 0xa0, 0x64, 0x38, 0xcb, 0xe3,
- 0x60, 0x7f, 0xff, 0x5e, 0x8c, 0x20, 0xb1, 0x56, 0x37, 0x42, 0x05, 0x11,
- 0x3b, 0xe4, 0x00, 0x87, 0xad, 0x69, 0x4f, 0x73, 0x29, 0x58, 0xea, 0xa2,
- 0xaa, 0x99, 0x4f, 0x5a, 0xc8, 0x1e, 0x77, 0x05, 0x99, 0xad, 0x32, 0x94,
- 0x16, 0x00, 0x83, 0xcc, 0xdd, 0x3e, 0xc2, 0x1c, 0xeb, 0x17, 0xad, 0x77,
- 0xa2, 0x2d, 0xa5, 0x69, 0x42, 0xf4, 0x92, 0xe8, 0x9f, 0xa3, 0xe4, 0xcf,
- 0x77, 0xce, 0x6e, 0x07, 0x43, 0x64, 0x7f, 0x30, 0x66, 0xc5, 0x7e, 0x7e,
- 0x9e, 0xff, 0x68, 0x13, 0xeb, 0x8f, 0xe3, 0x00, 0xfd, 0x1b, 0x33, 0x16,
- 0x0c, 0x6b, 0xb8, 0xdd, 0xaa, 0xc6, 0xa8, 0x80, 0x13, 0x89, 0x3b, 0xac,
- 0xec, 0x6a, 0x8d, 0xfe, 0xd1, 0x6d, 0xb2, 0xe4, 0xf5, 0x4b, 0x62, 0x2e,
- 0xb8, 0x11, 0xcf, 0xb9, 0x8d, 0xea, 0xd4, 0xce, 0x42, 0x7d, 0xd6, 0x56,
- 0x53, 0xa8, 0xb4, 0x7a, 0x88, 0x02, 0xea, 0x2e, 0x6a, 0x04, 0xd5, 0x5c,
- 0x13, 0xef, 0x82, 0xaf, 0xa1, 0x2c, 0x3c, 0x0f, 0x0c, 0xa1, 0x89, 0x71,
- 0xe6, 0x8f, 0xd6, 0x5a, 0x75, 0x40, 0x6c, 0x7d, 0xc6, 0xaa, 0xc8, 0xfb,
- 0x7a, 0xd3, 0x67, 0xa5, 0x87, 0x5d, 0x65, 0xcb, 0xeb, 0x3a, 0xae, 0x1c,
- 0xf6, 0xe5, 0x84, 0xb0, 0x18, 0x9c, 0x41, 0xec, 0xdc, 0x84, 0x5c, 0x28,
- 0x8e, 0xec, 0x08, 0x68, 0x82, 0xac, 0x3a, 0x1a, 0x8d, 0x65, 0x90, 0x48,
- 0x27, 0x72, 0x4a, 0x18, 0xe7, 0x53, 0x8e, 0xaa, 0xb7, 0x0e, 0x56, 0x8d,
- 0xfb, 0x8c, 0xf1, 0x4a, 0x6a, 0x07, 0x07, 0x47, 0x4c, 0x9b, 0x7b, 0xa6,
- 0x99, 0x51, 0x6b, 0x9b, 0x1a, 0x16, 0x7a, 0x44, 0xbd, 0x0a, 0x6d, 0xf3,
- 0x24, 0x21, 0xd4, 0xd4, 0x6b, 0x78, 0xaf, 0x79, 0x78, 0x8b, 0xc0, 0xc6,
- 0x77, 0x92, 0x2b, 0xd7, 0xc9, 0x4f, 0x26, 0x15, 0xb8, 0x01, 0xdb, 0xa0,
- 0xe8, 0x38, 0x81, 0x37, 0x26, 0x38, 0x1c, 0x94, 0xc0, 0xaf, 0x2b, 0x2f,
- 0x46, 0xbe, 0x75, 0x95, 0x9b, 0x53, 0x2d, 0xb6, 0x00, 0x0c, 0xb9, 0x9e,
- 0x30, 0xe6, 0x68, 0xa3, 0x1f, 0x0d, 0x16, 0xbb, 0x5e, 0x78, 0x8e, 0xd9,
- 0x78, 0x9b, 0xf1, 0x56, 0xc2, 0xf7, 0x20, 0x69, 0x5d, 0x08, 0xd5, 0x27,
- 0x39, 0x6c, 0xef, 0x8a, 0xef, 0xf9, 0xdc, 0xa2, 0xde, 0x5c, 0x57, 0x88,
- 0x47, 0x37, 0x1f, 0x9d, 0xb9, 0x06, 0x7e, 0x5b, 0x1c, 0xe7, 0x68, 0x4e,
- 0x97, 0xe4, 0xc4, 0x61, 0x5d, 0x95, 0x76, 0x39, 0xda, 0xb4, 0x84, 0x0e,
- 0x42, 0x20, 0x5b, 0x22, 0x98, 0xc2, 0x92, 0xda, 0x97, 0xde, 0xa1, 0xea,
- 0xc8, 0x7e, 0x1a, 0xd4, 0x1d, 0x00, 0xc0, 0x11, 0x18, 0x62, 0x09, 0xcd,
- 0x5f, 0xe8, 0x98, 0xb6, 0x70, 0x5a, 0xe5, 0xab, 0x86, 0xf3, 0x11, 0x24,
- 0xb9, 0x7a, 0x23, 0x70, 0x8e, 0xf9, 0xdb, 0xe5, 0xa2, 0x9c, 0xa4, 0x7c,
- 0x47, 0x6c, 0x6e, 0x93, 0x7a, 0x3c, 0x5b, 0x80, 0xc5, 0xc4, 0xde, 0x88,
- 0x3c, 0x23, 0x0d, 0x17, 0xcc, 0x92, 0x87, 0x2f, 0xd0, 0x1d, 0x9e, 0x02,
- 0xa1, 0x9b, 0x3e, 0x68, 0x3f, 0xc1, 0xf0, 0x7f, 0xc3, 0xf9, 0x40, 0x6e,
- 0xaf, 0x56, 0x65, 0x23, 0x35, 0xac, 0xf6, 0xee, 0x54, 0xa0, 0x73, 0x01,
- 0x46, 0x61, 0xb6, 0xce, 0xda, 0x99, 0x62, 0xdb, 0x12, 0x26, 0x96, 0x96,
- 0x76, 0xc8, 0x56, 0xb2, 0x9d, 0x0a, 0x24, 0x1c, 0x1b, 0xcd, 0x82, 0x22,
- 0x80, 0x60, 0xc9, 0x5a, 0x1a, 0x18, 0xe3, 0xe3, 0x06, 0x15, 0x1a, 0x05,
- 0x49, 0x25, 0x37, 0x39, 0xcd, 0xbe, 0xf5, 0xf6, 0x8a, 0x81, 0x15, 0x42,
- 0x8a, 0x9f, 0xb3, 0x42, 0x08, 0xff, 0x25, 0x9f, 0xc9, 0x86, 0x9d, 0xf1,
- 0x51, 0xc6, 0xdb, 0x26, 0x82, 0xfd, 0x74, 0x5c, 0x3c, 0x81, 0xad, 0xd5,
- 0x64, 0x34, 0x90, 0x7f, 0x7f, 0xc7, 0x10, 0x8b, 0x54, 0xbf, 0xa5, 0x48,
- 0x3c, 0x00, 0x36, 0xa6, 0xb6, 0xf3, 0x63, 0x5e, 0x10, 0xaf, 0xcc, 0xa3,
- 0x9b, 0x42, 0x39, 0x6e, 0x8b, 0x3b, 0xce, 0xa2, 0xc1, 0x99, 0x43, 0xdf,
- 0x95, 0x98, 0x81, 0x12, 0x54, 0xd6, 0x4c, 0xbd, 0x5f, 0xce, 0xb2, 0x74,
- 0x11, 0xeb, 0x96, 0x41, 0x13, 0x26, 0x47, 0x37, 0xb3, 0x36, 0x82, 0x49,
- 0x29, 0x24, 0x64, 0x22, 0x39, 0xd6, 0x9c, 0x65, 0x28, 0xc6, 0x81, 0x9d,
- 0x21, 0x6e, 0x55, 0x44, 0xbb, 0xa6, 0xfe, 0x3d, 0x78, 0x00, 0xb5, 0xc3,
- 0x53, 0x41, 0x24, 0x40, 0xc0, 0xd3, 0x95, 0xe0, 0x10, 0xa6, 0x1b, 0x25,
- 0x24, 0xea, 0x03, 0xa0, 0x00, 0xe4, 0xc3, 0x77, 0x87, 0x13, 0x47, 0x2a,
- 0xd7, 0x85, 0x42, 0xc8, 0x68, 0xd9, 0x06, 0x4d, 0x8c, 0x73, 0x60, 0x88,
- 0x49, 0xee, 0xca, 0x3d, 0x44, 0x9e, 0x85, 0x70, 0x8e, 0x55, 0x78, 0xd2,
- 0xd7, 0x99, 0x66, 0x46, 0xc1, 0x94, 0xe1, 0x03, 0x68, 0x6c, 0xb1, 0x2c,
- 0x8d, 0x26, 0x7c, 0x86, 0x99, 0xcc, 0xe1, 0x61, 0x8f, 0xe9, 0x25, 0x7d,
- 0xd2, 0x85, 0xc6, 0x70, 0xd9, 0xeb, 0x74, 0x9e, 0x29, 0x70, 0xaa, 0xb0,
- 0xef, 0x72, 0x6a, 0xb6, 0x10, 0x41, 0x5a, 0x80, 0x12, 0x91, 0x76, 0x14,
- 0x58, 0xd0, 0xcc, 0x35, 0x89, 0x4b, 0x5a, 0x91, 0x4b, 0x17, 0x41, 0xd8,
- 0x6d, 0xbd, 0xc8, 0x57, 0xea, 0x9f, 0x1e, 0x24, 0x99, 0x64, 0x15, 0x2d,
- 0xee, 0xe4, 0x54, 0xd6, 0xc3, 0x88, 0xe9, 0x65, 0x9b, 0xb9, 0x0b, 0xfc,
- 0xed, 0x82, 0x14, 0xff, 0x9d, 0xce, 0xe8, 0x8f, 0xf7, 0x0f, 0x30, 0xd9,
- 0xc7, 0xfb, 0xcf, 0x76, 0xdb, 0x52, 0x79, 0x51, 0x67, 0x43, 0x24, 0xad,
- 0xc5, 0xb5, 0x53, 0x6e, 0x55, 0xe7, 0xfc, 0xea, 0xd0, 0x44, 0xe9, 0x25,
- 0xc9, 0x74, 0x9b, 0xad, 0x2b, 0x35, 0xe5, 0xa8, 0x89, 0x21, 0x19, 0xa6,
- 0xf5, 0x15, 0xa1, 0x2e, 0x06, 0x52, 0xde, 0xbd, 0x03, 0xa3, 0x0d, 0xb1,
- 0x1b, 0xde, 0xa7, 0x14, 0xaf, 0x4a, 0x83, 0x34, 0xde, 0x07, 0x3c, 0x47,
- 0x56, 0x29, 0x07, 0x18, 0x62, 0xed, 0x4c, 0x15, 0xc9, 0x81, 0x93, 0xc4,
- 0x24, 0x7c, 0xd7, 0x6e, 0x37, 0x6c, 0xf9, 0xce, 0xdb, 0xbc, 0xc8, 0xeb,
- 0x2b, 0xb4, 0x29, 0xae, 0xeb, 0xf4, 0x32, 0x0b, 0x0b, 0xdc, 0x0d, 0x43,
- 0x32, 0x26, 0x13, 0xb7, 0xd1, 0xab, 0x80, 0x4c, 0x4f, 0xa9, 0x61, 0xbc,
- 0xef, 0x52, 0xb0, 0x22, 0x3d, 0xf6, 0x80, 0x8c, 0xe6, 0x96, 0x19, 0xa3,
- 0x97, 0xbc, 0xf6, 0x1a, 0x40, 0xf6, 0xf5, 0x7f, 0xa4, 0x6e, 0x64, 0x80,
- 0xc8, 0xe2, 0xde, 0x40, 0xdc, 0x1c, 0x28, 0xd6, 0xf5, 0xc5, 0xa8, 0xda,
- 0xe6, 0x70, 0x4f, 0xc7, 0x86, 0x05, 0xb9, 0x5e, 0xc5, 0x48, 0x01, 0x34,
- 0x3f, 0xfb, 0xde, 0xe8, 0xa2, 0xa3, 0xe7, 0xf6, 0xc7, 0xbb, 0x0f, 0x6b,
- 0x18, 0x79, 0xd8, 0xd1, 0xcd, 0x28, 0x17, 0x57, 0x22, 0x11, 0x30, 0x55,
- 0xbe, 0xe0, 0x7f, 0xc4, 0x7d, 0x1d, 0xa8, 0x6b, 0x35, 0x56, 0xe4, 0xbb,
- 0x57, 0x80, 0x94, 0x72, 0x08, 0xcf, 0x5e, 0xda, 0x6e, 0xab, 0x46, 0x0f,
- 0xdd, 0x33, 0x49, 0x55, 0x8d, 0x02, 0xfc, 0x59, 0x4c, 0x5e, 0xce, 0x20,
- 0x74, 0x51, 0x37, 0xd5, 0xe5, 0x8c, 0xe0, 0x6d, 0xc8, 0x30, 0x25, 0xe8,
- 0x9d, 0xe4, 0x24, 0xe3, 0x66, 0x39, 0xc9, 0xf6, 0x97, 0xdb, 0x91, 0x6a,
- 0xbe, 0xed, 0x97, 0x1e, 0xc2, 0x78, 0xed, 0x1a, 0x71, 0x6d, 0xff, 0x91,
- 0x92, 0x92, 0x09, 0x4c, 0x85, 0xbf, 0x29, 0x67, 0xc0, 0xf9, 0xb5, 0xf1,
- 0xb0, 0xbe, 0xa6, 0xf4, 0x09, 0x3e, 0x60, 0x3b, 0x79, 0x88, 0x1b, 0x5f,
- 0x13, 0xf6, 0x7a, 0x67, 0xdd, 0xaa, 0xcf, 0x6d, 0x07, 0xd5, 0x7e, 0x94,
- 0xba, 0xcf, 0x68, 0x3d, 0xd2, 0x1d, 0xdc, 0xb5, 0x31, 0xe5, 0x39, 0xf1,
- 0x64, 0xe0, 0xab, 0x9c, 0x4e, 0x73, 0xd2, 0x5c, 0x70, 0xf5, 0xcd, 0x2f,
- 0x2f, 0x2f, 0xa3, 0x29, 0x4e, 0x66, 0x0b, 0xe8, 0xe0, 0x69, 0xcd, 0xf3,
- 0x2c, 0x6d, 0xa0, 0x6f, 0x90, 0x9c, 0xef, 0x4f, 0x9e, 0x76, 0xba, 0x7b,
- 0xe4, 0x19, 0x6f, 0x15, 0x2f, 0xfd, 0xfa, 0x94, 0x38, 0x15, 0x80, 0x08,
- 0x98, 0x06, 0x08, 0xd1, 0x13, 0x3f, 0xb3, 0xde, 0xae, 0x79, 0x6a, 0x88,
- 0xe2, 0x4e, 0x42, 0xcb, 0x0b, 0xd4, 0x13, 0x30, 0x07, 0xc9, 0x96, 0x01,
- 0x0f, 0x5b, 0x68, 0x6a, 0x2e, 0x67, 0xb0, 0x53, 0x2f, 0x11, 0x4e, 0x76,
- 0xa6, 0x7d, 0x66, 0x79, 0xe0, 0x92, 0xde, 0x13, 0x6d, 0xa8, 0xe1, 0x72,
- 0xd9, 0xbb, 0x5e, 0x11, 0x3f, 0xb3, 0x5d, 0x54, 0x15, 0xb5, 0x01, 0x91,
- 0x9c, 0x2f, 0x0c, 0xc3, 0xf3, 0x55, 0x26, 0x7e, 0x31, 0x63, 0xd7, 0x47,
- 0x09, 0x13, 0xc2, 0x70, 0xa3, 0x3d, 0x5c, 0x12, 0xae, 0x28, 0x98, 0x12,
- 0x8c, 0x0d, 0x98, 0x4c, 0x99, 0x50, 0x93, 0xb6, 0xc3, 0x47, 0x9f, 0x7f,
- 0x3e, 0x8a, 0xe2, 0x9c, 0x72, 0x79, 0xb6, 0x21, 0x42, 0xda, 0x29, 0x87,
- 0x89, 0x39, 0xb0, 0xe8, 0xc6, 0xf4, 0x7d, 0xa2, 0x30, 0x94, 0x8f, 0x95,
- 0x4b, 0x82, 0x2e, 0x22, 0xe6, 0xb8, 0x5e, 0x84, 0xe6, 0x3d, 0x42, 0x8f,
- 0x4b, 0x52, 0x2b, 0x84, 0x8b, 0x41, 0xbd, 0x22, 0xae, 0xb1, 0xcc, 0x7b,
- 0x54, 0xba, 0x4c, 0xd2, 0xf3, 0x38, 0x95, 0x53, 0xa0, 0x01, 0x25, 0x9f,
- 0x94, 0xd3, 0x7e, 0x8d, 0xd6, 0x80, 0x1c, 0x77, 0xce, 0xfa, 0xe0, 0xed,
- 0xd8, 0xee, 0x29, 0x07, 0xdd, 0x4e, 0x34, 0xfa, 0x39, 0xc9, 0x2c, 0xbe,
- 0x02, 0x77, 0xde, 0xea, 0x20, 0xe0, 0x70, 0xc9, 0x78, 0x41, 0x35, 0x61,
- 0xd4, 0xe9, 0xc2, 0x7c, 0xa0, 0x33, 0x1c, 0x2a, 0xa4, 0x2f, 0xb3, 0x26,
- 0xac, 0x63, 0xf2, 0xb2, 0x7b, 0x37, 0x0c, 0x1e, 0xb3, 0x89, 0xa4, 0x0c,
- 0x2b, 0x79, 0x39, 0x92, 0x48, 0xc2, 0x2c, 0x9f, 0xeb, 0x25, 0xb5, 0xdd,
- 0x21, 0xbe, 0xc4, 0x69, 0xbc, 0x94, 0xad, 0x97, 0xb2, 0xc4, 0x2f, 0xa3,
- 0x18, 0x67, 0x92, 0x62, 0x0c, 0xc0, 0xad, 0xa6, 0x31, 0x6a, 0xb5, 0xe3,
- 0xdd, 0xc8, 0x22, 0xe7, 0x5e, 0x04, 0x5c, 0xbb, 0xc3, 0x1b, 0xcc, 0x79,
- 0x9b, 0x8b, 0x18, 0xc8, 0xc6, 0x4b, 0x3b, 0xa8, 0xb4, 0x3a, 0xa1, 0x44,
- 0x7e, 0x9a, 0x4a, 0x6c, 0x27, 0x14, 0xa7, 0x9c, 0xf8, 0x83, 0x79, 0x3a,
- 0xb0, 0x7a, 0xe8, 0x5d, 0x6f, 0x9f, 0xc2, 0xb3, 0xf7, 0x23, 0x6b, 0x82,
- 0xa8, 0xc1, 0x5b, 0xec, 0x12, 0xc0, 0xfd, 0xe8, 0x8c, 0xac, 0xd4, 0x68,
- 0xc2, 0xf1, 0xee, 0xdc, 0xb4, 0x54, 0x57, 0xc9, 0x0d, 0xca, 0xba, 0x2c,
- 0x33, 0x9e, 0x25, 0x60, 0x35, 0x74, 0x57, 0xc9, 0x57, 0xd9, 0x54, 0xeb,
- 0x29, 0x29, 0x96, 0x30, 0xca, 0xf1, 0xa9, 0x58, 0x37, 0x2e, 0x75, 0xaf,
- 0xda, 0x15, 0xa3, 0x67, 0x1e, 0xce, 0x0b, 0xbb, 0x2c, 0x80, 0x80, 0x6c,
- 0xe1, 0x09, 0x5e, 0x24, 0x67, 0xa8, 0x0e, 0xa3, 0x7d, 0x5c, 0x33, 0xb8,
- 0x5b, 0xea, 0xfc, 0x1f, 0xac, 0x94, 0x49, 0x6a, 0xaf, 0xc2, 0xa3, 0xc1,
- 0xc1, 0x91, 0x11, 0x60, 0x7f, 0xf2, 0x86, 0xba, 0x8c, 0xb2, 0x28, 0x27,
- 0x7a, 0x0b, 0xf8, 0xb4, 0x9f, 0xd8, 0xce, 0x12, 0x89, 0xd4, 0xb8, 0x2a,
- 0xbb, 0x5c, 0x93, 0x94, 0xc3, 0x3e, 0xed, 0x28, 0x1c, 0xaa, 0x3e, 0xb1,
- 0xca, 0x57, 0xe8, 0x64, 0x62, 0xec, 0xb9, 0x20, 0x57, 0xde, 0xbc, 0xc5,
- 0xfd, 0x43, 0xd7, 0x85, 0xd9, 0xae, 0x66, 0x4d, 0x31, 0x48, 0xc1, 0x83,
- 0x31, 0xfc, 0xeb, 0x6f, 0x70, 0xfd, 0x95, 0xb2, 0x74, 0xee, 0xbd, 0x31,
- 0xb3, 0xa6, 0x77, 0x36, 0x0f, 0x6c, 0x97, 0x0c, 0x99, 0x2f, 0x00, 0x32,
- 0xa3, 0x54, 0x92, 0x46, 0x19, 0x00, 0x37, 0x9a, 0x23, 0x47, 0xcc, 0x1f,
- 0x29, 0x4e, 0x39, 0xcd, 0x1c, 0x8c, 0x2b, 0x36, 0x05, 0x55, 0xd5, 0xc1,
- 0xad, 0x06, 0x22, 0xa2, 0xea, 0x4e, 0x3e, 0x4e, 0xa6, 0x34, 0x3b, 0x19,
- 0x30, 0xf2, 0x2b, 0x97, 0x37, 0x09, 0xe8, 0x4f, 0x5a, 0x73, 0xf9, 0x44,
- 0x1d, 0x36, 0x60, 0x85, 0x10, 0x60, 0xad, 0xfa, 0x6f, 0xd6, 0xe0, 0x25,
- 0xce, 0x17, 0x81, 0x4f, 0x02, 0x6e, 0xec, 0x0b, 0xce, 0xd3, 0x40, 0x3b,
- 0x3b, 0x61, 0x68, 0x36, 0x2e, 0x21, 0xe5, 0x51, 0xac, 0x22, 0x6e, 0x1b,
- 0xd6, 0x49, 0x7b, 0xbf, 0x2d, 0x17, 0x37, 0x86, 0xd9, 0xe3, 0xec, 0x7c,
- 0xb0, 0x6a, 0xbe, 0x26, 0x16, 0xe9, 0xd2, 0xf2, 0x10, 0x52, 0xa9, 0xaa,
- 0xd4, 0x70, 0xcc, 0xbf, 0xad, 0x2e, 0x7b, 0x40, 0x15, 0xb9, 0x67, 0x8e,
- 0xb1, 0x15, 0xc2, 0x26, 0x5d, 0xa0, 0xc3, 0xe1, 0xdb, 0x44, 0xe6, 0xf3,
- 0xc5, 0x97, 0xad, 0xe1, 0xb4, 0x71, 0x85, 0x8f, 0xcb, 0x2e, 0x18, 0x1f,
- 0xd3, 0xcb, 0xfc, 0x9e, 0x4d, 0xe0, 0xa6, 0x06, 0x36, 0x9d, 0xb8, 0xbe,
- 0x2a, 0x33, 0x39, 0xbb, 0x02, 0x26, 0xb0, 0xed, 0xc1, 0x64, 0xd6, 0x55,
- 0x47, 0x3b, 0x6a, 0xa8, 0xc6, 0xdb, 0x3f, 0x6d, 0xc8, 0xf5, 0xff, 0x2c,
- 0xaf, 0x0a, 0xfa, 0x07, 0x7d, 0x81, 0x3e, 0xf0, 0xc5, 0xc1, 0x41, 0x74,
- 0xe6, 0xbd, 0xf3, 0xe5, 0x09, 0xeb, 0x8c, 0x49, 0x18, 0x49, 0x8a, 0xa8,
- 0xc7, 0xdb, 0x5a, 0xa6, 0xff, 0x08, 0x55, 0x73, 0xa1, 0x9b, 0x0d, 0x77,
- 0x08, 0x78, 0x64, 0xde, 0xab, 0x9c, 0x7e, 0x17, 0x65, 0x89, 0xb9, 0x95,
- 0x0f, 0x8b, 0x10, 0xdc, 0xc2, 0xe8, 0x6a, 0x74, 0x24, 0xfd, 0x8b, 0xdf,
- 0xa2, 0x58, 0xd0, 0xdd, 0x17, 0x2f, 0xaf, 0xd6, 0x97, 0x19, 0xf8, 0x66,
- 0x73, 0xdb, 0x6c, 0x3d, 0x68, 0xe5, 0xe4, 0xa5, 0x60, 0x37, 0x05, 0xa7,
- 0x58, 0x37, 0x5e, 0xb2, 0x11, 0x6a, 0x16, 0x5a, 0x2a, 0x04, 0xa7, 0x62,
- 0x92, 0xa5, 0xa4, 0xa1, 0xae, 0x6e, 0x5d, 0x11, 0x2b, 0xa3, 0x03, 0xde,
- 0x34, 0xc1, 0xbd, 0x70, 0x95, 0xf6, 0x1b, 0x56, 0x70, 0x93, 0x4d, 0xbe,
- 0xf8, 0x92, 0x7c, 0x5b, 0xb7, 0xe8, 0x1f, 0xc0, 0x5a, 0x2d, 0x6d, 0xdd,
- 0x1e, 0xda, 0x09, 0x24, 0xde, 0x22, 0xba, 0x83, 0x94, 0x55, 0xff, 0xb0,
- 0x5e, 0x9d, 0x93, 0x37, 0xe4, 0xbc, 0x2c, 0x37, 0x8e, 0xa8, 0xbe, 0x1b,
- 0xec, 0x89, 0x97, 0xcc, 0xc8, 0x29, 0x7e, 0xae, 0x86, 0x93, 0x09, 0x02,
- 0x72, 0xa6, 0x25, 0x2e, 0x63, 0x35, 0xf5, 0xe4, 0x21, 0x93, 0x7e, 0xe6,
- 0x2a, 0x71, 0xbe, 0x18, 0xa0, 0xcc, 0x27, 0xde, 0x31, 0xc6, 0xad, 0x81,
- 0xaf, 0x23, 0x20, 0x90, 0xe8, 0xaf, 0x7f, 0xb4, 0xaf, 0xd3, 0x7f, 0xcc,
- 0x6d, 0x06, 0x22, 0xf7, 0x86, 0xd5, 0x50, 0x28, 0x50, 0xdf, 0xd9, 0x43,
- 0xf8, 0xc9, 0x36, 0x82, 0xda, 0x1e, 0xb0, 0xa2, 0xfd, 0xc7, 0x6d, 0xb8,
- 0x71, 0x35, 0x48, 0x8d, 0xf6, 0x4c, 0xe0, 0x71, 0xb3, 0x32, 0x50, 0x6b,
- 0x29, 0x1b, 0x93, 0xfb, 0x37, 0x61, 0xf6, 0x3d, 0x13, 0xa7, 0x99, 0xeb,
- 0xd4, 0x7f, 0xd8, 0xb2, 0x93, 0xff, 0x61, 0xcb, 0x4d, 0xff, 0x87, 0x2d,
- 0xb7, 0x80, 0x1f, 0xb6, 0x08, 0x86, 0x92, 0x16, 0x11, 0x1a, 0xc4, 0x3f,
- 0xf5, 0xd0, 0xb7, 0xf9, 0xab, 0xee, 0xa3, 0xde, 0x37, 0xbd, 0x4f, 0x6e,
- 0x6d, 0x6f, 0xda, 0x34, 0x3f, 0x36, 0x84, 0xba, 0x98, 0xee, 0x1e, 0x1a,
- 0x76, 0xdd, 0xda, 0x26, 0xb7, 0x2d, 0x64, 0x9c, 0x05, 0x1d, 0xbc, 0xbd,
- 0x07, 0x68, 0xc7, 0x5d, 0x73, 0x2a, 0xaf, 0xe9, 0x82, 0x45, 0xb1, 0xd4,
- 0x73, 0xd0, 0xde, 0xcf, 0x81, 0x3c, 0xb2, 0xaf, 0x07, 0xf2, 0xe7, 0xbf,
- 0x9b, 0x2f, 0x40, 0xff, 0xc7, 0x18, 0x72, 0xab, 0x01, 0x60, 0x23, 0x79,
- 0x79, 0x48, 0x98, 0x2e, 0x38, 0x6a, 0xc9, 0xe2, 0x6f, 0xce, 0x95, 0x46,
- 0x4c, 0x12, 0x41, 0x2e, 0xfd, 0x32, 0x47, 0xab, 0x32, 0xb3, 0xaa, 0x05,
- 0x5b, 0xa8, 0x7b, 0x24, 0x15, 0x90, 0xfb, 0x8a, 0x0e, 0x62, 0x35, 0x4c,
- 0x74, 0x31, 0x5e, 0xa5, 0x0f, 0x1b, 0xef, 0x43, 0x3f, 0x49, 0x93, 0x22,
- 0xbe, 0x28, 0xab, 0xfa, 0x8b, 0xad, 0x8a, 0x3a, 0xbf, 0x26, 0x97, 0x95,
- 0xd1, 0x60, 0xff, 0x48, 0xa4, 0xb5, 0x36, 0x87, 0xe5, 0xee, 0xe9, 0xed,
- 0x70, 0x79, 0x67, 0xe6, 0xbd, 0xfd, 0x93, 0x28, 0xc3, 0x63, 0x69, 0x33,
- 0x44, 0xe9, 0x0d, 0x73, 0x5c, 0x26, 0xdd, 0x3c, 0x05, 0xbe, 0xba, 0xde,
- 0xa5, 0x94, 0xdf, 0x7f, 0x11, 0x83, 0xb9, 0x0b, 0x16, 0xe2, 0x71, 0x5e,
- 0x98, 0x6a, 0x5f, 0x9c, 0x7e, 0xf3, 0x47, 0x1d, 0xe0, 0x87, 0xad, 0xef,
- 0x87, 0xfc, 0x53, 0xd4, 0x0b, 0xbf, 0x48, 0x4e, 0xbf, 0x21, 0xea, 0xfe,
- 0x69, 0x0c, 0x6c, 0xd3, 0x07, 0xbe, 0xe4, 0xbf, 0x80, 0xb2, 0x37, 0x0d,
- 0x7b, 0xe1, 0xf2, 0x24, 0xbe, 0xa0, 0x06, 0xc6, 0xa8, 0x33, 0x82, 0x15,
- 0xbe, 0x5a, 0x51, 0xe5, 0x90, 0xd6, 0xc7, 0x36, 0x5c, 0x1f, 0x8b, 0xa8,
- 0x51, 0x3a, 0x29, 0x39, 0x45, 0xba, 0x09, 0xb1, 0xb1, 0x81, 0xcd, 0x8b,
- 0xb3, 0x15, 0xdf, 0xd5, 0x0a, 0x8e, 0x0b, 0xa8, 0xc3, 0xed, 0x34, 0x83,
- 0x76, 0x2d, 0xe3, 0x20, 0x39, 0x8a, 0x34, 0x41, 0x70, 0xe0, 0x46, 0xfc,
- 0x37, 0xe8, 0x65, 0xb6, 0x37, 0x37, 0x35, 0x54, 0x4b, 0xab, 0x4c, 0x3b,
- 0xe4, 0x48, 0x4f, 0x3f, 0x04, 0x98, 0x0c, 0xc1, 0x44, 0x42, 0x01, 0x12,
- 0x9d, 0x94, 0x44, 0xf4, 0x79, 0xb9, 0x90, 0x2e, 0xee, 0xb5, 0xa1, 0x7a,
- 0x3e, 0x60, 0xdb, 0x46, 0xcf, 0x68, 0x1c, 0xb4, 0x15, 0x12, 0xa9, 0x90,
- 0xcf, 0x46, 0x54, 0x0e, 0x89, 0x26, 0xb2, 0x37, 0x4e, 0x9a, 0xb6, 0x01,
- 0x30, 0x8c, 0x09, 0xff, 0x8f, 0x64, 0xf4, 0x4f, 0x32, 0x38, 0x9f, 0x6c,
- 0x55, 0xe6, 0x50, 0x9c, 0xc3, 0x11, 0x0f, 0x4e, 0x62, 0xef, 0x8d, 0x5e,
- 0x1c, 0x4e, 0x83, 0xd0, 0x52, 0x4d, 0xca, 0x13, 0xfb, 0x9a, 0x54, 0x42,
- 0x49, 0x64, 0xd7, 0xce, 0x36, 0x24, 0x5e, 0xe2, 0x8b, 0xc5, 0x1d, 0x56,
- 0x35, 0x22, 0xbc, 0x6d, 0xc9, 0xef, 0xc4, 0x97, 0xac, 0x8f, 0xa5, 0xa2,
- 0x6f, 0xc9, 0x61, 0x8d, 0x82, 0x17, 0xbe, 0x97, 0xa4, 0xa0, 0xe1, 0xc1,
- 0x0b, 0xaf, 0x4b, 0x11, 0xff, 0x2c, 0x3e, 0xbc, 0x0f, 0x02, 0xa3, 0x01,
- 0xe2, 0x5a, 0xb6, 0x7f, 0xc3, 0xf8, 0x87, 0x76, 0xfc, 0xcf, 0x22, 0xb8,
- 0x2b, 0x8c, 0x8c, 0x12, 0xff, 0xec, 0x85, 0x4b, 0x02, 0x54, 0x2f, 0xaa,
- 0xf5, 0x64, 0xb4, 0x7c, 0x08, 0x0a, 0xf9, 0xcc, 0x98, 0x2c, 0x1c, 0x6e,
- 0x08, 0x9b, 0x3c, 0x30, 0x5c, 0x25, 0xcc, 0x40, 0xac, 0xc3, 0x6c, 0x63,
- 0xd7, 0x44, 0x64, 0x51, 0x2f, 0x84, 0x55, 0x2e, 0x09, 0x82, 0x75, 0xf6,
- 0xc2, 0xf5, 0xbc, 0x64, 0x10, 0x89, 0xdc, 0xcf, 0xaf, 0x77, 0x75, 0xb4,
- 0x41, 0x59, 0x63, 0x0b, 0xe0, 0x38, 0xf8, 0x94, 0x61, 0xc5, 0x0c, 0xbd,
- 0xe4, 0x35, 0x64, 0xdc, 0xde, 0xd9, 0x16, 0xa7, 0x0a, 0x7d, 0x88, 0x5a,
- 0x45, 0x22, 0x11, 0x0a, 0xc5, 0xd8, 0x29, 0x30, 0x33, 0xc4, 0x97, 0x33,
- 0x8c, 0x68, 0x1d, 0x2f, 0xc0, 0xda, 0xed, 0x9d, 0x60, 0xa0, 0x20, 0xe0,
- 0x04, 0xa9, 0xdd, 0xcc, 0xa0, 0x5e, 0x2d, 0x70, 0xa0, 0xd0, 0x48, 0xf6,
- 0xb6, 0x58, 0x06, 0x63, 0xdb, 0xd4, 0x65, 0x2b, 0xa6, 0xc9, 0xf6, 0x17,
- 0xbb, 0xdb, 0x76, 0x69, 0xfd, 0x66, 0x51, 0xd0, 0xf1, 0x51, 0x83, 0x90,
- 0xb6, 0x0f, 0x2c, 0x3c, 0x4b, 0x4b, 0xca, 0x7d, 0xc8, 0x86, 0x38, 0xd0,
- 0x28, 0x82, 0x5e, 0xdd, 0x88, 0xb7, 0x13, 0x89, 0xe5, 0xb8, 0x9d, 0x8c,
- 0xf5, 0xc2, 0x24, 0x9e, 0x2e, 0x1a, 0x4a, 0xd5, 0x47, 0x31, 0x05, 0xa3,
- 0xfd, 0xd5, 0x2f, 0x3c, 0x7d, 0x3c, 0x72, 0x3d, 0x29, 0x90, 0x83, 0x26,
- 0x0a, 0xe2, 0x12, 0xf1, 0x3c, 0x1a, 0x9b, 0x54, 0xef, 0xed, 0x2f, 0x76,
- 0x58, 0x60, 0x39, 0x7f, 0x9a, 0xf7, 0xed, 0xed, 0xe4, 0x87, 0x78, 0x5d,
- 0x6b, 0xc2, 0xef, 0x7a, 0x16, 0x82, 0x90, 0xed, 0x7d, 0x6f, 0x24, 0x2f,
- 0x27, 0xe5, 0xec, 0xee, 0x4f, 0x08, 0x3b, 0xc9, 0x2b, 0x2f, 0xf7, 0xf0,
- 0xa3, 0x8e, 0xca, 0xdc, 0x37, 0x10, 0x46, 0x31, 0x47, 0x85, 0x3f, 0xbf,
- 0xa4, 0xc7, 0xd5, 0x62, 0xd8, 0x4e, 0x46, 0x23, 0xc3, 0x84, 0xea, 0x25,
- 0xda, 0x71, 0x6d, 0x10, 0x2c, 0x8c, 0x77, 0x07, 0x11, 0x4b, 0x4a, 0x8a,
- 0x40, 0x96, 0xc0, 0xb3, 0xa3, 0x56, 0x36, 0x3b, 0x21, 0xf9, 0x57, 0xd5,
- 0x17, 0xa3, 0xe4, 0x95, 0xcd, 0x92, 0xc9, 0x22, 0x18, 0xd9, 0x74, 0x8d,
- 0x59, 0x76, 0x78, 0x25, 0xe1, 0x9f, 0x4f, 0x72, 0x71, 0xb3, 0xcf, 0xca,
- 0x16, 0xee, 0x26, 0x63, 0x3a, 0x18, 0xe1, 0x1e, 0x47, 0x4a, 0x9b, 0x96,
- 0x15, 0xc7, 0x88, 0xd8, 0x9d, 0x6e, 0xed, 0x17, 0x99, 0xda, 0xf0, 0x48,
- 0x80, 0xb9, 0x94, 0x8d, 0x0e, 0x92, 0x67, 0xf6, 0x4b, 0x11, 0xac, 0x7a,
- 0xb6, 0xf8, 0xeb, 0xe4, 0xf3, 0x21, 0x3d, 0xe5, 0x75, 0x8b, 0x15, 0xba,
- 0x6f, 0x67, 0x70, 0x0c, 0x44, 0x29, 0x1c, 0x22, 0x31, 0x29, 0x52, 0x90,
- 0x03, 0x49, 0x30, 0x49, 0xeb, 0xec, 0xe9, 0x63, 0x55, 0x2f, 0x79, 0x97,
- 0x6a, 0xf5, 0xdf, 0xb6, 0x9c, 0xb0, 0x2c, 0x87, 0xbc, 0x05, 0x75, 0x2f,
- 0x02, 0x0a, 0x8b, 0x49, 0x39, 0xa3, 0xe6, 0x5f, 0x9c, 0x83, 0x4b, 0xd2,
- 0xd4, 0x28, 0x92, 0x97, 0x0d, 0x2a, 0x8a, 0x9e, 0x3d, 0xf5, 0x26, 0x7d,
- 0x8f, 0xbb, 0xa2, 0xc3, 0x49, 0x65, 0x85, 0xdd, 0x15, 0xa9, 0xbd, 0x6e,
- 0xbe, 0x1b, 0xdc, 0x4b, 0xf2, 0x75, 0x30, 0xf0, 0x98, 0xac, 0xd1, 0x3a,
- 0x18, 0xef, 0xbb, 0x46, 0xfe, 0x25, 0xf8, 0xa3, 0x12, 0x4e, 0xf7, 0xd3,
- 0x1b, 0x89, 0xda, 0x33, 0x91, 0xf4, 0x7d, 0x9e, 0x04, 0x13, 0xf6, 0xfd,
- 0x74, 0x4d, 0x41, 0x84, 0xf9, 0xba, 0x82, 0xf4, 0x91, 0xc7, 0x58, 0x49,
- 0xd0, 0x3a, 0x25, 0xd1, 0xd3, 0xdf, 0xbd, 0x7a, 0xff, 0xe1, 0xd5, 0xc9,
- 0xc3, 0xbb, 0x02, 0xb5, 0x1a, 0xcd, 0xdd, 0x93, 0x03, 0xeb, 0x83, 0x19,
- 0x74, 0xa0, 0x7e, 0xe2, 0x50, 0x06, 0x41, 0xd4, 0x81, 0xa0, 0x0d, 0xba,
- 0xd9, 0x7a, 0x54, 0x34, 0x46, 0x74, 0x45, 0x49, 0x22, 0x71, 0x08, 0x20,
- 0xce, 0xf3, 0x95, 0x10, 0xb9, 0x97, 0xb9, 0x99, 0xd6, 0xd2, 0x93, 0x71,
- 0x4b, 0xdf, 0xa7, 0xd7, 0xb7, 0x24, 0x79, 0xdc, 0xd6, 0x89, 0xc7, 0xa8,
- 0xdc, 0xd6, 0xb6, 0xdb, 0xd4, 0x2b, 0x6d, 0x6a, 0x2d, 0x02, 0xad, 0xe5,
- 0x7d, 0x2b, 0xe7, 0x73, 0x97, 0x3d, 0xdb, 0x8d, 0xf0, 0xbd, 0x7e, 0xdd,
- 0x5f, 0x72, 0xfb, 0x6b, 0xa2, 0xa5, 0x76, 0x32, 0xd2, 0xb1, 0x8d, 0x8e,
- 0xbb, 0x0f, 0x9b, 0x92, 0xab, 0xd1, 0x5f, 0xca, 0xdc, 0xe2, 0xbb, 0x6a,
- 0x26, 0xe8, 0x23, 0x07, 0xa8, 0x8a, 0x8b, 0x76, 0xb3, 0xe3, 0xa3, 0x73,
- 0x6c, 0xd6, 0xd9, 0xab, 0xf1, 0xd8, 0xca, 0xc2, 0x5a, 0xd2, 0x12, 0x06,
- 0x81, 0x31, 0x06, 0x35, 0xd2, 0x6f, 0x7b, 0x32, 0x4a, 0x6c, 0xa7, 0x58,
- 0x49, 0xe7, 0x44, 0xec, 0xc7, 0xd8, 0x7c, 0x17, 0xeb, 0xa5, 0xb9, 0x30,
- 0x46, 0xe3, 0x9d, 0x6d, 0xd7, 0x12, 0x8a, 0xed, 0x12, 0x1e, 0x71, 0x2e,
- 0xd1, 0xa4, 0x70, 0xd6, 0x44, 0x7b, 0x74, 0xf6, 0x63, 0x8d, 0x21, 0x11,
- 0x97, 0xe7, 0xe0, 0xb5, 0x0f, 0x71, 0x3b, 0x88, 0x3b, 0xd3, 0xb7, 0xc6,
- 0xc7, 0x17, 0x47, 0x66, 0xfb, 0x3e, 0x5c, 0x7c, 0xbd, 0x25, 0xa9, 0x0b,
- 0x5d, 0x14, 0x0c, 0x38, 0xed, 0xa9, 0xc5, 0xeb, 0xb5, 0xad, 0x96, 0xad,
- 0xd8, 0x91, 0x62, 0xac, 0x85, 0x98, 0x06, 0xee, 0x3e, 0x3a, 0xda, 0x70,
- 0x4a, 0x4f, 0x46, 0x4f, 0xba, 0xa7, 0xd4, 0x0f, 0x57, 0xcd, 0x00, 0xc6,
- 0x01, 0xb9, 0x0b, 0x2a, 0x32, 0x65, 0x4f, 0xed, 0xb9, 0xe6, 0x29, 0x08,
- 0xb2, 0x01, 0x5d, 0x27, 0xe5, 0x52, 0xf8, 0x00, 0x3d, 0x4f, 0xa1, 0x04,
- 0xbd, 0xb8, 0x38, 0xb0, 0x9b, 0x2d, 0xdc, 0x90, 0x78, 0x7b, 0x39, 0x1c,
- 0x6a, 0x4e, 0x2c, 0xad, 0x66, 0xb6, 0x2c, 0x34, 0xd4, 0x0f, 0x35, 0xd7,
- 0x8f, 0x5a, 0x32, 0x19, 0x12, 0xd0, 0x96, 0x2c, 0xad, 0x6a, 0xdd, 0xb0,
- 0xb7, 0x82, 0xcb, 0xe7, 0x8b, 0x83, 0x69, 0xc3, 0x8b, 0x8e, 0x2e, 0x2d,
- 0x16, 0x15, 0x7a, 0x63, 0xf6, 0x63, 0x1c, 0xff, 0x99, 0xf6, 0x55, 0xf2,
- 0x45, 0x5e, 0xf2, 0x9f, 0x71, 0x7a, 0x87, 0xc8, 0xad, 0xca, 0x05, 0x3b,
- 0x10, 0xe5, 0x0d, 0x4e, 0xe2, 0xe4, 0x62, 0x17, 0xa9, 0xc3, 0xa8, 0x90,
- 0x70, 0x28, 0x21, 0x1a, 0x34, 0x35, 0x0f, 0xdb, 0x6e, 0xed, 0x8c, 0x77,
- 0xad, 0xa7, 0xf5, 0x02, 0x11, 0x45, 0x8c, 0x16, 0xa9, 0x62, 0xf2, 0x90,
- 0x15, 0x45, 0xbd, 0x8c, 0xa1, 0xfb, 0x78, 0xb7, 0x37, 0xb4, 0x98, 0xc0,
- 0xa8, 0xa7, 0x37, 0xb3, 0x1e, 0xac, 0x3a, 0xb8, 0xb5, 0x90, 0x44, 0x06,
- 0x1b, 0x90, 0x6b, 0xa6, 0x5e, 0x7f, 0xf7, 0xc6, 0x6b, 0xb6, 0xa3, 0x79,
- 0x6a, 0x4c, 0x2f, 0xa2, 0x90, 0xf6, 0xa1, 0xc1, 0x65, 0x2e, 0xd9, 0x72,
- 0x84, 0xa0, 0xea, 0x2c, 0xcb, 0x56, 0x16, 0xda, 0x3c, 0x47, 0x8d, 0x4d,
- 0x5e, 0x23, 0x88, 0x2a, 0xb0, 0xf2, 0x68, 0x27, 0xd7, 0x33, 0x3b, 0x61,
- 0x1d, 0xda, 0x22, 0x12, 0xf6, 0x0e, 0x35, 0x0f, 0xa3, 0x30, 0xee, 0xc1,
- 0xb3, 0x47, 0x9f, 0x1b, 0xd9, 0x7c, 0x07, 0xac, 0x71, 0xb7, 0x65, 0x8c,
- 0x05, 0xdc, 0x8f, 0xf3, 0x27, 0x46, 0x8d, 0xa6, 0xf7, 0x0a, 0x9c, 0x42,
- 0x52, 0x93, 0x19, 0x01, 0x07, 0x95, 0x14, 0x37, 0x87, 0x58, 0x34, 0x66,
- 0x13, 0x65, 0xc3, 0x24, 0xe9, 0x0e, 0xfb, 0xc4, 0x09, 0x62, 0x23, 0x8f,
- 0x80, 0xa9, 0x41, 0x09, 0x75, 0x52, 0x33, 0x2c, 0xe5, 0xfc, 0xe8, 0xe2,
- 0xdc, 0xfc, 0x31, 0xbe, 0x38, 0x3d, 0xef, 0x41, 0x66, 0x6c, 0x18, 0xa6,
- 0x83, 0x36, 0x4d, 0xd3, 0x55, 0xb0, 0xcd, 0x6d, 0xd4, 0x36, 0x64, 0x42,
- 0x33, 0xdb, 0xa9, 0xa3, 0x40, 0x5f, 0x1e, 0xde, 0x57, 0x3d, 0x6a, 0x2d,
- 0x74, 0x6e, 0xe4, 0xc3, 0xc6, 0x85, 0xf1, 0x99, 0x6f, 0xa6, 0x10, 0x2c,
- 0x98, 0x88, 0x91, 0x56, 0x6c, 0x19, 0x3d, 0x66, 0x6b, 0x8c, 0x36, 0x72,
- 0xfe, 0x3b, 0x18, 0x7b, 0x6d, 0x4f, 0xdd, 0x83, 0x66, 0xc8, 0xa9, 0xb9,
- 0xdc, 0x9c, 0xc5, 0x75, 0x6b, 0x37, 0x9c, 0x56, 0xa1, 0x00, 0xb6, 0x92,
- 0x1d, 0x38, 0x90, 0x45, 0x2f, 0xb9, 0x87, 0x7e, 0x8d, 0x2e, 0xb4, 0xeb,
- 0x16, 0x5c, 0x97, 0xcb, 0x8c, 0x3d, 0xfc, 0x9c, 0x9c, 0xab, 0xcc, 0x89,
- 0x65, 0x0b, 0xe3, 0xd2, 0x26, 0x31, 0x3c, 0x0c, 0x0b, 0x21, 0x46, 0xa7,
- 0xbc, 0x6d, 0x11, 0x05, 0x4a, 0xa1, 0x0e, 0x3e, 0x97, 0xcc, 0x58, 0xaa,
- 0x0d, 0xb0, 0xd9, 0xb6, 0x75, 0x56, 0x1e, 0xb6, 0x58, 0x9b, 0x79, 0x1f,
- 0x74, 0x99, 0x0c, 0x81, 0x32, 0xc4, 0x39, 0x0b, 0xfa, 0xe8, 0x69, 0x71,
- 0x3d, 0x12, 0xad, 0x34, 0xc7, 0x06, 0xba, 0x84, 0xdf, 0x3f, 0xf4, 0x4c,
- 0x9e, 0x8a, 0x86, 0xd5, 0x50, 0xbd, 0x48, 0x60, 0x1e, 0x96, 0xb6, 0xe5,
- 0xc8, 0x39, 0x44, 0xb3, 0xee, 0x32, 0xdd, 0x96, 0x3e, 0x17, 0xb2, 0x59,
- 0x55, 0xda, 0x12, 0xd7, 0x91, 0x29, 0x40, 0xa3, 0xe8, 0x6d, 0xfb, 0xd5,
- 0x87, 0x12, 0xdd, 0xd5, 0x60, 0x90, 0x6e, 0xe5, 0x9c, 0x0c, 0xe8, 0x91,
- 0x1d, 0x45, 0xd0, 0x49, 0x3e, 0x14, 0x82, 0x1c, 0x53, 0x18, 0xdb, 0x02,
- 0xf9, 0x0f, 0x33, 0xbb, 0x69, 0x04, 0xa8, 0x44, 0x69, 0x5b, 0x2c, 0xb4,
- 0x66, 0x25, 0x2b, 0xf4, 0xc0, 0x74, 0x0e, 0x21, 0xc2, 0xe0, 0x43, 0x46,
- 0x36, 0x81, 0x4a, 0x1a, 0x19, 0xcf, 0xd9, 0x25, 0xd3, 0xa6, 0xbb, 0x52,
- 0xa0, 0x3c, 0x04, 0x0b, 0x3d, 0xf3, 0x0f, 0x8d, 0x59, 0x1a, 0xac, 0x1f,
- 0xc7, 0x0b, 0x1a, 0x06, 0x5b, 0x60, 0x44, 0x05, 0xf5, 0x0a, 0x08, 0xac,
- 0x45, 0x11, 0x2d, 0xcd, 0x62, 0x48, 0x8b, 0x75, 0xb1, 0xa0, 0x1c, 0xf1,
- 0x36, 0x54, 0x84, 0xaa, 0x81, 0xa3, 0x0d, 0x55, 0xac, 0x3e, 0xb2, 0x44,
- 0x8b, 0x24, 0xdb, 0xf5, 0xfa, 0xed, 0xd5, 0xf5, 0x56, 0xfe, 0x82, 0x40,
- 0xcf, 0xe9, 0xc8, 0x14, 0x91, 0x52, 0x69, 0x2b, 0x2f, 0x72, 0x42, 0x12,
- 0x2a, 0xab, 0x3d, 0xaa, 0x52, 0x21, 0xcc, 0x3e, 0x63, 0x55, 0x96, 0x0b,
- 0xb4, 0xf6, 0x51, 0xd5, 0x2d, 0xd6, 0x90, 0x19, 0x2a, 0x18, 0x63, 0xf0,
- 0x98, 0xc1, 0xdb, 0x95, 0xfb, 0x5e, 0xb3, 0x3a, 0x92, 0xa6, 0x1e, 0x6c,
- 0xc4, 0x28, 0xd6, 0x0e, 0x8e, 0x33, 0x42, 0x90, 0xf1, 0xd8, 0x56, 0xc7,
- 0xb4, 0x35, 0xa9, 0x36, 0x17, 0xc1, 0xb9, 0x42, 0xe5, 0x43, 0xfe, 0x7d,
- 0x4f, 0x2d, 0x9f, 0x36, 0x76, 0x01, 0x38, 0x94, 0xd9, 0x95, 0x01, 0x67,
- 0x87, 0xb4, 0x6f, 0x26, 0x2c, 0x87, 0xf6, 0xd7, 0xea, 0xac, 0x59, 0xaf,
- 0x42, 0x39, 0xef, 0xaa, 0x4f, 0xed, 0x88, 0x1a, 0x14, 0xf5, 0xa6, 0x48,
- 0xa8, 0x0a, 0x6e, 0xfb, 0x7d, 0x74, 0xfe, 0xee, 0x6d, 0x84, 0x26, 0x10,
- 0x48, 0xf7, 0x3e, 0x24, 0x00, 0x15, 0x2f, 0xd4, 0x20, 0x38, 0xd9, 0x32,
- 0xfa, 0xc5, 0xfe, 0x16, 0x03, 0x2d, 0x48, 0xd9, 0x16, 0x47, 0xd9, 0xed,
- 0xdb, 0x66, 0x5f, 0xbc, 0xf9, 0x86, 0x77, 0x46, 0xeb, 0x51, 0xa4, 0x64,
- 0x91, 0x4e, 0x67, 0x87, 0x7a, 0xd1, 0xe3, 0xfe, 0xee, 0x7e, 0xd6, 0xbb,
- 0xf4, 0x0d, 0xb3, 0xda, 0x3a, 0x78, 0x7e, 0x38, 0x3a, 0x78, 0xfa, 0xf9,
- 0xe8, 0x00, 0x9d, 0x6c, 0xbd, 0xb9, 0xb9, 0x8e, 0xab, 0xde, 0x40, 0x91,
- 0x7e, 0xbe, 0x49, 0x3f, 0xa2, 0x2f, 0x7f, 0x61, 0x79, 0x37, 0xa2, 0xe7,
- 0x46, 0xdc, 0x55, 0x27, 0xf8, 0xc6, 0xd2, 0xe8, 0x34, 0x79, 0x11, 0xc4,
- 0x41, 0x86, 0x2e, 0xab, 0x88, 0x69, 0x71, 0x95, 0x13, 0x19, 0x29, 0xca,
- 0xa6, 0xb7, 0x4f, 0xda, 0x10, 0xd0, 0x36, 0x38, 0xc1, 0xed, 0x8c, 0xcf,
- 0x48, 0x59, 0xfa, 0x54, 0xd4, 0x48, 0xc7, 0xd5, 0xed, 0xf7, 0x03, 0xb6,
- 0xf9, 0x93, 0xad, 0x3e, 0x82, 0x70, 0xb1, 0x97, 0xae, 0x0b, 0xd3, 0x05,
- 0x88, 0xa7, 0x2e, 0x4a, 0x90, 0x80, 0xbe, 0xf0, 0x83, 0xaa, 0x71, 0xdb,
- 0x80, 0xb8, 0x2f, 0x64, 0x00, 0x7e, 0xe4, 0x2a, 0x71, 0xfc, 0x4a, 0x62,
- 0x8c, 0x6c, 0xeb, 0x44, 0x3b, 0x70, 0x4e, 0x16, 0x66, 0x89, 0x99, 0xb4,
- 0x0e, 0x47, 0xef, 0xfc, 0xe1, 0x0f, 0x8e, 0x23, 0x71, 0x5b, 0x75, 0xf4,
- 0xf2, 0x78, 0x02, 0xa8, 0x56, 0x8e, 0x55, 0x73, 0x57, 0x80, 0xad, 0x17,
- 0x7f, 0x85, 0x73, 0xf8, 0xc7, 0xe1, 0x5f, 0xcd, 0x3f, 0x7f, 0xdc, 0xd2,
- 0x4b, 0xcd, 0xb0, 0x5c, 0xae, 0x60, 0xc4, 0xc1, 0x1f, 0xe2, 0x80, 0x06,
- 0x49, 0xbb, 0x2d, 0x2d, 0x34, 0x83, 0x8b, 0xd7, 0x67, 0x7c, 0x19, 0x2b,
- 0x0e, 0x7b, 0x83, 0x9a, 0x89, 0x0f, 0x41, 0xad, 0x27, 0x16, 0x8e, 0x8e,
- 0x1a, 0x4c, 0x27, 0x76, 0x2f, 0xbd, 0x57, 0x06, 0x2e, 0xa9, 0xe1, 0x86,
- 0x39, 0x40, 0x6a, 0xf4, 0xdb, 0x4b, 0xf2, 0xaf, 0x70, 0x49, 0xba, 0xe1,
- 0xbb, 0xaa, 0x48, 0x4b, 0xc7, 0x60, 0x02, 0xf6, 0x32, 0x6c, 0xc0, 0x5e,
- 0x87, 0x1b, 0x33, 0xa5, 0x41, 0x22, 0xf0, 0xb7, 0x5c, 0x1b, 0xd1, 0x08,
- 0x96, 0xa2, 0xd9, 0x06, 0xb3, 0x51, 0xca, 0x6d, 0xab, 0xbc, 0xfe, 0x44,
- 0xeb, 0x93, 0x32, 0x1f, 0x2f, 0x57, 0x88, 0xe6, 0xf3, 0x99, 0xd5, 0xfa,
- 0xee, 0x14, 0xb2, 0xc6, 0x16, 0xee, 0x79, 0x3b, 0xeb, 0xa4, 0x83, 0x1e,
- 0xbb, 0x02, 0x51, 0x46, 0x61, 0xb7, 0xe4, 0xb1, 0x2a, 0x7b, 0x00, 0x1a,
- 0x9c, 0xa4, 0xc2, 0x9c, 0x19, 0x3d, 0xd7, 0x92, 0x86, 0x07, 0xcd, 0x44,
- 0x25, 0xed, 0x44, 0x2c, 0x24, 0xfd, 0x76, 0xbb, 0x52, 0x8b, 0x3a, 0xd4,
- 0x90, 0xa3, 0x98, 0xe1, 0xa1, 0x2c, 0xbe, 0x19, 0x7a, 0x66, 0x51, 0xf9,
- 0x44, 0x65, 0xa6, 0x31, 0x1b, 0x68, 0x6d, 0x3e, 0xdf, 0x0c, 0x0a, 0xf2,
- 0xaa, 0x4e, 0xf7, 0x59, 0xd4, 0x56, 0xc0, 0x45, 0x73, 0xca, 0xe8, 0x82,
- 0x7d, 0xea, 0xb4, 0xf9, 0xd8, 0x75, 0xfa, 0xd3, 0x70, 0x6b, 0xed, 0xa8,
- 0x76, 0x53, 0xa0, 0x3d, 0x72, 0x12, 0x1a, 0x34, 0x98, 0xfe, 0x32, 0x06,
- 0xd1, 0xeb, 0x09, 0xd5, 0xc3, 0xfd, 0xd0, 0x95, 0x42, 0x4d, 0x9f, 0xb1,
- 0xc9, 0xc3, 0x7c, 0x75, 0xff, 0x06, 0x2a, 0xcc, 0x17, 0x1d, 0x69, 0x8b,
- 0xb3, 0x58, 0x09, 0x53, 0xaf, 0x2f, 0x2f, 0x81, 0x89, 0x11, 0x66, 0xe6,
- 0xa1, 0x62, 0x51, 0x0a, 0x07, 0xa4, 0x9f, 0x81, 0x61, 0xe4, 0x98, 0xb9,
- 0xee, 0x86, 0x2b, 0x8b, 0x14, 0x86, 0x53, 0xbb, 0xce, 0x24, 0xbd, 0xa5,
- 0xb3, 0xd4, 0xcb, 0x4e, 0xae, 0xb7, 0xd3, 0x64, 0xaa, 0x6c, 0xa8, 0x13,
- 0xed, 0xf2, 0x41, 0x4a, 0x0d, 0x0a, 0x32, 0x60, 0x99, 0x23, 0xc2, 0xd7,
- 0xd0, 0xcf, 0xfb, 0x36, 0xba, 0x1b, 0xc9, 0xc3, 0x46, 0xfd, 0x71, 0x18,
- 0x8e, 0x27, 0x9f, 0x0b, 0x88, 0x1f, 0xa3, 0xb0, 0x55, 0x16, 0xd5, 0x8a,
- 0xf5, 0x4a, 0xe1, 0x47, 0x5d, 0xa9, 0x39, 0xc7, 0x76, 0x6c, 0xf2, 0x0b,
- 0x38, 0x56, 0xe8, 0x6b, 0x4b, 0x8f, 0x47, 0x87, 0xc1, 0xc1, 0xd6, 0x8b,
- 0xe1, 0x74, 0x3a, 0x1d, 0x42, 0x0f, 0x78, 0xc9, 0xca, 0xc9, 0x9e, 0x28,
- 0x07, 0x3d, 0x3e, 0x83, 0x71, 0x26, 0xfb, 0xfd, 0xfa, 0xf5, 0x6b, 0xd1,
- 0x63, 0x2e, 0xae, 0x3a, 0x1a, 0x85, 0x05, 0x9c, 0x12, 0x8d, 0x2a, 0xd6,
- 0xe6, 0xb0, 0xbe, 0x5a, 0x37, 0x33, 0x74, 0x43, 0x26, 0x96, 0xa1, 0xac,
- 0xd7, 0xd6, 0xc8, 0x76, 0x50, 0x41, 0xa9, 0x29, 0xfd, 0xc0, 0x65, 0x26,
- 0x9a, 0xb1, 0x83, 0xa3, 0x59, 0x71, 0x03, 0x14, 0xbc, 0x28, 0x63, 0x77,
- 0x5b, 0xac, 0xf2, 0x54, 0x7d, 0xe8, 0x2e, 0x9d, 0x60, 0x1d, 0xcb, 0x64,
- 0xd3, 0x51, 0xf0, 0xd9, 0x34, 0x97, 0x0c, 0xb0, 0x54, 0xbe, 0xd5, 0x1d,
- 0xfb, 0x9e, 0xf3, 0x90, 0xad, 0x6e, 0x1f, 0xc9, 0xd3, 0xde, 0x23, 0x89,
- 0x6e, 0x3e, 0x59, 0x55, 0xb4, 0xed, 0x3b, 0xaf, 0x81, 0x28, 0xfa, 0x5a,
- 0x2e, 0xc4, 0xeb, 0x2b, 0xca, 0xdf, 0x5a, 0xd0, 0xe1, 0x98, 0x29, 0xd7,
- 0xcc, 0x04, 0x44, 0x7e, 0x8c, 0xc7, 0x27, 0x7b, 0x17, 0x27, 0xe3, 0x20,
- 0xe3, 0xfd, 0x8e, 0x5c, 0xc6, 0xdc, 0x44, 0xbb, 0xe5, 0xf2, 0xe4, 0x2d,
- 0x02, 0x38, 0x74, 0x39, 0x6f, 0x53, 0x38, 0x7f, 0x25, 0x8a, 0x77, 0xb2,
- 0x2e, 0xb4, 0x18, 0xc6, 0xca, 0xee, 0x22, 0x2b, 0x50, 0x44, 0x4e, 0x22,
- 0x1c, 0x37, 0x00, 0x09, 0xb1, 0x75, 0xf2, 0xfe, 0xd5, 0x05, 0x95, 0xb7,
- 0x34, 0x92, 0xe2, 0x41, 0x2e, 0xa0, 0xd0, 0x33, 0x7e, 0x63, 0x71, 0x09,
- 0x10, 0xb5, 0x49, 0xa7, 0xae, 0x19, 0x8a, 0x2a, 0xeb, 0x7c, 0x7c, 0xb5,
- 0x12, 0xde, 0xa6, 0xed, 0x37, 0x5b, 0x2a, 0xd2, 0xa1, 0x4b, 0xf3, 0xdd,
- 0xd3, 0x38, 0x88, 0x9e, 0x06, 0x6f, 0x40, 0xfc, 0x3a, 0x9c, 0x0b, 0x2b,
- 0xd7, 0x8d, 0x96, 0x2a, 0x7e, 0x9d, 0xfe, 0xa2, 0xbc, 0xcc, 0xc9, 0x13,
- 0x88, 0xf3, 0xf2, 0x03, 0x6f, 0x81, 0x9b, 0x94, 0x77, 0xa7, 0xe6, 0x52,
- 0x9c, 0x36, 0x80, 0x2d, 0x5f, 0x11, 0x92, 0x13, 0x76, 0x4f, 0x6d, 0x1f,
- 0x26, 0x2d, 0x81, 0x0c, 0x2b, 0x0c, 0x81, 0x9d, 0x97, 0x4f, 0x8d, 0x89,
- 0x30, 0xa5, 0xec, 0x0f, 0x94, 0x03, 0xd6, 0xed, 0x14, 0xdb, 0xbc, 0x05,
- 0xcb, 0xa7, 0x1e, 0xd2, 0x3a, 0x8c, 0x55, 0x40, 0x53, 0x90, 0x15, 0x6e,
- 0xf4, 0xc3, 0x3f, 0x6d, 0x09, 0x8f, 0xaf, 0xc8, 0x22, 0xbb, 0x0c, 0x84,
- 0xae, 0x45, 0xa1, 0x88, 0x20, 0xff, 0x41, 0x45, 0x45, 0x79, 0xbf, 0xf4,
- 0x36, 0xf6, 0x21, 0xdd, 0x37, 0xa1, 0x77, 0x0f, 0xba, 0xed, 0xcc, 0x18,
- 0x95, 0xb0, 0x0d, 0x56, 0xdd, 0x82, 0x06, 0xd2, 0x44, 0xdf, 0xce, 0x70,
- 0x5f, 0x1d, 0xb9, 0xf6, 0x09, 0x1d, 0xfc, 0xa0, 0x56, 0x6b, 0x05, 0x8e,
- 0x43, 0x52, 0x0c, 0xea, 0x86, 0xba, 0xb0, 0xde, 0xf4, 0x18, 0x39, 0xac,
- 0xc4, 0x5e, 0x38, 0x34, 0x76, 0xbe, 0x1f, 0xac, 0x05, 0x66, 0x36, 0x4b,
- 0x95, 0xa0, 0x67, 0x34, 0x40, 0xff, 0x1f, 0xdb, 0xae, 0x3b, 0xd0, 0x28,
- 0xe2, 0x87, 0x50, 0xe9, 0x10, 0x02, 0x08, 0xbb, 0xd0, 0xd3, 0xc0, 0x4d,
- 0xd8, 0x7d, 0x37, 0x6c, 0xef, 0xc1, 0xcb, 0xdb, 0x3c, 0x9f, 0xaf, 0x8f,
- 0x5e, 0xbd, 0xb1, 0x30, 0x02, 0xbf, 0x05, 0xb2, 0xb0, 0xf3, 0x6a, 0x4e,
- 0x32, 0xee, 0x02, 0xb1, 0x56, 0x47, 0x09, 0x4e, 0x47, 0x09, 0x15, 0xb4,
- 0x62, 0xd4, 0xb5, 0x3a, 0xe3, 0x1b, 0xd2, 0xdb, 0x0c, 0xa1, 0xd7, 0x33,
- 0xe2, 0x67, 0x1f, 0x88, 0xc7, 0x9a, 0x34, 0x65, 0xae, 0xad, 0xf2, 0x08,
- 0xf9, 0x12, 0x84, 0xbc, 0x28, 0x27, 0xe5, 0x7c, 0xbe, 0x41, 0xba, 0x33,
- 0x3c, 0x24, 0x6a, 0xa0, 0x98, 0x60, 0xb6, 0x68, 0x1b, 0xe9, 0xbd, 0x09,
- 0xcd, 0xde, 0x1c, 0xa9, 0xb9, 0x6a, 0x5b, 0x52, 0x98, 0x00, 0x95, 0x3c,
- 0xb8, 0x1b, 0xed, 0xc2, 0x74, 0xb5, 0x19, 0xd4, 0xc4, 0x43, 0x61, 0x3e,
- 0xbb, 0x63, 0x34, 0x4d, 0xc8, 0x02, 0xfb, 0xd7, 0xc9, 0x7f, 0xfd, 0xf3,
- 0xaf, 0x3f, 0x46, 0xba, 0x1b, 0x90, 0xc3, 0xef, 0x8a, 0x2b, 0x0b, 0xcd,
- 0xd3, 0x4b, 0x41, 0x6d, 0xb1, 0x38, 0xf1, 0x9c, 0x68, 0xc2, 0xf1, 0x8c,
- 0xa6, 0xce, 0x16, 0xf3, 0x91, 0x97, 0x53, 0x19, 0x8a, 0x45, 0x32, 0xa1,
- 0xf4, 0x83, 0xe8, 0x56, 0x47, 0xa5, 0xe0, 0x5c, 0xbe, 0x4b, 0xc8, 0xdd,
- 0x68, 0x11, 0xe4, 0x52, 0xa6, 0x2d, 0xb2, 0x2f, 0x9f, 0x44, 0x80, 0x1f,
- 0xe3, 0xda, 0xf8, 0x74, 0x83, 0xe9, 0x1f, 0xce, 0x8f, 0xad, 0xab, 0xd3,
- 0xe7, 0xca, 0x57, 0x86, 0x52, 0xef, 0x86, 0xd9, 0x5d, 0x36, 0x31, 0x5c,
- 0xa2, 0x56, 0xe0, 0x87, 0xe1, 0xb2, 0x4e, 0x5e, 0x2e, 0x0d, 0x8d, 0xe7,
- 0x3d, 0x90, 0x1d, 0x5f, 0xd3, 0x6b, 0x89, 0xbe, 0x66, 0xf1, 0x4b, 0x2f,
- 0xcb, 0xca, 0xec, 0xd0, 0x52, 0xaa, 0x71, 0xa5, 0x24, 0xb9, 0xed, 0xcc,
- 0x48, 0x50, 0x60, 0x12, 0xb8, 0x03, 0xae, 0x1f, 0x8b, 0xc6, 0x0d, 0x30,
- 0x36, 0x0f, 0x28, 0x0c, 0xca, 0xfa, 0xda, 0x28, 0x8f, 0x66, 0xf6, 0xc6,
- 0xc8, 0x26, 0x6b, 0xbd, 0x1e, 0x08, 0x49, 0x55, 0x8a, 0x23, 0x17, 0x85,
- 0x11, 0xb0, 0x65, 0x88, 0x6c, 0x61, 0x19, 0xa6, 0xe3, 0xaf, 0xc8, 0x76,
- 0x31, 0xf5, 0xd1, 0xdf, 0xa4, 0x77, 0x71, 0xb8, 0xaf, 0xba, 0x00, 0x76,
- 0x83, 0x26, 0x2e, 0x7b, 0x95, 0x0a, 0x36, 0x72, 0xed, 0x2f, 0xec, 0x7b,
- 0x62, 0xad, 0xa9, 0x1c, 0x5c, 0xca, 0x65, 0x3a, 0xb3, 0x85, 0xf4, 0x3e,
- 0x74, 0x20, 0xca, 0x10, 0x53, 0xaa, 0x8b, 0xcc, 0x16, 0x23, 0xe9, 0xaa,
- 0x8d, 0xb4, 0x2a, 0x37, 0x26, 0x18, 0x6e, 0x17, 0xd7, 0xa5, 0xa6, 0x14,
- 0x01, 0xae, 0x86, 0x15, 0x87, 0x3e, 0xca, 0xca, 0xc5, 0xf3, 0x10, 0x8d,
- 0xf5, 0x5e, 0x08, 0x5e, 0xce, 0x25, 0xcc, 0x7e, 0xb1, 0x1f, 0x00, 0x96,
- 0x8c, 0xde, 0x61, 0x0c, 0x43, 0x42, 0x6f, 0x23, 0xbd, 0x82, 0x78, 0x08,
- 0x1f, 0xf8, 0x91, 0x1c, 0x78, 0x67, 0x38, 0x8a, 0xb5, 0x3c, 0x7d, 0xf2,
- 0xe4, 0x09, 0xc7, 0x5a, 0xb6, 0x8e, 0xf1, 0xe1, 0xf3, 0xa3, 0xd7, 0xa7,
- 0xef, 0xde, 0x1d, 0xbd, 0x7f, 0x73, 0xf4, 0x46, 0x33, 0x3e, 0xbc, 0x95,
- 0x38, 0xea, 0x08, 0x57, 0x44, 0x59, 0x82, 0x66, 0x9f, 0x0f, 0x9e, 0xec,
- 0x0f, 0x0f, 0x9f, 0xec, 0x27, 0x86, 0x16, 0x53, 0x5b, 0xa7, 0x96, 0x2e,
- 0x52, 0xb2, 0x6f, 0xaf, 0xd6, 0x46, 0x55, 0x23, 0x68, 0xcf, 0x86, 0x30,
- 0x37, 0xe0, 0x7a, 0x25, 0x6f, 0x4f, 0xd6, 0x90, 0x1d, 0x1d, 0xc9, 0x0c,
- 0x18, 0x6d, 0x59, 0x90, 0x36, 0x17, 0xb0, 0x14, 0xdd, 0x07, 0x04, 0x7a,
- 0xb8, 0x4f, 0x1f, 0x1a, 0x25, 0x6f, 0x8d, 0xf6, 0x31, 0x2f, 0x6f, 0x99,
- 0x16, 0x5f, 0x5f, 0x19, 0xa5, 0x34, 0x0b, 0x43, 0x95, 0xed, 0xf7, 0xe9,
- 0xf5, 0x47, 0xfc, 0xfa, 0x6f, 0x18, 0xa3, 0x7f, 0xf2, 0xbc, 0x6d, 0x58,
- 0x9a, 0x8b, 0x0c, 0x54, 0x78, 0x2d, 0x49, 0xec, 0xc1, 0xf7, 0x1f, 0xb3,
- 0x39, 0xfe, 0xf5, 0xab, 0x33, 0x7a, 0xda, 0x98, 0xe5, 0xa7, 0xdf, 0xff,
- 0xc5, 0x95, 0x79, 0x5e, 0x1f, 0x68, 0x36, 0xa3, 0x54, 0xb2, 0xa2, 0x11,
- 0x5f, 0x11, 0x06, 0xbd, 0x9d, 0x32, 0x6b, 0x0d, 0x42, 0x15, 0x32, 0x58,
- 0x21, 0x65, 0xa0, 0x9a, 0xad, 0xe3, 0x1e, 0x59, 0x72, 0x68, 0x55, 0x2d,
- 0x57, 0x3c, 0x56, 0xd7, 0x6f, 0x58, 0x39, 0x4d, 0xe3, 0x36, 0xe7, 0xbe,
- 0x0f, 0x79, 0x31, 0xe3, 0xc6, 0xb4, 0x2d, 0xc7, 0x6c, 0x53, 0xad, 0xb3,
- 0x98, 0xd7, 0x74, 0x23, 0xc6, 0x0e, 0x29, 0xb5, 0x55, 0xbe, 0x4c, 0xab,
- 0x9c, 0xdb, 0xcf, 0x13, 0x81, 0xdf, 0x70, 0xaf, 0x4c, 0x4e, 0x95, 0x42,
- 0xec, 0xcb, 0x81, 0xc9, 0x96, 0x41, 0xda, 0xa9, 0xed, 0xe5, 0x40, 0x44,
- 0xcc, 0xb0, 0x46, 0x12, 0xa3, 0xe4, 0xcd, 0xda, 0x08, 0x43, 0xd7, 0xb6,
- 0xff, 0xad, 0x42, 0xd1, 0x07, 0x3a, 0x97, 0xbc, 0x3d, 0x3e, 0x39, 0xda,
- 0x4d, 0xde, 0x66, 0x8d, 0x94, 0x38, 0x69, 0x86, 0x31, 0x89, 0xfc, 0x7f,
- 0x83, 0x82, 0x65, 0x41, 0x09, 0xa5, 0x46, 0x38, 0x9a, 0x0b, 0x26, 0x3e,
- 0x38, 0x28, 0x1b, 0x5a, 0x2f, 0xc5, 0x87, 0x83, 0x25, 0x52, 0x3c, 0x4e,
- 0x73, 0xcb, 0x34, 0xbe, 0x29, 0x27, 0x1f, 0xc9, 0xbb, 0x55, 0x9c, 0x87,
- 0x91, 0x87, 0x78, 0x56, 0xfa, 0x29, 0x04, 0x34, 0x69, 0xc9, 0x79, 0xd6,
- 0x78, 0x71, 0x5e, 0xaf, 0x16, 0xc4, 0x0d, 0xa2, 0x28, 0x2f, 0x8b, 0xcc,
- 0x55, 0xf6, 0x81, 0xf2, 0xb9, 0x53, 0xbc, 0x18, 0x3d, 0x60, 0xa8, 0xb4,
- 0x5e, 0x6f, 0xe3, 0xbe, 0xd6, 0x8d, 0xa3, 0xb4, 0x13, 0xfe, 0x73, 0xef,
- 0xcb, 0x28, 0xf8, 0x98, 0x36, 0xb2, 0x40, 0xcf, 0x5c, 0x79, 0x03, 0x14,
- 0xc5, 0x3d, 0xd4, 0x45, 0xc8, 0xab, 0xda, 0xd9, 0xa2, 0x84, 0x88, 0xfa,
- 0x0a, 0xdf, 0x9d, 0x9a, 0xbb, 0x7f, 0x91, 0x3e, 0x4d, 0xaa, 0x3f, 0x50,
- 0x09, 0xb8, 0x93, 0x2e, 0xdc, 0xa5, 0xd7, 0x66, 0x19, 0x27, 0xb1, 0x96,
- 0x68, 0xcc, 0x95, 0xa5, 0x25, 0x2f, 0x6b, 0x53, 0x94, 0xad, 0x9f, 0x6a,
- 0xba, 0xbe, 0xce, 0x97, 0x1e, 0xbb, 0x12, 0xf0, 0x6a, 0xf8, 0x52, 0xb8,
- 0x8a, 0xac, 0x8e, 0xba, 0xfc, 0xa5, 0xbc, 0x4d, 0x42, 0x7b, 0x68, 0xa9,
- 0xca, 0x4e, 0x19, 0xd6, 0xa1, 0xd7, 0xa4, 0xd0, 0x71, 0x65, 0x17, 0xfa,
- 0x10, 0x54, 0x8c, 0x97, 0x19, 0xd1, 0x96, 0xe4, 0xeb, 0x3e, 0x0b, 0xea,
- 0xea, 0xec, 0xfe, 0x67, 0xda, 0x96, 0x68, 0xa8, 0x2e, 0x9a, 0xbd, 0x83,
- 0x4e, 0x49, 0x7d, 0x3f, 0xa8, 0xea, 0x7d, 0xfa, 0x29, 0x47, 0x21, 0xe2,
- 0x1a, 0xea, 0x5c, 0x5a, 0x68, 0xbd, 0x15, 0x4f, 0xd3, 0xe2, 0xbc, 0x1b,
- 0x72, 0x1b, 0xa1, 0x9c, 0x21, 0xae, 0x7d, 0x32, 0x64, 0x19, 0x39, 0x0d,
- 0x08, 0x85, 0x55, 0xe7, 0xb3, 0x40, 0x45, 0x83, 0xbd, 0x2d, 0xaa, 0xa8,
- 0x51, 0x3d, 0x24, 0x74, 0xc5, 0x08, 0x2e, 0x74, 0x86, 0x86, 0xcb, 0x70,
- 0xf9, 0xdd, 0x08, 0xc4, 0xd8, 0x76, 0x95, 0x31, 0x34, 0xfd, 0xc8, 0x58,
- 0xa2, 0x4b, 0x2a, 0x09, 0x50, 0xfc, 0x66, 0x5a, 0xb2, 0x6c, 0x8f, 0xe1,
- 0x6d, 0x97, 0xf9, 0x75, 0x2c, 0xcb, 0x82, 0xf2, 0x23, 0x64, 0x62, 0xc8,
- 0xd2, 0x70, 0xed, 0x62, 0x35, 0xed, 0xd8, 0x86, 0xb4, 0xd9, 0x2f, 0x4d,
- 0x38, 0x80, 0xb2, 0xb3, 0xc1, 0x0d, 0x5e, 0x90, 0xc6, 0x4a, 0x80, 0x5e,
- 0x05, 0x37, 0xe8, 0xfd, 0xda, 0x68, 0x3e, 0x2f, 0xb6, 0x2c, 0xa2, 0x3a,
- 0xfc, 0xaa, 0xe0, 0x8e, 0x2d, 0xca, 0x91, 0x96, 0xd1, 0xc3, 0x68, 0xdf,
- 0x31, 0xd1, 0xdc, 0x1b, 0x65, 0x5c, 0xb6, 0xe0, 0x26, 0x4c, 0x6b, 0xb6,
- 0x05, 0x30, 0x5c, 0x31, 0x1a, 0x22, 0xc6, 0xd3, 0x94, 0xbe, 0x1f, 0xbe,
- 0xc6, 0xc7, 0x87, 0x5f, 0x63, 0xb8, 0x3f, 0x6e, 0x59, 0x87, 0x6f, 0xf7,
- 0x57, 0x2f, 0xc2, 0x46, 0xc1, 0xce, 0x6f, 0xc8, 0x86, 0xc7, 0x5a, 0xab,
- 0x32, 0x90, 0x48, 0x22, 0x13, 0xe4, 0x1e, 0x5c, 0xe6, 0x8a, 0xec, 0xe9,
- 0x81, 0x23, 0x9a, 0x52, 0x87, 0x5d, 0x36, 0x6d, 0xca, 0x81, 0x91, 0x22,
- 0x2b, 0x80, 0xe9, 0xcc, 0x86, 0xe5, 0x7c, 0x88, 0x0c, 0x69, 0xc3, 0xfc,
- 0x3f, 0x51, 0x32, 0x92, 0x77, 0xeb, 0x00, 0x10, 0x02, 0xec, 0xed, 0xd9,
- 0x2c, 0xa6, 0x9a, 0x73, 0x21, 0x23, 0x69, 0x1d, 0x42, 0xf8, 0x5a, 0x68,
- 0xc1, 0x07, 0xf9, 0x42, 0xbc, 0xf2, 0x78, 0xdd, 0x76, 0xa1, 0x22, 0x64,
- 0x2e, 0x29, 0x88, 0x08, 0xfc, 0x69, 0x28, 0x8f, 0x18, 0xb0, 0xf6, 0x8e,
- 0x55, 0xc3, 0x86, 0x5b, 0xb2, 0x2b, 0x17, 0xfe, 0xe7, 0xf5, 0x0a, 0x2a,
- 0x2b, 0x21, 0x76, 0x06, 0xde, 0x17, 0x2d, 0x12, 0x01, 0x16, 0xa7, 0x11,
- 0xfe, 0x4f, 0x46, 0xfb, 0x83, 0x20, 0x50, 0xdf, 0xc0, 0xd8, 0x2f, 0x5c,
- 0x96, 0x90, 0x79, 0x18, 0x3c, 0x72, 0x18, 0xab, 0xae, 0xad, 0x9b, 0x3b,
- 0xe2, 0xd7, 0xb6, 0x98, 0x16, 0xa9, 0xc5, 0xae, 0xee, 0xc1, 0xe5, 0xf4,
- 0x60, 0x0b, 0x85, 0x6d, 0x72, 0x15, 0x6d, 0x0c, 0xe2, 0x54, 0x32, 0xb6,
- 0xbe, 0x1c, 0x76, 0xdb, 0x64, 0xda, 0x6e, 0x67, 0x7e, 0xf5, 0x86, 0xd7,
- 0xb7, 0xac, 0xd7, 0xd3, 0x04, 0x34, 0xd1, 0x57, 0xda, 0xfa, 0x66, 0x68,
- 0x36, 0x55, 0x3a, 0xba, 0x0e, 0x33, 0xfa, 0x21, 0x03, 0x76, 0x28, 0x70,
- 0x68, 0xdd, 0xbf, 0x67, 0x0c, 0xb2, 0xfb, 0x8c, 0x76, 0xcc, 0xb6, 0x16,
- 0xd0, 0x1e, 0x3a, 0x4e, 0x3e, 0x80, 0x6c, 0xbd, 0xbb, 0xd4, 0xdd, 0x33,
- 0xe2, 0x2a, 0xc4, 0x09, 0x0a, 0xcd, 0xf9, 0x46, 0x43, 0xf6, 0xdb, 0xbb,
- 0xde, 0xd4, 0xe2, 0x9e, 0x9c, 0x5f, 0x5c, 0x9b, 0xb7, 0xa4, 0xd8, 0x0f,
- 0xdf, 0x9b, 0x63, 0x78, 0x91, 0xfc, 0x67, 0x99, 0x71, 0xcd, 0xea, 0x3d,
- 0x25, 0xab, 0xdf, 0xbd, 0x3a, 0x7f, 0x7f, 0xfc, 0xfe, 0xab, 0x17, 0x96,
- 0xc7, 0x11, 0xbf, 0xeb, 0xf6, 0xb4, 0xb0, 0xbc, 0x1b, 0xbf, 0x65, 0xe4,
- 0x56, 0xf2, 0xfe, 0xf4, 0x61, 0x6c, 0x53, 0x2c, 0x13, 0xec, 0x99, 0x9d,
- 0x97, 0x55, 0xc6, 0x71, 0x11, 0xb6, 0x45, 0xb5, 0x72, 0x42, 0xca, 0x35,
- 0x21, 0x2a, 0xd1, 0xb8, 0x2d, 0x02, 0xd8, 0x30, 0x3c, 0xa1, 0x33, 0x59,
- 0x94, 0xad, 0x1e, 0x51, 0x44, 0x94, 0x0b, 0x1c, 0x7f, 0xe9, 0x53, 0x00,
- 0x5b, 0xcc, 0xda, 0x51, 0x9d, 0x9d, 0x3e, 0x91, 0xe0, 0x2d, 0x63, 0x64,
- 0xab, 0xe7, 0xd5, 0xf6, 0xc7, 0x91, 0x26, 0x17, 0x35, 0x8e, 0xac, 0xce,
- 0xe1, 0x6c, 0xb0, 0x5b, 0xa2, 0x39, 0x5e, 0x11, 0x3f, 0x88, 0xc0, 0x4b,
- 0xa7, 0x6b, 0xbe, 0x2f, 0x8c, 0x4e, 0x26, 0x3f, 0x75, 0x75, 0x19, 0x76,
- 0x07, 0x1e, 0x9c, 0xe6, 0xec, 0xf2, 0x9c, 0x59, 0x9f, 0x67, 0x03, 0xd1,
- 0x63, 0x59, 0xe6, 0x4f, 0x12, 0x25, 0x51, 0x1c, 0x92, 0x45, 0xe6, 0xaa,
- 0x92, 0xac, 0xae, 0x73, 0xc5, 0xba, 0xce, 0x62, 0x15, 0x80, 0xed, 0x51,
- 0x9a, 0x79, 0x42, 0xbf, 0x51, 0xa7, 0x0e, 0x05, 0xaf, 0x20, 0x81, 0xd5,
- 0x2c, 0x69, 0x81, 0xdb, 0xd9, 0xd6, 0x90, 0xcc, 0xd4, 0x43, 0x79, 0x4a,
- 0x78, 0x4f, 0x19, 0xe3, 0x8d, 0xf9, 0x15, 0x30, 0xe6, 0xeb, 0x66, 0x8f,
- 0x57, 0xeb, 0xc9, 0x72, 0xf6, 0x24, 0x79, 0x69, 0xfe, 0x13, 0x28, 0x59,
- 0xc8, 0x19, 0x1d, 0xbf, 0x36, 0x8a, 0x16, 0x25, 0xb8, 0x90, 0xbc, 0x60,
- 0xc8, 0x1b, 0xaf, 0x8b, 0xc4, 0xa3, 0x43, 0x33, 0xd3, 0xdb, 0x54, 0xa1,
- 0x2d, 0x8d, 0x46, 0x78, 0x99, 0x37, 0x9c, 0xa7, 0xd7, 0x83, 0x1b, 0xe4,
- 0xa5, 0x36, 0xe0, 0xcc, 0x0f, 0x0e, 0x3f, 0x4f, 0xa8, 0xf8, 0xe0, 0xdd,
- 0x9b, 0x27, 0xc9, 0xf4, 0x2a, 0x9b, 0x7e, 0xaa, 0xd7, 0x4b, 0x65, 0xc7,
- 0xb4, 0xa7, 0xc6, 0x3c, 0xa0, 0x79, 0x06, 0x88, 0x0f, 0x66, 0xe2, 0x8b,
- 0x7c, 0x4a, 0xa5, 0x7f, 0x83, 0x56, 0x74, 0x6a, 0xae, 0xd1, 0x29, 0xcf,
- 0x0e, 0xb5, 0x62, 0x03, 0xe9, 0x02, 0x9c, 0x53, 0x13, 0x09, 0x5e, 0x98,
- 0x3d, 0x30, 0x1f, 0xaf, 0xb9, 0x9b, 0xf5, 0x46, 0x97, 0xed, 0xb3, 0xb6,
- 0xd7, 0x9b, 0x2e, 0xf6, 0xfe, 0xe8, 0x79, 0x4f, 0x7f, 0x8e, 0x56, 0x6b,
- 0x0e, 0xaa, 0x55, 0xb2, 0xd5, 0x76, 0xb0, 0x07, 0x48, 0xcb, 0xa7, 0x49,
- 0x12, 0x20, 0x94, 0x86, 0xf1, 0x82, 0x8f, 0xd3, 0x93, 0x7b, 0xf4, 0x84,
- 0xf4, 0x96, 0x43, 0x16, 0x5b, 0x06, 0x4c, 0x0a, 0x26, 0x2d, 0xa4, 0x09,
- 0xd9, 0x28, 0xa0, 0x45, 0x38, 0x43, 0x08, 0x36, 0x54, 0xda, 0x6c, 0xfd,
- 0xb7, 0xba, 0x6c, 0x1c, 0x8b, 0x91, 0x12, 0x5a, 0x0f, 0xcd, 0x41, 0x6b,
- 0x09, 0x81, 0xd7, 0x46, 0x36, 0x45, 0x40, 0x64, 0xf6, 0xbb, 0x1c, 0x97,
- 0x76, 0xc7, 0x51, 0x33, 0x1a, 0x21, 0x9c, 0xe7, 0xd4, 0x25, 0x96, 0x2d,
- 0xea, 0xf2, 0xa6, 0xb8, 0xac, 0xc8, 0x3f, 0x82, 0xa2, 0xb0, 0x34, 0x16,
- 0xcb, 0x88, 0x99, 0xc5, 0xc9, 0x7c, 0x0d, 0x4b, 0x08, 0xc3, 0xeb, 0xae,
- 0x09, 0x7a, 0xa6, 0xd1, 0xd1, 0xa5, 0xa2, 0x11, 0xc2, 0xa0, 0x03, 0x8f,
- 0x8a, 0x84, 0xb0, 0xa0, 0x6b, 0x18, 0x71, 0x2d, 0x43, 0x0e, 0xd8, 0xda,
- 0x83, 0xd1, 0xbe, 0xe6, 0x5a, 0x45, 0x6c, 0x79, 0xef, 0xac, 0xf7, 0x07,
- 0x72, 0xde, 0xe6, 0x8d, 0x1e, 0xa3, 0xc4, 0x07, 0x5f, 0x93, 0x24, 0x99,
- 0xd6, 0x41, 0xd3, 0xb7, 0x3c, 0x85, 0x9b, 0xb3, 0x25, 0xcc, 0xad, 0xe9,
- 0x49, 0xe3, 0x33, 0x3b, 0x26, 0x8e, 0xb0, 0x6c, 0xd6, 0x1a, 0x68, 0x23,
- 0xf3, 0xf2, 0xbb, 0xc0, 0xf1, 0x74, 0x0f, 0x24, 0x9e, 0x43, 0xff, 0x3a,
- 0xec, 0x52, 0xaf, 0xf9, 0xf5, 0x43, 0xa8, 0x37, 0xb2, 0x96, 0x83, 0x8d,
- 0xd3, 0x68, 0x95, 0x7c, 0xec, 0x0f, 0xdc, 0xe7, 0xf6, 0x6d, 0x6b, 0x05,
- 0x9e, 0x8f, 0xde, 0xaf, 0x30, 0xbc, 0x1d, 0x62, 0xe7, 0xe3, 0x0d, 0xaa,
- 0x9b, 0x29, 0xab, 0x21, 0xe9, 0xfe, 0x8b, 0x6c, 0x16, 0xe8, 0x62, 0xb1,
- 0xc3, 0x00, 0xcf, 0xce, 0xeb, 0x9a, 0x94, 0x64, 0xd2, 0x8f, 0x41, 0xe8,
- 0x14, 0x7f, 0xc2, 0x92, 0xac, 0x73, 0x20, 0x96, 0xff, 0x0f, 0x22, 0x39,
- 0xb4, 0xaa, 0xbe, 0xd0, 0xcc, 0x41, 0xf2, 0x61, 0x05, 0x4a, 0xa6, 0x48,
- 0x79, 0xe3, 0xf7, 0x7d, 0xc0, 0xe4, 0x18, 0xa9, 0x25, 0x36, 0x3b, 0xaf,
- 0x2d, 0x84, 0x62, 0x35, 0x4a, 0xe1, 0x67, 0xad, 0x9f, 0xaa, 0xa9, 0xa2,
- 0xd6, 0x75, 0x9b, 0x63, 0xd0, 0x7f, 0x9d, 0x63, 0x0c, 0x1f, 0x98, 0x2f,
- 0xa8, 0xd1, 0x58, 0x65, 0x80, 0x56, 0x52, 0x3e, 0xa1, 0xac, 0x73, 0x2c,
- 0xc8, 0xf6, 0xfe, 0xa3, 0x22, 0x96, 0xb8, 0x1b, 0x49, 0x0f, 0x57, 0xd4,
- 0xc1, 0x0e, 0x42, 0x60, 0x10, 0x49, 0x8a, 0x1e, 0xc7, 0x83, 0x7b, 0x29,
- 0x04, 0x40, 0x60, 0x9d, 0x6e, 0x18, 0xbc, 0x9a, 0xd1, 0xc3, 0x88, 0x7b,
- 0x7f, 0x10, 0x9d, 0x1d, 0x91, 0x9b, 0x4f, 0xfc, 0x2d, 0x54, 0xbd, 0xe7,
- 0x11, 0xe2, 0xfa, 0x59, 0x77, 0xe1, 0x70, 0x53, 0x3c, 0xd5, 0x58, 0x6b,
- 0xe9, 0x62, 0x65, 0x74, 0x26, 0xf9, 0xc2, 0x83, 0xf6, 0xa7, 0x7b, 0xcc,
- 0xb1, 0x6e, 0x21, 0x3f, 0x61, 0x7f, 0xba, 0x7b, 0xe3, 0xf3, 0x32, 0x7f,
- 0x7f, 0xba, 0x67, 0xb9, 0xb1, 0x91, 0x05, 0xd7, 0xad, 0x6b, 0x8b, 0xf8,
- 0x21, 0xd7, 0xe6, 0xc5, 0xca, 0x52, 0x12, 0xb9, 0x91, 0x8a, 0x3b, 0x37,
- 0x48, 0x8e, 0x19, 0x53, 0x19, 0x89, 0x11, 0xf2, 0xfa, 0x09, 0x97, 0xf6,
- 0x89, 0xcb, 0x4d, 0xdd, 0x8d, 0x91, 0xe2, 0xdf, 0x7c, 0x4a, 0xc8, 0x4e,
- 0xce, 0xd9, 0x47, 0xca, 0xba, 0x8a, 0xab, 0x6a, 0x0d, 0x6f, 0x66, 0xf2,
- 0x6a, 0x45, 0xd5, 0x79, 0x86, 0x47, 0xdd, 0xba, 0xd6, 0xac, 0x91, 0xa6,
- 0xe9, 0x46, 0x83, 0xa3, 0x8d, 0x24, 0xe7, 0x91, 0x24, 0xfd, 0x76, 0xa7,
- 0x83, 0xd1, 0x19, 0x79, 0x6d, 0x41, 0x69, 0xee, 0x15, 0xeb, 0xac, 0x87,
- 0xc9, 0x65, 0x7e, 0x19, 0x20, 0xba, 0x4f, 0xee, 0x9a, 0x48, 0x05, 0x0a,
- 0xad, 0x9a, 0x76, 0x61, 0xa7, 0x96, 0x04, 0xb7, 0xc7, 0x4f, 0x47, 0xfb,
- 0xbb, 0x03, 0xea, 0x7d, 0xbd, 0xc2, 0x0e, 0x50, 0x89, 0x80, 0xd5, 0xeb,
- 0xa8, 0x42, 0x26, 0xbf, 0x24, 0x61, 0x07, 0xc7, 0x42, 0x24, 0x13, 0x84,
- 0x1c, 0x6b, 0x92, 0x61, 0xa5, 0xe9, 0x4b, 0x82, 0x74, 0xd9, 0xae, 0x8e,
- 0xcb, 0x07, 0x68, 0x7a, 0x05, 0xb7, 0x58, 0xd7, 0x6f, 0x2d, 0xce, 0x32,
- 0xd7, 0xeb, 0xde, 0x93, 0xe4, 0xaa, 0x6c, 0x0b, 0x0f, 0x90, 0xee, 0x00,
- 0x88, 0x29, 0x08, 0xb7, 0x0c, 0xc2, 0xa2, 0xed, 0x17, 0xa7, 0x70, 0xaa,
- 0xf0, 0x17, 0xc4, 0xf6, 0x65, 0x0b, 0xc3, 0x72, 0x3c, 0x32, 0x50, 0xc9,
- 0x95, 0xc8, 0x4d, 0x1e, 0x06, 0x21, 0xa2, 0x97, 0x75, 0x7b, 0x39, 0x8c,
- 0xda, 0xd6, 0x85, 0x53, 0x5c, 0xd9, 0xd1, 0x68, 0x14, 0xa9, 0xa4, 0xbf,
- 0xce, 0xb3, 0x9b, 0x96, 0x17, 0x50, 0x66, 0x36, 0xb0, 0xbd, 0x19, 0xd8,
- 0xf8, 0xbc, 0xa6, 0x1d, 0x32, 0x43, 0x4e, 0x4a, 0xdb, 0x66, 0x7d, 0xc3,
- 0x45, 0xf6, 0x9f, 0xf6, 0xb6, 0xf9, 0x13, 0x6f, 0x73, 0x1d, 0x2b, 0x45,
- 0x63, 0x4c, 0x56, 0x07, 0x25, 0x3f, 0x20, 0x63, 0xac, 0xba, 0x4b, 0xd0,
- 0x33, 0xc0, 0x29, 0xa9, 0xe0, 0x2b, 0x9c, 0xfa, 0x9c, 0xd7, 0x0c, 0x89,
- 0xca, 0x90, 0x26, 0x61, 0xa0, 0x8a, 0x3f, 0xd3, 0xbe, 0xf3, 0xe2, 0xa0,
- 0x53, 0xee, 0x64, 0x58, 0xfb, 0x94, 0x6c, 0x60, 0x08, 0x59, 0xc5, 0x41,
- 0x87, 0x15, 0x18, 0xc9, 0x7a, 0x90, 0x13, 0xf1, 0x9a, 0x26, 0x78, 0x41,
- 0x7a, 0xd7, 0xc9, 0x22, 0xd1, 0x05, 0xc6, 0x43, 0x4d, 0x7a, 0xae, 0x7e,
- 0x00, 0xc8, 0x5f, 0xc9, 0xe4, 0x4e, 0xbb, 0x42, 0x89, 0x1b, 0xc8, 0x41,
- 0xbd, 0x76, 0xd5, 0x53, 0x57, 0x1a, 0xe7, 0xe0, 0x7c, 0x9c, 0x43, 0x8d,
- 0x71, 0xc3, 0xb0, 0x32, 0x19, 0xbc, 0xf6, 0x31, 0x7a, 0x83, 0x2a, 0x67,
- 0xd7, 0xb7, 0x84, 0x06, 0xe6, 0xde, 0x22, 0xd1, 0x23, 0x66, 0xd5, 0x8f,
- 0x0b, 0xee, 0xa9, 0xfb, 0xcd, 0x9a, 0x62, 0xde, 0xb8, 0xfb, 0x52, 0x38,
- 0x2b, 0xb5, 0xb2, 0x5d, 0x1c, 0x05, 0x8b, 0x46, 0x45, 0xbb, 0x3f, 0xba,
- 0x4a, 0x6f, 0x6f, 0x47, 0x75, 0xb6, 0x67, 0xa8, 0xb6, 0xde, 0xab, 0xeb,
- 0x05, 0x7d, 0xb4, 0x06, 0xf0, 0xd3, 0xc6, 0xc6, 0x7a, 0xb7, 0x77, 0x96,
- 0x80, 0x84, 0x19, 0x4f, 0x53, 0x7a, 0xb5, 0xc5, 0x6c, 0x5d, 0x67, 0x3d,
- 0xee, 0x4d, 0xd1, 0xcd, 0x56, 0x64, 0xcc, 0x5b, 0xa0, 0x37, 0xfb, 0x85,
- 0x7e, 0xcc, 0x1a, 0x5c, 0x5e, 0x88, 0x1d, 0xc7, 0x41, 0x79, 0x13, 0xca,
- 0x6d, 0xd5, 0x97, 0x55, 0x2e, 0x77, 0xd5, 0x8b, 0xca, 0x98, 0x4d, 0xb1,
- 0xb9, 0xd7, 0x46, 0x3e, 0x38, 0x44, 0x0f, 0x6e, 0x36, 0x43, 0x4a, 0x7c,
- 0xf9, 0x29, 0x82, 0x36, 0xd3, 0xe7, 0x31, 0xf1, 0x96, 0x46, 0x59, 0xea,
- 0x2f, 0x1c, 0xb6, 0xd9, 0xcd, 0xcd, 0xcd, 0x68, 0x93, 0xcb, 0xe4, 0x5f,
- 0x0e, 0xbf, 0xb5, 0x87, 0x3b, 0x35, 0x54, 0x7b, 0x62, 0xec, 0x88, 0xdb,
- 0xc4, 0x83, 0x97, 0xb0, 0x7d, 0x48, 0x34, 0x26, 0x90, 0x7c, 0x7b, 0xfe,
- 0xd6, 0xf6, 0xe0, 0xd5, 0xc2, 0x7e, 0x72, 0x3a, 0xd5, 0xa1, 0x7b, 0x3c,
- 0xcb, 0x19, 0xf2, 0x83, 0xf0, 0x6a, 0x5f, 0xbf, 0x3a, 0xfb, 0xf8, 0xfe,
- 0xe8, 0xe2, 0xe3, 0xf9, 0xab, 0xef, 0x68, 0x0b, 0xd9, 0x20, 0x34, 0xf2,
- 0x8a, 0x5c, 0x91, 0x55, 0x59, 0x52, 0x3f, 0xad, 0x77, 0xa8, 0x58, 0xca,
- 0x0b, 0x20, 0x3b, 0x44, 0x3b, 0x3c, 0x5b, 0xb8, 0x1a, 0x99, 0xa7, 0x99,
- 0xcb, 0x8b, 0xa4, 0xb5, 0x5f, 0x9f, 0x8c, 0xe5, 0x90, 0x2d, 0x46, 0x65,
- 0x75, 0x49, 0x54, 0xb8, 0xf7, 0x46, 0xf8, 0x67, 0x74, 0xb8, 0x3d, 0x09,
- 0xa8, 0x12, 0xfa, 0xd1, 0x75, 0x35, 0x27, 0xb0, 0x84, 0x87, 0xb6, 0x47,
- 0xf3, 0x48, 0xf3, 0x31, 0x18, 0xe0, 0xea, 0xfa, 0xf1, 0x06, 0x63, 0xa0,
- 0xdd, 0xa4, 0x52, 0xda, 0x4b, 0x81, 0x82, 0x60, 0x76, 0xfa, 0x61, 0x72,
- 0x2e, 0x0c, 0x5b, 0xdc, 0x0d, 0x22, 0xb5, 0xd7, 0x00, 0xf3, 0x2e, 0x6d,
- 0x15, 0x3b, 0x6a, 0x6b, 0x28, 0xbe, 0xbf, 0xb1, 0xbb, 0xb6, 0xd5, 0x83,
- 0xba, 0x66, 0x47, 0x5f, 0x85, 0xfa, 0xf0, 0x69, 0xa8, 0x4b, 0x52, 0xbf,
- 0x37, 0x6f, 0xcd, 0x4f, 0x65, 0xcd, 0x4f, 0xff, 0xa5, 0x35, 0x3f, 0xfd,
- 0x17, 0xd6, 0xfc, 0xf8, 0x17, 0x5e, 0xf3, 0xe3, 0xe8, 0x9a, 0xbd, 0xaf,
- 0x0c, 0xff, 0x46, 0x6b, 0xfe, 0xdb, 0xba, 0xf8, 0x34, 0x34, 0xf3, 0x25,
- 0x29, 0x2c, 0xed, 0x9d, 0xea, 0xb8, 0xca, 0xdc, 0xea, 0xf1, 0x01, 0xb7,
- 0xa2, 0xc3, 0x36, 0xf5, 0xda, 0x55, 0xa5, 0x52, 0x2d, 0xca, 0xd1, 0xc5,
- 0xde, 0xa6, 0xdc, 0x9e, 0xd7, 0x39, 0xa7, 0x52, 0xc3, 0x7a, 0x4a, 0xb6,
- 0x0d, 0x39, 0xc6, 0xb6, 0x64, 0x36, 0x3a, 0xec, 0x96, 0xb6, 0x7c, 0xc0,
- 0x4d, 0x4f, 0x43, 0x88, 0x95, 0x29, 0x0c, 0x6b, 0xdc, 0x49, 0x1b, 0x7e,
- 0x73, 0x2d, 0xa1, 0xf3, 0xb9, 0x85, 0x9f, 0xd1, 0x81, 0x39, 0x24, 0x41,
- 0xee, 0xe6, 0x90, 0x67, 0x5c, 0xdc, 0xad, 0x68, 0x40, 0x23, 0x9b, 0x2b,
- 0x23, 0x83, 0x39, 0x06, 0xce, 0xfd, 0xca, 0xed, 0x24, 0x93, 0xce, 0x04,
- 0xc5, 0xd1, 0x7a, 0x95, 0xdd, 0x6d, 0x07, 0x0a, 0xc3, 0x74, 0x51, 0x12,
- 0xbf, 0x21, 0xbd, 0x6e, 0x83, 0x26, 0x32, 0x71, 0xbd, 0xb5, 0x58, 0x5e,
- 0x74, 0x9a, 0x6d, 0xf9, 0x72, 0xe3, 0x53, 0x96, 0xad, 0xd2, 0x05, 0xaa,
- 0xfa, 0x29, 0xec, 0xda, 0xd7, 0xa3, 0xa7, 0x95, 0x97, 0xa5, 0x39, 0xcb,
- 0x78, 0xa3, 0x95, 0xf4, 0x02, 0x3e, 0xc7, 0x07, 0x49, 0x49, 0xfa, 0x49,
- 0x3e, 0x43, 0x99, 0x5d, 0xbc, 0x65, 0x83, 0xc3, 0x83, 0xb7, 0x93, 0x80,
- 0xe1, 0x39, 0x11, 0xf8, 0x09, 0xfb, 0x09, 0x85, 0xb0, 0xa2, 0xac, 0x80,
- 0xeb, 0x9c, 0xb2, 0x81, 0xba, 0xb0, 0xa7, 0xf6, 0x7d, 0x7e, 0x1d, 0x80,
- 0x36, 0x2d, 0xd0, 0x76, 0x3e, 0x40, 0x7a, 0xa2, 0xb4, 0xf2, 0x8f, 0xd4,
- 0x0d, 0xb4, 0x30, 0x0c, 0x48, 0x4a, 0xb1, 0x5b, 0x59, 0xff, 0xbd, 0x78,
- 0x7d, 0xf6, 0xf1, 0x9b, 0xa3, 0xa3, 0xb3, 0xe3, 0x37, 0x27, 0x47, 0x72,
- 0x61, 0xec, 0x8f, 0xde, 0x5f, 0x7c, 0x7b, 0xa2, 0x2d, 0xaa, 0x94, 0x16,
- 0x03, 0x82, 0x17, 0xc4, 0x71, 0x66, 0xca, 0x03, 0x74, 0xe2, 0x29, 0x9a,
- 0xe4, 0xd5, 0xf1, 0xf7, 0x46, 0x6b, 0x3d, 0x1b, 0x7e, 0xf8, 0x3e, 0x68,
- 0x83, 0xe0, 0xa5, 0xb7, 0xf7, 0xb6, 0x27, 0x37, 0x84, 0x08, 0xdb, 0xd1,
- 0xad, 0xbd, 0x2f, 0xdb, 0xe7, 0x17, 0x16, 0x83, 0xd4, 0x5b, 0xb9, 0xb0,
- 0x0a, 0x03, 0xbf, 0xa8, 0xad, 0x46, 0xbc, 0x8c, 0x9a, 0xa7, 0xfb, 0xda,
- 0xc1, 0x69, 0xa3, 0xbf, 0xf4, 0xf3, 0xb6, 0xcd, 0xf8, 0x29, 0xbb, 0x03,
- 0x7c, 0x5c, 0xf2, 0x92, 0xfe, 0x1b, 0xef, 0xb0, 0x75, 0x56, 0xe5, 0xd7,
- 0xa4, 0xff, 0x99, 0x67, 0x39, 0x9a, 0x44, 0x8f, 0x8e, 0x6c, 0xbf, 0x31,
- 0x89, 0x68, 0xd1, 0x20, 0x08, 0x7a, 0x63, 0x50, 0x10, 0x56, 0x10, 0x15,
- 0xcd, 0x67, 0xec, 0xeb, 0xe0, 0xf1, 0x30, 0xa0, 0xd9, 0x9e, 0x51, 0xf2,
- 0xe6, 0xe8, 0x7c, 0x90, 0x9c, 0x1d, 0xbd, 0xe3, 0x1c, 0xf9, 0xa3, 0xf7,
- 0x5f, 0x71, 0x0b, 0x36, 0xed, 0xac, 0x85, 0x20, 0x6c, 0x98, 0x27, 0xe6,
- 0xed, 0x89, 0x79, 0x17, 0x49, 0x71, 0x75, 0x6d, 0xa4, 0xeb, 0xaf, 0x88,
- 0xdd, 0xc1, 0x6b, 0x7b, 0x69, 0xfe, 0x13, 0xdb, 0x2a, 0x63, 0x47, 0x7c,
- 0x1d, 0xd9, 0x2e, 0x51, 0xcc, 0x6c, 0xd8, 0x5e, 0x8c, 0x02, 0xda, 0x0d,
- 0xde, 0x31, 0xb3, 0x21, 0x61, 0x00, 0x59, 0x37, 0x08, 0x66, 0x1f, 0xd0,
- 0x4b, 0xb8, 0x6f, 0xa7, 0x84, 0xff, 0xc8, 0x8a, 0x35, 0x9f, 0x1b, 0x10,
- 0x5d, 0x02, 0x0b, 0xd9, 0x6d, 0x46, 0xac, 0x30, 0xb3, 0xca, 0xb9, 0x07,
- 0x6a, 0x07, 0x14, 0xcb, 0x6c, 0x77, 0x3e, 0xe3, 0xe2, 0x6f, 0x8a, 0x5d,
- 0x95, 0x15, 0xc5, 0x8e, 0xa9, 0xea, 0xfa, 0xff, 0xdd, 0x1b, 0xd5, 0xf5,
- 0xd5, 0x5e, 0x3e, 0xfb, 0x58, 0xd5, 0xe9, 0x76, 0x57, 0x16, 0x79, 0xbf,
- 0x9e, 0xd1, 0xaf, 0x93, 0xed, 0x91, 0x7d, 0x54, 0xfe, 0x4e, 0x3f, 0x8f,
- 0x96, 0x21, 0xab, 0x08, 0x62, 0xf7, 0x89, 0xa6, 0x92, 0x69, 0xe7, 0xb6,
- 0x45, 0x3e, 0xa9, 0x8c, 0x02, 0xe7, 0x1a, 0x0f, 0x48, 0x23, 0xb6, 0xd5,
- 0xa7, 0x69, 0x7d, 0x70, 0x10, 0x69, 0xe3, 0xae, 0xd5, 0x55, 0x03, 0x4d,
- 0x09, 0x3c, 0xfb, 0xe6, 0xf5, 0xf8, 0x77, 0x07, 0x07, 0xc8, 0xc0, 0xdc,
- 0xa1, 0x4c, 0xb9, 0x67, 0x4f, 0x0e, 0x0e, 0x77, 0x63, 0xea, 0x63, 0x90,
- 0x52, 0x40, 0xcd, 0xf3, 0x52, 0x47, 0x9f, 0xb4, 0xfb, 0x88, 0xb0, 0x49,
- 0xbe, 0xb5, 0x1d, 0x7a, 0x96, 0x51, 0x7e, 0x12, 0x8a, 0xca, 0x38, 0x92,
- 0x82, 0xb4, 0xad, 0x20, 0xea, 0x6b, 0x21, 0x58, 0xb6, 0x78, 0xf6, 0x2f,
- 0xb6, 0x2c, 0x55, 0xf9, 0xe9, 0xab, 0x08, 0x7d, 0x7b, 0xb3, 0x1e, 0xf1,
- 0x3e, 0x75, 0x3d, 0xfb, 0xfe, 0xba, 0x90, 0x63, 0xe5, 0x30, 0x6e, 0x58,
- 0x7c, 0xb9, 0xae, 0x75, 0x9d, 0xd8, 0x24, 0x85, 0x26, 0x03, 0xef, 0x9e,
- 0xcc, 0x69, 0x8b, 0xe9, 0x87, 0x08, 0x3e, 0x75, 0x83, 0xda, 0xdd, 0xf7,
- 0x18, 0x84, 0x3f, 0x68, 0x18, 0xf1, 0xe3, 0x6f, 0x24, 0x5b, 0xe6, 0xee,
- 0xc6, 0x87, 0xfc, 0x55, 0xef, 0x64, 0x35, 0x49, 0x5e, 0x2e, 0xcc, 0x8b,
- 0x8b, 0x9e, 0xaa, 0x9f, 0x23, 0xee, 0xf4, 0xf3, 0x4d, 0x56, 0x4d, 0xb2,
- 0xaa, 0xac, 0x3b, 0x05, 0x0a, 0xda, 0x50, 0x9e, 0x7d, 0x2a, 0x18, 0x47,
- 0x33, 0x35, 0x82, 0x9e, 0x7e, 0x0d, 0xac, 0x6f, 0x81, 0x97, 0x6e, 0x43,
- 0x82, 0x6c, 0xa3, 0x4c, 0x82, 0x2e, 0x00, 0xb5, 0xb6, 0xa1, 0x3f, 0xd1,
- 0x60, 0x9e, 0xfa, 0x50, 0xe4, 0xe9, 0x62, 0x9b, 0x1a, 0x8e, 0x74, 0xaf,
- 0x91, 0x50, 0xda, 0xf6, 0x88, 0x6a, 0x5f, 0xd8, 0x58, 0x43, 0x02, 0x06,
- 0x2a, 0x3d, 0xd3, 0x44, 0xe6, 0xa2, 0xa9, 0xa5, 0x74, 0xcd, 0x5d, 0x06,
- 0x52, 0x1d, 0x34, 0x61, 0xb1, 0xc3, 0xb5, 0x51, 0x5b, 0xfa, 0x92, 0x1b,
- 0x7f, 0x61, 0x31, 0xc5, 0xc7, 0xf0, 0x93, 0xfb, 0xf6, 0x5a, 0x77, 0x7b,
- 0x67, 0x38, 0x3d, 0x2b, 0xff, 0x9c, 0xf5, 0xfd, 0x68, 0x17, 0xcc, 0x57,
- 0x5c, 0x98, 0xda, 0x81, 0x39, 0x00, 0x20, 0x3a, 0x55, 0x53, 0xcc, 0xd8,
- 0x30, 0x94, 0xc2, 0x3b, 0x17, 0xb3, 0x65, 0x4e, 0x13, 0xc6, 0xe5, 0xb0,
- 0x54, 0xb4, 0x2e, 0xd0, 0x69, 0x0f, 0xd9, 0x78, 0x7f, 0x9d, 0x88, 0x37,
- 0x02, 0x25, 0x19, 0x37, 0x15, 0x01, 0x35, 0x16, 0x0e, 0xee, 0x75, 0x91,
- 0xf5, 0xe2, 0xf7, 0x28, 0x98, 0xa3, 0x39, 0xa4, 0x85, 0xb4, 0x55, 0xd3,
- 0x44, 0xa8, 0x4a, 0xe7, 0x34, 0x94, 0x38, 0xb2, 0x3a, 0x0c, 0xe8, 0xbd,
- 0x7f, 0xbb, 0x17, 0xcd, 0xe1, 0xbe, 0xb3, 0x73, 0x2a, 0x7d, 0xac, 0x42,
- 0xfb, 0xc1, 0x30, 0x55, 0x9d, 0x0a, 0x23, 0x24, 0x2b, 0x0f, 0x21, 0x93,
- 0x5e, 0x1a, 0x7e, 0x9a, 0x05, 0x38, 0x3d, 0xe3, 0x56, 0x69, 0xb7, 0x74,
- 0x9b, 0xd4, 0xea, 0x1d, 0xbc, 0x67, 0xbb, 0xee, 0xba, 0xa8, 0x10, 0x68,
- 0x7f, 0x08, 0x95, 0xb5, 0xeb, 0x6e, 0xa3, 0x4e, 0x09, 0xae, 0x42, 0x14,
- 0xb7, 0x16, 0x38, 0xd8, 0x8a, 0xaf, 0xa2, 0x09, 0x9a, 0xbc, 0x1d, 0xe4,
- 0x8b, 0x96, 0xd4, 0x3f, 0x18, 0x17, 0x69, 0xe0, 0x03, 0x41, 0xae, 0x35,
- 0x37, 0x1f, 0x10, 0x22, 0xd8, 0x9e, 0xb1, 0x67, 0x14, 0x47, 0x62, 0xa7,
- 0x4a, 0x17, 0x4f, 0xc2, 0x0c, 0x0c, 0xd8, 0x6e, 0x6e, 0x74, 0x60, 0x2a,
- 0x4c, 0xcc, 0x10, 0x37, 0xf9, 0xac, 0xb9, 0x42, 0x3b, 0x10, 0xb5, 0x8c,
- 0x6a, 0x29, 0x49, 0x26, 0x27, 0x75, 0x1e, 0x16, 0xdc, 0x4c, 0x7a, 0x1c,
- 0x78, 0x7c, 0x60, 0xd8, 0xd4, 0x84, 0xb1, 0x79, 0xc8, 0x51, 0x87, 0x73,
- 0x80, 0x53, 0x7b, 0x8f, 0x55, 0x3d, 0x8b, 0x4a, 0x91, 0x9a, 0x5b, 0x34,
- 0xa7, 0x4e, 0x1f, 0x81, 0xb9, 0xa6, 0x95, 0x31, 0x23, 0xbd, 0x21, 0x44,
- 0xc3, 0xdb, 0x9f, 0x18, 0x8f, 0xfb, 0x9b, 0x6d, 0x6d, 0x68, 0x49, 0x88,
- 0x6b, 0x5e, 0xf2, 0x3e, 0xf1, 0xf2, 0xe4, 0x53, 0x1e, 0x82, 0xc4, 0xe3,
- 0xeb, 0x03, 0xc3, 0x6b, 0x96, 0x3c, 0xc2, 0xbb, 0x6d, 0x75, 0x94, 0x52,
- 0xad, 0xf6, 0x65, 0x2a, 0xbf, 0x67, 0x9c, 0x86, 0xed, 0x4b, 0x7e, 0xe8,
- 0x2b, 0xf7, 0x50, 0x67, 0x38, 0xf2, 0xda, 0xb3, 0x97, 0x5e, 0xf3, 0x78,
- 0xea, 0x17, 0x94, 0x1b, 0xfe, 0xcd, 0x20, 0x79, 0xb4, 0xc4, 0xa1, 0x1c,
- 0x7c, 0x15, 0x63, 0x5c, 0xdc, 0x9e, 0xb4, 0x2e, 0x6d, 0xa5, 0xee, 0xf0,
- 0x2f, 0x64, 0x72, 0x61, 0xc3, 0x98, 0x2e, 0x6d, 0x11, 0x0a, 0x07, 0xf8,
- 0x94, 0x1f, 0x44, 0x82, 0x0e, 0x48, 0xe3, 0x5a, 0x91, 0x91, 0x30, 0xcb,
- 0x14, 0xa0, 0x78, 0x09, 0xef, 0x26, 0x25, 0x6a, 0xac, 0xa4, 0x12, 0x9f,
- 0xc8, 0x75, 0x68, 0xd1, 0x0f, 0xeb, 0x05, 0x3d, 0x80, 0x0e, 0x3d, 0x65,
- 0x90, 0xd4, 0xb9, 0x58, 0xc1, 0x40, 0xb2, 0x4d, 0xb4, 0xbc, 0x49, 0x51,
- 0x41, 0xdd, 0x34, 0x11, 0x1f, 0xcf, 0xaf, 0x28, 0x12, 0x17, 0xc8, 0x0e,
- 0xca, 0xeb, 0x66, 0x18, 0x81, 0x9a, 0x44, 0x0c, 0xe8, 0xec, 0xf4, 0xec,
- 0xd1, 0xae, 0x8f, 0xc7, 0x27, 0x75, 0xd9, 0xdc, 0x6e, 0x0e, 0x51, 0x22,
- 0x5b, 0xb3, 0x3d, 0x50, 0x76, 0xc3, 0x15, 0x42, 0xa1, 0x6d, 0x39, 0x15,
- 0xb0, 0x2a, 0x62, 0x2e, 0xf8, 0x22, 0x5c, 0xfe, 0x2e, 0x47, 0xdd, 0x6b,
- 0xc4, 0xe6, 0x2e, 0xa6, 0x22, 0xb3, 0x7d, 0x16, 0x22, 0x5a, 0xd4, 0x9c,
- 0xcb, 0x0a, 0x30, 0x88, 0x21, 0xea, 0x8e, 0xda, 0xad, 0x0c, 0x28, 0x67,
- 0x3a, 0x98, 0x65, 0xc2, 0x39, 0x0f, 0x91, 0x6c, 0x12, 0x29, 0xf0, 0x71,
- 0x4f, 0x22, 0x20, 0xa1, 0x75, 0x58, 0x00, 0x36, 0x71, 0xf1, 0x59, 0xf2,
- 0x96, 0x12, 0xd5, 0x32, 0x9c, 0xeb, 0xa8, 0xb7, 0x05, 0xb5, 0x85, 0xd4,
- 0x6f, 0x59, 0x64, 0xd2, 0x30, 0x29, 0x4d, 0xde, 0x9f, 0x8c, 0x2f, 0xfc,
- 0x20, 0x12, 0xf4, 0xb0, 0x20, 0x8b, 0xb2, 0x8d, 0x29, 0xe5, 0xa5, 0x22,
- 0x9c, 0x1c, 0x8f, 0x2f, 0x46, 0x31, 0xb0, 0x78, 0xa3, 0x9d, 0x8f, 0x29,
- 0xd3, 0xbf, 0x55, 0xa3, 0x9f, 0x70, 0x63, 0x62, 0xce, 0x71, 0xe4, 0xe8,
- 0x18, 0x47, 0x8b, 0xf2, 0xca, 0xaf, 0x47, 0xef, 0x0e, 0x67, 0xa6, 0xf8,
- 0x47, 0xce, 0x90, 0x94, 0xec, 0x4a, 0x8d, 0x12, 0xd5, 0xeb, 0xc9, 0xd0,
- 0x03, 0x71, 0x63, 0x7d, 0x07, 0xdd, 0x81, 0x0c, 0xf5, 0x1a, 0x09, 0xf5,
- 0x29, 0xb4, 0x31, 0x77, 0x98, 0xa0, 0xb0, 0x3f, 0x02, 0xbe, 0xd7, 0x72,
- 0x75, 0x4f, 0x93, 0x0c, 0x60, 0x9f, 0x70, 0x32, 0xd1, 0xb3, 0x0f, 0x26,
- 0x2a, 0xda, 0x8a, 0xce, 0x4e, 0x4a, 0x43, 0xb9, 0x76, 0xba, 0x34, 0x85,
- 0xed, 0x7e, 0x4a, 0x9c, 0xd2, 0x23, 0x41, 0x47, 0x74, 0x75, 0x96, 0xb1,
- 0xcb, 0xc9, 0x4e, 0xbb, 0x17, 0x7f, 0x34, 0x9f, 0x31, 0x04, 0x5f, 0xdd,
- 0xc6, 0xe0, 0xe3, 0x7a, 0x6b, 0x62, 0x3a, 0xdc, 0x7b, 0x84, 0x54, 0xb7,
- 0xbe, 0x93, 0x64, 0x9f, 0x5c, 0x2b, 0x35, 0x6e, 0xf8, 0x3d, 0x27, 0x5b,
- 0x22, 0x50, 0x36, 0xe8, 0x03, 0x87, 0x0a, 0xc9, 0x48, 0xfb, 0xc0, 0x7c,
- 0x38, 0x7e, 0x73, 0x62, 0x77, 0x4b, 0x76, 0x07, 0xd9, 0x7b, 0x76, 0xad,
- 0x94, 0x51, 0xaf, 0x6c, 0x13, 0x67, 0x12, 0x04, 0x7d, 0xd6, 0x45, 0xfe,
- 0x77, 0x64, 0x66, 0x40, 0x77, 0x9d, 0xe7, 0x40, 0x12, 0x42, 0xd3, 0xf0,
- 0x44, 0x25, 0xd9, 0x76, 0x6d, 0x9b, 0x68, 0xe5, 0x33, 0x9b, 0x79, 0xce,
- 0x31, 0xbe, 0x68, 0xea, 0xe3, 0x46, 0xd0, 0x86, 0x83, 0x36, 0xb2, 0x22,
- 0x00, 0x56, 0x05, 0x07, 0xc9, 0x08, 0xa4, 0x3d, 0x54, 0x4e, 0x05, 0xca,
- 0x05, 0x74, 0x33, 0x97, 0x8f, 0xd3, 0xc6, 0xf7, 0x28, 0x2b, 0xa9, 0xb7,
- 0xda, 0x79, 0x7b, 0x7e, 0xfa, 0x6e, 0x78, 0x71, 0x8a, 0x2e, 0xdb, 0x30,
- 0xe7, 0x16, 0x49, 0x12, 0xd1, 0x37, 0xf9, 0xbd, 0xda, 0x6f, 0x16, 0xde,
- 0x4e, 0x5d, 0xdb, 0xa9, 0x77, 0xb5, 0x97, 0x37, 0x44, 0x0a, 0xa6, 0xa7,
- 0x6f, 0x05, 0x9d, 0x13, 0x0a, 0xd6, 0x44, 0x52, 0x74, 0x67, 0x24, 0xbf,
- 0xe3, 0xd4, 0x8b, 0x63, 0xe1, 0x7d, 0xe5, 0xdc, 0x93, 0x75, 0x7d, 0x97,
- 0x48, 0x59, 0x1b, 0xc1, 0xa5, 0xc1, 0x96, 0x0a, 0xa3, 0x03, 0xb6, 0xed,
- 0xaf, 0x05, 0x49, 0xa1, 0x82, 0x1f, 0xae, 0x28, 0x69, 0x4a, 0x73, 0x7d,
- 0xd3, 0xaa, 0x2a, 0x6f, 0x54, 0x70, 0x49, 0xd9, 0xa9, 0x99, 0x3a, 0x1d,
- 0x52, 0x75, 0xd7, 0x0b, 0x2c, 0x21, 0x58, 0x49, 0xda, 0xb4, 0x78, 0xa3,
- 0xfa, 0xf7, 0xa4, 0x5d, 0xee, 0xaf, 0xc9, 0xa7, 0xc3, 0xa6, 0x5a, 0xd7,
- 0x61, 0xff, 0x73, 0x71, 0x3b, 0x9f, 0x10, 0x9b, 0x6c, 0x67, 0xab, 0x0e,
- 0x04, 0xcc, 0x8d, 0xb0, 0x3f, 0xd0, 0x66, 0xca, 0xfa, 0x25, 0xe1, 0x9f,
- 0xe0, 0x98, 0xe2, 0x1f, 0x82, 0x1b, 0x2c, 0x28, 0xaf, 0xa4, 0xd1, 0x53,
- 0x07, 0x49, 0x64, 0xac, 0xba, 0x16, 0x80, 0x79, 0xc3, 0xad, 0xff, 0x34,
- 0xa1, 0x14, 0x38, 0x4e, 0x60, 0x06, 0xf4, 0xd3, 0x40, 0x97, 0x54, 0x80,
- 0x96, 0x9c, 0x8a, 0xe3, 0x67, 0xeb, 0x29, 0x8e, 0x89, 0x22, 0x7e, 0xd4,
- 0x59, 0x70, 0xc2, 0x90, 0x91, 0x5a, 0x5f, 0x4e, 0x43, 0xbb, 0x4c, 0x5d,
- 0x76, 0xe0, 0x74, 0xb5, 0xac, 0x84, 0x1f, 0x73, 0xed, 0x92, 0x48, 0x99,
- 0xa4, 0x54, 0xa0, 0x8c, 0x15, 0xcb, 0xaa, 0x6b, 0x73, 0x52, 0x54, 0x49,
- 0xdb, 0xb5, 0x86, 0xec, 0x8a, 0xf0, 0xba, 0x81, 0x54, 0x2c, 0x41, 0x7f,
- 0x02, 0xd5, 0x23, 0x02, 0x46, 0xd0, 0xfd, 0xcf, 0x69, 0x6d, 0xf8, 0x52,
- 0x7b, 0xbc, 0xdd, 0x0d, 0xee, 0xe9, 0xb5, 0xe6, 0x74, 0x7b, 0xa7, 0xd7,
- 0x3a, 0x90, 0xf8, 0xc9, 0x1d, 0xb7, 0xca, 0xeb, 0x39, 0x35, 0xc3, 0xdb,
- 0x71, 0x61, 0x51, 0xc0, 0x7c, 0x43, 0x9a, 0x6c, 0x8a, 0x46, 0xbb, 0xd7,
- 0x31, 0xe6, 0x94, 0xda, 0x56, 0x72, 0x4d, 0xa2, 0x1f, 0x4d, 0x76, 0xb4,
- 0xe8, 0xcc, 0x16, 0x41, 0x9c, 0xc8, 0xaf, 0x5e, 0xd8, 0xaa, 0x38, 0xe2,
- 0x69, 0x9d, 0xe1, 0x1e, 0x7d, 0xff, 0x7d, 0xbb, 0xf5, 0xeb, 0x6e, 0x5f,
- 0x1d, 0xbe, 0xa4, 0xc3, 0xcf, 0x98, 0xf7, 0xe9, 0x84, 0x83, 0x92, 0x1e,
- 0x25, 0x3b, 0x0a, 0x31, 0x20, 0x81, 0x98, 0x1d, 0x30, 0xe2, 0x29, 0x32,
- 0x26, 0xe0, 0x95, 0xd6, 0x79, 0xb4, 0x52, 0x38, 0x50, 0xa1, 0x7f, 0x1c,
- 0xc9, 0x72, 0x02, 0xc3, 0xd5, 0xdc, 0x0b, 0x8e, 0xa9, 0x20, 0x1d, 0xd6,
- 0xdf, 0x2e, 0xd7, 0x1d, 0xbc, 0xbe, 0xa2, 0xd8, 0x82, 0x60, 0xc4, 0x6e,
- 0xee, 0x4f, 0x6b, 0x31, 0xfb, 0x6c, 0xd5, 0x17, 0xe4, 0x3d, 0x23, 0xda,
- 0x53, 0x16, 0xdd, 0xb4, 0xca, 0xc4, 0xdb, 0xa0, 0xfd, 0x47, 0x82, 0x28,
- 0x32, 0xe1, 0x85, 0xf0, 0xe5, 0x81, 0x53, 0x35, 0xf5, 0xee, 0x8b, 0x83,
- 0x7a, 0xeb, 0x9c, 0x98, 0x64, 0x80, 0x87, 0xda, 0xfb, 0x4d, 0x09, 0x74,
- 0x3f, 0xb4, 0x7d, 0x01, 0x62, 0x55, 0xc9, 0x8e, 0x2d, 0xe9, 0x5c, 0xca,
- 0xf2, 0xe6, 0x0f, 0x7a, 0x73, 0x47, 0x7e, 0xf0, 0x92, 0xa8, 0x20, 0x16,
- 0x02, 0x55, 0x66, 0x42, 0xe7, 0x42, 0xb0, 0xa2, 0x54, 0xcb, 0xac, 0xdd,
- 0x90, 0xc8, 0x53, 0xac, 0x31, 0x72, 0x56, 0xa7, 0x51, 0x04, 0x6f, 0x7b,
- 0x92, 0x07, 0xc9, 0x44, 0x7a, 0x65, 0x29, 0x87, 0x07, 0x4e, 0x4f, 0x07,
- 0x89, 0xc5, 0xce, 0x2d, 0x63, 0x94, 0x0e, 0xf1, 0x58, 0xdd, 0x97, 0x6e,
- 0x22, 0xa0, 0xc7, 0x68, 0x81, 0xcc, 0x9d, 0x1b, 0xfc, 0x3d, 0x53, 0x37,
- 0x99, 0x05, 0x5c, 0x90, 0x1a, 0x17, 0x69, 0x01, 0xf0, 0xd5, 0xd1, 0x45,
- 0xf7, 0x6a, 0xf9, 0x91, 0x43, 0xc0, 0x1b, 0x98, 0x7f, 0x9f, 0x7d, 0xb8,
- 0xd8, 0x75, 0xed, 0xed, 0x85, 0x5c, 0xfd, 0x14, 0x79, 0x29, 0x9d, 0x0b,
- 0xab, 0x00, 0x18, 0x50, 0x40, 0xf8, 0x94, 0x24, 0x03, 0xc9, 0xcd, 0x20,
- 0x1f, 0xcb, 0xa3, 0xfd, 0x03, 0x63, 0x47, 0xed, 0x1f, 0xa2, 0xd7, 0xed,
- 0xa3, 0xfd, 0x47, 0xb6, 0x06, 0x5b, 0x9f, 0x0a, 0x11, 0xf2, 0xf9, 0x45,
- 0xb8, 0x4c, 0x40, 0xf7, 0x8f, 0x6e, 0x6f, 0xf1, 0xe3, 0x76, 0x66, 0xf7,
- 0xd0, 0x56, 0x43, 0xf9, 0xd3, 0x8c, 0xca, 0x7d, 0x6f, 0xbf, 0x11, 0xd9,
- 0x5b, 0x17, 0x5c, 0x7b, 0x88, 0x5e, 0xc2, 0x04, 0x59, 0x30, 0xea, 0x6f,
- 0xac, 0xe3, 0x75, 0x09, 0x13, 0x60, 0x26, 0xbf, 0x33, 0x96, 0x21, 0x16,
- 0x1f, 0xec, 0x42, 0x00, 0x10, 0x02, 0xd6, 0x4c, 0xcf, 0x08, 0x54, 0x8c,
- 0xd9, 0x83, 0x5b, 0xb7, 0x43, 0xb6, 0x5b, 0xa3, 0x30, 0x00, 0x23, 0xe8,
- 0x84, 0x1d, 0xd9, 0x3c, 0xfe, 0x88, 0x13, 0x82, 0xf8, 0xdf, 0x0b, 0x4a,
- 0x13, 0x31, 0x77, 0x02, 0xfb, 0xab, 0x7f, 0x3d, 0x94, 0x54, 0x11, 0xfe,
- 0xd7, 0xa3, 0xb6, 0xa4, 0x24, 0xf7, 0xb0, 0x0e, 0xfa, 0x52, 0xfe, 0x12,
- 0xf8, 0x2a, 0xd1, 0xe2, 0x14, 0xba, 0x31, 0x9a, 0x53, 0xec, 0xb6, 0xfc,
- 0x27, 0x18, 0xc3, 0x4e, 0x4c, 0xb4, 0x14, 0x69, 0x1e, 0xcd, 0x2c, 0xba,
- 0x4b, 0x1b, 0x2d, 0xf9, 0x30, 0xea, 0xeb, 0x3d, 0xa6, 0x9a, 0x60, 0x30,
- 0xbe, 0x26, 0x58, 0xd8, 0x62, 0x65, 0x4f, 0x25, 0x2e, 0x57, 0xb1, 0xbb,
- 0x5b, 0x6b, 0x36, 0x2d, 0x09, 0x57, 0xeb, 0x6c, 0x97, 0x39, 0x76, 0xa6,
- 0x93, 0xbc, 0x6a, 0xd0, 0x8a, 0x16, 0x7e, 0xb0, 0xd0, 0x44, 0xa5, 0xad,
- 0x18, 0xf0, 0x56, 0xa0, 0xc5, 0x33, 0xf5, 0xea, 0xd0, 0x34, 0xcb, 0xd6,
- 0x4c, 0x39, 0x10, 0xb2, 0xf4, 0x13, 0x35, 0x22, 0x12, 0x4d, 0x92, 0x34,
- 0x70, 0xcc, 0xed, 0x85, 0xae, 0x28, 0xf3, 0x3c, 0x83, 0xda, 0x2f, 0x8d,
- 0x68, 0x1f, 0x0f, 0xf0, 0xb7, 0x27, 0xfb, 0xcf, 0xf9, 0x44, 0x8f, 0x8f,
- 0x2e, 0xde, 0x76, 0x9d, 0x79, 0x95, 0x21, 0x28, 0xfe, 0xef, 0x30, 0x4b,
- 0xab, 0x2b, 0x63, 0x5c, 0x10, 0x4a, 0xcb, 0x90, 0xa0, 0xff, 0x87, 0xfb,
- 0xfb, 0xb1, 0xbc, 0x8d, 0x5f, 0xb1, 0x32, 0xfd, 0xd1, 0xe3, 0x76, 0x48,
- 0x8f, 0x54, 0xfa, 0x21, 0x6d, 0x77, 0x3f, 0x88, 0x68, 0x9b, 0xbc, 0x52,
- 0xd5, 0x9d, 0xe5, 0xf1, 0x56, 0xc0, 0x3e, 0x4b, 0x2c, 0x1a, 0x6d, 0xd2,
- 0xc5, 0xe0, 0xf3, 0x4c, 0xec, 0xae, 0x7a, 0x63, 0xb3, 0x93, 0x8c, 0x98,
- 0x87, 0x4c, 0x6a, 0xee, 0x76, 0x13, 0x6e, 0x61, 0xc7, 0x9d, 0xa6, 0x1a,
- 0xd7, 0x4c, 0x3c, 0x5a, 0xb3, 0x5b, 0x4b, 0xd9, 0x52, 0x95, 0x11, 0xda,
- 0x13, 0xab, 0x7d, 0xd2, 0xb1, 0xe7, 0x7e, 0xc4, 0x2a, 0x6c, 0x41, 0x35,
- 0x5d, 0x49, 0xfd, 0x1a, 0xff, 0x9b, 0x44, 0x71, 0x2b, 0x7f, 0xf6, 0xf0,
- 0x49, 0x64, 0xe3, 0x20, 0xb0, 0x7f, 0xe6, 0xc6, 0x39, 0xe5, 0x88, 0xfd,
- 0x77, 0x30, 0x78, 0x6d, 0x95, 0x4d, 0x88, 0x24, 0x54, 0x6b, 0x47, 0xd9,
- 0x9f, 0xbc, 0x16, 0xda, 0xed, 0xd1, 0x26, 0xdc, 0x3b, 0xf7, 0xd6, 0xcf,
- 0x5c, 0xcb, 0xc0, 0x35, 0x5d, 0x20, 0xe9, 0xb1, 0x94, 0x9e, 0x52, 0xf0,
- 0x33, 0x20, 0xa0, 0xd9, 0xc5, 0xa4, 0xc8, 0x56, 0x19, 0x16, 0xef, 0xe7,
- 0x2d, 0x78, 0xc4, 0x6d, 0x6d, 0x54, 0xb2, 0x15, 0xb5, 0x16, 0xcb, 0x08,
- 0xd1, 0x7c, 0x45, 0x60, 0x03, 0x75, 0xd4, 0xcf, 0xd2, 0xea, 0x1b, 0x8f,
- 0xcd, 0x54, 0x97, 0xec, 0x40, 0xc4, 0x98, 0xbc, 0xae, 0x7b, 0xac, 0x3c,
- 0x2b, 0x50, 0x1a, 0xaf, 0xd3, 0x05, 0x99, 0xeb, 0x18, 0xc3, 0x1e, 0x56,
- 0xe9, 0x8a, 0x7a, 0x79, 0xf0, 0xb2, 0x47, 0xfc, 0xfb, 0xf3, 0x28, 0xec,
- 0xfb, 0x9c, 0xf0, 0xa8, 0xca, 0xec, 0xb7, 0xe7, 0x6f, 0xff, 0xa2, 0x76,
- 0xf7, 0xee, 0xa0, 0xc7, 0x12, 0xee, 0x4c, 0x77, 0x92, 0x79, 0x89, 0x80,
- 0x52, 0x7d, 0xde, 0xda, 0x75, 0xfe, 0x97, 0xcb, 0xb2, 0x0c, 0x82, 0x0a,
- 0x48, 0xfa, 0xd8, 0xa1, 0x30, 0x9b, 0x79, 0x6e, 0x2c, 0x26, 0xdd, 0xa3,
- 0xd1, 0x13, 0xf8, 0x43, 0xde, 0xbe, 0x7e, 0xf2, 0xe8, 0xf0, 0xc0, 0x58,
- 0xad, 0x3b, 0x1d, 0x6e, 0xb1, 0xfb, 0xd9, 0x83, 0x76, 0xdb, 0x9e, 0x77,
- 0x76, 0xbb, 0x22, 0xda, 0xdb, 0x39, 0xfa, 0xfe, 0xec, 0x7d, 0xb0, 0x46,
- 0xb3, 0xa6, 0x20, 0x90, 0xda, 0xb7, 0x46, 0xa7, 0x0b, 0xb4, 0xc6, 0xd7,
- 0xfc, 0x63, 0xf4, 0xca, 0x8d, 0x84, 0x2a, 0xdf, 0x56, 0x39, 0xe9, 0xb8,
- 0x5b, 0xb4, 0x25, 0x5b, 0x27, 0x65, 0x31, 0x33, 0xa2, 0xff, 0x94, 0xd0,
- 0xc1, 0xb2, 0x2d, 0xa3, 0xab, 0xdf, 0xbb, 0xba, 0xfe, 0x6b, 0xf2, 0x6e,
- 0x80, 0xab, 0x52, 0x84, 0x19, 0x2e, 0xef, 0xf0, 0x43, 0x80, 0xb1, 0x12,
- 0xae, 0x02, 0x97, 0xac, 0xad, 0x2f, 0x33, 0x76, 0xef, 0x92, 0x69, 0xd6,
- 0xbe, 0x6d, 0xb7, 0xe8, 0x85, 0x02, 0x8f, 0xcf, 0x4b, 0x38, 0xb4, 0xfb,
- 0x62, 0x21, 0xcc, 0x2d, 0x35, 0x1a, 0xc2, 0x3e, 0xa2, 0x1d, 0x75, 0xeb,
- 0xef, 0x7a, 0xcd, 0xa4, 0x81, 0x1b, 0xc8, 0xb1, 0x0e, 0xd2, 0xdb, 0x22,
- 0x3c, 0x17, 0x8f, 0x39, 0xbb, 0x22, 0x6f, 0xa7, 0xc4, 0xe3, 0x26, 0xa2,
- 0x0e, 0x7d, 0xd0, 0x86, 0x4d, 0x8b, 0xf9, 0xc0, 0x91, 0x41, 0x80, 0x66,
- 0x5f, 0x69, 0xd1, 0x86, 0x98, 0xa4, 0x3a, 0x6a, 0xb6, 0x7e, 0xb2, 0x5b,
- 0xf4, 0x6f, 0x34, 0x2a, 0xe2, 0xd3, 0x47, 0x91, 0x92, 0x30, 0x5e, 0x8a,
- 0x20, 0x4b, 0x88, 0x9b, 0xc9, 0xa2, 0xe0, 0xbe, 0x75, 0x6a, 0xef, 0x20,
- 0x1a, 0x87, 0x88, 0x85, 0xa4, 0x38, 0x2a, 0x21, 0xd6, 0x59, 0x27, 0x2e,
- 0xe1, 0xc7, 0x21, 0x70, 0x53, 0x28, 0x12, 0x21, 0x51, 0x86, 0xd0, 0x50,
- 0xf1, 0x22, 0x13, 0xfd, 0xa1, 0x89, 0x0d, 0xc1, 0x88, 0xae, 0x09, 0x6a,
- 0x43, 0x13, 0x2d, 0xe2, 0x7b, 0xf2, 0x79, 0x84, 0xf8, 0xde, 0x9f, 0x5e,
- 0x1c, 0xbd, 0x10, 0x74, 0x21, 0x85, 0xe1, 0x50, 0x33, 0x81, 0x13, 0xd3,
- 0xb8, 0x87, 0x34, 0x97, 0x29, 0x91, 0x90, 0xd5, 0x53, 0x1f, 0xc4, 0xae,
- 0x3c, 0x72, 0xc4, 0xe9, 0x9a, 0xb0, 0x97, 0xb7, 0xe9, 0x05, 0xe7, 0x44,
- 0x95, 0xb1, 0x58, 0x06, 0x4c, 0x4f, 0x74, 0xfe, 0x21, 0x28, 0x03, 0x2a,
- 0xf7, 0x51, 0x0c, 0xcf, 0xf2, 0x36, 0x20, 0x21, 0x16, 0x65, 0x6c, 0x70,
- 0xd9, 0x84, 0xc5, 0x29, 0xb5, 0x72, 0x0c, 0xfb, 0x0f, 0x22, 0x42, 0xf7,
- 0x56, 0x7a, 0x58, 0xc3, 0x1e, 0xb1, 0x08, 0x7f, 0x9b, 0x44, 0x9c, 0x0b,
- 0x24, 0x76, 0x2f, 0x95, 0x18, 0x67, 0xe4, 0x05, 0xfc, 0x53, 0x2f, 0xc2,
- 0x4e, 0xe3, 0xdd, 0x27, 0xa5, 0x13, 0x73, 0x8f, 0xd4, 0x4a, 0x23, 0xab,
- 0xd2, 0x9a, 0x29, 0x02, 0x9f, 0x11, 0x86, 0xaf, 0xc1, 0x02, 0xdb, 0x6e,
- 0x11, 0xd7, 0x68, 0x5d, 0xd5, 0x35, 0x24, 0xee, 0xd0, 0xce, 0x6a, 0xc0,
- 0x12, 0xda, 0x42, 0x0f, 0x08, 0xa4, 0x5f, 0xde, 0x2c, 0x4a, 0x35, 0x89,
- 0xbe, 0xa9, 0x11, 0xdc, 0x7e, 0x05, 0x02, 0x74, 0x3e, 0x58, 0xb3, 0x39,
- 0xd7, 0x98, 0x9b, 0x8f, 0x3c, 0xd9, 0xef, 0xb1, 0x65, 0x59, 0xe5, 0x1d,
- 0x67, 0x6d, 0x41, 0x6b, 0xde, 0x18, 0x1e, 0x58, 0x27, 0x6c, 0x8e, 0xba,
- 0x5a, 0x01, 0x92, 0xfa, 0xf5, 0x42, 0x4c, 0xcb, 0x81, 0x9c, 0xd1, 0xc6,
- 0x3c, 0xc6, 0x77, 0x1a, 0xf6, 0xa5, 0x87, 0xf2, 0x42, 0x53, 0xd4, 0x58,
- 0x53, 0xe2, 0x28, 0x9e, 0xe2, 0x65, 0x9a, 0x9b, 0x59, 0x52, 0xf4, 0xdc,
- 0x05, 0xbf, 0x23, 0x2d, 0xba, 0xa9, 0xee, 0x2d, 0x49, 0x7c, 0xf0, 0x23,
- 0x2d, 0x39, 0x92, 0x83, 0xa1, 0x5d, 0x87, 0xbf, 0x6d, 0x42, 0xa5, 0xc3,
- 0xc9, 0xdf, 0xca, 0x89, 0x38, 0x61, 0xc8, 0x72, 0x8c, 0x81, 0x88, 0xcc,
- 0x91, 0x3f, 0xbf, 0x36, 0x54, 0x36, 0x5b, 0xb3, 0x5f, 0x95, 0x26, 0x24,
- 0x99, 0xd8, 0xdc, 0x75, 0x96, 0x02, 0x1e, 0xc9, 0x25, 0x20, 0xfc, 0x38,
- 0x15, 0x54, 0xd1, 0xb1, 0xc3, 0xfa, 0xc8, 0xc3, 0x2e, 0x50, 0x44, 0x3a,
- 0x25, 0x6f, 0x88, 0x19, 0x5c, 0xea, 0xb2, 0x19, 0xeb, 0xcb, 0x25, 0xac,
- 0xa7, 0xd3, 0x66, 0x2d, 0x1b, 0xdf, 0x9d, 0x5d, 0xa9, 0x5e, 0x52, 0xf3,
- 0x2e, 0x10, 0xa8, 0x91, 0x85, 0x34, 0x35, 0x94, 0x97, 0x4e, 0xef, 0x54,
- 0x5f, 0x70, 0xc2, 0x55, 0xb0, 0xe4, 0x1c, 0x5e, 0x75, 0xb0, 0x58, 0x3b,
- 0x09, 0x8a, 0x76, 0xe6, 0x75, 0x4f, 0xa3, 0x88, 0x5f, 0xd4, 0x4e, 0xf1,
- 0xdb, 0xfd, 0xb0, 0xd3, 0x59, 0x31, 0xef, 0x5a, 0x57, 0x3d, 0x6b, 0x52,
- 0xda, 0xe5, 0x8d, 0x2d, 0xcb, 0x9c, 0x4b, 0xc0, 0x56, 0xd6, 0x20, 0x32,
- 0x08, 0x54, 0x2a, 0xaa, 0xb1, 0x41, 0x1c, 0x5c, 0x7b, 0xdd, 0x1c, 0x87,
- 0x7a, 0xc4, 0x3b, 0xf9, 0x0a, 0xf3, 0xc3, 0x1d, 0x30, 0x2b, 0x2d, 0x60,
- 0x62, 0x3b, 0xf3, 0x31, 0x67, 0x8c, 0x25, 0x4f, 0x3e, 0x7f, 0xf2, 0x78,
- 0x57, 0xfb, 0xa6, 0x6a, 0x16, 0xe2, 0x6e, 0xac, 0xf9, 0x18, 0x6e, 0x9c,
- 0xc0, 0xb9, 0x43, 0xaf, 0xc9, 0xa9, 0x3d, 0x1f, 0x03, 0x05, 0x88, 0x63,
- 0x33, 0xe7, 0x7e, 0x3d, 0xe4, 0x62, 0x47, 0xe7, 0x2b, 0x66, 0xca, 0x41,
- 0xfe, 0x00, 0x7d, 0x2c, 0xe3, 0x97, 0x77, 0xc0, 0xe1, 0xd3, 0xda, 0x31,
- 0x6f, 0x57, 0x19, 0xc4, 0xa8, 0xe2, 0x50, 0xd2, 0x34, 0xf5, 0x6d, 0x17,
- 0x35, 0xaf, 0x31, 0x09, 0x2a, 0xe9, 0xe7, 0xd0, 0x54, 0x45, 0xf5, 0xb8,
- 0xa2, 0x66, 0xd0, 0xa5, 0x27, 0x17, 0xd8, 0x37, 0xc2, 0xb5, 0x5d, 0x2c,
- 0x78, 0x62, 0x18, 0xb9, 0x28, 0x71, 0xaf, 0x39, 0x43, 0xaa, 0xbd, 0x8f,
- 0x8c, 0xba, 0x48, 0x94, 0xa2, 0xef, 0x4b, 0x82, 0x94, 0x9c, 0x49, 0xb4,
- 0x92, 0x78, 0x99, 0x2d, 0xb5, 0x31, 0x0d, 0xab, 0x1e, 0xa5, 0x64, 0x37,
- 0xb0, 0x2b, 0x42, 0x5b, 0xd1, 0x4b, 0xbe, 0x70, 0x1f, 0xe6, 0x87, 0xba,
- 0x41, 0x52, 0x85, 0x27, 0x68, 0xcd, 0xac, 0xb7, 0xbe, 0x45, 0xa9, 0x4d,
- 0x51, 0x40, 0xba, 0x65, 0x2d, 0xfa, 0x77, 0x4b, 0x95, 0x61, 0x45, 0x1b,
- 0x7f, 0xb5, 0xb3, 0x11, 0x3d, 0xb3, 0x87, 0x25, 0xc5, 0x90, 0x5d, 0xf0,
- 0xa5, 0x84, 0x7d, 0x29, 0x17, 0xc9, 0x0e, 0x26, 0xbc, 0xb7, 0xb7, 0x7b,
- 0xff, 0xa4, 0xe5, 0xc9, 0xfb, 0x26, 0x79, 0xc6, 0x8e, 0x0d, 0x0f, 0xc9,
- 0x7e, 0xee, 0xcd, 0x81, 0xbe, 0x49, 0x27, 0xc6, 0x70, 0xf3, 0x9c, 0x44,
- 0xc8, 0x89, 0x33, 0xa4, 0x42, 0x50, 0x8d, 0x72, 0xe8, 0xc4, 0xd7, 0xac,
- 0x34, 0x5e, 0x60, 0x7b, 0xed, 0x62, 0xf6, 0x32, 0x92, 0x98, 0xb0, 0x10,
- 0x4a, 0x8d, 0x02, 0xb4, 0xd3, 0x2b, 0x43, 0x84, 0xa1, 0xbe, 0xe9, 0xa6,
- 0xe5, 0x2d, 0x0e, 0x26, 0x6e, 0x3e, 0x48, 0x3c, 0x37, 0x3b, 0xdf, 0x42,
- 0xf5, 0x41, 0xb0, 0x3b, 0x3e, 0x52, 0x1b, 0xa1, 0x4f, 0xdb, 0x0c, 0x4b,
- 0x6e, 0xe2, 0x3c, 0x0a, 0xc0, 0x58, 0xf9, 0x49, 0xaf, 0x15, 0x77, 0x48,
- 0x9d, 0x2d, 0xc4, 0x02, 0x1e, 0xd0, 0x70, 0xd4, 0x4f, 0x6e, 0xcd, 0x0c,
- 0x85, 0xca, 0xcd, 0xa2, 0xa5, 0x17, 0x98, 0x0e, 0x46, 0xd3, 0x0d, 0x18,
- 0x2f, 0xe6, 0x66, 0xe9, 0x9b, 0x7b, 0xa2, 0x03, 0x07, 0x64, 0xc2, 0x3f,
- 0x6d, 0x6d, 0xe6, 0x80, 0xef, 0x28, 0x10, 0x38, 0x62, 0xba, 0x3a, 0x1a,
- 0xb6, 0x85, 0xb5, 0xdf, 0x76, 0x0f, 0x37, 0xa6, 0xe0, 0xd9, 0x1c, 0x3c,
- 0xf8, 0x79, 0x25, 0x0b, 0x2f, 0x94, 0xb3, 0xea, 0x6b, 0xd3, 0x41, 0xdb,
- 0xbe, 0x86, 0x67, 0x6d, 0x5f, 0x83, 0xad, 0x63, 0x8f, 0x6b, 0x68, 0x9c,
- 0x7c, 0x59, 0x27, 0xef, 0xf5, 0xb1, 0x64, 0x67, 0x7c, 0xf6, 0xfe, 0xe8,
- 0xab, 0xd3, 0xdd, 0xfb, 0x7c, 0x94, 0x6d, 0xfe, 0x6f, 0xd7, 0x95, 0x6a,
- 0x96, 0xb0, 0x4c, 0x1f, 0xd6, 0xc9, 0x57, 0xe3, 0xf1, 0xf0, 0xd5, 0xd9,
- 0x31, 0x1a, 0xec, 0x8d, 0xcd, 0x9f, 0x3d, 0x30, 0xd0, 0x23, 0xa0, 0x90,
- 0x0f, 0xbf, 0x95, 0xda, 0xd1, 0x5a, 0x93, 0x04, 0xe1, 0x01, 0xa4, 0xc3,
- 0x14, 0xe0, 0x36, 0xde, 0x23, 0x8b, 0x04, 0x80, 0xe1, 0xbb, 0x26, 0xcf,
- 0xd9, 0xf1, 0x1e, 0x3e, 0x45, 0x9f, 0xc4, 0x82, 0x7a, 0xdc, 0x07, 0xeb,
- 0xb0, 0xb7, 0x1e, 0x69, 0x3e, 0x48, 0x31, 0x05, 0x83, 0xd6, 0x64, 0x70,
- 0x63, 0xf9, 0x91, 0x38, 0x71, 0x01, 0xbb, 0x78, 0xe9, 0x0d, 0xb9, 0xc2,
- 0xa8, 0xb6, 0x42, 0xf1, 0x1a, 0x3b, 0xae, 0x37, 0x98, 0x68, 0x8c, 0xca,
- 0x85, 0xc6, 0xe9, 0x63, 0x8d, 0xae, 0x76, 0x9d, 0x22, 0xdb, 0xc3, 0x75,
- 0x92, 0xbc, 0xd8, 0x96, 0x9e, 0xd5, 0x45, 0xb9, 0xbe, 0xbc, 0x62, 0x03,
- 0xab, 0xed, 0x87, 0x00, 0x2f, 0xd7, 0xe8, 0xab, 0x85, 0x8d, 0x37, 0x93,
- 0x0c, 0x48, 0x10, 0xef, 0xa8, 0xde, 0x53, 0x65, 0x14, 0x1c, 0x62, 0xf5,
- 0x86, 0x93, 0x2e, 0x66, 0xbf, 0x09, 0xfc, 0xf2, 0x06, 0x0d, 0x64, 0xc2,
- 0x81, 0x53, 0xb8, 0xd1, 0x8a, 0x66, 0xb1, 0x94, 0xbf, 0xa6, 0xc5, 0x1d,
- 0xdc, 0xa5, 0xe2, 0xbf, 0x47, 0xfd, 0xa7, 0xa5, 0xe9, 0x36, 0xa1, 0x37,
- 0xd5, 0x14, 0x86, 0x3e, 0xa7, 0xa0, 0x72, 0xe1, 0xe7, 0x26, 0x9a, 0x45,
- 0x3b, 0xed, 0xa5, 0x11, 0xd3, 0x30, 0xed, 0x86, 0xc5, 0x40, 0x47, 0x19,
- 0x18, 0x73, 0x58, 0xc2, 0x64, 0xa2, 0x08, 0x0b, 0x11, 0x44, 0x58, 0x11,
- 0xba, 0xcf, 0xed, 0xa4, 0x93, 0xba, 0x5c, 0xac, 0x1b, 0xe8, 0x02, 0xe4,
- 0x14, 0xa5, 0xe2, 0x9a, 0x5d, 0x90, 0xae, 0x84, 0x2f, 0xcd, 0xa8, 0x89,
- 0x97, 0x80, 0x9a, 0xc4, 0xea, 0x00, 0x5c, 0x67, 0xc4, 0x91, 0x0b, 0x01,
- 0x70, 0x14, 0x51, 0xfc, 0x13, 0xb4, 0xb3, 0x3c, 0x16, 0x86, 0x5a, 0x21,
- 0x2d, 0xe9, 0xba, 0x8c, 0xf7, 0xec, 0x36, 0xe7, 0xa7, 0x67, 0xd5, 0xda,
- 0x1d, 0xf5, 0xae, 0x13, 0xeb, 0x6e, 0x25, 0xaa, 0x3b, 0xad, 0x31, 0xc6,
- 0xd9, 0x7a, 0x33, 0x95, 0x35, 0x5b, 0x60, 0x42, 0xb7, 0x64, 0x72, 0x67,
- 0x3f, 0xc6, 0xdf, 0x49, 0x91, 0xcb, 0x63, 0x15, 0xe1, 0x87, 0x82, 0xb1,
- 0xb8, 0xc3, 0x18, 0x6d, 0x4a, 0x46, 0x69, 0x7f, 0xa9, 0x33, 0xf4, 0xb7,
- 0x19, 0xe7, 0x9d, 0xf1, 0x11, 0xe3, 0x34, 0x5a, 0x87, 0xcc, 0x5a, 0x7e,
- 0xb7, 0x9f, 0x16, 0x6d, 0xc4, 0x08, 0x4f, 0x04, 0x04, 0x4c, 0xa1, 0x74,
- 0xbb, 0x2a, 0x55, 0x8f, 0xc8, 0xdf, 0x96, 0x72, 0x27, 0x3f, 0x7e, 0xd9,
- 0xfb, 0x86, 0x2d, 0x05, 0x2a, 0x37, 0x37, 0xdb, 0x74, 0xa7, 0x33, 0x7a,
- 0xc0, 0x86, 0xb8, 0xf5, 0xbb, 0x1f, 0x06, 0x96, 0x9d, 0x8d, 0x17, 0xd7,
- 0x40, 0xc3, 0xb3, 0x8b, 0x32, 0x9c, 0xff, 0xa3, 0xfc, 0x85, 0xee, 0xc0,
- 0x77, 0x79, 0x61, 0x34, 0xc3, 0x7a, 0x57, 0x89, 0x33, 0x2f, 0x62, 0x30,
- 0x0a, 0xc4, 0x3b, 0xb6, 0x6b, 0x63, 0x89, 0x19, 0x8e, 0xe3, 0x12, 0xf5,
- 0x48, 0x71, 0xe6, 0x80, 0x4d, 0xc0, 0x8a, 0xbc, 0x9e, 0x8a, 0x77, 0xab,
- 0xa0, 0x7e, 0x66, 0x6a, 0x99, 0x0e, 0xc6, 0x00, 0x6e, 0xaa, 0x31, 0x0b,
- 0x8a, 0xfc, 0x76, 0x64, 0x83, 0xfb, 0x16, 0xf8, 0xc9, 0x0f, 0x6e, 0x1a,
- 0x46, 0x18, 0x69, 0xa7, 0x0d, 0xce, 0xd6, 0x0d, 0x61, 0xd1, 0xee, 0x62,
- 0x9d, 0x3b, 0x4f, 0x76, 0x93, 0x79, 0xb3, 0xda, 0x39, 0xd8, 0x65, 0xf8,
- 0x6c, 0x69, 0xe3, 0x5c, 0x3a, 0x71, 0x1f, 0x7a, 0x71, 0x28, 0xb7, 0x30,
- 0x79, 0x6d, 0x3f, 0x8b, 0xe0, 0x26, 0x21, 0x49, 0xa1, 0x8a, 0x6f, 0x2e,
- 0x37, 0x98, 0x37, 0xcc, 0xf6, 0x7e, 0x45, 0x1a, 0x73, 0x64, 0xef, 0xb8,
- 0x16, 0x7f, 0x45, 0xa0, 0x92, 0xa8, 0x6c, 0x34, 0x16, 0x84, 0x6b, 0xc0,
- 0x29, 0x6d, 0x88, 0xa4, 0xf4, 0xd9, 0xec, 0xdc, 0x62, 0x36, 0x24, 0x1e,
- 0x72, 0x59, 0x95, 0x46, 0x44, 0x56, 0x11, 0xe8, 0x3d, 0xb1, 0x29, 0x2e,
- 0x50, 0x7d, 0x73, 0x9d, 0x57, 0x65, 0x01, 0x74, 0xc3, 0xeb, 0xb4, 0xca,
- 0x11, 0xe6, 0xdf, 0xfa, 0xfa, 0xf4, 0xdd, 0xd1, 0x96, 0xef, 0x14, 0x99,
- 0xe7, 0xe2, 0x47, 0xc7, 0xf9, 0x75, 0xbd, 0xd4, 0x7a, 0x9a, 0x31, 0xa7,
- 0xa1, 0x11, 0xe9, 0x53, 0x56, 0xfb, 0x00, 0xc4, 0x00, 0x94, 0xaa, 0xcc,
- 0x46, 0xc8, 0x8d, 0x2a, 0x29, 0x49, 0x00, 0xd2, 0xd2, 0x4d, 0x29, 0x0c,
- 0x49, 0x40, 0xb1, 0xc6, 0x1b, 0x6a, 0x1a, 0xa2, 0xf9, 0x46, 0xe9, 0x37,
- 0x15, 0x4b, 0xbc, 0xc6, 0x63, 0xa4, 0xe6, 0x6b, 0x47, 0x06, 0xe7, 0x62,
- 0xef, 0x8a, 0xc7, 0xe5, 0x1d, 0x59, 0x36, 0xdb, 0x6d, 0x01, 0xb8, 0x5d,
- 0x93, 0x31, 0xde, 0x6c, 0xeb, 0xf6, 0x22, 0x5d, 0xd4, 0xf1, 0xf8, 0xb0,
- 0xd9, 0x6b, 0xcf, 0xd7, 0x99, 0xaa, 0xf9, 0x13, 0x6e, 0x74, 0x1e, 0xdc,
- 0xdd, 0xbe, 0x17, 0x7c, 0xfb, 0x6e, 0xbb, 0xd6, 0x5d, 0x88, 0x7f, 0x93,
- 0xba, 0x02, 0xb1, 0x76, 0x9f, 0xd8, 0x76, 0x94, 0x9e, 0xe0, 0xed, 0x43,
- 0xaf, 0xa2, 0xf9, 0x7c, 0x39, 0x65, 0x24, 0x22, 0x1b, 0x57, 0xed, 0x60,
- 0xcd, 0xaa, 0x96, 0x54, 0x78, 0x1d, 0x23, 0x31, 0x5a, 0x2f, 0xd6, 0xa1,
- 0x11, 0xdc, 0x48, 0xa3, 0x52, 0xc8, 0xb7, 0xdc, 0xe8, 0x06, 0x37, 0x85,
- 0x8b, 0x22, 0xcb, 0x97, 0x06, 0x7e, 0x35, 0x75, 0x1f, 0xfa, 0xa9, 0x4b,
- 0x46, 0xb1, 0x7a, 0x09, 0xc3, 0x7f, 0x32, 0x80, 0xa4, 0x05, 0x8c, 0x52,
- 0x10, 0xcd, 0x50, 0x3f, 0xb6, 0x3b, 0xa9, 0x8e, 0x6d, 0x54, 0x2c, 0x99,
- 0xbf, 0xb1, 0x39, 0x63, 0x23, 0xfe, 0x8c, 0xd2, 0x01, 0x85, 0x83, 0x3a,
- 0x1f, 0xa4, 0xc8, 0xb2, 0xc9, 0xa2, 0x30, 0x4f, 0xee, 0x3e, 0x9a, 0xa5,
- 0x09, 0x86, 0x7b, 0xbd, 0xae, 0xae, 0x51, 0xf5, 0x2a, 0xad, 0x7f, 0x38,
- 0x35, 0xd8, 0x9d, 0x87, 0x9c, 0x43, 0x44, 0xca, 0x7b, 0x33, 0xa4, 0xb4,
- 0xcd, 0x6a, 0x2d, 0x38, 0xdf, 0x5f, 0xf1, 0x2c, 0xec, 0x04, 0xad, 0xa5,
- 0x43, 0x00, 0x28, 0xac, 0xc5, 0x06, 0x49, 0xfa, 0x65, 0x0d, 0xc8, 0xce,
- 0xa6, 0x4a, 0xa7, 0xee, 0x2f, 0xc3, 0xb4, 0x9e, 0xe6, 0xb9, 0xb6, 0x92,
- 0xa1, 0xf8, 0x60, 0x46, 0xe9, 0xb0, 0x51, 0x7c, 0x1c, 0x77, 0x1e, 0xb6,
- 0x89, 0xc3, 0xac, 0x64, 0xf7, 0x2e, 0xe7, 0x9c, 0xa4, 0xdc, 0x65, 0x8c,
- 0x32, 0x58, 0x50, 0x1a, 0x27, 0xc1, 0xc3, 0x58, 0x77, 0x1d, 0xad, 0xb4,
- 0xe9, 0x31, 0x6d, 0x8d, 0xf5, 0x7d, 0xe0, 0x9b, 0xdf, 0xba, 0x09, 0x43,
- 0xc2, 0x1a, 0xaf, 0x1b, 0x36, 0x25, 0x6f, 0x6e, 0x0e, 0xfd, 0x67, 0x36,
- 0x45, 0xc3, 0x9f, 0x76, 0x8c, 0x13, 0x46, 0x7b, 0x8a, 0x99, 0x26, 0xe3,
- 0xdd, 0x56, 0xaf, 0xbd, 0x57, 0x27, 0x67, 0xef, 0x81, 0xb0, 0x45, 0xa0,
- 0xcd, 0x45, 0xcd, 0x59, 0x0a, 0xf4, 0x33, 0x4a, 0x60, 0x87, 0x50, 0x20,
- 0xa8, 0x44, 0xc2, 0x4b, 0x0e, 0xcb, 0xab, 0x81, 0x4b, 0x0f, 0xf3, 0x21,
- 0x66, 0x5f, 0x71, 0x7a, 0x5b, 0x91, 0x78, 0x05, 0x8e, 0xcc, 0xe0, 0xd5,
- 0xbe, 0xe8, 0x2e, 0xc7, 0x7c, 0xd5, 0x7d, 0x5b, 0x01, 0xde, 0x6d, 0x21,
- 0x52, 0xfb, 0x5d, 0x0b, 0x32, 0x56, 0x2a, 0xa2, 0x58, 0xc0, 0xcf, 0x9b,
- 0xcc, 0x42, 0x99, 0x89, 0x5d, 0x67, 0x61, 0x18, 0xb5, 0x79, 0x0e, 0x27,
- 0x69, 0x00, 0xb8, 0x42, 0xeb, 0xe3, 0xeb, 0xcd, 0x88, 0x06, 0x66, 0x63,
- 0x8b, 0x55, 0xd1, 0x06, 0xf3, 0xb2, 0xdb, 0x1d, 0x35, 0x42, 0xbb, 0xf3,
- 0xda, 0x5c, 0x17, 0xa6, 0x53, 0xa5, 0x9e, 0x3d, 0x1b, 0x0e, 0xf8, 0xfd,
- 0x80, 0xbf, 0x3a, 0x59, 0x13, 0x87, 0xe8, 0x7c, 0x41, 0x8e, 0x97, 0x95,
- 0x26, 0x7e, 0x82, 0xbe, 0x27, 0xee, 0x2f, 0x46, 0x52, 0xa2, 0x1a, 0xce,
- 0x2c, 0x5d, 0x1a, 0xb5, 0xa0, 0xd0, 0x42, 0x01, 0xf2, 0xfc, 0x52, 0x3e,
- 0x67, 0x77, 0xc2, 0xeb, 0x54, 0x38, 0x96, 0x22, 0x69, 0x83, 0x0b, 0x74,
- 0xea, 0x07, 0xf8, 0x33, 0xc4, 0x49, 0xfd, 0xe1, 0x63, 0x35, 0x61, 0x78,
- 0xdd, 0xe2, 0x1e, 0x48, 0xdc, 0x46, 0xbb, 0x0e, 0x32, 0x66, 0x31, 0x0f,
- 0x61, 0x1b, 0x0f, 0x53, 0xd3, 0x9c, 0xab, 0x75, 0xf1, 0xc9, 0x4c, 0x21,
- 0x2c, 0x87, 0xd6, 0x64, 0x5f, 0xc2, 0xdd, 0xe7, 0x6e, 0x9d, 0xf4, 0x17,
- 0x6e, 0xfd, 0x6a, 0x47, 0x20, 0xb8, 0xe4, 0x6b, 0x72, 0xe4, 0x85, 0x1d,
- 0xdf, 0x63, 0xb3, 0x9b, 0xd9, 0xfb, 0x91, 0x36, 0x6e, 0x03, 0xa3, 0xe9,
- 0xec, 0x7a, 0xd2, 0xae, 0xcf, 0xb5, 0xa1, 0x46, 0x4f, 0xa4, 0x48, 0x14,
- 0x5b, 0x01, 0xa4, 0x50, 0x91, 0xa4, 0xa9, 0x5e, 0x01, 0x3b, 0x5c, 0x83,
- 0xec, 0xc9, 0x64, 0xc3, 0x37, 0x81, 0xdd, 0xe2, 0x35, 0xbe, 0x89, 0xcc,
- 0xa4, 0x5d, 0x9b, 0xdf, 0x47, 0x07, 0xac, 0xa4, 0xc0, 0x91, 0x65, 0x88,
- 0xc0, 0x95, 0xf2, 0x4b, 0x26, 0x8a, 0xd5, 0xd9, 0xa8, 0x25, 0xa5, 0xdf,
- 0x13, 0x2f, 0xc2, 0xb7, 0x5c, 0x29, 0x57, 0x56, 0x58, 0x22, 0x5b, 0xd2,
- 0x45, 0x95, 0xd0, 0xce, 0x6f, 0xb8, 0x4b, 0x6e, 0x21, 0xde, 0x46, 0xd9,
- 0x1f, 0x76, 0x36, 0xa9, 0x78, 0x10, 0x37, 0x7c, 0x1f, 0x32, 0xc3, 0xf7,
- 0x6d, 0x5e, 0xe8, 0x56, 0x1a, 0xd4, 0x51, 0x47, 0x6e, 0xf4, 0xbd, 0x3c,
- 0x90, 0x86, 0xa7, 0x04, 0xfb, 0xb3, 0xf7, 0x61, 0x95, 0xb7, 0xb8, 0xff,
- 0x26, 0xa8, 0xcf, 0xbe, 0x8f, 0x0b, 0x5a, 0xd3, 0x5d, 0x7e, 0xd6, 0xe3,
- 0xda, 0xfa, 0xf9, 0x2c, 0xb0, 0x8d, 0x23, 0x18, 0xe1, 0x80, 0x45, 0xc0,
- 0x00, 0x85, 0xee, 0x7e, 0x1d, 0x16, 0x48, 0x9f, 0x94, 0x09, 0xe7, 0xb3,
- 0x28, 0x82, 0x83, 0x3d, 0x59, 0x69, 0x48, 0x29, 0x01, 0x0b, 0x3a, 0x0b,
- 0xc5, 0x8e, 0x39, 0x7e, 0x63, 0x48, 0x8c, 0x54, 0x55, 0x6a, 0x4f, 0xfc,
- 0xe7, 0xbe, 0xa3, 0x45, 0xc7, 0x7b, 0x0d, 0xe9, 0xc2, 0xbc, 0x9f, 0x91,
- 0x31, 0xef, 0xc1, 0x7a, 0x11, 0xce, 0xdf, 0xc8, 0x23, 0x75, 0x0e, 0xb7,
- 0x6b, 0xf3, 0x8b, 0x9e, 0x16, 0x03, 0x19, 0xd0, 0xca, 0x00, 0x68, 0x7b,
- 0xb5, 0x26, 0x00, 0x40, 0x12, 0x77, 0xdc, 0xb0, 0x46, 0x7a, 0x2a, 0x55,
- 0x19, 0xcd, 0xb9, 0x3d, 0xe1, 0x00, 0xa8, 0x8e, 0x9d, 0xd8, 0x75, 0x66,
- 0xae, 0x21, 0xd7, 0x09, 0x4d, 0xaa, 0xf2, 0x53, 0xc6, 0x34, 0x07, 0xc3,
- 0x02, 0xc8, 0x4b, 0xac, 0x47, 0x89, 0x2f, 0xd6, 0x70, 0x39, 0xc6, 0xa3,
- 0xa7, 0x7c, 0x85, 0x20, 0xe8, 0xca, 0xcd, 0xf1, 0x04, 0xb2, 0xc1, 0xf1,
- 0xc2, 0x1c, 0xaf, 0x03, 0x2c, 0x41, 0x21, 0xe4, 0xf9, 0xb8, 0xa6, 0x04,
- 0xf4, 0x16, 0xbf, 0xf7, 0x96, 0x0e, 0x88, 0x9c, 0x37, 0x5c, 0x7d, 0xff,
- 0xe6, 0x8b, 0x83, 0xa6, 0xff, 0xde, 0xdb, 0x53, 0xf7, 0xef, 0x7d, 0xe4,
- 0x44, 0x1f, 0xde, 0xf3, 0xce, 0xd0, 0x12, 0x1c, 0x60, 0xc9, 0x4b, 0x43,
- 0x54, 0xec, 0x0a, 0xa3, 0x50, 0x56, 0xd7, 0xcb, 0x85, 0xde, 0x8d, 0x43,
- 0xb5, 0x38, 0x66, 0x9c, 0xc6, 0x03, 0x6b, 0x8d, 0xb4, 0x70, 0xae, 0x6a,
- 0x98, 0xb9, 0x5e, 0xaa, 0x82, 0xdd, 0x3e, 0x60, 0x15, 0xc9, 0x50, 0x4c,
- 0xe4, 0x8a, 0x3b, 0xff, 0x0d, 0xd7, 0xc0, 0x42, 0x07, 0xa7, 0xe3, 0x01,
- 0x68, 0x4f, 0x5e, 0x3b, 0x25, 0xf3, 0xdf, 0x29, 0x0d, 0xd8, 0x68, 0xb4,
- 0x0d, 0xe5, 0x81, 0xe1, 0x5b, 0x81, 0xca, 0xc9, 0x7d, 0xcc, 0x6c, 0x9d,
- 0x08, 0x17, 0x79, 0x5b, 0x4c, 0x1a, 0x42, 0x3e, 0xf6, 0x35, 0x03, 0x06,
- 0x96, 0x4f, 0x8e, 0xc8, 0x5a, 0x89, 0x18, 0x82, 0xec, 0xb0, 0xc8, 0x6d,
- 0x95, 0x5d, 0x2e, 0xb8, 0xd4, 0x9c, 0xb4, 0x25, 0x86, 0x75, 0xaa, 0xd9,
- 0x58, 0xbc, 0x78, 0x1f, 0x2b, 0x2f, 0x82, 0xb5, 0xce, 0x09, 0x4f, 0x62,
- 0x9d, 0xe9, 0x0f, 0x6c, 0x03, 0xb3, 0x56, 0xb6, 0x0c, 0x1b, 0x28, 0x62,
- 0xb1, 0x46, 0xba, 0x90, 0x61, 0x2a, 0x89, 0xf7, 0x98, 0xff, 0xca, 0x8b,
- 0xcf, 0xf7, 0x07, 0x62, 0xd3, 0x50, 0x94, 0xcb, 0x7f, 0x86, 0x5c, 0x53,
- 0x11, 0x2d, 0x82, 0x1e, 0x33, 0x3f, 0xb5, 0x4f, 0x86, 0x1c, 0x50, 0x50,
- 0x33, 0x9f, 0x3c, 0xa2, 0x50, 0x77, 0xdc, 0x95, 0xc4, 0xec, 0xce, 0x77,
- 0x1e, 0x58, 0xef, 0x41, 0x1d, 0xc5, 0xdf, 0x9d, 0x79, 0x92, 0x47, 0x4e,
- 0xe3, 0x58, 0xc2, 0xa4, 0xdb, 0xe8, 0x75, 0x16, 0x75, 0x44, 0xcc, 0xf2,
- 0x3a, 0xe2, 0xbb, 0xe0, 0x04, 0x36, 0x21, 0x38, 0xdb, 0x82, 0x0e, 0x0d,
- 0x78, 0x98, 0xb4, 0x71, 0x8a, 0xe6, 0xc2, 0x6c, 0xa1, 0x7f, 0x86, 0xce,
- 0xda, 0xec, 0xfe, 0xc6, 0x7b, 0xf2, 0x7c, 0xf4, 0xb8, 0x75, 0x4f, 0x9a,
- 0xc5, 0x72, 0x78, 0x33, 0xb9, 0x27, 0xe4, 0x71, 0x71, 0xf2, 0x0e, 0x29,
- 0x1f, 0xca, 0x6e, 0xd0, 0x04, 0x42, 0xbd, 0xcf, 0xe4, 0xd7, 0x61, 0x17,
- 0x21, 0x61, 0xfa, 0x62, 0x22, 0x0f, 0xc9, 0xac, 0xb5, 0x35, 0xa3, 0x62,
- 0xee, 0x2b, 0xe4, 0x9d, 0x19, 0x92, 0xdd, 0xd8, 0xab, 0xd5, 0x22, 0x8f,
- 0x16, 0xf6, 0x68, 0x66, 0x6d, 0x76, 0x9b, 0x4d, 0xd7, 0x08, 0x4f, 0x93,
- 0x72, 0x48, 0x18, 0x52, 0x9b, 0xfd, 0xe6, 0x9e, 0xaf, 0x5c, 0xbc, 0xe3,
- 0xe6, 0x07, 0xdd, 0xcd, 0xe8, 0xae, 0x9d, 0x17, 0x1f, 0x38, 0xcd, 0xb8,
- 0xbe, 0x3d, 0xf6, 0xbb, 0x20, 0x44, 0x8c, 0x7c, 0x7e, 0x12, 0x88, 0x86,
- 0xa4, 0xf2, 0xcb, 0x82, 0x55, 0x8e, 0x77, 0xf9, 0xb4, 0x2a, 0xeb, 0x72,
- 0xce, 0x99, 0x6a, 0x9e, 0x79, 0x74, 0x7c, 0x3c, 0x4e, 0x6e, 0xb2, 0x89,
- 0x96, 0xc4, 0x8e, 0x42, 0x1f, 0x32, 0x78, 0x08, 0x05, 0x46, 0xaa, 0x3c,
- 0x6b, 0x68, 0xcb, 0x34, 0x14, 0x4a, 0x10, 0x51, 0x68, 0x89, 0x25, 0x00,
- 0x2a, 0x50, 0xdf, 0xa9, 0xab, 0xe0, 0x82, 0x05, 0xd3, 0x2a, 0x2b, 0x23,
- 0xf1, 0x70, 0x9e, 0x80, 0x8a, 0x15, 0xa6, 0x13, 0xc8, 0xf0, 0x49, 0x2a,
- 0x0d, 0x9b, 0xd8, 0x33, 0x60, 0xd8, 0x0e, 0x69, 0x28, 0xe2, 0x51, 0xf9,
- 0x44, 0xae, 0xb2, 0xa0, 0x56, 0x65, 0x92, 0x51, 0x8b, 0x43, 0x8a, 0xf2,
- 0xb7, 0x9d, 0x76, 0xc5, 0xac, 0xac, 0x90, 0x81, 0xe4, 0xb5, 0x52, 0x41,
- 0xd3, 0xc1, 0x75, 0x85, 0xa2, 0x2b, 0xc0, 0x97, 0x86, 0xfc, 0xf4, 0xe6,
- 0x8a, 0xc3, 0xb5, 0x7a, 0x0a, 0x24, 0x9c, 0x50, 0x65, 0xcb, 0xa5, 0x3d,
- 0x02, 0xd8, 0x4f, 0xf3, 0x77, 0xe2, 0xc6, 0x3b, 0x8d, 0x28, 0xd4, 0xa1,
- 0x9c, 0x87, 0x2b, 0x29, 0x95, 0x1c, 0x85, 0x37, 0xf9, 0x65, 0x4f, 0x67,
- 0x4d, 0x0b, 0xee, 0x00, 0xe1, 0x84, 0x1b, 0x8b, 0xd9, 0x88, 0xc8, 0xac,
- 0xf8, 0x8e, 0x26, 0x41, 0xbb, 0x58, 0x54, 0x3d, 0x85, 0x0e, 0xd8, 0x1e,
- 0xea, 0xeb, 0xc3, 0xc4, 0xf0, 0xf4, 0xc6, 0x4e, 0x3c, 0x09, 0x92, 0xa5,
- 0xb1, 0xfd, 0xfe, 0x48, 0x81, 0xf9, 0x89, 0xa1, 0xa4, 0xf6, 0x54, 0xec,
- 0x0d, 0xf0, 0x50, 0xc7, 0x5b, 0x5a, 0x9f, 0x6a, 0x79, 0x01, 0x00, 0x85,
- 0xe7, 0x2a, 0x88, 0x2b, 0x7d, 0x7d, 0x50, 0xd2, 0x88, 0x64, 0x45, 0xf2,
- 0x51, 0xbc, 0x60, 0xac, 0xed, 0x28, 0x4f, 0xc7, 0xd3, 0x8e, 0x74, 0xf9,
- 0x57, 0xb7, 0xa4, 0x1f, 0x1c, 0x0e, 0x27, 0x59, 0x4a, 0xcd, 0x5d, 0x5e,
- 0x36, 0xa4, 0x30, 0xc5, 0x2b, 0x53, 0x7a, 0x0a, 0x53, 0xfe, 0xcc, 0x6f,
- 0x5e, 0x40, 0xd3, 0xa2, 0xa3, 0x3d, 0x7d, 0xf5, 0xe1, 0xe2, 0xeb, 0x24,
- 0x39, 0x24, 0x60, 0xf9, 0x87, 0x54, 0xa6, 0x80, 0x23, 0xb4, 0x46, 0xd1,
- 0x5b, 0x8d, 0x1e, 0xb1, 0xc5, 0xdf, 0xd6, 0x45, 0xbb, 0x77, 0x44, 0xcc,
- 0x37, 0x0f, 0xf9, 0x29, 0xa2, 0x97, 0xcb, 0xa4, 0x5b, 0x99, 0xd5, 0xda,
- 0x59, 0x88, 0x4f, 0x64, 0x38, 0xe4, 0xea, 0x39, 0x73, 0xb5, 0xef, 0x09,
- 0x63, 0xd6, 0x71, 0x78, 0x0e, 0x99, 0xad, 0x4c, 0x57, 0xf1, 0x83, 0x34,
- 0x5e, 0x8a, 0x56, 0x2e, 0xe4, 0xe0, 0x6f, 0xba, 0x9d, 0x41, 0xcf, 0xdf,
- 0xbe, 0xee, 0x0c, 0xf7, 0xf4, 0xd9, 0x93, 0xfd, 0x5f, 0x31, 0x49, 0xaf,
- 0x24, 0xef, 0x88, 0x78, 0x11, 0xa2, 0xa8, 0x39, 0xdf, 0x55, 0x54, 0xb6,
- 0xaa, 0x7e, 0x86, 0x52, 0x1e, 0xf2, 0xcb, 0xea, 0xeb, 0x66, 0x46, 0xd9,
- 0x5a, 0x16, 0x75, 0xa3, 0x52, 0x75, 0xff, 0xbf, 0xfe, 0x19, 0x96, 0xd5,
- 0xfe, 0xf5, 0x47, 0xf6, 0x13, 0xcf, 0xd1, 0x4f, 0xcf, 0x25, 0xfa, 0x2b,
- 0x9b, 0xa9, 0x9d, 0x44, 0xa6, 0x1b, 0xbd, 0xfd, 0xbb, 0x6d, 0xdb, 0xf5,
- 0x06, 0x3a, 0x7f, 0xb4, 0x28, 0x5b, 0x85, 0xa7, 0xcc, 0x4d, 0x0f, 0x16,
- 0xa0, 0xe4, 0xa9, 0xa7, 0x0e, 0x28, 0x34, 0x95, 0x6d, 0x0a, 0x36, 0xeb,
- 0xeb, 0x59, 0xa5, 0xcd, 0x5b, 0x04, 0xbe, 0x4b, 0xdd, 0xe4, 0xe4, 0xce,
- 0xe6, 0xdc, 0x2a, 0xcc, 0x9f, 0x54, 0x51, 0x94, 0x2f, 0xe7, 0x45, 0x8f,
- 0xef, 0x52, 0x12, 0x88, 0xfe, 0xcb, 0x9c, 0xc0, 0xa0, 0xb9, 0x29, 0xff,
- 0xd9, 0xf6, 0x63, 0x1a, 0x0d, 0x83, 0x66, 0xfc, 0xf1, 0x77, 0x07, 0x54,
- 0x11, 0xb4, 0xd5, 0x1d, 0xc2, 0x7c, 0x74, 0x8d, 0xd2, 0x23, 0x3e, 0x55,
- 0xab, 0x20, 0x6d, 0x02, 0xe7, 0xd5, 0x0f, 0x52, 0xb1, 0xf1, 0x80, 0xf4,
- 0xc6, 0x7f, 0x8e, 0xe8, 0xbf, 0x7f, 0x3d, 0x18, 0x3e, 0xf9, 0xd1, 0x7e,
- 0xf4, 0x77, 0x07, 0x1f, 0x7f, 0x77, 0xb8, 0x15, 0x2d, 0xab, 0x73, 0xb5,
- 0xff, 0x5e, 0x86, 0x22, 0xa9, 0xb3, 0xc5, 0x9d, 0x94, 0x69, 0x48, 0x84,
- 0xd1, 0xb5, 0xd9, 0x43, 0xd3, 0xde, 0x10, 0x1f, 0x89, 0xfc, 0x56, 0x1d,
- 0x4d, 0x55, 0xfb, 0xec, 0x29, 0x73, 0xb8, 0x29, 0xf9, 0x65, 0xf1, 0xa9,
- 0x70, 0xfd, 0x9f, 0xd6, 0x0f, 0x04, 0xbc, 0x90, 0xa0, 0x98, 0x7c, 0xda,
- 0x20, 0xb4, 0x14, 0x85, 0xd8, 0x08, 0x77, 0x43, 0xd2, 0xa2, 0x8c, 0x34,
- 0x4b, 0x93, 0xce, 0xa6, 0x4f, 0x26, 0xf6, 0x27, 0x45, 0x16, 0x14, 0x62,
- 0xa5, 0x8c, 0x11, 0x95, 0x09, 0xd8, 0x5d, 0x62, 0xb9, 0x82, 0x79, 0xd3,
- 0x86, 0xad, 0x25, 0x9a, 0x85, 0xd9, 0xbb, 0x76, 0xcd, 0xd4, 0x35, 0xb8,
- 0xcb, 0x2d, 0xfe, 0xb6, 0xd6, 0x5e, 0xda, 0x4e, 0xa0, 0x98, 0x91, 0xf2,
- 0xda, 0xc5, 0x5e, 0xf0, 0x33, 0x89, 0xbb, 0xa0, 0xbe, 0x1f, 0x32, 0xae,
- 0x2e, 0x63, 0x91, 0xbc, 0x74, 0x42, 0x4d, 0xf0, 0x5a, 0x3d, 0x85, 0x6c,
- 0x83, 0x98, 0x89, 0x43, 0x9b, 0x4a, 0xeb, 0x9e, 0x0d, 0xf1, 0xb7, 0xc2,
- 0xdb, 0x04, 0xd9, 0x28, 0x6c, 0xce, 0x06, 0xa7, 0x2e, 0x17, 0xc5, 0x52,
- 0xf6, 0x68, 0x93, 0x0d, 0xbd, 0xaa, 0x58, 0x54, 0xe1, 0xe2, 0xa7, 0x5e,
- 0x86, 0x9b, 0x84, 0xf5, 0x86, 0x41, 0x2c, 0xd2, 0x10, 0xd1, 0xec, 0xce,
- 0x70, 0x42, 0x06, 0x76, 0xb5, 0x38, 0x91, 0xea, 0x21, 0x10, 0x5e, 0x63,
- 0xe8, 0x6c, 0x7b, 0xb8, 0x9d, 0xec, 0xa0, 0x72, 0x1e, 0x66, 0x5d, 0x32,
- 0x4b, 0xeb, 0xab, 0xdd, 0x98, 0x17, 0xd2, 0x39, 0xfe, 0x1c, 0xa3, 0x9a,
- 0x88, 0xeb, 0x81, 0x24, 0x26, 0x73, 0xa8, 0x4d, 0xde, 0xea, 0x53, 0x06,
- 0xd5, 0xa0, 0x24, 0xc1, 0xa1, 0x8d, 0x24, 0xb7, 0x7e, 0x32, 0x24, 0x63,
- 0x11, 0x3f, 0xfd, 0x4f, 0x7e, 0x36, 0x88, 0x63, 0xd0, 0x93, 0x9c, 0xe5,
- 0x35, 0xe4, 0x02, 0x28, 0x27, 0x44, 0x29, 0x7e, 0x97, 0xbc, 0x5c, 0x5d,
- 0x55, 0x46, 0xf3, 0x0b, 0xeb, 0xac, 0xc6, 0x5f, 0x27, 0x8c, 0xa3, 0x69,
- 0x9e, 0xe2, 0x67, 0x2c, 0x71, 0x78, 0x50, 0x83, 0xbf, 0x22, 0x3e, 0x1e,
- 0x25, 0x90, 0x0c, 0xd3, 0x7a, 0x18, 0x68, 0x39, 0x17, 0x7e, 0x36, 0x2d,
- 0xe9, 0x9c, 0x64, 0x88, 0x50, 0xe2, 0x22, 0xc5, 0xd3, 0x8a, 0x29, 0x5a,
- 0x81, 0x27, 0x7b, 0xa3, 0xd1, 0x1e, 0x31, 0xab, 0x3d, 0xf3, 0x87, 0x06,
- 0xef, 0x05, 0xa1, 0xaa, 0xdb, 0x30, 0x8b, 0xc2, 0x81, 0xf4, 0x31, 0x00,
- 0x65, 0x48, 0x7b, 0x49, 0xaf, 0x05, 0xd1, 0xdf, 0xd7, 0x48, 0x3e, 0xad,
- 0x8c, 0x2e, 0x59, 0x71, 0x15, 0xef, 0xb2, 0x25, 0x1f, 0x83, 0x36, 0x55,
- 0xec, 0x52, 0xaf, 0x05, 0x2f, 0xa2, 0xd3, 0x7a, 0x8d, 0x4c, 0x3a, 0x78,
- 0x5e, 0x68, 0x11, 0x79, 0xa3, 0x28, 0x5d, 0xa8, 0x9f, 0x4e, 0x37, 0xda,
- 0x72, 0x8f, 0x0f, 0xdb, 0x3e, 0x8f, 0x55, 0x5e, 0x18, 0xeb, 0xc2, 0x68,
- 0xc5, 0x00, 0xf7, 0xa4, 0xec, 0xbb, 0xb0, 0x7e, 0x87, 0x1d, 0x69, 0xed,
- 0xb8, 0x2b, 0x3b, 0x92, 0x99, 0xb7, 0x59, 0x6d, 0x43, 0xb5, 0x6b, 0x46,
- 0x37, 0xe5, 0x08, 0xfe, 0x4e, 0x20, 0x28, 0xf9, 0x23, 0xbb, 0x2c, 0x2d,
- 0x25, 0x3f, 0x17, 0x04, 0x91, 0xd9, 0x66, 0x1b, 0xa2, 0xc7, 0xa4, 0x9c,
- 0xff, 0x03, 0xc5, 0x1d, 0xa3, 0xc5, 0x3c, 0x1e, 0xd6, 0xdd, 0x60, 0x9d,
- 0x24, 0xae, 0x29, 0x17, 0xad, 0x99, 0xf0, 0x51, 0xcd, 0xbe, 0xbf, 0x39,
- 0x3a, 0x17, 0xd5, 0x04, 0xce, 0x07, 0xd7, 0x4f, 0x35, 0x6c, 0x37, 0x4c,
- 0x46, 0xcc, 0xd3, 0xc7, 0xb6, 0xc1, 0x79, 0x7d, 0x95, 0x1e, 0x3e, 0x79,
- 0x2a, 0xd3, 0x56, 0xb4, 0x2c, 0xc8, 0xec, 0x6d, 0xfe, 0xd5, 0xde, 0x1e,
- 0x07, 0xca, 0xc9, 0x2c, 0x0d, 0x78, 0x42, 0x2a, 0x6d, 0xda, 0xb7, 0xff,
- 0xb8, 0x1d, 0x4d, 0x91, 0x53, 0xa5, 0x95, 0x4d, 0x77, 0x72, 0x3b, 0x23,
- 0x8d, 0xcf, 0x6f, 0xca, 0x30, 0xe8, 0x36, 0xe9, 0x41, 0xd9, 0x4a, 0xa0,
- 0x31, 0xf8, 0xfd, 0x0a, 0xb4, 0xab, 0x31, 0x37, 0x72, 0x6c, 0xea, 0x44,
- 0x2b, 0x51, 0x09, 0xb9, 0xd3, 0xdf, 0x9f, 0x9a, 0x7b, 0xc9, 0x4e, 0x43,
- 0x10, 0x13, 0x49, 0x77, 0xa3, 0xd3, 0xf0, 0x06, 0x96, 0xbc, 0x4f, 0x02,
- 0xbe, 0x26, 0x58, 0x3f, 0x22, 0x3c, 0x8d, 0xb7, 0xb0, 0x37, 0x06, 0x33,
- 0x35, 0x5f, 0x08, 0x32, 0x14, 0x94, 0x2e, 0x2c, 0xd0, 0x26, 0x8c, 0x79,
- 0x2f, 0x31, 0xd0, 0xdd, 0x16, 0x23, 0x0a, 0xaa, 0xa6, 0x83, 0x41, 0x13,
- 0x58, 0x8d, 0xc0, 0x75, 0x56, 0xf8, 0x14, 0x24, 0x86, 0x4d, 0xb3, 0x9c,
- 0x81, 0x97, 0xcc, 0xd9, 0x52, 0xc4, 0x27, 0xb8, 0x07, 0x86, 0x14, 0xf6,
- 0x88, 0x0e, 0xc4, 0xce, 0x08, 0x1a, 0x28, 0x90, 0x7f, 0xf9, 0xf9, 0x68,
- 0xff, 0x85, 0x42, 0xb2, 0x0e, 0x92, 0xaf, 0x8a, 0x35, 0x1d, 0x09, 0xad,
- 0xfa, 0xab, 0xf1, 0x37, 0x41, 0x71, 0x15, 0xbd, 0xf1, 0xf8, 0x11, 0xbd,
- 0xf1, 0x7e, 0xcc, 0x4f, 0xdd, 0x94, 0x8b, 0xb9, 0x79, 0x33, 0xf6, 0xdc,
- 0x33, 0x7a, 0xce, 0x50, 0xdc, 0xac, 0x59, 0xd4, 0x4a, 0x54, 0x1b, 0x66,
- 0xf2, 0xf8, 0x71, 0x64, 0x26, 0x83, 0x9f, 0xfc, 0xa1, 0x53, 0xb8, 0xe8,
- 0x88, 0xa0, 0x26, 0xe9, 0xf4, 0x13, 0x28, 0x07, 0x69, 0xe7, 0x16, 0x60,
- 0xf8, 0xd7, 0x64, 0xbe, 0x0c, 0x14, 0xf0, 0x90, 0x3e, 0x46, 0x15, 0x70,
- 0xd2, 0x1a, 0xd4, 0x9f, 0x3f, 0x3b, 0x7c, 0x74, 0xb0, 0xf7, 0x74, 0xf4,
- 0x78, 0x74, 0x68, 0xd3, 0xc0, 0x0c, 0x1d, 0x5c, 0x53, 0xd7, 0x0c, 0x8a,
- 0xba, 0x47, 0x5c, 0xd5, 0x48, 0x80, 0xc8, 0x0b, 0x33, 0x8e, 0x07, 0x8b,
- 0x20, 0xe8, 0xe6, 0x2e, 0x01, 0x84, 0x40, 0x10, 0x0e, 0xfc, 0x7a, 0xa2,
- 0x51, 0xa4, 0x41, 0x20, 0x61, 0x2b, 0xd0, 0x24, 0xc4, 0x2d, 0x61, 0x4c,
- 0x75, 0xda, 0x81, 0x49, 0x6e, 0xac, 0xdb, 0xa6, 0x5c, 0xc3, 0xfb, 0x4d,
- 0xae, 0x16, 0xc5, 0x58, 0x17, 0x75, 0x46, 0x3a, 0x51, 0x97, 0x59, 0xac,
- 0xa3, 0x9f, 0xcc, 0x9e, 0x13, 0x6e, 0x39, 0x8a, 0x6e, 0xbb, 0xb9, 0x93,
- 0xdf, 0x94, 0xd8, 0x17, 0x37, 0x38, 0x31, 0x96, 0x47, 0x31, 0xa5, 0x3e,
- 0x5b, 0xc6, 0x2a, 0xb8, 0x26, 0x17, 0x6f, 0xac, 0x3f, 0xb8, 0x14, 0x18,
- 0xaa, 0x8b, 0x5e, 0x52, 0x11, 0x1c, 0x10, 0xba, 0xfc, 0x80, 0x8b, 0x1b,
- 0xb4, 0xb0, 0x94, 0xeb, 0xa8, 0x02, 0xee, 0xa4, 0xfb, 0x10, 0xf4, 0x31,
- 0x17, 0x1c, 0x71, 0xaa, 0x30, 0x62, 0x6f, 0x34, 0x83, 0xbf, 0xd1, 0x36,
- 0xba, 0x4a, 0xb1, 0x98, 0xb3, 0x64, 0x93, 0x33, 0x2d, 0x8a, 0x16, 0xc1,
- 0xff, 0x3a, 0x19, 0x24, 0xad, 0xa6, 0x9e, 0x1b, 0x1a, 0xb1, 0x75, 0xfb,
- 0x1e, 0xca, 0xa8, 0x3f, 0x9b, 0xca, 0x1e, 0xfd, 0xf2, 0x54, 0x76, 0xf8,
- 0x50, 0x2a, 0xf3, 0xc8, 0x8c, 0x9d, 0x36, 0x1b, 0x08, 0x8d, 0x1a, 0x25,
- 0xd2, 0x3a, 0x7a, 0xa8, 0xcc, 0x23, 0x32, 0x17, 0x9e, 0x6c, 0x91, 0x58,
- 0x9b, 0xc6, 0x1c, 0x91, 0xf5, 0x51, 0x19, 0x83, 0x59, 0x28, 0x9d, 0xdd,
- 0x43, 0x68, 0xec, 0x13, 0xdb, 0x4c, 0x65, 0x17, 0x6d, 0xbe, 0xb2, 0x81,
- 0xc6, 0x7c, 0x82, 0x78, 0x30, 0x95, 0x39, 0x07, 0x15, 0xf3, 0x9d, 0xa4,
- 0x87, 0xd0, 0x7c, 0x3a, 0x53, 0xd5, 0x28, 0xa4, 0xb2, 0xe7, 0x31, 0x2a,
- 0x7b, 0xf4, 0x10, 0x2a, 0x33, 0xe7, 0xb9, 0x20, 0x59, 0xd9, 0xa2, 0xb2,
- 0xc7, 0x3f, 0x89, 0xca, 0x98, 0xcc, 0x40, 0x67, 0xbd, 0x84, 0x46, 0x4b,
- 0x6a, 0x17, 0x47, 0xbe, 0xfa, 0x57, 0xb9, 0x45, 0xda, 0x1a, 0x34, 0x28,
- 0x19, 0xfc, 0x69, 0x67, 0xd8, 0xd9, 0xea, 0x07, 0x9c, 0xd8, 0x61, 0xfb,
- 0xc4, 0x0e, 0x7e, 0xda, 0x89, 0x1d, 0x76, 0xc2, 0x79, 0x46, 0x53, 0x63,
- 0x2f, 0xeb, 0x5f, 0xd5, 0xd9, 0xfd, 0x62, 0x6f, 0xef, 0x47, 0xf8, 0x0c,
- 0x5e, 0x90, 0xec, 0xfb, 0x31, 0xe8, 0x79, 0x9b, 0x75, 0xca, 0x0a, 0xc7,
- 0xa7, 0xaf, 0xbf, 0x19, 0x8b, 0xab, 0x56, 0x14, 0x0e, 0x55, 0x48, 0xd8,
- 0xa9, 0x05, 0x28, 0x4e, 0xee, 0x59, 0x16, 0xa8, 0xb9, 0xdc, 0x2b, 0x31,
- 0x19, 0xde, 0x0e, 0xac, 0xcf, 0x94, 0x8a, 0xd5, 0x8a, 0x44, 0xaf, 0x0a,
- 0x80, 0xcd, 0x18, 0x5e, 0x09, 0x76, 0xb2, 0x0c, 0xdd, 0x83, 0x5f, 0xe5,
- 0xcf, 0x45, 0x8c, 0xf4, 0xc2, 0xbd, 0xb2, 0xd3, 0x5c, 0x55, 0x28, 0x62,
- 0xc0, 0x63, 0xa2, 0x5b, 0x7b, 0x1d, 0xd5, 0x7a, 0x66, 0x27, 0xb3, 0xfa,
- 0x1a, 0xe0, 0xaf, 0xab, 0x2a, 0xeb, 0xe9, 0x33, 0x7d, 0x71, 0xe5, 0xfd,
- 0x56, 0x3d, 0x47, 0x31, 0x90, 0x03, 0x01, 0x33, 0xf3, 0xf6, 0x9b, 0xde,
- 0x0b, 0x52, 0xc6, 0xf2, 0x5b, 0x1f, 0x52, 0x85, 0xa8, 0x00, 0x4d, 0x46,
- 0x1b, 0xed, 0xca, 0x71, 0x7b, 0xe7, 0xba, 0x42, 0x72, 0xbe, 0x4e, 0xc6,
- 0x8d, 0x2f, 0xea, 0xc7, 0x66, 0xc8, 0xae, 0x1f, 0x82, 0x7f, 0x91, 0xd2,
- 0x6f, 0xe4, 0x1f, 0x4f, 0xe8, 0xc3, 0xf0, 0x71, 0xf2, 0x3f, 0xaf, 0xf0,
- 0x6f, 0xfa, 0xa4, 0x22, 0x26, 0x79, 0xe7, 0x3c, 0x8d, 0x6e, 0xb4, 0xb2,
- 0x52, 0x36, 0xb7, 0xb9, 0x92, 0xff, 0x7d, 0xe9, 0x2a, 0xc8, 0xfc, 0x35,
- 0x93, 0xeb, 0x0d, 0xc5, 0x90, 0xb1, 0xb2, 0x03, 0x8f, 0x11, 0x63, 0xe4,
- 0xc7, 0x3d, 0xee, 0xfb, 0x2c, 0xf1, 0x61, 0x15, 0xb5, 0x4e, 0xde, 0x6f,
- 0x96, 0xe5, 0x22, 0x84, 0x72, 0x04, 0x03, 0x46, 0xd8, 0x0c, 0x13, 0x5a,
- 0xa9, 0x11, 0x84, 0xcc, 0xfc, 0x60, 0xff, 0xf3, 0xd0, 0xc9, 0xfa, 0x41,
- 0x2b, 0xb8, 0x1c, 0xb2, 0x20, 0xd2, 0x00, 0x90, 0x4b, 0x3d, 0x71, 0x75,
- 0x0b, 0xb1, 0x8f, 0x46, 0x8a, 0xbc, 0x60, 0xfb, 0xce, 0x32, 0xb6, 0x96,
- 0x26, 0x6c, 0xf6, 0x86, 0x49, 0xb4, 0x28, 0x5a, 0xad, 0x21, 0xd7, 0x04,
- 0x12, 0x57, 0x62, 0xd9, 0x01, 0x7f, 0x47, 0x7b, 0x6d, 0x09, 0xb1, 0x7c,
- 0xe9, 0x70, 0xcb, 0x7e, 0xff, 0x78, 0x9f, 0xce, 0x54, 0x07, 0xa1, 0x66,
- 0x30, 0x0b, 0x75, 0x8d, 0xff, 0xfe, 0x51, 0x3a, 0xfa, 0x0d, 0x71, 0x87,
- 0x9e, 0xb4, 0xad, 0xe8, 0xdf, 0x0d, 0xf8, 0x86, 0x5f, 0x12, 0x38, 0xca,
- 0x70, 0x92, 0x56, 0x91, 0x7a, 0x01, 0x91, 0xdd, 0x8a, 0xa9, 0xa1, 0x88,
- 0x14, 0xfa, 0x16, 0xb7, 0x42, 0x90, 0x1c, 0x70, 0xfb, 0x43, 0x33, 0x54,
- 0x12, 0x76, 0x57, 0xb0, 0xfe, 0x69, 0xbf, 0xb9, 0xea, 0x80, 0x91, 0xa0,
- 0x3c, 0x20, 0xa8, 0x74, 0x31, 0xa0, 0xc8, 0x55, 0x04, 0x2e, 0x88, 0x95,
- 0x3d, 0xfb, 0x15, 0x7c, 0x66, 0x56, 0xa5, 0x37, 0x9e, 0x0d, 0xcd, 0x58,
- 0xec, 0x73, 0xb8, 0xa9, 0x6d, 0xca, 0x81, 0xf9, 0x3d, 0x45, 0x20, 0x63,
- 0xda, 0x47, 0x3d, 0xad, 0xa8, 0x6d, 0x8e, 0x74, 0x07, 0xc0, 0x48, 0x2b,
- 0x42, 0xc3, 0x33, 0x9a, 0xc7, 0x65, 0xa6, 0x95, 0x82, 0x76, 0xd5, 0x0a,
- 0x05, 0x01, 0xfc, 0x87, 0x51, 0x2c, 0x09, 0xd7, 0x65, 0xda, 0xd8, 0x76,
- 0xb7, 0xa4, 0xc4, 0x32, 0x60, 0x04, 0xbd, 0xae, 0x75, 0x9b, 0x16, 0x4c,
- 0x70, 0x45, 0x5d, 0xdb, 0xea, 0xab, 0xbc, 0xdb, 0xca, 0x7c, 0x67, 0xf8,
- 0x45, 0xf9, 0xc5, 0x70, 0x57, 0x48, 0xbc, 0xbc, 0xce, 0x6a, 0x58, 0x42,
- 0x98, 0x2a, 0x45, 0x27, 0xaf, 0xe0, 0x62, 0x11, 0xe1, 0x85, 0xf2, 0x44,
- 0x4a, 0x16, 0x84, 0x36, 0x06, 0x87, 0x78, 0xd0, 0x4e, 0x84, 0x27, 0x56,
- 0x51, 0x68, 0x52, 0xf8, 0x1d, 0xb9, 0x63, 0xcc, 0x5e, 0xcd, 0x39, 0x9f,
- 0x09, 0x25, 0x8c, 0x14, 0xb5, 0x15, 0xdc, 0x60, 0xf6, 0x02, 0x97, 0xab,
- 0xb6, 0x6c, 0xa2, 0x6a, 0x58, 0xe5, 0x0d, 0x2f, 0x95, 0xad, 0xfc, 0xe9,
- 0xde, 0x5c, 0x77, 0xcb, 0x80, 0xe6, 0xe2, 0xc4, 0xa0, 0xcb, 0x87, 0xda,
- 0x07, 0x46, 0x1c, 0x9e, 0x5e, 0x65, 0x4b, 0x69, 0xbb, 0xd2, 0x53, 0x39,
- 0xdc, 0x5b, 0x66, 0xdb, 0x9e, 0x13, 0x27, 0x83, 0xcd, 0x9b, 0xd5, 0x68,
- 0x59, 0xfe, 0xc3, 0xec, 0x71, 0x4a, 0x7d, 0xdc, 0x82, 0x2b, 0x41, 0x25,
- 0x7e, 0x05, 0x1f, 0x0a, 0x83, 0xf6, 0x14, 0xd6, 0xb0, 0x74, 0x2c, 0x5c,
- 0x91, 0xa1, 0x51, 0xe2, 0x9d, 0xbc, 0x36, 0x33, 0x3e, 0xfa, 0xf8, 0xe1,
- 0xfd, 0xf8, 0xc3, 0x59, 0x97, 0xb0, 0xcf, 0x4e, 0xcf, 0x2f, 0x8e, 0xde,
- 0x7c, 0x3c, 0x3b, 0x3f, 0xbd, 0x38, 0x7d, 0x7d, 0x7a, 0x92, 0xec, 0x1c,
- 0xec, 0x6e, 0xac, 0x68, 0xb2, 0x2e, 0x08, 0x0f, 0x1b, 0x4f, 0xe7, 0xcf,
- 0x3c, 0xcb, 0x4e, 0x61, 0x87, 0xd6, 0x13, 0x8e, 0xf6, 0x9d, 0xd0, 0x56,
- 0x0b, 0x6b, 0x18, 0x7e, 0x08, 0x08, 0x37, 0x70, 0xf5, 0x34, 0xb9, 0x5c,
- 0xf3, 0x65, 0x94, 0xd8, 0xb6, 0x96, 0x7b, 0xd4, 0x4d, 0x20, 0x8a, 0xb2,
- 0x4c, 0x22, 0x6c, 0x5e, 0x31, 0xcc, 0x46, 0x77, 0xdc, 0x93, 0xae, 0xce,
- 0x42, 0x67, 0x00, 0x05, 0xcc, 0x51, 0x45, 0x1d, 0x27, 0x0b, 0x4b, 0x17,
- 0x0c, 0xa1, 0x01, 0xdc, 0x65, 0xfb, 0x0a, 0x40, 0xe9, 0x25, 0xe2, 0x51,
- 0x16, 0x56, 0xa5, 0x1b, 0x25, 0x67, 0x61, 0x6f, 0x22, 0x79, 0x63, 0x96,
- 0x15, 0xd2, 0x20, 0x53, 0xe6, 0x81, 0x80, 0x17, 0x3a, 0x6f, 0x70, 0xf8,
- 0xd5, 0x3c, 0x40, 0xbf, 0xf5, 0xf6, 0x0a, 0x25, 0x96, 0x59, 0x10, 0x45,
- 0xe4, 0xb7, 0x19, 0x5d, 0xe2, 0xc6, 0x9b, 0x13, 0x8d, 0x47, 0x4a, 0x19,
- 0xb0, 0xef, 0x22, 0x1c, 0xf6, 0x48, 0xc3, 0x29, 0x8c, 0x8c, 0x81, 0x3b,
- 0x09, 0xfd, 0x45, 0x31, 0x55, 0xc6, 0xfe, 0x5a, 0xee, 0x21, 0x64, 0xde,
- 0x44, 0xf2, 0x6d, 0x0f, 0xe8, 0xec, 0x07, 0x4c, 0xd0, 0x12, 0x45, 0xda,
- 0x90, 0x50, 0xef, 0x12, 0x00, 0x7d, 0x8f, 0x14, 0x26, 0xc4, 0x05, 0x53,
- 0x98, 0xc8, 0xc0, 0x62, 0xbd, 0xbc, 0xed, 0x4c, 0xab, 0xcb, 0x7e, 0x9e,
- 0x8d, 0x9e, 0x3e, 0x19, 0x1d, 0x12, 0x50, 0xc1, 0xe9, 0x82, 0xa2, 0x2e,
- 0xa2, 0x59, 0xc0, 0xbf, 0x8c, 0x0f, 0x08, 0x2a, 0x0b, 0x52, 0xb6, 0xdc,
- 0x5e, 0xc9, 0x88, 0x31, 0x5b, 0x2a, 0xd1, 0x02, 0x4a, 0x15, 0x65, 0x5a,
- 0xcb, 0x2e, 0x6d, 0x54, 0x05, 0xca, 0x97, 0x90, 0x30, 0xcc, 0x77, 0x5e,
- 0xd8, 0xb4, 0x25, 0xca, 0xe3, 0xe9, 0xf2, 0x5a, 0x2a, 0x8b, 0x07, 0xcc,
- 0xe0, 0xeb, 0x33, 0xce, 0x69, 0xb4, 0x65, 0xf1, 0x60, 0xe5, 0xda, 0x26,
- 0x78, 0x9f, 0x22, 0xda, 0xe3, 0x77, 0x7f, 0x96, 0x20, 0x92, 0xf9, 0xdb,
- 0x38, 0x56, 0xee, 0xcd, 0xea, 0xbc, 0x8e, 0x31, 0x4a, 0xfc, 0x00, 0x08,
- 0x2d, 0xcf, 0x4c, 0xef, 0x0f, 0xf4, 0xa7, 0xa6, 0x0d, 0x77, 0x97, 0xdc,
- 0x03, 0xfd, 0x32, 0xf0, 0x2a, 0xd7, 0xcd, 0x7d, 0xad, 0xb3, 0xf8, 0x8a,
- 0x47, 0x9b, 0xd1, 0xaf, 0x0e, 0x83, 0x8b, 0x76, 0xef, 0x15, 0x7b, 0xe8,
- 0x0d, 0xb3, 0xa1, 0x01, 0x95, 0x0e, 0x5d, 0x99, 0x76, 0x66, 0xdf, 0x62,
- 0xb0, 0x0b, 0x2a, 0x99, 0xe1, 0xec, 0xc1, 0x6c, 0x0e, 0xdd, 0x10, 0x75,
- 0x6c, 0x03, 0xfc, 0x12, 0x21, 0x30, 0x9b, 0xe3, 0xc4, 0x27, 0x11, 0x03,
- 0xcc, 0x48, 0xa7, 0xbe, 0xae, 0x6d, 0x81, 0xd3, 0xb6, 0xcd, 0xa6, 0x52,
- 0xc7, 0x1d, 0xa9, 0xa4, 0x5c, 0xdc, 0x01, 0x28, 0x3c, 0xbf, 0xd5, 0x2c,
- 0xe2, 0x7f, 0x64, 0x55, 0x19, 0x86, 0x63, 0xa1, 0x3c, 0x28, 0x80, 0x15,
- 0x99, 0x92, 0x8a, 0xb0, 0xe1, 0x7e, 0x48, 0x5f, 0x0d, 0xee, 0xdc, 0x1f,
- 0xd0, 0xee, 0x95, 0x01, 0x69, 0xb9, 0x35, 0x93, 0x20, 0x2c, 0x00, 0x2c,
- 0x2e, 0xd7, 0x10, 0x9a, 0xc7, 0x03, 0x16, 0x54, 0x77, 0x77, 0xc7, 0x25,
- 0x7b, 0x81, 0x89, 0x09, 0xf5, 0x6f, 0x46, 0xe6, 0x8c, 0xcb, 0x12, 0xd7,
- 0xdb, 0x88, 0xd6, 0x4a, 0x0e, 0x64, 0x4b, 0xf4, 0xb9, 0x90, 0xa7, 0x0f,
- 0x93, 0xe4, 0x4d, 0x56, 0xdc, 0xb5, 0x27, 0x34, 0x00, 0x4e, 0x06, 0xdc,
- 0xc3, 0x79, 0xe3, 0x4a, 0xb9, 0xb5, 0x79, 0xc0, 0xdc, 0x33, 0x38, 0xc2,
- 0x29, 0xb5, 0xe7, 0x1c, 0xe3, 0x5c, 0x5f, 0xd8, 0x6d, 0xd0, 0x14, 0x1b,
- 0x7f, 0x33, 0x76, 0x80, 0xc8, 0xa0, 0x51, 0x40, 0x7c, 0xf2, 0x21, 0xdb,
- 0x00, 0x9c, 0x39, 0x58, 0x75, 0xf5, 0x7a, 0xf2, 0x37, 0x06, 0xf6, 0x4e,
- 0xc8, 0xb3, 0x50, 0xc9, 0x2e, 0x48, 0x5a, 0x9c, 0x39, 0x55, 0xf3, 0x00,
- 0x07, 0xae, 0x88, 0x39, 0x14, 0xb1, 0xe1, 0x10, 0x9c, 0x54, 0x48, 0xed,
- 0x36, 0x85, 0x61, 0x46, 0xd1, 0x5a, 0xa8, 0xac, 0x47, 0x65, 0xd0, 0xfb,
- 0x33, 0x9c, 0x13, 0x4f, 0xe5, 0x74, 0xab, 0x8e, 0xf0, 0xe5, 0xbd, 0xe4,
- 0x1c, 0x3f, 0x9b, 0x71, 0x4a, 0x8f, 0xf7, 0x8e, 0xa5, 0x9c, 0xba, 0x1e,
- 0xfc, 0x81, 0xfe, 0x08, 0xd7, 0xd0, 0x22, 0x59, 0xda, 0x65, 0x65, 0x23,
- 0xf4, 0x38, 0x18, 0x13, 0x5e, 0xef, 0xfb, 0xc0, 0x17, 0x4e, 0x0c, 0x6c,
- 0x1e, 0x1b, 0x5c, 0xec, 0x21, 0x1f, 0xf8, 0x50, 0x28, 0x80, 0x99, 0x52,
- 0xf7, 0xca, 0x22, 0xaa, 0xdf, 0xa4, 0x55, 0x81, 0x8c, 0x72, 0xdf, 0x0e,
- 0x22, 0xdc, 0x8b, 0x95, 0x74, 0x5b, 0x48, 0xe7, 0x94, 0x8c, 0x5b, 0x65,
- 0x0e, 0x00, 0x96, 0x8e, 0x92, 0xe1, 0x6d, 0x04, 0x51, 0x5a, 0x53, 0x43,
- 0x57, 0x65, 0xc3, 0xd8, 0xd6, 0x94, 0xbd, 0x4b, 0x9a, 0x4e, 0x45, 0x0e,
- 0x42, 0x6f, 0x93, 0x55, 0x45, 0xa6, 0xd1, 0xec, 0xe1, 0xc3, 0x8f, 0xb6,
- 0x5e, 0x95, 0x85, 0x4b, 0xfc, 0x97, 0xe0, 0xab, 0xc7, 0xc6, 0xe4, 0x8b,
- 0x9c, 0x82, 0x05, 0xa7, 0x93, 0x85, 0xc1, 0xbe, 0x2e, 0x73, 0x42, 0xb3,
- 0xd1, 0xe1, 0xa0, 0xbd, 0x39, 0x2a, 0xb9, 0x88, 0x77, 0x67, 0x70, 0x79,
- 0x2f, 0x62, 0x5f, 0xb9, 0xb4, 0xe0, 0xb4, 0x6e, 0x55, 0xfb, 0xe4, 0xad,
- 0x04, 0x61, 0x24, 0x48, 0x18, 0x1b, 0x88, 0xd0, 0xd5, 0x0c, 0x4d, 0x16,
- 0x1c, 0xba, 0x12, 0xe3, 0x53, 0x19, 0x2e, 0x4d, 0x0f, 0x29, 0x6b, 0x05,
- 0x59, 0x3d, 0x53, 0x8b, 0x3c, 0xd4, 0x05, 0xb0, 0x6e, 0xb7, 0xb4, 0xb6,
- 0xba, 0x80, 0x4d, 0xe3, 0x74, 0x6a, 0xee, 0xe8, 0x1e, 0x19, 0x71, 0x7b,
- 0xa7, 0x89, 0x63, 0x9b, 0x55, 0xb0, 0x15, 0x4a, 0x79, 0xcd, 0x3e, 0xe7,
- 0x0d, 0x4e, 0xac, 0x93, 0xb8, 0xaa, 0x09, 0x9d, 0xd2, 0xf3, 0x62, 0xb9,
- 0x0e, 0x1b, 0xe6, 0x49, 0xb0, 0xce, 0xe6, 0xe9, 0x30, 0x98, 0x13, 0xb4,
- 0x1f, 0xf1, 0xd2, 0x30, 0xa2, 0x3f, 0x6c, 0x74, 0xe9, 0x72, 0x00, 0xf7,
- 0x13, 0xe2, 0x77, 0x71, 0x3f, 0xe2, 0x9e, 0x45, 0x72, 0x31, 0x04, 0x53,
- 0xcc, 0x86, 0x86, 0x09, 0xac, 0x36, 0xf8, 0xe7, 0x6f, 0x07, 0xba, 0xe8,
- 0x56, 0xc6, 0xab, 0x0f, 0x1d, 0xc1, 0x3f, 0xe1, 0xc4, 0x3a, 0xd9, 0xbb,
- 0x30, 0x63, 0xdc, 0x68, 0x1a, 0x8f, 0x62, 0x3b, 0x19, 0xcb, 0xdc, 0x0b,
- 0x2d, 0x9c, 0x5e, 0x9c, 0x7f, 0x2d, 0xe8, 0xc2, 0x06, 0xea, 0x86, 0xf5,
- 0xa5, 0x39, 0xf1, 0xf6, 0xc9, 0xce, 0x7d, 0xe0, 0x7a, 0x2a, 0x8c, 0x89,
- 0x32, 0xd9, 0x42, 0x72, 0xa5, 0xbd, 0x6f, 0xb1, 0x29, 0x17, 0xec, 0x23,
- 0xb0, 0x95, 0x18, 0x33, 0x9e, 0x9f, 0x13, 0xa1, 0x64, 0x59, 0x5d, 0x30,
- 0x49, 0x39, 0xeb, 0x98, 0x2f, 0x08, 0x7c, 0x12, 0x1f, 0xa2, 0x89, 0xe5,
- 0x1b, 0x51, 0x0b, 0x7a, 0x0e, 0x23, 0x06, 0xd8, 0x31, 0xeb, 0xa4, 0xa1,
- 0xea, 0xcf, 0xb9, 0x73, 0x7b, 0x3c, 0xf9, 0x6d, 0x2c, 0xf7, 0x4d, 0xfb,
- 0xbb, 0x83, 0x4f, 0x6b, 0xe6, 0xa1, 0xe7, 0x1c, 0xe4, 0xc6, 0x43, 0xb7,
- 0xcd, 0x3d, 0xee, 0x5b, 0xf9, 0x1e, 0xc2, 0xf5, 0xda, 0xe7, 0x59, 0x06,
- 0x76, 0xff, 0x74, 0xbf, 0x35, 0xab, 0x8b, 0x31, 0x69, 0x3a, 0xab, 0x7e,
- 0x2f, 0x4b, 0xfb, 0x2b, 0x2f, 0xcd, 0x8d, 0xde, 0xb4, 0x28, 0x3c, 0xf4,
- 0x73, 0x16, 0xe5, 0x18, 0x87, 0xdb, 0x42, 0x99, 0x73, 0xe7, 0x44, 0xf8,
- 0x23, 0x1b, 0x63, 0x55, 0x3d, 0x4b, 0x30, 0x63, 0x6e, 0x68, 0x3d, 0xeb,
- 0x2d, 0xc3, 0x3e, 0xf8, 0x53, 0x57, 0x72, 0xff, 0x36, 0x82, 0x34, 0xe8,
- 0xbf, 0x7f, 0x7d, 0x01, 0x37, 0xe0, 0xec, 0xc7, 0xde, 0x79, 0x1c, 0x0d,
- 0x64, 0x2e, 0xbf, 0xc2, 0x34, 0xf2, 0xd5, 0x15, 0xe9, 0x96, 0x2f, 0x63,
- 0xa5, 0x36, 0xde, 0x46, 0xc8, 0x63, 0xbf, 0xfc, 0xf7, 0xab, 0x85, 0x03,
- 0xb5, 0xd9, 0xf0, 0x7d, 0x79, 0xec, 0x17, 0xff, 0x3e, 0xdf, 0xdd, 0xcd,
- 0xc2, 0xc5, 0x72, 0xc5, 0x37, 0x92, 0xd0, 0xdc, 0xe6, 0x38, 0x4e, 0xaa,
- 0xfc, 0x0c, 0xa6, 0x28, 0x39, 0xd2, 0x21, 0x57, 0x94, 0x6f, 0x45, 0x3b,
- 0x2f, 0xf8, 0x6c, 0xf1, 0x17, 0xe1, 0x60, 0x60, 0xcd, 0xe1, 0xe6, 0x48,
- 0x2b, 0x94, 0x97, 0xfc, 0xe7, 0xde, 0x97, 0xb1, 0x33, 0x52, 0x2c, 0xd4,
- 0x23, 0x12, 0x83, 0xda, 0x3c, 0x05, 0xdd, 0x38, 0x18, 0x2b, 0x40, 0x54,
- 0x5e, 0xdb, 0x49, 0x82, 0x36, 0x4b, 0xb3, 0x46, 0xe8, 0xd5, 0x58, 0xc7,
- 0x16, 0xd9, 0x21, 0x4a, 0x1b, 0x25, 0x0b, 0x4f, 0xe3, 0x14, 0x2e, 0x67,
- 0x88, 0x14, 0x8f, 0xcc, 0xfb, 0x60, 0xdd, 0xd7, 0x7c, 0x8b, 0x8b, 0x81,
- 0xbc, 0xbe, 0x97, 0x0e, 0xb5, 0xf4, 0xeb, 0x81, 0x74, 0x4c, 0x31, 0xc3,
- 0x11, 0x59, 0x49, 0xde, 0xa4, 0xd2, 0x13, 0x8e, 0x33, 0x84, 0x76, 0xe1,
- 0x74, 0x78, 0xd2, 0x4d, 0x17, 0x9c, 0x9e, 0x9b, 0xbc, 0x3e, 0x7d, 0xff,
- 0xfe, 0xe8, 0x75, 0x37, 0x1e, 0x0d, 0xd8, 0x0a, 0x54, 0x20, 0xa0, 0x41,
- 0x8f, 0xa8, 0xfa, 0x41, 0xbf, 0x3e, 0x7c, 0x9d, 0xc1, 0xd8, 0x6d, 0xc8,
- 0x88, 0x67, 0x80, 0x6e, 0x3e, 0xa9, 0x20, 0xb3, 0x72, 0x21, 0x83, 0x87,
- 0xd9, 0xc9, 0x14, 0x10, 0xa9, 0xee, 0x0a, 0xe8, 0xc1, 0xf9, 0x50, 0xe0,
- 0x4c, 0xa3, 0x5e, 0x8e, 0xac, 0x81, 0xc2, 0x7e, 0xd5, 0x19, 0x60, 0xba,
- 0xc6, 0x60, 0xdc, 0x93, 0xf4, 0x65, 0xa9, 0x8b, 0x0b, 0xbb, 0xc6, 0x59,
- 0x5a, 0x66, 0x94, 0x2f, 0x2a, 0x13, 0x19, 0x96, 0x73, 0x6e, 0x1d, 0xba,
- 0x4c, 0xab, 0x4f, 0x14, 0xcf, 0xf6, 0x0a, 0x46, 0x50, 0x30, 0x08, 0xc0,
- 0xe1, 0xd9, 0x2c, 0x56, 0x87, 0x0e, 0xaf, 0xbb, 0x66, 0xc8, 0xa3, 0x20,
- 0x8d, 0x27, 0x24, 0xed, 0xf6, 0x5e, 0x68, 0x25, 0x1f, 0xbd, 0x5e, 0x64,
- 0x37, 0xf4, 0x19, 0x06, 0xdf, 0xa0, 0x62, 0xf2, 0x10, 0xbf, 0x9f, 0x31,
- 0xa3, 0x39, 0xaa, 0x70, 0x27, 0x75, 0xec, 0x74, 0x56, 0x4b, 0x46, 0xc8,
- 0x07, 0x08, 0x2f, 0xb5, 0x9c, 0xe2, 0x2a, 0x90, 0x60, 0xaf, 0xbe, 0x56,
- 0x20, 0x3d, 0x2f, 0xa5, 0x2e, 0xc8, 0xfd, 0xb3, 0x98, 0x39, 0x93, 0xac,
- 0x05, 0xaf, 0xd7, 0x87, 0x45, 0xc2, 0xbb, 0x8d, 0x63, 0x20, 0x6b, 0xa5,
- 0x6e, 0x0d, 0xa0, 0x47, 0x9b, 0xf6, 0x44, 0xfe, 0xc6, 0x04, 0x8c, 0x0d,
- 0xa3, 0x19, 0x2c, 0xec, 0x49, 0x17, 0xe2, 0x15, 0xe8, 0x47, 0x70, 0x92,
- 0x12, 0xec, 0xd9, 0xe5, 0x9a, 0x0b, 0xde, 0xc8, 0x1d, 0x82, 0xcb, 0x1a,
- 0xa8, 0xb9, 0x48, 0x83, 0x46, 0x25, 0xd8, 0x40, 0x9b, 0xa7, 0xa3, 0xfb,
- 0xcf, 0x8c, 0x9a, 0x9a, 0xea, 0xe6, 0x2b, 0x92, 0x09, 0x07, 0x21, 0xe4,
- 0x02, 0xe7, 0xc5, 0x6a, 0xdd, 0x04, 0x81, 0x44, 0x82, 0x74, 0xe2, 0x6a,
- 0xfe, 0x2f, 0x87, 0x61, 0xfb, 0xa3, 0x74, 0xe6, 0x9f, 0x29, 0x18, 0x38,
- 0x2c, 0xff, 0xba, 0x31, 0xd7, 0x7f, 0xa3, 0x67, 0xd9, 0xb7, 0x68, 0x9c,
- 0x49, 0x23, 0x79, 0xe2, 0x1c, 0xf9, 0x75, 0xc4, 0xba, 0x07, 0xd7, 0x42,
- 0x97, 0x16, 0xec, 0x5b, 0xca, 0x22, 0x36, 0x21, 0x77, 0x00, 0x56, 0xb0,
- 0xc3, 0xfd, 0x8c, 0x95, 0x43, 0x8e, 0xad, 0xac, 0x4f, 0x28, 0x7d, 0xe2,
- 0x8e, 0x4c, 0xfc, 0xd0, 0x2f, 0x2f, 0x99, 0x6c, 0xf7, 0xeb, 0x7b, 0x74,
- 0x14, 0xfb, 0xdc, 0xaf, 0x31, 0x83, 0x68, 0xbf, 0xf9, 0xd6, 0xb7, 0x1f,
- 0xfe, 0xd9, 0x00, 0xdf, 0x6e, 0x83, 0xd4, 0xb5, 0x29, 0xae, 0x90, 0x85,
- 0xf7, 0xc2, 0x37, 0x82, 0xe7, 0x06, 0x79, 0xa9, 0x9e, 0x44, 0xde, 0x28,
- 0x83, 0x5d, 0xdd, 0x92, 0x2f, 0x86, 0x23, 0x01, 0xfb, 0xd8, 0x44, 0x24,
- 0x04, 0xf5, 0x30, 0x91, 0x7c, 0xaf, 0x08, 0x6e, 0x95, 0x7d, 0x76, 0xf3,
- 0xac, 0x6c, 0xd9, 0xd7, 0xc3, 0x37, 0x8e, 0x6a, 0xde, 0x7e, 0x49, 0x75,
- 0x05, 0xb5, 0x66, 0x2d, 0x65, 0x05, 0x9f, 0x68, 0x6d, 0xc2, 0x43, 0xa4,
- 0x52, 0xb0, 0x25, 0xdd, 0xda, 0xb1, 0xd6, 0x46, 0x85, 0xbb, 0xb0, 0x29,
- 0xeb, 0xdd, 0x91, 0x27, 0x9e, 0xfa, 0xc5, 0xaf, 0xc5, 0xc3, 0x53, 0xb6,
- 0xe3, 0x27, 0xd3, 0x97, 0xb5, 0x4d, 0xc3, 0x31, 0x3c, 0x74, 0x6f, 0xca,
- 0x36, 0x25, 0x37, 0x79, 0x09, 0xdb, 0x9e, 0x5f, 0xa2, 0x2f, 0x63, 0xfb,
- 0xff, 0xc4, 0x94, 0xed, 0x56, 0xce, 0x36, 0xa9, 0x57, 0x94, 0x22, 0x1c,
- 0x4b, 0xdb, 0xf6, 0x20, 0x36, 0x38, 0x67, 0x7b, 0x53, 0xca, 0xb6, 0x97,
- 0xb1, 0xbd, 0x21, 0x61, 0x9b, 0x01, 0x4b, 0x37, 0xa5, 0x6c, 0xff, 0xcc,
- 0x9c, 0xed, 0x9e, 0x94, 0xed, 0x9f, 0x9c, 0xb1, 0xfd, 0x0b, 0xa7, 0x6c,
- 0xff, 0x92, 0xd9, 0xc8, 0xb8, 0x3d, 0x74, 0x1e, 0xf9, 0x54, 0x4a, 0x61,
- 0x5e, 0xde, 0x0b, 0x63, 0xda, 0x4e, 0x60, 0xf1, 0xe2, 0xcc, 0x32, 0x0e,
- 0xab, 0x34, 0x4e, 0x71, 0x2f, 0x02, 0x9d, 0x47, 0x48, 0x25, 0x92, 0x01,
- 0xe7, 0xc7, 0x81, 0x1f, 0xc5, 0x6e, 0x7a, 0x5d, 0x2f, 0x86, 0x98, 0x00,
- 0xd5, 0xa8, 0x06, 0x56, 0xa2, 0xe3, 0x33, 0x9d, 0xe7, 0x7e, 0x79, 0x96,
- 0xd3, 0x2c, 0xea, 0x83, 0x47, 0xce, 0x56, 0x97, 0xbf, 0xac, 0xa9, 0x7e,
- 0x32, 0x66, 0xb7, 0x33, 0xf7, 0x19, 0x0b, 0x87, 0x51, 0x50, 0x0c, 0x7e,
- 0x0b, 0x3e, 0xd2, 0xcc, 0xb6, 0x71, 0xb3, 0x11, 0x09, 0xdb, 0x95, 0x35,
- 0x2c, 0x86, 0x41, 0xc1, 0xb4, 0xbf, 0x0e, 0x88, 0x10, 0x2a, 0x7b, 0x51,
- 0xa6, 0x5d, 0xe3, 0x0a, 0x1e, 0x8c, 0x1e, 0x71, 0x45, 0xad, 0x42, 0x72,
- 0xc8, 0x3c, 0x03, 0x14, 0x1c, 0x4c, 0x00, 0x18, 0xc4, 0x6a, 0xda, 0x71,
- 0x93, 0x24, 0x79, 0x7e, 0x94, 0x9c, 0x93, 0xea, 0x68, 0x14, 0x75, 0x44,
- 0xfb, 0x71, 0xbb, 0xcd, 0xd8, 0x89, 0xfc, 0x3e, 0x36, 0x5c, 0x1b, 0xf8,
- 0xd2, 0xd0, 0xcf, 0x87, 0xf3, 0x93, 0x30, 0x3e, 0x8d, 0xe8, 0xc1, 0x8b,
- 0xbd, 0x3d, 0x24, 0x48, 0x5d, 0xa5, 0xb7, 0xb7, 0xa3, 0x3a, 0xdb, 0x9b,
- 0x95, 0xd3, 0x7a, 0x8f, 0x4e, 0x50, 0xbf, 0x7e, 0xd5, 0x2c, 0x17, 0x9f,
- 0xdd, 0x07, 0xad, 0xab, 0x75, 0x9c, 0x8b, 0x3b, 0xa9, 0xf4, 0x76, 0xd9,
- 0x97, 0xb8, 0x95, 0xb9, 0x57, 0x56, 0xbd, 0x0e, 0xba, 0x1d, 0x4a, 0x55,
- 0x81, 0x59, 0x95, 0xf9, 0x3f, 0xf4, 0x79, 0xa0, 0xa8, 0x52, 0xa4, 0xd0,
- 0xd5, 0xef, 0x85, 0xe9, 0xd5, 0x10, 0x84, 0x07, 0xc4, 0x3d, 0x0a, 0x1a,
- 0xc2, 0xb1, 0xcc, 0x1a, 0x30, 0x31, 0x39, 0x91, 0xce, 0xb1, 0x77, 0xba,
- 0x50, 0x32, 0x79, 0x85, 0xad, 0xa2, 0x40, 0x67, 0x3d, 0x7d, 0x29, 0x7f,
- 0x71, 0x96, 0x60, 0xa8, 0x9b, 0xa4, 0xfc, 0x43, 0x94, 0x5d, 0xff, 0xd1,
- 0x5f, 0xe3, 0x96, 0xd9, 0x84, 0xbc, 0x97, 0x9c, 0x6d, 0xb7, 0x71, 0x26,
- 0xf6, 0xe1, 0x5f, 0x63, 0x26, 0x28, 0xea, 0x8e, 0xf2, 0xc7, 0xd6, 0x1c,
- 0xf0, 0xd8, 0xaf, 0xf1, 0xfd, 0xeb, 0x83, 0xbe, 0xcf, 0xa2, 0xf1, 0x24,
- 0x9e, 0xf8, 0x05, 0x3f, 0xfc, 0xc1, 0x3a, 0xab, 0xb8, 0x06, 0xfe, 0x25,
- 0xfd, 0xf7, 0x85, 0xee, 0x70, 0x5f, 0x47, 0xab, 0x0d, 0x68, 0xe1, 0x5e,
- 0x33, 0xed, 0x00, 0xeb, 0xe1, 0x41, 0x19, 0xed, 0xc7, 0x0c, 0xc8, 0x2e,
- 0x20, 0x42, 0x82, 0x24, 0x0c, 0x80, 0xf7, 0xa1, 0xc2, 0x90, 0x31, 0xe4,
- 0x06, 0x63, 0xa0, 0x30, 0xa2, 0x85, 0x42, 0xf2, 0xbc, 0xef, 0x11, 0x43,
- 0xc8, 0x10, 0x88, 0x69, 0xe5, 0x8d, 0x3a, 0x8d, 0x70, 0x8d, 0xfd, 0xda,
- 0x48, 0x73, 0xb1, 0x16, 0x61, 0x5a, 0xcb, 0x7d, 0x38, 0xe9, 0xe0, 0xd9,
- 0x3e, 0x72, 0xcd, 0xc4, 0xfa, 0xd1, 0xc0, 0x57, 0xba, 0x4c, 0x54, 0x31,
- 0x34, 0x17, 0x0e, 0xec, 0xc0, 0x5e, 0xf1, 0x17, 0xc9, 0xd6, 0xf0, 0x43,
- 0xf2, 0x62, 0x2b, 0xd8, 0xa2, 0xd3, 0x42, 0xfa, 0x4c, 0xc0, 0xe9, 0x55,
- 0xa1, 0x70, 0x1a, 0xad, 0x6b, 0x7c, 0xd5, 0xe4, 0x8a, 0x00, 0x6e, 0x9c,
- 0x39, 0x61, 0x31, 0xda, 0x2f, 0x83, 0x20, 0x1c, 0x3b, 0x2f, 0x58, 0x89,
- 0xd2, 0xae, 0x2a, 0x24, 0x4a, 0xc8, 0x6d, 0xe3, 0x20, 0x97, 0xa1, 0x3e,
- 0x31, 0x62, 0xbc, 0x24, 0x36, 0x50, 0x34, 0x73, 0x1a, 0xba, 0x5f, 0x6c,
- 0x3f, 0x62, 0x8c, 0xb8, 0x2a, 0xeb, 0x3a, 0x9f, 0x18, 0x1e, 0x7d, 0x29,
- 0xfc, 0xb1, 0xce, 0x38, 0x9d, 0x8a, 0x1b, 0x3b, 0xd2, 0x5e, 0xd6, 0x2e,
- 0xb9, 0xac, 0x0e, 0xa1, 0x98, 0x78, 0xa5, 0x16, 0xa5, 0x5e, 0xdc, 0x4b,
- 0x66, 0x76, 0xcc, 0xda, 0xae, 0x73, 0x1a, 0x9e, 0x09, 0x2e, 0x4d, 0x26,
- 0x55, 0x9e, 0xcd, 0x93, 0x65, 0xc9, 0x5b, 0x0f, 0xc5, 0xab, 0xcb, 0x64,
- 0x17, 0x04, 0xe4, 0x40, 0x9d, 0x89, 0x29, 0xd3, 0xb6, 0x26, 0xa0, 0x3b,
- 0xe4, 0x5f, 0x23, 0xfb, 0xd1, 0xe5, 0x76, 0x57, 0x19, 0x65, 0x0e, 0x5c,
- 0x67, 0x72, 0xac, 0xa9, 0xf6, 0xfb, 0xe8, 0xc9, 0x49, 0xad, 0x2c, 0x1e,
- 0x30, 0xaa, 0x1d, 0x80, 0x21, 0x63, 0xf1, 0x2c, 0xe8, 0x8b, 0x89, 0xb6,
- 0xf6, 0x4e, 0x5b, 0xa5, 0xde, 0xa3, 0x5f, 0x8d, 0xc7, 0x7b, 0x5e, 0xe8,
- 0x9f, 0x5d, 0x07, 0xd0, 0x9f, 0x15, 0xdf, 0x4e, 0x8d, 0x0e, 0xe0, 0x37,
- 0xe2, 0xf9, 0xf0, 0x73, 0x42, 0xe2, 0x7e, 0xdf, 0xd5, 0x72, 0x22, 0xa9,
- 0xe5, 0x94, 0x40, 0xc7, 0xf9, 0x6a, 0x76, 0x75, 0x0d, 0x6a, 0xd1, 0x01,
- 0xec, 0xe1, 0xc7, 0x86, 0x3f, 0x04, 0x22, 0xde, 0xa5, 0xcb, 0xb7, 0x12,
- 0xe4, 0x5d, 0x7e, 0x3c, 0x9d, 0x95, 0xcb, 0x8e, 0x47, 0x41, 0x08, 0xbb,
- 0xc8, 0x53, 0x9a, 0x41, 0x28, 0x93, 0x09, 0xb7, 0xb8, 0x3f, 0x37, 0xde,
- 0xe8, 0x7c, 0x5e, 0xac, 0xde, 0x21, 0x0d, 0x92, 0x83, 0x35, 0x1e, 0x25,
- 0xc6, 0x0d, 0x05, 0xe6, 0xfc, 0xb3, 0xa0, 0x73, 0x9c, 0xd4, 0x4e, 0x08,
- 0xe3, 0xb4, 0xd9, 0x0b, 0xd7, 0x79, 0x6a, 0x75, 0x28, 0xf7, 0x2d, 0xde,
- 0x51, 0xf7, 0xa9, 0xbe, 0x38, 0x1c, 0x23, 0xb4, 0x44, 0x2a, 0x3b, 0xdf,
- 0x8f, 0xc7, 0x61, 0x8a, 0x7c, 0x61, 0x8c, 0x93, 0xf2, 0xb2, 0xc8, 0xff,
- 0x21, 0x2d, 0x7d, 0xba, 0x99, 0xad, 0xad, 0x1a, 0x85, 0x76, 0x40, 0x9e,
- 0x12, 0x25, 0x42, 0xfe, 0x46, 0x4e, 0x6d, 0x11, 0x3b, 0x48, 0x08, 0x23,
- 0xc8, 0x23, 0x97, 0x0c, 0x48, 0x71, 0x06, 0xee, 0xdb, 0xd2, 0x4a, 0x7a,
- 0x50, 0x7c, 0x95, 0xcf, 0x42, 0x45, 0x92, 0xf6, 0x40, 0xb0, 0x4a, 0xe2,
- 0x2a, 0x52, 0xf6, 0x33, 0x0a, 0x0a, 0x88, 0x83, 0xfe, 0xac, 0x92, 0x82,
- 0xb6, 0x82, 0xea, 0xc1, 0xa1, 0x65, 0xb7, 0xcc, 0x41, 0xa3, 0x30, 0x66,
- 0xe2, 0x9c, 0xae, 0xb3, 0x98, 0x78, 0xb1, 0x71, 0x08, 0xb4, 0x6c, 0x78,
- 0x00, 0x26, 0x9a, 0x55, 0x3d, 0x03, 0xf1, 0x12, 0x41, 0x44, 0xb3, 0xa3,
- 0x3f, 0x00, 0x0a, 0x8d, 0xdc, 0xf8, 0x0a, 0x64, 0x2d, 0x53, 0x46, 0x7b,
- 0x07, 0xee, 0x1a, 0x9a, 0x31, 0x7e, 0x19, 0x4d, 0xcb, 0x5d, 0x49, 0xbe,
- 0xb0, 0xd1, 0xc6, 0x83, 0xab, 0x54, 0x14, 0xf7, 0x89, 0x16, 0xed, 0x35,
- 0xbc, 0xb7, 0xf4, 0xf6, 0x88, 0xd0, 0xba, 0xa8, 0xa8, 0xca, 0x02, 0x29,
- 0x91, 0x25, 0x8f, 0xea, 0x3d, 0xa5, 0x89, 0x2e, 0x69, 0x39, 0x50, 0x71,
- 0x3b, 0x45, 0xce, 0x12, 0x11, 0x1f, 0xbf, 0x6d, 0x96, 0xd5, 0x96, 0x61,
- 0x0c, 0x59, 0x19, 0x90, 0x96, 0x20, 0x99, 0x40, 0x0d, 0x58, 0x1b, 0xa3,
- 0x8c, 0xc0, 0x46, 0xb9, 0xb4, 0xc8, 0x9e, 0xc9, 0x80, 0xb8, 0x0f, 0xb3,
- 0x5c, 0xf1, 0xd4, 0x0d, 0x57, 0xca, 0x65, 0xbb, 0x8b, 0xbd, 0x93, 0x41,
- 0x7a, 0x74, 0xf9, 0x5f, 0xa1, 0x12, 0xe5, 0xe7, 0x14, 0xa2, 0xfc, 0xca,
- 0x95, 0x28, 0x9e, 0xa4, 0x20, 0xb1, 0x13, 0xca, 0x09, 0xa4, 0x45, 0x91,
- 0x4b, 0x86, 0xf3, 0xa0, 0x6e, 0x52, 0xdb, 0xee, 0x02, 0x6f, 0x75, 0x86,
- 0x8b, 0xde, 0xa4, 0x76, 0x8e, 0xac, 0xc7, 0x41, 0x94, 0x3f, 0x72, 0x0a,
- 0x3c, 0x35, 0xda, 0x8a, 0xc0, 0xc2, 0x60, 0x02, 0x54, 0x32, 0x3e, 0xcb,
- 0x04, 0xcf, 0xe9, 0x0f, 0xae, 0xdb, 0xc4, 0xaf, 0x6d, 0x80, 0x1d, 0x18,
- 0xde, 0xfc, 0xd2, 0x93, 0xc7, 0x7f, 0x8a, 0x08, 0xe4, 0xc0, 0x69, 0xc9,
- 0x75, 0x6d, 0xf4, 0x6a, 0x1b, 0x35, 0x31, 0xc2, 0xf4, 0xe2, 0x17, 0x06,
- 0xcd, 0x2d, 0x19, 0x19, 0x4f, 0xd8, 0x1b, 0xa5, 0xc5, 0xd1, 0xcb, 0x3d,
- 0x0c, 0x4e, 0x70, 0x39, 0xd5, 0x20, 0x36, 0xfc, 0x7c, 0x92, 0x35, 0x37,
- 0xa4, 0xc5, 0x61, 0x37, 0x74, 0x1b, 0x3d, 0x1e, 0x60, 0xf9, 0x61, 0x6f,
- 0xbe, 0xcb, 0x40, 0x00, 0x51, 0x89, 0xa3, 0x30, 0xe8, 0xab, 0xf5, 0x8c,
- 0x68, 0x5c, 0x37, 0xb8, 0x7e, 0xb1, 0xf6, 0x31, 0x2e, 0x44, 0xcd, 0xdf,
- 0xa7, 0x7d, 0xf1, 0x72, 0x71, 0x5b, 0x15, 0x43, 0x9a, 0xb9, 0x24, 0x0f,
- 0xfa, 0x3e, 0x7e, 0x7b, 0x8d, 0xe5, 0xda, 0xc6, 0xbc, 0x9f, 0x6d, 0x36,
- 0xa7, 0x87, 0xef, 0xe9, 0x59, 0x83, 0x0e, 0x18, 0x9d, 0x2b, 0x90, 0x8b,
- 0x85, 0x86, 0x7b, 0xb9, 0x0c, 0xbb, 0x72, 0xe4, 0xb7, 0xe9, 0xca, 0xfc,
- 0x8c, 0x42, 0x82, 0x00, 0x20, 0x9d, 0x65, 0xb1, 0xbc, 0x84, 0xce, 0xe6,
- 0x77, 0xe2, 0xe2, 0x38, 0x9f, 0x10, 0x9a, 0xdd, 0x1a, 0x67, 0xb1, 0x96,
- 0x1a, 0xb5, 0x20, 0xfd, 0xa8, 0x7b, 0x4a, 0x83, 0xe0, 0x12, 0x6c, 0xf1,
- 0x29, 0x4d, 0x10, 0x8c, 0x0b, 0x29, 0xdf, 0x0c, 0xe1, 0x8e, 0x5b, 0x6b,
- 0x0c, 0xbb, 0x6d, 0x5f, 0x30, 0xfa, 0x1d, 0xea, 0xb1, 0xba, 0xf3, 0x97,
- 0x1c, 0x3e, 0x6d, 0xb3, 0xd6, 0x72, 0xf2, 0x40, 0x96, 0x85, 0x2e, 0x33,
- 0x01, 0x0b, 0xd2, 0x57, 0x04, 0x32, 0x57, 0x3e, 0x60, 0xdb, 0x51, 0xf6,
- 0x45, 0x26, 0x63, 0x39, 0x1c, 0xad, 0x5b, 0x2b, 0xb1, 0x87, 0x48, 0x6c,
- 0x6e, 0x67, 0x4c, 0x75, 0x11, 0xe3, 0xd7, 0x67, 0xbb, 0xc9, 0x59, 0x27,
- 0xac, 0x80, 0xa2, 0x24, 0x12, 0xa6, 0x3e, 0x23, 0x96, 0xf6, 0x5f, 0x8c,
- 0x89, 0xd8, 0xef, 0x82, 0xce, 0xe5, 0x92, 0x59, 0xe4, 0x4f, 0x84, 0x7e,
- 0x7f, 0x71, 0xc6, 0xd4, 0x59, 0xcb, 0x2b, 0x14, 0x69, 0x30, 0x28, 0x88,
- 0x98, 0x94, 0xfe, 0x2d, 0x35, 0x26, 0x74, 0x49, 0xa5, 0x76, 0xdc, 0x70,
- 0x47, 0x9c, 0xf2, 0xea, 0x4c, 0x5f, 0x04, 0xa9, 0x8e, 0x0c, 0x8a, 0xa3,
- 0x99, 0xe7, 0x1e, 0xfc, 0x91, 0xb4, 0xbe, 0xab, 0x59, 0x2e, 0x75, 0xa0,
- 0xe9, 0x69, 0x15, 0x97, 0x59, 0x11, 0x76, 0xba, 0xc0, 0x47, 0x49, 0x90,
- 0x0b, 0x51, 0xcf, 0x46, 0x5d, 0x94, 0x75, 0x2f, 0x6c, 0x20, 0x93, 0xcb,
- 0x4b, 0x87, 0xce, 0xdd, 0x87, 0xc8, 0x48, 0x26, 0xff, 0x04, 0x05, 0x80,
- 0x9f, 0x88, 0x27, 0x5e, 0x52, 0xa0, 0xa6, 0x81, 0x8c, 0x5b, 0xdd, 0xd1,
- 0x76, 0x98, 0x07, 0xeb, 0xfa, 0xea, 0xd0, 0x70, 0x8e, 0xc3, 0xd1, 0xe7,
- 0x30, 0x51, 0x8c, 0xb0, 0x8e, 0xc0, 0xb7, 0x72, 0xee, 0x88, 0xb4, 0xc8,
- 0xec, 0x8c, 0x26, 0x5a, 0xf8, 0xc8, 0x29, 0xfe, 0xc3, 0xff, 0x4e, 0x94,
- 0xf6, 0xf7, 0x75, 0x18, 0xbf, 0xdb, 0x01, 0x41, 0xbd, 0x05, 0xf6, 0x22,
- 0xb5, 0x60, 0x41, 0xa6, 0xc1, 0x24, 0x6f, 0x00, 0xa3, 0xae, 0x36, 0x64,
- 0xfb, 0x62, 0xbe, 0xe5, 0x92, 0xe7, 0x04, 0xaf, 0x45, 0x6b, 0xe2, 0x8d,
- 0x0a, 0xfe, 0xdf, 0xe9, 0x5b, 0x3a, 0x00, 0xd7, 0x26, 0x21, 0x1b, 0xe2,
- 0xcf, 0x47, 0x6f, 0x4f, 0xcf, 0x8f, 0xda, 0xf5, 0x8a, 0x0d, 0x1a, 0x3e,
- 0x21, 0xd8, 0xdf, 0x9d, 0x1d, 0x50, 0xd0, 0x5c, 0x23, 0xd1, 0xbc, 0xc8,
- 0xc9, 0xe8, 0x4f, 0xce, 0xbe, 0x7b, 0x63, 0x27, 0x97, 0x83, 0x69, 0x62,
- 0x52, 0x3a, 0xe2, 0x40, 0xf7, 0xb9, 0x2b, 0xda, 0x49, 0x09, 0xa0, 0x06,
- 0x44, 0xd2, 0xd0, 0xd8, 0x4e, 0x0f, 0x49, 0x16, 0x9c, 0x1a, 0xa3, 0xa5,
- 0xfa, 0xc0, 0xdc, 0xae, 0x6b, 0x2a, 0xbd, 0xb7, 0xc3, 0x06, 0x7a, 0x2f,
- 0x44, 0x3f, 0xd0, 0xa6, 0xc4, 0x16, 0x25, 0xa4, 0x31, 0x82, 0x1f, 0x1b,
- 0x25, 0xf6, 0x23, 0xee, 0x2b, 0x40, 0x10, 0xe4, 0x6c, 0x20, 0x7c, 0x25,
- 0xc6, 0xb0, 0xa9, 0xd7, 0x36, 0xc7, 0x41, 0x58, 0xde, 0x91, 0xc3, 0x85,
- 0x68, 0xd6, 0xf6, 0x3a, 0x1a, 0x30, 0x32, 0x9c, 0x84, 0x7b, 0xfc, 0x7d,
- 0x8c, 0x44, 0xc8, 0xcd, 0x67, 0x77, 0xea, 0xdd, 0x81, 0x37, 0x53, 0xbb,
- 0x6d, 0x32, 0xe1, 0xed, 0x3f, 0x6c, 0x27, 0x52, 0x10, 0x02, 0x86, 0xc7,
- 0x0d, 0x6a, 0x7a, 0x7a, 0x1c, 0xba, 0x9e, 0x57, 0xbb, 0xf7, 0xe5, 0x6f,
- 0xe9, 0xa2, 0xfb, 0xeb, 0xb1, 0x25, 0x74, 0x27, 0x49, 0x3d, 0x68, 0x3e,
- 0xb9, 0x66, 0x80, 0x4b, 0xb0, 0x0e, 0x11, 0xa7, 0x3a, 0x0e, 0x33, 0x96,
- 0xb0, 0xf8, 0xa2, 0x21, 0xd8, 0x05, 0xd7, 0x07, 0x47, 0x19, 0x0e, 0x22,
- 0x66, 0x8a, 0x74, 0xce, 0xb1, 0x08, 0xa2, 0xee, 0xfa, 0xae, 0x68, 0xe8,
- 0xa2, 0x32, 0x4f, 0x99, 0x96, 0x55, 0xbc, 0x00, 0x0c, 0xc4, 0xe4, 0x68,
- 0xb7, 0x06, 0xd6, 0xc4, 0xf3, 0x27, 0xcf, 0x49, 0xb8, 0x23, 0x47, 0x49,
- 0xfa, 0x40, 0x09, 0x22, 0x30, 0xe2, 0xa7, 0x3c, 0xe7, 0x28, 0x72, 0x88,
- 0x8c, 0x23, 0x9d, 0x7b, 0x27, 0xd9, 0x82, 0x3b, 0x4f, 0x8d, 0xbd, 0x21,
- 0x42, 0x30, 0xa5, 0xbe, 0x13, 0x23, 0x8c, 0x3e, 0x43, 0x3b, 0x79, 0xfd,
- 0x29, 0xd9, 0xf9, 0x77, 0x6e, 0xd3, 0xe7, 0xaa, 0xe3, 0x39, 0xf8, 0x9b,
- 0x17, 0xeb, 0x80, 0xf2, 0xd1, 0x6a, 0x3d, 0x6f, 0xed, 0x29, 0xb6, 0x1c,
- 0xcb, 0x9b, 0xc4, 0x8a, 0xf2, 0xea, 0xa6, 0x5c, 0x91, 0xd2, 0x06, 0xf8,
- 0x84, 0x48, 0xa7, 0x50, 0x73, 0x58, 0x0f, 0x4e, 0xf2, 0x69, 0x97, 0x2d,
- 0x84, 0x12, 0x91, 0x76, 0x02, 0x20, 0xca, 0xe2, 0x6e, 0x55, 0xe5, 0x6a,
- 0x94, 0x7c, 0x28, 0x90, 0x89, 0x27, 0x64, 0x27, 0x62, 0x22, 0x2f, 0xcc,
- 0x0e, 0x18, 0x9a, 0x26, 0x28, 0x8f, 0x08, 0x13, 0x02, 0x9f, 0xf3, 0xef,
- 0x9d, 0xb0, 0xc9, 0x4e, 0x88, 0x14, 0xf7, 0xd6, 0x62, 0x5e, 0x0b, 0xdf,
- 0x7a, 0x1b, 0xf6, 0x54, 0xe3, 0x9e, 0x50, 0x44, 0xea, 0x66, 0x39, 0x18,
- 0x9b, 0x42, 0xe0, 0xd9, 0x62, 0x31, 0x64, 0xd0, 0x6d, 0x02, 0x21, 0x26,
- 0xe5, 0x9e, 0x8b, 0xa4, 0x91, 0xc0, 0xe6, 0x97, 0xe0, 0x07, 0x92, 0x05,
- 0xb5, 0xde, 0x23, 0xd4, 0x00, 0x29, 0xd8, 0x88, 0xa4, 0xbd, 0x6b, 0x64,
- 0x8d, 0x0a, 0xf7, 0x9c, 0x3f, 0x04, 0xbb, 0xf3, 0x77, 0xe5, 0xa7, 0xb1,
- 0x2e, 0x48, 0x21, 0x8c, 0xe5, 0xf4, 0xea, 0xb2, 0x5a, 0x71, 0x27, 0xb6,
- 0x58, 0x9b, 0x38, 0x4f, 0xeb, 0xe6, 0x27, 0x95, 0x24, 0xea, 0xac, 0xe1,
- 0xa9, 0xf0, 0xab, 0xc7, 0x6f, 0x5a, 0x1d, 0x9d, 0x69, 0x27, 0x50, 0xe7,
- 0x16, 0x1f, 0x4e, 0xfa, 0x68, 0xda, 0x56, 0xeb, 0x4e, 0x72, 0xd8, 0xd1,
- 0x9c, 0x89, 0x31, 0xb9, 0x73, 0xbf, 0x89, 0x0f, 0x27, 0x63, 0xb0, 0xa6,
- 0xca, 0x23, 0xe8, 0xb0, 0xa0, 0x15, 0xed, 0x39, 0x4e, 0xd4, 0x70, 0x99,
- 0x55, 0xf6, 0x23, 0x61, 0x92, 0xe4, 0xd5, 0xb2, 0x9c, 0x51, 0x51, 0x57,
- 0x76, 0xef, 0x5e, 0xd0, 0x83, 0xba, 0x17, 0x52, 0x0b, 0x57, 0xfb, 0xeb,
- 0xc2, 0x20, 0x86, 0x4a, 0x89, 0xf2, 0x04, 0xdf, 0x33, 0x3e, 0x9c, 0x5b,
- 0xa8, 0x76, 0x46, 0xcc, 0xf8, 0x65, 0x7f, 0x09, 0x45, 0x52, 0x4e, 0x1b,
- 0x6f, 0x05, 0xf4, 0x40, 0x7c, 0x38, 0x66, 0xac, 0x91, 0x95, 0x51, 0x81,
- 0x14, 0x2c, 0xca, 0xfb, 0x56, 0x46, 0x0f, 0x06, 0xa7, 0x6c, 0x7e, 0xc8,
- 0xec, 0xba, 0x73, 0xc4, 0x7c, 0x38, 0xf1, 0xe1, 0xda, 0x07, 0xac, 0x27,
- 0x8c, 0x39, 0xc4, 0x0e, 0x58, 0x30, 0x8f, 0x43, 0x0d, 0xcb, 0xd9, 0xc7,
- 0xbc, 0x3b, 0xf6, 0xc1, 0xde, 0x03, 0x96, 0x6f, 0x04, 0xbb, 0xb0, 0x28,
- 0x8c, 0x76, 0xb7, 0xae, 0xa6, 0xd9, 0x47, 0xcc, 0xad, 0x49, 0xab, 0xcb,
- 0xac, 0xf9, 0xb8, 0x79, 0x43, 0x16, 0x82, 0xa6, 0x70, 0xb7, 0x44, 0x6b,
- 0x63, 0xcb, 0x2b, 0x04, 0x8d, 0x34, 0x15, 0x74, 0x01, 0xa3, 0xe0, 0x71,
- 0xfb, 0xe8, 0xa6, 0x7f, 0x43, 0xbc, 0xef, 0x71, 0x83, 0x04, 0x36, 0xcc,
- 0x56, 0x65, 0x5e, 0xb0, 0xbf, 0x4c, 0x79, 0x8c, 0x37, 0xc7, 0x18, 0xf2,
- 0xd2, 0xa6, 0x70, 0xd5, 0xf2, 0x13, 0x95, 0x58, 0x59, 0x25, 0xe0, 0x63,
- 0xa4, 0x99, 0x84, 0xb7, 0x38, 0x7e, 0x5a, 0x4f, 0x9b, 0x97, 0x24, 0x25,
- 0x84, 0xb6, 0x01, 0xa6, 0x7f, 0xd0, 0x54, 0x54, 0xdc, 0x33, 0x1b, 0xff,
- 0x83, 0xf6, 0x46, 0x76, 0x67, 0xb7, 0xba, 0x99, 0x59, 0x20, 0x9b, 0x1b,
- 0x77, 0x81, 0x54, 0xb4, 0x23, 0xb3, 0x59, 0x9b, 0xcc, 0x52, 0x06, 0x13,
- 0x0f, 0x36, 0x57, 0xc4, 0xe4, 0xde, 0x4f, 0x17, 0x4d, 0xa8, 0xff, 0x04,
- 0x1f, 0xaf, 0xd0, 0x2d, 0x57, 0x76, 0x57, 0x0e, 0xa3, 0x7f, 0x6b, 0xe4,
- 0x69, 0x37, 0x45, 0xe6, 0xee, 0x96, 0xfe, 0xcb, 0x2a, 0xb2, 0x47, 0x1b,
- 0xd8, 0x9d, 0x7c, 0xb6, 0xcb, 0xf0, 0x66, 0x19, 0xb9, 0x65, 0x99, 0x12,
- 0x90, 0xb3, 0x75, 0xff, 0xbd, 0xe2, 0x99, 0xf7, 0xee, 0x71, 0xb5, 0xbc,
- 0xe7, 0x8a, 0x9b, 0x07, 0xdc, 0xaa, 0x18, 0x89, 0xc3, 0xae, 0x2a, 0xb8,
- 0x95, 0xd2, 0x4c, 0xb7, 0x67, 0xe7, 0xfb, 0x66, 0xd0, 0xa2, 0xc1, 0xfe,
- 0x99, 0xc8, 0x93, 0xd1, 0xe9, 0xb8, 0xcd, 0x35, 0xa7, 0x5b, 0xdd, 0xb9,
- 0x99, 0xc5, 0x87, 0x93, 0xe9, 0xba, 0xb7, 0x64, 0x7b, 0x06, 0x9e, 0xef,
- 0x92, 0x3b, 0x4f, 0x18, 0xb3, 0x31, 0xa4, 0x0d, 0xbd, 0xde, 0x3f, 0x89,
- 0x3d, 0x90, 0x7d, 0xbe, 0x28, 0x7c, 0x8b, 0x9c, 0xbe, 0x68, 0x24, 0xef,
- 0x86, 0x52, 0x16, 0x2f, 0x62, 0x6d, 0x8f, 0x9b, 0xfb, 0x97, 0x22, 0xee,
- 0x8a, 0x84, 0x3c, 0x24, 0xaa, 0xa2, 0x73, 0x91, 0x28, 0xa9, 0x00, 0x8c,
- 0x9b, 0x51, 0x4f, 0x88, 0x30, 0x6f, 0x3e, 0xe1, 0x6f, 0x26, 0x9c, 0xb7,
- 0x85, 0x6d, 0x45, 0xec, 0x50, 0xd4, 0x10, 0xed, 0x8f, 0x5a, 0x67, 0x62,
- 0x27, 0xc8, 0xe3, 0xdc, 0x66, 0x22, 0x6c, 0x0a, 0xdb, 0x49, 0x9e, 0xab,
- 0x47, 0x9e, 0x1b, 0x82, 0x73, 0x45, 0xb2, 0xcb, 0x99, 0xdf, 0x62, 0xd9,
- 0x5b, 0x7e, 0x35, 0xe0, 0x2d, 0xb8, 0x34, 0x8b, 0xc7, 0x1f, 0xd1, 0x22,
- 0x91, 0x44, 0x0d, 0x49, 0xa0, 0x1e, 0xec, 0x26, 0xe7, 0x12, 0xda, 0x24,
- 0xa5, 0xee, 0xae, 0xc1, 0x04, 0xcd, 0x00, 0x3b, 0xf9, 0xc8, 0x08, 0x43,
- 0x2e, 0x0a, 0x20, 0x05, 0x89, 0xe0, 0xdb, 0x63, 0x81, 0xe2, 0x5d, 0x8d,
- 0x14, 0x2b, 0x04, 0xd8, 0xde, 0xc1, 0xe8, 0x60, 0x90, 0x58, 0xdb, 0xd3,
- 0xd3, 0x9d, 0x91, 0xbc, 0x28, 0xd0, 0xd1, 0xf4, 0xe9, 0xae, 0x9f, 0xe1,
- 0x9c, 0x3e, 0x5c, 0x87, 0x5e, 0x61, 0xb8, 0x96, 0x9d, 0xc1, 0x72, 0x93,
- 0xde, 0x85, 0x8a, 0xe9, 0xfe, 0xf0, 0xf1, 0xf3, 0xe7, 0x2d, 0x79, 0x5e,
- 0x7b, 0xd0, 0xdb, 0x4f, 0xf6, 0xf7, 0xb1, 0xb6, 0xa0, 0x26, 0xda, 0xfc,
- 0x62, 0xf8, 0x1c, 0x2f, 0xb6, 0x5f, 0xab, 0x33, 0x73, 0x04, 0xb3, 0xfe,
- 0xf7, 0x86, 0xf4, 0x9b, 0xc8, 0xe7, 0xe0, 0x4f, 0xe9, 0x7d, 0xeb, 0x39,
- 0x7d, 0x2e, 0xf2, 0x16, 0x1e, 0xe6, 0x6d, 0x2c, 0xe7, 0x73, 0xf2, 0x64,
- 0xd1, 0x93, 0x8a, 0xcc, 0x73, 0x93, 0x56, 0xb3, 0x70, 0xb9, 0xfb, 0x83,
- 0xe1, 0x41, 0xdf, 0x72, 0x11, 0x4d, 0x46, 0x02, 0x1c, 0x9d, 0x27, 0x19,
- 0x8a, 0xc6, 0x00, 0xe1, 0x02, 0xa1, 0xee, 0x40, 0x07, 0x66, 0x46, 0x07,
- 0xcf, 0x9f, 0x0f, 0x68, 0x66, 0x4f, 0x9e, 0x3f, 0xef, 0x2d, 0x08, 0xf7,
- 0x3e, 0x73, 0x53, 0x3a, 0xf7, 0x13, 0xbd, 0xee, 0x88, 0xa6, 0x26, 0x3b,
- 0x27, 0xfe, 0x1d, 0xfa, 0xcd, 0x17, 0xc9, 0xfb, 0xd3, 0x8b, 0x23, 0xcf,
- 0x31, 0x83, 0xeb, 0xc5, 0x11, 0x43, 0x2f, 0x45, 0x14, 0x21, 0xd8, 0x15,
- 0x3a, 0x3f, 0xc1, 0xf0, 0x25, 0x9b, 0x24, 0x34, 0x26, 0x51, 0xac, 0xa2,
- 0x3e, 0xc1, 0x7f, 0x0b, 0x33, 0x22, 0xc8, 0x38, 0x9e, 0xe5, 0x97, 0x79,
- 0xe3, 0xc3, 0x36, 0xed, 0x98, 0xd3, 0xde, 0x85, 0x8b, 0x83, 0x13, 0xdd,
- 0x24, 0x9a, 0xb2, 0x5d, 0x53, 0x79, 0x07, 0x67, 0xc2, 0x6e, 0x93, 0x35,
- 0xb5, 0x1d, 0x14, 0x58, 0x64, 0x8b, 0x59, 0xad, 0x82, 0x90, 0x1f, 0x1f,
- 0xe2, 0x41, 0xb9, 0x2d, 0x30, 0x57, 0xb9, 0xaf, 0x74, 0x0a, 0x50, 0x4b,
- 0xfe, 0x74, 0x7f, 0x3c, 0x05, 0xee, 0x2c, 0x24, 0x62, 0x68, 0x61, 0x16,
- 0x8d, 0xe3, 0xa7, 0xca, 0x6e, 0xd7, 0xce, 0xe5, 0x69, 0xbd, 0x73, 0x05,
- 0x9d, 0x43, 0x80, 0x47, 0xc8, 0x4e, 0xfc, 0x59, 0xb6, 0xd2, 0x94, 0xd2,
- 0xa2, 0x3d, 0x8e, 0xa1, 0xe5, 0x79, 0x7e, 0xb9, 0xae, 0xe2, 0xe9, 0x97,
- 0x7f, 0x71, 0x65, 0x42, 0x0a, 0x32, 0x9f, 0xde, 0xa4, 0x5a, 0x9e, 0x84,
- 0xbe, 0x00, 0x7a, 0xaf, 0xd5, 0x08, 0xd6, 0x72, 0x20, 0xb4, 0x00, 0x08,
- 0x2c, 0x69, 0xf2, 0x4e, 0xcc, 0x8d, 0x26, 0x43, 0x4e, 0x02, 0x6d, 0x15,
- 0x08, 0xb7, 0x9e, 0x74, 0x83, 0x93, 0x0c, 0x1b, 0x71, 0x21, 0xd2, 0x79,
- 0x93, 0x38, 0x4d, 0x65, 0x0b, 0xc2, 0x9c, 0xba, 0xed, 0x85, 0xf3, 0xdd,
- 0xd3, 0x93, 0xf0, 0xb6, 0x5c, 0x95, 0x5e, 0x4f, 0x89, 0x10, 0xb4, 0x41,
- 0x40, 0x69, 0xc0, 0x7d, 0xf8, 0x88, 0x66, 0x46, 0x85, 0x5e, 0x94, 0x29,
- 0x1d, 0xa3, 0x7a, 0x4e, 0x38, 0x9a, 0xce, 0xda, 0x01, 0x23, 0x8e, 0xe9,
- 0xd9, 0x06, 0x59, 0x1d, 0x74, 0xd4, 0x72, 0xca, 0x84, 0xe5, 0xed, 0x40,
- 0x45, 0x40, 0xa4, 0x9e, 0x1b, 0x84, 0xf9, 0x94, 0xf9, 0x08, 0x23, 0x64,
- 0xec, 0x8e, 0x92, 0xd0, 0xec, 0x25, 0x82, 0xe7, 0xd3, 0xb2, 0x9d, 0x11,
- 0xd0, 0x63, 0x91, 0x84, 0x24, 0x4d, 0x58, 0xc5, 0xf1, 0xf8, 0xf8, 0xff,
- 0x39, 0xfa, 0x35, 0xa3, 0x4e, 0x55, 0x7a, 0x63, 0x0b, 0x07, 0xbf, 0x63,
- 0xc0, 0x4a, 0x89, 0x06, 0x59, 0xa4, 0x8a, 0x74, 0x21, 0x46, 0x3c, 0x35,
- 0xa3, 0x87, 0xf4, 0x40, 0x5c, 0x51, 0x5a, 0xa8, 0x1a, 0xc2, 0x0a, 0x69,
- 0x9b, 0xbc, 0x66, 0x04, 0xaf, 0xa0, 0x4e, 0x43, 0x24, 0xa3, 0xa3, 0xe4,
- 0x8b, 0x9d, 0x80, 0x7c, 0x90, 0x4b, 0xb8, 0x12, 0x61, 0xd9, 0x93, 0xb7,
- 0x97, 0x11, 0xa5, 0xc2, 0x70, 0x01, 0x20, 0x11, 0x69, 0x52, 0x66, 0xae,
- 0xf7, 0xf4, 0xb0, 0xf3, 0x2b, 0xed, 0x33, 0x06, 0xf0, 0xa7, 0x00, 0x55,
- 0x95, 0xbc, 0xfc, 0x70, 0x7e, 0xd2, 0x53, 0x2e, 0x39, 0xc6, 0x19, 0xd0,
- 0x66, 0x6d, 0x9d, 0x67, 0x40, 0x33, 0xab, 0x92, 0xb3, 0xf4, 0x32, 0xdb,
- 0xf2, 0x01, 0xe4, 0x54, 0x55, 0xc4, 0xf2, 0xc5, 0xff, 0x10, 0x73, 0xa7,
- 0xf8, 0x6d, 0x1a, 0x88, 0x89, 0xbb, 0xb0, 0xb0, 0x5f, 0xe3, 0x38, 0x5f,
- 0xa4, 0xb2, 0x77, 0xeb, 0x8a, 0x02, 0xfa, 0xd8, 0xf9, 0x48, 0xeb, 0x21,
- 0x7e, 0xbd, 0x8d, 0xfa, 0xe9, 0x32, 0x4c, 0x29, 0x12, 0x84, 0x46, 0xdc,
- 0x5b, 0x7f, 0x24, 0xf7, 0xfb, 0x96, 0x87, 0x74, 0x39, 0xcc, 0xc2, 0x20,
- 0x9b, 0x6e, 0x05, 0x63, 0x14, 0x5a, 0x57, 0x14, 0xbb, 0xf2, 0x5b, 0xee,
- 0xfb, 0x5a, 0x2e, 0xd8, 0xaa, 0xca, 0x08, 0x8f, 0x17, 0x19, 0xbc, 0x41,
- 0x6b, 0x29, 0x4e, 0x3b, 0x66, 0x08, 0x56, 0xb2, 0xff, 0x4e, 0x64, 0x7e,
- 0x2f, 0x24, 0xd2, 0xc2, 0x6a, 0x90, 0x9d, 0x9a, 0xc4, 0xa9, 0x79, 0xe2,
- 0x93, 0x2c, 0xb6, 0xd8, 0x74, 0x41, 0x0d, 0x54, 0xd8, 0xfb, 0x25, 0xa1,
- 0xf7, 0x59, 0x49, 0x3d, 0x37, 0xd0, 0xa3, 0xbb, 0xb0, 0xfe, 0xe4, 0xd6,
- 0xc9, 0xfe, 0xea, 0x50, 0x87, 0x2e, 0x00, 0xf4, 0x6a, 0x20, 0x5d, 0x81,
- 0x86, 0x86, 0x3a, 0x0a, 0xa9, 0x84, 0xf7, 0x8e, 0xd5, 0xa3, 0xbd, 0xff,
- 0xf4, 0x1a, 0x4d, 0x78, 0xcd, 0x22, 0x7a, 0x10, 0x73, 0xbd, 0xe9, 0x36,
- 0xa8, 0x52, 0x01, 0xc1, 0x04, 0xcd, 0x2a, 0x5c, 0xc1, 0xac, 0x48, 0xcb,
- 0xa8, 0x3b, 0x7f, 0xe8, 0x94, 0xa6, 0xd7, 0x5c, 0xb9, 0x39, 0x7c, 0x93,
- 0x1b, 0x19, 0x52, 0x33, 0x00, 0x11, 0x94, 0x5c, 0xae, 0x3d, 0xd4, 0x6b,
- 0x08, 0xdf, 0x48, 0x16, 0xa4, 0x2b, 0x70, 0x94, 0x04, 0x89, 0xcf, 0xf6,
- 0x1d, 0x1b, 0xb2, 0x31, 0x14, 0x71, 0xaf, 0xb3, 0xd8, 0x53, 0x18, 0x52,
- 0xe7, 0xaf, 0x90, 0x9e, 0xe1, 0xdc, 0xc3, 0x80, 0x6f, 0x87, 0x91, 0x08,
- 0x91, 0xdd, 0x51, 0x58, 0x20, 0x64, 0xcd, 0x38, 0xbc, 0x1e, 0xe9, 0xd9,
- 0x13, 0x98, 0x9a, 0xb6, 0x5b, 0x32, 0x4b, 0xa5, 0x80, 0xc4, 0x28, 0x2f,
- 0xc5, 0x36, 0x4e, 0xe1, 0xd8, 0x09, 0x83, 0xf0, 0x71, 0x69, 0xea, 0xd4,
- 0x0c, 0x6c, 0xe3, 0xe6, 0xda, 0x0b, 0x56, 0x7a, 0xbe, 0xc4, 0x05, 0xee,
- 0x5d, 0x6b, 0x55, 0x48, 0x1a, 0xf5, 0x09, 0x8f, 0x62, 0x03, 0x45, 0x29,
- 0x08, 0x2f, 0xb1, 0x10, 0x3a, 0xf2, 0x77, 0xcc, 0x13, 0x9e, 0x0c, 0xe4,
- 0x7c, 0x8d, 0xe4, 0xf7, 0x43, 0xd7, 0x79, 0x63, 0xe7, 0x2e, 0x33, 0xfa,
- 0xb5, 0x05, 0xd5, 0x52, 0x43, 0x2a, 0x52, 0xfd, 0x99, 0x70, 0x37, 0xc9,
- 0xba, 0x55, 0x98, 0x02, 0x13, 0xc4, 0x8b, 0x2c, 0xf2, 0x96, 0x1b, 0x2d,
- 0x00, 0x89, 0x96, 0x45, 0x76, 0x4b, 0x18, 0xe0, 0xfd, 0xc3, 0x85, 0x4a,
- 0xf6, 0x77, 0xaf, 0xce, 0xdf, 0x1f, 0xbf, 0xff, 0xea, 0x45, 0x72, 0x74,
- 0x9b, 0x55, 0x53, 0xea, 0x7b, 0xfc, 0xb7, 0xf5, 0x2c, 0x9f, 0x82, 0x4d,
- 0x48, 0x3f, 0x59, 0x3f, 0xe4, 0x6d, 0xac, 0x80, 0x4c, 0xfc, 0xab, 0x24,
- 0x70, 0x83, 0x42, 0x18, 0xc9, 0xe5, 0x25, 0xe0, 0x08, 0x63, 0x45, 0x95,
- 0x97, 0x6b, 0x8f, 0x7c, 0xa6, 0xdc, 0xe7, 0x0e, 0xb1, 0x00, 0xc4, 0x48,
- 0xaf, 0x64, 0xaf, 0xc9, 0xe9, 0x9a, 0xbc, 0x39, 0x39, 0x09, 0xa1, 0x7c,
- 0x39, 0x81, 0x94, 0x2d, 0x47, 0x94, 0xfa, 0x62, 0x08, 0x9b, 0x6f, 0x4a,
- 0xb1, 0x3c, 0x23, 0xfe, 0xb9, 0xcb, 0x9d, 0xc7, 0xf0, 0x00, 0x06, 0xf6,
- 0x5d, 0x98, 0xc9, 0x89, 0x34, 0x63, 0x24, 0x07, 0xe2, 0x84, 0xf3, 0x6a,
- 0x06, 0x5b, 0xc8, 0x70, 0xc8, 0x72, 0xde, 0x90, 0x7e, 0xd4, 0x92, 0xa4,
- 0xed, 0x2e, 0x32, 0x9b, 0x92, 0xc2, 0x38, 0x66, 0xd4, 0xc6, 0x89, 0x92,
- 0x90, 0x24, 0x72, 0x56, 0x0d, 0x41, 0xb2, 0x62, 0x88, 0xd6, 0x43, 0x48,
- 0x35, 0x0b, 0x12, 0x6a, 0x53, 0xdb, 0x4d, 0xb9, 0x26, 0x6e, 0x19, 0xb2,
- 0x8b, 0x9b, 0xac, 0x12, 0xd3, 0xd3, 0x16, 0x11, 0x1b, 0x66, 0x37, 0x4a,
- 0xc6, 0xa5, 0x79, 0x3e, 0x52, 0xb5, 0xa0, 0x3d, 0xfa, 0x5a, 0xcd, 0xbe,
- 0x39, 0x85, 0xd6, 0xe6, 0x55, 0xa1, 0x7f, 0x11, 0x62, 0x6e, 0xed, 0xf5,
- 0x46, 0xfa, 0x03, 0x13, 0xfd, 0x4f, 0x32, 0xab, 0x50, 0xdc, 0x69, 0x68,
- 0x87, 0x88, 0x64, 0x6b, 0x68, 0xd8, 0xe9, 0x16, 0xed, 0x2c, 0xba, 0x16,
- 0x7b, 0x23, 0xdd, 0xd3, 0x7b, 0xd3, 0x4f, 0x53, 0xef, 0x2e, 0xf8, 0x9e,
- 0x96, 0x66, 0x6a, 0x75, 0x7a, 0x8e, 0x53, 0x69, 0x2c, 0x65, 0x63, 0xa5,
- 0xcc, 0x93, 0x32, 0xb4, 0x20, 0x0e, 0x02, 0xe0, 0x6c, 0x4e, 0x58, 0x77,
- 0x8c, 0x5f, 0x28, 0xef, 0xbf, 0x2e, 0xf2, 0x66, 0xe0, 0xbc, 0x0b, 0xa4,
- 0x15, 0x04, 0xe5, 0xda, 0xc6, 0xc6, 0x1b, 0xed, 0xc6, 0xf2, 0x6a, 0x84,
- 0x2f, 0x0a, 0x90, 0x6b, 0x7a, 0xed, 0xf2, 0xbd, 0x7a, 0x39, 0xdf, 0x48,
- 0xf3, 0xe3, 0xbb, 0x32, 0x1a, 0x90, 0x07, 0x9e, 0x3f, 0x9c, 0x87, 0x03,
- 0x33, 0xf1, 0x8b, 0x59, 0xbc, 0x68, 0xa5, 0xc3, 0x25, 0x08, 0x87, 0xf3,
- 0x0a, 0xbe, 0xfa, 0x99, 0xb0, 0x44, 0x6d, 0xf2, 0xe2, 0xba, 0xfc, 0xc4,
- 0xf2, 0x9e, 0x5b, 0x1b, 0xc6, 0x52, 0x54, 0xf2, 0xde, 0xb2, 0x16, 0xf6,
- 0x4b, 0xf1, 0xae, 0xca, 0xdc, 0x59, 0x64, 0x79, 0x95, 0x04, 0x66, 0x31,
- 0x12, 0x8c, 0xb1, 0x25, 0x80, 0x56, 0x3c, 0x75, 0xf3, 0xfd, 0xf5, 0x2e,
- 0x0d, 0xb4, 0x01, 0x75, 0x92, 0x2d, 0xea, 0x6c, 0xe0, 0x55, 0x03, 0xaa,
- 0xb0, 0x51, 0x69, 0x83, 0xe4, 0x4f, 0xed, 0x24, 0xd7, 0x2f, 0x49, 0x46,
- 0xae, 0x36, 0xc1, 0xdb, 0x6e, 0x67, 0xc4, 0x22, 0xb8, 0xc9, 0x51, 0xa7,
- 0xe9, 0x55, 0x59, 0x46, 0xc5, 0xb6, 0x93, 0x21, 0x50, 0x69, 0x00, 0x88,
- 0xd1, 0xa3, 0x3f, 0xb4, 0x5b, 0x1b, 0x4a, 0x32, 0x79, 0xf7, 0xee, 0x29,
- 0xd4, 0xa0, 0x68, 0x83, 0x1e, 0x40, 0x69, 0x5b, 0xba, 0xf1, 0x84, 0x02,
- 0xd9, 0x1c, 0x4b, 0x5e, 0xe0, 0xdf, 0x75, 0xe4, 0x71, 0xd3, 0x42, 0x4f,
- 0xf0, 0x37, 0x25, 0x2a, 0xec, 0x38, 0x01, 0xcd, 0xa5, 0x25, 0x82, 0x6e,
- 0x60, 0x34, 0x15, 0xed, 0x80, 0x06, 0xe6, 0x99, 0x37, 0x60, 0x20, 0xbf,
- 0x3f, 0xdc, 0xef, 0x63, 0xf2, 0xac, 0xc6, 0x6a, 0x95, 0x2b, 0x5d, 0x47,
- 0x6b, 0x9c, 0xb3, 0x20, 0x74, 0x85, 0x01, 0x24, 0x40, 0xd6, 0xab, 0x04,
- 0xad, 0xaf, 0xa8, 0x69, 0x5a, 0xcf, 0xfe, 0x47, 0xad, 0xe2, 0x9f, 0xdb,
- 0x2a, 0xaf, 0xaf, 0x57, 0x9e, 0xe3, 0x5f, 0xe7, 0xde, 0x19, 0xd3, 0x48,
- 0xd1, 0xf2, 0x5a, 0xe6, 0x25, 0x9e, 0xab, 0xc4, 0xd3, 0xd9, 0x9d, 0xde,
- 0x00, 0xcb, 0x1e, 0xcc, 0x8e, 0x73, 0x0c, 0xf2, 0x90, 0x25, 0x1b, 0x9b,
- 0x76, 0xb9, 0x8a, 0x30, 0x2c, 0x7b, 0x09, 0x34, 0x4b, 0x25, 0x75, 0x68,
- 0x97, 0xa9, 0xb0, 0x47, 0xc3, 0x39, 0x43, 0xf4, 0x15, 0xe1, 0xa4, 0x6c,
- 0x8c, 0xa7, 0x92, 0xad, 0x89, 0x1d, 0xa1, 0x2f, 0xb5, 0x05, 0x23, 0xb2,
- 0xce, 0x86, 0x51, 0x6f, 0xbf, 0x62, 0xd6, 0x84, 0xe0, 0x67, 0xb0, 0xa4,
- 0x1c, 0x18, 0xfe, 0x16, 0xbf, 0xbe, 0x95, 0xec, 0x10, 0x57, 0xdd, 0x55,
- 0xed, 0x35, 0xac, 0x7f, 0x76, 0x35, 0x75, 0x60, 0xbf, 0x69, 0x1d, 0x64,
- 0xce, 0x42, 0x7b, 0x4d, 0x8c, 0x91, 0x57, 0x19, 0x05, 0x60, 0xbd, 0x48,
- 0x2b, 0xa9, 0x1c, 0x9c, 0xaf, 0x17, 0x31, 0x33, 0x07, 0x37, 0x5b, 0x63,
- 0x43, 0x66, 0x8b, 0xea, 0xb5, 0xf6, 0x12, 0x70, 0x38, 0x33, 0x02, 0x3a,
- 0xb8, 0x30, 0x33, 0x42, 0x41, 0xcb, 0x82, 0x5b, 0x9c, 0x45, 0x29, 0x17,
- 0xae, 0x61, 0xec, 0x99, 0x2a, 0x98, 0x6c, 0x45, 0xf1, 0xdc, 0xaa, 0xec,
- 0x92, 0xa6, 0xe4, 0xda, 0xa8, 0xd1, 0x16, 0x50, 0x33, 0xef, 0x3c, 0x48,
- 0x1a, 0xdc, 0x3a, 0x3d, 0xbb, 0x38, 0x3e, 0x7d, 0x3f, 0x4e, 0xfe, 0x7d,
- 0x6b, 0x63, 0x79, 0x57, 0x1b, 0x58, 0xf9, 0xfb, 0x81, 0x3b, 0x93, 0xe4,
- 0xa5, 0xf8, 0x19, 0xfa, 0x6c, 0x63, 0x4f, 0x83, 0x9f, 0x1a, 0xe9, 0x6d,
- 0xd8, 0xab, 0xbe, 0x29, 0xd8, 0x6e, 0x72, 0x58, 0x1d, 0x24, 0x83, 0x40,
- 0x5b, 0xf6, 0x61, 0x1f, 0x7c, 0x1b, 0x9a, 0x79, 0xbd, 0x33, 0x59, 0x3a,
- 0xa3, 0xf7, 0x70, 0x60, 0xc6, 0x22, 0x69, 0xd9, 0x2f, 0xd8, 0x3b, 0x79,
- 0x0b, 0xdb, 0x7c, 0x43, 0xba, 0x29, 0x1e, 0xdc, 0x91, 0x46, 0xf4, 0xac,
- 0x68, 0xd5, 0x61, 0x86, 0xe0, 0x57, 0x47, 0x17, 0xbb, 0x52, 0xe8, 0x6a,
- 0xe7, 0x07, 0x4f, 0x97, 0xa8, 0x3d, 0xa9, 0xd5, 0xcc, 0xb4, 0xb4, 0x95,
- 0x81, 0xdc, 0x8c, 0xf6, 0xbc, 0x48, 0x8b, 0x68, 0x09, 0x1b, 0x69, 0xb4,
- 0xaf, 0xcd, 0x76, 0x10, 0x1f, 0x56, 0x8e, 0xac, 0xde, 0x13, 0xaf, 0x7f,
- 0x0e, 0xe3, 0x32, 0x9d, 0x7d, 0xb8, 0xc0, 0x80, 0x6f, 0x8e, 0x4e, 0x8e,
- 0x2e, 0x8e, 0xba, 0x96, 0xfb, 0x84, 0xc1, 0x2c, 0x51, 0xea, 0xd2, 0x64,
- 0xd3, 0xab, 0xa2, 0x5c, 0x94, 0x97, 0xb9, 0x34, 0x08, 0x4d, 0xbe, 0xcb,
- 0x26, 0x6f, 0x5e, 0x7d, 0x4b, 0xfa, 0x04, 0x79, 0x9c, 0xce, 0xce, 0x4f,
- 0xcf, 0xde, 0x1e, 0xbf, 0x7f, 0x33, 0x48, 0x5e, 0x9f, 0x9e, 0xfd, 0x65,
- 0x90, 0xbc, 0x3b, 0xfd, 0xf6, 0x28, 0x92, 0xe2, 0x4c, 0x08, 0xb7, 0x01,
- 0xc5, 0xd8, 0x56, 0x7d, 0x2c, 0xce, 0xd8, 0xf4, 0x46, 0x5b, 0xf0, 0x8e,
- 0x18, 0xa1, 0x1a, 0x80, 0xba, 0x14, 0x7e, 0x6b, 0xf6, 0x6e, 0x90, 0x7c,
- 0x7d, 0xf4, 0xea, 0xcd, 0x20, 0x00, 0x30, 0x1f, 0xf3, 0xaa, 0x68, 0x75,
- 0x76, 0xc9, 0x80, 0xbd, 0x66, 0xeb, 0x03, 0x3a, 0x02, 0x07, 0xb9, 0xf8,
- 0xca, 0x1a, 0x82, 0x45, 0x91, 0xfe, 0xac, 0x2f, 0x73, 0x42, 0x90, 0xf8,
- 0x7b, 0x5b, 0xf2, 0xb6, 0xca, 0x2e, 0xa0, 0xae, 0xf9, 0x8a, 0xb6, 0xc0,
- 0x35, 0x21, 0xb3, 0x5e, 0xeb, 0xb0, 0xec, 0x71, 0xf7, 0x20, 0x06, 0x0d,
- 0x5a, 0x48, 0x01, 0x60, 0x47, 0xec, 0x7a, 0x4c, 0xa5, 0xa3, 0x21, 0x7a,
- 0x16, 0x19, 0x33, 0x89, 0xb4, 0xea, 0xb9, 0x43, 0x89, 0x8d, 0x6b, 0xd8,
- 0xaa, 0x22, 0x94, 0x0a, 0xa6, 0x2e, 0xc0, 0x4d, 0xb4, 0x7d, 0xba, 0x45,
- 0x03, 0xed, 0x18, 0xf3, 0x3d, 0xff, 0x58, 0x65, 0x6c, 0x50, 0x69, 0x3d,
- 0x37, 0x84, 0x99, 0x71, 0xca, 0x14, 0xce, 0xc8, 0xb9, 0x05, 0x92, 0xe1,
- 0xb1, 0x3a, 0x25, 0x36, 0x29, 0x58, 0x72, 0x59, 0xc4, 0x31, 0x03, 0xa0,
- 0x28, 0x75, 0x58, 0xb5, 0x79, 0x84, 0x6b, 0xa8, 0xcb, 0xf7, 0x6e, 0x1e,
- 0xf0, 0x35, 0xd2, 0xf7, 0xed, 0x19, 0x0f, 0x04, 0xe8, 0xc2, 0xd6, 0x4f,
- 0xf8, 0xfb, 0x82, 0xec, 0xdb, 0xb6, 0x3f, 0xcb, 0x48, 0xd8, 0x40, 0xb8,
- 0xd0, 0x63, 0x86, 0x93, 0x14, 0xe2, 0x10, 0xa5, 0xc0, 0xdb, 0x90, 0x2d,
- 0x69, 0x3f, 0xe7, 0x57, 0xd9, 0xa7, 0xaa, 0xa6, 0x3a, 0x85, 0x78, 0x0b,
- 0xf9, 0x56, 0x0b, 0x66, 0x7b, 0xf0, 0x8f, 0xf6, 0x6f, 0x9d, 0x8f, 0x9d,
- 0x74, 0x89, 0x3a, 0x19, 0x0a, 0xde, 0x37, 0x8a, 0xf7, 0x82, 0xad, 0xdb,
- 0x79, 0xdb, 0xc3, 0x18, 0x7d, 0xaf, 0xad, 0xad, 0xe8, 0xb7, 0xd9, 0xe6,
- 0x27, 0xc7, 0xe6, 0x3a, 0x44, 0xa0, 0x71, 0x66, 0x25, 0x1a, 0x0d, 0x23,
- 0xcd, 0x20, 0x57, 0x51, 0x42, 0x63, 0x85, 0x1f, 0xa6, 0xce, 0xdb, 0xd1,
- 0x2f, 0xa3, 0x25, 0xf7, 0x3d, 0x9f, 0x0e, 0xce, 0xec, 0xfc, 0xe8, 0xe2,
- 0x7c, 0x94, 0xec, 0xf8, 0x98, 0xaf, 0x4f, 0x47, 0xfb, 0x61, 0xd0, 0x86,
- 0x9a, 0x7e, 0xef, 0x26, 0xde, 0x67, 0xdd, 0x77, 0xd1, 0x0f, 0x7c, 0xf3,
- 0x77, 0xc3, 0x3c, 0x62, 0x0f, 0xe9, 0x69, 0x3f, 0xf6, 0x3d, 0xbf, 0xb5,
- 0x78, 0x6b, 0x95, 0xf4, 0x8b, 0x0d, 0x5f, 0xfb, 0xfa, 0xe8, 0xe4, 0x2c,
- 0x5c, 0xe5, 0xb7, 0xe7, 0x6f, 0xff, 0xd2, 0x5e, 0xe5, 0xa3, 0xc7, 0x91,
- 0xaf, 0xfe, 0x92, 0x0e, 0xf5, 0xac, 0x2e, 0x17, 0x46, 0x5f, 0x41, 0x15,
- 0x07, 0x8a, 0x38, 0x5e, 0x18, 0x01, 0x40, 0xb9, 0xe6, 0x7f, 0x1d, 0xc8,
- 0x5f, 0x7e, 0x1c, 0x8d, 0x46, 0x7f, 0x0a, 0x51, 0xd1, 0xe1, 0xa3, 0x71,
- 0xeb, 0x95, 0x87, 0xbb, 0x26, 0x38, 0xaa, 0x66, 0x50, 0x26, 0x44, 0x91,
- 0x8b, 0x55, 0x9a, 0x57, 0x54, 0xf2, 0x18, 0x13, 0xb8, 0xb4, 0x22, 0x57,
- 0xe8, 0x65, 0xb5, 0x39, 0x01, 0x04, 0xe3, 0xcb, 0xba, 0x53, 0xef, 0x4a,
- 0x55, 0xb5, 0x57, 0x4f, 0x92, 0xce, 0x02, 0x47, 0x08, 0x37, 0x47, 0xc1,
- 0x67, 0x2b, 0x72, 0xd0, 0xb2, 0xa2, 0xe9, 0x04, 0x6d, 0xa1, 0xc2, 0x43,
- 0x96, 0x3f, 0xb3, 0xd3, 0x8f, 0x79, 0x2f, 0xb8, 0x4e, 0xf2, 0xb5, 0x44,
- 0xd4, 0x61, 0x7f, 0x41, 0xa2, 0xa0, 0xcf, 0x6c, 0xd6, 0x4c, 0xf7, 0x68,
- 0x91, 0x75, 0xd0, 0x0b, 0x89, 0x95, 0xb8, 0xd0, 0x89, 0x24, 0x58, 0x2b,
- 0x5e, 0x09, 0x2d, 0x67, 0xb7, 0x78, 0x35, 0x09, 0xae, 0x8a, 0xd7, 0xd3,
- 0xd5, 0xd5, 0x39, 0x12, 0xeb, 0xe1, 0xa2, 0xdb, 0x6d, 0x2b, 0x47, 0x80,
- 0x9e, 0x56, 0xd6, 0x4d, 0xeb, 0xe0, 0xe9, 0x6d, 0xb2, 0x01, 0x9b, 0x44,
- 0x0b, 0xd5, 0x42, 0xb5, 0x1f, 0xdc, 0x59, 0x29, 0x89, 0xf2, 0x28, 0x80,
- 0x3e, 0x3e, 0x6f, 0xf9, 0x5c, 0xd4, 0x43, 0xe7, 0x9f, 0x39, 0xa6, 0x11,
- 0xfa, 0x35, 0x30, 0x07, 0x46, 0x12, 0x57, 0x03, 0x9e, 0x16, 0x1a, 0xca,
- 0xc3, 0x3f, 0xb7, 0xaa, 0xcc, 0xb7, 0xff, 0x7d, 0x9b, 0x54, 0x61, 0xbc,
- 0x1d, 0xad, 0x6d, 0x57, 0xba, 0x25, 0xc3, 0x06, 0x8f, 0x45, 0xf4, 0x06,
- 0xb7, 0x2b, 0x4a, 0x7b, 0x36, 0x5d, 0xca, 0x52, 0x8f, 0x2c, 0x61, 0x94,
- 0x7c, 0x97, 0x2f, 0x66, 0xd3, 0xb4, 0x42, 0x7a, 0x58, 0x28, 0x5e, 0x85,
- 0x4a, 0x70, 0x9d, 0xea, 0x12, 0x5f, 0x75, 0x77, 0x47, 0x7b, 0xc9, 0xc4,
- 0x69, 0x3e, 0x56, 0xf4, 0x63, 0xcf, 0x83, 0x82, 0xdf, 0x3d, 0x4d, 0xbb,
- 0x84, 0x7e, 0x74, 0x8f, 0x49, 0xda, 0xb5, 0x5b, 0x78, 0xb4, 0x8f, 0x56,
- 0xe3, 0x10, 0xc3, 0xc7, 0x61, 0x2c, 0x25, 0x5f, 0x5d, 0x3f, 0x86, 0xfb,
- 0xea, 0xe9, 0x80, 0xff, 0xf5, 0x94, 0xc1, 0x21, 0x1b, 0x2b, 0xdc, 0xb1,
- 0xad, 0x6c, 0xc6, 0xb0, 0xd6, 0x7f, 0x7c, 0xa6, 0x15, 0xae, 0x5d, 0x9e,
- 0x38, 0x96, 0x28, 0xa4, 0xe0, 0x23, 0x98, 0x59, 0xaa, 0x01, 0x63, 0xde,
- 0xd1, 0xd9, 0xd2, 0x96, 0x18, 0xfe, 0xf5, 0xd7, 0x49, 0x45, 0xb0, 0x23,
- 0x4d, 0xfd, 0xe3, 0xa6, 0x7a, 0x62, 0xa3, 0xf3, 0x3f, 0x1b, 0x85, 0x75,
- 0x5b, 0x63, 0x1f, 0xfa, 0xdc, 0x7d, 0xc9, 0xe6, 0xfb, 0xba, 0xcf, 0x51,
- 0x86, 0x3f, 0xc2, 0x76, 0x94, 0xf5, 0xb3, 0xf9, 0x43, 0xcf, 0x37, 0x7c,
- 0x68, 0x0e, 0x60, 0x23, 0x3a, 0x53, 0x6b, 0x00, 0xdc, 0x28, 0x55, 0xf8,
- 0x35, 0xca, 0x66, 0x9c, 0xa7, 0x8f, 0x47, 0xfb, 0x0f, 0xcf, 0x50, 0x76,
- 0xd6, 0x37, 0x79, 0xf6, 0x66, 0xf2, 0x13, 0x90, 0x89, 0xa4, 0x88, 0x95,
- 0x7d, 0x34, 0xb7, 0xb1, 0x33, 0x06, 0xc1, 0xe6, 0xb4, 0x78, 0xb9, 0x59,
- 0x3f, 0x4a, 0x84, 0x2a, 0x63, 0x1c, 0xd6, 0xc1, 0x0e, 0x1c, 0x7b, 0xda,
- 0xbd, 0xde, 0x04, 0x3e, 0x6d, 0x4a, 0x1d, 0xc1, 0x8f, 0x09, 0x7f, 0x41,
- 0xf9, 0xdc, 0x11, 0xd5, 0x31, 0x9d, 0x1f, 0xbd, 0xfd, 0x30, 0x3e, 0x7a,
- 0x03, 0xb8, 0xcd, 0x58, 0x3f, 0xa5, 0x9c, 0x6e, 0x34, 0x47, 0x26, 0x9a,
- 0x92, 0x95, 0x4a, 0x99, 0x48, 0xbb, 0xe1, 0x20, 0xf7, 0xc8, 0x84, 0x42,
- 0xd6, 0x94, 0xc6, 0x30, 0x0e, 0xeb, 0x4e, 0x58, 0x95, 0x93, 0x77, 0x7f,
- 0x02, 0xee, 0x08, 0xaf, 0x7a, 0x96, 0x51, 0x73, 0xae, 0x97, 0x9c, 0x05,
- 0x13, 0x80, 0xaa, 0xbd, 0xf3, 0xb2, 0xd8, 0xeb, 0x45, 0x96, 0xad, 0x34,
- 0xe8, 0x9f, 0x2e, 0xcb, 0x75, 0xc1, 0x9e, 0x51, 0x73, 0x3e, 0xea, 0x0f,
- 0x84, 0xf7, 0x19, 0xe3, 0xb2, 0xfa, 0x96, 0xf6, 0x74, 0x92, 0x82, 0xd3,
- 0x87, 0xf2, 0xd5, 0x1d, 0x60, 0x40, 0x77, 0x53, 0x76, 0xf2, 0xc6, 0xaa,
- 0xf5, 0x0a, 0x3f, 0x1e, 0x74, 0xd5, 0x63, 0x38, 0x72, 0x42, 0xe8, 0x31,
- 0x86, 0x11, 0x63, 0x55, 0x92, 0x96, 0x7a, 0x59, 0x56, 0x66, 0xd0, 0xa5,
- 0x2d, 0x56, 0x64, 0x44, 0x87, 0x7a, 0xb7, 0xdb, 0xca, 0xb1, 0x6b, 0xb6,
- 0x93, 0x2d, 0x81, 0x08, 0x78, 0xc6, 0xf5, 0xdb, 0xc4, 0x15, 0x78, 0x9b,
- 0xe0, 0x31, 0xa1, 0xe8, 0x20, 0x8b, 0xb4, 0xb1, 0x54, 0x5d, 0x63, 0x2f,
- 0x78, 0x07, 0x43, 0x73, 0x93, 0xba, 0x8e, 0x74, 0x9d, 0x39, 0xaa, 0xba,
- 0x6b, 0x34, 0x40, 0xa7, 0x4e, 0x33, 0xff, 0x2d, 0xbb, 0xb9, 0x1d, 0x1c,
- 0xc6, 0x6e, 0xc0, 0x32, 0xbd, 0x85, 0x8b, 0xaa, 0x97, 0x1c, 0xc4, 0x61,
- 0x4b, 0x1b, 0x42, 0xcf, 0x55, 0xcc, 0xf3, 0xc1, 0x61, 0x5d, 0xe9, 0x0b,
- 0x27, 0x26, 0xd9, 0xa3, 0x16, 0xff, 0x15, 0x19, 0xde, 0x61, 0xe8, 0x11,
- 0x50, 0x59, 0x32, 0x67, 0x78, 0x09, 0x53, 0x5a, 0x24, 0xd9, 0x6f, 0x3b,
- 0xdc, 0x58, 0x0a, 0x1f, 0xdb, 0xa5, 0x1f, 0x2f, 0x4a, 0x8a, 0x51, 0x2a,
- 0x31, 0xe0, 0xf3, 0x21, 0x64, 0x1f, 0x99, 0x09, 0x15, 0x51, 0x21, 0x32,
- 0xf0, 0x6c, 0xe2, 0x0d, 0x9a, 0xd9, 0xa0, 0x58, 0x8c, 0xf0, 0xcb, 0xd8,
- 0x05, 0x36, 0xb7, 0x3e, 0xb4, 0x4a, 0xde, 0x0c, 0x72, 0x58, 0x75, 0x9c,
- 0x8c, 0x07, 0x18, 0xb4, 0x61, 0x95, 0x65, 0xda, 0xa8, 0xcd, 0x84, 0x9f,
- 0x80, 0x7b, 0xa9, 0x69, 0x8d, 0x7c, 0x44, 0x55, 0x63, 0xb0, 0x01, 0x72,
- 0x35, 0xa2, 0xb6, 0x89, 0x56, 0x04, 0x43, 0x33, 0x2d, 0xfc, 0xc9, 0xe2,
- 0x04, 0xcc, 0x20, 0x79, 0x39, 0x43, 0x55, 0x14, 0x77, 0xe2, 0xe9, 0x81,
- 0x8f, 0x91, 0xd9, 0x6c, 0x93, 0xab, 0xf2, 0x36, 0x5f, 0xae, 0x97, 0x78,
- 0x7d, 0xc0, 0x06, 0xd8, 0x92, 0xa4, 0x96, 0x1e, 0x2a, 0xb2, 0x0b, 0x6d,
- 0xdb, 0xaf, 0x98, 0x33, 0x83, 0x58, 0x1b, 0x88, 0xb6, 0xe1, 0x94, 0x1f,
- 0x7a, 0x8b, 0x5b, 0x6c, 0xe0, 0xa0, 0xfe, 0xa7, 0xd3, 0x67, 0xf2, 0xd2,
- 0x28, 0x74, 0x7f, 0x8a, 0x44, 0xa3, 0x53, 0x9f, 0xa7, 0x0a, 0xff, 0x00,
- 0x65, 0x52, 0xaa, 0x73, 0x36, 0xf3, 0x4c, 0x49, 0xa6, 0x38, 0xd2, 0xc4,
- 0xf8, 0x90, 0x7a, 0x39, 0xd4, 0xc0, 0x3a, 0xbe, 0x85, 0xdc, 0x69, 0xa1,
- 0xce, 0xf7, 0xcb, 0x42, 0x49, 0x88, 0x9e, 0xce, 0x4d, 0x3a, 0x8f, 0x04,
- 0x32, 0x5f, 0xe1, 0x19, 0x40, 0xb4, 0xf2, 0xbe, 0xf9, 0xfc, 0xbe, 0x24,
- 0xc5, 0x88, 0x7d, 0x4b, 0x1e, 0x73, 0xd9, 0x65, 0x75, 0x63, 0xb5, 0x7b,
- 0x85, 0xd8, 0x70, 0x20, 0xd8, 0x06, 0x31, 0xb2, 0x0e, 0xbb, 0x64, 0xb5,
- 0x94, 0xa1, 0x90, 0x5e, 0x10, 0x3b, 0xe5, 0xb3, 0x1b, 0x70, 0xb2, 0x26,
- 0x32, 0x34, 0x1f, 0xdf, 0xde, 0x06, 0x14, 0xee, 0x19, 0xc4, 0x8c, 0x37,
- 0xc9, 0xd6, 0xf2, 0xe3, 0x7d, 0x94, 0x39, 0x3e, 0xb9, 0xed, 0x18, 0xcd,
- 0xa3, 0x38, 0x38, 0x24, 0xcb, 0x07, 0x62, 0x91, 0x93, 0x92, 0xa3, 0x70,
- 0xbc, 0x69, 0x69, 0x64, 0x3b, 0x99, 0x3b, 0xdc, 0xa4, 0x39, 0x08, 0x22,
- 0x48, 0x6d, 0x40, 0x2e, 0xa6, 0x6d, 0xf6, 0xaa, 0x51, 0x52, 0x34, 0x2d,
- 0x34, 0x9a, 0x3f, 0x6d, 0xa5, 0xee, 0x93, 0xcd, 0x03, 0x98, 0x95, 0x6b,
- 0x40, 0x61, 0x84, 0xdb, 0x45, 0x5f, 0xe1, 0xdd, 0xa7, 0x2b, 0x65, 0xe4,
- 0x55, 0xbe, 0xa0, 0xd7, 0xf8, 0x62, 0xd7, 0xc9, 0x81, 0x39, 0x85, 0xbc,
- 0x58, 0x37, 0x16, 0xae, 0x0f, 0xdf, 0xb4, 0xb0, 0x33, 0x91, 0xdd, 0x5f,
- 0x20, 0xd1, 0x57, 0x2b, 0xe0, 0xe9, 0xf6, 0xd5, 0x5e, 0x74, 0x90, 0x6f,
- 0x09, 0x34, 0x72, 0xdb, 0xd3, 0xd9, 0x97, 0xb2, 0x31, 0x57, 0x91, 0x0d,
- 0xc3, 0x8a, 0x5c, 0xcd, 0x6e, 0xcd, 0x6e, 0x33, 0x8a, 0x92, 0x27, 0xd8,
- 0xac, 0x48, 0x1b, 0x79, 0x5d, 0x28, 0x22, 0x99, 0x3f, 0x2d, 0x26, 0x6e,
- 0x9b, 0x78, 0x81, 0xcf, 0x95, 0x8d, 0x5c, 0x49, 0xdb, 0x7c, 0x8d, 0xb5,
- 0xb6, 0xff, 0xe9, 0x57, 0xbb, 0x4e, 0xeb, 0xc5, 0x30, 0xef, 0xf2, 0xf2,
- 0x23, 0xe4, 0x12, 0xda, 0x5c, 0x20, 0x4b, 0x85, 0x66, 0x88, 0xf1, 0xab,
- 0xf1, 0x49, 0x07, 0xcb, 0x6b, 0x23, 0xd0, 0xf4, 0x41, 0x5b, 0xed, 0x79,
- 0x20, 0x1a, 0xe6, 0x4f, 0x06, 0xc3, 0x64, 0x74, 0xe2, 0xbe, 0x06, 0x7f,
- 0xf5, 0x0b, 0x7c, 0xdc, 0x61, 0xee, 0x06, 0x53, 0x61, 0xfc, 0x22, 0xd4,
- 0x6c, 0x70, 0x27, 0x46, 0x36, 0xa0, 0x23, 0x18, 0x47, 0xb3, 0x3d, 0x49,
- 0x01, 0xba, 0x2f, 0x92, 0xce, 0x10, 0x9b, 0xba, 0xf2, 0x31, 0x49, 0x03,
- 0xea, 0x54, 0x3a, 0x8c, 0xc1, 0xf5, 0xd8, 0xa4, 0x40, 0xd1, 0x27, 0x6b,
- 0x3c, 0x4d, 0x09, 0x41, 0xec, 0x1d, 0xf5, 0xf8, 0x15, 0x8d, 0xe1, 0xf2,
- 0x6a, 0x08, 0xe8, 0x3d, 0x84, 0x85, 0xe7, 0x70, 0xeb, 0x9c, 0x9b, 0x41,
- 0xea, 0x0c, 0xbc, 0x31, 0xbb, 0x7c, 0x32, 0xe7, 0x5e, 0x01, 0x55, 0xf2,
- 0xf7, 0x75, 0x9e, 0x35, 0x28, 0xba, 0x1a, 0x25, 0x6f, 0x38, 0x2d, 0x4c,
- 0x3a, 0x2a, 0x72, 0xe7, 0x56, 0xb4, 0x77, 0xe5, 0x52, 0x67, 0xfe, 0x3e,
- 0x4d, 0x20, 0xb0, 0x00, 0xcc, 0x84, 0x50, 0xcd, 0xf7, 0x0e, 0xb3, 0x4e,
- 0x5e, 0xd3, 0xb4, 0x97, 0xe6, 0xa6, 0x03, 0x6b, 0xc6, 0x43, 0x11, 0xd3,
- 0xbc, 0x01, 0xcd, 0xe4, 0x47, 0xb2, 0x6a, 0xfd, 0x29, 0xcc, 0xd5, 0x1f,
- 0xb4, 0x3a, 0x52, 0xc1, 0x66, 0x14, 0x43, 0xa0, 0xa1, 0x76, 0x66, 0x45,
- 0xba, 0xd8, 0xab, 0x9b, 0x19, 0x71, 0xbf, 0x75, 0xb1, 0xa0, 0x79, 0xd2,
- 0x48, 0x3d, 0xfd, 0x11, 0x23, 0x78, 0x3b, 0xc0, 0xfb, 0xa0, 0x13, 0x6a,
- 0x1d, 0x91, 0xc4, 0xf0, 0xfb, 0x22, 0xbd, 0x5e, 0x16, 0x47, 0x08, 0xfe,
- 0xe3, 0xef, 0x16, 0xb9, 0x11, 0x78, 0xbd, 0xd8, 0xcb, 0xd6, 0xb9, 0x6d,
- 0x82, 0x42, 0xb8, 0xa6, 0xf3, 0x32, 0x84, 0x36, 0x29, 0x6b, 0x05, 0x89,
- 0x36, 0x8b, 0x34, 0xaf, 0xb7, 0xee, 0x13, 0xa0, 0xb6, 0xee, 0x45, 0x33,
- 0x89, 0xb4, 0x19, 0x7f, 0x7c, 0x2f, 0x8c, 0x09, 0xbf, 0x11, 0x36, 0xd3,
- 0xfe, 0xc9, 0x40, 0x26, 0x71, 0xa4, 0x26, 0x32, 0x26, 0x6d, 0xf2, 0xa3,
- 0x64, 0x35, 0xb5, 0x50, 0x3d, 0x38, 0xe6, 0x7b, 0x17, 0x69, 0x45, 0x68,
- 0x88, 0x69, 0x2d, 0x18, 0x08, 0xd3, 0x85, 0x61, 0xf6, 0x11, 0x83, 0x53,
- 0x7b, 0x50, 0x12, 0xdc, 0xd7, 0xa0, 0xcb, 0x4e, 0xeb, 0x35, 0x69, 0x20,
- 0x8b, 0x35, 0x7d, 0x99, 0x91, 0xb2, 0x2c, 0x52, 0x93, 0x96, 0x6e, 0x47,
- 0xd1, 0xcd, 0x2c, 0x1e, 0x0a, 0xdd, 0x51, 0x0f, 0xe8, 0x4d, 0xb1, 0x4b,
- 0x2d, 0x06, 0x5a, 0x17, 0x2c, 0x6c, 0xd4, 0x33, 0x3b, 0xb2, 0x0a, 0x07,
- 0x7e, 0xeb, 0x78, 0xdf, 0x00, 0xa7, 0x62, 0x16, 0x9d, 0x4e, 0xbb, 0x1d,
- 0x7b, 0x0c, 0xbd, 0xca, 0x86, 0x86, 0x5b, 0x33, 0x53, 0xd9, 0xa1, 0x95,
- 0xd2, 0x48, 0x30, 0xf7, 0xd1, 0xce, 0xd0, 0x22, 0x3e, 0x88, 0x7b, 0x3c,
- 0xa4, 0x5f, 0x7c, 0x6f, 0x87, 0xf8, 0x10, 0x89, 0x24, 0xd6, 0x31, 0xde,
- 0x8f, 0x0f, 0x94, 0x2d, 0xb8, 0xdd, 0xdf, 0x54, 0x1e, 0x3e, 0x69, 0x37,
- 0x0e, 0x13, 0xe8, 0xba, 0x9f, 0x75, 0xa1, 0xd2, 0x87, 0xdd, 0xa8, 0x9e,
- 0xaa, 0x82, 0xff, 0x3b, 0x6f, 0x54, 0x9a, 0x3c, 0xec, 0x4e, 0xa5, 0xdd,
- 0x4b, 0x15, 0xb2, 0xa5, 0xdb, 0xde, 0x19, 0xff, 0x82, 0xb7, 0x8c, 0xaf,
- 0xd9, 0x4f, 0xba, 0x67, 0x4a, 0x14, 0xff, 0x37, 0xdf, 0xb2, 0xcf, 0x3b,
- 0x5a, 0x20, 0x70, 0x20, 0x1f, 0xd8, 0x9f, 0x8f, 0x92, 0xc1, 0x49, 0xd7,
- 0xda, 0xb3, 0x90, 0x6d, 0xf1, 0x06, 0x0f, 0x0c, 0x31, 0x14, 0x0b, 0xd1,
- 0x94, 0x7a, 0xb2, 0x4f, 0x2c, 0xcf, 0xd3, 0xf2, 0xea, 0x8d, 0x03, 0x87,
- 0x4e, 0x2a, 0x05, 0xc2, 0x45, 0x2e, 0xab, 0x6d, 0xe9, 0x98, 0x48, 0xb3,
- 0x08, 0x59, 0xd6, 0xa5, 0x11, 0xed, 0xab, 0x3c, 0xe1, 0x8e, 0xd4, 0x86,
- 0x00, 0xbf, 0x1a, 0x8f, 0x87, 0xaf, 0xce, 0x8e, 0xcd, 0xe8, 0xc3, 0x90,
- 0xa2, 0x3c, 0x44, 0xdc, 0xd2, 0x9f, 0x64, 0xcc, 0x2e, 0xe8, 0x4f, 0x37,
- 0x69, 0x7f, 0xda, 0x28, 0xba, 0xdd, 0x6d, 0x7d, 0x55, 0xb7, 0x92, 0x29,
- 0x75, 0x4a, 0xb6, 0xb1, 0x00, 0x29, 0xdb, 0x8a, 0x2d, 0x8b, 0x78, 0x31,
- 0xd9, 0xa4, 0xc4, 0x65, 0xf8, 0x89, 0x20, 0xf7, 0x14, 0x48, 0x22, 0x00,
- 0x01, 0x49, 0x0e, 0x9e, 0x3f, 0x3d, 0x30, 0xd7, 0xe2, 0x8e, 0x01, 0xee,
- 0xe4, 0xfd, 0xc7, 0xa3, 0x47, 0x7b, 0x8f, 0x47, 0x8f, 0x89, 0xab, 0xb9,
- 0xa8, 0x90, 0x8c, 0x6f, 0xb8, 0x5d, 0x24, 0xfb, 0x82, 0xa6, 0xf5, 0xfe,
- 0xe8, 0x75, 0xc2, 0x09, 0x7a, 0x80, 0x3b, 0x4b, 0x50, 0x2b, 0x44, 0x75,
- 0x47, 0x72, 0x1e, 0x48, 0x12, 0x20, 0x46, 0x3a, 0x52, 0x77, 0x18, 0x13,
- 0x6b, 0x60, 0x8c, 0x05, 0xdb, 0x91, 0xa8, 0x2d, 0x81, 0x02, 0xfc, 0xc2,
- 0xce, 0x84, 0xf8, 0x1d, 0x9b, 0x15, 0xb2, 0x33, 0xab, 0x48, 0xbb, 0x72,
- 0x7f, 0x4f, 0xbc, 0x1d, 0xbb, 0x27, 0x8d, 0xf6, 0x71, 0xff, 0xf9, 0xa8,
- 0xf9, 0xd2, 0x63, 0x00, 0x39, 0x0f, 0x65, 0x60, 0xe7, 0x08, 0x3f, 0xd4,
- 0xf4, 0x42, 0xf2, 0xb3, 0x4c, 0x97, 0xd6, 0x24, 0x99, 0xff, 0x7d, 0x56,
- 0x8c, 0x7e, 0xaa, 0x3d, 0x15, 0x51, 0x88, 0xdb, 0x66, 0x13, 0xcf, 0x5d,
- 0x18, 0xb5, 0x98, 0x4b, 0x7d, 0x2b, 0x62, 0x13, 0xa9, 0xeb, 0x09, 0x00,
- 0x01, 0xd0, 0x5d, 0x66, 0x03, 0xca, 0x1b, 0xc8, 0x8e, 0xbe, 0x69, 0xf0,
- 0x48, 0x09, 0x86, 0xfb, 0xd6, 0x5e, 0x95, 0xa5, 0x0b, 0x79, 0x51, 0x4c,
- 0x37, 0x20, 0xa3, 0x06, 0xbf, 0x9c, 0xa3, 0x8d, 0x56, 0x1d, 0x00, 0x51,
- 0x31, 0x92, 0xb3, 0x85, 0x81, 0xe3, 0xa7, 0x6d, 0x3a, 0x8a, 0xd7, 0xb0,
- 0xa2, 0x32, 0xe2, 0x24, 0x5f, 0xa5, 0x8b, 0xe4, 0x01, 0x39, 0xd4, 0xfd,
- 0x87, 0x7f, 0x2f, 0xbf, 0x73, 0xec, 0x22, 0xe4, 0x72, 0xb6, 0x60, 0x59,
- 0x13, 0xe5, 0xba, 0x52, 0x55, 0x38, 0x48, 0x8b, 0xcf, 0xf5, 0x0c, 0x48,
- 0x49, 0xbd, 0xc2, 0xce, 0x1c, 0xda, 0x4d, 0x37, 0x51, 0x20, 0x9f, 0x5b,
- 0xe4, 0xb7, 0x69, 0xb9, 0x5c, 0xb9, 0x98, 0x81, 0x0e, 0x2a, 0xd5, 0x7d,
- 0xd4, 0x6e, 0x9e, 0xcd, 0xa8, 0x4d, 0xcc, 0xdd, 0xb2, 0xc4, 0x7b, 0x59,
- 0xef, 0x2f, 0xc1, 0x0c, 0x49, 0x85, 0x63, 0x3f, 0xc3, 0x4f, 0xc5, 0x7a,
- 0xf4, 0x85, 0x45, 0xb2, 0x83, 0x80, 0xb7, 0xad, 0xd6, 0xa2, 0x1f, 0x69,
- 0x08, 0x35, 0xf4, 0x52, 0xd9, 0xe8, 0xd8, 0xee, 0xe8, 0x21, 0xa0, 0xb8,
- 0x03, 0xc1, 0xbf, 0xb5, 0x90, 0xb7, 0x01, 0x9f, 0xfd, 0xbf, 0x42, 0x0d,
- 0x7c, 0x92, 0xd8, 0xb3, 0x7a, 0x88, 0x36, 0xc8, 0x08, 0xd2, 0xdc, 0x57,
- 0x39, 0x80, 0xf8, 0x72, 0x26, 0xd7, 0xff, 0xaf, 0x0d, 0xfe, 0xef, 0xa4,
- 0x0d, 0xfe, 0xe4, 0x5b, 0xda, 0xba, 0xa4, 0x43, 0xc9, 0xe0, 0xb4, 0xf7,
- 0xd2, 0xdd, 0xc4, 0x78, 0x62, 0xf5, 0xe2, 0xee, 0x81, 0x17, 0xb4, 0x7b,
- 0x43, 0x93, 0x90, 0x14, 0xfe, 0xef, 0xb8, 0xa2, 0x0f, 0xba, 0x99, 0xff,
- 0xbf, 0xef, 0xe3, 0x7f, 0xb5, 0x7b, 0xd8, 0xaf, 0x0d, 0xee, 0x18, 0x22,
- 0xbb, 0xa1, 0xec, 0x24, 0xee, 0xe9, 0x04, 0x3b, 0x7b, 0xd7, 0x69, 0x3e,
- 0x54, 0x77, 0xc4, 0x7b, 0x77, 0x7c, 0xf6, 0xed, 0x53, 0x46, 0x1a, 0x19,
- 0x77, 0x83, 0xf6, 0x55, 0x72, 0xf2, 0xe6, 0xd5, 0xd9, 0x4f, 0xb8, 0xed,
- 0x7f, 0x81, 0x17, 0x7a, 0x95, 0x65, 0xb3, 0x21, 0xc7, 0x47, 0x5e, 0xe2,
- 0x1f, 0x91, 0xc0, 0x62, 0x6a, 0x91, 0x04, 0x40, 0xb6, 0x14, 0x36, 0x09,
- 0xc3, 0xb5, 0x78, 0xd9, 0xa8, 0x29, 0x85, 0x60, 0x7b, 0xac, 0xd0, 0xfa,
- 0x2c, 0xf0, 0xb1, 0x94, 0xc5, 0x6c, 0x97, 0x0b, 0x9a, 0xf0, 0x65, 0x90,
- 0x8a, 0x44, 0xd9, 0xe9, 0x7e, 0x5f, 0x12, 0xfa, 0x97, 0x05, 0x48, 0xf4,
- 0x9e, 0x51, 0xc4, 0xdb, 0x68, 0xd2, 0xc7, 0x9d, 0x5b, 0x0a, 0x87, 0x76,
- 0x18, 0xa5, 0xeb, 0xd1, 0x3e, 0xf9, 0xdf, 0xc1, 0x45, 0xb2, 0xe6, 0x57,
- 0x44, 0x15, 0xe8, 0x7e, 0xbe, 0x2f, 0x6d, 0x60, 0xe3, 0x56, 0xfa, 0x27,
- 0xd1, 0xda, 0x41, 0x8a, 0x04, 0xce, 0xd6, 0x55, 0xd8, 0x2d, 0x31, 0xf5,
- 0xf7, 0x87, 0x03, 0xe5, 0x3c, 0x5f, 0xfb, 0x89, 0xf6, 0x6e, 0x9a, 0xcf,
- 0x7b, 0x2f, 0x04, 0x16, 0xb5, 0xad, 0xbd, 0xf1, 0x5b, 0xdc, 0xfb, 0xb3,
- 0x72, 0x99, 0xd1, 0x07, 0xea, 0xdd, 0x77, 0x29, 0xd4, 0x7f, 0x09, 0xb3,
- 0xc6, 0xbc, 0x77, 0x37, 0xa7, 0x3a, 0x95, 0x45, 0x53, 0x51, 0x2b, 0x05,
- 0x8d, 0x92, 0x2a, 0xa2, 0xb6, 0xe1, 0x8b, 0x7e, 0x8d, 0x73, 0x8a, 0x8c,
- 0xe8, 0x04, 0xbb, 0x16, 0xb6, 0x15, 0xe4, 0xfb, 0x9d, 0x64, 0xcd, 0x74,
- 0xe4, 0xce, 0x16, 0x50, 0x6d, 0xe6, 0x97, 0x53, 0xa3, 0xe4, 0x6a, 0xef,
- 0xdd, 0x41, 0xc2, 0x81, 0x6c, 0x32, 0x79, 0x7a, 0x7c, 0x15, 0x1a, 0xf1,
- 0xff, 0xf5, 0xdb, 0x50, 0x6d, 0xee, 0xf3, 0x16, 0x96, 0xca, 0xab, 0x79,
- 0x62, 0xd9, 0x42, 0x6a, 0xd8, 0x19, 0x2a, 0xcc, 0xd1, 0x0c, 0x36, 0x6f,
- 0xee, 0x08, 0x6d, 0xe1, 0x46, 0x92, 0xfd, 0xbb, 0xfc, 0x7e, 0x7c, 0xf2,
- 0x88, 0x33, 0x1b, 0x2f, 0x4e, 0xc6, 0x3e, 0x4e, 0x78, 0x8d, 0xfe, 0xc0,
- 0xa8, 0xf4, 0xfa, 0xf3, 0xd1, 0xab, 0xf1, 0xc5, 0x28, 0xb2, 0xc6, 0x30,
- 0x31, 0xc4, 0x15, 0x7e, 0x12, 0x80, 0xd3, 0x22, 0xbd, 0x23, 0x94, 0x40,
- 0xa9, 0x1f, 0xa3, 0xb9, 0xf1, 0xd4, 0x74, 0x6c, 0x32, 0x73, 0xb9, 0x53,
- 0x06, 0x52, 0x8b, 0xc2, 0xd4, 0x0b, 0xb3, 0x77, 0x93, 0x7c, 0x41, 0x2b,
- 0x30, 0xd3, 0x32, 0xc6, 0xd0, 0x52, 0x92, 0xc3, 0x51, 0x8d, 0x5c, 0x2e,
- 0x28, 0xa3, 0x8c, 0xbe, 0xd3, 0xf6, 0x44, 0x50, 0xe2, 0xa5, 0x94, 0x68,
- 0xf7, 0x17, 0x5c, 0x1a, 0xbd, 0xa3, 0xa4, 0x36, 0x37, 0x76, 0xae, 0xba,
- 0x57, 0x5c, 0x0d, 0xe6, 0x35, 0x26, 0xa3, 0x4e, 0xdc, 0x04, 0x56, 0x11,
- 0xa6, 0xb5, 0xa6, 0xf5, 0x27, 0xcd, 0xec, 0x47, 0xfb, 0x44, 0x4a, 0x9e,
- 0xd9, 0x98, 0x5b, 0xd7, 0xb5, 0x84, 0xcc, 0x41, 0xa3, 0xf6, 0x97, 0xaa,
- 0x40, 0x82, 0x24, 0x70, 0x72, 0x00, 0x14, 0xd9, 0x62, 0x77, 0xc3, 0x89,
- 0x6b, 0x80, 0xdc, 0x6f, 0xef, 0x48, 0xa3, 0xc5, 0x7b, 0x4a, 0x25, 0xd3,
- 0xab, 0xcc, 0x48, 0x91, 0x91, 0x57, 0xc1, 0xfe, 0xe0, 0x0d, 0xf9, 0x2c,
- 0x80, 0x39, 0x8b, 0x6c, 0xcf, 0x4f, 0xde, 0x90, 0xc7, 0x8f, 0xc3, 0x0d,
- 0xa9, 0xb2, 0xbf, 0xcf, 0x62, 0x98, 0xcf, 0xc8, 0xb4, 0x47, 0x9a, 0x3f,
- 0xa7, 0xc7, 0x9f, 0x33, 0x70, 0x35, 0x4d, 0x75, 0x8f, 0x5a, 0xb7, 0x68,
- 0xbe, 0xb0, 0x03, 0x0d, 0x23, 0x03, 0x9b, 0x02, 0x90, 0x61, 0xdb, 0x69,
- 0x45, 0x17, 0xf4, 0xfa, 0x0c, 0xe6, 0x71, 0xd8, 0x03, 0xc9, 0xe2, 0x94,
- 0x8f, 0x6c, 0x64, 0x59, 0x94, 0xcd, 0x89, 0x06, 0x20, 0x54, 0x4b, 0x67,
- 0xef, 0xce, 0x70, 0x38, 0x6f, 0x56, 0x76, 0x61, 0x1b, 0xa9, 0x63, 0x3f,
- 0xd8, 0x8c, 0x9e, 0xa5, 0x5f, 0x54, 0xda, 0x08, 0x65, 0xf3, 0xea, 0xc3,
- 0xac, 0x32, 0xea, 0x2e, 0xa2, 0x1d, 0xab, 0x01, 0xd0, 0x24, 0xed, 0xa2,
- 0x1f, 0xba, 0x11, 0x21, 0xf3, 0xc0, 0xb6, 0xb4, 0x3a, 0xe8, 0xea, 0x7a,
- 0x85, 0x85, 0x6b, 0x70, 0x54, 0x76, 0x00, 0x33, 0x95, 0xc4, 0xed, 0xe0,
- 0xb6, 0x17, 0x54, 0x3e, 0x78, 0x9d, 0x2d, 0x50, 0x56, 0x95, 0x15, 0xd3,
- 0xea, 0x6e, 0xe5, 0x83, 0x94, 0xcf, 0xee, 0xd1, 0xe0, 0xef, 0x39, 0x81,
- 0x56, 0x0d, 0xc4, 0x81, 0xe1, 0x75, 0xbb, 0xa1, 0xfe, 0x95, 0x2a, 0x83,
- 0x67, 0xe3, 0x04, 0x8a, 0x77, 0xe3, 0xa7, 0x44, 0x93, 0x21, 0xa3, 0x8c,
- 0x9b, 0x71, 0x02, 0x05, 0x99, 0x2d, 0x99, 0x87, 0x0e, 0x64, 0xda, 0x5a,
- 0x9b, 0xf1, 0xfc, 0xe0, 0x93, 0x3f, 0x1c, 0xf0, 0x7e, 0x5d, 0x1f, 0x06,
- 0x3c, 0x61, 0x7c, 0xb2, 0x4b, 0x30, 0xbc, 0x15, 0xc1, 0x62, 0xb4, 0xdc,
- 0x52, 0x74, 0x61, 0xb5, 0x11, 0xd3, 0x21, 0x7b, 0xa3, 0xfc, 0xb6, 0xb4,
- 0xac, 0x64, 0x07, 0x29, 0x4e, 0x28, 0x81, 0xe5, 0xbb, 0xce, 0xa5, 0x88,
- 0x63, 0xc3, 0x57, 0x39, 0x7f, 0xab, 0xdd, 0x36, 0xd2, 0x56, 0x77, 0xd2,
- 0xd3, 0xd7, 0x87, 0xbd, 0x80, 0xdb, 0x23, 0xf9, 0x3d, 0x4a, 0x75, 0x67,
- 0x19, 0x30, 0xab, 0x15, 0x33, 0x30, 0xb1, 0xcd, 0xc9, 0x91, 0xbf, 0x48,
- 0xde, 0xe9, 0xa7, 0x07, 0xcf, 0x9e, 0xee, 0x46, 0x83, 0xec, 0x4c, 0x4c,
- 0x54, 0xc2, 0xd5, 0x34, 0x2b, 0x2a, 0x44, 0x14, 0x32, 0xa2, 0x7f, 0x1e,
- 0x8e, 0xfc, 0x3d, 0x0a, 0xbb, 0x38, 0x74, 0x45, 0x52, 0x31, 0x23, 0x82,
- 0xa0, 0x6d, 0x50, 0x54, 0x7b, 0x22, 0x14, 0xdb, 0x0f, 0x53, 0xef, 0x38,
- 0x08, 0x39, 0x34, 0x09, 0x03, 0xc4, 0x6d, 0x98, 0x88, 0xc3, 0x47, 0x3a,
- 0x81, 0x47, 0x3c, 0x33, 0xaf, 0x0d, 0x21, 0xcf, 0x14, 0x7f, 0x1f, 0xb5,
- 0xff, 0xe5, 0x07, 0x33, 0xdd, 0x00, 0x3f, 0xef, 0x94, 0x1f, 0xfd, 0xda,
- 0xa7, 0xfc, 0xe8, 0x9e, 0x53, 0x7e, 0xf4, 0xd0, 0x53, 0x7e, 0xf6, 0xe4,
- 0xe9, 0xe7, 0x3f, 0xef, 0x94, 0xbd, 0x4d, 0xfe, 0x9f, 0x73, 0xca, 0x1e,
- 0x99, 0xfd, 0xbc, 0x53, 0x96, 0xa4, 0x90, 0x6e, 0xe1, 0x99, 0x24, 0xbf,
- 0x70, 0xd9, 0x20, 0x61, 0x06, 0x70, 0xe6, 0x25, 0x3f, 0x1c, 0x16, 0x94,
- 0x48, 0x97, 0x3d, 0xee, 0xee, 0x65, 0xd4, 0xb0, 0x88, 0x91, 0xed, 0x00,
- 0x0c, 0xa0, 0xdf, 0xae, 0x16, 0xd4, 0x24, 0x6a, 0x7b, 0xb8, 0xad, 0xa1,
- 0x6b, 0x2d, 0x13, 0x53, 0xfc, 0x1f, 0xfe, 0x9a, 0x39, 0xec, 0xdf, 0x10,
- 0x3d, 0x2a, 0xcc, 0x99, 0xf1, 0xb2, 0x9e, 0xda, 0x9b, 0x76, 0xb7, 0x30,
- 0x66, 0x02, 0x67, 0x20, 0x45, 0xb3, 0xdf, 0xa4, 0x9e, 0x55, 0x21, 0x6c,
- 0xd4, 0x4b, 0x33, 0x31, 0x3a, 0xa1, 0x11, 0x01, 0x05, 0xe5, 0xf4, 0xdc,
- 0x2d, 0x32, 0xa9, 0x94, 0xa4, 0x35, 0xc3, 0x27, 0x4f, 0xa6, 0x7c, 0xd7,
- 0x25, 0x2c, 0x3d, 0x51, 0x2c, 0x70, 0x98, 0xe6, 0x2c, 0xd9, 0x1e, 0xf3,
- 0x65, 0x7b, 0x3a, 0xd8, 0x39, 0x73, 0x51, 0x38, 0xee, 0xb0, 0x8c, 0x80,
- 0x9a, 0x6c, 0xe0, 0xf4, 0x4f, 0xbb, 0x09, 0x77, 0x3d, 0x3d, 0x58, 0x62,
- 0x09, 0x68, 0x41, 0x3b, 0x1e, 0x7b, 0x34, 0x0c, 0x27, 0x65, 0x5b, 0xc4,
- 0xd8, 0x34, 0x6c, 0xd8, 0xc7, 0x94, 0x83, 0x1d, 0x14, 0x5c, 0xa2, 0x64,
- 0x54, 0xd6, 0xa3, 0x3d, 0x6f, 0xbc, 0xd7, 0x25, 0xa1, 0x50, 0x37, 0xe7,
- 0x9e, 0xda, 0x00, 0xca, 0xaf, 0x6d, 0xbc, 0xf6, 0x7f, 0x62, 0xfd, 0xbd,
- 0xa1, 0xe9, 0xce, 0xd6, 0xcb, 0x95, 0x42, 0xbe, 0x51, 0x19, 0x47, 0x8e,
- 0x34, 0x2e, 0xad, 0xfa, 0x8e, 0xb6, 0x83, 0x27, 0x37, 0x9a, 0xad, 0xea,
- 0xb0, 0x19, 0x6e, 0xec, 0xb3, 0xd2, 0xd3, 0x92, 0xba, 0x65, 0x5e, 0x01,
- 0x12, 0xd7, 0x2c, 0xd6, 0x54, 0x90, 0x7a, 0x40, 0xf7, 0xcc, 0x4c, 0x7b,
- 0x96, 0x4d, 0xd6, 0x97, 0x5a, 0x39, 0x6d, 0xdb, 0x78, 0xb5, 0x69, 0x12,
- 0x85, 0x26, 0x84, 0xa4, 0x92, 0x0d, 0x38, 0x8d, 0x2e, 0x2d, 0xee, 0x42,
- 0x10, 0x89, 0x86, 0x5a, 0xd8, 0x4d, 0x37, 0x25, 0x87, 0x05, 0x4b, 0x07,
- 0xb1, 0xe7, 0x03, 0x6f, 0xe9, 0xf8, 0x49, 0xeb, 0x44, 0x23, 0x2d, 0x82,
- 0x7c, 0x52, 0x69, 0xa6, 0xab, 0xe1, 0x3c, 0x25, 0x08, 0xc6, 0xa0, 0x80,
- 0x56, 0x12, 0x42, 0xe5, 0x0e, 0x5c, 0xbc, 0x3e, 0x4b, 0xde, 0xa6, 0xd2,
- 0x56, 0x25, 0xd9, 0x31, 0x1c, 0xf8, 0xd9, 0xe3, 0x83, 0x47, 0xbb, 0x1b,
- 0xf5, 0xf0, 0x36, 0xac, 0x10, 0xbe, 0x55, 0x94, 0xb1, 0xc4, 0xdc, 0x8b,
- 0xb5, 0x31, 0x9a, 0x05, 0xae, 0xc4, 0x7c, 0xe8, 0xe3, 0xfb, 0xd3, 0x37,
- 0x47, 0x27, 0xaf, 0xfe, 0x62, 0x0b, 0xe3, 0x69, 0x0f, 0xb4, 0xc2, 0xf2,
- 0xa3, 0xb1, 0x5e, 0xef, 0x3e, 0xd6, 0x99, 0x99, 0x72, 0xb3, 0xf3, 0x68,
- 0x17, 0x05, 0xec, 0x41, 0xf3, 0xbb, 0xcb, 0xac, 0x85, 0x2a, 0x20, 0x59,
- 0xd2, 0x1b, 0x80, 0x71, 0xc6, 0xb6, 0x77, 0xe2, 0xfe, 0xc8, 0xb0, 0x67,
- 0x49, 0xbb, 0x64, 0x80, 0x78, 0x47, 0xa4, 0x5e, 0x87, 0x88, 0x54, 0xb0,
- 0xb3, 0xa4, 0x44, 0x3c, 0x68, 0xb1, 0xb2, 0x5a, 0xe4, 0xd3, 0x9c, 0xac,
- 0x15, 0xb9, 0xd5, 0x94, 0x7d, 0x3d, 0x9f, 0xb7, 0xe1, 0xf7, 0x50, 0xa4,
- 0x88, 0xb4, 0xec, 0x8d, 0xce, 0xb4, 0x36, 0xef, 0x6f, 0x20, 0x2c, 0xb2,
- 0x45, 0x91, 0x35, 0x43, 0x99, 0xd6, 0x4b, 0xf3, 0xe7, 0x17, 0xd7, 0xe9,
- 0x22, 0x28, 0x7d, 0xa5, 0xde, 0x71, 0x4a, 0x9b, 0x36, 0x79, 0x92, 0xde,
- 0xf4, 0x5a, 0x4b, 0x8c, 0x6d, 0x87, 0x05, 0x7d, 0xd2, 0x5c, 0x95, 0xa0,
- 0x93, 0xc2, 0xc5, 0xc5, 0x5f, 0xce, 0x8e, 0xbe, 0x78, 0x49, 0x6c, 0xec,
- 0x4f, 0x94, 0x63, 0x5f, 0xb7, 0xb8, 0x5a, 0x42, 0xbd, 0xaa, 0x83, 0x35,
- 0x7c, 0xff, 0xe6, 0x78, 0x7c, 0x76, 0x72, 0xfa, 0xfa, 0x8b, 0x97, 0xdf,
- 0x93, 0x4d, 0x69, 0x84, 0xc7, 0x9d, 0xf7, 0xae, 0xfd, 0x99, 0x05, 0x8b,
- 0x0f, 0x81, 0x13, 0x8e, 0xbe, 0xfb, 0x78, 0xf4, 0xfe, 0xdb, 0x2f, 0x5e,
- 0x5e, 0xa7, 0xd5, 0x80, 0xd6, 0xc7, 0x6f, 0xf7, 0xb4, 0x66, 0x6c, 0x91,
- 0x1a, 0x29, 0xe7, 0x93, 0xc5, 0xa7, 0x3a, 0xff, 0x47, 0x96, 0x98, 0xd7,
- 0x17, 0xeb, 0x10, 0xae, 0xf9, 0x42, 0xda, 0xfd, 0x18, 0xe9, 0x4d, 0xe6,
- 0xd0, 0x9f, 0x4f, 0xbe, 0x21, 0x48, 0x50, 0xeb, 0x28, 0x5d, 0x72, 0x7f,
- 0x99, 0xe4, 0x4f, 0x4f, 0x0e, 0x0e, 0x77, 0x5d, 0x57, 0x43, 0x40, 0x0a,
- 0x9b, 0x19, 0x7f, 0x0a, 0xaa, 0x43, 0xfe, 0xa1, 0xd0, 0x68, 0xb6, 0x77,
- 0x48, 0xe3, 0x2c, 0x2a, 0x48, 0x0c, 0xf5, 0x3a, 0x01, 0x17, 0x80, 0xc1,
- 0x4a, 0x4a, 0x62, 0x08, 0x84, 0xae, 0x14, 0x78, 0xdc, 0x2e, 0xde, 0x7a,
- 0x60, 0x1e, 0x7f, 0x76, 0x84, 0x67, 0xa6, 0x23, 0x5e, 0xbb, 0x8d, 0xf2,
- 0xf1, 0x57, 0x8c, 0xe5, 0x74, 0x4d, 0x4a, 0x6c, 0xb6, 0x11, 0x68, 0x42,
- 0x3f, 0xf1, 0x7d, 0xf6, 0x62, 0xde, 0xa8, 0x74, 0x29, 0x19, 0x7e, 0x0e,
- 0xab, 0x54, 0xc2, 0xd3, 0xda, 0xe9, 0x8d, 0x06, 0x71, 0xbe, 0xa4, 0x02,
- 0x4b, 0x2a, 0x47, 0x60, 0xe7, 0x8e, 0xe7, 0xba, 0x59, 0x64, 0x97, 0xe9,
- 0xf4, 0x2e, 0xb1, 0x40, 0xba, 0xd2, 0xdc, 0x72, 0xd6, 0xbd, 0x9d, 0xec,
- 0xe3, 0x9b, 0x92, 0x2d, 0x67, 0x24, 0x30, 0xe1, 0x1b, 0x10, 0x57, 0x66,
- 0xcc, 0x08, 0x2a, 0x48, 0x53, 0xbf, 0x4f, 0x6b, 0x76, 0x23, 0x96, 0x97,
- 0xb4, 0xa9, 0x5d, 0xe9, 0xdc, 0xde, 0xe2, 0x0e, 0xf5, 0x11, 0xd9, 0xa0,
- 0xe7, 0xea, 0xc6, 0x3d, 0x7d, 0xdc, 0xf6, 0x98, 0xff, 0x03, 0x97, 0x9c,
- 0xd0, 0x86, 0xe0, 0x94, 0x7d, 0x49, 0x7f, 0xed, 0xc5, 0x1b, 0x67, 0xaf,
- 0x05, 0x77, 0xd5, 0x75, 0x08, 0x7d, 0x16, 0x26, 0x4e, 0x1a, 0x78, 0x50,
- 0x49, 0x70, 0xa3, 0x2e, 0xe0, 0x5e, 0x2c, 0x2f, 0xad, 0xe8, 0x23, 0x4f,
- 0xb0, 0x79, 0xdc, 0xf6, 0xf4, 0xe9, 0x19, 0xd2, 0x16, 0xa1, 0x85, 0x21,
- 0x1a, 0x14, 0x40, 0x51, 0x2a, 0xc2, 0x4b, 0x1a, 0x88, 0x38, 0x22, 0xa9,
- 0x24, 0x66, 0xa3, 0xfe, 0xa4, 0x41, 0x9f, 0xd4, 0x87, 0x3b, 0xc1, 0x43,
- 0x0c, 0x99, 0x41, 0x4a, 0x74, 0x15, 0xcd, 0x6e, 0x57, 0xbf, 0x01, 0x27,
- 0x68, 0x50, 0x40, 0xcd, 0xc2, 0xe7, 0x9a, 0x49, 0xd6, 0xaa, 0x95, 0x52,
- 0xad, 0x17, 0x8c, 0x74, 0x07, 0xb0, 0x19, 0x6b, 0x47, 0xa9, 0x95, 0x49,
- 0x0a, 0x7b, 0xcc, 0xab, 0x92, 0x64, 0x04, 0xcc, 0x67, 0x67, 0x49, 0xcb,
- 0xd8, 0x15, 0x10, 0x76, 0xc6, 0xbc, 0x4f, 0xfa, 0x1a, 0x53, 0x77, 0xc4,
- 0x94, 0x19, 0x95, 0xc6, 0x20, 0x11, 0x65, 0x24, 0x14, 0x64, 0x12, 0x97,
- 0x9f, 0x77, 0xb6, 0x23, 0x52, 0x65, 0xd9, 0x70, 0x12, 0x7f, 0x57, 0x44,
- 0x11, 0x78, 0xb2, 0x26, 0xce, 0xb7, 0x46, 0xf0, 0xbb, 0x6e, 0xed, 0x0c,
- 0x77, 0x6d, 0xa9, 0x74, 0xde, 0x58, 0xa5, 0x2d, 0x02, 0x2d, 0x92, 0x58,
- 0x84, 0x67, 0x0b, 0x51, 0xc5, 0xbe, 0x4f, 0x89, 0xb7, 0x68, 0x33, 0x73,
- 0xfa, 0xda, 0x1e, 0xd7, 0xb8, 0x29, 0x0f, 0xca, 0xc3, 0x12, 0xdb, 0x60,
- 0xac, 0x22, 0xbb, 0xf1, 0xc7, 0x72, 0x66, 0x87, 0x1d, 0xef, 0xd7, 0xf4,
- 0x76, 0x1b, 0x9b, 0x89, 0xea, 0x72, 0x92, 0x97, 0xdf, 0x1e, 0x9d, 0x8f,
- 0x8f, 0x4f, 0xdf, 0xff, 0x29, 0x6a, 0x0e, 0xcb, 0x2f, 0x6d, 0x43, 0x2b,
- 0xad, 0xe8, 0x73, 0x5d, 0x87, 0xc8, 0x0b, 0xa6, 0xbe, 0x16, 0x06, 0x77,
- 0xc9, 0x0b, 0x7a, 0x24, 0xe8, 0x66, 0x34, 0xcd, 0x56, 0x0d, 0x97, 0x15,
- 0xa9, 0x29, 0xed, 0x3a, 0x27, 0x52, 0xe2, 0x20, 0x1b, 0x71, 0xfb, 0x03,
- 0xfd, 0xdb, 0x81, 0xfd, 0xdb, 0x61, 0x48, 0xed, 0xfc, 0x8b, 0x47, 0xc1,
- 0x06, 0xc5, 0x13, 0x76, 0xbc, 0x78, 0xf9, 0x7a, 0xc5, 0xb5, 0x60, 0x84,
- 0xd9, 0xc0, 0x08, 0x2f, 0xfe, 0x02, 0x02, 0x7c, 0x7a, 0x6a, 0x6c, 0xea,
- 0xbf, 0x68, 0x1e, 0xbe, 0x3e, 0xf0, 0x2a, 0x58, 0xec, 0x73, 0x07, 0xb1,
- 0xe7, 0x0e, 0xc2, 0xe7, 0x0e, 0x63, 0xcf, 0x1d, 0x86, 0xcf, 0x3d, 0x8a,
- 0x3d, 0xe7, 0xad, 0xd7, 0x73, 0xfc, 0xc9, 0xc6, 0x6d, 0xb2, 0x8c, 0x5b,
- 0xff, 0x7a, 0x34, 0x72, 0xc7, 0xff, 0x99, 0xf5, 0x56, 0x74, 0x5b, 0x72,
- 0xfe, 0x24, 0xc3, 0xfe, 0x55, 0xa7, 0xe3, 0xb7, 0xd1, 0x12, 0x3b, 0x2e,
- 0x66, 0xf3, 0xbd, 0x83, 0x47, 0xc3, 0x69, 0xbe, 0xba, 0x22, 0xb9, 0xf3,
- 0x52, 0x3b, 0x58, 0xd1, 0xe6, 0xd3, 0x62, 0xe5, 0x17, 0x6b, 0xb2, 0xc8,
- 0x43, 0x3d, 0xe4, 0x64, 0xec, 0xc3, 0xb2, 0x08, 0x12, 0x21, 0xde, 0x48,
- 0xf8, 0x15, 0x07, 0xca, 0xd2, 0xf5, 0x2f, 0x87, 0x70, 0x48, 0x79, 0x93,
- 0x58, 0xef, 0x0d, 0x39, 0x7a, 0x64, 0x0a, 0x4c, 0xbc, 0x3a, 0x2f, 0x9d,
- 0xa8, 0x0c, 0xcf, 0x9d, 0xe1, 0x38, 0xf4, 0xde, 0x75, 0xed, 0x02, 0xca,
- 0x5f, 0x9e, 0x17, 0x28, 0x2f, 0xea, 0x40, 0x55, 0x74, 0xd6, 0xc6, 0x43,
- 0x39, 0x18, 0x2f, 0x14, 0xcf, 0x84, 0xa2, 0xf2, 0xc3, 0xf9, 0x49, 0xa0,
- 0x5a, 0xda, 0x6e, 0xeb, 0xe8, 0xa4, 0x7c, 0x95, 0xde, 0xde, 0x8e, 0xea,
- 0x6c, 0xcf, 0xf0, 0x93, 0x7a, 0x0f, 0x0e, 0x5f, 0xf9, 0xf6, 0x55, 0xb3,
- 0x5c, 0x6c, 0x76, 0xd4, 0xe6, 0xec, 0xd7, 0x92, 0xc6, 0xd7, 0xcc, 0x3b,
- 0x50, 0x61, 0xde, 0x6a, 0x66, 0x6a, 0x8f, 0x38, 0x2c, 0xf5, 0x92, 0x8e,
- 0x91, 0xe8, 0x57, 0x7b, 0x40, 0x92, 0x0f, 0x12, 0x13, 0xe1, 0x4c, 0xc4,
- 0x21, 0x00, 0xfb, 0xca, 0x99, 0x0f, 0x0e, 0x23, 0x84, 0x5e, 0xa0, 0xb2,
- 0xc1, 0x2c, 0x08, 0x67, 0x58, 0x34, 0x90, 0xea, 0xce, 0x76, 0x0d, 0x8f,
- 0xed, 0x5a, 0xed, 0x07, 0x3e, 0x10, 0x2b, 0xe4, 0x25, 0x47, 0xd5, 0x8c,
- 0x5f, 0x99, 0x69, 0x52, 0x4a, 0x1e, 0x29, 0xf3, 0x46, 0xe5, 0x30, 0xff,
- 0xfd, 0x53, 0x58, 0x5c, 0x8b, 0x15, 0x74, 0x13, 0xf7, 0x48, 0xfb, 0xa7,
- 0x92, 0x2f, 0xde, 0x7a, 0xfe, 0x5a, 0xab, 0x11, 0x00, 0xd0, 0x65, 0xe2,
- 0x25, 0xd0, 0x38, 0xb6, 0xad, 0xf1, 0xf9, 0xd9, 0xd6, 0x80, 0xf3, 0x35,
- 0xe9, 0x0b, 0x43, 0xf3, 0xef, 0x04, 0x56, 0x26, 0xb5, 0x11, 0x79, 0xf2,
- 0x78, 0x57, 0xf0, 0x40, 0x31, 0x47, 0x34, 0xc0, 0x8a, 0x84, 0x8f, 0xf0,
- 0x4b, 0x97, 0x5c, 0x58, 0xb5, 0x1a, 0xfe, 0x18, 0xfb, 0xaf, 0xbd, 0x40,
- 0xce, 0xfa, 0x19, 0x70, 0x16, 0xc7, 0x06, 0xb5, 0xce, 0x87, 0xb7, 0xe3,
- 0x79, 0x8e, 0x3a, 0x11, 0x9a, 0xb2, 0xfa, 0x24, 0x7d, 0x0f, 0x24, 0xca,
- 0x01, 0xe6, 0x12, 0x74, 0x99, 0x6d, 0x31, 0x9b, 0xb6, 0x77, 0xd4, 0x5b,
- 0xb3, 0x6c, 0x98, 0xc3, 0xfa, 0xea, 0x69, 0xa5, 0xaa, 0xb4, 0x6a, 0x36,
- 0xec, 0xab, 0x62, 0x4d, 0x87, 0x82, 0x81, 0x74, 0x1c, 0x19, 0xe6, 0x1e,
- 0x4c, 0x8e, 0xc7, 0x9d, 0xd3, 0xd7, 0xcd, 0x8b, 0x1c, 0xbb, 0x6b, 0x9e,
- 0x8e, 0x43, 0x82, 0x4d, 0xa3, 0xb8, 0x83, 0x11, 0x92, 0x50, 0x0c, 0xb4,
- 0xbe, 0x6a, 0x32, 0xc5, 0xd0, 0xf0, 0x4e, 0x64, 0xa4, 0xc1, 0x37, 0x61,
- 0xd3, 0xee, 0xac, 0x3d, 0xdc, 0xff, 0xfb, 0x17, 0xe4, 0xaf, 0x07, 0x6f,
- 0x47, 0x13, 0xae, 0x69, 0x49, 0x9a, 0x90, 0xfa, 0xa0, 0x05, 0xe9, 0x8a,
- 0x36, 0x2c, 0x49, 0x8e, 0xb2, 0xb3, 0x28, 0xb7, 0x2a, 0x6f, 0x59, 0x8e,
- 0x4a, 0x69, 0x69, 0x01, 0xe9, 0x3d, 0x68, 0xa1, 0xad, 0x95, 0x92, 0x88,
- 0x8c, 0x0a, 0x16, 0x71, 0xf8, 0xfb, 0xfe, 0x7e, 0x4f, 0x25, 0x80, 0x0a,
- 0xa0, 0x8c, 0xae, 0x9d, 0x6e, 0xdc, 0x5b, 0x55, 0x21, 0xae, 0x7f, 0x1a,
- 0x45, 0xfb, 0x35, 0x44, 0xd0, 0x5b, 0xc8, 0x65, 0xaa, 0x5f, 0x91, 0x2e,
- 0x81, 0xd2, 0xfa, 0xb7, 0x13, 0xdc, 0x54, 0xc5, 0x91, 0x13, 0xc0, 0x90,
- 0xa1, 0xd0, 0x19, 0xee, 0x23, 0xdd, 0xad, 0x8f, 0xc2, 0x3a, 0x8d, 0x06,
- 0x45, 0x77, 0x19, 0xf0, 0x80, 0x39, 0x81, 0xcc, 0xa7, 0x80, 0x7b, 0xa4,
- 0x48, 0x41, 0x8d, 0xf6, 0x18, 0xae, 0x53, 0x8b, 0x08, 0xa1, 0x2e, 0x97,
- 0xa7, 0x71, 0xcc, 0x35, 0xa4, 0xd6, 0xbe, 0xea, 0x8d, 0x55, 0x6d, 0xb1,
- 0x03, 0x1e, 0x85, 0xf6, 0x08, 0x56, 0x29, 0x94, 0x6d, 0x0b, 0x74, 0xff,
- 0xfb, 0xaa, 0xa1, 0x43, 0x55, 0x81, 0x34, 0x98, 0x9f, 0x77, 0x58, 0x07,
- 0xff, 0x7b, 0x1d, 0xd6, 0xc1, 0xff, 0x19, 0x87, 0x75, 0xf8, 0xf3, 0x0e,
- 0xeb, 0xf0, 0x7f, 0xaf, 0xc3, 0x3a, 0xfc, 0x3f, 0xe3, 0xb0, 0x1e, 0xfd,
- 0xbc, 0xc3, 0x7a, 0xf4, 0xcb, 0x1f, 0x96, 0xeb, 0x94, 0xae, 0x5a, 0x5f,
- 0x2e, 0x7a, 0x82, 0xd3, 0x8a, 0x26, 0x77, 0x68, 0xb2, 0x3d, 0xa1, 0x0d,
- 0x11, 0x83, 0x41, 0x94, 0xc9, 0xba, 0x6b, 0x35, 0xbd, 0x72, 0x18, 0xd4,
- 0xb6, 0x19, 0x84, 0xc4, 0xa0, 0x04, 0x93, 0x9b, 0x54, 0x9e, 0x3f, 0x97,
- 0xe4, 0x42, 0x31, 0x9a, 0xc1, 0x20, 0x79, 0x3f, 0x1e, 0x73, 0xda, 0xd1,
- 0x18, 0xa1, 0xd3, 0xee, 0x61, 0x91, 0x33, 0x12, 0x36, 0xce, 0x0e, 0xa9,
- 0x8d, 0xa7, 0x66, 0x86, 0x8e, 0xbb, 0xf0, 0x7b, 0xcb, 0x74, 0x4a, 0x3f,
- 0xde, 0x1f, 0x1d, 0xb8, 0xdd, 0xd9, 0xfd, 0x09, 0x80, 0x57, 0x2e, 0xae,
- 0x19, 0x0f, 0x46, 0x47, 0xa0, 0xa9, 0x81, 0xf4, 0x5c, 0x37, 0x9d, 0xc3,
- 0xb9, 0x6d, 0x47, 0xa5, 0x7b, 0x41, 0x90, 0x63, 0xa7, 0xc2, 0xe9, 0x17,
- 0x8a, 0x22, 0x48, 0xbf, 0x70, 0x16, 0x3a, 0x0c, 0xe0, 0xc0, 0xfa, 0x96,
- 0x5e, 0xf3, 0x3f, 0x23, 0xb2, 0xec, 0x05, 0x72, 0xff, 0xe7, 0x44, 0x96,
- 0x1f, 0x64, 0x1f, 0xfb, 0x57, 0xa6, 0x1a, 0x6a, 0x07, 0xa9, 0x38, 0x4e,
- 0xb5, 0xf3, 0x2c, 0x52, 0x29, 0x10, 0x10, 0xec, 0x66, 0x4c, 0x3a, 0x94,
- 0x69, 0x73, 0x24, 0xef, 0xba, 0xe0, 0x1e, 0x9b, 0x31, 0x21, 0xce, 0x8c,
- 0x54, 0xda, 0x59, 0x58, 0x15, 0x05, 0xb6, 0xe0, 0x55, 0xd6, 0x4c, 0x6f,
- 0xeb, 0x42, 0x3f, 0x22, 0xb9, 0xa1, 0xe4, 0x22, 0x67, 0x90, 0xa7, 0xb0,
- 0x41, 0x79, 0xc6, 0x10, 0x40, 0xf9, 0x7d, 0x9a, 0xd2, 0xd3, 0xf6, 0x7a,
- 0xd3, 0x69, 0x36, 0x4c, 0xeb, 0x69, 0x9e, 0xc7, 0x5b, 0x58, 0x6a, 0x1c,
- 0x38, 0x4d, 0xe6, 0x6b, 0x78, 0xf0, 0xcd, 0xf3, 0x09, 0xc5, 0xdc, 0xb4,
- 0x21, 0x35, 0x71, 0x44, 0xa0, 0xe2, 0xd0, 0x84, 0xcb, 0x75, 0x73, 0x59,
- 0xaa, 0x33, 0x7f, 0x10, 0x71, 0x0c, 0x52, 0x54, 0x8e, 0x11, 0x98, 0xeb,
- 0x69, 0x95, 0xaf, 0x00, 0xb8, 0xe9, 0x35, 0xbf, 0x1a, 0xd8, 0xce, 0xd0,
- 0xf0, 0xb4, 0x69, 0xe8, 0x94, 0x7b, 0x25, 0x13, 0x07, 0xed, 0xe2, 0x92,
- 0x0f, 0xb7, 0xc8, 0xad, 0x69, 0xbb, 0x06, 0x99, 0xb7, 0x09, 0x25, 0xd9,
- 0x8b, 0x5a, 0x92, 0x57, 0xbd, 0xd9, 0x10, 0x86, 0xd7, 0x30, 0x86, 0x21,
- 0xa1, 0x3b, 0x45, 0xe2, 0x45, 0x63, 0x04, 0x0d, 0x50, 0x4e, 0x18, 0x6c,
- 0x9d, 0x1c, 0xec, 0x8a, 0x7a, 0x7f, 0x95, 0xdd, 0x72, 0x21, 0x69, 0x68,
- 0x72, 0x31, 0x37, 0xbb, 0xd2, 0x22, 0xcb, 0x57, 0xe3, 0xd7, 0xc7, 0xc7,
- 0xad, 0xa2, 0x53, 0xda, 0x3a, 0x44, 0x52, 0x19, 0xcd, 0x24, 0xa9, 0x09,
- 0xcc, 0x14, 0x70, 0x22, 0xb1, 0x28, 0x3c, 0x37, 0xc5, 0x33, 0xd7, 0x0f,
- 0x91, 0x17, 0xc3, 0x08, 0x72, 0x6d, 0x59, 0x98, 0x72, 0x8a, 0xd7, 0xba,
- 0x30, 0xd3, 0xcc, 0x09, 0x61, 0xea, 0x6a, 0xbd, 0x4c, 0x8b, 0x5f, 0x1f,
- 0x46, 0xc7, 0x37, 0xf4, 0x5c, 0x29, 0x87, 0xec, 0x16, 0xdf, 0x2b, 0x3f,
- 0xd6, 0x1b, 0xd2, 0x5a, 0xa4, 0x01, 0xc1, 0x59, 0x25, 0xed, 0xe9, 0x00,
- 0xa3, 0x05, 0x7f, 0x3b, 0x37, 0x11, 0xa0, 0x16, 0xea, 0x84, 0xe7, 0xc7,
- 0x83, 0x9b, 0xe5, 0x6a, 0x04, 0x19, 0xf0, 0xdc, 0x36, 0xb8, 0xd4, 0x75,
- 0x0a, 0x72, 0x18, 0x6d, 0x63, 0xb5, 0xdc, 0x41, 0x57, 0x54, 0xe2, 0x0b,
- 0xbf, 0xe5, 0x0d, 0x68, 0x5d, 0x81, 0xfb, 0xef, 0x00, 0x5f, 0x81, 0x5f,
- 0xe2, 0x06, 0x48, 0x21, 0xd1, 0xd6, 0xef, 0xb7, 0x92, 0x78, 0x8b, 0x8a,
- 0x07, 0x8c, 0xd3, 0x02, 0x60, 0xf9, 0x6d, 0x29, 0x2d, 0x82, 0x08, 0xe3,
- 0x31, 0x31, 0xff, 0x4c, 0xd7, 0x45, 0x7e, 0x8b, 0x8a, 0x0e, 0xa3, 0x4a,
- 0xbc, 0xa4, 0x0e, 0x0d, 0x3d, 0xad, 0x07, 0x5e, 0xb3, 0x62, 0x93, 0x68,
- 0x7d, 0x0a, 0x56, 0xf1, 0xc1, 0xbc, 0x6c, 0x14, 0xc6, 0x25, 0xe5, 0xf7,
- 0xf0, 0x18, 0x03, 0x1f, 0x03, 0x1a, 0x6c, 0x3d, 0x92, 0x1f, 0x54, 0x64,
- 0x0d, 0xb9, 0x3f, 0x36, 0x46, 0xb6, 0xda, 0xd1, 0xc2, 0x0b, 0xf4, 0x7a,
- 0x5b, 0x51, 0xd1, 0xc0, 0x86, 0x4e, 0xc2, 0xd8, 0x0c, 0x97, 0xa4, 0xdf,
- 0x0e, 0x20, 0x78, 0xed, 0x86, 0x84, 0x74, 0x6c, 0x4b, 0x1b, 0xee, 0x3f,
- 0x11, 0x4b, 0x65, 0xb2, 0x7d, 0x52, 0x5c, 0x93, 0xa1, 0xbc, 0x1b, 0x99,
- 0x40, 0x23, 0x1b, 0x17, 0xbe, 0x95, 0x2e, 0x80, 0xa1, 0xec, 0xee, 0xf4,
- 0x3b, 0x1a, 0x79, 0xad, 0x57, 0x5b, 0xdd, 0x98, 0x80, 0xc6, 0x96, 0x2f,
- 0x88, 0xfc, 0xf7, 0x34, 0xbd, 0x61, 0x11, 0xe6, 0xde, 0xbb, 0x26, 0x3f,
- 0xc2, 0xeb, 0xa8, 0xd2, 0x0b, 0x41, 0x4e, 0xfa, 0x37, 0x90, 0x94, 0x54,
- 0x89, 0x68, 0xaf, 0x82, 0x7b, 0x76, 0x75, 0xd5, 0x17, 0x2f, 0xfe, 0x7c,
- 0x45, 0x5d, 0x9f, 0x75, 0x5e, 0x15, 0x13, 0x62, 0xbb, 0xaf, 0xb7, 0x86,
- 0xb4, 0xbd, 0xc6, 0x25, 0x41, 0x5e, 0x33, 0x5f, 0x8f, 0x75, 0x9d, 0x89,
- 0x2e, 0xc5, 0x08, 0x9b, 0x54, 0x6a, 0x47, 0x8d, 0x12, 0x28, 0x4f, 0xcf,
- 0x76, 0x99, 0xe5, 0x83, 0xe5, 0xf6, 0xd4, 0x52, 0xd3, 0x1b, 0x20, 0x88,
- 0xe6, 0x8b, 0x91, 0x5f, 0x35, 0x21, 0x6e, 0x5a, 0x2d, 0xd6, 0xda, 0x31,
- 0xca, 0x3a, 0x6b, 0x6e, 0x7c, 0x79, 0xa8, 0xc9, 0x81, 0x22, 0x50, 0xf7,
- 0xc3, 0x13, 0xc7, 0xe1, 0x9d, 0xda, 0x19, 0x6c, 0xc4, 0x3a, 0x76, 0x52,
- 0x85, 0x71, 0xa4, 0x60, 0xd9, 0xae, 0xaa, 0x9d, 0xe6, 0x8a, 0xe7, 0x85,
- 0x4f, 0xef, 0x69, 0x34, 0x38, 0x2a, 0x72, 0xf9, 0x95, 0xa0, 0x67, 0x67,
- 0xea, 0xea, 0xf4, 0xbe, 0x31, 0x32, 0x5c, 0xc6, 0x7c, 0x44, 0xbf, 0x22,
- 0xc5, 0x32, 0xbb, 0x41, 0xcf, 0x85, 0x3b, 0xc6, 0xfd, 0xf7, 0xea, 0x8f,
- 0xfd, 0xa6, 0x1b, 0x34, 0xd5, 0xce, 0xd4, 0x90, 0x57, 0x8d, 0xc4, 0x83,
- 0xf0, 0x26, 0x02, 0xa4, 0x40, 0x4d, 0x3c, 0x08, 0x4b, 0xb4, 0x4a, 0x91,
- 0xbe, 0xd0, 0xcc, 0xcd, 0x04, 0x2a, 0x93, 0x87, 0x83, 0xcf, 0x75, 0x92,
- 0x09, 0x84, 0x62, 0xe0, 0xa9, 0x44, 0x27, 0xb7, 0x68, 0xd3, 0x1e, 0xee,
- 0x32, 0xa9, 0x55, 0x7a, 0xc4, 0xd3, 0xc2, 0x0b, 0x6d, 0x9b, 0xa2, 0x51,
- 0x9f, 0x95, 0x52, 0x43, 0x16, 0xfd, 0x7d, 0x27, 0x46, 0xc9, 0x11, 0x3d,
- 0x1d, 0x0e, 0xf4, 0x07, 0x8c, 0x00, 0x30, 0x6c, 0xd7, 0xf0, 0x90, 0x7b,
- 0x87, 0x87, 0x74, 0x25, 0x94, 0xc7, 0xb8, 0xa0, 0x94, 0x75, 0x87, 0x12,
- 0xff, 0x91, 0x74, 0xf4, 0x21, 0xb5, 0x5d, 0x75, 0xcd, 0x64, 0xeb, 0x72,
- 0x51, 0x4e, 0x26, 0x66, 0xf1, 0x5b, 0xaa, 0xa5, 0x98, 0x6f, 0x07, 0xbe,
- 0x64, 0x7f, 0x26, 0x69, 0x75, 0x09, 0x4b, 0x7a, 0x00, 0x33, 0x82, 0x1d,
- 0xf5, 0x34, 0x0b, 0xd7, 0x31, 0x54, 0x3f, 0xaf, 0x90, 0xcf, 0x11, 0x39,
- 0xc3, 0xd9, 0x80, 0x96, 0x00, 0x69, 0x6d, 0x2d, 0xbf, 0x3f, 0x0a, 0x1a,
- 0xe9, 0xa7, 0x3a, 0x3d, 0xce, 0x36, 0xec, 0x4b, 0x97, 0x75, 0x7d, 0x36,
- 0xc0, 0xb6, 0xa4, 0xe5, 0x5a, 0x5e, 0x87, 0xf1, 0x15, 0x6c, 0x41, 0x7b,
- 0x41, 0x5b, 0xff, 0x45, 0x7f, 0x1c, 0x0c, 0xe8, 0xbf, 0x87, 0xff, 0xdc,
- 0x42, 0x08, 0xe6, 0xc5, 0xde, 0xde, 0xcd, 0xcd, 0xcd, 0x48, 0x1a, 0x4a,
- 0x8c, 0xcc, 0x91, 0x7d, 0x16, 0x56, 0xfe, 0x11, 0x0e, 0x5b, 0xcf, 0x07,
- 0x2e, 0x92, 0xad, 0x7c, 0x79, 0xf9, 0xd7, 0x83, 0xe1, 0xc1, 0xfe, 0xfe,
- 0xfe, 0x8f, 0xa3, 0x15, 0xed, 0xef, 0x1c, 0xc3, 0x9a, 0xff, 0xfa, 0xc3,
- 0xee, 0xf1, 0x4c, 0xf6, 0xa2, 0xd0, 0x96, 0xfc, 0x3b, 0xb5, 0xb2, 0x0b,
- 0x6e, 0x4e, 0xc0, 0xa4, 0xfc, 0xc2, 0x63, 0x31, 0x1c, 0x47, 0x4e, 0x37,
- 0xd5, 0xd1, 0x73, 0xea, 0x20, 0x85, 0x10, 0x9e, 0x3c, 0x3a, 0x3c, 0x4c,
- 0x58, 0xe1, 0xe0, 0xf2, 0x34, 0x4e, 0x65, 0x20, 0x64, 0x02, 0xe9, 0xa4,
- 0xcc, 0xb2, 0x6c, 0x4a, 0x00, 0x6d, 0x1c, 0xac, 0x31, 0x94, 0xd1, 0x93,
- 0xd2, 0xc9, 0x86, 0x71, 0x6e, 0x04, 0x79, 0x39, 0xbb, 0x73, 0xa3, 0x1a,
- 0x12, 0xaf, 0x88, 0xb1, 0x52, 0x33, 0x44, 0xae, 0xf9, 0x4a, 0x24, 0x4e,
- 0x21, 0xd9, 0xd6, 0x41, 0x39, 0xa1, 0xb4, 0xf8, 0x82, 0x94, 0x03, 0x1c,
- 0x68, 0x51, 0x4a, 0x3f, 0x5f, 0x44, 0xee, 0xe7, 0xeb, 0x4a, 0xba, 0xb9,
- 0x20, 0xd1, 0xe1, 0x26, 0xbd, 0x6b, 0x09, 0x7b, 0xb3, 0xe3, 0x2f, 0xcd,
- 0x7f, 0x02, 0xbf, 0xb6, 0x5c, 0x4d, 0x52, 0x2d, 0x6d, 0x3b, 0xda, 0x79,
- 0xd6, 0x4c, 0xaf, 0xba, 0xe9, 0x96, 0xe0, 0xe0, 0x66, 0xb6, 0x57, 0x66,
- 0x41, 0x77, 0xb6, 0x71, 0x74, 0xac, 0xd3, 0x9d, 0x57, 0x97, 0x6b, 0x86,
- 0xa4, 0xc6, 0x06, 0x28, 0x4d, 0xe0, 0xc6, 0xd7, 0xcc, 0x14, 0xa3, 0xca,
- 0x51, 0xe6, 0xfa, 0xc3, 0xe1, 0x7b, 0x79, 0xad, 0x65, 0xc3, 0xd3, 0xab,
- 0x6c, 0x29, 0x1c, 0x73, 0x47, 0x73, 0x26, 0xb7, 0x84, 0x06, 0xb7, 0x22,
- 0x16, 0xf9, 0xd6, 0x5c, 0x7f, 0x65, 0x56, 0xb2, 0x2b, 0x85, 0xb7, 0x56,
- 0xcc, 0x49, 0xcf, 0x97, 0xcb, 0x35, 0x19, 0x8e, 0x93, 0x54, 0xe4, 0x89,
- 0xd6, 0x83, 0xf7, 0x64, 0x36, 0x1b, 0xb6, 0x98, 0x55, 0x10, 0x62, 0xf5,
- 0x7a, 0x32, 0x14, 0xcd, 0x07, 0x33, 0x42, 0x72, 0x09, 0xdd, 0xd6, 0x37,
- 0xc7, 0xaf, 0x2f, 0xb8, 0x04, 0xd6, 0xfc, 0x97, 0xaa, 0x65, 0xcc, 0x1f,
- 0x54, 0xf9, 0x1a, 0x36, 0xe4, 0x39, 0x7b, 0xc4, 0x29, 0x44, 0x20, 0x56,
- 0x1b, 0x51, 0x4a, 0x5d, 0x9a, 0x5d, 0x4b, 0xf5, 0x1b, 0x78, 0xed, 0x1d,
- 0x22, 0xb9, 0xc3, 0x2d, 0x2d, 0xd1, 0x56, 0x4e, 0x3f, 0x7e, 0x32, 0xda,
- 0xe7, 0x25, 0xd2, 0x1e, 0x4a, 0x06, 0x8d, 0x54, 0x6a, 0xc1, 0x8d, 0xa4,
- 0x11, 0xc6, 0x34, 0x9e, 0x33, 0x60, 0xa7, 0x32, 0x48, 0x18, 0xe7, 0x99,
- 0xa1, 0x14, 0xf4, 0xb7, 0x5e, 0xb6, 0xe4, 0x3d, 0xe5, 0x30, 0x2a, 0xbb,
- 0x24, 0x47, 0xf8, 0xae, 0x8b, 0xd1, 0x0b, 0x04, 0x65, 0xad, 0xd2, 0x01,
- 0x13, 0x8e, 0x95, 0xcb, 0x09, 0x4d, 0x48, 0xde, 0xf8, 0xc0, 0x75, 0xd8,
- 0x29, 0x49, 0x0a, 0x88, 0xcc, 0x92, 0xea, 0x23, 0x74, 0xa4, 0x74, 0x2d,
- 0xdd, 0x62, 0xfa, 0x49, 0xd0, 0xba, 0x68, 0xf8, 0x67, 0xe9, 0x29, 0xcc,
- 0x7a, 0x72, 0xac, 0xf4, 0x0b, 0x67, 0xb9, 0xab, 0x69, 0xae, 0x6c, 0xba,
- 0xaa, 0xca, 0x39, 0x22, 0x87, 0x21, 0x9f, 0x7c, 0xd3, 0xed, 0x3e, 0x9d,
- 0x05, 0x36, 0x0e, 0xf0, 0x4d, 0xbc, 0xea, 0xbe, 0x14, 0xcb, 0x63, 0x11,
- 0xc1, 0x86, 0x1e, 0x47, 0x86, 0xb6, 0xfe, 0x48, 0x21, 0xa1, 0x2f, 0x5e,
- 0xd9, 0x08, 0x62, 0x1c, 0xca, 0x08, 0xea, 0x54, 0xcd, 0xfc, 0xad, 0x6d,
- 0xcc, 0x08, 0x4f, 0x23, 0xbe, 0x9f, 0xdd, 0x32, 0x66, 0x27, 0x4e, 0xee,
- 0x26, 0x2f, 0x1e, 0x1d, 0x26, 0xf5, 0x9d, 0xd1, 0x20, 0x96, 0xfe, 0x26,
- 0x74, 0x1b, 0x2b, 0x47, 0x43, 0x61, 0xad, 0x8e, 0x64, 0xcc, 0xba, 0x3e,
- 0xd0, 0x2b, 0xaf, 0xf0, 0x8a, 0x74, 0x31, 0xd2, 0x7c, 0xbd, 0x07, 0x74,
- 0xeb, 0x2e, 0x95, 0x89, 0x4d, 0x16, 0x69, 0xf1, 0xc9, 0x66, 0x55, 0xf3,
- 0x40, 0x03, 0x6a, 0x82, 0xc9, 0x85, 0xa4, 0xee, 0x87, 0xb2, 0x3d, 0x2c,
- 0x18, 0x83, 0x6e, 0x51, 0x50, 0xec, 0x97, 0x69, 0x85, 0x1a, 0x43, 0x6c,
- 0x9b, 0xa4, 0x3f, 0x3f, 0xa8, 0x25, 0x78, 0x28, 0xc2, 0x38, 0xc6, 0xce,
- 0xb8, 0x3f, 0x9a, 0x43, 0xde, 0xd3, 0xf9, 0xea, 0x97, 0x8b, 0xad, 0xaf,
- 0xf5, 0x24, 0x0c, 0xd7, 0x36, 0xff, 0x7d, 0xa1, 0x01, 0xc0, 0x3e, 0xfe,
- 0xdd, 0x08, 0x56, 0x99, 0xeb, 0xec, 0x6c, 0x43, 0x86, 0x7e, 0xab, 0x4e,
- 0x56, 0xf1, 0x5c, 0xa8, 0x32, 0x16, 0x61, 0x1f, 0x25, 0xa7, 0xce, 0x9c,
- 0x2c, 0x06, 0xc0, 0xc4, 0x6d, 0xaa, 0xa9, 0x18, 0x93, 0xf8, 0xbb, 0xa4,
- 0x6e, 0xa6, 0x8b, 0x68, 0xeb, 0x69, 0x68, 0x39, 0x35, 0x65, 0x45, 0xde,
- 0x39, 0xdd, 0xcf, 0x13, 0x71, 0xdc, 0x15, 0xd2, 0xf1, 0x63, 0xb3, 0xb5,
- 0xd4, 0x3e, 0x11, 0xd0, 0x55, 0x41, 0x66, 0x36, 0x2f, 0x22, 0xda, 0x48,
- 0x24, 0xbe, 0xde, 0x5a, 0x22, 0xf9, 0x0b, 0x23, 0x13, 0xd7, 0x2b, 0x1b,
- 0x7a, 0x48, 0x04, 0xa4, 0x81, 0xd0, 0x5f, 0xca, 0x62, 0x10, 0xe0, 0x3b,
- 0x21, 0x76, 0x2e, 0x4e, 0x27, 0xca, 0x0a, 0x5c, 0x4a, 0xaf, 0xe2, 0xcc,
- 0xba, 0x9a, 0xf9, 0x4d, 0x25, 0x4f, 0xf7, 0xf1, 0x7b, 0x5a, 0xaa, 0x72,
- 0xcf, 0x13, 0x3d, 0x0c, 0x43, 0x83, 0x03, 0xae, 0xe5, 0x0b, 0x96, 0x74,
- 0x5a, 0xe8, 0x8d, 0x14, 0xb8, 0xa9, 0x9c, 0x0b, 0xa9, 0x6b, 0x7f, 0xaf,
- 0xae, 0xa8, 0x39, 0x8d, 0xe7, 0xfd, 0x10, 0xcc, 0x2e, 0xa3, 0x6f, 0x06,
- 0xfa, 0x32, 0xa0, 0xd6, 0x39, 0x13, 0xd1, 0xec, 0x30, 0xe9, 0x2a, 0xc8,
- 0xe7, 0xa1, 0x84, 0x49, 0x97, 0x9e, 0x4c, 0x1a, 0x45, 0x56, 0xb0, 0x5d,
- 0x5f, 0x2a, 0xf8, 0x5a, 0x32, 0x0d, 0xb1, 0x13, 0x67, 0x0c, 0xad, 0x5b,
- 0xf3, 0x88, 0xb6, 0x91, 0xf3, 0xa5, 0x48, 0x91, 0x9a, 0xd2, 0x3c, 0x0d,
- 0x43, 0xe3, 0xa6, 0x1b, 0xb4, 0x39, 0xb5, 0xdb, 0xf9, 0x48, 0xf3, 0x1c,
- 0x5e, 0x69, 0xa2, 0xed, 0x02, 0xee, 0x7c, 0xc8, 0x5f, 0x73, 0x1b, 0xae,
- 0x73, 0xde, 0x7b, 0x86, 0x33, 0x9b, 0x54, 0x79, 0x36, 0x37, 0xdc, 0x0b,
- 0x4b, 0xe2, 0x14, 0xd2, 0xc0, 0x6b, 0x94, 0xa5, 0x15, 0xc4, 0x1f, 0x69,
- 0x07, 0x54, 0x40, 0x9c, 0xc3, 0x71, 0xc4, 0x3c, 0xd1, 0x82, 0xcb, 0x31,
- 0x98, 0xf6, 0xb5, 0x36, 0xa8, 0x4d, 0xb5, 0xa4, 0x29, 0x9a, 0x9f, 0x89,
- 0x7e, 0xd3, 0xe2, 0xf1, 0x24, 0x02, 0x2b, 0xe8, 0x16, 0xdb, 0x86, 0x75,
- 0xf8, 0x22, 0xb3, 0x55, 0xd1, 0x6e, 0xbc, 0xae, 0x47, 0x3d, 0x1d, 0x44,
- 0x61, 0x3f, 0x7d, 0x93, 0x55, 0x46, 0xfc, 0x95, 0x66, 0xdd, 0xdf, 0x3e,
- 0xd1, 0x28, 0x84, 0x34, 0xdf, 0x16, 0x65, 0x44, 0x6e, 0x29, 0x1a, 0xc1,
- 0x61, 0xea, 0x41, 0xf8, 0x82, 0x8b, 0x37, 0x68, 0x6f, 0xf5, 0x4d, 0x5f,
- 0x21, 0xe9, 0x52, 0xe8, 0x00, 0x20, 0xc5, 0x86, 0xfa, 0x48, 0xbd, 0x8c,
- 0x77, 0x59, 0xb2, 0xad, 0xbe, 0x49, 0xfd, 0x33, 0x1a, 0x16, 0x51, 0x0b,
- 0xb9, 0xf3, 0xa8, 0x53, 0xf8, 0xa4, 0x49, 0xb9, 0x51, 0xb1, 0x9d, 0xf9,
- 0x45, 0x4e, 0x0e, 0x1f, 0xcd, 0x73, 0x8a, 0x96, 0xf5, 0x48, 0x17, 0x76,
- 0x87, 0x0f, 0xde, 0x49, 0x8f, 0x20, 0x2d, 0xb2, 0xbe, 0x22, 0x45, 0x8c,
- 0xf4, 0x03, 0x18, 0xf9, 0x71, 0xf5, 0x1e, 0x9b, 0xf6, 0xfe, 0xe2, 0xe4,
- 0xdd, 0xa0, 0x73, 0xed, 0x44, 0xa5, 0xf1, 0x2c, 0x62, 0x65, 0x39, 0x42,
- 0x53, 0x21, 0x26, 0x40, 0x95, 0xc8, 0x7e, 0xd8, 0x12, 0x43, 0xc6, 0xa4,
- 0xa0, 0xad, 0x1b, 0x48, 0x32, 0x4e, 0x25, 0xa5, 0x6b, 0x6a, 0xf6, 0xf3,
- 0xbe, 0x86, 0x9e, 0x6c, 0x22, 0xc2, 0x1a, 0x67, 0x0f, 0x57, 0x89, 0x91,
- 0x27, 0x86, 0xd9, 0x78, 0x0d, 0xf6, 0x42, 0x8e, 0xe5, 0xb4, 0x62, 0xf7,
- 0x55, 0x5e, 0x0a, 0xb1, 0x17, 0x6e, 0x0c, 0x90, 0xbc, 0x29, 0x6f, 0x8a,
- 0xe1, 0x09, 0x55, 0x1f, 0x27, 0x27, 0xe5, 0x25, 0xdd, 0xa0, 0xf7, 0x80,
- 0x8f, 0x0a, 0x4e, 0xed, 0xc3, 0xd9, 0xfb, 0x64, 0x87, 0xe4, 0x6e, 0x72,
- 0x66, 0x31, 0xe7, 0xe8, 0xd1, 0x5d, 0x31, 0x31, 0x6a, 0x56, 0x49, 0x64,
- 0x36, 0x83, 0xe4, 0xe8, 0xfb, 0x57, 0xef, 0xce, 0x4e, 0x8e, 0x7e, 0xe0,
- 0x04, 0x99, 0x60, 0x39, 0xf4, 0xe3, 0x2f, 0x3d, 0x9b, 0x0b, 0x11, 0x1a,
- 0x4a, 0x1a, 0x34, 0x33, 0x89, 0x02, 0xce, 0x10, 0x75, 0x32, 0x5b, 0x54,
- 0x12, 0x1c, 0x8f, 0xcf, 0x8e, 0x87, 0x8a, 0x16, 0xc7, 0x3d, 0x19, 0xf3,
- 0x82, 0xcc, 0x23, 0x98, 0xd8, 0xda, 0xce, 0x81, 0xa8, 0x68, 0x18, 0x38,
- 0x65, 0xe4, 0x3e, 0x0c, 0x92, 0xf7, 0x9a, 0x8a, 0x38, 0xc0, 0xa1, 0xd3,
- 0x1d, 0x7c, 0x93, 0x5f, 0x22, 0xa2, 0xd4, 0xc9, 0x21, 0x13, 0x03, 0x84,
- 0xe8, 0x20, 0xc0, 0x62, 0xf4, 0xba, 0x69, 0xd5, 0xd9, 0x82, 0x9d, 0x97,
- 0xbd, 0xf2, 0x91, 0x59, 0x24, 0x4e, 0x11, 0x75, 0x22, 0x41, 0xa8, 0x4c,
- 0xea, 0x46, 0x26, 0xad, 0x36, 0x5e, 0x96, 0x42, 0x58, 0x2a, 0x88, 0x2e,
- 0x61, 0xd9, 0xfe, 0x8b, 0x64, 0x6b, 0xb8, 0x4e, 0x5e, 0x6c, 0xfd, 0x8a,
- 0x2a, 0x82, 0xef, 0xe9, 0x8d, 0x34, 0x05, 0xd2, 0xa2, 0x5d, 0x1b, 0x14,
- 0x10, 0xa8, 0x16, 0xb6, 0x66, 0xd4, 0xe1, 0x06, 0x9f, 0xb9, 0xb9, 0xe9,
- 0xa2, 0xd0, 0x4f, 0xd6, 0x97, 0x97, 0x11, 0x38, 0x17, 0xea, 0x38, 0x96,
- 0xc1, 0xfd, 0x43, 0xde, 0x94, 0xed, 0x3a, 0x61, 0x1f, 0xbe, 0x99, 0xff,
- 0x16, 0xe2, 0x92, 0xcc, 0x43, 0xae, 0xca, 0x72, 0x46, 0xaa, 0xea, 0xab,
- 0x84, 0x03, 0x10, 0x14, 0xa5, 0xa8, 0x9a, 0x70, 0x38, 0xd6, 0xde, 0xb6,
- 0xff, 0xb4, 0x6d, 0xa3, 0xac, 0x5b, 0xa2, 0x57, 0x81, 0x5f, 0x6f, 0xb1,
- 0x12, 0x3b, 0xe1, 0xc6, 0x9e, 0x83, 0x64, 0xfb, 0xe5, 0xb6, 0x3c, 0xb7,
- 0x15, 0x55, 0xd1, 0xf8, 0x1d, 0x8e, 0xf0, 0xb1, 0x56, 0x3d, 0xb5, 0x2e,
- 0x50, 0x52, 0xfe, 0xf2, 0xd9, 0x2c, 0x83, 0xd8, 0x96, 0xde, 0x78, 0x09,
- 0x23, 0x3c, 0x0e, 0xc4, 0xf7, 0xd3, 0x55, 0x39, 0x30, 0x75, 0x9d, 0x39,
- 0xcf, 0x95, 0x5a, 0xb6, 0xf1, 0x0c, 0xbc, 0x0e, 0xb2, 0x14, 0x92, 0x70,
- 0xbd, 0xcc, 0xe4, 0xab, 0x7d, 0x37, 0x85, 0xd3, 0x4a, 0xc9, 0x38, 0x86,
- 0x26, 0x1c, 0x2d, 0x20, 0x1c, 0x74, 0x6a, 0xf3, 0x10, 0xd7, 0x0a, 0xdd,
- 0x97, 0x7c, 0x7c, 0x20, 0x1e, 0x33, 0xf2, 0x76, 0x45, 0xd8, 0x65, 0xdc,
- 0xe2, 0x9d, 0x5a, 0xe0, 0xf5, 0x7c, 0x5f, 0x3d, 0xbb, 0x8e, 0xf0, 0x58,
- 0xd4, 0x6a, 0x81, 0x04, 0x69, 0x13, 0x78, 0x50, 0x74, 0x01, 0xb5, 0xed,
- 0x06, 0x21, 0x9a, 0x0d, 0x77, 0xd0, 0x92, 0xde, 0xa8, 0x43, 0x1b, 0x7a,
- 0x6a, 0xc7, 0x4a, 0xb5, 0x4a, 0x38, 0xe6, 0x66, 0xf5, 0xcb, 0x6d, 0xdb,
- 0x5d, 0xda, 0xc4, 0x95, 0x8d, 0x06, 0x03, 0x1b, 0x2b, 0xb5, 0x5b, 0xf5,
- 0x9b, 0xa3, 0x7e, 0x08, 0x35, 0x3f, 0xf0, 0x16, 0x26, 0x7f, 0x46, 0xc3,
- 0x22, 0xdf, 0xca, 0xad, 0xaa, 0x43, 0x3b, 0xeb, 0x8d, 0x04, 0xce, 0xfc,
- 0x68, 0x94, 0x94, 0x0a, 0xb2, 0xd7, 0xb0, 0xd0, 0x56, 0x44, 0x1c, 0x9f,
- 0xd7, 0xb4, 0x81, 0x1c, 0xde, 0xfd, 0x7a, 0x14, 0x51, 0x61, 0x59, 0x27,
- 0x05, 0xc9, 0xc9, 0x6a, 0xd8, 0xbd, 0x8e, 0x50, 0x9a, 0xbe, 0xaf, 0x19,
- 0x3b, 0xe8, 0x3d, 0xcd, 0x43, 0xc7, 0x42, 0xab, 0x90, 0x1f, 0x8f, 0x2a,
- 0x6e, 0xc1, 0x7e, 0x27, 0x89, 0x35, 0xdc, 0x9e, 0xb8, 0xf8, 0xa4, 0x19,
- 0x94, 0x34, 0x78, 0x76, 0x9b, 0x4d, 0xd7, 0x4d, 0xbb, 0x04, 0xce, 0x9b,
- 0x93, 0x22, 0x3b, 0xf1, 0xb4, 0x76, 0x70, 0x15, 0x04, 0xf0, 0x66, 0xeb,
- 0x4c, 0x61, 0x79, 0x5e, 0x6c, 0xed, 0x4a, 0x1c, 0x37, 0x65, 0x0d, 0x9e,
- 0x7f, 0x1c, 0x8b, 0xcf, 0xea, 0x9c, 0xab, 0x8c, 0xdd, 0xa9, 0x2e, 0x59,
- 0x21, 0xfa, 0x79, 0x43, 0xa4, 0xd5, 0x2c, 0xf6, 0xed, 0xb7, 0xec, 0x7b,
- 0xf3, 0x3e, 0x6d, 0xdb, 0x12, 0x8a, 0x5b, 0xae, 0x0e, 0xae, 0x72, 0xf0,
- 0x65, 0xb4, 0x67, 0x1e, 0x25, 0xaf, 0x6c, 0x6f, 0x75, 0x7d, 0x55, 0xf7,
- 0x3f, 0x70, 0x87, 0x1e, 0x9f, 0x5d, 0x3f, 0x15, 0x6f, 0x36, 0xa9, 0x1c,
- 0x24, 0xf3, 0xf0, 0x23, 0xcb, 0xf1, 0x83, 0x55, 0x7c, 0xaa, 0x26, 0x8f,
- 0xcd, 0x1f, 0xdf, 0xd0, 0x1f, 0x73, 0x76, 0x0b, 0x08, 0xa8, 0x1e, 0xfb,
- 0x61, 0x43, 0xd2, 0x1e, 0x9f, 0xd8, 0x3f, 0x6c, 0xa2, 0x96, 0x39, 0x75,
- 0xaa, 0x54, 0x24, 0x08, 0x3e, 0x07, 0x86, 0x04, 0xd3, 0x46, 0xc7, 0x19,
- 0x68, 0xfd, 0x70, 0xbc, 0xbe, 0x03, 0x88, 0x71, 0x03, 0x20, 0xb2, 0x0d,
- 0xe0, 0x73, 0x1a, 0x33, 0x23, 0x2f, 0x63, 0xf5, 0xa3, 0x66, 0xab, 0xfe,
- 0x41, 0x71, 0x38, 0x5b, 0xca, 0x3e, 0xcb, 0x34, 0xb7, 0x42, 0x48, 0xd0,
- 0xcb, 0xe7, 0x60, 0xef, 0x34, 0x5d, 0x33, 0x66, 0x67, 0x61, 0x42, 0xaa,
- 0x05, 0xca, 0xeb, 0x5b, 0x32, 0x84, 0xbb, 0xfc, 0x11, 0x62, 0xce, 0xf6,
- 0xbf, 0xf7, 0x06, 0xf5, 0xd3, 0x72, 0xe1, 0xf9, 0x2a, 0xc0, 0xf9, 0x91,
- 0xda, 0xc3, 0xe6, 0x8c, 0x18, 0x9c, 0x0e, 0x1e, 0x16, 0x5b, 0x87, 0x15,
- 0x93, 0x9e, 0x79, 0x2e, 0xd1, 0x1a, 0x8f, 0x9a, 0x6e, 0x80, 0x2b, 0x7c,
- 0xd2, 0x68, 0xf5, 0x32, 0x5b, 0x52, 0xe0, 0xcb, 0xca, 0x45, 0xc1, 0xf0,
- 0x22, 0xc5, 0x0a, 0x1f, 0x1f, 0xc6, 0x87, 0x9b, 0x91, 0xfe, 0x46, 0x22,
- 0x96, 0xd3, 0xb7, 0xfe, 0x2d, 0x88, 0x76, 0xd6, 0x77, 0xc5, 0xf4, 0xea,
- 0xcd, 0xfb, 0x71, 0xfc, 0xf5, 0x70, 0x71, 0x78, 0xde, 0xe8, 0x21, 0x44,
- 0x0c, 0x50, 0x60, 0x04, 0xc4, 0xd2, 0x28, 0x79, 0xaf, 0xbc, 0xdf, 0xc5,
- 0x87, 0x6b, 0xbd, 0x60, 0x3d, 0x81, 0xa4, 0x58, 0x30, 0x13, 0x17, 0xcd,
- 0x13, 0x61, 0x97, 0x61, 0x4a, 0x57, 0x81, 0x96, 0x17, 0x2a, 0xd0, 0xf6,
- 0x4e, 0x53, 0xc0, 0x08, 0x1d, 0xe2, 0x31, 0x64, 0xe5, 0x25, 0xa0, 0x75,
- 0xe9, 0x1a, 0x0d, 0x77, 0xf4, 0x8f, 0x9f, 0x72, 0xcc, 0x27, 0xc6, 0xa2,
- 0xcd, 0x22, 0xc1, 0x45, 0x7f, 0x87, 0x5a, 0x09, 0x41, 0x5e, 0xf0, 0xd7,
- 0xd0, 0xea, 0x82, 0x5e, 0x67, 0x32, 0x1d, 0x08, 0xb5, 0xe2, 0x47, 0x55,
- 0xdf, 0x92, 0xcc, 0xa6, 0x1c, 0x7e, 0xf5, 0xe7, 0x50, 0x7a, 0xbe, 0x79,
- 0xdf, 0xf3, 0x39, 0xfa, 0xcd, 0x50, 0xab, 0x09, 0x45, 0x23, 0xf0, 0x54,
- 0xfa, 0x70, 0x2f, 0x04, 0x0b, 0x39, 0x3e, 0x01, 0x05, 0x4a, 0xbe, 0x87,
- 0x4b, 0x98, 0x27, 0xe4, 0x8f, 0x8d, 0x0f, 0x4a, 0x4e, 0x7f, 0xfc, 0x53,
- 0x94, 0xec, 0xbf, 0xc3, 0x09, 0x7e, 0xc9, 0x39, 0x07, 0x71, 0xcf, 0x44,
- 0x13, 0xde, 0x8d, 0x1c, 0x91, 0xfb, 0x4c, 0x7c, 0x38, 0xe2, 0x6f, 0x31,
- 0x48, 0x2a, 0xe2, 0x0b, 0x87, 0xfc, 0xc7, 0xde, 0xa1, 0x4d, 0x4e, 0xb3,
- 0x05, 0xa1, 0xb8, 0xa4, 0x46, 0x80, 0x87, 0x0a, 0x42, 0x91, 0xdf, 0x8e,
- 0x91, 0x4f, 0xd0, 0x43, 0xcd, 0x48, 0x3c, 0xe0, 0x8c, 0x03, 0xbb, 0x07,
- 0x34, 0x51, 0xd5, 0xc4, 0xa2, 0x33, 0x19, 0xb3, 0xfb, 0xee, 0x3e, 0x62,
- 0xca, 0x23, 0xf9, 0x74, 0x9b, 0x70, 0x37, 0xdf, 0x19, 0x25, 0x89, 0x84,
- 0xeb, 0xfd, 0xd7, 0xd8, 0xd2, 0x8d, 0x7d, 0x27, 0xd9, 0x99, 0x18, 0x89,
- 0xed, 0xe1, 0xe8, 0x10, 0xbf, 0x79, 0x8c, 0x12, 0x96, 0xf8, 0x70, 0x4f,
- 0x3e, 0x7f, 0xf2, 0x78, 0x77, 0x77, 0x20, 0xae, 0x2a, 0xce, 0x8e, 0x99,
- 0x50, 0x31, 0x56, 0x4e, 0x7c, 0x8b, 0xe3, 0x4c, 0xb4, 0xc1, 0x57, 0xdc,
- 0x57, 0x89, 0xbf, 0x1b, 0x89, 0x80, 0x3b, 0x83, 0xcf, 0xbe, 0x4a, 0x87,
- 0x48, 0x26, 0x38, 0x38, 0xba, 0x35, 0x83, 0x53, 0xe5, 0x89, 0xb5, 0x0b,
- 0xba, 0xf4, 0x72, 0x05, 0x38, 0x52, 0x9c, 0x87, 0x91, 0xdc, 0x4a, 0x1c,
- 0x2f, 0x4e, 0x55, 0xd2, 0x86, 0x89, 0xa0, 0x67, 0x2c, 0xf6, 0xe8, 0x0f,
- 0xa2, 0xe7, 0x2b, 0x6d, 0x54, 0x7b, 0xb6, 0x9e, 0x2c, 0x8c, 0x04, 0x1a,
- 0xaf, 0xe7, 0x73, 0x73, 0xd6, 0x27, 0xb9, 0xb4, 0x1c, 0x16, 0x5b, 0x81,
- 0xdd, 0xe4, 0x91, 0xfa, 0x1b, 0x3f, 0xb8, 0x08, 0x4a, 0x63, 0x52, 0x6b,
- 0xd5, 0xcd, 0xb8, 0x12, 0x6e, 0xd6, 0xdb, 0xb6, 0x56, 0xfc, 0xad, 0x7a,
- 0x3d, 0x1f, 0xf6, 0x2d, 0xec, 0x36, 0xab, 0x43, 0x33, 0xee, 0x1d, 0xc5,
- 0x6d, 0x8d, 0xc0, 0x7e, 0x30, 0x7f, 0xb2, 0xbd, 0x7d, 0xdb, 0x29, 0xbb,
- 0x56, 0xef, 0xbc, 0x21, 0xbd, 0x13, 0x18, 0x3c, 0x14, 0xcd, 0x48, 0x5e,
- 0xb2, 0x86, 0x19, 0xed, 0xf6, 0xca, 0x2d, 0x09, 0x05, 0x0c, 0xc1, 0xd7,
- 0x45, 0xa1, 0xd6, 0xc3, 0xef, 0x9f, 0xce, 0x29, 0x31, 0x99, 0x93, 0x30,
- 0x17, 0x19, 0x32, 0xba, 0x89, 0x3f, 0x86, 0xa8, 0x24, 0x95, 0xe0, 0xbf,
- 0x8b, 0xd7, 0x20, 0x11, 0xe7, 0x87, 0x38, 0xf1, 0x91, 0x5e, 0x97, 0x02,
- 0x58, 0x09, 0x4e, 0x20, 0xc6, 0xf3, 0xe1, 0x58, 0x82, 0xd9, 0x97, 0x59,
- 0xcc, 0xb0, 0x6b, 0x87, 0x78, 0x14, 0x6c, 0xa1, 0x66, 0x3f, 0xa8, 0x7c,
- 0x25, 0xf4, 0xdd, 0xd0, 0x71, 0x85, 0x96, 0x58, 0x03, 0x9b, 0x38, 0xd9,
- 0xe2, 0xf9, 0x6c, 0x09, 0x1c, 0x8a, 0xd6, 0xc9, 0x21, 0x01, 0x4b, 0x0d,
- 0x07, 0x56, 0xbd, 0x65, 0x7c, 0xf6, 0xee, 0x45, 0x62, 0xea, 0xa2, 0x4a,
- 0x7e, 0xa9, 0x79, 0x5c, 0x5b, 0x89, 0xf4, 0xb0, 0xef, 0x74, 0xe0, 0x96,
- 0xe1, 0xec, 0xae, 0x44, 0x10, 0x17, 0x38, 0x33, 0x02, 0x49, 0xea, 0x74,
- 0x6a, 0x66, 0xd0, 0xe1, 0x56, 0x5c, 0x9f, 0xb6, 0x7b, 0x40, 0x8e, 0xd8,
- 0x0c, 0xc6, 0x6d, 0xcb, 0xf0, 0xd3, 0xaf, 0xa8, 0x9d, 0x4f, 0xe9, 0xdd,
- 0x4d, 0xde, 0xac, 0x43, 0xa6, 0x2b, 0x91, 0x62, 0xe0, 0x53, 0x20, 0x34,
- 0x41, 0x27, 0xe1, 0x40, 0x24, 0x60, 0xe5, 0x51, 0xb2, 0x5b, 0x03, 0x70,
- 0x68, 0xcb, 0x24, 0xa8, 0x17, 0x89, 0x51, 0x48, 0x6e, 0x82, 0x0c, 0x71,
- 0x02, 0x30, 0x75, 0xb3, 0x6b, 0x57, 0xc0, 0x99, 0x01, 0x7e, 0xff, 0x5f,
- 0xfa, 0xcb, 0x8f, 0xb4, 0x59, 0xff, 0xd4, 0xcd, 0x92, 0x69, 0xa7, 0x01,
- 0x4c, 0x02, 0xcc, 0xeb, 0xdf, 0x63, 0x53, 0xfe, 0x46, 0x49, 0x4d, 0xbc,
- 0x33, 0x04, 0x50, 0x84, 0xe1, 0x7e, 0x3f, 0xb2, 0x6a, 0xb4, 0x0e, 0x41,
- 0x65, 0xdf, 0xec, 0x2c, 0x98, 0xdc, 0x05, 0x2e, 0x29, 0xa2, 0xc1, 0x1f,
- 0x8a, 0x01, 0xa0, 0x96, 0x8d, 0x45, 0x47, 0x28, 0x2d, 0xdc, 0x31, 0x94,
- 0x8f, 0xf1, 0x87, 0x4a, 0x30, 0x87, 0x8c, 0x2d, 0x63, 0x26, 0x4e, 0x76,
- 0x1e, 0xff, 0x3c, 0x6e, 0x58, 0xd8, 0x74, 0x59, 0xdd, 0xe7, 0x16, 0x08,
- 0x95, 0x19, 0x89, 0x9a, 0x61, 0xab, 0x29, 0x3e, 0x51, 0xfc, 0x17, 0x26,
- 0xd5, 0xee, 0xd9, 0x03, 0xa3, 0x45, 0x20, 0xa8, 0xf5, 0x55, 0x6e, 0xda,
- 0x66, 0x83, 0x7a, 0xbf, 0xff, 0x2f, 0x4e, 0x04, 0xfc, 0x67, 0xa8, 0xfb,
- 0x9e, 0x5e, 0x1c, 0xbd, 0xc0, 0x94, 0x7e, 0x3f, 0xac, 0xef, 0x96, 0x93,
- 0x72, 0x21, 0xb7, 0x8e, 0xf6, 0xde, 0x6c, 0xa0, 0xfe, 0x8c, 0x69, 0x04,
- 0xb1, 0xba, 0xa1, 0x07, 0x60, 0x32, 0x88, 0xf6, 0xa6, 0x80, 0x1d, 0x96,
- 0x94, 0x53, 0x2e, 0x68, 0xa5, 0xda, 0x05, 0x73, 0xfb, 0x7e, 0x9f, 0x28,
- 0x2a, 0x09, 0xb7, 0xe0, 0x94, 0x46, 0xab, 0x1e, 0x68, 0x66, 0xbc, 0xc8,
- 0x32, 0xba, 0x7f, 0x1e, 0xa1, 0x58, 0xeb, 0x29, 0x06, 0xfd, 0x42, 0xcc,
- 0xc2, 0x4c, 0xf3, 0x23, 0xaa, 0x26, 0xf9, 0xd5, 0xd7, 0xfc, 0xa3, 0xe1,
- 0x05, 0xfd, 0x48, 0x72, 0x68, 0x14, 0x6a, 0x80, 0xa8, 0x53, 0x2b, 0x4f,
- 0x06, 0x91, 0x02, 0xe5, 0x24, 0x96, 0x9a, 0x87, 0x9e, 0xe5, 0x45, 0x28,
- 0x91, 0xf5, 0x5e, 0x7f, 0xcc, 0x80, 0xc8, 0x9b, 0x5f, 0x67, 0x9b, 0x47,
- 0x03, 0x5d, 0x10, 0x67, 0x5e, 0xa2, 0xe3, 0xa3, 0x4d, 0xef, 0xf4, 0x91,
- 0x59, 0x18, 0x17, 0x8d, 0xa3, 0xa9, 0xa3, 0xfb, 0x86, 0xe3, 0xa8, 0x0a,
- 0xdc, 0x3d, 0x92, 0xfa, 0x43, 0xce, 0x35, 0xaf, 0x43, 0x46, 0x43, 0xe5,
- 0x38, 0xc8, 0x37, 0xa2, 0x71, 0xef, 0x59, 0x2b, 0x00, 0x32, 0x99, 0x71,
- 0x89, 0xd7, 0x2c, 0x12, 0xdf, 0x96, 0xac, 0x3e, 0x0a, 0x85, 0x6f, 0x1e,
- 0xce, 0xc5, 0xc9, 0x25, 0x32, 0x75, 0x8c, 0xae, 0xc4, 0x25, 0x67, 0x1f,
- 0x62, 0x9e, 0xa8, 0x63, 0x59, 0x92, 0xdf, 0x36, 0x12, 0x67, 0x4e, 0x62,
- 0x6e, 0x3c, 0x44, 0x47, 0xff, 0x73, 0xe0, 0xa6, 0xc3, 0xbe, 0xad, 0xa1,
- 0x17, 0x66, 0x1f, 0x09, 0xe4, 0xe5, 0xe6, 0xe1, 0x38, 0xff, 0xfe, 0xe9,
- 0x68, 0x7f, 0x37, 0x38, 0xd4, 0x66, 0xf5, 0xd1, 0x10, 0x47, 0x75, 0xf7,
- 0x91, 0xb2, 0x54, 0x71, 0x66, 0x1a, 0x55, 0xc0, 0x0f, 0xb0, 0xb5, 0x8c,
- 0x5e, 0xb0, 0x5e, 0xd1, 0x38, 0x20, 0xf2, 0x45, 0xc9, 0x26, 0xdb, 0x7d,
- 0xcb, 0x90, 0x08, 0xb5, 0x24, 0x34, 0xfa, 0x20, 0x3a, 0x3b, 0xed, 0x1e,
- 0x70, 0x8f, 0x83, 0x89, 0x51, 0x06, 0xca, 0x47, 0x84, 0xae, 0x2d, 0x31,
- 0x19, 0xc9, 0x97, 0x55, 0xf9, 0xd4, 0x6f, 0x88, 0x8a, 0x07, 0x40, 0x4f,
- 0x8c, 0x0c, 0x4a, 0xb1, 0xec, 0x28, 0x08, 0x72, 0xe7, 0x7f, 0xf0, 0xff,
- 0xba, 0x88, 0x95, 0x26, 0x3b, 0x42, 0x04, 0x9a, 0x69, 0x52, 0x5e, 0x8d,
- 0x97, 0x7f, 0x10, 0xa2, 0xd4, 0x77, 0xfe, 0x07, 0x94, 0xf5, 0xc3, 0x44,
- 0xca, 0x2a, 0xf2, 0xb4, 0xb6, 0x33, 0xe4, 0x25, 0xe0, 0x4a, 0x61, 0xc1,
- 0x82, 0x77, 0x76, 0xef, 0x3d, 0xe4, 0x0c, 0x34, 0x52, 0x40, 0x46, 0x3d,
- 0x3b, 0xc3, 0x89, 0xc3, 0xdd, 0x9d, 0xe9, 0xdf, 0x10, 0x5d, 0xf3, 0x70,
- 0xf3, 0xb7, 0x15, 0x18, 0x6e, 0x47, 0xa2, 0x78, 0xd0, 0xce, 0x77, 0x39,
- 0x5b, 0x0e, 0xc4, 0xa0, 0x20, 0x72, 0xc2, 0x62, 0xee, 0xb9, 0xb5, 0x3b,
- 0xed, 0xde, 0xb7, 0x3d, 0xe7, 0x6c, 0x8b, 0x80, 0x98, 0x69, 0xd0, 0xcf,
- 0xbc, 0xca, 0x20, 0xd6, 0x4a, 0x69, 0x3d, 0x89, 0x65, 0x3d, 0x0a, 0x2a,
- 0xf0, 0x13, 0x3e, 0xff, 0x64, 0x3f, 0x42, 0xff, 0x48, 0x1f, 0xfe, 0x98,
- 0xaf, 0x7c, 0x9e, 0x75, 0x7c, 0x86, 0xb6, 0xa3, 0xa8, 0x7d, 0x11, 0x86,
- 0xca, 0x59, 0xc6, 0x94, 0x74, 0x21, 0x3f, 0xc0, 0xcd, 0xbe, 0x77, 0x33,
- 0xa7, 0x0c, 0x7f, 0x00, 0x87, 0x80, 0x87, 0x14, 0x31, 0x54, 0x25, 0x4d,
- 0xfd, 0x03, 0xe4, 0xf5, 0x7a, 0x1c, 0x09, 0x44, 0x25, 0x11, 0x77, 0x99,
- 0xbf, 0xa4, 0xc3, 0xe7, 0xbd, 0x4b, 0x82, 0x81, 0x65, 0x97, 0xc4, 0xf3,
- 0x6f, 0x75, 0xda, 0x68, 0x2f, 0xc4, 0x9b, 0xe9, 0x3d, 0x4b, 0x72, 0xcb,
- 0xb8, 0x77, 0x26, 0xe6, 0x4b, 0x1f, 0x1d, 0x46, 0x7b, 0xf2, 0xde, 0x7e,
- 0xd8, 0x28, 0x26, 0x0e, 0xbc, 0x1d, 0x2d, 0xe4, 0x73, 0x6d, 0x29, 0x3d,
- 0x45, 0x68, 0x3d, 0xaa, 0x51, 0x27, 0x11, 0x05, 0xbb, 0x43, 0x5f, 0x8f,
- 0xa2, 0x73, 0xd0, 0x4e, 0xb4, 0xb5, 0x3f, 0x07, 0xf7, 0x43, 0xbe, 0x2e,
- 0x24, 0xfa, 0xe6, 0xa5, 0x74, 0x87, 0xb6, 0xd3, 0xb9, 0x67, 0x0e, 0x7c,
- 0x05, 0xee, 0x9f, 0x05, 0x6e, 0xd1, 0xc7, 0xba, 0x5e, 0x10, 0xa9, 0xe7,
- 0xf3, 0x3b, 0x33, 0xa5, 0xba, 0x17, 0x3c, 0xc6, 0x17, 0xa0, 0xfc, 0x9c,
- 0x1e, 0x96, 0x67, 0x30, 0x6f, 0xd7, 0xf0, 0x69, 0xae, 0x32, 0x4a, 0xbe,
- 0x61, 0x70, 0xf0, 0xfb, 0x88, 0x91, 0xc4, 0x30, 0x3e, 0xef, 0xe2, 0x7c,
- 0xc2, 0x27, 0xac, 0xba, 0x30, 0xa2, 0xde, 0xec, 0xb0, 0x05, 0xef, 0x65,
- 0xa1, 0xad, 0x91, 0x68, 0x10, 0x17, 0xda, 0x6e, 0x6f, 0x08, 0x15, 0x22,
- 0x06, 0x1b, 0xa2, 0xbb, 0xff, 0x11, 0x16, 0x25, 0xc7, 0xa3, 0xb5, 0xff,
- 0xba, 0xe2, 0x24, 0xd1, 0xa0, 0x20, 0x0e, 0x8d, 0x28, 0x0f, 0x4f, 0x48,
- 0x16, 0x2e, 0x22, 0xe0, 0xe7, 0x49, 0x0c, 0xcc, 0x02, 0xdd, 0xae, 0x24,
- 0x0d, 0x5b, 0xcf, 0x7a, 0xa7, 0x94, 0x9a, 0xd2, 0x21, 0x5a, 0x85, 0xe3,
- 0x17, 0xbd, 0x2e, 0x56, 0x97, 0xee, 0xd1, 0xec, 0x4a, 0xf2, 0x99, 0x2a,
- 0x6a, 0x92, 0x53, 0x41, 0xd0, 0x95, 0x50, 0x1b, 0xd2, 0x29, 0x75, 0x85,
- 0x91, 0x3c, 0xcf, 0x74, 0xf3, 0x70, 0x3a, 0x1b, 0x69, 0x97, 0x06, 0x53,
- 0xeb, 0x12, 0xc0, 0x5e, 0x65, 0x87, 0x94, 0x8c, 0x50, 0x89, 0xec, 0x1c,
- 0x09, 0x53, 0xcb, 0xb2, 0x2e, 0xfc, 0x92, 0x0b, 0xc3, 0xb9, 0x3a, 0x8c,
- 0xeb, 0x5f, 0xb8, 0xde, 0x96, 0x4b, 0x09, 0x93, 0x02, 0x8f, 0x2a, 0xab,
- 0x0e, 0x17, 0xba, 0x4f, 0x30, 0x46, 0x19, 0x83, 0xac, 0x41, 0x79, 0x94,
- 0xbf, 0x86, 0xdf, 0x98, 0x45, 0x49, 0xfa, 0xab, 0x7f, 0xe5, 0xe8, 0x08,
- 0xe5, 0xc7, 0x3b, 0xb5, 0xc3, 0x51, 0xa6, 0x5a, 0xb9, 0x59, 0x62, 0xe3,
- 0x05, 0xbb, 0x49, 0x0c, 0x69, 0xad, 0xab, 0xc6, 0x19, 0x0a, 0xf6, 0x45,
- 0x16, 0xc2, 0xd1, 0xf7, 0xde, 0x0d, 0x82, 0xaa, 0xfb, 0x68, 0xbb, 0x79,
- 0x70, 0xe0, 0x06, 0x0d, 0xec, 0xd3, 0xa5, 0x91, 0xe7, 0x60, 0x06, 0x0c,
- 0x3a, 0xe8, 0x18, 0x97, 0x3e, 0x1d, 0xf1, 0xd1, 0x61, 0x34, 0x8d, 0x01,
- 0x6f, 0x1a, 0x4d, 0xab, 0x04, 0xed, 0x50, 0x08, 0xa5, 0xde, 0x73, 0xd3,
- 0x08, 0x0d, 0x28, 0xfa, 0x45, 0x8b, 0x50, 0xfb, 0xa0, 0xf9, 0xc3, 0x70,
- 0x87, 0x8a, 0x7c, 0x2f, 0xdf, 0xf1, 0x59, 0x44, 0xfc, 0xd3, 0x9a, 0xff,
- 0xff, 0xb0, 0x4f, 0x6b, 0x0e, 0x7b, 0x38, 0x16, 0x35, 0x32, 0x71, 0xe7,
- 0x40, 0x63, 0xa5, 0x94, 0x48, 0x70, 0xe9, 0xb5, 0x5a, 0xe1, 0xf6, 0x37,
- 0xce, 0xa0, 0x31, 0xbc, 0xb3, 0x5e, 0x13, 0x46, 0xf6, 0xfc, 0x3e, 0x59,
- 0x2e, 0x95, 0x18, 0xf0, 0x20, 0xd9, 0xf1, 0x08, 0x5c, 0xb2, 0xdd, 0x03,
- 0xa6, 0x67, 0x56, 0x76, 0x89, 0xfe, 0xac, 0xe4, 0x87, 0xdd, 0x39, 0xb9,
- 0x49, 0xfd, 0xc4, 0x59, 0xf1, 0x78, 0x0f, 0x99, 0xd3, 0x4f, 0x97, 0x6b,
- 0x1d, 0xc1, 0xd6, 0x15, 0x65, 0x2d, 0x59, 0xf5, 0x10, 0x66, 0x7f, 0x8f,
- 0x28, 0x6b, 0x49, 0xab, 0xfb, 0xef, 0x6c, 0x9f, 0x28, 0x3b, 0x88, 0xb2,
- 0x10, 0x86, 0xf4, 0xd6, 0xff, 0xbd, 0x45, 0xca, 0x0b, 0x84, 0x85, 0x61,
- 0x66, 0x39, 0xd1, 0x35, 0x0a, 0x2b, 0xc9, 0x96, 0xeb, 0x38, 0x22, 0xa3,
- 0x75, 0xb7, 0x49, 0x3c, 0x03, 0x5d, 0x1d, 0x2a, 0x9c, 0x45, 0xa6, 0x7e,
- 0x11, 0x76, 0x8c, 0x8c, 0xac, 0xa2, 0xfb, 0x00, 0x86, 0xfc, 0xf4, 0x51,
- 0x7c, 0x0d, 0x40, 0x85, 0xff, 0x6d, 0xd6, 0x10, 0x3a, 0x85, 0x46, 0xce,
- 0xbe, 0xbf, 0x9f, 0x03, 0x48, 0x9e, 0xfc, 0x80, 0xfb, 0xd6, 0x72, 0xcd,
- 0xcf, 0x44, 0x11, 0xa5, 0x1d, 0x76, 0x37, 0x39, 0x82, 0xd9, 0x59, 0x7b,
- 0x8f, 0xc5, 0x83, 0xc7, 0x35, 0xb1, 0x9a, 0x0b, 0x4c, 0xdb, 0x96, 0x43,
- 0x74, 0xcb, 0x48, 0x2c, 0x7c, 0x4c, 0x57, 0x2b, 0x91, 0x36, 0xf7, 0x93,
- 0x3c, 0xc3, 0x36, 0x72, 0x8f, 0x5e, 0xea, 0x13, 0x05, 0x84, 0xcc, 0xa6,
- 0x2c, 0x3f, 0xb1, 0x4b, 0x95, 0x53, 0xb0, 0xa9, 0x16, 0x32, 0x09, 0x91,
- 0xa2, 0x03, 0x92, 0x5f, 0x24, 0x7a, 0x6f, 0xf6, 0xc6, 0xe3, 0xaf, 0xf7,
- 0xb2, 0x66, 0xaa, 0x62, 0x6f, 0xcf, 0xa5, 0xff, 0x59, 0xf3, 0xfb, 0x9e,
- 0xe1, 0x20, 0x78, 0xd1, 0xaf, 0x8f, 0x88, 0xdf, 0xfa, 0xb5, 0x1f, 0x40,
- 0xfb, 0xd8, 0x84, 0xb6, 0x2d, 0xfa, 0x0b, 0x2f, 0x53, 0x60, 0xa8, 0x75,
- 0x75, 0x1d, 0x97, 0x02, 0x26, 0x4d, 0x3a, 0x1d, 0x9b, 0xa9, 0xf7, 0xdf,
- 0x6c, 0xb7, 0xb8, 0xe8, 0x52, 0xc8, 0xb3, 0x42, 0x29, 0x3f, 0xeb, 0xd5,
- 0x6f, 0x7e, 0x9e, 0x28, 0x7b, 0x72, 0xe1, 0x64, 0x24, 0x48, 0xdd, 0x3f,
- 0xe1, 0x15, 0x39, 0x31, 0xd8, 0x4f, 0xf1, 0x00, 0xa6, 0xfb, 0xe0, 0x29,
- 0x3f, 0x78, 0xc6, 0x5c, 0xf9, 0x2b, 0x33, 0xc0, 0x84, 0xe1, 0x9c, 0x96,
- 0x10, 0x10, 0x98, 0xd5, 0x24, 0xbb, 0xcc, 0x8b, 0x07, 0x39, 0xf7, 0x34,
- 0x4b, 0x87, 0xd3, 0x5e, 0xb2, 0xa1, 0x1d, 0x57, 0x12, 0x80, 0x6b, 0xc9,
- 0x15, 0xbe, 0x2c, 0xef, 0x9d, 0x5d, 0x2a, 0x40, 0xdb, 0x24, 0x16, 0x3c,
- 0xdf, 0xfb, 0x54, 0xe9, 0x87, 0xf2, 0x78, 0xf2, 0xe9, 0x9a, 0xf2, 0x8f,
- 0x23, 0x1d, 0xa7, 0x03, 0x37, 0x96, 0x51, 0xf8, 0xb8, 0xd6, 0xea, 0x9a,
- 0xc2, 0xf2, 0x3d, 0x67, 0x61, 0xf5, 0xfa, 0xfb, 0xc8, 0x83, 0x12, 0xaf,
- 0x17, 0x0b, 0x6b, 0x07, 0xdc, 0x2b, 0x92, 0x8c, 0x38, 0x5b, 0xe9, 0xf6,
- 0x10, 0x5d, 0x48, 0x57, 0x4d, 0x22, 0xd3, 0x81, 0x5e, 0x8c, 0x41, 0xf2,
- 0x60, 0x52, 0xe0, 0xb2, 0x4c, 0xdd, 0x5b, 0xc5, 0x0d, 0xd6, 0x44, 0x7e,
- 0x40, 0x88, 0xd3, 0x2f, 0xd3, 0xa9, 0x9a, 0x76, 0xf7, 0xcd, 0x2e, 0xe5,
- 0x4e, 0x73, 0xed, 0x4d, 0x70, 0x48, 0x14, 0x56, 0xa1, 0xe0, 0xec, 0xa8,
- 0x87, 0xd9, 0x6e, 0xb9, 0xb6, 0x8c, 0x76, 0xd1, 0x3d, 0x6f, 0xbf, 0xea,
- 0xd1, 0xc3, 0x2d, 0x90, 0xa8, 0x41, 0x8e, 0xb9, 0x62, 0xe6, 0x0f, 0xbf,
- 0x3e, 0xbf, 0x06, 0x03, 0xd7, 0xca, 0x09, 0xd2, 0x4a, 0xdd, 0xf5, 0x11,
- 0x8c, 0x7c, 0x54, 0xd3, 0x3c, 0xd0, 0x15, 0x82, 0x0c, 0xfd, 0xf6, 0x35,
- 0xea, 0x32, 0x08, 0x4d, 0xca, 0x5c, 0xd4, 0xe5, 0xfd, 0x5a, 0xa0, 0x9c,
- 0x80, 0xd7, 0x28, 0x8a, 0xd0, 0xf5, 0x59, 0xc0, 0x1a, 0x5b, 0x88, 0xae,
- 0x0e, 0x87, 0x9f, 0x1e, 0xe0, 0x52, 0x34, 0x07, 0x18, 0xbf, 0x31, 0xac,
- 0x9b, 0xb7, 0x35, 0xf5, 0x70, 0x97, 0x2d, 0x50, 0x2c, 0x32, 0xf7, 0x38,
- 0xbf, 0xf6, 0x21, 0x44, 0x44, 0x0e, 0xcf, 0xc8, 0x5d, 0x45, 0xdf, 0x02,
- 0x35, 0xca, 0x9c, 0xc9, 0xe7, 0x9c, 0xa6, 0x19, 0xc7, 0x9f, 0xe8, 0x75,
- 0x57, 0xcc, 0x01, 0x23, 0x94, 0xf4, 0xc9, 0xe1, 0x7d, 0xae, 0x76, 0x8d,
- 0x4a, 0x50, 0x06, 0x29, 0x60, 0x03, 0x16, 0x33, 0x05, 0x05, 0xa3, 0xfa,
- 0x4f, 0xf6, 0x48, 0x58, 0xa0, 0xfd, 0x17, 0x9b, 0x87, 0xd3, 0xfe, 0x1c,
- 0xbf, 0x22, 0xd2, 0xe8, 0x6d, 0x6a, 0xee, 0x40, 0xb4, 0xaa, 0xa2, 0x4e,
- 0xaf, 0x19, 0x61, 0x4c, 0x82, 0x7b, 0x70, 0x02, 0x13, 0xc7, 0x6f, 0x37,
- 0xb5, 0x6d, 0x77, 0xac, 0xab, 0x9b, 0x48, 0x09, 0x89, 0xd1, 0xea, 0x29,
- 0xba, 0x0d, 0x69, 0x61, 0x2c, 0xea, 0x14, 0xb5, 0x23, 0xe6, 0x07, 0xd9,
- 0x6d, 0xc3, 0xc1, 0x05, 0x09, 0xc4, 0xd0, 0x54, 0x72, 0xa3, 0xd5, 0x21,
- 0xcf, 0xc2, 0x81, 0x98, 0x46, 0xaa, 0x2a, 0xa4, 0x68, 0x11, 0x5f, 0xb3,
- 0xfe, 0xba, 0xdb, 0xd9, 0xe5, 0xa8, 0xac, 0x72, 0x92, 0x37, 0x48, 0x1a,
- 0xd5, 0xd1, 0x88, 0xf0, 0x07, 0xe0, 0x26, 0x64, 0x3d, 0xc6, 0x86, 0x93,
- 0xc0, 0x5a, 0xa2, 0x70, 0xa4, 0xed, 0x71, 0x97, 0x20, 0x56, 0xc4, 0xdc,
- 0xec, 0x98, 0x82, 0x82, 0x1a, 0x6a, 0xab, 0xbc, 0x12, 0x2d, 0xc2, 0xb1,
- 0xed, 0x5c, 0x35, 0xe9, 0xc5, 0x2e, 0xd9, 0xad, 0x95, 0xa2, 0xb0, 0x37,
- 0x69, 0x85, 0x62, 0xf6, 0xc0, 0x17, 0x95, 0xd7, 0xf5, 0x1a, 0x07, 0xf6,
- 0xf6, 0xf8, 0xe4, 0xc8, 0x66, 0xb5, 0xfd, 0xbf, 0x7b, 0x23, 0xda, 0xf0,
- 0x6a, 0x1a, 0xe4, 0xf0, 0x71, 0x0d, 0xa9, 0x57, 0x10, 0x2c, 0x45, 0xa6,
- 0xdf, 0x0c, 0xb8, 0xf3, 0x25, 0x7e, 0xdc, 0xaa, 0x30, 0x3d, 0x7a, 0xff,
- 0xed, 0xf1, 0xf9, 0xe9, 0xfb, 0x77, 0x47, 0xef, 0x2f, 0x3e, 0xf3, 0xd8,
- 0x5d, 0xac, 0xaf, 0x43, 0x1d, 0xa6, 0x17, 0xe4, 0x14, 0x0e, 0xba, 0x41,
- 0x09, 0x20, 0xf7, 0x57, 0x31, 0xeb, 0x94, 0x7f, 0x8d, 0xfc, 0xe1, 0xbc,
- 0x87, 0xd4, 0xb3, 0x4f, 0x89, 0x24, 0x2b, 0x72, 0xec, 0xcc, 0x28, 0xaa,
- 0x3a, 0xe2, 0x58, 0x80, 0xed, 0x1d, 0x4c, 0xad, 0x25, 0x6e, 0x09, 0xca,
- 0x1b, 0xa9, 0xc0, 0xd4, 0x27, 0xf6, 0x33, 0xbb, 0x25, 0x1c, 0x05, 0x74,
- 0xb1, 0xd2, 0xd6, 0x24, 0x1c, 0x71, 0x7f, 0xe0, 0x12, 0xd0, 0x78, 0x8f,
- 0x0a, 0xc5, 0xbe, 0x73, 0x6d, 0xe5, 0xaf, 0xd2, 0xda, 0xc5, 0x5e, 0xc4,
- 0x71, 0xe3, 0x03, 0xd5, 0x78, 0xb8, 0xc0, 0x5e, 0x9b, 0xe3, 0x2e, 0x16,
- 0xb0, 0xb7, 0x8a, 0xbf, 0xaa, 0xb7, 0xe8, 0xc5, 0xde, 0xde, 0x8f, 0xe8,
- 0xaf, 0xfd, 0x27, 0x69, 0xb0, 0x1d, 0x42, 0xa0, 0xd6, 0xde, 0x44, 0x84,
- 0xe3, 0x7a, 0xd5, 0x85, 0x44, 0xb7, 0x76, 0x3b, 0xe1, 0x06, 0xfe, 0x78,
- 0x76, 0x7e, 0xfa, 0xfd, 0x5f, 0x7e, 0xe1, 0x4f, 0x78, 0xc9, 0x66, 0x7f,
- 0xa5, 0x1c, 0x4c, 0x1d, 0xfc, 0xc7, 0x9f, 0xf5, 0xb5, 0x8d, 0x9f, 0x6b,
- 0x8f, 0x3f, 0x90, 0x50, 0xbb, 0xbc, 0x11, 0x04, 0xce, 0x51, 0xb8, 0xcd,
- 0x7d, 0xaf, 0xb4, 0x8c, 0xdb, 0x79, 0x38, 0x6c, 0x22, 0x10, 0xcb, 0xb7,
- 0xba, 0x83, 0xe5, 0x11, 0x3a, 0x64, 0x01, 0x4d, 0x83, 0x8a, 0x62, 0x97,
- 0xc1, 0x3b, 0x90, 0xb2, 0x72, 0xaa, 0x1b, 0x1f, 0xa0, 0x1e, 0x19, 0x19,
- 0xa9, 0x76, 0x3f, 0x5e, 0x9d, 0x9c, 0xfc, 0xfc, 0x4d, 0xd0, 0x0e, 0x4c,
- 0xed, 0x6d, 0x40, 0x9b, 0x62, 0xbb, 0xa0, 0xa1, 0xd5, 0x51, 0xf5, 0x0a,
- 0x6c, 0x42, 0xa2, 0x7d, 0x7f, 0x2a, 0xb3, 0x79, 0x09, 0xe5, 0x78, 0x58,
- 0x67, 0x46, 0xa5, 0x4d, 0x29, 0xe2, 0xaf, 0xc0, 0xe2, 0x34, 0xb1, 0x7a,
- 0x8f, 0x13, 0x27, 0x03, 0xa4, 0x73, 0xff, 0x21, 0xce, 0xaa, 0xe4, 0xfd,
- 0xe4, 0xa2, 0x38, 0x94, 0x2d, 0x94, 0x16, 0x95, 0x88, 0xbb, 0xa5, 0x4b,
- 0xc3, 0xee, 0x79, 0xac, 0x21, 0x33, 0xe3, 0x43, 0x90, 0xbc, 0xad, 0xf2,
- 0xfa, 0x13, 0x8a, 0x3a, 0xe8, 0x86, 0x42, 0x43, 0xd2, 0x1a, 0x7e, 0x52,
- 0x79, 0x31, 0x27, 0x01, 0x19, 0x71, 0xf5, 0x74, 0x79, 0x1d, 0x9b, 0x1d,
- 0x09, 0xdd, 0x94, 0x45, 0x31, 0xb9, 0x51, 0xd9, 0x09, 0x9d, 0xb6, 0x8a,
- 0xbb, 0x04, 0x9f, 0x9d, 0x33, 0xa8, 0x6a, 0x0b, 0x33, 0x10, 0x2b, 0x4b,
- 0x1f, 0x68, 0xb9, 0x31, 0x3d, 0xc0, 0x9f, 0x6e, 0xea, 0x6c, 0x31, 0xef,
- 0xa9, 0xb0, 0xf7, 0x19, 0x86, 0xe3, 0x18, 0x5a, 0xe4, 0x6f, 0x7b, 0xc6,
- 0x3b, 0x02, 0x27, 0x30, 0x0e, 0x44, 0x16, 0x42, 0x7f, 0x9d, 0x50, 0xa2,
- 0x2b, 0x89, 0xbe, 0x45, 0x8a, 0x81, 0x90, 0x84, 0xc6, 0xf1, 0x05, 0x1b,
- 0x91, 0x3e, 0xae, 0x67, 0xfb, 0xc5, 0x2c, 0x2c, 0x98, 0x32, 0x2c, 0xc9,
- 0xc7, 0xef, 0xd0, 0x9c, 0xbc, 0xe1, 0x6d, 0xa2, 0xc0, 0x21, 0x7c, 0x52,
- 0xad, 0x67, 0xe4, 0x37, 0x0f, 0x19, 0x2e, 0x85, 0xe7, 0x2b, 0x53, 0xba,
- 0x4d, 0x1a, 0xca, 0xed, 0x6d, 0x12, 0x89, 0x6c, 0x08, 0x62, 0x11, 0x9d,
- 0x6c, 0xac, 0x4e, 0xc2, 0x9b, 0x78, 0x38, 0xf2, 0x03, 0x66, 0x1a, 0x89,
- 0x0d, 0x9b, 0xc7, 0xc8, 0x09, 0xcf, 0x08, 0x32, 0xfe, 0x78, 0x76, 0xa2,
- 0x00, 0xe2, 0xe4, 0x59, 0xb2, 0x1e, 0xa7, 0x50, 0x5a, 0x59, 0x2c, 0x08,
- 0x17, 0x4f, 0x5f, 0x02, 0xc1, 0xa1, 0x18, 0x04, 0x17, 0x42, 0x6e, 0x44,
- 0xab, 0xaa, 0x5d, 0x4b, 0x87, 0x5c, 0xac, 0x1d, 0xd1, 0x96, 0xa0, 0x96,
- 0x17, 0x79, 0xfc, 0x02, 0xa2, 0x88, 0x50, 0x89, 0xad, 0x3a, 0x90, 0x5a,
- 0x59, 0x54, 0xd7, 0x4d, 0xb4, 0xca, 0xd8, 0x36, 0x64, 0x34, 0x22, 0x70,
- 0x51, 0xd6, 0x31, 0x38, 0xcd, 0x09, 0xa5, 0xcd, 0x67, 0x68, 0xc5, 0xc3,
- 0x57, 0xde, 0xfc, 0xf7, 0xe2, 0xf4, 0xf5, 0xe9, 0x89, 0xf9, 0xcb, 0xd1,
- 0xdb, 0xe3, 0xef, 0x9d, 0x56, 0x20, 0x9d, 0xb3, 0x6c, 0x6d, 0x1a, 0xc7,
- 0xcf, 0x01, 0xbd, 0xf8, 0x6c, 0xd0, 0x62, 0xc7, 0x9c, 0x84, 0x48, 0xf9,
- 0x87, 0x2d, 0x61, 0xde, 0xee, 0x2f, 0xe9, 0xf1, 0x39, 0x92, 0xd3, 0x94,
- 0x31, 0xea, 0xe1, 0x8f, 0xa4, 0x02, 0xbd, 0x44, 0x5a, 0x34, 0x8f, 0x6a,
- 0x6b, 0x29, 0xdc, 0x26, 0x1f, 0xb7, 0x58, 0x1c, 0x34, 0x2b, 0x5f, 0x73,
- 0x68, 0x33, 0x47, 0x9e, 0x14, 0x92, 0x30, 0xf2, 0xb9, 0x16, 0xcf, 0x36,
- 0x7e, 0x0f, 0x74, 0xad, 0xa9, 0x92, 0xae, 0x33, 0x94, 0xc1, 0xe3, 0xa3,
- 0xda, 0x17, 0xd9, 0xc0, 0x5b, 0xa4, 0x2a, 0xbc, 0x4d, 0x95, 0x81, 0x31,
- 0x22, 0xaf, 0xa9, 0x85, 0xf2, 0xd1, 0xa1, 0x08, 0x22, 0x05, 0x37, 0x5c,
- 0x7b, 0x4d, 0xb2, 0x01, 0x92, 0xca, 0x87, 0xdc, 0x0a, 0x52, 0xe4, 0x3d,
- 0x88, 0x1f, 0xa1, 0xd6, 0x68, 0xb9, 0x20, 0x97, 0x29, 0xd1, 0x1f, 0x6e,
- 0x12, 0xca, 0x52, 0xe9, 0xab, 0xb6, 0x99, 0x0b, 0xb6, 0x4b, 0x83, 0x52,
- 0xab, 0xd0, 0xb4, 0xa2, 0x33, 0x10, 0x65, 0xbf, 0xad, 0x71, 0xd4, 0x1b,
- 0x3e, 0x1d, 0x6e, 0x40, 0x90, 0x75, 0x4d, 0x59, 0xdf, 0xf5, 0xe3, 0x4d,
- 0x63, 0x90, 0x46, 0xf8, 0xf7, 0x75, 0x7e, 0x9d, 0xa2, 0xb6, 0xcc, 0x5c,
- 0x95, 0xe1, 0x90, 0x5f, 0xea, 0x8c, 0x91, 0xfe, 0xac, 0x41, 0xd2, 0xf6,
- 0x28, 0x4f, 0x7e, 0xce, 0x20, 0x4f, 0x3a, 0x63, 0x5c, 0xfd, 0xac, 0x41,
- 0x86, 0x2a, 0x20, 0x8c, 0x62, 0xfc, 0xfd, 0xf1, 0x45, 0xf2, 0xfa, 0xf4,
- 0x8d, 0xbb, 0x60, 0x17, 0x92, 0x0f, 0x48, 0x24, 0x90, 0x4c, 0xd6, 0x85,
- 0xa1, 0x41, 0xea, 0x97, 0x64, 0x1b, 0x50, 0x70, 0x9e, 0x22, 0x25, 0xe1,
- 0x68, 0x37, 0xfb, 0x2c, 0xaf, 0x18, 0x8e, 0x88, 0x12, 0x6b, 0xe0, 0xbd,
- 0xf1, 0x6a, 0x74, 0xe9, 0xe1, 0x25, 0x01, 0x1d, 0x5d, 0xaa, 0xfc, 0xa5,
- 0x1b, 0x49, 0x58, 0x77, 0x69, 0xa5, 0x25, 0xa5, 0x93, 0x94, 0xf0, 0x8c,
- 0x0a, 0xae, 0x8d, 0xa4, 0xa2, 0x94, 0x10, 0x7a, 0x58, 0x87, 0xf3, 0x11,
- 0x88, 0x8d, 0xee, 0x9c, 0x37, 0x3a, 0x13, 0x3f, 0x93, 0xf0, 0x40, 0x73,
- 0xfd, 0x5b, 0x94, 0x2e, 0x0d, 0xe8, 0x20, 0xfc, 0x28, 0xa9, 0x1b, 0x89,
- 0x2e, 0xe0, 0x23, 0xd2, 0x76, 0x51, 0xcd, 0x17, 0x6e, 0x43, 0x1d, 0x48,
- 0x6c, 0x3b, 0x84, 0xfd, 0xce, 0xa1, 0x84, 0x12, 0x8c, 0x8a, 0xce, 0x5e,
- 0x03, 0xc9, 0x2b, 0xcb, 0xff, 0xe1, 0x29, 0xe8, 0x8f, 0xac, 0x3e, 0x66,
- 0x56, 0xbe, 0x40, 0x67, 0xe7, 0x19, 0xdf, 0x88, 0xfa, 0xce, 0x08, 0xf5,
- 0x5b, 0x18, 0xe4, 0x64, 0x3d, 0x09, 0xa2, 0x93, 0x7b, 0xf3, 0xb1, 0x68,
- 0x65, 0x16, 0x36, 0xaa, 0xac, 0xac, 0x3d, 0xaa, 0x96, 0xbc, 0xf3, 0x58,
- 0x68, 0x85, 0x34, 0x43, 0xd9, 0x66, 0x75, 0x8e, 0x70, 0x58, 0x78, 0xbd,
- 0x24, 0x66, 0xa9, 0x5f, 0xd5, 0x8a, 0x6b, 0x41, 0xe0, 0xf6, 0x3a, 0x09,
- 0x5a, 0xb4, 0x1f, 0xf3, 0x29, 0xec, 0xd7, 0x90, 0xbb, 0x28, 0x05, 0x75,
- 0xe9, 0xae, 0x02, 0x53, 0x6d, 0x8e, 0x59, 0x89, 0x0d, 0x1c, 0x20, 0x95,
- 0x97, 0x9a, 0xde, 0xa7, 0x04, 0xf6, 0x80, 0xde, 0x85, 0x69, 0xc1, 0x95,
- 0x86, 0x7a, 0x02, 0xf1, 0x9a, 0x3b, 0x57, 0xf3, 0xf4, 0x84, 0xff, 0x78,
- 0xad, 0x3a, 0x9b, 0xd6, 0x0d, 0x25, 0x56, 0x5d, 0xbb, 0xb0, 0x70, 0x16,
- 0x62, 0xe2, 0x90, 0x78, 0x9b, 0x42, 0x0e, 0x71, 0x1d, 0x41, 0x64, 0x13,
- 0xea, 0x8e, 0x8f, 0xf3, 0x69, 0xe7, 0x2b, 0xfa, 0x11, 0x46, 0x74, 0x72,
- 0x5f, 0xf0, 0x7d, 0xf2, 0xba, 0x83, 0xf2, 0xac, 0x37, 0xda, 0xb3, 0x2e,
- 0x5d, 0x78, 0x9e, 0x7d, 0x8c, 0x68, 0x9f, 0xfc, 0x5c, 0x7c, 0x11, 0x19,
- 0x15, 0x2d, 0x8a, 0xe6, 0x5c, 0x65, 0xab, 0x85, 0xf0, 0x4c, 0xf9, 0x09,
- 0x42, 0xc7, 0xf0, 0x27, 0x60, 0x97, 0xa7, 0x3a, 0x4b, 0xa3, 0x0e, 0xfb,
- 0xa6, 0xe0, 0x73, 0xf9, 0xac, 0xe1, 0xbb, 0xac, 0x39, 0x10, 0xea, 0x46,
- 0x6e, 0xa9, 0x4d, 0x7a, 0xa1, 0xe3, 0x47, 0x94, 0xde, 0x68, 0x64, 0x53,
- 0x69, 0xff, 0xad, 0x6f, 0x84, 0x48, 0x77, 0x2c, 0xbe, 0x9c, 0x2f, 0x19,
- 0xeb, 0x5d, 0x57, 0x5c, 0xb6, 0xeb, 0xd0, 0x1d, 0x15, 0x6e, 0x9d, 0x17,
- 0x5c, 0x11, 0x22, 0xdf, 0x28, 0x79, 0x57, 0x06, 0xe8, 0x93, 0xe5, 0xbc,
- 0x91, 0xca, 0x7b, 0xca, 0x4c, 0xe4, 0xdd, 0xb9, 0x4a, 0x8b, 0x4b, 0x46,
- 0x14, 0xf4, 0x06, 0x04, 0x89, 0x5b, 0x61, 0x68, 0xae, 0x3a, 0xd4, 0x97,
- 0x22, 0x32, 0xbb, 0x2e, 0x1e, 0xfa, 0xc1, 0xbe, 0xdd, 0x07, 0xe9, 0x94,
- 0x85, 0xf2, 0x14, 0xda, 0x88, 0xef, 0x00, 0x4b, 0x78, 0x93, 0x72, 0x2b,
- 0x5d, 0xed, 0x37, 0xef, 0x4c, 0x16, 0x3d, 0x28, 0x0a, 0xac, 0x85, 0x79,
- 0xd2, 0xc8, 0xdf, 0x49, 0xd9, 0xa9, 0xc6, 0x99, 0x9e, 0x5c, 0xde, 0x28,
- 0xd2, 0x6a, 0x00, 0x33, 0xdc, 0xb2, 0x47, 0x0e, 0xb3, 0x42, 0xbb, 0xa6,
- 0xca, 0x98, 0x1e, 0x8f, 0x0c, 0xc1, 0x56, 0x79, 0xd9, 0x1c, 0x0e, 0x34,
- 0xc4, 0x5b, 0xcf, 0x81, 0x5b, 0xcf, 0x0d, 0x28, 0xe5, 0xec, 0xd5, 0x78,
- 0xac, 0x74, 0xf2, 0x3a, 0x24, 0x09, 0xf1, 0x59, 0x12, 0x9a, 0x85, 0x02,
- 0x3a, 0x85, 0xaa, 0xa2, 0x8c, 0xd1, 0x49, 0x32, 0x38, 0x60, 0x9e, 0xf6,
- 0x86, 0x19, 0x73, 0x7c, 0xb9, 0x37, 0xad, 0x4d, 0x64, 0x0f, 0x76, 0x07,
- 0x05, 0xe4, 0xb3, 0x68, 0xba, 0x0a, 0xc7, 0x2b, 0x69, 0x9b, 0x51, 0x8e,
- 0xac, 0x3c, 0x9e, 0x74, 0x43, 0xc3, 0x77, 0xf2, 0x56, 0xcf, 0xc2, 0x83,
- 0x47, 0x91, 0x45, 0x7f, 0xcb, 0xab, 0x1a, 0xfc, 0x2b, 0x8b, 0xfe, 0x36,
- 0xb2, 0xe8, 0xc7, 0xf6, 0x5b, 0xfc, 0xa9, 0xc3, 0xc3, 0x67, 0x52, 0x55,
- 0xc1, 0x3e, 0x3a, 0x2a, 0xfa, 0xb7, 0x0c, 0x88, 0xbf, 0xc6, 0x2b, 0x36,
- 0x0f, 0x0e, 0xb9, 0xfe, 0x20, 0xfc, 0x96, 0x77, 0x79, 0xbd, 0x4f, 0x3d,
- 0x71, 0xcb, 0x32, 0xaa, 0x37, 0x8d, 0x47, 0x5a, 0x3d, 0xf3, 0x99, 0x80,
- 0xfd, 0xa8, 0x31, 0x47, 0x7a, 0xf8, 0x0d, 0x65, 0x50, 0x35, 0xf1, 0xd4,
- 0x5f, 0x9d, 0x86, 0xf7, 0x9d, 0xa7, 0xd6, 0x8d, 0xb2, 0x77, 0xa8, 0x21,
- 0xf4, 0x57, 0xe0, 0xc5, 0x8b, 0x6c, 0xc9, 0xfd, 0x1a, 0x32, 0x02, 0xeb,
- 0x71, 0x1e, 0x40, 0xae, 0xb9, 0x9b, 0x57, 0x29, 0xd0, 0x96, 0x17, 0xe9,
- 0x5d, 0x04, 0x6c, 0x4b, 0x3c, 0xc5, 0x6c, 0xae, 0x98, 0xfb, 0x79, 0x99,
- 0x15, 0x64, 0x29, 0x40, 0x11, 0x10, 0xb7, 0x19, 0xf9, 0x61, 0x11, 0x35,
- 0x9f, 0x5b, 0x57, 0xad, 0x7c, 0x35, 0x80, 0x03, 0xa8, 0xa5, 0x81, 0x21,
- 0xdf, 0x19, 0xd1, 0x12, 0xe2, 0xd8, 0x70, 0x07, 0xcf, 0xec, 0xbe, 0xd9,
- 0x93, 0x20, 0xcf, 0x16, 0x63, 0x84, 0x78, 0x5b, 0xa7, 0xcc, 0x44, 0x03,
- 0x02, 0xd2, 0x47, 0x07, 0x51, 0xba, 0x3c, 0xb4, 0x9a, 0x2b, 0x4f, 0x41,
- 0x3c, 0x60, 0x6e, 0x7c, 0x46, 0xbc, 0x4e, 0x00, 0x77, 0x47, 0xc9, 0x29,
- 0xbc, 0x70, 0x2d, 0x90, 0x71, 0xae, 0x04, 0x4a, 0x5d, 0xd1, 0x68, 0x9b,
- 0x70, 0x9f, 0x7b, 0x27, 0xac, 0xb3, 0xd2, 0xec, 0x97, 0x3d, 0x61, 0xb3,
- 0x0e, 0x82, 0x49, 0x7d, 0xcd, 0x59, 0x72, 0x7e, 0x74, 0x71, 0x8e, 0x40,
- 0x2f, 0x31, 0x80, 0x00, 0x24, 0x35, 0xad, 0x76, 0x2d, 0x48, 0x90, 0x70,
- 0x33, 0xa7, 0x87, 0x38, 0x06, 0xc1, 0xf8, 0x65, 0xf6, 0xbc, 0xf9, 0x9f,
- 0xfa, 0x1e, 0x57, 0xbf, 0x64, 0x5a, 0x6b, 0xe2, 0x42, 0x3a, 0x6d, 0x64,
- 0xb5, 0xc3, 0x43, 0x97, 0x85, 0x84, 0xde, 0xc6, 0x2c, 0xe5, 0x24, 0x93,
- 0x7c, 0x24, 0x49, 0x9b, 0x5a, 0x7d, 0xa1, 0xad, 0x04, 0xe8, 0x21, 0x4e,
- 0xc6, 0x2e, 0xab, 0x98, 0xde, 0x21, 0x9f, 0xb6, 0x0a, 0x80, 0x4c, 0xc2,
- 0x2f, 0x4c, 0xe0, 0x6a, 0x70, 0x8f, 0x83, 0x72, 0x0d, 0xe0, 0xe3, 0xfd,
- 0xfd, 0x30, 0x6f, 0x38, 0x9d, 0x18, 0xa6, 0x2a, 0xda, 0x9c, 0x54, 0xf5,
- 0xe0, 0x15, 0xf6, 0x9a, 0x42, 0xbd, 0xac, 0xc9, 0xd6, 0x18, 0xce, 0xc9,
- 0x8d, 0x49, 0x3b, 0x16, 0x1a, 0x15, 0x87, 0xcc, 0x63, 0xbe, 0x43, 0x99,
- 0x91, 0xec, 0x59, 0x9b, 0xb3, 0x70, 0x05, 0x92, 0xf6, 0xce, 0x4d, 0x35,
- 0xc9, 0x18, 0x35, 0xc1, 0xe2, 0xfd, 0x0e, 0x66, 0x16, 0xf0, 0xef, 0xc3,
- 0x27, 0x11, 0x8a, 0x48, 0xc6, 0x17, 0xa7, 0xe7, 0x8a, 0xbd, 0x1f, 0xca,
- 0x67, 0x64, 0x3e, 0xd0, 0x13, 0x16, 0x6a, 0x65, 0x10, 0x42, 0xee, 0xcc,
- 0x2c, 0x3e, 0x80, 0x85, 0x31, 0xf5, 0xbe, 0xca, 0x1c, 0x00, 0x2d, 0xf4,
- 0x64, 0x6d, 0xdf, 0x0a, 0x20, 0x80, 0x42, 0xf6, 0xea, 0xbd, 0xf4, 0x5e,
- 0xe2, 0x6b, 0x76, 0xca, 0xf7, 0x97, 0xeb, 0xd7, 0x89, 0x8e, 0xa4, 0x92,
- 0x9d, 0x10, 0x7f, 0x25, 0x1d, 0xd6, 0x76, 0xfa, 0xec, 0xd2, 0x22, 0x5f,
- 0xa2, 0x53, 0x07, 0xc9, 0xcc, 0x1c, 0x5e, 0x16, 0x69, 0x2d, 0x63, 0x74,
- 0x9b, 0x25, 0x3e, 0xc1, 0x90, 0xc5, 0x92, 0xd8, 0x94, 0xb2, 0x2f, 0x6c,
- 0x1a, 0xc0, 0xba, 0x97, 0x95, 0x82, 0xb4, 0x8a, 0xe0, 0x54, 0x63, 0xc1,
- 0xe9, 0xd9, 0x9e, 0xd4, 0x3f, 0x3b, 0x3d, 0xbf, 0x48, 0xac, 0xd0, 0xc7,
- 0x97, 0xf1, 0xa3, 0xce, 0x05, 0xa2, 0x96, 0x29, 0xf0, 0xd9, 0xb9, 0xb2,
- 0x8d, 0xc0, 0x21, 0x29, 0x36, 0x41, 0xd3, 0x19, 0x62, 0x80, 0x36, 0x7b,
- 0xb3, 0x92, 0xb1, 0x7c, 0x5c, 0xf8, 0x51, 0x50, 0xba, 0x20, 0x67, 0xfa,
- 0x90, 0xc1, 0x9c, 0x72, 0xfb, 0xe8, 0x20, 0x42, 0x19, 0x64, 0x45, 0x9f,
- 0x1f, 0x8d, 0x2f, 0x78, 0xc7, 0xe8, 0x6f, 0xc1, 0xbc, 0xb9, 0x40, 0x54,
- 0x7e, 0x18, 0x18, 0x2a, 0x96, 0x32, 0x28, 0x01, 0xcd, 0x58, 0x1b, 0x18,
- 0xdf, 0x16, 0xb8, 0x7b, 0x3b, 0xf6, 0xc8, 0xcb, 0x36, 0x04, 0xd7, 0x14,
- 0x3a, 0xc1, 0x05, 0xc7, 0x0f, 0xb6, 0xe4, 0x23, 0x5b, 0x46, 0x31, 0xe3,
- 0x0b, 0xd1, 0x82, 0x5f, 0x7f, 0xf4, 0xd8, 0xe3, 0x14, 0x24, 0xa7, 0x64,
- 0x80, 0x63, 0x6d, 0x93, 0x4b, 0x3f, 0x1c, 0x2a, 0xa9, 0x40, 0x58, 0x30,
- 0x51, 0xf0, 0x73, 0x6e, 0x9c, 0x27, 0x52, 0xa2, 0x7e, 0x62, 0x55, 0x05,
- 0x6f, 0x2a, 0xf4, 0x63, 0xcd, 0xf8, 0x81, 0xda, 0xd6, 0x21, 0xb9, 0x47,
- 0x4c, 0xe9, 0x7f, 0x36, 0x84, 0x6e, 0xb3, 0x16, 0x79, 0xe9, 0xbe, 0x5c,
- 0x30, 0xba, 0x56, 0x5e, 0xac, 0x33, 0xe8, 0x68, 0x69, 0xb5, 0xa0, 0x56,
- 0x0f, 0x86, 0x87, 0x54, 0x52, 0x40, 0x76, 0x53, 0xc4, 0x60, 0xa9, 0xbd,
- 0x6f, 0x88, 0xfc, 0x39, 0x3e, 0x39, 0x72, 0x27, 0xc5, 0x7d, 0x22, 0x70,
- 0x83, 0x9d, 0xae, 0x4f, 0xad, 0xed, 0xad, 0x98, 0x18, 0x25, 0x67, 0xd4,
- 0xb3, 0x1c, 0x7a, 0x53, 0xfd, 0x1f, 0x6e, 0x34, 0xbe, 0x24, 0xf0, 0xc0,
- 0x1b, 0xb1, 0x09, 0x33, 0x25, 0x2f, 0xcc, 0xc1, 0xe2, 0x27, 0xf4, 0x57,
- 0x0f, 0xd3, 0x3c, 0x58, 0xee, 0x73, 0xf7, 0x72, 0x6d, 0x96, 0x62, 0x0c,
- 0xf4, 0xee, 0x23, 0x8f, 0x85, 0xae, 0x8c, 0xf5, 0x8e, 0x21, 0x2c, 0x6f,
- 0xa6, 0xbb, 0x2c, 0xad, 0x62, 0x66, 0x3c, 0xc2, 0x5c, 0x9f, 0x69, 0xf1,
- 0x70, 0x6f, 0x28, 0x16, 0x06, 0xaf, 0x26, 0xb6, 0x81, 0x10, 0xa5, 0x09,
- 0x93, 0x22, 0x67, 0xc6, 0x2a, 0x88, 0xd3, 0x2e, 0x6c, 0xae, 0xbd, 0x0d,
- 0x03, 0x13, 0xaf, 0x9c, 0xe8, 0xb5, 0xa1, 0x95, 0x74, 0x37, 0xb7, 0xd3,
- 0x80, 0xfd, 0x31, 0x53, 0xa2, 0x25, 0x1b, 0x2b, 0xbf, 0x5a, 0xb3, 0x93,
- 0xfc, 0x64, 0x01, 0xbd, 0x23, 0xa7, 0x01, 0xc5, 0x03, 0x8c, 0x80, 0xf7,
- 0x95, 0xff, 0xc7, 0x4f, 0xdc, 0x50, 0x73, 0xaa, 0xe9, 0xb4, 0x63, 0x39,
- 0xde, 0x63, 0xbb, 0x48, 0x30, 0x02, 0x03, 0x1e, 0x13, 0x8b, 0x91, 0x9b,
- 0x75, 0x4f, 0x22, 0xe8, 0x6f, 0xfe, 0x9e, 0x3c, 0x13, 0xd3, 0x97, 0x6c,
- 0xdf, 0xe2, 0xce, 0xe5, 0xde, 0x4b, 0xd3, 0x6e, 0xf6, 0x9b, 0x71, 0xa3,
- 0x1a, 0xf9, 0x8d, 0x80, 0x30, 0x5e, 0x89, 0x5f, 0x86, 0x5a, 0x51, 0x05,
- 0x88, 0x8b, 0xeb, 0xa5, 0xe4, 0xf0, 0x7a, 0x5f, 0xfa, 0x5c, 0x3c, 0x19,
- 0x54, 0x79, 0x6e, 0xf1, 0x1a, 0x3d, 0x2e, 0x5a, 0xaa, 0xc5, 0x6c, 0x61,
- 0x8c, 0x0c, 0xf1, 0x20, 0xb7, 0xd4, 0xd6, 0xba, 0x87, 0x18, 0x7b, 0x84,
- 0x5d, 0x06, 0x51, 0x2c, 0xea, 0xae, 0x3a, 0x15, 0x4a, 0x0f, 0xfa, 0x8a,
- 0x36, 0x5c, 0x9e, 0xe3, 0x5f, 0x29, 0x40, 0x4a, 0xe8, 0x12, 0xaf, 0xb2,
- 0xbf, 0x41, 0x91, 0x74, 0xfd, 0x5a, 0x35, 0xa6, 0x9c, 0x16, 0xeb, 0xd4,
- 0xb3, 0xe5, 0x1f, 0x3f, 0x17, 0x0f, 0x95, 0xb8, 0x41, 0x28, 0xac, 0x5e,
- 0x64, 0x4d, 0x10, 0x5e, 0x7c, 0x72, 0x60, 0x7d, 0x95, 0x94, 0x31, 0x2b,
- 0x75, 0x20, 0x7e, 0xde, 0xac, 0x61, 0x6e, 0xe3, 0xf1, 0xd7, 0xc9, 0xbb,
- 0x37, 0x4f, 0x28, 0x9d, 0xe7, 0x32, 0xab, 0x56, 0x15, 0xa5, 0x70, 0x2a,
- 0x0d, 0x9f, 0x7e, 0xe3, 0x0d, 0x76, 0xe8, 0x1c, 0x9f, 0x22, 0x62, 0x73,
- 0xb9, 0xbd, 0x64, 0x2b, 0x98, 0xf3, 0xa3, 0xba, 0xe7, 0x4b, 0x45, 0x46,
- 0x60, 0xef, 0x17, 0xa0, 0x17, 0x04, 0xac, 0x8a, 0x95, 0x96, 0xcf, 0xba,
- 0x49, 0xe1, 0x2d, 0x06, 0xf6, 0xe4, 0x91, 0x63, 0x60, 0xd5, 0xdd, 0x8a,
- 0x3a, 0xab, 0x14, 0x97, 0x64, 0x17, 0x44, 0x6e, 0xd4, 0x13, 0x66, 0x9a,
- 0xaf, 0xf9, 0xde, 0x93, 0x12, 0x1b, 0xbe, 0x06, 0xf5, 0x1c, 0xfe, 0x52,
- 0xef, 0xbd, 0x27, 0xbe, 0x57, 0xa1, 0x96, 0xde, 0x68, 0xd2, 0x12, 0x03,
- 0x3a, 0x8a, 0xf7, 0xec, 0x53, 0xfb, 0x2c, 0x39, 0x8e, 0xf2, 0xc2, 0x6b,
- 0x61, 0xd4, 0xf3, 0x86, 0x28, 0xbf, 0x6a, 0x20, 0x68, 0x24, 0x87, 0x35,
- 0x1e, 0x6f, 0xef, 0xbd, 0x57, 0x9e, 0xb7, 0x9d, 0x26, 0xe8, 0x1f, 0x60,
- 0x49, 0x13, 0x8b, 0x42, 0x67, 0x59, 0xcf, 0xcd, 0xc2, 0x32, 0xfa, 0x8c,
- 0xd2, 0xa0, 0x5b, 0xe7, 0xa9, 0x4c, 0x30, 0xf3, 0x31, 0x44, 0xf4, 0xae,
- 0x33, 0xed, 0xbf, 0x7e, 0xd5, 0x57, 0x04, 0x04, 0x6a, 0xf7, 0x3e, 0x72,
- 0x20, 0x77, 0x86, 0xfa, 0x52, 0x5f, 0x16, 0xf9, 0x3f, 0x14, 0xbe, 0x80,
- 0x04, 0xb4, 0xb6, 0x9f, 0xf2, 0x1e, 0x3f, 0x14, 0x86, 0xc1, 0xbd, 0x87,
- 0xc1, 0x14, 0x29, 0x78, 0xea, 0x1e, 0x78, 0x24, 0x54, 0xcb, 0xdd, 0xe3,
- 0xa0, 0xfd, 0x53, 0x12, 0x3e, 0x42, 0xf7, 0x59, 0x2b, 0xad, 0xfe, 0xe9,
- 0x63, 0xd1, 0xb9, 0x54, 0x39, 0x26, 0xc9, 0x4b, 0x1b, 0xb1, 0x00, 0x24,
- 0x63, 0x97, 0x4d, 0x3f, 0x15, 0xb1, 0x27, 0x47, 0x29, 0xbd, 0xd6, 0x53,
- 0xd7, 0xcc, 0x8b, 0xfe, 0x7a, 0x93, 0x17, 0x92, 0xea, 0x1e, 0xbc, 0xfe,
- 0xb4, 0xc7, 0xfd, 0x58, 0xb3, 0xcc, 0x3c, 0x02, 0x2d, 0x79, 0xcf, 0x3f,
- 0xb3, 0x37, 0xc1, 0x03, 0xf7, 0x54, 0x20, 0xc3, 0x81, 0x0f, 0x58, 0xaa,
- 0x17, 0x49, 0xfc, 0x27, 0x99, 0x76, 0x3a, 0x88, 0x20, 0xcb, 0xcf, 0xed,
- 0xe7, 0x17, 0xe5, 0x65, 0xe2, 0x63, 0xb2, 0x3c, 0x65, 0x92, 0x7a, 0x8b,
- 0x76, 0x15, 0xce, 0x3a, 0x28, 0x92, 0x0b, 0xaf, 0x4c, 0xd6, 0x3d, 0xfd,
- 0x5c, 0x68, 0x43, 0xe5, 0xa5, 0x35, 0x56, 0xfb, 0xde, 0x78, 0xb6, 0xef,
- 0x2b, 0xab, 0x33, 0x8a, 0xca, 0x72, 0x19, 0x7f, 0xef, 0x0b, 0x4c, 0x19,
- 0xc7, 0x46, 0x8c, 0x5c, 0x1a, 0xa2, 0xc6, 0x33, 0x0e, 0xca, 0xd0, 0x3d,
- 0x76, 0xd8, 0x62, 0xba, 0x17, 0xbe, 0xfa, 0x94, 0x1c, 0xbf, 0xf1, 0x1e,
- 0x7c, 0xe4, 0x16, 0x98, 0x2e, 0x48, 0x1b, 0xb8, 0x63, 0x47, 0x55, 0x9d,
- 0xec, 0xd0, 0x5b, 0x1e, 0x66, 0xc9, 0x33, 0xa6, 0x8c, 0xf7, 0x25, 0x83,
- 0x6e, 0x61, 0xff, 0x83, 0x67, 0x98, 0x1c, 0x5e, 0x5f, 0x19, 0xa9, 0x36,
- 0x6d, 0x90, 0x13, 0x5a, 0x68, 0x84, 0xab, 0x7b, 0xf6, 0xcf, 0x9e, 0x6e,
- 0x78, 0x56, 0x84, 0x66, 0x6d, 0x45, 0xbd, 0xf7, 0xde, 0xb3, 0xf0, 0x9a,
- 0xab, 0x39, 0xa0, 0x55, 0x0a, 0x72, 0xd3, 0x92, 0x1d, 0x2a, 0x8f, 0xfe,
- 0x0f, 0xf5, 0x0c, 0x56, 0x84, 0x27, 0x58, 0xff, 0x87, 0x3f, 0xdf, 0xcf,
- 0xfd, 0x1a, 0x3e, 0xf6, 0x09, 0x56, 0x19, 0xc2, 0x04, 0xd3, 0x56, 0xbb,
- 0x08, 0x97, 0x21, 0x84, 0xdd, 0xf1, 0x46, 0xe0, 0x33, 0x37, 0x7a, 0xc4,
- 0xba, 0x70, 0x9c, 0x83, 0x0d, 0x40, 0xc1, 0x22, 0x98, 0xf9, 0xb8, 0x93,
- 0xc4, 0xf3, 0xc5, 0x0b, 0xe5, 0xf9, 0x50, 0xf7, 0x3b, 0xd7, 0xa0, 0xbe,
- 0x5a, 0xb3, 0xc5, 0x6d, 0x57, 0xe4, 0x1c, 0x6c, 0xde, 0x6b, 0x87, 0x8e,
- 0x7b, 0x89, 0xd8, 0xe7, 0x82, 0x93, 0xd7, 0x14, 0x05, 0x66, 0xb3, 0xdc,
- 0x36, 0x11, 0x80, 0x7b, 0xbc, 0x2a, 0xd9, 0x67, 0x48, 0x60, 0x1b, 0x3b,
- 0x69, 0x3c, 0x35, 0x53, 0x92, 0xc8, 0xbd, 0xcf, 0x88, 0x6a, 0x43, 0x29,
- 0x4e, 0xe6, 0x94, 0xae, 0xb2, 0xe9, 0x27, 0xbd, 0x32, 0x76, 0x8c, 0xc8,
- 0x5b, 0x8f, 0xed, 0xd6, 0x12, 0xf5, 0x9d, 0x9d, 0x1f, 0x75, 0x8d, 0x00,
- 0xf7, 0x28, 0x53, 0xcd, 0xf9, 0xc5, 0xf8, 0xec, 0x05, 0xcd, 0x97, 0xc3,
- 0x86, 0xe6, 0x42, 0xbc, 0x1e, 0x67, 0x7f, 0x97, 0x32, 0xb3, 0xda, 0x3d,
- 0xfd, 0xb4, 0xe7, 0xe9, 0xb1, 0x38, 0xf7, 0x8e, 0x81, 0xd4, 0x6c, 0xce,
- 0xc1, 0x7f, 0x89, 0x89, 0x66, 0x5d, 0xa8, 0x7f, 0x9f, 0x5d, 0x60, 0x34,
- 0x33, 0x70, 0x43, 0x0a, 0x2d, 0xbb, 0x87, 0x3f, 0x77, 0x9e, 0x9a, 0xab,
- 0x75, 0xf1, 0xc9, 0xea, 0x8b, 0x82, 0xa3, 0xa7, 0x07, 0xec, 0x5e, 0x78,
- 0xae, 0x57, 0xc3, 0xf3, 0x83, 0xda, 0xbc, 0xa7, 0x81, 0x78, 0x28, 0xc4,
- 0xf5, 0x28, 0xf1, 0x4e, 0xc3, 0x5f, 0xd7, 0xde, 0x1e, 0x3c, 0xdf, 0xb7,
- 0xe2, 0x57, 0x10, 0x79, 0x3e, 0x65, 0x77, 0x8e, 0xea, 0x34, 0xc7, 0x62,
- 0x95, 0x17, 0xe4, 0x82, 0x70, 0x8f, 0xb8, 0x01, 0x0e, 0x5a, 0x42, 0xa0,
- 0xab, 0x6e, 0xd4, 0x4d, 0xda, 0xac, 0x3d, 0x11, 0xf3, 0x9c, 0x69, 0x67,
- 0x4c, 0x51, 0xc7, 0xa5, 0xd0, 0x6b, 0x5e, 0xa8, 0xb7, 0xad, 0xe3, 0x42,
- 0xd3, 0x97, 0xbe, 0xff, 0x9e, 0xe5, 0x88, 0x05, 0x8b, 0x93, 0xd0, 0x95,
- 0x6d, 0xfe, 0x64, 0xf8, 0x2e, 0x03, 0x08, 0xd3, 0x15, 0x46, 0xc0, 0xa7,
- 0xca, 0xa8, 0x3d, 0xa5, 0xa2, 0xdf, 0xe0, 0xf2, 0xc4, 0xa2, 0xe7, 0x65,
- 0x21, 0x31, 0x5b, 0x4a, 0xde, 0x84, 0xe7, 0x93, 0xc1, 0xa6, 0xd9, 0x17,
- 0x66, 0x66, 0xf0, 0xea, 0xc3, 0xc5, 0xd7, 0xa7, 0xe7, 0xe3, 0x64, 0x8f,
- 0x4a, 0xdb, 0x2f, 0xce, 0x8f, 0xff, 0xfc, 0xe1, 0xc2, 0xfc, 0x53, 0x47,
- 0x7a, 0x93, 0x16, 0xb9, 0x91, 0x4e, 0x66, 0x39, 0x59, 0x61, 0x88, 0xe5,
- 0x52, 0x9b, 0x34, 0x31, 0x74, 0xb1, 0x91, 0xc7, 0x65, 0xa5, 0x88, 0x26,
- 0x94, 0x8f, 0x52, 0xca, 0x89, 0x33, 0xaa, 0x5f, 0xc1, 0x19, 0x7e, 0xa5,
- 0xb3, 0x9c, 0xf3, 0x4e, 0x51, 0xbe, 0xa6, 0xed, 0x24, 0x17, 0x5f, 0xbf,
- 0x7a, 0xff, 0xcd, 0x58, 0x3b, 0x78, 0x7c, 0xf7, 0xdd, 0x77, 0xdd, 0xe0,
- 0x2e, 0xf4, 0xd8, 0xab, 0xf4, 0xf6, 0x76, 0x54, 0x67, 0x9f, 0x7d, 0x36,
- 0x3e, 0x3a, 0x4a, 0x5e, 0x9d, 0x8c, 0x4f, 0x3f, 0x73, 0x38, 0x0e, 0x3b,
- 0x07, 0x84, 0x60, 0x75, 0x99, 0x35, 0xe6, 0x2f, 0x9f, 0x7d, 0xf6, 0xff,
- 0x01, 0xdb, 0xb6, 0x69, 0xbe, 0xc6, 0x8e, 0x02, 0x00,
+ 0x6b, 0x77, 0xdb, 0x46, 0x96, 0x2e, 0xfc, 0x3d, 0xbf, 0x02, 0xcd, 0x5e,
+ 0x7d, 0x24, 0x4d, 0x93, 0xd4, 0xdd, 0x8e, 0x15, 0x39, 0x13, 0x45, 0x96,
+ 0x63, 0x4d, 0x64, 0x49, 0x23, 0xca, 0x49, 0xfa, 0x24, 0x59, 0x5e, 0x20,
+ 0x09, 0x52, 0x68, 0x91, 0x00, 0x1b, 0x00, 0x75, 0xe9, 0x9e, 0x3e, 0xbf,
+ 0xfd, 0xdd, 0xd7, 0xaa, 0x02, 0xaa, 0x40, 0x29, 0xe9, 0x38, 0x73, 0x2e,
+ 0x6f, 0xcf, 0x9a, 0xd8, 0x96, 0x80, 0x42, 0x5d, 0x76, 0xed, 0xfb, 0x7e,
+ 0x76, 0x14, 0x3d, 0xf5, 0xbf, 0x8f, 0xf4, 0xff, 0x1f, 0xe1, 0x7f, 0xf0,
+ 0xe7, 0x67, 0x51, 0x74, 0x59, 0xe4, 0x7f, 0x4d, 0x46, 0x55, 0xf8, 0xd9,
+ 0x8f, 0x1f, 0xff, 0x2b, 0xe2, 0xff, 0x83, 0x77, 0x7e, 0x82, 0x3f, 0x3f,
+ 0x5b, 0x39, 0xf6, 0x66, 0x64, 0x5f, 0xf8, 0xaf, 0x8f, 0x1b, 0xd1, 0x53,
+ 0x2f, 0xfc, 0x57, 0xb4, 0x4e, 0x2f, 0x7c, 0x94, 0x2f, 0x1c, 0xe2, 0xdf,
+ 0x3f, 0x7e, 0x5c, 0xfd, 0x91, 0x9f, 0x70, 0x56, 0xf8, 0x9f, 0x4d, 0x7c,
+ 0xef, 0xa7, 0x8f, 0xf8, 0x57, 0xf8, 0xc9, 0x67, 0x9f, 0x9d, 0x1f, 0xbd,
+ 0x3f, 0xd1, 0x57, 0x47, 0xcb, 0x62, 0x16, 0xf5, 0xa2, 0xaa, 0x88, 0xb3,
+ 0x72, 0x92, 0x14, 0x51, 0x1c, 0x7d, 0xb8, 0x3a, 0xfb, 0xec, 0xb3, 0xc1,
+ 0x5f, 0xce, 0x2f, 0x2e, 0x07, 0xa7, 0x83, 0xda, 0x63, 0x3f, 0xe6, 0x8b,
+ 0x2a, 0xcd, 0xb3, 0x12, 0xa6, 0x0f, 0x0f, 0x95, 0x3f, 0x7f, 0xf6, 0xd9,
+ 0x9b, 0x93, 0xc1, 0xf1, 0xd5, 0xe9, 0xe5, 0xf5, 0xe9, 0xc5, 0x79, 0xed,
+ 0xc9, 0x28, 0x2d, 0x23, 0x18, 0xaa, 0xca, 0xf3, 0x19, 0xfc, 0xc7, 0x8e,
+ 0x3e, 0x8e, 0xab, 0x38, 0x9a, 0x14, 0xf9, 0x3c, 0xca, 0x0b, 0xfc, 0x45,
+ 0x1c, 0x95, 0x49, 0x71, 0x97, 0x14, 0xdd, 0x68, 0x59, 0xa6, 0xd9, 0x34,
+ 0xca, 0xb3, 0x24, 0xca, 0x27, 0x51, 0x75, 0x93, 0xe8, 0x70, 0xe5, 0x72,
+ 0xb1, 0xc8, 0x8b, 0x2a, 0x19, 0x47, 0x8b, 0x22, 0xaf, 0xf2, 0x51, 0x3e,
+ 0x2b, 0xa3, 0xf5, 0x37, 0xa7, 0xc7, 0xd7, 0xdd, 0xe8, 0xed, 0xe9, 0xd9,
+ 0x09, 0xfc, 0xf7, 0xfa, 0x92, 0xfe, 0x33, 0xe8, 0x46, 0xdf, 0x5c, 0x5c,
+ 0xbe, 0x3b, 0xb9, 0xea, 0x46, 0xef, 0xae, 0xf1, 0x67, 0xf8, 0x5f, 0xf8,
+ 0x61, 0x74, 0xfa, 0xfe, 0xe8, 0xb2, 0xab, 0xc3, 0xe1, 0x3f, 0xf0, 0x87,
+ 0x67, 0x6f, 0xe0, 0x87, 0xfc, 0x07, 0xfe, 0xf3, 0xf2, 0xe2, 0x72, 0x57,
+ 0xfe, 0xc0, 0x7f, 0x5e, 0x5d, 0xbf, 0x87, 0xdf, 0x5e, 0x5d, 0x0f, 0xe0,
+ 0xbf, 0x83, 0x63, 0xfc, 0x0f, 0x7d, 0x65, 0xf0, 0xfe, 0x6b, 0xfa, 0xcf,
+ 0xc0, 0x0c, 0x37, 0x78, 0xcf, 0x3f, 0xa7, 0x2f, 0x5d, 0x9f, 0x9c, 0x9d,
+ 0x9f, 0x5c, 0x47, 0x71, 0x36, 0x8e, 0xae, 0xe1, 0xf9, 0x8d, 0x7e, 0x74,
+ 0x7d, 0x93, 0x44, 0xa3, 0x7c, 0x3e, 0xc7, 0x1f, 0xc1, 0x8e, 0x8c, 0x93,
+ 0x32, 0x9d, 0x66, 0xb0, 0x14, 0x58, 0xf9, 0x7d, 0x5e, 0xdc, 0x46, 0xd1,
+ 0x7d, 0x5a, 0xdd, 0xe4, 0xcb, 0x4a, 0x87, 0x5b, 0xc2, 0x6e, 0x44, 0x69,
+ 0x56, 0x25, 0x45, 0x3c, 0xc2, 0x9d, 0xee, 0x7f, 0x56, 0xdb, 0xd5, 0x7c,
+ 0x02, 0x7b, 0x58, 0xc2, 0xa6, 0x0d, 0x97, 0xe5, 0x2c, 0x8f, 0xc7, 0xb8,
+ 0x55, 0xf0, 0xca, 0x64, 0x09, 0x9b, 0x5c, 0xa4, 0xa3, 0xdb, 0x32, 0x9a,
+ 0xa5, 0xb7, 0x09, 0x6e, 0xd4, 0xc3, 0xa3, 0x6e, 0x5c, 0x97, 0x07, 0x8d,
+ 0x97, 0xb0, 0xa7, 0x59, 0x4f, 0x87, 0xab, 0xd2, 0x51, 0x8c, 0x1f, 0xa0,
+ 0x9d, 0x8b, 0x96, 0x0b, 0x1c, 0x8d, 0x77, 0x2c, 0x5a, 0xe4, 0x25, 0xbc,
+ 0x34, 0x18, 0x9c, 0xc1, 0xcc, 0xb3, 0x2c, 0xa1, 0x79, 0x94, 0x5d, 0xf8,
+ 0x47, 0x7e, 0x9b, 0x26, 0xf0, 0x97, 0x49, 0x3a, 0x4b, 0x22, 0x3e, 0x51,
+ 0x33, 0x1c, 0x1e, 0x6d, 0x54, 0x24, 0xe5, 0x72, 0x9e, 0xc0, 0xee, 0xbd,
+ 0x4f, 0xaa, 0x78, 0x96, 0x66, 0xb7, 0xf0, 0x57, 0x5c, 0xf8, 0x3c, 0x2f,
+ 0x92, 0x7e, 0x74, 0x54, 0x46, 0x8f, 0xf9, 0x12, 0x16, 0x3c, 0x9b, 0xc1,
+ 0x99, 0x27, 0xd1, 0x30, 0x99, 0xe5, 0xf7, 0x5d, 0x3c, 0xe9, 0x28, 0x5b,
+ 0xce, 0x87, 0x30, 0x40, 0x3e, 0xb1, 0xc3, 0xc5, 0xd5, 0x12, 0x86, 0xe3,
+ 0xa7, 0xe7, 0x31, 0xac, 0x09, 0xde, 0x2d, 0xa2, 0x9b, 0x04, 0xd6, 0x5c,
+ 0x2e, 0xd2, 0xec, 0x0f, 0xf5, 0x7d, 0x81, 0xad, 0x5d, 0xe4, 0xf7, 0x49,
+ 0x01, 0x3b, 0x3b, 0x7c, 0x8c, 0x60, 0x13, 0x86, 0x4c, 0x84, 0x13, 0x20,
+ 0xb2, 0x28, 0x86, 0x21, 0x0c, 0x01, 0xf6, 0x8a, 0x64, 0x16, 0x23, 0x31,
+ 0x99, 0x6f, 0xf4, 0xe1, 0x10, 0x13, 0x43, 0x6d, 0xf2, 0xea, 0xfa, 0xee,
+ 0x06, 0xbd, 0x3c, 0x86, 0x95, 0xa4, 0xb3, 0x12, 0x8e, 0x01, 0x2f, 0x85,
+ 0x3c, 0x83, 0x87, 0x8a, 0xf4, 0x0f, 0xb4, 0xf9, 0x98, 0x55, 0xf1, 0x03,
+ 0x7d, 0x5e, 0x68, 0xb3, 0x37, 0x4e, 0x16, 0x49, 0x36, 0x4e, 0xb2, 0xaa,
+ 0x1f, 0xfd, 0x25, 0x5f, 0xae, 0xc1, 0xb7, 0x27, 0x29, 0xec, 0x41, 0x2c,
+ 0x43, 0xc1, 0x97, 0x81, 0x08, 0x46, 0x45, 0xba, 0x70, 0x8e, 0x22, 0xcf,
+ 0xe0, 0xcc, 0xa3, 0xab, 0xb7, 0xc7, 0xd1, 0xee, 0xab, 0xcf, 0x5f, 0xd8,
+ 0x33, 0x87, 0x01, 0xa2, 0x51, 0x9c, 0xc1, 0x8a, 0x93, 0x51, 0x3a, 0x79,
+ 0x8c, 0xe6, 0xcb, 0x59, 0x95, 0x2e, 0x60, 0xf7, 0xf1, 0xf2, 0xe1, 0x05,
+ 0x5a, 0xc4, 0x45, 0x55, 0x22, 0x11, 0xd0, 0x0f, 0x68, 0xed, 0xf7, 0x45,
+ 0x5a, 0xe1, 0x45, 0xa2, 0xdf, 0xc1, 0x0c, 0x93, 0xaa, 0xd4, 0xe1, 0x90,
+ 0xd6, 0xe0, 0x3b, 0x43, 0xa0, 0x2d, 0xd8, 0xda, 0xb8, 0x84, 0x8f, 0x1e,
+ 0x7c, 0x66, 0x39, 0xc8, 0x4d, 0x55, 0x2d, 0x0e, 0x36, 0x37, 0xcb, 0xb4,
+ 0x4a, 0xfa, 0xff, 0x80, 0x7b, 0xd8, 0xad, 0xee, 0xf3, 0x6e, 0x75, 0x53,
+ 0x24, 0xc9, 0x3f, 0xfb, 0x40, 0xc3, 0xe6, 0x49, 0xf8, 0xee, 0xa3, 0x4c,
+ 0x6c, 0x9a, 0x54, 0xf0, 0x85, 0xbf, 0x2d, 0x93, 0x0c, 0x47, 0x84, 0x79,
+ 0xc4, 0xb3, 0xc5, 0x4d, 0x0c, 0xc7, 0x99, 0x00, 0x35, 0xe2, 0xcd, 0x06,
+ 0x82, 0xc1, 0x59, 0xf1, 0xdd, 0xfe, 0xf1, 0x67, 0xff, 0xa3, 0x13, 0xfa,
+ 0x26, 0xfc, 0xb7, 0x9f, 0x3c, 0xc4, 0x73, 0x58, 0x1b, 0x7e, 0x6a, 0x13,
+ 0x49, 0xec, 0xc7, 0xed, 0xde, 0xf6, 0xd6, 0xd6, 0xcf, 0xfd, 0xea, 0xa1,
+ 0x7a, 0xde, 0xf3, 0x5b, 0x5b, 0xf6, 0x0d, 0x7c, 0x74, 0x1d, 0xd7, 0x1b,
+ 0xcd, 0x80, 0x64, 0xf0, 0xe3, 0x7f, 0x4f, 0x8a, 0xbc, 0xdc, 0x78, 0xde,
+ 0x48, 0x71, 0xef, 0xef, 0xf5, 0xef, 0x9e, 0x27, 0x25, 0xd1, 0x8c, 0x5d,
+ 0x6b, 0x14, 0x17, 0x40, 0xb7, 0x79, 0x65, 0xd9, 0x53, 0x17, 0x2e, 0x65,
+ 0x65, 0x76, 0x06, 0xee, 0x1c, 0x3c, 0x0d, 0x8c, 0x2d, 0x9e, 0x21, 0x4f,
+ 0x2b, 0xa3, 0x2c, 0x79, 0x30, 0xb7, 0x1c, 0x6e, 0x7f, 0x12, 0x8f, 0x6e,
+ 0xa2, 0x1c, 0x88, 0xbf, 0x08, 0x1c, 0x81, 0x3b, 0xa1, 0xb8, 0x18, 0xdd,
+ 0xa4, 0x77, 0xb0, 0x1b, 0xaf, 0x5e, 0xbd, 0xe8, 0xc1, 0x7f, 0x5e, 0xfd,
+ 0xbc, 0x79, 0x97, 0xcf, 0x60, 0x73, 0xf6, 0x7e, 0xde, 0xc4, 0x23, 0xfe,
+ 0x47, 0xdc, 0x1d, 0x76, 0x47, 0xff, 0xec, 0xdf, 0x54, 0xf3, 0x59, 0x2b,
+ 0xe1, 0xc4, 0x19, 0xfc, 0xff, 0x3c, 0x5f, 0x66, 0x95, 0x21, 0x16, 0xa0,
+ 0xb9, 0xca, 0x61, 0x4e, 0x70, 0x5d, 0xe1, 0x8e, 0x22, 0x69, 0x23, 0x0d,
+ 0xe1, 0xad, 0x83, 0x0b, 0x6a, 0xaf, 0x63, 0x35, 0xba, 0xc1, 0xf5, 0x03,
+ 0xf5, 0xc4, 0xb2, 0x09, 0x55, 0x1a, 0xe3, 0xcd, 0x04, 0x06, 0x81, 0x0c,
+ 0x8b, 0xc6, 0xe2, 0xaf, 0xa5, 0xf0, 0x60, 0x5e, 0x8c, 0x93, 0xa2, 0xdf,
+ 0x9c, 0x86, 0xb9, 0xb2, 0xce, 0x37, 0x23, 0x95, 0x28, 0xf8, 0x03, 0x9a,
+ 0xd8, 0x3c, 0x7d, 0x80, 0x11, 0x88, 0x61, 0x66, 0x34, 0x71, 0x1e, 0x2d,
+ 0xc2, 0x19, 0xd3, 0x67, 0xf4, 0x7d, 0x7b, 0x65, 0x61, 0xea, 0xb5, 0xa5,
+ 0xd3, 0x47, 0xed, 0xe2, 0x23, 0x38, 0xbc, 0x05, 0xbc, 0xb5, 0x44, 0xbe,
+ 0x4a, 0xd7, 0x1a, 0x87, 0x01, 0x86, 0x30, 0x85, 0x73, 0x81, 0xb3, 0x40,
+ 0x2a, 0xc6, 0xa3, 0x7a, 0x8c, 0xce, 0x81, 0x60, 0x98, 0x19, 0x39, 0xc4,
+ 0x3e, 0x4b, 0xaa, 0xea, 0xc9, 0x63, 0xb2, 0x14, 0x7b, 0xb0, 0xed, 0x11,
+ 0x6d, 0xdb, 0xf3, 0x40, 0x67, 0x07, 0x3b, 0xf5, 0x87, 0xbf, 0x07, 0x26,
+ 0x6d, 0xaf, 0x0b, 0x7c, 0xfd, 0x1f, 0xff, 0x74, 0xa8, 0xee, 0x1e, 0x7f,
+ 0x9b, 0x66, 0x77, 0xf9, 0x2d, 0x6c, 0x11, 0x49, 0xd1, 0xb8, 0xbe, 0x9b,
+ 0xc8, 0x87, 0xe6, 0x8b, 0xca, 0x88, 0x27, 0x24, 0x47, 0xf8, 0xd1, 0x30,
+ 0x1e, 0xce, 0x1e, 0xa3, 0x9b, 0xf8, 0x2e, 0xc1, 0xf5, 0x2e, 0x80, 0x4e,
+ 0x71, 0x07, 0x40, 0x6c, 0xcc, 0x88, 0x8f, 0x09, 0x63, 0x18, 0xe7, 0xcb,
+ 0x21, 0x30, 0x97, 0xbf, 0x2d, 0xf3, 0x8a, 0x37, 0x26, 0xbe, 0xcb, 0xd3,
+ 0x71, 0x4d, 0x16, 0xdf, 0x24, 0xc8, 0xd0, 0xf0, 0xc3, 0x24, 0xa4, 0x80,
+ 0xa1, 0xe2, 0x4c, 0xe9, 0xa2, 0xa5, 0x15, 0x8a, 0x3b, 0x60, 0x85, 0xf1,
+ 0xac, 0xcc, 0xa3, 0x68, 0x9a, 0xe3, 0x2d, 0x21, 0x06, 0x4c, 0x64, 0x0e,
+ 0x87, 0x72, 0x13, 0xa3, 0x54, 0x03, 0x01, 0x66, 0xee, 0x41, 0x91, 0x10,
+ 0x2f, 0xa6, 0x93, 0x8a, 0x67, 0x5d, 0x96, 0x5e, 0xf8, 0x8e, 0x6c, 0x55,
+ 0xb4, 0xf6, 0x3f, 0xd6, 0xba, 0xd1, 0xda, 0xbf, 0xaf, 0x11, 0x3d, 0xac,
+ 0xfd, 0xdb, 0x9a, 0x3d, 0x67, 0x50, 0xc6, 0xee, 0xd2, 0x71, 0xc2, 0x24,
+ 0x71, 0x7a, 0x79, 0xf7, 0x22, 0xfa, 0x3b, 0xea, 0x0e, 0xc0, 0x6b, 0x93,
+ 0x07, 0x25, 0x48, 0x5d, 0x1b, 0xbc, 0x1d, 0x01, 0xd3, 0x8d, 0x17, 0xa8,
+ 0x44, 0x24, 0xc5, 0x08, 0xa8, 0x37, 0x9e, 0x02, 0xbd, 0x82, 0x2c, 0xd6,
+ 0xe1, 0x70, 0x7c, 0x7c, 0x85, 0x97, 0x05, 0x0c, 0x32, 0xca, 0xe2, 0x39,
+ 0xdc, 0x88, 0x33, 0x9c, 0x51, 0x9a, 0xf9, 0x87, 0xf9, 0xe3, 0x24, 0xf9,
+ 0x7c, 0xeb, 0xe0, 0x60, 0xf7, 0x4f, 0x3b, 0xfb, 0x49, 0x75, 0xb3, 0xf5,
+ 0xf3, 0xa6, 0x79, 0xe4, 0x74, 0x42, 0xdb, 0xae, 0xe4, 0xa7, 0x93, 0x00,
+ 0x29, 0x6f, 0xa4, 0x04, 0xbc, 0x0f, 0x7f, 0x4f, 0x26, 0xe9, 0x43, 0x57,
+ 0xf5, 0x25, 0xbe, 0x73, 0x31, 0x90, 0x1a, 0x9c, 0x1f, 0xb2, 0x08, 0x1d,
+ 0x6e, 0xba, 0x4c, 0x4a, 0xd8, 0xc9, 0xfb, 0x9b, 0xb8, 0x8a, 0xcc, 0x00,
+ 0x7c, 0xb2, 0xf3, 0x74, 0x7a, 0x53, 0x45, 0xf7, 0x31, 0x0a, 0x9b, 0xd3,
+ 0x8a, 0x87, 0x40, 0x29, 0x0f, 0x22, 0x66, 0x12, 0x83, 0xac, 0xc0, 0x33,
+ 0x24, 0x91, 0x3e, 0xb4, 0x1a, 0x46, 0x05, 0x64, 0xce, 0x07, 0x62, 0xd5,
+ 0xa9, 0x61, 0x5c, 0xe2, 0xa5, 0xcd, 0x80, 0x39, 0x54, 0xa0, 0x23, 0x2c,
+ 0xf1, 0x5f, 0x37, 0xa0, 0x05, 0xd0, 0x1e, 0xc8, 0x44, 0x49, 0x50, 0xbe,
+ 0xc5, 0xe3, 0xc4, 0xb3, 0x31, 0xc2, 0x0b, 0x0e, 0xa9, 0x2b, 0xc7, 0x6c,
+ 0xde, 0x28, 0xe1, 0xc2, 0x01, 0x67, 0x32, 0x94, 0xd1, 0x41, 0x26, 0xdb,
+ 0xe1, 0x75, 0xd2, 0x1c, 0xe3, 0x12, 0x15, 0x05, 0x56, 0x07, 0x60, 0xf2,
+ 0xce, 0x62, 0x61, 0xd3, 0xe2, 0x5b, 0x54, 0x49, 0x1a, 0x8a, 0x0f, 0xbd,
+ 0x36, 0xce, 0x81, 0xc8, 0x60, 0xb6, 0xc0, 0x8c, 0x71, 0x65, 0xc8, 0x62,
+ 0x69, 0x57, 0x88, 0xc8, 0x61, 0x4c, 0xfc, 0x61, 0x5a, 0xa1, 0x8c, 0x21,
+ 0x1d, 0x16, 0xe6, 0x0b, 0x9b, 0x42, 0x8a, 0x28, 0x30, 0x6a, 0x67, 0xfd,
+ 0x24, 0x1e, 0xe1, 0xd9, 0xe8, 0x0e, 0xb4, 0x14, 0x50, 0x48, 0x13, 0xf3,
+ 0x16, 0xc9, 0xf3, 0x11, 0xea, 0x46, 0x33, 0xb8, 0x2f, 0xa3, 0xbc, 0x28,
+ 0x50, 0xdf, 0xc7, 0x13, 0x1c, 0x32, 0x13, 0x9d, 0x27, 0xa0, 0x46, 0xb8,
+ 0xdb, 0x99, 0xa2, 0x40, 0x03, 0xfe, 0x02, 0x7a, 0x09, 0x71, 0x10, 0xd0,
+ 0x1f, 0x88, 0xe7, 0xd3, 0xc2, 0x69, 0x76, 0x38, 0xf6, 0x68, 0x94, 0x2c,
+ 0xaa, 0x32, 0xb4, 0x26, 0x3d, 0x70, 0x98, 0x4e, 0x91, 0xe0, 0xce, 0xbb,
+ 0x4a, 0x17, 0xed, 0xab, 0x11, 0xfa, 0xa4, 0x77, 0xa9, 0x1e, 0x03, 0x7a,
+ 0x58, 0x69, 0x76, 0xad, 0x22, 0xda, 0x00, 0x36, 0x46, 0x7b, 0x3e, 0xc7,
+ 0x89, 0xe2, 0xc3, 0x25, 0xdf, 0x54, 0x62, 0xcd, 0x78, 0x90, 0xac, 0x69,
+ 0xf3, 0x77, 0x51, 0x74, 0xc1, 0x7e, 0x9a, 0xc1, 0xe1, 0xab, 0xe6, 0x4c,
+ 0xf1, 0xf3, 0xa8, 0xe2, 0x83, 0x24, 0x1f, 0x97, 0x37, 0xa0, 0x7c, 0x95,
+ 0x72, 0xb3, 0xd3, 0x39, 0xd0, 0xcc, 0x1d, 0x9e, 0xef, 0x22, 0x49, 0xc6,
+ 0xfd, 0xe8, 0x62, 0x82, 0x5c, 0xb5, 0x80, 0x49, 0x57, 0xf4, 0x6b, 0x94,
+ 0x2a, 0xb0, 0x6f, 0x63, 0x52, 0xe2, 0xcd, 0xd5, 0xe2, 0xa9, 0x38, 0xd2,
+ 0x81, 0x38, 0x79, 0x0c, 0x3f, 0x81, 0xd9, 0xce, 0xea, 0x22, 0x88, 0xee,
+ 0x21, 0x70, 0x6f, 0x9c, 0xde, 0x30, 0x89, 0x88, 0x12, 0x87, 0x49, 0x75,
+ 0x9f, 0x24, 0x66, 0xb8, 0x32, 0x01, 0xb1, 0x87, 0x87, 0xc6, 0x9a, 0x1f,
+ 0x31, 0x43, 0xdc, 0xda, 0xcb, 0xab, 0x8b, 0x6f, 0xae, 0x4e, 0x06, 0x83,
+ 0xe8, 0xfd, 0xc9, 0xf5, 0xc9, 0x55, 0x6d, 0xa7, 0xb3, 0xbc, 0x98, 0xd3,
+ 0x89, 0x8e, 0xd3, 0x72, 0x31, 0x8b, 0x1f, 0xf1, 0xa8, 0x61, 0x25, 0xd3,
+ 0x02, 0x6f, 0xd6, 0x3c, 0x41, 0xa9, 0x30, 0x5e, 0x12, 0x27, 0x03, 0x71,
+ 0x04, 0xc7, 0x27, 0x1a, 0x2f, 0x32, 0x13, 0x52, 0x93, 0xb3, 0xa9, 0xdd,
+ 0x69, 0xe0, 0x38, 0x22, 0x49, 0x51, 0x94, 0x9a, 0xf3, 0x40, 0xd5, 0x93,
+ 0x8c, 0x9b, 0xae, 0xfd, 0x19, 0x6f, 0x13, 0x8b, 0x36, 0xa0, 0xd9, 0x74,
+ 0x4e, 0xcc, 0x0e, 0xfe, 0xb4, 0xda, 0x66, 0x32, 0x01, 0x55, 0x1b, 0xa4,
+ 0x2b, 0x5b, 0x0a, 0xcd, 0x39, 0xe9, 0x6c, 0x8d, 0x7e, 0x0c, 0x64, 0x88,
+ 0xac, 0x19, 0x07, 0xe4, 0xa9, 0xf0, 0x17, 0x0c, 0x13, 0x03, 0x9d, 0x04,
+ 0x79, 0x9f, 0x3c, 0xb6, 0xc0, 0x29, 0x24, 0x70, 0xb2, 0x63, 0x1e, 0xbe,
+ 0x5c, 0x4e, 0xe8, 0x22, 0x47, 0xeb, 0xa0, 0x99, 0xbf, 0x07, 0x6b, 0x09,
+ 0x2c, 0x96, 0x6e, 0x74, 0xb9, 0x41, 0xef, 0x6d, 0x6f, 0xed, 0xec, 0x31,
+ 0x23, 0xe8, 0xeb, 0x70, 0x6f, 0x1d, 0x46, 0xbc, 0x7d, 0x8b, 0xc7, 0xcb,
+ 0x0f, 0xe1, 0xe0, 0xfd, 0x68, 0xfb, 0x3d, 0xff, 0x64, 0xef, 0xf3, 0xfd,
+ 0x97, 0x2f, 0xe4, 0x87, 0x75, 0x02, 0x37, 0xf3, 0x27, 0xea, 0x20, 0xcb,
+ 0x0f, 0x4d, 0x41, 0x98, 0x09, 0xac, 0x6e, 0x9e, 0x66, 0x70, 0x4d, 0xe0,
+ 0x5a, 0x09, 0xaf, 0x42, 0x7a, 0x86, 0xc9, 0x4f, 0x98, 0xb3, 0xc9, 0xb9,
+ 0xd6, 0x4d, 0x4a, 0x78, 0x19, 0x48, 0x16, 0x78, 0xb9, 0x39, 0x24, 0x56,
+ 0x13, 0x2a, 0x9c, 0x48, 0x3c, 0x44, 0x06, 0x8b, 0x76, 0x15, 0x28, 0xc0,
+ 0x49, 0xf0, 0x6b, 0x46, 0x2a, 0xc2, 0x1b, 0x30, 0x37, 0x90, 0x89, 0x28,
+ 0xe6, 0xfc, 0x7d, 0x07, 0x56, 0x40, 0x1c, 0xf2, 0x3e, 0x2d, 0x89, 0x35,
+ 0xdc, 0xe7, 0xcb, 0x19, 0x58, 0x31, 0xf8, 0xc0, 0x72, 0x41, 0x2f, 0xc0,
+ 0xa7, 0x16, 0x96, 0x07, 0x80, 0xc6, 0x82, 0xb4, 0xd3, 0x1c, 0x05, 0xa6,
+ 0x06, 0xff, 0x5c, 0x00, 0x29, 0xf1, 0x74, 0xfa, 0x4d, 0x09, 0x41, 0xbc,
+ 0xcf, 0xa3, 0x44, 0xbc, 0xf3, 0xc4, 0xb4, 0x2f, 0x2f, 0x06, 0xd7, 0xa8,
+ 0x01, 0x5c, 0x7e, 0xb8, 0x86, 0x81, 0x40, 0x05, 0x28, 0x2b, 0x20, 0x4a,
+ 0x7c, 0x31, 0x4b, 0xc8, 0x84, 0xd4, 0xe1, 0x80, 0xf6, 0x52, 0x62, 0x54,
+ 0xa4, 0xd6, 0xe8, 0x27, 0x79, 0x8e, 0x6c, 0x63, 0xe3, 0x15, 0x54, 0x0b,
+ 0x9b, 0x65, 0xb8, 0x79, 0x27, 0x5a, 0xff, 0x72, 0x03, 0x68, 0xb6, 0x97,
+ 0x9b, 0xdd, 0xe9, 0xf5, 0xe4, 0x55, 0xf8, 0x76, 0x99, 0xce, 0xd3, 0x59,
+ 0x5c, 0x38, 0x53, 0x67, 0x8e, 0x8a, 0xf7, 0xd3, 0xf0, 0x95, 0x11, 0x50,
+ 0x0d, 0x4d, 0xdb, 0x9a, 0x92, 0xb8, 0x87, 0xc4, 0x95, 0xec, 0x51, 0x8d,
+ 0x51, 0x21, 0x20, 0x8d, 0x79, 0x91, 0x9a, 0xad, 0xc3, 0x33, 0x43, 0x76,
+ 0x55, 0xdb, 0xa8, 0xe6, 0xb9, 0x79, 0x1b, 0x87, 0x12, 0x89, 0x3c, 0x15,
+ 0x66, 0xeb, 0xa2, 0xce, 0x30, 0x2e, 0x3a, 0x91, 0xe1, 0xc5, 0x7c, 0x37,
+ 0xf1, 0x86, 0x14, 0xc9, 0x74, 0x09, 0x2b, 0x88, 0x78, 0x77, 0x71, 0xa5,
+ 0x7f, 0x74, 0x56, 0xaa, 0x03, 0xf4, 0x86, 0xf8, 0x48, 0x5a, 0xb2, 0x99,
+ 0x39, 0x01, 0xbb, 0x05, 0x2f, 0x8d, 0xea, 0xaf, 0xa4, 0xd1, 0x08, 0xc5,
+ 0x04, 0x08, 0xc6, 0xd1, 0x6b, 0xe1, 0xaa, 0x54, 0x09, 0x30, 0x1a, 0x62,
+ 0xff, 0xf8, 0x64, 0x0f, 0x8e, 0xac, 0xd7, 0x2b, 0x61, 0xff, 0x51, 0xf7,
+ 0x5e, 0x88, 0x4d, 0x7f, 0x41, 0x0e, 0x13, 0xe3, 0x5b, 0xb9, 0x10, 0x1d,
+ 0x98, 0xc4, 0x26, 0xbf, 0x4b, 0x2c, 0x14, 0x14, 0xd5, 0x7b, 0xf8, 0x70,
+ 0x0c, 0x47, 0x06, 0x17, 0xee, 0x3d, 0x6e, 0x14, 0xfb, 0x46, 0x22, 0xa3,
+ 0x36, 0x13, 0x65, 0xa4, 0x78, 0xef, 0x63, 0xab, 0xcb, 0x8c, 0xc7, 0x29,
+ 0xfe, 0x16, 0xee, 0x17, 0x48, 0xb8, 0x65, 0x42, 0xb6, 0x87, 0x6c, 0xea,
+ 0xdc, 0x6e, 0x26, 0x99, 0xb1, 0xe5, 0x4d, 0x8e, 0x66, 0x62, 0x87, 0x79,
+ 0x71, 0x0f, 0xbf, 0xd5, 0x21, 0x79, 0x3e, 0x8f, 0xf4, 0x5b, 0xf2, 0x29,
+ 0x58, 0xc7, 0xd8, 0xd5, 0xcd, 0xba, 0x20, 0x68, 0x1e, 0x1d, 0x23, 0x81,
+ 0x78, 0x35, 0xcf, 0xbd, 0x30, 0x0a, 0x0f, 0x88, 0xd4, 0x05, 0x2a, 0x53,
+ 0xc2, 0xc3, 0x49, 0x18, 0xd2, 0x95, 0x2d, 0x79, 0x6a, 0x5d, 0xd8, 0x5b,
+ 0x7c, 0x72, 0x7a, 0xa3, 0x8f, 0x3a, 0x82, 0x35, 0x86, 0xc5, 0xa1, 0x70,
+ 0x40, 0x7b, 0x7a, 0xac, 0x7c, 0x3f, 0x2f, 0x98, 0x99, 0xcd, 0x72, 0xa0,
+ 0xe5, 0x0e, 0xab, 0xac, 0x32, 0x6d, 0x9c, 0x35, 0xce, 0x12, 0x77, 0x9c,
+ 0xfd, 0x4c, 0xb9, 0x39, 0x1b, 0x33, 0x69, 0xd9, 0xaf, 0xf2, 0xc9, 0xa9,
+ 0xd9, 0x8d, 0x1a, 0xd0, 0x1e, 0x81, 0xe8, 0x2c, 0x91, 0x8e, 0x75, 0xe7,
+ 0x89, 0xbc, 0x41, 0xd4, 0xad, 0x55, 0x7c, 0x1f, 0xc9, 0xc6, 0x6a, 0xec,
+ 0x7c, 0x49, 0xe4, 0x23, 0x82, 0xcc, 0xac, 0x0c, 0x56, 0x34, 0x4e, 0x63,
+ 0xa2, 0x13, 0x3e, 0x1a, 0x52, 0x46, 0xac, 0x45, 0x18, 0xd0, 0x83, 0x1f,
+ 0x9b, 0x06, 0xdd, 0x6c, 0xe6, 0x8a, 0x24, 0x9d, 0x53, 0xef, 0x02, 0xd6,
+ 0x7e, 0x46, 0xeb, 0xe8, 0xdd, 0x45, 0x78, 0xfd, 0xc0, 0x6c, 0xc0, 0xbb,
+ 0xd8, 0xbb, 0x38, 0xbb, 0x73, 0xae, 0x11, 0x5a, 0xee, 0x19, 0xea, 0x29,
+ 0x5d, 0xf2, 0x8e, 0x0c, 0xf3, 0x1c, 0xcc, 0x64, 0xbb, 0x34, 0x94, 0x07,
+ 0x49, 0x86, 0xd4, 0x2e, 0x27, 0x0a, 0x2c, 0x61, 0x61, 0xf8, 0xed, 0x23,
+ 0x98, 0x4b, 0xf1, 0x34, 0x4e, 0x0d, 0xbd, 0xc9, 0xcd, 0x18, 0x47, 0xfa,
+ 0x70, 0x96, 0xcb, 0xf3, 0x78, 0x54, 0xa8, 0x02, 0x09, 0xdf, 0x5a, 0x96,
+ 0x7c, 0x7d, 0x60, 0x55, 0xc0, 0x79, 0x88, 0x77, 0xc8, 0xb8, 0xa8, 0x36,
+ 0xea, 0x70, 0x43, 0x52, 0x94, 0x51, 0xe7, 0x24, 0xe6, 0x4b, 0x1a, 0x24,
+ 0x8c, 0xd8, 0xe9, 0x47, 0xef, 0xf2, 0xfb, 0x84, 0x7c, 0x85, 0xa4, 0xdf,
+ 0xa7, 0xe8, 0xed, 0x02, 0x55, 0xf0, 0x3e, 0x89, 0xe6, 0xa0, 0x7a, 0xc2,
+ 0x6e, 0x92, 0xf6, 0x41, 0x3f, 0x73, 0xcc, 0x43, 0xa0, 0xf0, 0x7b, 0xde,
+ 0x25, 0xb3, 0x0a, 0x73, 0x94, 0x13, 0xbe, 0x12, 0xd1, 0x3a, 0xa9, 0x37,
+ 0x23, 0xdc, 0xad, 0x45, 0x65, 0x57, 0x61, 0x36, 0xe4, 0x3e, 0x2e, 0x9d,
+ 0xcb, 0x95, 0x90, 0x69, 0xfa, 0xb2, 0xbf, 0xfd, 0xaa, 0xbf, 0xd5, 0x07,
+ 0x43, 0x24, 0xb9, 0x4b, 0xf3, 0x65, 0x09, 0x9f, 0xc6, 0x69, 0xd8, 0x77,
+ 0x12, 0xbc, 0x95, 0x55, 0x3e, 0x9d, 0xce, 0x58, 0xe7, 0xd9, 0xcc, 0x27,
+ 0x13, 0xd6, 0x7d, 0x40, 0xd3, 0x33, 0xfa, 0x33, 0x5b, 0x40, 0xb8, 0x33,
+ 0x72, 0xdd, 0x98, 0xa5, 0xfa, 0x26, 0x72, 0xdf, 0x3a, 0x2f, 0x7a, 0xbd,
+ 0x78, 0x58, 0x56, 0x68, 0x4c, 0xf5, 0x96, 0x59, 0xfa, 0xd0, 0x2b, 0xf3,
+ 0xd1, 0x2d, 0x1c, 0xca, 0xe1, 0x22, 0xae, 0x6e, 0xbe, 0x6c, 0xb8, 0x84,
+ 0xd7, 0x51, 0x96, 0x6c, 0x44, 0xd1, 0x31, 0xab, 0x95, 0xb8, 0x13, 0x05,
+ 0xdf, 0x37, 0x38, 0x4d, 0x19, 0x25, 0xfa, 0x00, 0xa3, 0x00, 0x2d, 0xcf,
+ 0xe1, 0x50, 0x23, 0x1e, 0xac, 0xab, 0xac, 0xb4, 0x31, 0x1c, 0x39, 0x1c,
+ 0x51, 0x8c, 0x90, 0xdf, 0x0e, 0xae, 0x4e, 0x5e, 0xdc, 0x82, 0xa2, 0x7d,
+ 0x0e, 0x26, 0xe3, 0x01, 0xfe, 0x1b, 0x58, 0x58, 0x45, 0x5b, 0x2e, 0x92,
+ 0x15, 0x66, 0xc4, 0xcc, 0x18, 0x2d, 0xf2, 0x78, 0xd8, 0x6b, 0x0c, 0x27,
+ 0xdf, 0x97, 0x8f, 0x46, 0x6a, 0x6b, 0x28, 0x29, 0x45, 0x6b, 0x5f, 0x81,
+ 0xfd, 0x77, 0xc3, 0xc7, 0x4e, 0x03, 0xf2, 0x1a, 0x81, 0x42, 0xa7, 0x60,
+ 0x41, 0x64, 0x55, 0x73, 0xb8, 0x1b, 0x12, 0xd5, 0x28, 0x65, 0xd8, 0xd8,
+ 0x25, 0x22, 0x11, 0x0f, 0x90, 0xb1, 0x3f, 0xfb, 0x9f, 0x35, 0x5e, 0x3b,
+ 0xb2, 0x67, 0xba, 0xbf, 0x0b, 0x67, 0xea, 0x6e, 0xf4, 0xac, 0xea, 0x95,
+ 0x77, 0xa3, 0xe8, 0x90, 0xb4, 0x6f, 0x24, 0xd3, 0xe0, 0x06, 0x0f, 0x36,
+ 0xa2, 0xef, 0x8f, 0xae, 0xce, 0x4f, 0xcf, 0xbf, 0x39, 0xe0, 0x8f, 0x0a,
+ 0xa5, 0xc1, 0xdf, 0x92, 0x87, 0x05, 0xfa, 0xc1, 0x70, 0xb6, 0x20, 0xca,
+ 0xa2, 0xe8, 0x4d, 0x4e, 0xf6, 0x08, 0x31, 0x4c, 0x14, 0x58, 0x8d, 0xe1,
+ 0x40, 0xb4, 0x8c, 0x97, 0x0d, 0xdf, 0xaf, 0x61, 0xd8, 0x76, 0x60, 0xbe,
+ 0x9e, 0xbc, 0xc9, 0x3a, 0x47, 0xe0, 0x8f, 0xec, 0x3e, 0x26, 0x7d, 0xa9,
+ 0x8f, 0xd2, 0x92, 0xcc, 0x7c, 0x9d, 0x79, 0xf3, 0x4b, 0x39, 0x18, 0xbb,
+ 0x6c, 0xe7, 0xc3, 0x78, 0x0f, 0x70, 0x6d, 0x70, 0x97, 0x74, 0xb0, 0x11,
+ 0xb0, 0xa3, 0x44, 0x14, 0x07, 0x62, 0x75, 0x64, 0x36, 0x08, 0x2b, 0xeb,
+ 0x47, 0x47, 0x93, 0xe6, 0x51, 0xa2, 0xee, 0x82, 0x5a, 0xbd, 0x4a, 0xc1,
+ 0xb1, 0x55, 0x84, 0xd9, 0xcb, 0xcb, 0x23, 0xea, 0x30, 0x25, 0x9c, 0xcf,
+ 0x58, 0x25, 0x3d, 0x7e, 0xa6, 0x31, 0x1c, 0x99, 0x9e, 0xc4, 0x66, 0x50,
+ 0x29, 0x4c, 0xf1, 0x40, 0xd1, 0xf4, 0x03, 0x46, 0x3d, 0xcf, 0xc7, 0x64,
+ 0x47, 0x78, 0xfb, 0x33, 0x30, 0x0e, 0x9f, 0x4e, 0xc7, 0xae, 0x3a, 0x5a,
+ 0x47, 0xd7, 0x1f, 0x50, 0x41, 0x36, 0xad, 0x6e, 0x36, 0xac, 0x5b, 0x03,
+ 0xd5, 0x14, 0x58, 0xf0, 0x26, 0x4c, 0x84, 0xd6, 0x9d, 0x35, 0x49, 0x9d,
+ 0xdc, 0xce, 0xa4, 0x79, 0xfe, 0x75, 0x59, 0x56, 0x64, 0x0d, 0x89, 0xf8,
+ 0xe7, 0x95, 0xc0, 0xcc, 0xe6, 0xc9, 0x3c, 0x2f, 0x1e, 0xbd, 0x89, 0x9c,
+ 0x92, 0xf2, 0x81, 0x86, 0xa7, 0x9c, 0x16, 0xd2, 0x01, 0xc9, 0x47, 0x75,
+ 0x09, 0xa2, 0x11, 0x80, 0x3e, 0x75, 0x63, 0x07, 0x92, 0xd2, 0x04, 0x0c,
+ 0x08, 0xec, 0x6f, 0xeb, 0xb0, 0x55, 0x03, 0x8a, 0x1c, 0x3d, 0x6c, 0xdb,
+ 0x8b, 0x35, 0x35, 0x14, 0x17, 0x0e, 0xfe, 0xff, 0x2c, 0x46, 0xae, 0x93,
+ 0x25, 0xb5, 0x13, 0x22, 0xe9, 0xc1, 0x4b, 0x5b, 0x45, 0xee, 0x2f, 0xf6,
+ 0xfa, 0xdb, 0x35, 0x72, 0xcf, 0x1e, 0x31, 0x50, 0x10, 0xe6, 0x21, 0xd7,
+ 0xa0, 0x38, 0x96, 0x3c, 0x67, 0xd8, 0xc5, 0x49, 0x3a, 0x5d, 0x16, 0x09,
+ 0x6b, 0x70, 0x14, 0x5b, 0xd0, 0x90, 0x02, 0x2a, 0x45, 0x37, 0x39, 0x79,
+ 0xe2, 0x41, 0x98, 0x26, 0xb3, 0x49, 0xb7, 0x31, 0x1c, 0x99, 0x2f, 0x44,
+ 0xfd, 0x38, 0x7d, 0x62, 0x9a, 0x60, 0xa6, 0xd0, 0x60, 0x59, 0x22, 0x4a,
+ 0xec, 0x1c, 0x18, 0x4a, 0x84, 0xae, 0xe8, 0x68, 0x34, 0x8b, 0xd3, 0x39,
+ 0x91, 0xa9, 0xb8, 0x5a, 0xfb, 0xa1, 0x6b, 0x81, 0x06, 0x06, 0xbe, 0x3d,
+ 0x44, 0xd3, 0xb7, 0x28, 0x51, 0x32, 0xd3, 0xa9, 0xaa, 0xe6, 0xcc, 0x86,
+ 0xe5, 0x4d, 0x32, 0xba, 0x55, 0xe6, 0xa5, 0x2a, 0x67, 0x93, 0x8e, 0x31,
+ 0xc6, 0x40, 0xf6, 0x35, 0x3c, 0xb5, 0x2c, 0xf1, 0x9a, 0x94, 0x65, 0x8a,
+ 0xee, 0x33, 0x34, 0x07, 0x97, 0x23, 0xb2, 0x12, 0xe9, 0xc2, 0x00, 0x75,
+ 0x2b, 0x07, 0x8c, 0x80, 0xa5, 0x66, 0xe3, 0x5e, 0x55, 0xa4, 0x8b, 0xb6,
+ 0xd9, 0xf1, 0xa9, 0xd4, 0x15, 0xd4, 0x52, 0x2c, 0x76, 0x32, 0x86, 0xd9,
+ 0x3c, 0x1e, 0x45, 0x8d, 0xdd, 0x6c, 0x12, 0x25, 0xed, 0x6d, 0x17, 0xfd,
+ 0x41, 0x29, 0xe8, 0x0b, 0x6c, 0x2c, 0x91, 0xbb, 0x13, 0x4c, 0x23, 0x11,
+ 0x5c, 0x60, 0xc5, 0xa5, 0x23, 0x52, 0x82, 0xd2, 0x69, 0x82, 0xb1, 0x1c,
+ 0x90, 0x65, 0xd5, 0x0c, 0x54, 0x23, 0x9f, 0xc6, 0xe1, 0x37, 0xc9, 0x34,
+ 0xaf, 0x50, 0x1b, 0xf1, 0xc8, 0xe4, 0x03, 0xf1, 0x79, 0x43, 0x13, 0xaa,
+ 0xf6, 0xbb, 0x3a, 0x59, 0xca, 0xfa, 0x38, 0x7c, 0x9a, 0xd5, 0x7e, 0xf1,
+ 0x38, 0x94, 0x15, 0xdc, 0xac, 0xe6, 0xa9, 0xc3, 0x68, 0xa3, 0x84, 0x6c,
+ 0x2f, 0x52, 0x1c, 0x55, 0x6f, 0x55, 0x85, 0x1f, 0x59, 0x02, 0xea, 0xc8,
+ 0xd5, 0x7d, 0x3a, 0x4a, 0xd4, 0x1d, 0x27, 0x3e, 0xea, 0x59, 0xea, 0xb3,
+ 0xfa, 0x39, 0xde, 0x49, 0x78, 0x89, 0x75, 0x72, 0xf4, 0x9e, 0xdc, 0xa7,
+ 0xa8, 0xb3, 0x0b, 0xd3, 0x23, 0x95, 0x4c, 0xc4, 0x41, 0x5c, 0xa4, 0xe4,
+ 0x2a, 0x82, 0xe1, 0x64, 0x9e, 0x8e, 0x45, 0xef, 0xde, 0x31, 0x9e, 0x37,
+ 0xbd, 0x2f, 0x66, 0x8c, 0x35, 0x5f, 0xe8, 0x72, 0x4d, 0xe2, 0x74, 0x16,
+ 0xd8, 0x27, 0x62, 0x64, 0xd3, 0x84, 0xbc, 0x6a, 0x7c, 0x06, 0x4b, 0xdc,
+ 0x74, 0x8c, 0xbb, 0xf9, 0x4c, 0x2a, 0x49, 0xd8, 0x9e, 0x20, 0xe3, 0xe3,
+ 0xe1, 0xd1, 0x6c, 0x2f, 0x29, 0x6d, 0x7c, 0x76, 0xf2, 0x77, 0x3e, 0x3e,
+ 0xe7, 0x7a, 0xc6, 0x38, 0x6a, 0xbc, 0xc0, 0x00, 0x53, 0xf3, 0x86, 0xa2,
+ 0xe9, 0x85, 0x31, 0xca, 0x0d, 0xf5, 0x20, 0x27, 0xe2, 0x3f, 0x37, 0xb1,
+ 0x3d, 0x62, 0x48, 0xc8, 0xd3, 0xe4, 0x0a, 0xf3, 0x38, 0xc2, 0x81, 0x9b,
+ 0xbc, 0x1c, 0xe4, 0x2b, 0x88, 0x63, 0xe2, 0xa1, 0x35, 0x8a, 0xcd, 0x81,
+ 0x7d, 0x99, 0x08, 0x13, 0x7a, 0x7c, 0x85, 0xd7, 0x91, 0xa1, 0x45, 0x77,
+ 0x36, 0xc4, 0xcb, 0xd1, 0xf4, 0x43, 0x3d, 0x99, 0xa5, 0x4c, 0x37, 0x62,
+ 0xbd, 0x8e, 0x99, 0xd5, 0x88, 0x7d, 0xc0, 0xa2, 0x43, 0xb0, 0xa8, 0xa1,
+ 0xa9, 0x4e, 0x66, 0xf1, 0x94, 0xdc, 0x6b, 0xd3, 0xe6, 0x0d, 0xcd, 0x72,
+ 0x09, 0xf4, 0x95, 0x39, 0xb0, 0x77, 0x5c, 0xb5, 0xb8, 0xb6, 0xca, 0x68,
+ 0x1d, 0x88, 0x6c, 0xb6, 0x24, 0x71, 0x7f, 0x01, 0xcb, 0x1b, 0x0c, 0xde,
+ 0x6d, 0xb8, 0xec, 0x8d, 0x76, 0xf7, 0x39, 0xcc, 0x0d, 0xb9, 0x13, 0x19,
+ 0xe1, 0x5f, 0xf3, 0x79, 0xd4, 0x19, 0x9c, 0xb1, 0xee, 0x5c, 0x4d, 0x4e,
+ 0xe9, 0x12, 0x57, 0x81, 0xae, 0xd0, 0xbe, 0xb9, 0xfa, 0xf8, 0xa4, 0x7a,
+ 0x64, 0x99, 0xb0, 0x6b, 0x0a, 0xc2, 0xb2, 0x5c, 0x92, 0x73, 0x8a, 0xe4,
+ 0x71, 0x73, 0x38, 0x60, 0xf6, 0xc0, 0x8a, 0x96, 0x19, 0xfe, 0x69, 0x74,
+ 0xe8, 0x94, 0xac, 0x39, 0x3c, 0x8b, 0x02, 0x5d, 0xe0, 0x68, 0x07, 0x1b,
+ 0x1d, 0x14, 0x78, 0x8a, 0x8e, 0x8d, 0x7b, 0xd9, 0xbc, 0x84, 0xa0, 0xa1,
+ 0x11, 0xbb, 0x01, 0x11, 0x0a, 0x82, 0x19, 0x2f, 0x5c, 0x0b, 0xf7, 0x5e,
+ 0x2f, 0x97, 0xc0, 0x5f, 0xd0, 0x74, 0x10, 0xe6, 0x81, 0xf4, 0xd8, 0x9c,
+ 0x1d, 0xb3, 0x17, 0x90, 0x34, 0x0e, 0x1f, 0xd9, 0xf8, 0xad, 0x2f, 0x08,
+ 0x1d, 0x9a, 0x7b, 0x8a, 0x20, 0x7e, 0x13, 0x30, 0xc8, 0x48, 0x25, 0xf3,
+ 0xb4, 0xb1, 0xeb, 0xb3, 0x41, 0xe8, 0x30, 0xeb, 0xf1, 0x29, 0x7c, 0x1f,
+ 0x99, 0x2d, 0xba, 0x11, 0xd9, 0xad, 0x9a, 0xa3, 0x51, 0xe0, 0xc4, 0xa8,
+ 0x5c, 0x7f, 0xdf, 0x22, 0xc1, 0x60, 0x16, 0xdb, 0xcb, 0x1c, 0xfc, 0x46,
+ 0x06, 0x86, 0xc2, 0x1a, 0xb5, 0x13, 0xe3, 0x42, 0x3d, 0x3e, 0x72, 0xc7,
+ 0x25, 0x9f, 0x69, 0xf3, 0x22, 0x38, 0xbf, 0x5f, 0x2f, 0x37, 0x0c, 0x0f,
+ 0x83, 0x51, 0x2e, 0x4f, 0xde, 0x93, 0xfd, 0x1a, 0x03, 0xdd, 0x9c, 0xab,
+ 0xbb, 0x52, 0x63, 0xdb, 0xc3, 0x65, 0x3a, 0xab, 0xc5, 0x04, 0xac, 0xc9,
+ 0x4d, 0x81, 0x65, 0x26, 0x2d, 0x9a, 0x1a, 0x47, 0xb7, 0x52, 0x72, 0x0f,
+ 0x37, 0x09, 0xad, 0x7a, 0x5c, 0x88, 0x67, 0x7b, 0x59, 0xd6, 0x1c, 0x48,
+ 0x2a, 0x97, 0x67, 0x15, 0x69, 0xd9, 0x68, 0xd7, 0x3a, 0x63, 0x7a, 0x27,
+ 0x44, 0xd3, 0x42, 0x31, 0x30, 0xcd, 0xd2, 0xbf, 0x8b, 0x0e, 0x9a, 0x64,
+ 0x77, 0x69, 0x91, 0x67, 0xa8, 0xe5, 0x82, 0xe9, 0x5b, 0xa4, 0xc4, 0x96,
+ 0x51, 0xfd, 0x02, 0xc6, 0xb1, 0x76, 0xfc, 0xe1, 0xea, 0xec, 0xe3, 0xf1,
+ 0xd1, 0xc7, 0xaf, 0x3f, 0x9c, 0xbf, 0x39, 0x3b, 0x59, 0x6b, 0x0c, 0x87,
+ 0x3e, 0xbf, 0x54, 0x1c, 0xf5, 0x25, 0x5a, 0x1e, 0x74, 0x49, 0x60, 0x8a,
+ 0x3c, 0xf2, 0x34, 0xbd, 0x03, 0x86, 0x46, 0x86, 0x04, 0xf9, 0xe8, 0xe9,
+ 0x6f, 0xe4, 0xd5, 0x92, 0x0d, 0x6f, 0x0c, 0x37, 0x5c, 0xa2, 0x9e, 0xd6,
+ 0xaf, 0x69, 0xcb, 0x7a, 0x55, 0xc4, 0x6a, 0xd7, 0x09, 0x06, 0x34, 0x6c,
+ 0xd4, 0xa2, 0xb2, 0x31, 0x9a, 0x2f, 0x8e, 0x91, 0xe8, 0xb8, 0xeb, 0x97,
+ 0x15, 0x58, 0x49, 0x1a, 0x20, 0x00, 0xad, 0x2d, 0xbf, 0xd5, 0x2c, 0x03,
+ 0x30, 0xb1, 0x8e, 0x02, 0xc7, 0x5d, 0x5a, 0x4d, 0x74, 0x1c, 0xad, 0xe1,
+ 0x48, 0x40, 0xbf, 0x3d, 0x99, 0xe4, 0xa8, 0xa8, 0xc0, 0xbe, 0x49, 0x52,
+ 0xba, 0x18, 0x1a, 0x45, 0x45, 0x9d, 0x95, 0x9c, 0x73, 0x9e, 0x86, 0x0d,
+ 0xba, 0x26, 0xee, 0x01, 0x69, 0xf7, 0xc9, 0x43, 0x42, 0x37, 0x4f, 0xde,
+ 0x3a, 0x5e, 0x16, 0x74, 0x9b, 0xbf, 0x07, 0x6d, 0x04, 0xb9, 0xdf, 0x1b,
+ 0xf2, 0xee, 0xc1, 0x0b, 0xfa, 0x10, 0x88, 0x99, 0xa6, 0xc8, 0xcb, 0x67,
+ 0x18, 0x57, 0x8d, 0xc9, 0x93, 0x42, 0x7e, 0xaf, 0xcb, 0xa3, 0xeb, 0x77,
+ 0x41, 0x65, 0xd6, 0xa6, 0xf4, 0x08, 0x29, 0x92, 0x62, 0x5e, 0x56, 0x72,
+ 0x41, 0xce, 0x07, 0x83, 0x88, 0x12, 0x46, 0x66, 0xe9, 0xb0, 0x88, 0xf1,
+ 0x9b, 0xf8, 0x63, 0xfc, 0x29, 0x90, 0x75, 0x63, 0xb8, 0xcb, 0x6f, 0x8f,
+ 0x07, 0x7f, 0xdc, 0xde, 0x46, 0x2d, 0x7e, 0x09, 0xfb, 0xb2, 0x0e, 0xaf,
+ 0x64, 0x25, 0xdc, 0xcc, 0x79, 0xbf, 0xcc, 0x37, 0x48, 0x6c, 0x97, 0xa2,
+ 0x0e, 0xc4, 0x77, 0x20, 0x6d, 0x89, 0x8e, 0x94, 0xa8, 0xe1, 0x38, 0xbd,
+ 0x3d, 0x21, 0x46, 0x27, 0xd9, 0x34, 0xc0, 0x2f, 0x40, 0x5e, 0xcf, 0x7c,
+ 0x85, 0x7c, 0x3d, 0xbd, 0x18, 0x48, 0x2e, 0x4a, 0x3c, 0x82, 0xbf, 0xa2,
+ 0xa3, 0x60, 0x03, 0x57, 0x56, 0xbf, 0x61, 0xba, 0xaa, 0x01, 0x6b, 0xa3,
+ 0xd7, 0x68, 0xbe, 0x50, 0x0a, 0x8d, 0xcf, 0x15, 0xb2, 0xe6, 0xe5, 0xb2,
+ 0x69, 0x4a, 0x44, 0x0e, 0xc3, 0x78, 0x74, 0x7b, 0x1f, 0x17, 0x63, 0xb6,
+ 0x87, 0x80, 0x62, 0x86, 0xe9, 0x2c, 0xad, 0x1e, 0xd9, 0xae, 0x6d, 0xda,
+ 0xd4, 0x1c, 0x1f, 0xc5, 0x0d, 0x84, 0x7b, 0x34, 0x05, 0x93, 0x1f, 0xb5,
+ 0x4f, 0x54, 0xf1, 0xd3, 0xca, 0x35, 0x69, 0x49, 0x45, 0xaa, 0x8c, 0x8a,
+ 0x63, 0xbe, 0xed, 0x89, 0xc7, 0x8a, 0xef, 0x11, 0x4d, 0xd3, 0xd2, 0xae,
+ 0xb2, 0x41, 0x97, 0x49, 0x29, 0xf9, 0x44, 0xe5, 0x23, 0x48, 0xf9, 0x79,
+ 0x14, 0x50, 0x11, 0x29, 0x7b, 0x28, 0xfa, 0x36, 0x79, 0x04, 0xfb, 0x39,
+ 0xcd, 0x2c, 0xa7, 0x64, 0xfb, 0x3e, 0x41, 0xeb, 0x8e, 0x75, 0xd1, 0x54,
+ 0x9d, 0xe9, 0x89, 0xc4, 0x43, 0x58, 0x92, 0xf8, 0x0e, 0x04, 0x7e, 0x5f,
+ 0xf5, 0x70, 0x1c, 0x62, 0xad, 0xac, 0xb1, 0x64, 0xfa, 0x92, 0x7f, 0x88,
+ 0x03, 0xf8, 0x79, 0x96, 0x25, 0x33, 0x39, 0xbe, 0xeb, 0x55, 0x07, 0x60,
+ 0x9e, 0x85, 0x29, 0x7f, 0xcf, 0x37, 0xba, 0x31, 0xdc, 0x4b, 0x0e, 0xee,
+ 0xc7, 0x95, 0xca, 0x24, 0xcd, 0x1a, 0x02, 0xab, 0x68, 0xcb, 0xfc, 0xaa,
+ 0xdf, 0xfa, 0x19, 0xef, 0x36, 0x15, 0xf6, 0xd0, 0xeb, 0x67, 0xce, 0x4e,
+ 0x51, 0x3a, 0x64, 0x3c, 0x63, 0x39, 0xe2, 0x2f, 0x8c, 0x66, 0x45, 0x01,
+ 0x8c, 0xc6, 0x70, 0xae, 0x96, 0xad, 0x32, 0x4c, 0xd6, 0xb1, 0x06, 0x7a,
+ 0x6a, 0x5e, 0x90, 0xbf, 0xa8, 0xc8, 0xe1, 0xac, 0x6b, 0xe7, 0xb9, 0xce,
+ 0xca, 0x46, 0xf3, 0x9a, 0x08, 0x37, 0x77, 0x36, 0x66, 0x23, 0x74, 0xd1,
+ 0x3d, 0xcd, 0xc4, 0x37, 0x59, 0x5b, 0x2d, 0xce, 0xba, 0x84, 0x26, 0x2e,
+ 0x7d, 0x08, 0x6c, 0xec, 0x5f, 0x17, 0xd0, 0xcc, 0x0c, 0x89, 0xf9, 0xf9,
+ 0x32, 0x4b, 0x68, 0xb1, 0x26, 0xa8, 0xdf, 0xab, 0x44, 0xc6, 0x49, 0x18,
+ 0x17, 0xec, 0x82, 0x13, 0x06, 0x58, 0x71, 0x64, 0x5f, 0xb2, 0x6f, 0x06,
+ 0xa0, 0x3b, 0x50, 0x5c, 0x8e, 0x07, 0x9d, 0x68, 0x3d, 0xe9, 0x4f, 0x61,
+ 0xbc, 0x0e, 0x8e, 0xb3, 0x7d, 0x80, 0xff, 0xdd, 0xa1, 0xff, 0xee, 0x76,
+ 0x34, 0xb5, 0xcf, 0xdd, 0x7a, 0x94, 0xe6, 0x4d, 0x59, 0xc4, 0xf1, 0x38,
+ 0x2b, 0xdc, 0xbb, 0xec, 0x63, 0x6e, 0x63, 0x3c, 0xac, 0xb3, 0x9e, 0xf1,
+ 0x2e, 0xfb, 0xea, 0x96, 0x6e, 0xc3, 0x9c, 0xfd, 0x11, 0x77, 0x09, 0x3b,
+ 0x44, 0x60, 0x65, 0x23, 0x50, 0x0f, 0xc9, 0x8d, 0xa8, 0xb7, 0x6a, 0xf4,
+ 0xb1, 0x48, 0x6e, 0xe2, 0xf2, 0x26, 0x5a, 0x56, 0x4c, 0x84, 0x40, 0xb7,
+ 0xcd, 0xe1, 0x16, 0xb3, 0xd4, 0x7a, 0xda, 0xe4, 0xd3, 0x7d, 0xb5, 0xfb,
+ 0xec, 0x29, 0x72, 0x04, 0x64, 0x96, 0xdf, 0xeb, 0x33, 0x3d, 0xc9, 0xb5,
+ 0x0b, 0xa9, 0x05, 0x70, 0x9a, 0xe4, 0x37, 0xc1, 0xc7, 0xdc, 0x48, 0xf6,
+ 0x1c, 0xb5, 0x49, 0x4c, 0x04, 0x04, 0x16, 0x37, 0x81, 0x1d, 0x43, 0x8b,
+ 0x6e, 0x46, 0xe7, 0x86, 0xb6, 0x2b, 0xcd, 0xdb, 0x33, 0x4d, 0x45, 0xcf,
+ 0x4b, 0x27, 0xe2, 0xbd, 0x95, 0x7f, 0x93, 0x3c, 0x15, 0xed, 0xab, 0xe4,
+ 0x68, 0x77, 0x53, 0xf5, 0x7a, 0x9a, 0xb4, 0x95, 0x41, 0x1a, 0x4d, 0x47,
+ 0x16, 0xcb, 0x01, 0x13, 0xa5, 0xeb, 0x74, 0x4a, 0xb6, 0x46, 0xc8, 0x81,
+ 0xc1, 0x4e, 0xa9, 0x7f, 0xe9, 0x92, 0xc0, 0x8c, 0x7b, 0xe8, 0x2f, 0x5d,
+ 0x96, 0xcf, 0xb8, 0x23, 0x0e, 0xd3, 0xe5, 0x77, 0x8c, 0xbf, 0x98, 0xa3,
+ 0xfa, 0xee, 0x06, 0x34, 0xa9, 0xf0, 0xd1, 0x21, 0x8c, 0x63, 0xe7, 0x66,
+ 0x0d, 0x78, 0xa0, 0x2b, 0x71, 0x91, 0xac, 0xc7, 0xb7, 0x71, 0x3f, 0xba,
+ 0x38, 0x1e, 0x5c, 0xe2, 0x27, 0x80, 0x3a, 0xb2, 0x29, 0xcc, 0xe2, 0x6c,
+ 0xd0, 0x18, 0x2e, 0x79, 0xa8, 0x92, 0xac, 0x0c, 0x39, 0x28, 0xfd, 0x6d,
+ 0xd6, 0x28, 0x82, 0xa6, 0xd7, 0xc8, 0x64, 0xc1, 0xd2, 0xa7, 0xb8, 0x38,
+ 0x86, 0x79, 0x31, 0x07, 0x23, 0xe2, 0xab, 0xe6, 0x7d, 0x68, 0x01, 0x37,
+ 0x7f, 0xbc, 0x61, 0x5c, 0x35, 0x5d, 0xa5, 0x05, 0x13, 0x2e, 0x2c, 0x97,
+ 0x53, 0xb4, 0x41, 0x4a, 0xb5, 0x1b, 0xcd, 0x17, 0x60, 0x37, 0x7c, 0x55,
+ 0x41, 0x96, 0x6d, 0x3c, 0x89, 0x60, 0x35, 0x61, 0x26, 0x15, 0xa9, 0x48,
+ 0x59, 0x6e, 0x47, 0xc5, 0x6c, 0x0a, 0xca, 0x1a, 0x4d, 0x29, 0xc0, 0x36,
+ 0x4a, 0x40, 0x05, 0x1d, 0x07, 0x94, 0x00, 0x3e, 0x14, 0x35, 0x9c, 0x26,
+ 0x92, 0x29, 0x1a, 0xf0, 0xff, 0xd0, 0x40, 0x23, 0x56, 0xd1, 0x90, 0xea,
+ 0x29, 0x50, 0x91, 0xa2, 0x9f, 0x14, 0x15, 0x66, 0x36, 0xd5, 0x71, 0x3c,
+ 0x73, 0xff, 0xbf, 0xc9, 0x96, 0xb0, 0xf1, 0x01, 0x69, 0x8c, 0x4a, 0x15,
+ 0x8a, 0x19, 0xdc, 0xc0, 0x55, 0x8e, 0xbd, 0xbd, 0xed, 0xba, 0x1f, 0x9b,
+ 0x88, 0x0d, 0x0c, 0x80, 0x24, 0x3a, 0xc4, 0xff, 0x3e, 0xc9, 0x95, 0x29,
+ 0x75, 0x85, 0x9e, 0x97, 0x78, 0x27, 0xf3, 0x4e, 0xf1, 0xc5, 0x44, 0x75,
+ 0x06, 0xed, 0x49, 0x2f, 0x22, 0xb7, 0x3e, 0xf2, 0xbd, 0x6e, 0xf4, 0x06,
+ 0x13, 0xb2, 0x4f, 0xce, 0xbf, 0x21, 0x1a, 0xb8, 0xdc, 0xde, 0xa1, 0xe8,
+ 0x92, 0xb1, 0x1e, 0xc6, 0xf4, 0x91, 0x92, 0x1d, 0x09, 0x1c, 0x1d, 0xf6,
+ 0x15, 0x5f, 0x92, 0x09, 0x5d, 0x62, 0xa3, 0x18, 0x16, 0xa4, 0xec, 0xa1,
+ 0xf1, 0xa7, 0x93, 0x5f, 0x9e, 0x21, 0x7a, 0xd2, 0x95, 0x1d, 0x14, 0xc7,
+ 0xcc, 0x6d, 0xf2, 0x68, 0xff, 0x46, 0xbb, 0xea, 0x6c, 0xb5, 0x7d, 0xf8,
+ 0xd0, 0xd9, 0xa4, 0x1f, 0x0f, 0x30, 0x43, 0x09, 0xb4, 0xd4, 0xf1, 0xcf,
+ 0xbf, 0x4e, 0x22, 0x86, 0x77, 0x3e, 0xe0, 0x6c, 0x21, 0x3f, 0x97, 0xe6,
+ 0x02, 0x71, 0xe8, 0x9f, 0x59, 0xbc, 0xa4, 0xc3, 0x63, 0xa6, 0x3c, 0x12,
+ 0x7c, 0x9c, 0x19, 0x95, 0xa4, 0xc7, 0x09, 0x60, 0x94, 0x10, 0xd6, 0xdc,
+ 0xfb, 0x51, 0x3e, 0xf3, 0x64, 0x5d, 0xcd, 0x70, 0x25, 0x7d, 0x7e, 0x47,
+ 0xe4, 0x1b, 0x19, 0x73, 0xcc, 0x6c, 0x44, 0x8b, 0x6e, 0x5e, 0x07, 0xa3,
+ 0x53, 0x93, 0xfa, 0x65, 0x25, 0x23, 0xbe, 0xc9, 0x2f, 0x52, 0x98, 0x9b,
+ 0xa6, 0xc6, 0x9a, 0x52, 0x3f, 0xb2, 0x1a, 0x6f, 0x48, 0xfd, 0x87, 0xb3,
+ 0xd5, 0xbd, 0x85, 0x43, 0x47, 0x3f, 0x93, 0xd9, 0xb5, 0xae, 0xeb, 0x69,
+ 0x02, 0x26, 0x57, 0xa4, 0xaa, 0x9f, 0x4b, 0x32, 0xa9, 0x1f, 0xc3, 0xe0,
+ 0x8c, 0x03, 0xf1, 0x46, 0x49, 0x66, 0x55, 0xcd, 0x97, 0xcf, 0xe4, 0x87,
+ 0x96, 0x68, 0xc7, 0xd9, 0x92, 0x4e, 0xe8, 0x28, 0x2a, 0x0e, 0x7e, 0xca,
+ 0x15, 0x4a, 0xef, 0x70, 0xeb, 0x94, 0x76, 0xac, 0x63, 0xb3, 0xae, 0xfa,
+ 0xe6, 0x19, 0xfe, 0x99, 0xa1, 0x4f, 0xec, 0x0f, 0x01, 0x82, 0x0c, 0xd2,
+ 0x22, 0xfa, 0xc6, 0x25, 0xf6, 0x41, 0x0a, 0x0c, 0x26, 0x41, 0x4a, 0x16,
+ 0xfa, 0xec, 0xf1, 0x59, 0x06, 0x9d, 0x2a, 0x20, 0x6a, 0xb7, 0x39, 0xc6,
+ 0x9c, 0x67, 0xed, 0x34, 0x09, 0x04, 0xd8, 0x78, 0x85, 0x29, 0x25, 0x4c,
+ 0xbb, 0xe8, 0x7b, 0x4d, 0x47, 0xb7, 0x14, 0x79, 0x11, 0x09, 0xe5, 0xae,
+ 0x4f, 0xf3, 0xf6, 0x38, 0xe3, 0x34, 0x70, 0x04, 0x64, 0x4b, 0xa2, 0x53,
+ 0x18, 0x69, 0x12, 0xa5, 0x73, 0x9a, 0xb1, 0xce, 0xd6, 0xea, 0x65, 0x80,
+ 0xb9, 0x7e, 0x7c, 0x73, 0x7a, 0x15, 0xad, 0xa3, 0x06, 0xde, 0x34, 0x72,
+ 0x55, 0xbc, 0x6f, 0x26, 0xd5, 0x68, 0x73, 0x71, 0x9b, 0x6e, 0x82, 0xb1,
+ 0x39, 0x1e, 0x6e, 0x18, 0x23, 0x8a, 0x3e, 0x87, 0x54, 0x68, 0x0c, 0x53,
+ 0xb5, 0x4c, 0xc9, 0x34, 0xf5, 0x5c, 0x8f, 0xd6, 0x54, 0xe5, 0x0a, 0x17,
+ 0x63, 0xa3, 0xf2, 0x36, 0x31, 0x41, 0x53, 0x88, 0x86, 0xb3, 0x23, 0x28,
+ 0xb0, 0x93, 0xb0, 0x5f, 0x1a, 0x6c, 0xec, 0xe6, 0x5d, 0xe5, 0xec, 0x47,
+ 0x71, 0xe4, 0xb0, 0x03, 0x47, 0x53, 0xf6, 0x44, 0x5c, 0x58, 0xed, 0xb7,
+ 0x8b, 0xc9, 0x96, 0xb8, 0x29, 0x0b, 0x14, 0x49, 0x63, 0x74, 0x03, 0x36,
+ 0x87, 0x23, 0x4d, 0xae, 0xd3, 0xdf, 0xec, 0x44, 0x26, 0xbd, 0x14, 0x76,
+ 0x99, 0xf3, 0xa7, 0x4d, 0xe0, 0x0b, 0x48, 0x6c, 0xb2, 0x2c, 0x8d, 0x1f,
+ 0x33, 0x36, 0xe7, 0xd5, 0x0f, 0x31, 0x54, 0xe7, 0x38, 0x8d, 0xce, 0x05,
+ 0xba, 0x31, 0xdd, 0x2c, 0xd7, 0x5a, 0x97, 0x49, 0xd1, 0x51, 0x75, 0x7e,
+ 0xea, 0x44, 0x4e, 0x7a, 0x62, 0x2d, 0x4b, 0x31, 0xb5, 0x09, 0x44, 0x8e,
+ 0x10, 0x00, 0x89, 0x6c, 0xee, 0xf0, 0x38, 0x99, 0xa5, 0xf3, 0x94, 0x6c,
+ 0x2f, 0x77, 0x0a, 0xbd, 0x50, 0x80, 0xd0, 0x4e, 0xe9, 0x27, 0x7f, 0x4a,
+ 0x9a, 0xf2, 0x1b, 0xe3, 0xaf, 0x61, 0x4a, 0xe4, 0x11, 0xe3, 0x8c, 0xcc,
+ 0xb0, 0xd5, 0x5c, 0x9f, 0x90, 0x49, 0x1a, 0x5e, 0x11, 0x39, 0x36, 0x77,
+ 0xa9, 0x4d, 0x95, 0xb7, 0x2e, 0x11, 0xbd, 0xf4, 0xcc, 0xd4, 0xa2, 0xc5,
+ 0xed, 0xa8, 0xdc, 0xde, 0x6e, 0x0a, 0xba, 0xd2, 0x52, 0x94, 0xd8, 0xef,
+ 0xb1, 0x21, 0xcc, 0x0f, 0x57, 0xa7, 0xd1, 0x3a, 0x16, 0x89, 0xbc, 0xdc,
+ 0xdf, 0xde, 0xd9, 0x70, 0x33, 0x4b, 0x94, 0x01, 0xf8, 0x72, 0xf3, 0x91,
+ 0x43, 0xb2, 0xce, 0x05, 0x9c, 0xe5, 0xa3, 0x58, 0x34, 0x0e, 0x3b, 0xf4,
+ 0x38, 0xb9, 0x4b, 0x47, 0x58, 0xa3, 0x83, 0x01, 0x79, 0xe4, 0xc1, 0xc3,
+ 0x04, 0x26, 0xe9, 0xed, 0xb8, 0xcd, 0xe8, 0xe5, 0xd9, 0x83, 0x89, 0x64,
+ 0x34, 0x65, 0xcc, 0x9b, 0x06, 0x1a, 0xa8, 0x64, 0xef, 0xdc, 0x59, 0x4b,
+ 0x94, 0x20, 0x6e, 0xf1, 0x04, 0xe1, 0xba, 0xb8, 0x82, 0x86, 0x74, 0x8c,
+ 0xae, 0x0d, 0xfc, 0xf4, 0x7a, 0xb2, 0x59, 0xc2, 0x7a, 0x4d, 0xec, 0x18,
+ 0x33, 0x50, 0x9a, 0x07, 0x28, 0x73, 0xea, 0xa0, 0x20, 0xc9, 0x48, 0xb8,
+ 0xc7, 0x76, 0x50, 0xb3, 0xfb, 0xae, 0x26, 0x54, 0x1f, 0xd5, 0xf7, 0x94,
+ 0x13, 0xe1, 0x80, 0xe6, 0x12, 0x1e, 0xf2, 0x77, 0x72, 0x32, 0xd5, 0xd9,
+ 0xa7, 0x1c, 0x0f, 0x9e, 0xbd, 0x78, 0x0d, 0x87, 0xac, 0x28, 0x28, 0xbf,
+ 0x8d, 0xf5, 0x71, 0x4f, 0x8e, 0xc3, 0xeb, 0x9b, 0x2a, 0x84, 0x48, 0x0a,
+ 0xa9, 0xbf, 0x91, 0x3d, 0x3f, 0xc0, 0x3c, 0xc9, 0xd3, 0x73, 0x2b, 0x8e,
+ 0x1e, 0x52, 0x8a, 0x4d, 0x0a, 0x87, 0xef, 0x2b, 0x56, 0xc1, 0x0f, 0x47,
+ 0x34, 0xca, 0xc7, 0x0d, 0x93, 0x1d, 0x37, 0xc1, 0x11, 0x78, 0xc4, 0xfd,
+ 0x38, 0x54, 0x49, 0x1c, 0x2f, 0xec, 0xc9, 0x46, 0x4a, 0x65, 0xf7, 0xfa,
+ 0x2f, 0xe2, 0x81, 0x21, 0x8f, 0x1a, 0xb1, 0xc0, 0x5f, 0xc5, 0x01, 0x9f,
+ 0xf0, 0x39, 0x1d, 0x7b, 0x12, 0xbb, 0x34, 0xca, 0x90, 0xd5, 0xd5, 0x30,
+ 0x59, 0x3c, 0xa2, 0x8d, 0xf3, 0x2d, 0x1a, 0x4c, 0x1b, 0xa4, 0x94, 0x00,
+ 0xcc, 0xf9, 0x6a, 0xdc, 0x4d, 0x76, 0xec, 0xc0, 0x75, 0x59, 0x3f, 0xe3,
+ 0x20, 0x65, 0x74, 0xf9, 0xf6, 0x07, 0xe5, 0x96, 0x21, 0x03, 0x9e, 0x1c,
+ 0x51, 0x5f, 0x98, 0xec, 0x30, 0xb0, 0x28, 0x30, 0x53, 0x2d, 0x95, 0xac,
+ 0x4f, 0x76, 0x13, 0x51, 0x38, 0x7c, 0xc3, 0x26, 0x33, 0xe2, 0x56, 0x77,
+ 0x0e, 0xe9, 0x77, 0xcd, 0x58, 0x53, 0xce, 0x96, 0xcc, 0x97, 0x3f, 0xf1,
+ 0xaf, 0x99, 0xc7, 0xc2, 0xbf, 0xaa, 0x9b, 0xe5, 0x7c, 0x08, 0xe7, 0x99,
+ 0x55, 0x5f, 0x76, 0x22, 0x0e, 0xb6, 0x4e, 0x64, 0x3f, 0x57, 0x98, 0x9d,
+ 0xa9, 0xd6, 0xeb, 0xa8, 0x6f, 0xb1, 0xb6, 0x6b, 0x3c, 0x3b, 0xad, 0x1d,
+ 0xb0, 0xf9, 0x79, 0x70, 0x78, 0xec, 0xcb, 0xf6, 0x54, 0xbd, 0x0f, 0x40,
+ 0x9e, 0x3f, 0xbd, 0xff, 0xcb, 0x4f, 0xaf, 0x76, 0xf7, 0xe2, 0x97, 0xf1,
+ 0xe8, 0xc5, 0xe4, 0xf3, 0x78, 0x7f, 0xbc, 0xff, 0xf2, 0xd5, 0xce, 0xe7,
+ 0xfb, 0xf1, 0xcb, 0xbd, 0x49, 0xfc, 0x62, 0x3b, 0xd9, 0x7e, 0x35, 0xd9,
+ 0xd9, 0x1d, 0x8f, 0x27, 0xc9, 0xe7, 0xe3, 0x97, 0x71, 0xa7, 0x4f, 0xe6,
+ 0x97, 0x4e, 0xdd, 0x67, 0xb5, 0x1a, 0x78, 0x8b, 0xa3, 0xc1, 0xbb, 0xa3,
+ 0xde, 0x76, 0x74, 0x93, 0x3c, 0xe8, 0x05, 0x63, 0x8f, 0xa6, 0xc9, 0xba,
+ 0x4b, 0x24, 0xaf, 0xba, 0x7d, 0xb1, 0x5a, 0x28, 0x88, 0x59, 0xd3, 0xe8,
+ 0x2b, 0x21, 0x0d, 0x98, 0x77, 0x51, 0xb7, 0x95, 0xf3, 0xea, 0x8c, 0xff,
+ 0xf0, 0x40, 0x7d, 0xf6, 0xb8, 0xae, 0xe6, 0xe5, 0x3f, 0x83, 0x77, 0x66,
+ 0xef, 0xe3, 0x11, 0x28, 0x49, 0xb0, 0x27, 0xf2, 0xe0, 0x00, 0x4c, 0x5b,
+ 0x60, 0xd3, 0xdd, 0x48, 0xfe, 0x82, 0x5e, 0x62, 0x67, 0x8c, 0x6f, 0x8a,
+ 0x7c, 0xb9, 0xb8, 0xcc, 0x67, 0xe9, 0xe8, 0x71, 0xd5, 0x70, 0xee, 0x63,
+ 0xb5, 0x5f, 0x9c, 0x30, 0x0b, 0x4f, 0xcb, 0xe4, 0x77, 0x34, 0xad, 0x1c,
+ 0x76, 0xfc, 0x0c, 0xdb, 0xaa, 0x37, 0x4a, 0x17, 0x37, 0x18, 0xe7, 0x3d,
+ 0xa4, 0x2c, 0x3f, 0x0c, 0xcd, 0xf0, 0x0f, 0xc2, 0x36, 0xd5, 0x40, 0x6e,
+ 0x64, 0x29, 0xe7, 0xa9, 0x6f, 0x8b, 0xc6, 0x95, 0x6a, 0x09, 0x9c, 0xba,
+ 0xa9, 0x24, 0xb3, 0x34, 0xf5, 0xfc, 0x78, 0xf6, 0x43, 0x7c, 0xdb, 0x55,
+ 0xdb, 0x66, 0xe7, 0x85, 0xfc, 0xaa, 0x1f, 0x5d, 0x51, 0x9c, 0x7c, 0xb9,
+ 0x60, 0xf3, 0x82, 0xfc, 0xf9, 0xfc, 0xbb, 0xe6, 0x45, 0xc3, 0xc9, 0x0b,
+ 0xc5, 0x70, 0x21, 0x1e, 0xec, 0xe8, 0x87, 0xab, 0xb3, 0x83, 0xe6, 0x3e,
+ 0x51, 0xb1, 0x51, 0x79, 0xb0, 0xb9, 0x49, 0x21, 0x9f, 0x9b, 0xf8, 0xe1,
+ 0xa1, 0x5f, 0x26, 0x9b, 0xe3, 0x7c, 0x54, 0x6e, 0x96, 0xe5, 0x4c, 0x77,
+ 0xa3, 0x5e, 0xfb, 0xf7, 0x09, 0xbc, 0xb9, 0xf9, 0x9c, 0xd8, 0x56, 0x32,
+ 0xee, 0x95, 0xa5, 0x97, 0x1b, 0x34, 0x38, 0xd6, 0xcc, 0x83, 0x13, 0xc9,
+ 0x49, 0x23, 0x39, 0xd7, 0x83, 0xdd, 0x1d, 0x0c, 0xde, 0x45, 0xfa, 0x32,
+ 0x6d, 0xaf, 0x09, 0x89, 0x9b, 0xbc, 0x9c, 0x6e, 0x40, 0x0d, 0x8b, 0x85,
+ 0x61, 0x7f, 0xe1, 0x3a, 0x74, 0x50, 0x9d, 0xce, 0xf9, 0x0f, 0xa9, 0x5d,
+ 0x49, 0xab, 0x95, 0x89, 0x7c, 0x2f, 0x1a, 0x0e, 0x10, 0xb3, 0x88, 0x70,
+ 0xfc, 0x5f, 0x9d, 0x60, 0x71, 0x64, 0x9f, 0xb4, 0x1e, 0xa1, 0x66, 0x71,
+ 0x3a, 0x50, 0xef, 0x34, 0x2f, 0x40, 0x78, 0xcc, 0xcb, 0x90, 0x17, 0x54,
+ 0x6f, 0x79, 0xc9, 0x6a, 0x5f, 0xc9, 0xb9, 0x88, 0x30, 0x4c, 0xe6, 0x0c,
+ 0x0e, 0xc7, 0x48, 0x39, 0x8c, 0x7d, 0xf7, 0xb0, 0x82, 0xf1, 0x2d, 0x3d,
+ 0xbc, 0x36, 0x2f, 0xda, 0x32, 0xb3, 0xc1, 0x0f, 0x12, 0xc7, 0x30, 0x59,
+ 0x29, 0x2c, 0xf3, 0x2c, 0x04, 0xca, 0xfd, 0x27, 0x31, 0x81, 0x3a, 0x44,
+ 0x51, 0xe4, 0x8e, 0x52, 0xdb, 0xfb, 0x96, 0x8c, 0x4b, 0x90, 0x8e, 0xe9,
+ 0x54, 0xc3, 0xeb, 0x2d, 0x39, 0x76, 0x28, 0xba, 0x2a, 0xca, 0x5d, 0x96,
+ 0x72, 0x70, 0x14, 0x0a, 0x98, 0xc2, 0x46, 0xa9, 0x25, 0x92, 0x9d, 0xc9,
+ 0xe9, 0x40, 0xb5, 0x2a, 0x78, 0xef, 0x26, 0x60, 0xcd, 0x8f, 0x7d, 0x1c,
+ 0xd3, 0xa8, 0xf4, 0x5e, 0xd2, 0xf0, 0xe2, 0xbe, 0x70, 0x12, 0xdb, 0x50,
+ 0x2b, 0x23, 0x37, 0x03, 0x3c, 0xd3, 0xb4, 0xf6, 0x28, 0xe7, 0xd6, 0xe8,
+ 0x7c, 0xa1, 0x12, 0xd7, 0xe6, 0x7a, 0x34, 0xf5, 0x5e, 0xf7, 0x36, 0xa5,
+ 0xa2, 0xea, 0x98, 0xf2, 0xfa, 0x43, 0xa2, 0x3d, 0x77, 0x82, 0xb4, 0x38,
+ 0xa0, 0x2f, 0xf3, 0x2a, 0x93, 0x36, 0xa9, 0x95, 0x4a, 0xa4, 0x10, 0x00,
+ 0x07, 0x02, 0xb1, 0x87, 0x19, 0xe7, 0x58, 0x4a, 0x3f, 0xcb, 0xad, 0x82,
+ 0x05, 0x84, 0x07, 0xbc, 0x90, 0xaa, 0x11, 0xfb, 0x1e, 0xdf, 0xe6, 0x9a,
+ 0x24, 0x4e, 0x22, 0xe4, 0xda, 0x3a, 0xce, 0xf6, 0xe2, 0x9f, 0x91, 0xf8,
+ 0x1a, 0x6a, 0x8c, 0xdc, 0xf2, 0x33, 0x3c, 0xbf, 0x90, 0x6b, 0x48, 0xb2,
+ 0xf2, 0xb9, 0xd0, 0x31, 0xa5, 0x12, 0x5e, 0x29, 0xfa, 0xe4, 0x22, 0x03,
+ 0xf5, 0x6c, 0x97, 0xb9, 0xa4, 0x6c, 0xe2, 0x44, 0x71, 0x9e, 0x3c, 0xc7,
+ 0x26, 0xa9, 0x9b, 0x82, 0xce, 0x9a, 0x31, 0x12, 0x97, 0x36, 0x57, 0xbf,
+ 0xf4, 0xa3, 0x95, 0x76, 0x33, 0x43, 0xd6, 0xab, 0x57, 0xf7, 0x40, 0x13,
+ 0x29, 0x12, 0xfd, 0x42, 0x96, 0x37, 0x27, 0xa5, 0xf3, 0x08, 0xe5, 0xa3,
+ 0x6a, 0x6e, 0xbf, 0x33, 0x01, 0xcd, 0xf1, 0x37, 0xa7, 0xdc, 0x92, 0xbd,
+ 0x99, 0x44, 0xf6, 0x91, 0xc8, 0xda, 0x99, 0xf6, 0x18, 0xc9, 0xdf, 0x40,
+ 0x15, 0x1b, 0x25, 0x4f, 0xfd, 0x00, 0xe7, 0xf4, 0x7a, 0x23, 0xe4, 0x27,
+ 0xb6, 0x23, 0x29, 0x45, 0xe1, 0x3d, 0x9d, 0xe5, 0xa5, 0xc6, 0x5f, 0x50,
+ 0xb9, 0xe0, 0xba, 0x5b, 0xe0, 0x06, 0xdf, 0xcb, 0x0f, 0xf8, 0x68, 0x1a,
+ 0xc3, 0xf1, 0x53, 0x5d, 0x99, 0xe2, 0xc4, 0x2a, 0x1b, 0x62, 0xab, 0xda,
+ 0x62, 0x61, 0xd4, 0x36, 0x8c, 0x35, 0x79, 0x10, 0xfd, 0xf4, 0x53, 0x37,
+ 0x02, 0x23, 0xb9, 0x31, 0xdc, 0x4f, 0x15, 0xfc, 0x14, 0x68, 0xf1, 0x27,
+ 0x2e, 0x58, 0xfa, 0xe9, 0x0e, 0x8d, 0x40, 0x74, 0x30, 0x97, 0x33, 0x8c,
+ 0x1e, 0xb1, 0x9a, 0x5d, 0xf7, 0xca, 0x71, 0x3d, 0xf4, 0x8a, 0xd4, 0x2c,
+ 0x6b, 0xb7, 0x73, 0x2a, 0x26, 0x1c, 0xd8, 0x72, 0x9e, 0x89, 0x75, 0xc2,
+ 0xc4, 0x49, 0xf7, 0x9e, 0xe4, 0xc0, 0xda, 0x1f, 0xd7, 0x2c, 0x21, 0x85,
+ 0xf6, 0xae, 0x48, 0x58, 0xd2, 0x93, 0xa8, 0x4a, 0x1d, 0x31, 0xa5, 0xd5,
+ 0xc3, 0x64, 0x6e, 0x46, 0x1c, 0x2e, 0x45, 0x66, 0x7a, 0x81, 0xce, 0x75,
+ 0x2e, 0x03, 0x6b, 0x8a, 0x71, 0x6b, 0x4a, 0x62, 0x6d, 0xdc, 0xe2, 0xe6,
+ 0xb1, 0xc4, 0x4c, 0x0e, 0x99, 0x8d, 0x77, 0x7b, 0x5a, 0x13, 0x8c, 0x65,
+ 0xef, 0xb1, 0xa8, 0x07, 0xf9, 0x00, 0x32, 0xbf, 0x1a, 0xeb, 0x84, 0x19,
+ 0xad, 0xf5, 0xd6, 0x4c, 0x2c, 0x4c, 0xf2, 0x65, 0xbc, 0x5c, 0x7a, 0x93,
+ 0x9c, 0x6d, 0x93, 0x0f, 0xbd, 0x4f, 0x3a, 0x49, 0x71, 0xb9, 0x9b, 0xee,
+ 0x68, 0x8b, 0xdb, 0xb1, 0x3a, 0x55, 0xa3, 0xf8, 0xf2, 0x7d, 0xe1, 0x3f,
+ 0x01, 0x87, 0x13, 0xa5, 0x45, 0x92, 0xe9, 0xa1, 0x03, 0x90, 0x37, 0xc4,
+ 0x86, 0x87, 0x7a, 0x3d, 0xc2, 0x19, 0x59, 0x30, 0x36, 0x08, 0x92, 0x04,
+ 0x65, 0x1e, 0x3c, 0x62, 0x25, 0xd8, 0x62, 0xe6, 0xf1, 0x5b, 0x49, 0x05,
+ 0xd4, 0x62, 0x6b, 0xbc, 0xe0, 0x08, 0x48, 0x71, 0x9f, 0x09, 0xa0, 0xc0,
+ 0x20, 0x27, 0xaf, 0xcc, 0x88, 0x72, 0x18, 0x24, 0x5d, 0x46, 0x6a, 0xca,
+ 0x02, 0x56, 0x20, 0xca, 0x40, 0x4f, 0x07, 0xc2, 0xf9, 0xbc, 0x8e, 0x3a,
+ 0xed, 0x9a, 0x50, 0xa7, 0xf9, 0x06, 0x65, 0x40, 0x5a, 0x17, 0xa7, 0xd4,
+ 0xcb, 0xd3, 0x44, 0xd6, 0x25, 0x93, 0xae, 0xf7, 0x37, 0x4e, 0x68, 0xe3,
+ 0x92, 0x2e, 0x91, 0xaf, 0x1b, 0x9c, 0x20, 0x5c, 0x06, 0x22, 0xfb, 0x36,
+ 0xcb, 0xca, 0xa1, 0x0f, 0x9b, 0xa7, 0x94, 0x92, 0xfb, 0x9a, 0xa4, 0x17,
+ 0x4b, 0x3b, 0xe7, 0x69, 0x2f, 0x14, 0xaf, 0x6f, 0x63, 0xc5, 0x09, 0x7e,
+ 0x4f, 0x5c, 0xd2, 0x2a, 0x3a, 0xcc, 0x8d, 0x5e, 0xcc, 0x08, 0xa7, 0x43,
+ 0x6b, 0x5d, 0x48, 0x25, 0xf2, 0x76, 0x67, 0x7b, 0xc3, 0x54, 0x47, 0x12,
+ 0xd8, 0x06, 0x67, 0x66, 0x8b, 0x9e, 0xd0, 0xb9, 0xc9, 0x39, 0x97, 0xa8,
+ 0x73, 0x80, 0x85, 0x7b, 0x72, 0x1b, 0x69, 0x8d, 0x0a, 0x83, 0xd0, 0x18,
+ 0x8e, 0x32, 0xb5, 0xde, 0x5d, 0xbc, 0x3f, 0xa9, 0x67, 0xe0, 0xd2, 0x4f,
+ 0x42, 0xce, 0x57, 0x60, 0x57, 0x6f, 0x81, 0xc3, 0x30, 0x0d, 0xc4, 0x9e,
+ 0x36, 0xc7, 0xb4, 0x05, 0xd3, 0x9a, 0x26, 0xd5, 0xe2, 0x7e, 0x99, 0x8e,
+ 0xd7, 0x37, 0x90, 0x46, 0xb0, 0xdc, 0xa4, 0x47, 0x35, 0x4e, 0x6c, 0x1a,
+ 0x96, 0xd1, 0x3a, 0x2b, 0xe8, 0x45, 0x52, 0x2d, 0x8b, 0x8c, 0x1d, 0xe6,
+ 0x38, 0xf7, 0xa6, 0x91, 0x05, 0xd2, 0x99, 0x45, 0x9d, 0xeb, 0x1c, 0x10,
+ 0xcc, 0x1c, 0x4e, 0x61, 0xe2, 0x01, 0xc1, 0xdc, 0xbd, 0x30, 0x79, 0x1f,
+ 0x74, 0xf0, 0xb4, 0x16, 0x4f, 0x7e, 0xb9, 0x3b, 0x11, 0x1d, 0x5d, 0x5e,
+ 0xbe, 0x39, 0xba, 0x3e, 0x32, 0x6b, 0x23, 0x01, 0x4d, 0xcc, 0x85, 0x34,
+ 0x64, 0xe0, 0x43, 0xa8, 0x35, 0xe1, 0x93, 0x6b, 0x7f, 0xfa, 0x30, 0x38,
+ 0xb9, 0x6a, 0x1e, 0xec, 0xe5, 0xd5, 0x05, 0x02, 0x12, 0xfd, 0xe9, 0xa7,
+ 0xa3, 0xc5, 0x62, 0xa6, 0x41, 0xc1, 0x37, 0x71, 0x15, 0xaf, 0x79, 0xb7,
+ 0x7a, 0x67, 0x03, 0xe7, 0x77, 0x6f, 0xe6, 0x37, 0x11, 0x21, 0x47, 0xa6,
+ 0x7e, 0xd4, 0xc7, 0x03, 0x2d, 0x46, 0x9a, 0x7e, 0x6b, 0x76, 0x83, 0x36,
+ 0x80, 0xb2, 0x67, 0xdb, 0x17, 0x92, 0x5b, 0x4e, 0xa6, 0x89, 0x64, 0xba,
+ 0x59, 0x33, 0x30, 0xb2, 0x93, 0xd1, 0xb2, 0x52, 0x92, 0x27, 0xfa, 0xc2,
+ 0x2a, 0xee, 0xe6, 0xbe, 0x78, 0xc7, 0x63, 0xc3, 0x28, 0xcc, 0x05, 0x08,
+ 0x44, 0x00, 0x08, 0x8d, 0x52, 0xa4, 0x75, 0xb6, 0xcc, 0xc5, 0x02, 0x34,
+ 0x35, 0x4e, 0x38, 0xac, 0x42, 0xa0, 0x02, 0x3c, 0x25, 0x6f, 0x43, 0xfe,
+ 0x08, 0xb7, 0xb1, 0x17, 0x9d, 0x48, 0xb5, 0x1b, 0x2d, 0x1c, 0x7e, 0xe0,
+ 0x3d, 0x54, 0x19, 0xf3, 0x41, 0xd8, 0x7d, 0x98, 0x57, 0x38, 0x40, 0x1b,
+ 0x9d, 0xa6, 0x08, 0xe0, 0xd2, 0x56, 0x78, 0x08, 0xa7, 0x8d, 0x9b, 0x4e,
+ 0xd6, 0x53, 0x27, 0x90, 0xf4, 0xd4, 0x8b, 0xa7, 0x48, 0x5e, 0xf0, 0x28,
+ 0x68, 0xd7, 0x60, 0x34, 0xe1, 0xbf, 0x36, 0xb7, 0xfb, 0x5b, 0x1d, 0x7f,
+ 0xf2, 0x78, 0x59, 0x08, 0x24, 0xc5, 0x44, 0xd5, 0x90, 0x1b, 0x56, 0x79,
+ 0xfe, 0xe4, 0xfc, 0x98, 0x85, 0x81, 0x7e, 0xba, 0x80, 0xf1, 0x83, 0x53,
+ 0xe9, 0x5d, 0x78, 0x59, 0x20, 0x98, 0xb9, 0x5b, 0x28, 0x53, 0x04, 0x9e,
+ 0x98, 0xe5, 0xf7, 0xb8, 0x12, 0x20, 0xb5, 0xd9, 0xac, 0x86, 0x66, 0xd3,
+ 0x09, 0x6f, 0x73, 0x46, 0xc0, 0x51, 0x49, 0x73, 0xb7, 0x83, 0x91, 0x6b,
+ 0x55, 0x3e, 0x5d, 0x0d, 0xcf, 0xa4, 0xbc, 0x92, 0x15, 0x69, 0x28, 0xc1,
+ 0x05, 0x13, 0x00, 0x2e, 0xe7, 0xf1, 0xbd, 0x99, 0x9b, 0x99, 0xd1, 0xd3,
+ 0xf4, 0x90, 0x1e, 0x0e, 0x82, 0x5a, 0xe9, 0x21, 0xd7, 0xaa, 0x7b, 0xb6,
+ 0xfc, 0xfb, 0xf8, 0x21, 0x9d, 0x2f, 0xe7, 0xf4, 0x31, 0xa4, 0x6d, 0x79,
+ 0x4c, 0xe2, 0x09, 0xe4, 0x55, 0xe4, 0xf4, 0x14, 0x22, 0xf2, 0xb5, 0x32,
+ 0x72, 0x2c, 0xfa, 0x90, 0x90, 0x01, 0x91, 0xdc, 0xb7, 0xcb, 0x23, 0x65,
+ 0x81, 0x02, 0x0e, 0x65, 0xc3, 0x1b, 0x00, 0xfa, 0x41, 0x8c, 0x39, 0x07,
+ 0x65, 0x6e, 0x12, 0x76, 0x02, 0xec, 0x9c, 0xc1, 0x12, 0x44, 0x87, 0x73,
+ 0xf2, 0x55, 0x93, 0x22, 0xcd, 0xc7, 0xe6, 0xde, 0xa0, 0xfe, 0x98, 0x66,
+ 0x4b, 0xd8, 0x67, 0xf6, 0x25, 0x73, 0x10, 0x02, 0x7f, 0xe5, 0x79, 0x08,
+ 0x29, 0xab, 0x7e, 0x40, 0xc5, 0x12, 0x9a, 0x82, 0xfa, 0xb2, 0xbf, 0xbb,
+ 0xd3, 0xdf, 0xea, 0xd6, 0x0c, 0x7a, 0xc1, 0x94, 0x80, 0xdb, 0x35, 0x4a,
+ 0xe7, 0xa6, 0xde, 0xb4, 0xff, 0xbb, 0x39, 0x6e, 0x28, 0x23, 0x7c, 0x1e,
+ 0x3f, 0xd0, 0xf1, 0x05, 0x8f, 0x35, 0x8f, 0x0e, 0xdf, 0x5d, 0x0c, 0xae,
+ 0xb7, 0x0f, 0x2e, 0x2f, 0xae, 0xe0, 0xbf, 0xf8, 0xf7, 0x1d, 0xfa, 0xfb,
+ 0x8e, 0x67, 0x55, 0xbe, 0x95, 0x0c, 0x5a, 0x2d, 0xd6, 0x21, 0x0d, 0x85,
+ 0x34, 0x1a, 0xde, 0xcd, 0xc8, 0x19, 0x08, 0xf5, 0x72, 0x62, 0x83, 0x23,
+ 0x53, 0xd1, 0xd8, 0x3c, 0x62, 0xe7, 0x53, 0x9a, 0x64, 0xd7, 0x8f, 0xfc,
+ 0x44, 0xbe, 0xb4, 0x52, 0x6d, 0x4a, 0x6a, 0xe1, 0xb5, 0xca, 0xbe, 0xe9,
+ 0xeb, 0xe6, 0x3a, 0x66, 0xa9, 0xcf, 0x51, 0xbc, 0x3a, 0xca, 0x0d, 0xab,
+ 0xff, 0x6a, 0x34, 0x03, 0xed, 0x3e, 0xc1, 0x5c, 0x92, 0x71, 0xc2, 0x01,
+ 0x16, 0xfc, 0x49, 0xc8, 0x30, 0x81, 0xeb, 0x27, 0x25, 0x0b, 0x5e, 0x82,
+ 0x21, 0x51, 0xa4, 0x46, 0x75, 0x60, 0x36, 0x30, 0xc7, 0x14, 0x34, 0x71,
+ 0xde, 0x8e, 0x2c, 0xf1, 0x2a, 0x04, 0x18, 0x47, 0xce, 0x75, 0x62, 0x51,
+ 0x91, 0x3e, 0x95, 0xdb, 0x9f, 0x5f, 0x5c, 0x47, 0xf1, 0x64, 0xa2, 0xd8,
+ 0x00, 0x58, 0x96, 0x80, 0x1a, 0xeb, 0xe6, 0x82, 0x25, 0x59, 0x5c, 0x85,
+ 0x52, 0x37, 0x44, 0x1f, 0xb9, 0x3e, 0x1b, 0x6c, 0xa2, 0x0b, 0x8b, 0x93,
+ 0xe0, 0x06, 0xe7, 0xa7, 0xdd, 0x9a, 0xaf, 0xda, 0x4d, 0x7d, 0xd9, 0x40,
+ 0x49, 0x19, 0x56, 0x28, 0x62, 0x47, 0x16, 0x5a, 0xc4, 0x19, 0x4c, 0xaa,
+ 0xa3, 0x23, 0xed, 0x48, 0x35, 0x58, 0x87, 0x8e, 0xb6, 0x13, 0x69, 0xd4,
+ 0x94, 0xec, 0xe2, 0xf9, 0xa2, 0x7a, 0xf4, 0xeb, 0x45, 0xc9, 0xb7, 0x81,
+ 0x38, 0x2c, 0xa8, 0x74, 0x74, 0xd0, 0x2c, 0xc1, 0x65, 0xd1, 0x92, 0x3a,
+ 0x7d, 0x1e, 0x76, 0xa7, 0x43, 0xa3, 0xd2, 0xa0, 0xf0, 0x77, 0x1c, 0x93,
+ 0x88, 0x76, 0x98, 0x84, 0xd2, 0xfb, 0xf9, 0x43, 0xce, 0xe0, 0x91, 0x19,
+ 0x1e, 0x26, 0x66, 0xea, 0xd4, 0x94, 0x3a, 0x90, 0xc1, 0xe4, 0x45, 0x3a,
+ 0xc5, 0x3c, 0x81, 0x66, 0xe9, 0x98, 0x9d, 0x88, 0xe7, 0x99, 0x42, 0x65,
+ 0xac, 0xac, 0x3a, 0x8e, 0x2b, 0xa1, 0xf2, 0x12, 0xf4, 0x29, 0x6d, 0xb4,
+ 0x50, 0x93, 0x46, 0xa7, 0x83, 0xfc, 0xa7, 0x0a, 0xe8, 0xf1, 0xac, 0xec,
+ 0xc1, 0xea, 0x50, 0xee, 0xd8, 0x20, 0x90, 0x96, 0xfe, 0xe8, 0x5d, 0x22,
+ 0x24, 0x9c, 0xd3, 0x4a, 0x19, 0x38, 0x87, 0x8d, 0x9a, 0xc3, 0x31, 0x62,
+ 0x1b, 0x70, 0x04, 0xad, 0xfa, 0xe8, 0x6c, 0xef, 0xbc, 0xec, 0x6f, 0xc1,
+ 0xff, 0xc1, 0xa1, 0x88, 0x7e, 0x44, 0x70, 0x51, 0x16, 0x16, 0xc8, 0x3c,
+ 0x99, 0x3c, 0x34, 0x49, 0x92, 0x05, 0x50, 0x5e, 0x4c, 0x3b, 0x2b, 0x6b,
+ 0x58, 0x6b, 0x22, 0x05, 0x0f, 0xd2, 0x88, 0x93, 0x78, 0x2c, 0x3f, 0xd1,
+ 0x3b, 0x5e, 0x2c, 0x67, 0x81, 0xb4, 0x3e, 0xc7, 0x8d, 0x8c, 0xda, 0xd9,
+ 0xec, 0x4e, 0x9c, 0xc8, 0xef, 0x90, 0x37, 0x71, 0x1d, 0x5f, 0xbf, 0x96,
+ 0x14, 0xf5, 0xaa, 0xe6, 0x13, 0x3c, 0x16, 0x93, 0x8d, 0x38, 0x73, 0x0f,
+ 0x2e, 0xc3, 0x61, 0x3e, 0x99, 0x94, 0x49, 0xd5, 0x14, 0x40, 0xc7, 0xf2,
+ 0xc8, 0xe6, 0x15, 0x01, 0x1c, 0x12, 0xa7, 0xd2, 0x8a, 0x9b, 0xa8, 0x0e,
+ 0xcb, 0x13, 0x49, 0x16, 0x1a, 0xb3, 0x2d, 0x1e, 0xae, 0x1f, 0x28, 0x32,
+ 0x70, 0x7f, 0xaf, 0x19, 0x22, 0x5c, 0x15, 0xaf, 0x60, 0x2f, 0x54, 0x6e,
+ 0xc5, 0x38, 0x2e, 0x22, 0xe9, 0x9a, 0xa8, 0x6c, 0x7a, 0x25, 0x6e, 0xd3,
+ 0xc5, 0x02, 0xcd, 0x1b, 0x46, 0x38, 0x23, 0xb2, 0x35, 0x01, 0x34, 0x8a,
+ 0xe3, 0x12, 0x29, 0x6b, 0xb6, 0x20, 0x28, 0xc9, 0x23, 0x91, 0xf9, 0xc3,
+ 0x64, 0xe2, 0x07, 0x81, 0x38, 0xa9, 0xd1, 0x85, 0xb5, 0x91, 0x1a, 0xdd,
+ 0x31, 0x42, 0xd8, 0x64, 0xb1, 0xb2, 0x98, 0x89, 0x03, 0xf8, 0x20, 0xc5,
+ 0x7f, 0xdd, 0xc0, 0xfd, 0xb7, 0xc5, 0x59, 0xc6, 0x0f, 0x37, 0x38, 0xfd,
+ 0x9f, 0x27, 0x16, 0x84, 0xc8, 0xa0, 0xfc, 0x70, 0xb9, 0x4b, 0xa8, 0x78,
+ 0x08, 0x6e, 0x61, 0xef, 0x18, 0xce, 0xab, 0x43, 0x53, 0xb1, 0xa9, 0x26,
+ 0x79, 0xa3, 0x1c, 0x83, 0xec, 0x1e, 0xd4, 0x24, 0x48, 0x1b, 0xda, 0xc4,
+ 0xba, 0x7f, 0x4f, 0x34, 0x30, 0x46, 0x25, 0xfb, 0x17, 0x65, 0x8d, 0x74,
+ 0x3b, 0x2a, 0xa9, 0x9a, 0x73, 0x6b, 0x4e, 0x44, 0x59, 0xdc, 0x4c, 0x33,
+ 0x54, 0x19, 0x59, 0x81, 0xf1, 0x4a, 0x32, 0xb4, 0x0e, 0x96, 0xd1, 0x4e,
+ 0x96, 0xd5, 0xef, 0x18, 0x3b, 0x29, 0x90, 0x7e, 0x09, 0xc6, 0xce, 0x21,
+ 0xea, 0x11, 0x13, 0x35, 0x62, 0x75, 0xf6, 0xfe, 0x0a, 0x56, 0xf6, 0xa1,
+ 0xba, 0x29, 0xda, 0x80, 0x01, 0xd4, 0xa9, 0x81, 0x45, 0x14, 0x64, 0x84,
+ 0x11, 0x6d, 0x18, 0x7c, 0x1a, 0xdd, 0x6a, 0x86, 0xd5, 0x89, 0x49, 0x97,
+ 0x21, 0x20, 0xd0, 0xe6, 0x9d, 0x9f, 0x10, 0xe8, 0x8d, 0x53, 0xfe, 0x6d,
+ 0x6a, 0x27, 0xfb, 0x18, 0xa5, 0x9a, 0xf1, 0x08, 0x25, 0x27, 0x56, 0xca,
+ 0x18, 0x6a, 0x34, 0xa4, 0x9e, 0xcc, 0x4d, 0xb3, 0x1e, 0x17, 0x57, 0xeb,
+ 0xb3, 0x14, 0x4c, 0x43, 0xd4, 0x36, 0x21, 0x47, 0x3e, 0x22, 0x36, 0xc3,
+ 0x2b, 0x49, 0xac, 0x20, 0xb5, 0x96, 0x3e, 0x1b, 0x72, 0xa3, 0xb3, 0x2f,
+ 0x92, 0x1c, 0x88, 0xfc, 0x71, 0x74, 0x90, 0xdd, 0x82, 0xee, 0x9c, 0x75,
+ 0xf1, 0xa7, 0x54, 0x88, 0x6a, 0x2e, 0x19, 0xfb, 0x36, 0xaa, 0x84, 0x83,
+ 0x16, 0x49, 0x40, 0x97, 0x75, 0x9e, 0x95, 0x47, 0x1d, 0x37, 0xca, 0x79,
+ 0x52, 0x49, 0xea, 0x08, 0x4f, 0x5e, 0x6b, 0xb3, 0xa8, 0xbe, 0xeb, 0x74,
+ 0xd2, 0x18, 0x8e, 0xe0, 0xe2, 0x92, 0xaa, 0x5e, 0xad, 0x2f, 0x31, 0x5c,
+ 0xc6, 0xc8, 0x42, 0x5f, 0x68, 0x17, 0xae, 0x41, 0x47, 0xfd, 0xb2, 0xbc,
+ 0x82, 0x70, 0xea, 0x82, 0x4e, 0x07, 0xdd, 0x44, 0xd5, 0x38, 0x44, 0x93,
+ 0xac, 0xfb, 0xea, 0x85, 0x14, 0xe8, 0x40, 0x37, 0x1d, 0x02, 0x41, 0xd0,
+ 0x28, 0x7a, 0x6f, 0xbf, 0xa6, 0x89, 0x2b, 0x81, 0xaa, 0x42, 0xa7, 0xaa,
+ 0x14, 0x53, 0x68, 0x8a, 0xb1, 0x7a, 0x46, 0x74, 0xa2, 0xc0, 0x85, 0xc5,
+ 0x2e, 0xba, 0x8f, 0x89, 0xd2, 0xcc, 0xf8, 0xa1, 0xda, 0x07, 0x27, 0xff,
+ 0xb1, 0x37, 0xb4, 0xe4, 0x6c, 0xe1, 0x73, 0x82, 0x69, 0x4a, 0xf2, 0x10,
+ 0xd2, 0x3c, 0x08, 0x96, 0xb5, 0xca, 0x29, 0x2e, 0x25, 0x44, 0x1a, 0xb3,
+ 0x29, 0xbc, 0x85, 0xf7, 0x37, 0xf9, 0x2c, 0x09, 0x85, 0x48, 0x9c, 0x92,
+ 0x5f, 0x02, 0x77, 0xc1, 0xb4, 0x5e, 0xf2, 0x36, 0xdf, 0x51, 0xc6, 0x70,
+ 0x2d, 0x74, 0x02, 0xfa, 0x5d, 0x12, 0x63, 0xc1, 0x91, 0x49, 0x9a, 0xbf,
+ 0xeb, 0x7a, 0x69, 0xec, 0x70, 0xcf, 0x87, 0x79, 0x69, 0xe8, 0x05, 0x0b,
+ 0x6b, 0x51, 0x82, 0xdc, 0xc7, 0x05, 0x31, 0x66, 0x41, 0xc9, 0x52, 0x00,
+ 0x51, 0x37, 0x67, 0x10, 0x55, 0xc1, 0x66, 0xbd, 0x43, 0x8a, 0xc5, 0xe8,
+ 0x40, 0x26, 0xa0, 0x00, 0xa0, 0x9b, 0x96, 0x68, 0x07, 0x87, 0x14, 0xfc,
+ 0xab, 0x1b, 0x82, 0xc2, 0x95, 0x8a, 0x75, 0xb8, 0x87, 0x37, 0x28, 0xd3,
+ 0xd3, 0x6a, 0x19, 0x57, 0xcf, 0x4b, 0xd8, 0x6e, 0xe3, 0x4d, 0xcc, 0x9c,
+ 0xdc, 0x7c, 0xd4, 0x36, 0xcc, 0x86, 0x96, 0x28, 0xa2, 0x7b, 0x90, 0x87,
+ 0x78, 0xd7, 0xfe, 0xeb, 0x09, 0xc6, 0x74, 0x49, 0x88, 0x7e, 0x37, 0x75,
+ 0x48, 0x28, 0xaa, 0xc9, 0x15, 0x79, 0xa2, 0x95, 0x6f, 0x3c, 0xa6, 0x8a,
+ 0xfb, 0xd3, 0x40, 0xa0, 0x9f, 0xa2, 0x63, 0x30, 0x9d, 0xd9, 0xa3, 0x1d,
+ 0xd0, 0x29, 0x99, 0xd5, 0x0c, 0x6f, 0x07, 0x2e, 0xcf, 0x7c, 0xc1, 0xcb,
+ 0x5a, 0xea, 0x0c, 0x40, 0x05, 0xe7, 0x6f, 0x1e, 0x74, 0x14, 0x7d, 0xd4,
+ 0xc0, 0x29, 0x09, 0x17, 0x91, 0xa2, 0x2d, 0xad, 0xff, 0x50, 0x5f, 0x3d,
+ 0x5e, 0xff, 0xe6, 0x70, 0x08, 0xc5, 0xbd, 0xfd, 0xfa, 0xbb, 0xa3, 0xb3,
+ 0x0f, 0x27, 0xdb, 0x5f, 0x44, 0xf8, 0xaf, 0x1d, 0xfe, 0xd7, 0x4e, 0x27,
+ 0x74, 0x5c, 0xc0, 0xa8, 0xd6, 0x5e, 0xaf, 0x45, 0xe5, 0xe3, 0x7c, 0x98,
+ 0xcf, 0xcc, 0x81, 0xc9, 0x56, 0x68, 0x20, 0xad, 0x2b, 0x52, 0xdc, 0x94,
+ 0x6e, 0x8b, 0xab, 0xbc, 0xc9, 0xb2, 0x4b, 0x49, 0x3a, 0x54, 0x76, 0x43,
+ 0x11, 0x3c, 0xb7, 0x96, 0xb8, 0xa2, 0x4a, 0x6b, 0xe5, 0x61, 0x12, 0xcb,
+ 0x6b, 0x4b, 0x04, 0x25, 0xa1, 0xa4, 0x17, 0xbb, 0x0c, 0x70, 0x0e, 0x16,
+ 0x2f, 0x16, 0xd2, 0xd9, 0x65, 0x18, 0x7e, 0xb6, 0x19, 0x70, 0x27, 0xba,
+ 0x52, 0x06, 0x77, 0x9a, 0x5f, 0x17, 0x03, 0x01, 0xd1, 0x38, 0x1e, 0x05,
+ 0x7f, 0x60, 0xad, 0x48, 0x0c, 0xeb, 0xa5, 0x55, 0xe3, 0xbb, 0xcd, 0xe1,
+ 0x86, 0xa2, 0xbb, 0x38, 0xd0, 0x5c, 0x67, 0x88, 0x06, 0xd6, 0xd3, 0xf4,
+ 0x0c, 0xeb, 0xea, 0x40, 0x63, 0x74, 0x8c, 0x9a, 0xb5, 0xfa, 0x33, 0x22,
+ 0x07, 0xfc, 0xd9, 0xc0, 0x48, 0x0a, 0x0e, 0x63, 0x54, 0x0b, 0x09, 0xb2,
+ 0xaf, 0xd9, 0x87, 0x5e, 0x61, 0x20, 0x18, 0xd8, 0x1c, 0x4a, 0x37, 0x99,
+ 0x7b, 0xd9, 0x59, 0x19, 0x68, 0x92, 0xeb, 0xc0, 0xde, 0x37, 0x5c, 0x4c,
+ 0x10, 0x3d, 0x3e, 0x71, 0x4b, 0x54, 0x26, 0xa2, 0xda, 0x12, 0x2b, 0xb8,
+ 0xbe, 0xa9, 0x09, 0x1a, 0x55, 0xf9, 0xb4, 0xc0, 0x99, 0xe3, 0xb3, 0x22,
+ 0x39, 0x78, 0x18, 0x26, 0x53, 0xcc, 0xde, 0x9c, 0xc5, 0x1e, 0x12, 0x0d,
+ 0xdd, 0x35, 0x85, 0xc3, 0xc0, 0x40, 0xbf, 0x21, 0x7c, 0xf8, 0xfe, 0xe3,
+ 0x2c, 0xd9, 0x50, 0xc3, 0x40, 0x85, 0xdd, 0xe6, 0xfb, 0xfc, 0xef, 0x30,
+ 0xef, 0x58, 0x3e, 0x12, 0x92, 0x99, 0x22, 0x02, 0x5b, 0x67, 0x6e, 0xf9,
+ 0x0b, 0x97, 0x89, 0xbb, 0x5c, 0xa3, 0x66, 0x1b, 0x53, 0x10, 0x18, 0xf5,
+ 0x32, 0x4a, 0xd5, 0xf6, 0x48, 0x47, 0xb4, 0x0b, 0x4f, 0x42, 0x3b, 0x78,
+ 0x33, 0x40, 0xca, 0xb9, 0x64, 0xe8, 0x18, 0x12, 0x13, 0xb1, 0xd3, 0x64,
+ 0xe1, 0x4d, 0x9d, 0xaa, 0x45, 0x10, 0x9d, 0x3c, 0x24, 0xc5, 0x08, 0xa1,
+ 0x26, 0x46, 0xa0, 0x97, 0x12, 0x3f, 0x9d, 0x88, 0x7b, 0x0a, 0x73, 0xa9,
+ 0x24, 0x2b, 0xbe, 0x8e, 0x0b, 0x43, 0xe2, 0x57, 0xe9, 0xac, 0x95, 0xc4,
+ 0x28, 0xf7, 0x61, 0x04, 0x84, 0xd1, 0x37, 0x10, 0x78, 0x2a, 0x20, 0xeb,
+ 0xec, 0x43, 0x8b, 0xcc, 0x28, 0x9c, 0xe0, 0x65, 0xec, 0xd1, 0x0e, 0xeb,
+ 0x8b, 0xce, 0x69, 0x0a, 0xb9, 0xd0, 0x5c, 0x18, 0xd0, 0xcc, 0x46, 0x87,
+ 0x10, 0x2a, 0x80, 0x70, 0xa1, 0xda, 0xd3, 0x13, 0xcd, 0xe9, 0x10, 0x7e,
+ 0x07, 0x45, 0x4b, 0xb2, 0x47, 0x45, 0x93, 0x5a, 0x27, 0xb1, 0xc9, 0xca,
+ 0xa1, 0x62, 0x0e, 0x92, 0xe6, 0xe5, 0x17, 0x23, 0xcf, 0xf2, 0x7b, 0x8c,
+ 0xc1, 0xd4, 0x11, 0x40, 0x15, 0xec, 0x87, 0x73, 0xea, 0x98, 0x2f, 0xf7,
+ 0x50, 0x57, 0xe2, 0xcf, 0xf6, 0x35, 0x5a, 0x1b, 0xa4, 0x00, 0x2d, 0xa7,
+ 0x6d, 0x56, 0x22, 0xc5, 0x36, 0x83, 0xa2, 0x62, 0x67, 0x32, 0xeb, 0x17,
+ 0x16, 0x80, 0x2b, 0x24, 0xd8, 0x68, 0xc5, 0xc3, 0xbc, 0xba, 0x71, 0xf2,
+ 0x50, 0x11, 0xd4, 0x0f, 0xfd, 0x3c, 0x93, 0x65, 0x45, 0x46, 0x80, 0x9a,
+ 0x81, 0x95, 0xa4, 0x1a, 0x8b, 0xb3, 0xc8, 0xcb, 0x7a, 0xb8, 0x45, 0xf0,
+ 0x37, 0x5c, 0xa2, 0x01, 0xb0, 0xc5, 0x04, 0xda, 0x8c, 0x32, 0xc5, 0x91,
+ 0x2e, 0xc1, 0x00, 0x26, 0x7c, 0x41, 0xf8, 0x26, 0x26, 0x2a, 0x95, 0x25,
+ 0x62, 0xc9, 0x51, 0x4a, 0x2a, 0x6c, 0xac, 0x07, 0x39, 0x41, 0x20, 0x49,
+ 0x99, 0x7b, 0xa4, 0xeb, 0x0c, 0x7f, 0x63, 0x81, 0x9b, 0x18, 0x17, 0x03,
+ 0xad, 0xf6, 0xa1, 0x1c, 0x4d, 0x49, 0xf7, 0x17, 0xe9, 0x21, 0xe0, 0x14,
+ 0x31, 0xfa, 0x6b, 0xcb, 0x85, 0xfd, 0x97, 0x8d, 0x1a, 0xcf, 0xc8, 0x2b,
+ 0x4a, 0x06, 0xd0, 0x25, 0x08, 0x62, 0x93, 0x18, 0x4f, 0xdb, 0xed, 0x33,
+ 0xae, 0xd8, 0xc6, 0xdf, 0x42, 0x71, 0xde, 0xe5, 0x62, 0x4c, 0x6a, 0x9f,
+ 0xbe, 0x43, 0x8a, 0x92, 0x03, 0x84, 0x59, 0xe6, 0x72, 0x1b, 0x69, 0x78,
+ 0x64, 0x32, 0x96, 0xcb, 0x84, 0x40, 0x72, 0x9a, 0xf7, 0xdf, 0x0d, 0xb0,
+ 0xd4, 0x90, 0xda, 0xd8, 0x87, 0x33, 0x77, 0x79, 0x03, 0xbc, 0x48, 0xc2,
+ 0xb7, 0x07, 0xb4, 0x5f, 0x86, 0x02, 0x95, 0x2a, 0xc0, 0x81, 0xc3, 0xff,
+ 0x75, 0x99, 0x8d, 0x1a, 0x32, 0x2a, 0xef, 0x3a, 0x78, 0x9c, 0x12, 0x95,
+ 0x35, 0x12, 0xa2, 0x49, 0xf4, 0xf4, 0x21, 0x81, 0xbf, 0xc1, 0x8a, 0x50,
+ 0xac, 0xde, 0x40, 0xf1, 0x36, 0x73, 0x4a, 0x68, 0x6f, 0x52, 0x38, 0xa1,
+ 0x62, 0x74, 0x43, 0x48, 0x02, 0xe4, 0x47, 0x4a, 0xd4, 0x39, 0xea, 0x29,
+ 0xc2, 0xe2, 0xf9, 0xa7, 0x61, 0x45, 0x17, 0x4b, 0x91, 0x1d, 0x21, 0x5a,
+ 0x48, 0x9e, 0x29, 0x93, 0x6e, 0x9b, 0xa7, 0x9f, 0xd9, 0x75, 0x83, 0x7b,
+ 0x9e, 0xcc, 0x4a, 0x2b, 0x20, 0xcd, 0x3b, 0x56, 0x52, 0x92, 0x11, 0x9e,
+ 0x91, 0x4f, 0x96, 0x45, 0x71, 0x1a, 0xbc, 0xe1, 0x34, 0x13, 0x50, 0x73,
+ 0x64, 0x32, 0x68, 0x57, 0x22, 0x9d, 0x3c, 0x2a, 0xc6, 0x8c, 0x8c, 0xd0,
+ 0x84, 0x99, 0xf1, 0x24, 0x4f, 0x6e, 0xf6, 0x4d, 0x00, 0x6c, 0x74, 0xab,
+ 0x52, 0xc5, 0x5b, 0x67, 0x52, 0x41, 0x47, 0x06, 0x96, 0x4f, 0x53, 0x1f,
+ 0x10, 0x8c, 0x7f, 0xf5, 0x7a, 0x93, 0xca, 0x4b, 0xd7, 0x72, 0xce, 0xba,
+ 0x4e, 0x02, 0xb3, 0x89, 0x60, 0xf4, 0xbc, 0x57, 0x34, 0xbe, 0x3b, 0xac,
+ 0xe1, 0x89, 0xce, 0xde, 0xb2, 0x17, 0xef, 0xf8, 0x0a, 0xff, 0x96, 0x1a,
+ 0x84, 0x22, 0xaa, 0xc3, 0xa5, 0xc6, 0x1e, 0x9c, 0x20, 0xfb, 0xfe, 0xbb,
+ 0x66, 0x19, 0xe6, 0xfa, 0xc5, 0x60, 0x73, 0xf7, 0xd5, 0xd6, 0x46, 0x20,
+ 0x67, 0x19, 0xbe, 0xe1, 0xe2, 0x14, 0xee, 0x6d, 0xf5, 0xb7, 0x36, 0x1a,
+ 0xb3, 0xc1, 0xed, 0x5e, 0x01, 0xa0, 0xa2, 0xe8, 0xea, 0x46, 0x68, 0x50,
+ 0x32, 0xb2, 0x2d, 0xd6, 0x92, 0xbc, 0x69, 0xb7, 0x98, 0xf4, 0x2a, 0xb9,
+ 0x03, 0x52, 0x0b, 0xe6, 0xaf, 0x9d, 0xa5, 0xa5, 0x18, 0x36, 0x28, 0xc9,
+ 0x54, 0xb6, 0x60, 0xb5, 0x76, 0x3d, 0x27, 0x98, 0x1e, 0x41, 0x61, 0xc9,
+ 0xb9, 0x0e, 0x81, 0x68, 0x4b, 0x09, 0x93, 0x2a, 0x28, 0x31, 0x8f, 0x62,
+ 0xfa, 0x9f, 0xdc, 0xd9, 0x72, 0x54, 0x43, 0x7b, 0x7c, 0xe9, 0x9e, 0x29,
+ 0x6a, 0xfa, 0xbd, 0xb8, 0x1c, 0xa5, 0x29, 0xdb, 0x33, 0x2d, 0x66, 0x8c,
+ 0x66, 0x3c, 0x12, 0x86, 0x1c, 0x55, 0x52, 0xa7, 0x31, 0x87, 0x6a, 0x2d,
+ 0x50, 0xa9, 0x37, 0x2c, 0x2a, 0xab, 0x40, 0x62, 0xab, 0xc6, 0x15, 0x1b,
+ 0x1e, 0x9b, 0xb5, 0x08, 0xb6, 0xb2, 0xd1, 0x2f, 0xcb, 0xa6, 0x1a, 0x05,
+ 0x77, 0x81, 0xe1, 0xca, 0x16, 0x85, 0x5f, 0xdf, 0x87, 0xb9, 0x99, 0x94,
+ 0xf1, 0x1c, 0x57, 0x65, 0x8e, 0xfb, 0x14, 0xda, 0x54, 0xf2, 0x50, 0x10,
+ 0x3a, 0xad, 0x31, 0xa0, 0xcc, 0xdd, 0x97, 0x7c, 0xa0, 0xaf, 0xba, 0x36,
+ 0x5d, 0xa7, 0x66, 0x00, 0xc5, 0x01, 0x45, 0x90, 0xc1, 0xf5, 0x23, 0x0a,
+ 0x8f, 0x73, 0x25, 0x15, 0x2e, 0x44, 0x5a, 0x4c, 0x90, 0xdb, 0x83, 0x73,
+ 0x44, 0xa4, 0xc1, 0x04, 0xc2, 0x10, 0x99, 0xdd, 0x0a, 0x80, 0x4b, 0x75,
+ 0x61, 0x7d, 0x04, 0xdd, 0x49, 0x14, 0x94, 0x25, 0xf7, 0xc8, 0x8d, 0x4b,
+ 0x51, 0x25, 0x8a, 0x22, 0x45, 0xbf, 0x91, 0x49, 0x2e, 0x60, 0x75, 0x0c,
+ 0xb3, 0x30, 0x51, 0x38, 0x8f, 0x03, 0xb5, 0xdd, 0x23, 0xba, 0x9d, 0xa5,
+ 0xc9, 0xd9, 0xce, 0x08, 0x7e, 0x12, 0xf1, 0xe5, 0xbc, 0xbd, 0xa1, 0xfe,
+ 0x00, 0x34, 0x39, 0x05, 0x9d, 0xad, 0xea, 0xe9, 0x1f, 0xa8, 0xb5, 0x73,
+ 0x7e, 0x33, 0xc3, 0x9b, 0xe5, 0x35, 0x03, 0xb3, 0x6c, 0x0f, 0x97, 0x6c,
+ 0x3e, 0xf4, 0xee, 0xef, 0xef, 0x7b, 0x78, 0xe1, 0x30, 0x27, 0x47, 0xca,
+ 0x2c, 0xfa, 0x35, 0xf0, 0x68, 0xb2, 0x2b, 0xd9, 0xe4, 0x44, 0x26, 0xe2,
+ 0xc7, 0x37, 0x9c, 0x14, 0xa9, 0x62, 0x98, 0x56, 0x54, 0xcf, 0x27, 0xc4,
+ 0x45, 0xaf, 0x49, 0x5d, 0x9d, 0x4c, 0x87, 0x34, 0x1c, 0x75, 0x44, 0x05,
+ 0x6e, 0x9f, 0x5d, 0x0b, 0xc2, 0x4f, 0x8d, 0xaa, 0x04, 0xeb, 0xd7, 0xe1,
+ 0x13, 0xf3, 0x83, 0xa8, 0xf7, 0x2e, 0xea, 0x1c, 0xcb, 0x6a, 0xaf, 0xe1,
+ 0x89, 0x83, 0xfa, 0x5a, 0xf8, 0x61, 0x3f, 0x98, 0x03, 0xef, 0x76, 0x9e,
+ 0x07, 0x9f, 0xd8, 0x7a, 0x91, 0xa9, 0xbb, 0x8a, 0xcd, 0x9a, 0xa9, 0x02,
+ 0xce, 0x3a, 0x4c, 0x7b, 0x61, 0xb7, 0x16, 0x63, 0x9e, 0xd1, 0xd2, 0xe3,
+ 0x52, 0x3a, 0xf1, 0x0c, 0xf9, 0x86, 0xaf, 0xb8, 0x8e, 0x45, 0x7c, 0xff,
+ 0xf4, 0x1d, 0x77, 0x6e, 0xa2, 0x50, 0xef, 0x8c, 0x5c, 0x5d, 0x0e, 0x1e,
+ 0x31, 0xfa, 0x77, 0x4c, 0x12, 0x66, 0x60, 0xa6, 0xd2, 0x07, 0xc3, 0x16,
+ 0x53, 0xb1, 0x61, 0x2a, 0x7a, 0xe9, 0x57, 0x2b, 0xea, 0xd0, 0xac, 0x53,
+ 0xd8, 0xae, 0xa2, 0x16, 0xf9, 0x68, 0xc0, 0x9a, 0xd2, 0xb2, 0x0c, 0x55,
+ 0x3d, 0x83, 0xd1, 0xd8, 0xd5, 0x75, 0xcd, 0xe5, 0x14, 0x5a, 0x66, 0xc7,
+ 0x9e, 0xb3, 0x4c, 0x41, 0xc0, 0x0d, 0xa5, 0x77, 0x72, 0x9c, 0x03, 0xaf,
+ 0xaa, 0x02, 0x94, 0x89, 0xcb, 0x2a, 0x29, 0x90, 0xd0, 0x29, 0x0b, 0xbe,
+ 0xa7, 0x29, 0xcc, 0x21, 0x61, 0x0d, 0x0c, 0xe5, 0xf8, 0x9b, 0x53, 0xca,
+ 0xe6, 0x06, 0x46, 0x9a, 0x09, 0x88, 0x03, 0xcf, 0x9f, 0x5b, 0x1e, 0x19,
+ 0xa3, 0x76, 0x8a, 0xac, 0x84, 0x4b, 0x22, 0xe3, 0x28, 0x04, 0x80, 0xaa,
+ 0x36, 0x47, 0xa4, 0xc6, 0x85, 0x24, 0xad, 0x8a, 0x8d, 0x20, 0x97, 0xd7,
+ 0x84, 0x77, 0x63, 0x5b, 0x22, 0x10, 0xdc, 0x2f, 0xfa, 0xba, 0x82, 0x8d,
+ 0xc4, 0xa5, 0x44, 0x70, 0x49, 0x59, 0xf3, 0xd2, 0xc7, 0x2d, 0xbd, 0x72,
+ 0x0b, 0xa9, 0xc4, 0xcf, 0x7b, 0x93, 0xcf, 0x87, 0x3b, 0xbc, 0xd1, 0x99,
+ 0x34, 0x3c, 0x29, 0x66, 0xeb, 0x12, 0xd7, 0x63, 0xc0, 0xb5, 0x58, 0xe8,
+ 0x4b, 0x0b, 0x79, 0x6e, 0x4d, 0x62, 0x24, 0x30, 0xe3, 0xff, 0x40, 0x09,
+ 0x45, 0x72, 0x17, 0x78, 0x1e, 0x6a, 0x1e, 0x5a, 0x2f, 0xe9, 0x8e, 0xa6,
+ 0x50, 0x7e, 0x92, 0x10, 0x1b, 0x1e, 0x0e, 0xed, 0xbf, 0xd7, 0xa8, 0x2d,
+ 0x7d, 0x25, 0x8e, 0x2a, 0xcc, 0x83, 0x2f, 0x1d, 0x6b, 0x44, 0x8a, 0x65,
+ 0x69, 0xee, 0x5a, 0x23, 0x84, 0xdb, 0x10, 0x1e, 0x8e, 0x23, 0x9c, 0xce,
+ 0xee, 0x31, 0xc5, 0x21, 0xec, 0x7c, 0xc9, 0x6d, 0xc4, 0xfe, 0xd0, 0xdc,
+ 0xbc, 0xd7, 0x4f, 0xef, 0xde, 0x2f, 0xdd, 0xbe, 0xd5, 0xbb, 0xc7, 0xed,
+ 0x1b, 0x34, 0x59, 0xf6, 0xb5, 0xe3, 0xa0, 0xa3, 0x64, 0x0f, 0xb6, 0xbe,
+ 0x8c, 0xa3, 0xae, 0xce, 0x65, 0x1c, 0x23, 0xf3, 0xf5, 0x6f, 0x75, 0xea,
+ 0x44, 0x8c, 0x64, 0xd1, 0xe3, 0xe4, 0xc3, 0xc3, 0x71, 0x58, 0x91, 0xce,
+ 0xde, 0xc5, 0x5e, 0x14, 0x3d, 0x9c, 0x46, 0x10, 0xfc, 0xe2, 0x51, 0xc5,
+ 0xc4, 0x3c, 0xa4, 0x34, 0xcf, 0x5e, 0x78, 0x38, 0x2d, 0x04, 0x14, 0x45,
+ 0xdc, 0x5b, 0xdf, 0x57, 0x2a, 0xf8, 0x9f, 0xbf, 0x38, 0x4a, 0x2b, 0xb2,
+ 0x2d, 0x03, 0xdd, 0x8c, 0x10, 0x0e, 0xc1, 0xac, 0xfb, 0x7e, 0x43, 0xbd,
+ 0x3e, 0x02, 0x03, 0xc9, 0x2d, 0xa4, 0x54, 0x25, 0xd8, 0xe8, 0xd6, 0x37,
+ 0x0c, 0xa1, 0xee, 0x48, 0x18, 0xe8, 0x29, 0xa7, 0xad, 0x67, 0xac, 0x67,
+ 0x87, 0x6d, 0x19, 0x82, 0x67, 0xf7, 0x7f, 0xd3, 0xfa, 0x88, 0x9e, 0x2d,
+ 0x19, 0x60, 0x84, 0xa1, 0x64, 0x0c, 0x6f, 0x4a, 0xba, 0x8f, 0xa8, 0x5a,
+ 0x01, 0x45, 0x7c, 0xcb, 0xec, 0x08, 0x7d, 0x00, 0x95, 0x22, 0x8c, 0xb7,
+ 0xce, 0x04, 0x2e, 0x94, 0x61, 0xde, 0x5f, 0x5b, 0x65, 0xa6, 0x87, 0x8b,
+ 0xec, 0x09, 0xc9, 0xf6, 0x89, 0x08, 0x57, 0x50, 0xaa, 0xa1, 0xcc, 0x30,
+ 0x51, 0x7a, 0xe4, 0xd7, 0x2e, 0x1a, 0x15, 0x5f, 0x55, 0x64, 0x7b, 0x4d,
+ 0x52, 0x6e, 0x7f, 0x5e, 0x93, 0x94, 0xf6, 0x9d, 0x55, 0x32, 0x72, 0x90,
+ 0x70, 0x42, 0x9a, 0xeb, 0xc0, 0xa4, 0x97, 0xb8, 0xca, 0x1a, 0x1b, 0x79,
+ 0xf8, 0xa9, 0x4d, 0xf8, 0xaa, 0x57, 0x74, 0xcc, 0xb9, 0x45, 0x4e, 0xed,
+ 0x24, 0x25, 0x98, 0x63, 0xd4, 0x4c, 0xac, 0xa3, 0x68, 0x58, 0xe4, 0xf7,
+ 0x25, 0xa9, 0xa3, 0x6a, 0xa0, 0xc6, 0x9c, 0x02, 0x7b, 0xe3, 0x95, 0x44,
+ 0xc3, 0xf6, 0xce, 0x0c, 0x0e, 0xec, 0xbb, 0xeb, 0xf7, 0x67, 0xdc, 0xd8,
+ 0x81, 0xab, 0x73, 0xb1, 0x08, 0x49, 0xe6, 0xbc, 0x1c, 0xce, 0xc1, 0x92,
+ 0x06, 0xed, 0xa4, 0x62, 0x56, 0xa6, 0xdc, 0xd1, 0x2b, 0x21, 0xa6, 0x90,
+ 0x9e, 0x04, 0x84, 0x17, 0xa1, 0xf8, 0x8c, 0x28, 0x92, 0x0e, 0x0e, 0x95,
+ 0xa3, 0x01, 0xff, 0x72, 0x5d, 0x17, 0xec, 0x64, 0xca, 0x88, 0x21, 0x3d,
+ 0xea, 0x2d, 0x1e, 0x05, 0x3e, 0xe2, 0xdd, 0x3e, 0x47, 0x4d, 0xa3, 0xfe,
+ 0x63, 0x04, 0x29, 0x6d, 0x3c, 0x34, 0xa8, 0x75, 0x99, 0xe6, 0x23, 0x84,
+ 0x9a, 0x15, 0xd7, 0x35, 0x2d, 0xaf, 0xac, 0xd6, 0x68, 0x5e, 0xb6, 0x8d,
+ 0x88, 0xab, 0x7c, 0xa1, 0x1e, 0x82, 0xfa, 0x90, 0x04, 0x92, 0x96, 0x05,
+ 0x3a, 0xf3, 0x58, 0xab, 0xee, 0x06, 0x72, 0xee, 0x45, 0x21, 0x51, 0x6f,
+ 0xbe, 0x09, 0x6d, 0xd6, 0x4c, 0x3d, 0xed, 0x97, 0x80, 0x63, 0x3b, 0x37,
+ 0x38, 0xa0, 0x24, 0x32, 0x42, 0x15, 0x15, 0x53, 0xd0, 0x69, 0x02, 0xb1,
+ 0xc1, 0xe8, 0xd4, 0x0e, 0x2c, 0x26, 0xe7, 0xb8, 0xa7, 0xde, 0x05, 0x15,
+ 0x6c, 0xdb, 0x4c, 0xa4, 0xb4, 0xfd, 0x23, 0xd4, 0x5e, 0x26, 0xa0, 0x2e,
+ 0x82, 0xe6, 0xa2, 0x06, 0x12, 0x79, 0xdd, 0xdf, 0xe5, 0xfb, 0x1f, 0xc5,
+ 0xff, 0xd5, 0x75, 0xc2, 0x6b, 0x29, 0x7a, 0xa0, 0xdc, 0x78, 0xa1, 0x8d,
+ 0xac, 0xcf, 0x93, 0x62, 0xca, 0x65, 0x08, 0x0c, 0x09, 0x1b, 0x44, 0xb1,
+ 0x88, 0x23, 0x07, 0xa5, 0x2d, 0x8a, 0xfe, 0x47, 0x8f, 0x25, 0x2a, 0xb9,
+ 0xaa, 0x96, 0x58, 0xff, 0x22, 0xfe, 0xf4, 0xb5, 0xde, 0x98, 0xd9, 0xca,
+ 0x38, 0xce, 0x60, 0x27, 0xe0, 0xc6, 0xfa, 0xf9, 0x31, 0xb3, 0xd9, 0xeb,
+ 0x59, 0xbe, 0x2c, 0x1f, 0xd7, 0x22, 0xe9, 0xe5, 0x23, 0xed, 0x2f, 0x2a,
+ 0xc9, 0xe5, 0xc1, 0xb3, 0x84, 0xf3, 0x5d, 0x66, 0xb7, 0x2a, 0x14, 0xb1,
+ 0x52, 0xa1, 0x64, 0x47, 0x6d, 0x63, 0xb8, 0x35, 0xe7, 0x63, 0xff, 0xc3,
+ 0x1d, 0x3b, 0xb8, 0xcb, 0xe4, 0xfe, 0x67, 0xc3, 0xf9, 0x79, 0x96, 0xb3,
+ 0x0d, 0xc9, 0x84, 0xcc, 0xe6, 0xa8, 0x16, 0xa9, 0x33, 0x03, 0xa2, 0xf0,
+ 0x60, 0x18, 0x5e, 0x0d, 0x39, 0xd8, 0xd4, 0x0d, 0xe2, 0x37, 0x2d, 0xc5,
+ 0x27, 0x56, 0xf2, 0x70, 0x40, 0xc9, 0x22, 0xe7, 0x31, 0x84, 0x89, 0xe9,
+ 0x7d, 0xe3, 0x96, 0xc0, 0xf5, 0xa3, 0x4b, 0xd8, 0x2f, 0x0f, 0x6a, 0x02,
+ 0x23, 0xd9, 0x66, 0xb8, 0xb8, 0x06, 0x7a, 0x3a, 0xc9, 0xf3, 0x61, 0x5c,
+ 0xac, 0xc9, 0xde, 0x13, 0xaa, 0x3a, 0x0c, 0x38, 0x66, 0xe7, 0x0b, 0x9e,
+ 0x75, 0x6f, 0xdc, 0x0d, 0xde, 0x68, 0xd4, 0x19, 0xe8, 0xdd, 0xbe, 0x16,
+ 0x75, 0xe8, 0xcf, 0x31, 0x40, 0x9e, 0xcf, 0xc6, 0x66, 0x2b, 0xdc, 0xaf,
+ 0x06, 0x0e, 0x8d, 0x6a, 0x13, 0xac, 0x2b, 0x40, 0x3d, 0x01, 0x54, 0xde,
+ 0xa2, 0xce, 0x02, 0xe3, 0xd4, 0x47, 0x14, 0x77, 0x84, 0x0d, 0xc1, 0xc4,
+ 0x89, 0x30, 0x6c, 0x8b, 0x04, 0x49, 0x8c, 0x09, 0xee, 0x30, 0x07, 0x9c,
+ 0x51, 0x88, 0xc7, 0x58, 0x9e, 0xe2, 0x3b, 0xdc, 0x5d, 0xf6, 0x25, 0xd9,
+ 0xaa, 0x2b, 0x32, 0xdd, 0x5c, 0xae, 0xe1, 0xc8, 0x31, 0x6b, 0xcc, 0x35,
+ 0x85, 0xdb, 0x0a, 0xd7, 0xae, 0xc5, 0xc5, 0x25, 0xf6, 0x2a, 0xfc, 0x95,
+ 0x9d, 0x20, 0xbd, 0x53, 0xcd, 0xa2, 0xe3, 0x7f, 0x5e, 0x13, 0x62, 0x33,
+ 0x39, 0x27, 0x7b, 0x01, 0xd2, 0xac, 0x59, 0x97, 0xc9, 0x2c, 0x99, 0xf2,
+ 0x6a, 0x0f, 0xcf, 0x4e, 0xbe, 0x3b, 0x39, 0xf3, 0xc4, 0xe6, 0x37, 0x83,
+ 0xc1, 0xe6, 0x6d, 0x52, 0x0c, 0xa9, 0x29, 0x2b, 0x06, 0x2e, 0x22, 0x7a,
+ 0xce, 0x24, 0x78, 0x39, 0xb2, 0xe4, 0xde, 0x42, 0xb6, 0x48, 0xa2, 0xb7,
+ 0xe7, 0xb3, 0xc1, 0x0c, 0x5e, 0xfe, 0xa4, 0xc0, 0xbc, 0x53, 0xc9, 0x91,
+ 0xe4, 0x12, 0x92, 0x6c, 0x1c, 0x15, 0xc9, 0x98, 0x7b, 0x96, 0xfa, 0x59,
+ 0x84, 0x84, 0xec, 0x81, 0x7d, 0x39, 0xf0, 0x50, 0x39, 0x93, 0x9c, 0x02,
+ 0x58, 0x66, 0x11, 0xde, 0x1b, 0x0b, 0xaa, 0x9e, 0x8f, 0xde, 0xc8, 0x37,
+ 0xa5, 0x1e, 0x15, 0x77, 0x89, 0x81, 0xdd, 0xd8, 0x4a, 0xb9, 0xf8, 0xb6,
+ 0x77, 0x34, 0xe8, 0xbd, 0x39, 0x39, 0x3b, 0xf9, 0xe6, 0xe8, 0xfa, 0xc4,
+ 0xe0, 0x99, 0x97, 0x49, 0x8b, 0x0a, 0x26, 0xfa, 0xd7, 0xb7, 0xb2, 0x2d,
+ 0xb4, 0x7e, 0xc4, 0xc2, 0xaf, 0x52, 0x6e, 0xc8, 0xa2, 0x90, 0xff, 0xdc,
+ 0x59, 0x1b, 0xad, 0xa2, 0x8a, 0xf3, 0x04, 0xc3, 0xc3, 0xc1, 0xbd, 0x98,
+ 0xcd, 0x65, 0xaa, 0xde, 0x0a, 0xe2, 0xd9, 0x3d, 0x36, 0x66, 0xfb, 0x90,
+ 0x61, 0x2a, 0x7d, 0x6a, 0x4a, 0x49, 0x79, 0xf5, 0xae, 0x47, 0xc8, 0xee,
+ 0x6c, 0xed, 0x80, 0x09, 0x99, 0xbe, 0xc5, 0x5f, 0xa0, 0x65, 0xe0, 0x14,
+ 0x3f, 0x7e, 0x43, 0x4f, 0x36, 0x30, 0xc6, 0x2d, 0x34, 0x3a, 0x32, 0x18,
+ 0xf9, 0x55, 0x00, 0xb0, 0x04, 0x09, 0xa8, 0x1c, 0xdd, 0x24, 0x73, 0x51,
+ 0x65, 0x31, 0x35, 0x81, 0x82, 0xe0, 0x5c, 0x53, 0x29, 0x78, 0x41, 0x9c,
+ 0x42, 0x36, 0x4c, 0x18, 0x72, 0x81, 0x30, 0xd2, 0x90, 0xae, 0x43, 0xa9,
+ 0xbe, 0xf7, 0xd8, 0x71, 0x00, 0x63, 0x2d, 0x98, 0xb6, 0x43, 0x05, 0xc6,
+ 0x7d, 0x4a, 0x30, 0x74, 0xf2, 0x06, 0xfc, 0x3c, 0x01, 0xee, 0x1e, 0xd8,
+ 0xbc, 0xb3, 0x06, 0xc0, 0xdc, 0xa0, 0xad, 0xe7, 0xe4, 0x3a, 0xa3, 0x1f,
+ 0x71, 0xf3, 0x12, 0xd1, 0xb9, 0x71, 0x92, 0xbf, 0xd2, 0x51, 0x2d, 0xe5,
+ 0x09, 0x52, 0x6e, 0x88, 0x6e, 0x2c, 0x32, 0x83, 0xc3, 0x59, 0xdb, 0x41,
+ 0xa6, 0x21, 0xdd, 0x58, 0x9d, 0xe9, 0x32, 0x7b, 0x60, 0x68, 0xf5, 0xb1,
+ 0x9c, 0x0e, 0xfd, 0x48, 0x1a, 0x11, 0x98, 0x14, 0x8f, 0xa0, 0x2b, 0xdf,
+ 0x72, 0x8c, 0x7a, 0xaf, 0x02, 0xc4, 0x88, 0xd7, 0xbf, 0xfa, 0x1d, 0x25,
+ 0x4c, 0xa9, 0x5d, 0x2f, 0x59, 0x78, 0x80, 0xdd, 0xeb, 0x6f, 0x15, 0x7f,
+ 0xdf, 0xe8, 0x96, 0x6e, 0xaf, 0x35, 0xa7, 0x35, 0xd2, 0xc9, 0xe5, 0x15,
+ 0x77, 0x57, 0x3f, 0xc3, 0xbf, 0x48, 0xe4, 0xad, 0x0c, 0xe1, 0xdf, 0x49,
+ 0xf7, 0x0f, 0x4c, 0x46, 0x49, 0x28, 0x74, 0x63, 0x82, 0xe9, 0x9a, 0x8c,
+ 0xc8, 0xf9, 0xa7, 0x02, 0xb4, 0x2e, 0xd7, 0x81, 0xb6, 0xd8, 0x4b, 0xfe,
+ 0x37, 0x0d, 0x3a, 0x71, 0x26, 0x38, 0x05, 0x41, 0x28, 0xa2, 0x49, 0x70,
+ 0x0e, 0xad, 0x06, 0x48, 0x2e, 0xf0, 0x97, 0xa8, 0x6f, 0xb2, 0x5c, 0xab,
+ 0xda, 0x38, 0x2f, 0xb7, 0x40, 0x10, 0x95, 0x08, 0x87, 0xc5, 0x37, 0xa3,
+ 0x82, 0xda, 0xb9, 0xc6, 0x30, 0x95, 0x7e, 0x63, 0xa9, 0xd4, 0x90, 0x0b,
+ 0x61, 0x37, 0xfd, 0x78, 0x08, 0xb5, 0x22, 0x13, 0x47, 0x9c, 0x64, 0xa5,
+ 0xd3, 0x82, 0x35, 0xd7, 0xbe, 0x2b, 0x39, 0x06, 0x68, 0x41, 0x50, 0xdb,
+ 0x21, 0xae, 0x17, 0xa0, 0xe4, 0x03, 0x4f, 0xc3, 0x97, 0x9a, 0x04, 0xcd,
+ 0x44, 0x4b, 0x1e, 0x25, 0x6c, 0xce, 0x0a, 0xe1, 0x44, 0xc2, 0x93, 0x31,
+ 0x01, 0xca, 0x92, 0x69, 0x33, 0x64, 0x0d, 0x86, 0xb2, 0xfa, 0x6e, 0xe2,
+ 0x2c, 0x70, 0xe7, 0x60, 0xe3, 0x4d, 0x4f, 0x34, 0x5a, 0xa5, 0x1c, 0x5b,
+ 0x40, 0x89, 0x47, 0xda, 0x68, 0xc2, 0x5a, 0x81, 0xa1, 0x07, 0x0c, 0x2c,
+ 0xc5, 0xb8, 0x86, 0x4c, 0x85, 0x77, 0x86, 0x1a, 0x03, 0x09, 0xbd, 0xe5,
+ 0x21, 0xaa, 0x12, 0xe6, 0x62, 0xa3, 0x2d, 0x35, 0x12, 0x6c, 0x2f, 0xfa,
+ 0x36, 0x9e, 0x79, 0xaa, 0xb0, 0x71, 0x50, 0x75, 0xb1, 0xc7, 0x70, 0xbd,
+ 0x04, 0x87, 0x8e, 0x8f, 0x84, 0x7d, 0xd6, 0xcc, 0x40, 0x49, 0xb8, 0xe8,
+ 0x02, 0xbe, 0x4d, 0xd3, 0x45, 0x37, 0x90, 0x89, 0xc8, 0x22, 0xf1, 0x78,
+ 0xdf, 0x7f, 0x43, 0x93, 0xc3, 0xef, 0xd0, 0x0b, 0x74, 0xef, 0x11, 0x7a,
+ 0x68, 0xaa, 0x3d, 0x9e, 0x98, 0x94, 0x87, 0x09, 0x7c, 0x2f, 0xc5, 0x1e,
+ 0x78, 0x6e, 0x18, 0xc0, 0x4f, 0x73, 0x2e, 0x81, 0x00, 0xa9, 0x2a, 0x20,
+ 0x67, 0x07, 0x10, 0xbe, 0x8b, 0xb9, 0x14, 0x49, 0xe4, 0x36, 0x90, 0x24,
+ 0x82, 0x20, 0x8b, 0xe1, 0xb2, 0x2b, 0xf1, 0x4c, 0x4a, 0x6f, 0xcc, 0x0b,
+ 0xbf, 0x04, 0x76, 0x64, 0xb0, 0x96, 0xf4, 0xc9, 0xb8, 0xbc, 0x0b, 0xdf,
+ 0xf0, 0xf2, 0x2e, 0x78, 0xc3, 0x9f, 0x71, 0xcf, 0xad, 0xbd, 0x75, 0x72,
+ 0x39, 0xf8, 0x2e, 0x6a, 0x01, 0x8d, 0xe0, 0x4e, 0x2e, 0x7c, 0xc5, 0xed,
+ 0xea, 0x90, 0xe8, 0xdd, 0x6b, 0xde, 0x7e, 0xcf, 0x83, 0xf1, 0x01, 0xef,
+ 0x9e, 0xc3, 0xf7, 0xe5, 0x72, 0x5f, 0x1e, 0x0d, 0xbe, 0x73, 0xae, 0xb5,
+ 0x43, 0x02, 0xa1, 0x62, 0x4c, 0x93, 0xd9, 0x8e, 0x41, 0x62, 0x26, 0x1d,
+ 0x1c, 0x2c, 0x48, 0xef, 0xe5, 0xdd, 0x73, 0xe8, 0x1d, 0x66, 0xe2, 0xd1,
+ 0xbb, 0xb7, 0xc7, 0xab, 0xe8, 0xdd, 0x3d, 0xa8, 0x7a, 0xd2, 0xac, 0x43,
+ 0xed, 0x19, 0x77, 0xd1, 0xc6, 0x02, 0x8f, 0x36, 0x32, 0xc7, 0x40, 0xa2,
+ 0x90, 0xb6, 0x9f, 0x4a, 0x48, 0xf3, 0xfc, 0x65, 0x84, 0x0e, 0x2f, 0x78,
+ 0x84, 0xae, 0xe7, 0x19, 0xa6, 0xf4, 0x36, 0x42, 0xd7, 0x94, 0xe2, 0x84,
+ 0x89, 0xdc, 0xa5, 0x71, 0x9f, 0xbe, 0x1d, 0xaa, 0x75, 0xcb, 0xc0, 0xfd,
+ 0x1d, 0xd2, 0x4c, 0x33, 0x0b, 0x65, 0x60, 0x81, 0x1c, 0x02, 0xe0, 0x22,
+ 0x0a, 0xca, 0xc0, 0x05, 0xb1, 0xbe, 0x3b, 0xdf, 0x94, 0xe6, 0xd7, 0xaa,
+ 0x1f, 0x0a, 0xd5, 0xb0, 0xb9, 0xb1, 0x1a, 0x0a, 0x6d, 0x72, 0x0f, 0xb8,
+ 0x80, 0x02, 0x13, 0xef, 0x46, 0xd6, 0xd0, 0x83, 0x92, 0x60, 0x75, 0x7a,
+ 0x99, 0x60, 0x9e, 0x07, 0xc1, 0x90, 0x35, 0xef, 0x29, 0xaa, 0x79, 0xa4,
+ 0x0d, 0xa0, 0xa2, 0xd2, 0x4b, 0xb3, 0x9e, 0x9f, 0x06, 0xed, 0x86, 0xb6,
+ 0xaa, 0x1a, 0x36, 0x2d, 0x96, 0x28, 0x92, 0xc2, 0x2b, 0x41, 0x0e, 0x54,
+ 0x46, 0xc9, 0xd2, 0x94, 0x98, 0x00, 0x7b, 0x25, 0x03, 0x05, 0xb5, 0x41,
+ 0x84, 0xb5, 0x7a, 0xbb, 0x97, 0x2a, 0xaf, 0x39, 0xe3, 0x5e, 0x34, 0x50,
+ 0x8c, 0xc7, 0x59, 0xd9, 0xb3, 0x1d, 0xda, 0x0f, 0xcd, 0x5f, 0x3d, 0xfb,
+ 0xe2, 0xcd, 0xf9, 0x00, 0x23, 0x57, 0x09, 0xd5, 0x1a, 0xa8, 0x19, 0x5c,
+ 0x26, 0x5c, 0x1f, 0x32, 0x25, 0xce, 0x01, 0x8f, 0x98, 0x82, 0x3f, 0xd3,
+ 0x14, 0xf1, 0x30, 0xe8, 0x10, 0xa2, 0x4f, 0x78, 0x85, 0x7a, 0x31, 0x17,
+ 0xdc, 0x80, 0x6d, 0x47, 0x71, 0x71, 0x5c, 0x81, 0x9d, 0x9b, 0x56, 0xb4,
+ 0x93, 0xe7, 0x29, 0x80, 0x71, 0xa4, 0x65, 0x79, 0x38, 0x8d, 0x0d, 0x6d,
+ 0xcf, 0xbc, 0x60, 0x44, 0x76, 0xc1, 0x20, 0x33, 0x1d, 0xae, 0xb2, 0x46,
+ 0x57, 0xfa, 0xe6, 0x62, 0x05, 0x33, 0x49, 0x72, 0xc6, 0x36, 0x56, 0x1a,
+ 0x8f, 0xb8, 0x81, 0x8b, 0xbb, 0xbd, 0x1e, 0x3e, 0x2c, 0xe9, 0x87, 0xe6,
+ 0xa7, 0x2f, 0xe8, 0xa7, 0x7d, 0x6f, 0xa3, 0xbd, 0x12, 0x1a, 0xe9, 0xa0,
+ 0x6a, 0xd0, 0x71, 0x31, 0xbb, 0x31, 0x1b, 0x63, 0xe7, 0x0d, 0x3a, 0x7b,
+ 0x6d, 0xa4, 0x80, 0x68, 0x89, 0x8c, 0x79, 0x68, 0x9b, 0xb7, 0x45, 0x1e,
+ 0x4e, 0x0b, 0xe8, 0x36, 0x65, 0xed, 0xd0, 0x77, 0x77, 0x03, 0x87, 0x6e,
+ 0xe6, 0x7c, 0x28, 0xcb, 0x0c, 0x1f, 0x79, 0x4d, 0xba, 0x0c, 0x53, 0xee,
+ 0x6f, 0x75, 0x98, 0x2e, 0x7a, 0xfa, 0x16, 0x0b, 0x8f, 0x79, 0x7c, 0x2b,
+ 0x22, 0x7d, 0x4f, 0xe8, 0xa0, 0xe7, 0xc1, 0xac, 0x70, 0xbb, 0x65, 0xea,
+ 0x4a, 0x6d, 0xd7, 0x59, 0x23, 0x1a, 0xd1, 0xb7, 0x2a, 0x03, 0xda, 0x8a,
+ 0x44, 0xc1, 0xdf, 0x09, 0xd5, 0x7c, 0x69, 0x76, 0xb6, 0xeb, 0xe3, 0xd1,
+ 0xfa, 0x0e, 0x9a, 0x89, 0x79, 0xf7, 0x89, 0xf3, 0xb3, 0x44, 0xb6, 0xfa,
+ 0xfc, 0x74, 0xcf, 0xfe, 0xf7, 0x38, 0xbf, 0x17, 0x9f, 0xe4, 0xfc, 0x5e,
+ 0xfc, 0x6f, 0x73, 0x7e, 0x2f, 0xfe, 0xe5, 0xf3, 0xdb, 0xf3, 0xce, 0xef,
+ 0xc5, 0xff, 0x2e, 0xe7, 0xa7, 0xfd, 0xd5, 0xf4, 0xf4, 0x12, 0xef, 0xfc,
+ 0x06, 0x92, 0x36, 0xa2, 0xc0, 0x7c, 0xb8, 0xd3, 0xfa, 0x16, 0x07, 0x69,
+ 0x24, 0xd1, 0x91, 0xbd, 0xe0, 0x9a, 0x6b, 0xcb, 0xd0, 0x90, 0x2d, 0x0d,
+ 0x4b, 0xfa, 0x5a, 0x56, 0xa1, 0x83, 0x9e, 0x5e, 0x46, 0x66, 0x02, 0xce,
+ 0x31, 0x58, 0xa0, 0x2d, 0x52, 0xd0, 0x82, 0x2e, 0xea, 0x12, 0xfd, 0x96,
+ 0xb0, 0x7e, 0x2e, 0xaf, 0x2c, 0x6d, 0x51, 0x70, 0x08, 0x49, 0x0b, 0x36,
+ 0xee, 0xe0, 0x10, 0xb7, 0xab, 0xc7, 0x8f, 0x7f, 0x19, 0x2c, 0x76, 0xa3,
+ 0x8e, 0xcd, 0x76, 0x4a, 0xa1, 0xb0, 0x84, 0xb3, 0x75, 0xf6, 0xdc, 0x4c,
+ 0x34, 0xcb, 0x39, 0xb4, 0xd0, 0x99, 0x35, 0x55, 0x1d, 0x73, 0x82, 0x4f,
+ 0x1f, 0x59, 0x7e, 0x43, 0x38, 0x3e, 0x87, 0x1f, 0xae, 0x7c, 0xdf, 0x1b,
+ 0x2c, 0xd5, 0x87, 0x46, 0x84, 0xe3, 0xea, 0xa1, 0x6d, 0xdf, 0x23, 0x94,
+ 0x78, 0xb8, 0x8d, 0x17, 0xef, 0x36, 0x1c, 0x27, 0x10, 0x05, 0x2d, 0xf2,
+ 0x50, 0xbf, 0x3b, 0x2e, 0xbb, 0x35, 0xa5, 0xe5, 0x65, 0xb7, 0xd1, 0xe3,
+ 0xd2, 0xa4, 0xbd, 0x5b, 0x25, 0x85, 0xbc, 0x23, 0x52, 0xb0, 0x5b, 0x78,
+ 0xfd, 0x2d, 0x51, 0x19, 0x4c, 0x4b, 0x41, 0x8d, 0x43, 0x18, 0x0d, 0x95,
+ 0x83, 0x34, 0xb3, 0xdf, 0x33, 0xe3, 0xef, 0xc5, 0x4e, 0x6d, 0x57, 0xdf,
+ 0x90, 0xae, 0xb8, 0x9c, 0x2f, 0xa4, 0xb4, 0xf8, 0x89, 0xd2, 0xca, 0x88,
+ 0xbb, 0x31, 0x52, 0xd9, 0x24, 0xbb, 0xf7, 0xa5, 0xca, 0x48, 0x2d, 0x73,
+ 0x53, 0x5a, 0x21, 0xe6, 0x7b, 0x2b, 0x30, 0x5a, 0x10, 0x8b, 0xea, 0xba,
+ 0x99, 0x20, 0xc5, 0x15, 0x31, 0x8a, 0xaf, 0x8e, 0x5c, 0xd2, 0xd1, 0x9a,
+ 0xa5, 0xd0, 0x81, 0x40, 0x00, 0xf8, 0xab, 0x21, 0x70, 0x6e, 0x8a, 0x12,
+ 0x62, 0x81, 0x15, 0xce, 0x99, 0xd1, 0x05, 0xe1, 0x55, 0x18, 0xa6, 0x2f,
+ 0x55, 0x56, 0xa5, 0x13, 0xa7, 0x36, 0x85, 0x21, 0x04, 0xee, 0x14, 0xaa,
+ 0x0e, 0xa0, 0x60, 0x0f, 0xa9, 0xb7, 0x92, 0xd5, 0x27, 0xd0, 0x1d, 0x06,
+ 0x9b, 0x29, 0xbb, 0xd3, 0xda, 0x9b, 0x5a, 0x8b, 0x92, 0xde, 0xd0, 0x0f,
+ 0x07, 0xd4, 0x4a, 0x00, 0xff, 0x40, 0xb4, 0xd1, 0x52, 0x96, 0xc1, 0xaa,
+ 0x99, 0xe3, 0x98, 0x08, 0xdc, 0x24, 0xb7, 0xea, 0x23, 0xe8, 0x0a, 0x40,
+ 0x43, 0x47, 0x17, 0x28, 0xfd, 0x2a, 0xb8, 0x09, 0x48, 0xdd, 0x25, 0xd5,
+ 0x30, 0x92, 0x38, 0xfb, 0xd7, 0x4b, 0x28, 0x14, 0x80, 0x81, 0xe0, 0x31,
+ 0xd6, 0x52, 0xc0, 0x39, 0xb7, 0xf8, 0x26, 0x71, 0xab, 0xa6, 0x0d, 0x04,
+ 0x25, 0x47, 0x29, 0x38, 0x79, 0x11, 0x76, 0x51, 0x32, 0x61, 0xbd, 0x86,
+ 0x43, 0x84, 0x8a, 0x20, 0x53, 0xef, 0x08, 0x8a, 0xd3, 0x52, 0xa0, 0x67,
+ 0xb9, 0xe5, 0x32, 0x81, 0xde, 0xfc, 0x7e, 0x55, 0xca, 0x4e, 0x66, 0xb8,
+ 0xcb, 0xa2, 0x92, 0x29, 0x87, 0xff, 0x57, 0x65, 0x21, 0x37, 0x00, 0xd7,
+ 0xb8, 0x99, 0xb8, 0x81, 0x5c, 0x23, 0x8f, 0x60, 0x56, 0x15, 0xf9, 0xe2,
+ 0x31, 0xfa, 0x26, 0xc6, 0x65, 0x91, 0x5a, 0x1f, 0x27, 0x73, 0xaf, 0x34,
+ 0x8d, 0xdb, 0x8b, 0x8b, 0x9a, 0xcd, 0xad, 0xc6, 0x75, 0x85, 0x64, 0x17,
+ 0xf0, 0xb6, 0x00, 0xb1, 0xc2, 0x7e, 0xa1, 0x33, 0x59, 0xca, 0x46, 0x38,
+ 0xf5, 0x7a, 0x30, 0x38, 0xf3, 0x6d, 0x39, 0x6d, 0x6c, 0xb4, 0x12, 0x93,
+ 0x80, 0x46, 0xeb, 0x35, 0xa3, 0x23, 0x32, 0xf8, 0x61, 0x90, 0x73, 0xc8,
+ 0xba, 0x93, 0x99, 0x62, 0x76, 0x28, 0x8e, 0xfc, 0xa8, 0x78, 0x5c, 0xa0,
+ 0xf1, 0x25, 0x45, 0xb8, 0x7c, 0xcd, 0x71, 0x7e, 0x0c, 0x02, 0xbb, 0xb2,
+ 0xec, 0xf9, 0x43, 0xe9, 0x60, 0xa9, 0x93, 0x2c, 0xc5, 0xf8, 0x3d, 0x82,
+ 0x22, 0x23, 0xb8, 0x95, 0xc8, 0x56, 0x94, 0x3a, 0x63, 0x42, 0x73, 0x69,
+ 0xed, 0x71, 0x26, 0x9d, 0xcb, 0x1a, 0xdd, 0x31, 0xd8, 0x9c, 0x41, 0x4b,
+ 0x0b, 0x11, 0x11, 0x29, 0x9c, 0xb2, 0xa1, 0xf2, 0x5d, 0xde, 0x90, 0xaa,
+ 0xbd, 0xe6, 0xcd, 0x30, 0xcd, 0x13, 0x62, 0x44, 0x78, 0xc8, 0x3c, 0x28,
+ 0x19, 0xce, 0xf2, 0xd8, 0xde, 0xda, 0x7a, 0x12, 0x23, 0x48, 0xac, 0xd5,
+ 0x95, 0x50, 0x41, 0xc8, 0x0e, 0x39, 0xc0, 0x61, 0x6a, 0xda, 0xe3, 0x54,
+ 0x0a, 0x96, 0x9a, 0xa8, 0x6a, 0xf0, 0x49, 0x03, 0xd9, 0x63, 0xaf, 0x20,
+ 0xb3, 0x55, 0x86, 0xd2, 0x22, 0xc0, 0x20, 0xb8, 0xdb, 0x27, 0x34, 0xc7,
+ 0xf2, 0xa0, 0xf6, 0x4e, 0xb0, 0xa5, 0x34, 0x4e, 0x08, 0x5f, 0x12, 0xfd,
+ 0xb3, 0x1f, 0x7d, 0xfd, 0x68, 0xed, 0x76, 0x62, 0x88, 0xec, 0x0f, 0xa6,
+ 0x59, 0xb1, 0x9f, 0x9f, 0xe7, 0xdf, 0x5f, 0xc5, 0xfa, 0xc3, 0x38, 0x40,
+ 0x7f, 0x60, 0xc6, 0x42, 0xc3, 0x02, 0xb7, 0x5b, 0x94, 0x34, 0x2a, 0xc1,
+ 0x89, 0x84, 0x1d, 0x56, 0x66, 0xb5, 0xa0, 0x7f, 0x34, 0x9b, 0x2c, 0x39,
+ 0xfd, 0x92, 0x98, 0x0b, 0xae, 0xc4, 0x73, 0xae, 0xa3, 0x3a, 0xd5, 0xb3,
+ 0x50, 0x5f, 0xd6, 0xd5, 0x14, 0x2c, 0xad, 0xee, 0x51, 0x01, 0x75, 0x13,
+ 0x35, 0x02, 0x6b, 0xae, 0x91, 0x77, 0x91, 0xaf, 0x21, 0xcf, 0x1c, 0x0f,
+ 0x0c, 0xa2, 0x89, 0x71, 0xe6, 0x8f, 0xd6, 0x5a, 0x35, 0x40, 0x6c, 0x5d,
+ 0xc6, 0xaa, 0xc8, 0xfb, 0x7a, 0xd3, 0xc7, 0xb9, 0x83, 0x5d, 0x65, 0xca,
+ 0xeb, 0x1a, 0xae, 0x1c, 0xf6, 0xe5, 0xf8, 0xb0, 0x18, 0x9c, 0x41, 0x6c,
+ 0xdd, 0x84, 0x5c, 0x28, 0x4e, 0xd9, 0x11, 0xa4, 0x09, 0xb2, 0xea, 0x08,
+ 0x1a, 0x4b, 0x37, 0x92, 0x4e, 0xe4, 0x98, 0x30, 0xce, 0xa7, 0x1c, 0x54,
+ 0x6f, 0x2d, 0xac, 0x1a, 0xf7, 0x19, 0xe3, 0x95, 0x94, 0x16, 0x0e, 0x0e,
+ 0x99, 0x36, 0xf7, 0x4c, 0x83, 0x51, 0x4b, 0x93, 0x1a, 0xe6, 0x7b, 0x44,
+ 0x9d, 0x0a, 0x6d, 0x78, 0x12, 0x11, 0x6a, 0xca, 0x25, 0x79, 0xaf, 0x79,
+ 0x78, 0x83, 0xc0, 0xc6, 0x77, 0x92, 0x2b, 0xd7, 0xd1, 0x4f, 0x26, 0x15,
+ 0xb8, 0x1e, 0xdb, 0xc0, 0xe8, 0x38, 0x82, 0x37, 0x46, 0x74, 0x38, 0x54,
+ 0x02, 0xbf, 0x2c, 0x9c, 0x18, 0x79, 0xe7, 0x26, 0x85, 0x53, 0xcd, 0x3a,
+ 0x04, 0x0c, 0xb9, 0x1c, 0x32, 0xe6, 0x68, 0xa5, 0x1f, 0xf5, 0x16, 0xbb,
+ 0x9c, 0x39, 0x8e, 0xd9, 0x70, 0x9b, 0xf1, 0x5a, 0xc2, 0x77, 0x37, 0xaa,
+ 0x5d, 0x08, 0xd5, 0x27, 0x39, 0x6c, 0x6f, 0x8b, 0xef, 0xf9, 0xdc, 0x82,
+ 0xde, 0x5c, 0x5b, 0x88, 0x87, 0x37, 0x9f, 0x3a, 0x73, 0x75, 0xdd, 0xb6,
+ 0x38, 0xd6, 0xd1, 0x1c, 0xcf, 0xd1, 0x89, 0xc3, 0xba, 0x2a, 0xee, 0x72,
+ 0xb0, 0x69, 0x09, 0x1e, 0x84, 0x40, 0xb6, 0x04, 0x30, 0x85, 0x25, 0xb5,
+ 0x2f, 0x7e, 0xa4, 0xaa, 0x23, 0xf3, 0x69, 0xa2, 0x6e, 0x0f, 0x00, 0x0e,
+ 0xc1, 0x10, 0x73, 0xd2, 0xfc, 0x85, 0x8e, 0x71, 0x0b, 0x47, 0x45, 0xba,
+ 0xa8, 0x38, 0x1f, 0x41, 0x92, 0xab, 0x57, 0x02, 0xe7, 0xc0, 0xdf, 0xa6,
+ 0xb3, 0x7c, 0x18, 0xf3, 0x1d, 0x31, 0xb9, 0x4d, 0xea, 0xf1, 0xac, 0x01,
+ 0x16, 0x23, 0x7b, 0x43, 0xf2, 0x0c, 0x34, 0x5c, 0x80, 0x25, 0xf7, 0x0e,
+ 0xa8, 0x3b, 0x3c, 0x06, 0x42, 0x57, 0x7d, 0xd0, 0x7c, 0x82, 0xe1, 0xff,
+ 0x7a, 0x93, 0xae, 0xdc, 0x5e, 0xad, 0xca, 0xa6, 0xd4, 0xb0, 0xd2, 0xb9,
+ 0x53, 0x9e, 0xce, 0x45, 0x30, 0x0a, 0xe3, 0x65, 0x52, 0xcf, 0x14, 0x5b,
+ 0x93, 0x30, 0xb1, 0xb4, 0xb4, 0xa3, 0x6c, 0x25, 0xd3, 0xa9, 0x40, 0xc2,
+ 0xb1, 0xc1, 0x2c, 0x28, 0x04, 0x08, 0x96, 0xac, 0xa5, 0x2e, 0x18, 0x1f,
+ 0xf7, 0x54, 0xa1, 0x91, 0xa1, 0x54, 0xb2, 0x93, 0xd3, 0xec, 0x5b, 0x67,
+ 0xaf, 0x18, 0x58, 0xc1, 0xa7, 0xf8, 0x09, 0x2b, 0x84, 0xe4, 0xbf, 0xe4,
+ 0x33, 0x59, 0xb1, 0x33, 0x2e, 0xca, 0x78, 0xdd, 0x44, 0x30, 0x9f, 0x0e,
+ 0x8b, 0x27, 0x62, 0x6b, 0x25, 0x1a, 0x0d, 0xe8, 0xdf, 0x5f, 0x07, 0x62,
+ 0x91, 0xea, 0xb7, 0x98, 0x12, 0x0f, 0x08, 0x1b, 0x53, 0xdb, 0xf9, 0x31,
+ 0x2f, 0x08, 0x57, 0xe6, 0xe1, 0x4d, 0xc1, 0x1c, 0xb7, 0xd9, 0x23, 0x67,
+ 0xd1, 0xd0, 0x99, 0x93, 0xbe, 0x2b, 0x31, 0x03, 0x25, 0xa8, 0xa4, 0x1a,
+ 0x39, 0xbf, 0x1c, 0x27, 0xf1, 0x2c, 0xd4, 0x2d, 0x03, 0x27, 0x8c, 0x8e,
+ 0x6e, 0x66, 0x6d, 0x08, 0x93, 0x92, 0x49, 0xc8, 0x44, 0x72, 0xac, 0x39,
+ 0xcb, 0x50, 0x8c, 0x03, 0x33, 0x43, 0xba, 0x55, 0x01, 0xed, 0x1a, 0xfb,
+ 0xf7, 0xd0, 0x03, 0x54, 0x3b, 0x3c, 0x12, 0x44, 0x02, 0x0a, 0x78, 0xda,
+ 0x12, 0x1c, 0xc4, 0x74, 0xc3, 0x84, 0x44, 0x7d, 0x80, 0x28, 0x80, 0xf2,
+ 0xe1, 0x9b, 0xc3, 0x89, 0x23, 0x95, 0xeb, 0x42, 0x49, 0xc8, 0x68, 0xd9,
+ 0x06, 0x4e, 0x8c, 0x73, 0x60, 0x90, 0x49, 0x6e, 0xc8, 0x3d, 0xa4, 0x3c,
+ 0x0b, 0xe1, 0x1c, 0x0b, 0xff, 0xa4, 0xef, 0x12, 0xcd, 0x8c, 0x22, 0x53,
+ 0x86, 0x0f, 0xa0, 0x32, 0xc5, 0xb2, 0x38, 0x9a, 0xf0, 0x19, 0x66, 0x32,
+ 0x3b, 0x3b, 0x2d, 0xa6, 0x97, 0xf4, 0x49, 0x17, 0x1a, 0xa3, 0xcb, 0x5e,
+ 0xc6, 0x93, 0x44, 0x81, 0x53, 0x85, 0x7d, 0xe7, 0x23, 0xd8, 0x42, 0x0a,
+ 0xd2, 0x12, 0x28, 0x11, 0x6a, 0x47, 0x9e, 0x05, 0xcd, 0x5c, 0x13, 0xb9,
+ 0xa4, 0x11, 0xb9, 0x78, 0x11, 0x84, 0xdd, 0x96, 0xb3, 0x74, 0xa1, 0xfe,
+ 0xe9, 0x6e, 0x94, 0x48, 0x56, 0xd1, 0xec, 0x51, 0x4e, 0x65, 0xd9, 0x0b,
+ 0x98, 0x5e, 0xa6, 0x99, 0xbb, 0xc0, 0xdf, 0xce, 0x50, 0xf1, 0x5f, 0x6f,
+ 0x8c, 0xbe, 0xb7, 0xb5, 0x4d, 0x93, 0xdd, 0xdb, 0x7a, 0xb9, 0x51, 0x97,
+ 0xca, 0xb3, 0x32, 0xe9, 0x51, 0xd2, 0x5a, 0x58, 0x3b, 0xe5, 0x56, 0x75,
+ 0xd6, 0xaf, 0x4e, 0x9a, 0x28, 0xbe, 0x24, 0x99, 0x6e, 0xe3, 0x65, 0xa1,
+ 0xa6, 0x1c, 0x36, 0x31, 0x44, 0xc3, 0xb4, 0xbc, 0x41, 0xd4, 0x45, 0x4f,
+ 0xca, 0xdb, 0x77, 0xc8, 0x68, 0xa3, 0xd8, 0x0d, 0xef, 0x53, 0x4c, 0xaf,
+ 0x4a, 0x83, 0x34, 0xde, 0x07, 0x7a, 0x0e, 0xad, 0x52, 0x0e, 0x30, 0x84,
+ 0xda, 0x99, 0x2a, 0x92, 0x03, 0x27, 0x89, 0x49, 0xf8, 0xae, 0xde, 0x6e,
+ 0xd8, 0xf0, 0x9d, 0xb7, 0x69, 0x96, 0x96, 0x37, 0xd4, 0xa6, 0xb8, 0x2c,
+ 0xe3, 0x69, 0xe2, 0x17, 0xb8, 0x03, 0x43, 0x02, 0x93, 0x89, 0xdb, 0xe8,
+ 0x15, 0x84, 0x4c, 0x8f, 0xa9, 0x61, 0xbc, 0xef, 0x52, 0xb0, 0x22, 0x3d,
+ 0xf6, 0x08, 0x19, 0xcd, 0x2e, 0x33, 0x44, 0x2f, 0x69, 0xe9, 0x34, 0x80,
+ 0x6c, 0xeb, 0xff, 0x88, 0xdd, 0xc8, 0x08, 0x22, 0x8b, 0x7b, 0x03, 0x71,
+ 0x73, 0xa0, 0x50, 0xd7, 0x17, 0x50, 0xb5, 0xe1, 0x70, 0x2f, 0x06, 0xc0,
+ 0x82, 0x6c, 0xaf, 0x62, 0x4a, 0x01, 0x84, 0x9f, 0xfd, 0x00, 0xba, 0x68,
+ 0xff, 0x95, 0xf9, 0xf1, 0xc6, 0xf3, 0x1a, 0x46, 0xee, 0x34, 0x74, 0x33,
+ 0xcc, 0xc5, 0x95, 0x48, 0x04, 0x99, 0x2a, 0xaf, 0xf9, 0x1f, 0x61, 0x5f,
+ 0x07, 0xd5, 0xb5, 0x82, 0x15, 0xf9, 0xfe, 0x88, 0x20, 0xa5, 0x2c, 0xc2,
+ 0xb3, 0x93, 0xb6, 0x5b, 0xab, 0xd1, 0xa3, 0xee, 0x99, 0xa8, 0xaa, 0x06,
+ 0x01, 0xfe, 0x0c, 0x26, 0x2f, 0x67, 0x10, 0xda, 0xa8, 0x9b, 0xea, 0x72,
+ 0x20, 0x78, 0x2b, 0x34, 0x4c, 0x11, 0x7a, 0x27, 0x3a, 0x4b, 0xb8, 0x59,
+ 0x4e, 0xb4, 0xf6, 0xd5, 0x5a, 0xa0, 0x9a, 0x6f, 0xed, 0xd0, 0x41, 0x18,
+ 0x2f, 0x6d, 0x23, 0xae, 0xb5, 0x2f, 0x30, 0x29, 0x19, 0xc1, 0x54, 0xf8,
+ 0x9b, 0x72, 0x06, 0x9c, 0x5f, 0x1b, 0x0e, 0xeb, 0x6b, 0x4a, 0x9f, 0xe0,
+ 0x03, 0xd6, 0x93, 0x87, 0xb8, 0xf1, 0x35, 0x62, 0xaf, 0x37, 0xd6, 0xad,
+ 0xfa, 0xdc, 0x9a, 0x57, 0xed, 0x87, 0xa9, 0xfb, 0x8c, 0xd6, 0x23, 0xdd,
+ 0xc1, 0x6d, 0x1b, 0x53, 0x9e, 0x13, 0x4f, 0x86, 0x7c, 0x95, 0xa3, 0x51,
+ 0x8a, 0x9a, 0x0b, 0x5d, 0x7d, 0xf8, 0xe5, 0x74, 0x1a, 0x4c, 0x71, 0x82,
+ 0x2d, 0xc0, 0x83, 0xc7, 0x35, 0x4f, 0x92, 0xb8, 0x22, 0x7d, 0x03, 0xe5,
+ 0x7c, 0x7b, 0xf2, 0xb4, 0xd5, 0xdd, 0x03, 0xcf, 0x38, 0xab, 0x38, 0x74,
+ 0xeb, 0x53, 0xc2, 0x54, 0x40, 0x44, 0xc0, 0x34, 0x80, 0x88, 0x9e, 0xf4,
+ 0x33, 0xe3, 0xed, 0x9a, 0xc4, 0x40, 0x14, 0x8f, 0x12, 0x5a, 0x9e, 0x51,
+ 0x3d, 0x01, 0x73, 0x90, 0x64, 0xee, 0xf1, 0xb0, 0x99, 0xa6, 0xe6, 0x72,
+ 0x06, 0x3b, 0xf6, 0x12, 0xe1, 0x64, 0x67, 0xdc, 0x67, 0x96, 0x07, 0x36,
+ 0xe9, 0x3d, 0xd2, 0x86, 0x1a, 0x36, 0x97, 0xbd, 0xe9, 0x15, 0x71, 0x33,
+ 0xdb, 0x45, 0x55, 0x51, 0x1b, 0x90, 0x92, 0xf3, 0x85, 0x61, 0x38, 0xbe,
+ 0xca, 0xc8, 0x2d, 0x66, 0x6c, 0xfa, 0x28, 0xc9, 0x84, 0x00, 0x6e, 0xb4,
+ 0x49, 0x97, 0x84, 0x2b, 0x0a, 0x46, 0x08, 0x63, 0x43, 0x4c, 0x26, 0x8f,
+ 0xb0, 0x49, 0xdb, 0xce, 0xee, 0xe7, 0x9f, 0xf7, 0x83, 0x38, 0xa7, 0x5c,
+ 0x9e, 0x0d, 0x44, 0x88, 0x3b, 0x65, 0x31, 0x31, 0xbb, 0x06, 0xdd, 0x18,
+ 0xbf, 0x8f, 0x14, 0x46, 0xe5, 0x63, 0xf9, 0x1c, 0xa1, 0x8b, 0x90, 0x39,
+ 0x2e, 0x67, 0xbe, 0x79, 0x4f, 0xa1, 0xc7, 0x39, 0xaa, 0x15, 0xc2, 0xc5,
+ 0x48, 0xbd, 0x42, 0xae, 0x31, 0x4f, 0x5b, 0x54, 0xba, 0x44, 0xd2, 0xf3,
+ 0x38, 0x95, 0x53, 0xa0, 0x01, 0x25, 0x9f, 0x94, 0xd3, 0x7e, 0x41, 0x6b,
+ 0xa0, 0x1c, 0x77, 0xce, 0xfa, 0xe0, 0xed, 0x58, 0x6b, 0x29, 0x07, 0x5d,
+ 0x8b, 0x34, 0xfa, 0x39, 0x4c, 0x0c, 0xbe, 0x02, 0x77, 0xde, 0x6a, 0x20,
+ 0xe0, 0x70, 0xc9, 0x78, 0x86, 0x35, 0x61, 0xd8, 0xe9, 0x02, 0x3e, 0xd0,
+ 0x18, 0x8e, 0x2a, 0xa4, 0xa7, 0x49, 0xe5, 0xd7, 0x31, 0x39, 0xd9, 0xbd,
+ 0x2b, 0x06, 0x0f, 0xd9, 0x44, 0x52, 0x86, 0x15, 0x1d, 0xf6, 0x25, 0x92,
+ 0x30, 0x4e, 0x27, 0x7a, 0x49, 0x4d, 0x77, 0x88, 0xaf, 0xe8, 0x34, 0x0e,
+ 0x65, 0xeb, 0xa5, 0x2c, 0xf1, 0xab, 0x20, 0xc6, 0x99, 0xa4, 0x18, 0x13,
+ 0xe0, 0x56, 0x55, 0x81, 0x5a, 0x6d, 0x79, 0x37, 0x65, 0x91, 0x73, 0x2f,
+ 0x02, 0xae, 0xdd, 0xe1, 0x0d, 0xe6, 0xbc, 0xcd, 0x59, 0x08, 0x64, 0xe3,
+ 0xd0, 0x0c, 0x2a, 0xad, 0x4e, 0x30, 0x91, 0x1f, 0xa7, 0x12, 0xda, 0x09,
+ 0xc5, 0x29, 0x47, 0xfe, 0x00, 0x4f, 0x7b, 0x56, 0x0f, 0xbe, 0xeb, 0xec,
+ 0x93, 0x7f, 0xf6, 0x6e, 0x64, 0x4d, 0x10, 0x35, 0x78, 0x8b, 0x6d, 0x02,
+ 0xb8, 0x1b, 0x9d, 0x91, 0x95, 0x82, 0x26, 0x1c, 0xee, 0xce, 0x8d, 0x4b,
+ 0xb5, 0x95, 0xdc, 0x44, 0x59, 0xd3, 0x3c, 0xe1, 0x59, 0x12, 0xac, 0x86,
+ 0xee, 0x2a, 0xfa, 0x2a, 0xab, 0x62, 0x39, 0x42, 0xc5, 0x92, 0x8c, 0x72,
+ 0xfa, 0x54, 0xa8, 0x1b, 0x97, 0xba, 0x57, 0xcd, 0x8a, 0xa9, 0x67, 0x1e,
+ 0x9d, 0x17, 0xed, 0xb2, 0x00, 0x02, 0xb2, 0x85, 0x27, 0x78, 0x91, 0x9c,
+ 0xa1, 0xda, 0x0b, 0xf6, 0x71, 0x4d, 0xc8, 0xdd, 0x52, 0xa6, 0x7f, 0x67,
+ 0xa5, 0x4c, 0x52, 0x7b, 0x15, 0x1e, 0x8d, 0x1c, 0x1c, 0x09, 0x02, 0xf6,
+ 0x47, 0x6f, 0xb0, 0xcb, 0x28, 0x8b, 0x72, 0xa4, 0x37, 0x8f, 0x4f, 0xbb,
+ 0x89, 0xed, 0x2c, 0x91, 0x50, 0x8d, 0x2b, 0x92, 0xe9, 0x12, 0xa5, 0x1c,
+ 0xed, 0xd3, 0xba, 0xc2, 0xa1, 0xea, 0x13, 0x8b, 0x74, 0x41, 0x9d, 0x4c,
+ 0xc0, 0x9e, 0xf3, 0x72, 0xe5, 0xe1, 0x2d, 0xee, 0x1f, 0xba, 0xcc, 0x60,
+ 0xbb, 0xaa, 0x25, 0xc6, 0x20, 0x05, 0x0f, 0x06, 0xf8, 0xd7, 0x5f, 0xc9,
+ 0xf5, 0x97, 0xcb, 0xd2, 0xb9, 0xf7, 0xc6, 0xd8, 0x98, 0xde, 0xc9, 0xc4,
+ 0xb3, 0x5d, 0x12, 0xca, 0x7c, 0x21, 0x20, 0x33, 0x4c, 0x25, 0xa9, 0x94,
+ 0x01, 0x70, 0xa3, 0x39, 0x74, 0xc4, 0x7c, 0x81, 0x71, 0xca, 0x51, 0x62,
+ 0x61, 0x5c, 0x69, 0x53, 0xa8, 0xaa, 0xda, 0xbb, 0xd5, 0x84, 0x88, 0xa8,
+ 0xba, 0x93, 0x8b, 0x93, 0x29, 0xcd, 0x4e, 0xba, 0x8c, 0xfc, 0xca, 0xe5,
+ 0x4d, 0x02, 0xfa, 0x13, 0x97, 0x5c, 0x3e, 0x51, 0xfa, 0x0d, 0x58, 0x49,
+ 0x08, 0xb0, 0x56, 0xfd, 0x57, 0x63, 0xf0, 0x22, 0xe7, 0x0b, 0xc0, 0x27,
+ 0x11, 0x6e, 0xec, 0x01, 0xe7, 0x69, 0x50, 0x3b, 0x3b, 0x61, 0x68, 0x26,
+ 0x2e, 0x21, 0xe5, 0x51, 0xac, 0x22, 0xae, 0x01, 0xeb, 0xc4, 0xbd, 0x5f,
+ 0x93, 0x8b, 0x1b, 0xc2, 0xec, 0xb1, 0x76, 0x3e, 0xb1, 0x6a, 0xbe, 0x26,
+ 0x06, 0xe9, 0xd2, 0xf0, 0x10, 0x54, 0xa9, 0x8a, 0x18, 0x38, 0xe6, 0x5f,
+ 0x17, 0xd3, 0x16, 0x50, 0x45, 0xee, 0x99, 0x03, 0xb6, 0x82, 0xdf, 0xa4,
+ 0x8b, 0xe8, 0xb0, 0xf7, 0x36, 0x92, 0xf9, 0xbc, 0xfe, 0xaa, 0x36, 0x9c,
+ 0x36, 0xae, 0x70, 0x71, 0xd9, 0x05, 0xe3, 0x63, 0x34, 0x4d, 0x9f, 0xd8,
+ 0x04, 0x6e, 0x6a, 0x60, 0xd2, 0x89, 0xcb, 0x9b, 0x3c, 0x91, 0xb3, 0xcb,
+ 0xc8, 0x04, 0x36, 0x3d, 0x98, 0x60, 0x5d, 0x65, 0xb0, 0xa3, 0x86, 0x6a,
+ 0xbc, 0xed, 0xd3, 0x26, 0xb9, 0xfe, 0x1f, 0xf9, 0x4d, 0x86, 0xff, 0xc0,
+ 0x2f, 0xe0, 0x07, 0x5e, 0x6f, 0x6f, 0x07, 0x67, 0xde, 0x3a, 0x5f, 0x9e,
+ 0xb0, 0xce, 0x18, 0x85, 0x91, 0xa4, 0x88, 0x3a, 0xbc, 0xad, 0x66, 0xfa,
+ 0xf7, 0xa9, 0x6a, 0xce, 0x77, 0xb3, 0xd1, 0x1d, 0x22, 0x3c, 0x32, 0xe7,
+ 0x55, 0x4e, 0xbf, 0x0b, 0xb2, 0xc4, 0xd4, 0xc8, 0x87, 0x99, 0x0f, 0x6e,
+ 0x01, 0xba, 0x1a, 0x1e, 0x49, 0xfb, 0xe2, 0x3b, 0x18, 0x0b, 0x7a, 0x7c,
+ 0x7d, 0x78, 0xb3, 0x9c, 0x26, 0xc4, 0x37, 0xab, 0x87, 0xaa, 0xf3, 0xac,
+ 0x95, 0xa3, 0x97, 0x82, 0xdd, 0x14, 0x9c, 0x62, 0x5d, 0x39, 0xc9, 0x46,
+ 0x54, 0xb3, 0x50, 0x53, 0x21, 0x38, 0x15, 0x13, 0x2d, 0x25, 0x0d, 0x75,
+ 0x35, 0xeb, 0x8a, 0x58, 0x19, 0xed, 0xf2, 0xa6, 0x09, 0xee, 0x85, 0xad,
+ 0xb4, 0x5f, 0xb1, 0x82, 0xfb, 0x64, 0xf8, 0xfa, 0x2b, 0xf4, 0x6d, 0x3d,
+ 0x50, 0xff, 0x00, 0xd6, 0x6a, 0x71, 0xeb, 0x36, 0xa9, 0x9d, 0x40, 0xe4,
+ 0x2c, 0xa2, 0x39, 0x48, 0x5e, 0xb4, 0x0f, 0xeb, 0xd4, 0x39, 0x39, 0x43,
+ 0x4e, 0xf2, 0x7c, 0xe5, 0x88, 0xea, 0xbb, 0xa1, 0x3d, 0x71, 0x92, 0x19,
+ 0x39, 0xc5, 0xcf, 0xd6, 0x70, 0x32, 0x41, 0x90, 0x9c, 0xa9, 0x89, 0xcb,
+ 0x50, 0x4d, 0x3d, 0x7a, 0xc8, 0xa4, 0x9f, 0xb9, 0x4a, 0x9c, 0xd7, 0x5d,
+ 0x2a, 0xf3, 0x09, 0x77, 0x8c, 0xb1, 0x6b, 0xe0, 0xeb, 0x48, 0x10, 0x48,
+ 0xf8, 0xd7, 0x2f, 0xcc, 0xeb, 0xf8, 0x1f, 0xb8, 0xcd, 0x84, 0xc8, 0xbd,
+ 0x62, 0x35, 0x18, 0x0a, 0xd4, 0x77, 0x36, 0x29, 0xfc, 0x64, 0x1a, 0x41,
+ 0xad, 0x75, 0x59, 0xd1, 0xfe, 0x62, 0x8d, 0xdc, 0xb8, 0x1a, 0xa4, 0xa6,
+ 0xf6, 0x4c, 0xc4, 0xe3, 0xc6, 0xb9, 0xa7, 0xd6, 0x62, 0x36, 0x26, 0xf7,
+ 0x6f, 0xa2, 0xd9, 0xb7, 0x4c, 0x1c, 0x67, 0xae, 0x53, 0xff, 0xa9, 0x63,
+ 0x26, 0xff, 0x53, 0xc7, 0x4e, 0xff, 0xa7, 0x8e, 0x5d, 0xc0, 0x4f, 0x1d,
+ 0x84, 0xa1, 0xc4, 0x45, 0xf8, 0x06, 0xf1, 0x2f, 0x3d, 0xf4, 0x35, 0xfe,
+ 0xaa, 0xfd, 0xa8, 0xf3, 0x4d, 0xe7, 0x93, 0x9d, 0xb5, 0x55, 0x9b, 0xe6,
+ 0xc6, 0x86, 0xa8, 0x2e, 0xa6, 0xb9, 0x87, 0xc0, 0xae, 0x6b, 0xdb, 0x64,
+ 0xb7, 0x05, 0x8d, 0x33, 0xaf, 0x83, 0xb7, 0xf3, 0x00, 0xee, 0xb8, 0x6d,
+ 0x4e, 0xe5, 0x34, 0x5d, 0x30, 0x28, 0x96, 0x7a, 0x0e, 0xda, 0xfb, 0xd9,
+ 0x93, 0x47, 0xe6, 0x75, 0x4f, 0xfe, 0xfc, 0x27, 0x7c, 0x81, 0xf4, 0x7f,
+ 0x1a, 0x43, 0x6e, 0x35, 0x01, 0xd8, 0x48, 0x5e, 0x1e, 0x25, 0x4c, 0x67,
+ 0x1c, 0xb5, 0x64, 0xf1, 0x37, 0xe1, 0x4a, 0x23, 0x26, 0x09, 0x2f, 0x97,
+ 0x7e, 0x9e, 0x52, 0xab, 0x32, 0x58, 0xd5, 0x8c, 0x2d, 0xd4, 0x4d, 0x94,
+ 0x0a, 0x94, 0xfb, 0x4a, 0x1d, 0xc4, 0x4a, 0x32, 0xd1, 0xc5, 0x78, 0x95,
+ 0x3e, 0x6c, 0xbc, 0x0f, 0xed, 0x24, 0x8d, 0x8a, 0xf8, 0x2c, 0x2f, 0xca,
+ 0xd7, 0x9d, 0x02, 0x3b, 0xbf, 0x46, 0xd3, 0x02, 0x34, 0xd8, 0x2f, 0x90,
+ 0xb4, 0x96, 0x70, 0x58, 0xf6, 0x9e, 0x3e, 0xf4, 0xe6, 0x8f, 0x30, 0xef,
+ 0xb5, 0x5f, 0x44, 0x19, 0x0e, 0x4b, 0x1b, 0x53, 0x94, 0x1e, 0x98, 0xe3,
+ 0x3c, 0x6a, 0xe6, 0x29, 0xf0, 0xd5, 0x75, 0x2e, 0xa5, 0xfc, 0xfe, 0x75,
+ 0x08, 0xe6, 0xce, 0x5b, 0x88, 0xc3, 0x79, 0xc9, 0x54, 0x7b, 0x7d, 0xf1,
+ 0xed, 0x17, 0x3a, 0xc0, 0x4f, 0x9d, 0x1f, 0x7a, 0xfc, 0x53, 0xaa, 0x17,
+ 0x3e, 0x88, 0x2e, 0xbe, 0x45, 0xea, 0xfe, 0x65, 0x0c, 0x6c, 0xd5, 0x07,
+ 0xbe, 0xe2, 0xbf, 0x10, 0x65, 0xaf, 0x1a, 0xf6, 0xda, 0xe6, 0x49, 0xbc,
+ 0xc6, 0x06, 0xc6, 0x54, 0x67, 0x44, 0x56, 0xf8, 0x62, 0x81, 0x95, 0x43,
+ 0x5a, 0x1f, 0x5b, 0x71, 0x7d, 0x2c, 0x45, 0x8d, 0xe2, 0x61, 0xce, 0x29,
+ 0xd2, 0x95, 0x8f, 0x8d, 0x4d, 0xd8, 0xbc, 0x74, 0xb6, 0xe2, 0xbb, 0x5a,
+ 0x90, 0xe3, 0x82, 0xd4, 0xe1, 0x7a, 0x9a, 0x41, 0xbd, 0x96, 0xb1, 0x1b,
+ 0x9d, 0x04, 0x9a, 0x20, 0x58, 0x70, 0x23, 0xfe, 0x1b, 0xe9, 0x65, 0xa6,
+ 0x37, 0x37, 0x36, 0x54, 0x8b, 0x8b, 0x44, 0x3b, 0xe4, 0x48, 0x4f, 0x3f,
+ 0x0a, 0x30, 0x01, 0xc1, 0x04, 0x42, 0x01, 0x12, 0x9d, 0x94, 0x44, 0xf4,
+ 0x49, 0x3e, 0x93, 0x2e, 0xee, 0x25, 0x50, 0x3d, 0x1f, 0xb0, 0x69, 0xa3,
+ 0x07, 0x1a, 0x07, 0x6e, 0x85, 0x44, 0x2a, 0xe4, 0xb3, 0x01, 0x95, 0x43,
+ 0xa2, 0x89, 0xec, 0x8d, 0x93, 0xa6, 0x6d, 0x04, 0x18, 0xc6, 0x84, 0xff,
+ 0x05, 0x1a, 0xfd, 0xc3, 0x84, 0x9c, 0x4f, 0xa6, 0x2a, 0xb3, 0x27, 0xce,
+ 0xe1, 0x80, 0x07, 0x27, 0x32, 0xf7, 0x46, 0x2f, 0x0e, 0xa7, 0x41, 0x68,
+ 0xa9, 0x26, 0xe6, 0x89, 0xbd, 0x43, 0x95, 0x50, 0x12, 0xd9, 0xb5, 0xb3,
+ 0x0d, 0x8a, 0x97, 0xf0, 0x62, 0xe9, 0x0e, 0xab, 0x1a, 0xe1, 0xdf, 0xb6,
+ 0xe8, 0x8f, 0xe2, 0x4b, 0xd6, 0xc7, 0x62, 0xd1, 0xb7, 0xe4, 0xb0, 0xfa,
+ 0xde, 0x0b, 0x3f, 0x48, 0x52, 0x50, 0x6f, 0xfb, 0xc0, 0xe9, 0x52, 0xc4,
+ 0x3f, 0x0b, 0x0f, 0xef, 0x82, 0xc0, 0x68, 0x80, 0xb8, 0x94, 0xed, 0x5f,
+ 0x31, 0xfe, 0x8e, 0x19, 0xff, 0xb3, 0x00, 0xee, 0x0a, 0x23, 0xa3, 0x84,
+ 0x3f, 0x7b, 0x6d, 0x93, 0x00, 0xd5, 0x8b, 0x6a, 0x3c, 0x19, 0x35, 0x1f,
+ 0x82, 0x42, 0x3e, 0x33, 0x26, 0x0b, 0x87, 0x1b, 0xfc, 0x26, 0x0f, 0x0c,
+ 0x57, 0x49, 0x66, 0x20, 0xad, 0x03, 0xb6, 0xb1, 0x69, 0x22, 0xb2, 0xa8,
+ 0x17, 0xc2, 0xca, 0xe7, 0x08, 0xc1, 0x3a, 0x3e, 0xb0, 0x3d, 0x2f, 0x19,
+ 0x44, 0x22, 0x75, 0xf3, 0xeb, 0x6d, 0x1d, 0xad, 0x57, 0xd6, 0x58, 0x03,
+ 0x38, 0xf6, 0x3e, 0x05, 0xac, 0x98, 0xa1, 0x97, 0x9c, 0x86, 0x8c, 0x6b,
+ 0xeb, 0x6b, 0xe2, 0x54, 0xc1, 0x0f, 0x61, 0xab, 0x48, 0x4a, 0x84, 0xa2,
+ 0x62, 0xec, 0x98, 0x30, 0x33, 0xc4, 0x97, 0xd3, 0x0b, 0x68, 0x1d, 0x07,
+ 0xc4, 0xda, 0xcd, 0x9d, 0x60, 0xa0, 0x20, 0xc2, 0x09, 0x52, 0xbb, 0x99,
+ 0x41, 0xbd, 0x6a, 0xe0, 0x40, 0xbe, 0x91, 0xec, 0x6c, 0xb1, 0x0c, 0xc6,
+ 0xb6, 0xa9, 0xcd, 0x56, 0x8c, 0xa3, 0xb5, 0xd7, 0x1b, 0x6b, 0x66, 0x69,
+ 0xed, 0x66, 0x91, 0xd7, 0xf1, 0x51, 0x83, 0x90, 0xa6, 0x0f, 0x2c, 0x79,
+ 0x96, 0xe6, 0x98, 0xfb, 0x90, 0xf4, 0xe8, 0x40, 0x83, 0x08, 0x7a, 0x65,
+ 0x25, 0xde, 0x4e, 0x4a, 0x2c, 0xa7, 0xdb, 0xc9, 0x58, 0x2f, 0x4c, 0xe2,
+ 0xf1, 0xac, 0xc2, 0x54, 0x7d, 0x2a, 0xa6, 0x60, 0xb4, 0xbf, 0xf2, 0xc0,
+ 0xd1, 0xc7, 0x03, 0xd7, 0x13, 0x03, 0x39, 0xd4, 0x44, 0x41, 0x5c, 0x22,
+ 0x8e, 0x47, 0x63, 0x95, 0xea, 0xbd, 0xf6, 0x7a, 0x9d, 0x05, 0x96, 0xf5,
+ 0xa7, 0x39, 0xdf, 0x5e, 0x8b, 0x7e, 0x0a, 0xd7, 0xb5, 0x46, 0xfc, 0xae,
+ 0x63, 0x21, 0x08, 0xd9, 0x3e, 0xf5, 0x46, 0x74, 0x38, 0xcc, 0xc7, 0x8f,
+ 0x5f, 0x52, 0xd8, 0x49, 0x5e, 0x39, 0xdc, 0xa4, 0x1f, 0x35, 0x54, 0xe6,
+ 0xb6, 0x81, 0x68, 0x14, 0x38, 0x2a, 0xfa, 0xf3, 0x2b, 0x7c, 0x5c, 0x2d,
+ 0x86, 0xb5, 0xa8, 0xdf, 0x07, 0x26, 0x54, 0xce, 0xa9, 0x1d, 0xd7, 0x0a,
+ 0xc1, 0xc2, 0x78, 0x77, 0x24, 0x62, 0x51, 0x49, 0x11, 0xc8, 0x12, 0xf2,
+ 0xec, 0xa8, 0x95, 0xcd, 0x4e, 0x48, 0xfe, 0x55, 0xf1, 0xba, 0x1f, 0x1d,
+ 0x99, 0x2c, 0x99, 0x24, 0x80, 0x91, 0x8d, 0xd7, 0x98, 0x65, 0x87, 0x53,
+ 0x12, 0xfe, 0xf9, 0x30, 0x15, 0x37, 0xfb, 0x38, 0xaf, 0xe1, 0x6e, 0x32,
+ 0xa6, 0x03, 0x08, 0xf7, 0x30, 0x52, 0xda, 0x28, 0x2f, 0x38, 0x46, 0xc4,
+ 0xee, 0x74, 0x63, 0xbf, 0xc8, 0xd4, 0x7a, 0x27, 0x02, 0xcc, 0xa5, 0x6c,
+ 0xb4, 0x1b, 0xbd, 0x34, 0x5f, 0x0a, 0x60, 0xd5, 0xb3, 0xc5, 0x5f, 0x46,
+ 0x9f, 0xf7, 0xf0, 0x29, 0xa7, 0x5b, 0xac, 0xd0, 0x7d, 0x3d, 0x83, 0xa3,
+ 0x2b, 0x4a, 0x61, 0x8f, 0x12, 0x93, 0x02, 0x05, 0x39, 0x24, 0x09, 0x86,
+ 0x71, 0x99, 0xbc, 0xd8, 0x53, 0xf5, 0x92, 0x77, 0xa9, 0x54, 0xff, 0x6d,
+ 0xcd, 0x09, 0xcb, 0x72, 0xc8, 0x59, 0x50, 0xf3, 0x22, 0x50, 0x61, 0x31,
+ 0x2a, 0x67, 0xd8, 0xfc, 0x8b, 0x73, 0x70, 0x51, 0x9a, 0x82, 0x22, 0x39,
+ 0xad, 0xa8, 0xa2, 0xe8, 0xe5, 0x0b, 0x67, 0xd2, 0x4f, 0xb8, 0x2b, 0x1a,
+ 0x9c, 0x54, 0x56, 0xd8, 0x5c, 0x91, 0xda, 0xeb, 0xf0, 0x5d, 0xef, 0x5e,
+ 0xa2, 0xaf, 0x83, 0x81, 0xc7, 0x64, 0x8d, 0xc6, 0xc1, 0xf8, 0xd4, 0x35,
+ 0x72, 0x2f, 0xc1, 0x17, 0x4a, 0x38, 0xcd, 0x4f, 0xaf, 0x24, 0x6a, 0xc7,
+ 0x44, 0xd2, 0xf7, 0x79, 0x12, 0x4c, 0xd8, 0x4f, 0xd3, 0x35, 0x06, 0x11,
+ 0x26, 0xcb, 0x82, 0xa4, 0x8f, 0x3c, 0xc6, 0x4a, 0x82, 0xd6, 0x29, 0x89,
+ 0x9e, 0xfe, 0xfe, 0xe8, 0xfc, 0xc3, 0xd1, 0xd9, 0xf3, 0xbb, 0x02, 0xd5,
+ 0x1a, 0xcd, 0x3d, 0x91, 0x03, 0xeb, 0x82, 0x19, 0x34, 0xa0, 0x7e, 0xc2,
+ 0x50, 0x06, 0x5e, 0xd4, 0x01, 0xa1, 0x0d, 0x9a, 0xd9, 0x7a, 0x58, 0x34,
+ 0x86, 0x74, 0x85, 0x49, 0x22, 0x61, 0x08, 0x20, 0xce, 0xf3, 0x95, 0x10,
+ 0xb9, 0x93, 0xb9, 0x19, 0x97, 0xd2, 0x93, 0xb1, 0xa3, 0xef, 0xe3, 0xeb,
+ 0x1d, 0x49, 0x1e, 0x37, 0x75, 0xe2, 0x21, 0x2a, 0x37, 0xb5, 0xed, 0x26,
+ 0xf5, 0x4a, 0x9b, 0x5a, 0x8b, 0x40, 0xab, 0x79, 0xdf, 0xf2, 0xc9, 0xc4,
+ 0x66, 0xcf, 0x36, 0x23, 0x7c, 0xc7, 0xc7, 0xed, 0x25, 0xb7, 0x9f, 0x12,
+ 0x2d, 0xb5, 0x91, 0x91, 0x4e, 0xdb, 0x68, 0xb9, 0x7b, 0xaf, 0xca, 0xb9,
+ 0x1a, 0xfd, 0x50, 0xe6, 0x16, 0xde, 0x55, 0x98, 0xa0, 0x8b, 0x1c, 0xa0,
+ 0x2a, 0x2e, 0xb5, 0x9b, 0x1d, 0x9c, 0x5c, 0xd1, 0x66, 0x5d, 0x1e, 0x0d,
+ 0x06, 0x46, 0x16, 0x96, 0x92, 0x96, 0xd0, 0xf5, 0x8c, 0x31, 0x52, 0x23,
+ 0xdd, 0xb6, 0x27, 0xfd, 0xc8, 0x74, 0x8a, 0x95, 0x74, 0x4e, 0x8a, 0xfd,
+ 0x80, 0xcd, 0x77, 0xbd, 0x9c, 0xc3, 0x85, 0x01, 0x8d, 0x77, 0xbc, 0x56,
+ 0x4a, 0x28, 0xb6, 0x49, 0x78, 0xc8, 0xb9, 0x44, 0x93, 0xa2, 0xb3, 0x46,
+ 0xda, 0xc3, 0xb3, 0x1f, 0x68, 0x0c, 0x09, 0xb9, 0x3c, 0x07, 0xaf, 0x5d,
+ 0x88, 0xdb, 0x6e, 0xd8, 0x99, 0xde, 0x19, 0x9c, 0x5e, 0x9f, 0xc0, 0xf6,
+ 0x7d, 0xb8, 0x7e, 0xd7, 0x91, 0xd4, 0x85, 0x26, 0x0a, 0x06, 0x39, 0xed,
+ 0xb1, 0xc5, 0xeb, 0x9d, 0xa9, 0x96, 0x2d, 0xd8, 0x91, 0x02, 0xd6, 0x42,
+ 0x48, 0x03, 0xb7, 0x1f, 0xed, 0xaf, 0x38, 0xa5, 0xfd, 0xfe, 0x7e, 0xf3,
+ 0x94, 0xda, 0xe1, 0xaa, 0x19, 0xc0, 0xd8, 0x23, 0x77, 0x41, 0x45, 0xc6,
+ 0xec, 0xa9, 0x4d, 0xdb, 0x3c, 0x85, 0x82, 0x6c, 0x84, 0xae, 0x13, 0x73,
+ 0x29, 0xbc, 0x87, 0x9e, 0xa7, 0x50, 0x82, 0x4e, 0x5c, 0x9c, 0xb0, 0x9b,
+ 0x0d, 0xdc, 0x90, 0x78, 0x7b, 0x39, 0x1c, 0x0a, 0x27, 0x16, 0x17, 0x63,
+ 0x53, 0x16, 0xea, 0xeb, 0x87, 0x9a, 0xeb, 0x87, 0x2d, 0x99, 0x80, 0x04,
+ 0xb4, 0x25, 0x4b, 0xad, 0x5a, 0xd7, 0xef, 0xad, 0x60, 0xf3, 0xf9, 0xc2,
+ 0x60, 0xda, 0xe4, 0x45, 0xa7, 0x2e, 0x2d, 0x06, 0x15, 0x7a, 0x65, 0xf6,
+ 0x63, 0x18, 0xff, 0x19, 0xf7, 0x55, 0xf2, 0x45, 0x0e, 0xf9, 0xcf, 0x30,
+ 0xbd, 0x93, 0xc8, 0x2d, 0xf2, 0x19, 0x3b, 0x10, 0xe5, 0x0d, 0x4e, 0xe2,
+ 0xe4, 0x62, 0x17, 0xa9, 0xc3, 0x28, 0x28, 0xe1, 0x50, 0x42, 0x34, 0xd4,
+ 0xd4, 0xdc, 0x6f, 0xbb, 0xb5, 0x3e, 0xd8, 0x30, 0x9e, 0xd6, 0x6b, 0x8a,
+ 0x28, 0xd2, 0x68, 0x81, 0x2a, 0x26, 0x07, 0x59, 0x51, 0xd4, 0xcb, 0x10,
+ 0xba, 0x8f, 0x73, 0x7b, 0x7d, 0x8b, 0x89, 0x18, 0xf5, 0xe8, 0x7e, 0xdc,
+ 0x82, 0x55, 0x47, 0x6e, 0x2d, 0x4a, 0x22, 0x23, 0x1b, 0x90, 0x6b, 0xa6,
+ 0x8e, 0xbf, 0x7f, 0xe3, 0x34, 0xdb, 0xd1, 0x3c, 0x35, 0xa6, 0x17, 0x51,
+ 0x48, 0xdb, 0xd0, 0xe0, 0x12, 0x9b, 0x6c, 0xd9, 0xa7, 0xa0, 0xea, 0x38,
+ 0x49, 0x16, 0x06, 0xda, 0x3c, 0xa5, 0x1a, 0x9b, 0xb4, 0xa4, 0x20, 0xaa,
+ 0xc0, 0xca, 0x53, 0x3b, 0xb9, 0x96, 0xd9, 0x09, 0xeb, 0xd0, 0x16, 0x91,
+ 0x64, 0xef, 0x60, 0xf3, 0x30, 0x0c, 0xe3, 0x6e, 0xbf, 0xdc, 0xfd, 0x1c,
+ 0x64, 0xf3, 0x23, 0x61, 0x8d, 0xdb, 0x2d, 0x63, 0x2c, 0xe0, 0x76, 0x9c,
+ 0x3f, 0x31, 0x6a, 0x34, 0xbd, 0x57, 0xe0, 0x14, 0xa2, 0x12, 0xcd, 0x08,
+ 0x72, 0x50, 0x49, 0x71, 0xb3, 0x8f, 0x45, 0x03, 0x9b, 0x28, 0x1b, 0x26,
+ 0x49, 0x77, 0xb4, 0x4f, 0x9c, 0x20, 0xd6, 0x77, 0x08, 0x18, 0x1b, 0x94,
+ 0x60, 0x27, 0x35, 0x60, 0x29, 0x57, 0x27, 0xd7, 0x57, 0xf0, 0xc7, 0xe0,
+ 0xfa, 0xe2, 0xaa, 0x05, 0x99, 0xb1, 0x62, 0x98, 0x0e, 0xdc, 0x34, 0x4d,
+ 0x57, 0xa1, 0x6d, 0xae, 0xa3, 0xb6, 0x51, 0x26, 0x34, 0xb3, 0x9d, 0x32,
+ 0x08, 0xf4, 0xe5, 0xe0, 0x7d, 0x95, 0xfd, 0xda, 0x42, 0x27, 0x20, 0x1f,
+ 0x56, 0x2e, 0x8c, 0xcf, 0x7c, 0x35, 0x85, 0xd0, 0x82, 0x91, 0x18, 0x71,
+ 0xc5, 0x86, 0xd1, 0xd3, 0x6c, 0xc1, 0x68, 0x43, 0xe7, 0xbf, 0x85, 0xb1,
+ 0xd7, 0xf6, 0xd4, 0x2d, 0x68, 0x86, 0x9c, 0x9a, 0xcb, 0xcd, 0x59, 0x6c,
+ 0xb7, 0x76, 0xe0, 0xb4, 0x0a, 0x05, 0xd0, 0x89, 0xd6, 0xc9, 0x81, 0x2c,
+ 0x7a, 0xc9, 0x13, 0xf4, 0x0b, 0xba, 0xd0, 0x86, 0x5d, 0x70, 0x99, 0xcf,
+ 0x13, 0xf6, 0xf0, 0x73, 0x72, 0xae, 0x32, 0x27, 0x96, 0x2d, 0x8c, 0x4b,
+ 0x1b, 0x85, 0xf0, 0x30, 0x0c, 0x84, 0x18, 0x9e, 0xf2, 0x9a, 0x41, 0x14,
+ 0xc8, 0x85, 0x3a, 0xf8, 0x5c, 0x12, 0xb0, 0x54, 0x2b, 0xc2, 0x66, 0x5b,
+ 0xd3, 0x59, 0x39, 0xd8, 0x62, 0x75, 0xe6, 0xbd, 0xdd, 0x64, 0x32, 0x08,
+ 0xca, 0x10, 0xe6, 0x2c, 0xd4, 0x47, 0x4f, 0x8b, 0xeb, 0x29, 0xd1, 0x4a,
+ 0x73, 0x6c, 0x48, 0x97, 0x70, 0xfb, 0x87, 0x5e, 0xca, 0x53, 0xc1, 0xb0,
+ 0x1a, 0x55, 0x2f, 0x22, 0x98, 0x87, 0xa1, 0x6d, 0x39, 0x72, 0x0e, 0xd1,
+ 0x2c, 0x9b, 0x4c, 0xb7, 0xa6, 0xcf, 0xf9, 0x6c, 0x56, 0x95, 0xb6, 0xc8,
+ 0x76, 0x64, 0xf2, 0xd0, 0x28, 0x5a, 0xdb, 0x7e, 0xb5, 0xa1, 0x44, 0x37,
+ 0x35, 0x18, 0x4a, 0xb7, 0xb2, 0x4e, 0x06, 0xea, 0x91, 0x1d, 0x44, 0xd0,
+ 0x89, 0x3e, 0x64, 0x82, 0x1c, 0x93, 0x81, 0x6d, 0x41, 0xf9, 0x0f, 0x63,
+ 0xb3, 0x69, 0x08, 0xa8, 0x84, 0x69, 0x5b, 0x2c, 0xb4, 0xc6, 0x39, 0x2b,
+ 0xf4, 0x84, 0xe9, 0xec, 0x43, 0x84, 0x91, 0x0f, 0x99, 0xb2, 0x09, 0x54,
+ 0xd2, 0xc8, 0x78, 0xd6, 0x2e, 0x19, 0x55, 0xcd, 0x95, 0x12, 0xca, 0x83,
+ 0xb7, 0xd0, 0x4b, 0xf7, 0xd0, 0x98, 0xa5, 0x91, 0xf5, 0x63, 0x79, 0x41,
+ 0xc5, 0x60, 0x0b, 0x8c, 0xa8, 0xa0, 0x5e, 0x01, 0x81, 0xb5, 0xc8, 0x82,
+ 0xa5, 0x59, 0x0c, 0x69, 0xb1, 0xcc, 0x66, 0x98, 0x23, 0x5e, 0x87, 0x8a,
+ 0x50, 0x35, 0xb0, 0xbf, 0xa2, 0x8a, 0xd5, 0x45, 0x96, 0xa8, 0x91, 0x64,
+ 0xbd, 0x5e, 0xbf, 0xbe, 0xba, 0xd6, 0xca, 0x5f, 0x22, 0xd0, 0x2b, 0x3c,
+ 0x32, 0x45, 0xa4, 0x54, 0xda, 0x4a, 0xb3, 0x14, 0x91, 0x84, 0xf2, 0x62,
+ 0x13, 0xab, 0x54, 0x10, 0xb3, 0x0f, 0xac, 0xca, 0x7c, 0x46, 0xad, 0x7d,
+ 0x54, 0x75, 0x0b, 0x35, 0x64, 0x26, 0x15, 0x8c, 0x31, 0x78, 0x60, 0xf0,
+ 0x7a, 0xe5, 0xbe, 0xd3, 0xac, 0x0e, 0xa5, 0xa9, 0x03, 0x1b, 0xd1, 0x0f,
+ 0xb5, 0x83, 0xe3, 0x8c, 0x10, 0xca, 0x78, 0xac, 0xab, 0x63, 0xda, 0x9a,
+ 0x54, 0x9b, 0x8b, 0xd0, 0xb9, 0x92, 0xca, 0x47, 0xf9, 0xf7, 0x2d, 0xb5,
+ 0x7c, 0xda, 0xd8, 0x85, 0xc0, 0xa1, 0x60, 0x57, 0xba, 0x9c, 0x1d, 0x52,
+ 0xbf, 0x99, 0x64, 0x39, 0xd4, 0xbf, 0x56, 0x26, 0xd5, 0x72, 0xe1, 0xcb,
+ 0x79, 0x5b, 0x7d, 0x6a, 0x46, 0xd4, 0xa0, 0xa8, 0x33, 0x45, 0x44, 0x55,
+ 0xb0, 0xdb, 0xef, 0xa2, 0xf3, 0x37, 0x6f, 0x23, 0x69, 0x02, 0x9e, 0x74,
+ 0x6f, 0x43, 0x02, 0x50, 0xf1, 0x82, 0x0d, 0x82, 0xa3, 0x0e, 0xe8, 0x17,
+ 0x5b, 0x1d, 0x06, 0x5a, 0x90, 0xb2, 0x2d, 0x8e, 0xb2, 0x9b, 0xb7, 0x61,
+ 0x5f, 0x9c, 0xf9, 0xfa, 0x77, 0x46, 0xeb, 0x51, 0xa4, 0x64, 0x11, 0x4f,
+ 0x67, 0x1d, 0x7b, 0xd1, 0xd3, 0xfd, 0xdd, 0xf8, 0xac, 0x75, 0xe9, 0x2b,
+ 0x66, 0xd5, 0xd9, 0x7e, 0xb5, 0xd3, 0xdf, 0x7e, 0xf1, 0x79, 0x7f, 0x9b,
+ 0x3a, 0xd9, 0x3a, 0x73, 0xb3, 0x1d, 0x57, 0x9d, 0x81, 0x02, 0xfd, 0x7c,
+ 0xa3, 0x76, 0x44, 0x5f, 0xfe, 0xc2, 0xfc, 0xb1, 0x8f, 0xcf, 0xf5, 0xb9,
+ 0xab, 0x8e, 0xf7, 0x8d, 0x39, 0xe8, 0x34, 0x69, 0xe6, 0xc5, 0x41, 0x7a,
+ 0x36, 0xab, 0x88, 0x69, 0x71, 0x91, 0x22, 0x19, 0x29, 0xca, 0xa6, 0xb3,
+ 0x4f, 0xda, 0x10, 0xd0, 0x34, 0x38, 0xa1, 0xdb, 0x19, 0x9e, 0x91, 0xb2,
+ 0xf4, 0x91, 0xa8, 0x91, 0x96, 0xab, 0x9b, 0xef, 0x7b, 0x6c, 0xf3, 0x17,
+ 0x5b, 0x7d, 0x08, 0xe1, 0x62, 0x2e, 0x5d, 0x13, 0xa6, 0x8b, 0x20, 0x9e,
+ 0x9a, 0x28, 0x41, 0x02, 0xfa, 0xc2, 0x0f, 0xaa, 0xc6, 0x6d, 0x02, 0xe2,
+ 0xae, 0x90, 0x21, 0xf0, 0x23, 0x5b, 0x89, 0xe3, 0x56, 0x12, 0xd3, 0xc8,
+ 0xa6, 0x4e, 0xb4, 0x01, 0xe7, 0x64, 0x60, 0x96, 0x98, 0x49, 0xeb, 0x70,
+ 0xf8, 0xce, 0x9f, 0xff, 0x6c, 0x39, 0x12, 0xb7, 0x55, 0xa7, 0x5e, 0x1e,
+ 0xfb, 0x04, 0xd5, 0xca, 0xb1, 0x6a, 0xee, 0x0a, 0xd0, 0x39, 0xf8, 0x91,
+ 0x9c, 0xc3, 0x3f, 0xf7, 0x7e, 0x84, 0x7f, 0xfe, 0xdc, 0xd1, 0x4b, 0xcd,
+ 0xb0, 0x5c, 0xb6, 0x60, 0xc4, 0xc2, 0x1f, 0xd2, 0x01, 0x75, 0xa3, 0x7a,
+ 0x5b, 0x5a, 0xd2, 0x0c, 0xae, 0x8f, 0x2f, 0xf9, 0x32, 0x16, 0x1c, 0xf6,
+ 0x26, 0x6a, 0x46, 0x3e, 0x44, 0x6a, 0x3d, 0xb2, 0x70, 0xea, 0xa8, 0xc1,
+ 0x74, 0x62, 0xf6, 0xd2, 0x79, 0xa5, 0x6b, 0x93, 0x1a, 0xee, 0x99, 0x03,
+ 0xc4, 0xa0, 0xdf, 0x4e, 0xd1, 0xbf, 0xc2, 0x25, 0xe9, 0xc0, 0x77, 0x55,
+ 0x91, 0x96, 0x8e, 0xc1, 0x08, 0xec, 0x05, 0x6c, 0xc0, 0x5c, 0x87, 0x7b,
+ 0x98, 0x52, 0x37, 0x12, 0xf8, 0x5b, 0xae, 0x8d, 0xa8, 0x04, 0x4b, 0x11,
+ 0xb6, 0x01, 0x36, 0x4a, 0xb9, 0x6d, 0x91, 0x96, 0xb7, 0xb8, 0x3e, 0x29,
+ 0xf3, 0x71, 0x72, 0x85, 0x70, 0x3e, 0x9f, 0x19, 0xad, 0xef, 0x51, 0x21,
+ 0x6b, 0x4c, 0xe1, 0x9e, 0xb3, 0xb3, 0x56, 0x3a, 0xe8, 0xb1, 0x2b, 0x10,
+ 0x65, 0x10, 0x76, 0x4b, 0x1e, 0x2b, 0x92, 0x67, 0xa0, 0xc1, 0x49, 0x2a,
+ 0xcc, 0x25, 0xe8, 0xb9, 0x86, 0x34, 0x1c, 0x68, 0x26, 0x2c, 0x69, 0x47,
+ 0x62, 0x41, 0xe9, 0xb7, 0xd1, 0x94, 0x5a, 0xd8, 0xa1, 0x06, 0x1d, 0xc5,
+ 0x0c, 0x0f, 0x65, 0xf0, 0xcd, 0xa8, 0x67, 0x16, 0x96, 0x4f, 0x14, 0x30,
+ 0x8d, 0x71, 0x57, 0x6b, 0xf3, 0xf9, 0x66, 0x60, 0x90, 0x57, 0x75, 0xba,
+ 0xcf, 0x82, 0xb6, 0x02, 0x5d, 0x34, 0xab, 0x8c, 0xce, 0xd8, 0xa7, 0x8e,
+ 0x9b, 0x4f, 0xbb, 0x8e, 0x7f, 0x02, 0xb7, 0xd6, 0x8e, 0x6a, 0xf7, 0x19,
+ 0xb5, 0x47, 0x8e, 0x7c, 0x83, 0x86, 0xa6, 0x3f, 0x0f, 0x41, 0xf4, 0x3a,
+ 0x42, 0x75, 0x67, 0xcb, 0x77, 0xa5, 0x60, 0xd3, 0x67, 0xda, 0xe4, 0x5e,
+ 0xba, 0x78, 0x7a, 0x03, 0x15, 0xe6, 0x0b, 0x8f, 0xb4, 0xc6, 0x59, 0x8c,
+ 0x84, 0x29, 0x97, 0xd3, 0x29, 0x61, 0x62, 0xf8, 0x99, 0x79, 0x54, 0xb1,
+ 0x28, 0x85, 0x03, 0xd2, 0xcf, 0x00, 0x18, 0x39, 0xcd, 0x5c, 0x77, 0xc3,
+ 0x96, 0x45, 0x0a, 0xc3, 0x29, 0x6d, 0x67, 0x92, 0xd6, 0xd2, 0x59, 0xec,
+ 0x65, 0x27, 0xd7, 0xdb, 0x6a, 0x32, 0x45, 0xd2, 0xd3, 0x89, 0x36, 0xf9,
+ 0x20, 0xa6, 0x06, 0x79, 0x19, 0xb0, 0xcc, 0x11, 0xc9, 0xd7, 0xd0, 0xce,
+ 0xfb, 0x56, 0xba, 0x1b, 0xd1, 0xc3, 0x86, 0xfd, 0x71, 0x18, 0x8e, 0x27,
+ 0x9d, 0x08, 0x88, 0x1f, 0xa3, 0xb0, 0x15, 0x06, 0xd5, 0x8a, 0xf5, 0x4a,
+ 0xe1, 0x47, 0x4d, 0xa9, 0x39, 0xa1, 0xed, 0x58, 0xe5, 0x17, 0xb0, 0xac,
+ 0xd0, 0xd5, 0x96, 0xf6, 0xfa, 0x3b, 0xde, 0xc1, 0x96, 0xb3, 0xde, 0x68,
+ 0x34, 0xea, 0x91, 0x1e, 0x70, 0xc8, 0xca, 0xc9, 0xa6, 0x28, 0x07, 0x2d,
+ 0x3e, 0x83, 0x41, 0x22, 0xfb, 0x7d, 0x7c, 0x7c, 0x2c, 0x7a, 0xcc, 0xf5,
+ 0x4d, 0x43, 0xa3, 0x30, 0x80, 0x53, 0xa2, 0x51, 0x85, 0xda, 0x1c, 0x96,
+ 0x37, 0xcb, 0x6a, 0x4c, 0xdd, 0x90, 0x91, 0x65, 0x28, 0xeb, 0x35, 0x35,
+ 0xb2, 0x0d, 0x54, 0x50, 0x6c, 0x4a, 0xdf, 0xb5, 0x99, 0x89, 0x30, 0xb6,
+ 0x77, 0x34, 0x0b, 0x6e, 0x80, 0x42, 0x2f, 0xca, 0xd8, 0xcd, 0x16, 0xab,
+ 0x3c, 0x55, 0x17, 0xba, 0x4b, 0x27, 0x58, 0x86, 0x32, 0xd9, 0x74, 0x14,
+ 0xfa, 0x6c, 0x9c, 0x4a, 0x06, 0x58, 0x2c, 0xdf, 0x6a, 0x8e, 0xfd, 0xc4,
+ 0x79, 0xc8, 0x56, 0xd7, 0x8f, 0xe4, 0x45, 0xeb, 0x91, 0x04, 0x37, 0x1f,
+ 0xad, 0x2a, 0xdc, 0xf6, 0xf5, 0x63, 0x42, 0x14, 0x3d, 0x96, 0x0b, 0x71,
+ 0x7c, 0x83, 0xf9, 0x5b, 0x33, 0x3c, 0x1c, 0x98, 0x72, 0xc9, 0x4c, 0x40,
+ 0xe4, 0xc7, 0x60, 0x70, 0xb6, 0x79, 0x7d, 0x36, 0xf0, 0x32, 0xde, 0x1f,
+ 0xd1, 0x65, 0xcc, 0x4d, 0xb4, 0x6b, 0x2e, 0x4f, 0xde, 0x22, 0x02, 0x87,
+ 0xce, 0x27, 0x75, 0x0a, 0xe7, 0xaf, 0x04, 0xf1, 0x4e, 0x96, 0x99, 0x16,
+ 0xc3, 0x18, 0xd9, 0x9d, 0x25, 0x19, 0x15, 0x91, 0xa3, 0x08, 0xa7, 0x1b,
+ 0x40, 0x09, 0xb1, 0x65, 0x74, 0x7e, 0x74, 0x8d, 0xe5, 0x2d, 0x95, 0xa4,
+ 0x78, 0xa0, 0x0b, 0xc8, 0xf7, 0x8c, 0xdf, 0x1b, 0x5c, 0x02, 0x8a, 0xda,
+ 0xc4, 0x23, 0xdb, 0x0c, 0x45, 0x95, 0x75, 0x3e, 0xbe, 0x52, 0x09, 0x6f,
+ 0xd5, 0xf6, 0xc3, 0x96, 0x8a, 0x74, 0x68, 0xd2, 0x7c, 0xf3, 0x34, 0xb6,
+ 0x83, 0xa7, 0xc1, 0x1b, 0x10, 0xbe, 0x0e, 0x57, 0xc2, 0xca, 0x75, 0xa3,
+ 0xa5, 0x8a, 0x5f, 0xa7, 0x3f, 0xcb, 0xa7, 0x29, 0x7a, 0x02, 0xe9, 0xbc,
+ 0xdc, 0xc0, 0x9b, 0xe7, 0x26, 0xe5, 0xdd, 0x29, 0xb9, 0x14, 0xa7, 0x0e,
+ 0x60, 0xcb, 0x57, 0x04, 0xe5, 0x84, 0xd9, 0x53, 0xd3, 0x87, 0x49, 0x4b,
+ 0x20, 0xfd, 0x0a, 0x43, 0xc2, 0xce, 0x4b, 0x47, 0x60, 0x22, 0x8c, 0x30,
+ 0xfb, 0x83, 0xca, 0x01, 0xcb, 0x7a, 0x8a, 0x6d, 0x5a, 0x83, 0xe5, 0x53,
+ 0x0f, 0x69, 0xe9, 0xc7, 0x2a, 0x48, 0x53, 0x90, 0x15, 0xae, 0xf4, 0xc3,
+ 0xbf, 0xa8, 0x09, 0x8f, 0x6f, 0xd0, 0x22, 0x9b, 0x7a, 0x42, 0xd7, 0xa0,
+ 0x50, 0x04, 0x90, 0xff, 0x48, 0x45, 0xa5, 0xf2, 0x7e, 0xe9, 0x6d, 0xec,
+ 0x42, 0xba, 0xaf, 0x42, 0xef, 0xee, 0x36, 0xdb, 0x99, 0x31, 0x2a, 0x61,
+ 0x1d, 0xac, 0xba, 0x06, 0x0d, 0xa4, 0x89, 0xbe, 0x8d, 0xe1, 0xbe, 0x39,
+ 0xb1, 0xed, 0x13, 0x1a, 0xf8, 0x41, 0xb5, 0xd6, 0x0a, 0x1c, 0x87, 0xc4,
+ 0x18, 0xd4, 0x3d, 0x76, 0x61, 0xbd, 0x6f, 0x31, 0x72, 0x58, 0x89, 0xbd,
+ 0xb6, 0x68, 0xec, 0x7c, 0x3f, 0x58, 0x0b, 0x4c, 0x4c, 0x96, 0x2a, 0x42,
+ 0xcf, 0x68, 0x80, 0xfe, 0xdf, 0xd7, 0x6c, 0x77, 0xa0, 0x7e, 0xc0, 0x0f,
+ 0xa1, 0xd2, 0xc1, 0x07, 0x10, 0xb6, 0xa1, 0xa7, 0xae, 0x9d, 0xb0, 0xfd,
+ 0xae, 0xdf, 0xde, 0x83, 0x97, 0xb7, 0x7a, 0x3e, 0xef, 0x4e, 0x8e, 0xde,
+ 0x18, 0x18, 0x81, 0xdf, 0x03, 0x59, 0xd8, 0x7a, 0x35, 0x87, 0x09, 0x77,
+ 0x81, 0x58, 0xaa, 0xa3, 0x84, 0x4e, 0x47, 0x09, 0x95, 0x68, 0x05, 0xd4,
+ 0xb5, 0x32, 0xe1, 0x1b, 0xd2, 0xda, 0x0c, 0xa1, 0xd5, 0x33, 0xe2, 0x66,
+ 0x1f, 0x88, 0xc7, 0x1a, 0x35, 0x65, 0xae, 0xad, 0x72, 0x08, 0x79, 0x4a,
+ 0x84, 0x3c, 0xcb, 0x87, 0xf9, 0x64, 0xb2, 0x42, 0xba, 0x33, 0x3c, 0x24,
+ 0xd5, 0x40, 0x31, 0xc1, 0x74, 0x70, 0x1b, 0xf1, 0xbd, 0x21, 0xce, 0x1e,
+ 0x8e, 0x14, 0xae, 0x5a, 0x47, 0x0a, 0x13, 0x48, 0x25, 0xf7, 0xee, 0x46,
+ 0xbd, 0x30, 0x5d, 0x6d, 0x06, 0x35, 0xf1, 0xa8, 0x30, 0x9f, 0xdd, 0x31,
+ 0x9a, 0x26, 0x64, 0x80, 0xfd, 0xcb, 0xe8, 0x1f, 0xff, 0xfc, 0xf1, 0xe7,
+ 0x40, 0x77, 0x03, 0x74, 0xf8, 0xdd, 0x70, 0x65, 0x21, 0x3c, 0x3d, 0x17,
+ 0xd4, 0x16, 0x83, 0x13, 0xcf, 0x89, 0x26, 0x1c, 0xcf, 0xa8, 0xca, 0x64,
+ 0x36, 0xe9, 0x3b, 0x39, 0x95, 0xbe, 0x58, 0x44, 0x13, 0x4a, 0x3f, 0x48,
+ 0xdd, 0xea, 0xb0, 0x14, 0x9c, 0xcb, 0x77, 0x11, 0xb9, 0x9b, 0x5a, 0x04,
+ 0xd9, 0x94, 0x69, 0x83, 0xec, 0xcb, 0x27, 0xe1, 0xe1, 0xc7, 0xd8, 0x36,
+ 0x3e, 0xcd, 0x60, 0xfa, 0x87, 0xab, 0x53, 0xe3, 0xea, 0x74, 0xb9, 0xf2,
+ 0x0d, 0x50, 0xea, 0x63, 0x2f, 0x79, 0x4c, 0x86, 0xc0, 0x25, 0x4a, 0x05,
+ 0x7e, 0xe8, 0xcd, 0xcb, 0xe8, 0x70, 0x0e, 0x34, 0x9e, 0xb6, 0x40, 0x76,
+ 0xbc, 0xc3, 0xd7, 0x22, 0x7d, 0xcd, 0xe0, 0x97, 0x4e, 0xf3, 0x02, 0x76,
+ 0x68, 0x2e, 0xd5, 0xb8, 0x52, 0x92, 0x5c, 0x77, 0x66, 0x44, 0x54, 0x60,
+ 0xe2, 0xb9, 0x03, 0xee, 0xf6, 0x44, 0xe3, 0x26, 0x30, 0x36, 0x07, 0x28,
+ 0x8c, 0x94, 0xf5, 0x25, 0x28, 0x8f, 0x30, 0x7b, 0x30, 0xb2, 0xd1, 0x5a,
+ 0x2f, 0xbb, 0x42, 0x52, 0x85, 0xe2, 0xc8, 0x05, 0x61, 0x04, 0x4c, 0x19,
+ 0x22, 0x5b, 0x58, 0xc0, 0x74, 0xdc, 0x15, 0x99, 0x2e, 0xa6, 0x2e, 0xfa,
+ 0x9b, 0xf4, 0x2e, 0xf6, 0xf7, 0x55, 0x17, 0xc0, 0x6e, 0xd0, 0xc8, 0x66,
+ 0xaf, 0x62, 0xc1, 0x46, 0xaa, 0xfd, 0x85, 0x5d, 0x4f, 0xac, 0x31, 0x95,
+ 0xbd, 0x4b, 0x39, 0x8f, 0xc7, 0xa6, 0x90, 0xde, 0x85, 0x0e, 0xa4, 0x32,
+ 0xc4, 0x18, 0xeb, 0x22, 0x93, 0x59, 0x5f, 0xba, 0x6a, 0x53, 0x5a, 0x95,
+ 0x1d, 0x93, 0x18, 0x6e, 0x13, 0xd7, 0xa5, 0xc4, 0x14, 0x01, 0xae, 0x86,
+ 0x15, 0x87, 0x3e, 0x95, 0x95, 0x8b, 0xe7, 0x21, 0x18, 0xeb, 0xbd, 0x16,
+ 0xbc, 0x9c, 0x29, 0x99, 0xfd, 0x62, 0x3f, 0x10, 0x58, 0x32, 0xf5, 0x0e,
+ 0x63, 0x18, 0x12, 0x7c, 0x9b, 0xd2, 0x2b, 0x90, 0x87, 0xf0, 0x81, 0x9f,
+ 0xc8, 0x81, 0x37, 0x86, 0xc3, 0x58, 0xcb, 0x8b, 0xfd, 0xfd, 0x7d, 0x8e,
+ 0xb5, 0x74, 0x4e, 0xe9, 0xc3, 0x57, 0x27, 0xc7, 0x17, 0xef, 0xdf, 0x9f,
+ 0x9c, 0xbf, 0x39, 0x79, 0xa3, 0x19, 0x1f, 0xce, 0x4a, 0x2c, 0x75, 0xf8,
+ 0x2b, 0xc2, 0x2c, 0x41, 0xd8, 0xe7, 0xed, 0xfd, 0xad, 0xde, 0xce, 0xfe,
+ 0x56, 0x04, 0xb4, 0x18, 0x9b, 0x3a, 0xb5, 0x78, 0x16, 0xa3, 0x7d, 0x7b,
+ 0xb3, 0x04, 0x55, 0x0d, 0xa1, 0x3d, 0x2b, 0xc4, 0xdc, 0x20, 0xd7, 0x2b,
+ 0x7a, 0x7b, 0x92, 0x0a, 0xed, 0xe8, 0x40, 0x66, 0x40, 0xbf, 0x63, 0x40,
+ 0xda, 0x6c, 0xc0, 0x52, 0x74, 0x1f, 0x22, 0xd0, 0x9d, 0x2d, 0xfc, 0x50,
+ 0x3f, 0x7a, 0x0b, 0xda, 0xc7, 0x24, 0x7f, 0x60, 0x5a, 0x3c, 0xbe, 0x01,
+ 0xa5, 0x34, 0xf1, 0x43, 0x95, 0xf5, 0xf7, 0xf1, 0xf5, 0x5d, 0x7e, 0xfd,
+ 0x77, 0x8c, 0xd1, 0xef, 0xbf, 0xaa, 0x1b, 0x96, 0x70, 0x91, 0x09, 0x15,
+ 0x5e, 0x4b, 0x12, 0x5b, 0xf0, 0xfd, 0x07, 0x6c, 0x8e, 0xbf, 0x3b, 0xba,
+ 0xc4, 0xa7, 0xc1, 0x2c, 0xbf, 0xf8, 0xe1, 0x2f, 0xb6, 0xcc, 0xf3, 0x6e,
+ 0x5b, 0xb3, 0x19, 0xa5, 0x92, 0x95, 0x1a, 0xf1, 0x65, 0x7e, 0xd0, 0xdb,
+ 0x2a, 0xb3, 0xc6, 0x20, 0x54, 0x21, 0x43, 0x2b, 0xc4, 0x0c, 0x54, 0xd8,
+ 0x3a, 0xee, 0x91, 0x25, 0x87, 0x56, 0x94, 0x72, 0xc5, 0x43, 0x75, 0xfd,
+ 0xc0, 0xca, 0x71, 0x1a, 0x0f, 0x29, 0xf7, 0x7d, 0x48, 0xb3, 0x31, 0x37,
+ 0xa6, 0xad, 0x39, 0x66, 0xab, 0x62, 0x99, 0x84, 0xbc, 0xa6, 0x2b, 0x31,
+ 0x76, 0x50, 0xa9, 0x2d, 0xd2, 0x79, 0x5c, 0xa4, 0xdc, 0x7e, 0x1e, 0x09,
+ 0xfc, 0x9e, 0x7b, 0x65, 0x72, 0xaa, 0x14, 0xc5, 0xbe, 0x2c, 0x98, 0x6c,
+ 0xee, 0xa5, 0x9d, 0x9a, 0x5e, 0x0e, 0x48, 0xc4, 0x0c, 0x6b, 0x24, 0x31,
+ 0x4a, 0xde, 0xac, 0x95, 0x30, 0x74, 0x75, 0xfb, 0xdf, 0x28, 0x14, 0x6d,
+ 0xa0, 0x73, 0xd1, 0xdb, 0xd3, 0xb3, 0x93, 0x8d, 0xe8, 0x6d, 0x52, 0x49,
+ 0x89, 0x93, 0x66, 0x18, 0xa3, 0xc8, 0xff, 0x03, 0x29, 0x58, 0x06, 0x94,
+ 0x50, 0x6a, 0x84, 0x83, 0xb9, 0x60, 0xe2, 0x83, 0x23, 0x65, 0x43, 0xeb,
+ 0xa5, 0xf8, 0x70, 0x68, 0x89, 0x18, 0x8f, 0xd3, 0xdc, 0x32, 0x8d, 0x6f,
+ 0xca, 0xc9, 0x07, 0xf2, 0x6e, 0x15, 0xe7, 0xa1, 0xef, 0x20, 0x9e, 0xe5,
+ 0x6e, 0x0a, 0x01, 0x4e, 0x5a, 0x72, 0x9e, 0x35, 0x5e, 0x9c, 0x96, 0x8b,
+ 0x19, 0x72, 0x83, 0x20, 0xca, 0xcb, 0x2c, 0xb1, 0x95, 0x7d, 0x44, 0xf9,
+ 0xdc, 0x29, 0x5e, 0x8c, 0x1e, 0x62, 0xa8, 0xb8, 0x5e, 0x67, 0xe3, 0xde,
+ 0xe9, 0xc6, 0x61, 0xda, 0x09, 0xff, 0xb9, 0xf9, 0x55, 0x10, 0x7c, 0x4c,
+ 0x1b, 0x59, 0x50, 0xcf, 0x5c, 0x79, 0x83, 0x28, 0x8a, 0x7b, 0xa8, 0x8b,
+ 0x90, 0x57, 0xb5, 0xb3, 0x46, 0x09, 0x01, 0xf5, 0x95, 0x7c, 0x77, 0x6a,
+ 0xee, 0xfe, 0x45, 0xfa, 0x34, 0xa9, 0xfe, 0x80, 0x25, 0xe0, 0x56, 0xba,
+ 0x70, 0x97, 0x5e, 0x93, 0x65, 0x1c, 0x85, 0x5a, 0xa2, 0x31, 0x57, 0x96,
+ 0x96, 0xbc, 0xac, 0x4d, 0x61, 0xb6, 0x7e, 0xac, 0xe9, 0xfa, 0x3a, 0x5f,
+ 0x7c, 0xec, 0x46, 0xc0, 0xab, 0xc9, 0x97, 0xc2, 0x55, 0x64, 0x65, 0xd0,
+ 0xe5, 0x2f, 0xe5, 0x6d, 0x12, 0xda, 0xa3, 0x96, 0xaa, 0xec, 0x94, 0x61,
+ 0x1d, 0x7a, 0x89, 0x0a, 0x1d, 0x57, 0x76, 0x51, 0x1f, 0x82, 0x82, 0xf1,
+ 0x32, 0x03, 0xda, 0x92, 0x7c, 0xdd, 0x65, 0x41, 0x4d, 0x9d, 0xdd, 0xfd,
+ 0x4c, 0xdd, 0x12, 0xf5, 0xd5, 0x45, 0xd8, 0x3b, 0xd2, 0x29, 0xb1, 0xef,
+ 0x07, 0x56, 0xbd, 0x8f, 0x6e, 0x53, 0x2a, 0x44, 0x5c, 0x92, 0x3a, 0x17,
+ 0x67, 0x5a, 0x6f, 0xc5, 0xd3, 0x34, 0x38, 0xef, 0x40, 0x6e, 0x7d, 0x2a,
+ 0x67, 0x08, 0x6b, 0x9f, 0x0c, 0x59, 0x86, 0x4e, 0x03, 0x44, 0x61, 0xd5,
+ 0xf9, 0xcc, 0xa8, 0xa2, 0xc1, 0xdc, 0x16, 0x55, 0xd4, 0xb0, 0x1e, 0x92,
+ 0x74, 0xc5, 0x00, 0x2e, 0x74, 0x42, 0x0d, 0x97, 0xc9, 0xe5, 0x77, 0x2f,
+ 0x10, 0x63, 0x6b, 0x45, 0xc2, 0xd0, 0xf4, 0x7d, 0xb0, 0x44, 0xe7, 0x58,
+ 0x12, 0xa0, 0xf8, 0xcd, 0xb8, 0x64, 0xd9, 0x1e, 0xe0, 0x6d, 0xd3, 0xf4,
+ 0x2e, 0x94, 0x65, 0x81, 0xf9, 0x11, 0x32, 0x31, 0xca, 0xd2, 0xb0, 0xed,
+ 0x62, 0x35, 0xed, 0xd8, 0x84, 0xb4, 0xd9, 0x2f, 0x8d, 0x38, 0x80, 0xb2,
+ 0xb3, 0xde, 0x0d, 0x9e, 0xa1, 0xc6, 0x8a, 0x80, 0x5e, 0x19, 0x37, 0xe8,
+ 0x7d, 0x07, 0x9a, 0xcf, 0x41, 0xc7, 0x20, 0xaa, 0x93, 0x5f, 0x95, 0xb8,
+ 0x63, 0x8d, 0x72, 0xa4, 0x65, 0x74, 0x2f, 0xd8, 0x77, 0x4c, 0x34, 0xf7,
+ 0x4a, 0x19, 0x97, 0x29, 0xb8, 0xf1, 0xd3, 0x9a, 0x4d, 0x01, 0x0c, 0x57,
+ 0x8c, 0xfa, 0x88, 0xf1, 0x38, 0xa5, 0x1f, 0x7a, 0xc7, 0xf4, 0xf1, 0xde,
+ 0x3b, 0x1a, 0xee, 0x8b, 0x8e, 0x71, 0xf8, 0x36, 0x7f, 0x75, 0xe0, 0x37,
+ 0x0a, 0xb6, 0x7e, 0x43, 0x36, 0x3c, 0x96, 0x5a, 0x95, 0x41, 0x89, 0x24,
+ 0x32, 0x41, 0xee, 0xc1, 0x05, 0x57, 0x64, 0x53, 0x0f, 0x9c, 0xa2, 0x29,
+ 0xa5, 0xdf, 0x65, 0xd3, 0xa4, 0x1c, 0x80, 0x14, 0x59, 0x10, 0x98, 0xce,
+ 0xb8, 0x97, 0x4f, 0x7a, 0x94, 0x21, 0x0d, 0xcc, 0xff, 0x16, 0x93, 0x91,
+ 0x9c, 0x5b, 0x47, 0x00, 0x21, 0x84, 0xbd, 0x3d, 0x1e, 0x87, 0x54, 0x73,
+ 0x2e, 0x64, 0x44, 0xad, 0x43, 0x08, 0x5f, 0x0b, 0x2d, 0xf8, 0x20, 0x0f,
+ 0xc4, 0x2b, 0x4f, 0xaf, 0x9b, 0x2e, 0x54, 0x88, 0xcc, 0x25, 0x05, 0x11,
+ 0x9e, 0x3f, 0x8d, 0xca, 0x23, 0xba, 0xac, 0xbd, 0xd3, 0xaa, 0xc9, 0x86,
+ 0x9b, 0xb3, 0x2b, 0x97, 0xfc, 0xcf, 0xcb, 0x05, 0xa9, 0xac, 0x88, 0xd8,
+ 0xe9, 0x79, 0x5f, 0xb4, 0x48, 0x84, 0xb0, 0x38, 0x41, 0xf8, 0xef, 0xf7,
+ 0xb7, 0xba, 0x5e, 0xa0, 0xbe, 0x22, 0x63, 0x3f, 0xb3, 0x59, 0x42, 0xf0,
+ 0x30, 0xf1, 0xc8, 0x5e, 0xa8, 0xba, 0xb6, 0xac, 0x1e, 0x91, 0x5f, 0x9b,
+ 0x62, 0x5a, 0x4a, 0x2d, 0xb6, 0x75, 0x0f, 0x36, 0xa7, 0x87, 0xb6, 0x50,
+ 0xd8, 0x26, 0x57, 0xd1, 0x86, 0x20, 0x4e, 0x25, 0x63, 0xeb, 0xab, 0x5e,
+ 0xb3, 0x4d, 0xa6, 0xe9, 0x76, 0xe6, 0x56, 0x6f, 0x38, 0x7d, 0xcb, 0x5a,
+ 0x3d, 0x4d, 0x84, 0x26, 0x7a, 0xa4, 0xad, 0x6f, 0x7a, 0xb0, 0xa9, 0xd2,
+ 0xd1, 0xb5, 0x97, 0xe0, 0x0f, 0x19, 0xb0, 0x43, 0x81, 0x43, 0xcb, 0xf6,
+ 0x3d, 0x63, 0x90, 0xdd, 0x97, 0xb8, 0x63, 0xa6, 0xb5, 0x80, 0xf6, 0xd0,
+ 0xb1, 0xf2, 0x81, 0xc8, 0xd6, 0xb9, 0x4b, 0xcd, 0x3d, 0x43, 0xae, 0x82,
+ 0x9c, 0x20, 0xd3, 0x9c, 0x6f, 0x6a, 0xc8, 0xfe, 0xf0, 0xd8, 0x9a, 0x5a,
+ 0xdc, 0x92, 0xf3, 0x4b, 0xd7, 0xe6, 0x2d, 0x2a, 0xf6, 0xbd, 0x73, 0x38,
+ 0x86, 0x83, 0xe8, 0x3f, 0xf2, 0x84, 0x6b, 0x56, 0x9f, 0x28, 0x59, 0xfd,
+ 0xfe, 0xe8, 0xea, 0xfc, 0xf4, 0xfc, 0x9b, 0x03, 0xc3, 0xe3, 0x90, 0xdf,
+ 0x35, 0x7b, 0x5a, 0x18, 0xde, 0x4d, 0xbf, 0x65, 0xe4, 0x56, 0xf4, 0xfe,
+ 0xb4, 0x61, 0x6c, 0x63, 0x2c, 0x93, 0xd8, 0x33, 0x3b, 0x2f, 0x8b, 0x84,
+ 0xe3, 0x22, 0x6c, 0x8b, 0x6a, 0xe5, 0x84, 0x94, 0x6b, 0x92, 0xa8, 0xa4,
+ 0xc6, 0x6d, 0x01, 0xc0, 0x86, 0xde, 0x19, 0x9e, 0xc9, 0x2c, 0xaf, 0xf5,
+ 0x88, 0x42, 0xa2, 0x9c, 0xd1, 0xf1, 0xe7, 0x2e, 0x05, 0xb0, 0xc5, 0xac,
+ 0x1d, 0xd5, 0xd9, 0xe9, 0x13, 0x08, 0xde, 0x32, 0x46, 0xb6, 0x7a, 0x5e,
+ 0x4d, 0x7f, 0x1c, 0x69, 0x72, 0x51, 0xd2, 0x91, 0x95, 0x29, 0x39, 0x1b,
+ 0xcc, 0x96, 0x68, 0x8e, 0x57, 0xc0, 0x0f, 0x22, 0xf0, 0xd2, 0xf1, 0x92,
+ 0xef, 0x0b, 0xa3, 0x93, 0xc9, 0x4f, 0x6d, 0x5d, 0x86, 0xd9, 0x81, 0x67,
+ 0xa7, 0x39, 0xdb, 0x3c, 0x67, 0xd6, 0xe7, 0xd9, 0x40, 0x74, 0x58, 0x16,
+ 0xfc, 0x89, 0xa2, 0x24, 0x88, 0x43, 0x32, 0x4b, 0x6c, 0x55, 0x92, 0xd1,
+ 0x75, 0x6e, 0x58, 0xd7, 0x99, 0x2d, 0x3c, 0xb0, 0x3d, 0x4c, 0x33, 0x8f,
+ 0xf0, 0x37, 0xea, 0xd4, 0xc1, 0xe0, 0x15, 0x49, 0x60, 0x35, 0x4b, 0x6a,
+ 0xe0, 0x76, 0xa6, 0x35, 0x24, 0x33, 0x75, 0x5f, 0x9e, 0x22, 0xde, 0x53,
+ 0xc2, 0x78, 0x63, 0x6e, 0x05, 0x0c, 0x7c, 0x1d, 0xf6, 0x78, 0xb1, 0x1c,
+ 0xce, 0xc7, 0xfb, 0xd1, 0x21, 0xfc, 0xc7, 0x53, 0xb2, 0x28, 0x67, 0x74,
+ 0x70, 0x0c, 0x8a, 0x16, 0x26, 0xb8, 0xa0, 0xbc, 0x60, 0xc8, 0x1b, 0xa7,
+ 0x8b, 0xc4, 0xee, 0x0e, 0xcc, 0xf4, 0x21, 0x56, 0x68, 0x4b, 0xd0, 0x08,
+ 0xa7, 0x69, 0xc5, 0x79, 0x7a, 0x2d, 0xb8, 0x41, 0x4e, 0x6a, 0x03, 0x9d,
+ 0xf9, 0xf6, 0xce, 0xe7, 0x11, 0x16, 0x1f, 0xbc, 0x7f, 0xb3, 0x1f, 0x8d,
+ 0x6e, 0x92, 0xd1, 0x6d, 0xb9, 0x9c, 0x2b, 0x3b, 0xc6, 0x3d, 0x05, 0xf3,
+ 0x00, 0xe7, 0xe9, 0x21, 0x3e, 0xc0, 0xc4, 0x67, 0xe9, 0x08, 0x4b, 0xff,
+ 0xba, 0xb5, 0xe8, 0xd4, 0x44, 0xa3, 0x53, 0x8e, 0x1d, 0x6a, 0xc4, 0x06,
+ 0xa5, 0x0b, 0x70, 0x4e, 0x4d, 0x20, 0x78, 0x01, 0x7b, 0x00, 0x1f, 0x2f,
+ 0xb9, 0x9b, 0xf5, 0x4a, 0x97, 0xed, 0xcb, 0xba, 0xd7, 0x1b, 0x2f, 0xf6,
+ 0x56, 0xff, 0x55, 0x4b, 0x7f, 0x8e, 0x5a, 0x6b, 0x0e, 0xac, 0x55, 0x32,
+ 0xd5, 0x76, 0x64, 0x0f, 0xa0, 0x96, 0x8f, 0x93, 0x44, 0x40, 0x28, 0x0d,
+ 0xe3, 0x79, 0x1f, 0xc7, 0x27, 0x37, 0xf1, 0x09, 0xe9, 0x2d, 0x47, 0x59,
+ 0x6c, 0x09, 0x61, 0x52, 0x30, 0x69, 0x51, 0x9a, 0x90, 0x89, 0x02, 0x1a,
+ 0x84, 0x33, 0x0a, 0xc1, 0xfa, 0x4a, 0x9b, 0xa9, 0xff, 0x56, 0x97, 0x8d,
+ 0x65, 0x31, 0x52, 0x42, 0xeb, 0xa0, 0x39, 0x68, 0x2d, 0x21, 0xe1, 0xb5,
+ 0xa1, 0x4d, 0xe1, 0x11, 0x99, 0xf9, 0x2e, 0xc7, 0xa5, 0xed, 0x71, 0x94,
+ 0x8c, 0x46, 0x48, 0xce, 0x73, 0xec, 0x12, 0xcb, 0x16, 0x75, 0x7e, 0x9f,
+ 0x4d, 0x0b, 0xf4, 0x8f, 0x50, 0x51, 0x58, 0x1c, 0x8a, 0x65, 0x84, 0x10,
+ 0x4c, 0xed, 0xd8, 0x60, 0x71, 0xbd, 0x40, 0x4e, 0x6f, 0x76, 0x05, 0xf3,
+ 0xed, 0x39, 0x88, 0xcd, 0x15, 0xcb, 0x6c, 0xb3, 0x3b, 0x47, 0xb4, 0xd5,
+ 0x95, 0x63, 0xda, 0xee, 0x6f, 0x3d, 0xe7, 0x98, 0x90, 0x88, 0x6a, 0xa7,
+ 0x03, 0xef, 0xb9, 0x5a, 0xb2, 0x26, 0x91, 0x03, 0xb1, 0xb7, 0x64, 0xdf,
+ 0xc1, 0x42, 0xc5, 0x7f, 0x95, 0x8c, 0x6b, 0x43, 0xad, 0xe4, 0x39, 0x6e,
+ 0xf3, 0x36, 0x9e, 0xee, 0xb6, 0x84, 0x61, 0xf0, 0x5f, 0x3b, 0x4d, 0xa2,
+ 0x83, 0x5f, 0xff, 0xca, 0xd5, 0x6c, 0xff, 0x82, 0x52, 0x8d, 0xad, 0xae,
+ 0xfd, 0xde, 0x96, 0x69, 0x89, 0xc0, 0x13, 0xb2, 0xf7, 0xa2, 0x31, 0x9c,
+ 0x0f, 0x79, 0x4f, 0x2f, 0x60, 0xb9, 0x4b, 0x5e, 0xf4, 0x50, 0x65, 0x87,
+ 0xc3, 0xf2, 0x54, 0xa8, 0xe0, 0xf4, 0xe1, 0x78, 0x4b, 0x54, 0x6c, 0x51,
+ 0xa7, 0x25, 0xe2, 0xa4, 0x98, 0x11, 0xa3, 0x9a, 0x19, 0x93, 0x3e, 0x98,
+ 0xb6, 0x4f, 0x04, 0xb2, 0xe3, 0xa8, 0xe8, 0xf4, 0x03, 0xdc, 0xd4, 0xe8,
+ 0xc3, 0x82, 0x68, 0x10, 0x63, 0xdc, 0x95, 0x05, 0xfe, 0xa7, 0xd9, 0x45,
+ 0x6d, 0xb3, 0xb3, 0xd8, 0x5f, 0x1a, 0x93, 0xa7, 0x62, 0xcd, 0x52, 0xbf,
+ 0x53, 0x62, 0x15, 0x2c, 0xaa, 0xfc, 0xd2, 0x22, 0x8e, 0x01, 0xf1, 0xed,
+ 0x24, 0x43, 0xb0, 0xbe, 0x7a, 0xb1, 0x40, 0xd5, 0x94, 0x51, 0x6a, 0xd9,
+ 0xf4, 0x08, 0x8f, 0xce, 0xea, 0xbe, 0xf6, 0xec, 0xb3, 0xf0, 0xf4, 0x01,
+ 0xff, 0x4a, 0x6a, 0xbb, 0x84, 0x37, 0x80, 0xfd, 0xbc, 0x00, 0x50, 0xf0,
+ 0x38, 0x9e, 0xdd, 0x02, 0xc1, 0xc3, 0xef, 0x6a, 0x34, 0xb1, 0xe0, 0xb5,
+ 0xf4, 0x9f, 0x47, 0xdc, 0x5b, 0xdd, 0xe0, 0xec, 0x90, 0xda, 0x5c, 0xe2,
+ 0xaf, 0x81, 0xe1, 0xbd, 0x0a, 0x10, 0xd7, 0xaf, 0xba, 0x0b, 0x3b, 0xab,
+ 0xc2, 0xa0, 0xfe, 0x1d, 0xdc, 0xed, 0xeb, 0xd7, 0xda, 0xf6, 0xca, 0x63,
+ 0x67, 0xad, 0xed, 0x23, 0x9e, 0xb7, 0x5b, 0x2d, 0x7b, 0x63, 0xf6, 0xae,
+ 0xb1, 0x5b, 0x6d, 0x47, 0xab, 0x57, 0xd5, 0xe3, 0x57, 0x2d, 0x57, 0x75,
+ 0x37, 0xbc, 0x9b, 0x46, 0x43, 0x6d, 0xf8, 0x3c, 0xd1, 0x65, 0x56, 0xa4,
+ 0x64, 0x12, 0xc7, 0xb3, 0x7e, 0xf4, 0xc6, 0xe6, 0xb4, 0x10, 0xf0, 0x9e,
+ 0x67, 0xac, 0x8e, 0x97, 0x2d, 0x99, 0x1f, 0xab, 0x4f, 0x6b, 0x57, 0x92,
+ 0x7a, 0x6c, 0xe2, 0x02, 0xc9, 0x74, 0x29, 0xca, 0xca, 0x3d, 0x40, 0x4c,
+ 0xf1, 0xdc, 0x68, 0xf8, 0x52, 0xc2, 0x74, 0x98, 0x9a, 0x25, 0x01, 0x18,
+ 0xda, 0xfa, 0x5d, 0x37, 0x66, 0x6e, 0xd4, 0x6b, 0x2c, 0x21, 0x08, 0x79,
+ 0x8a, 0xe8, 0x8b, 0x9a, 0xde, 0x4e, 0x12, 0x51, 0x15, 0x4a, 0xf8, 0xc8,
+ 0x5d, 0x1a, 0x47, 0x47, 0xb3, 0xaa, 0x37, 0xf8, 0x6e, 0xc4, 0x11, 0xb6,
+ 0x5a, 0x78, 0xca, 0x6b, 0xf2, 0x4a, 0x5e, 0x15, 0xea, 0xcf, 0x55, 0x4a,
+ 0xd2, 0x6a, 0x5a, 0x8c, 0x96, 0x73, 0xc2, 0x40, 0x25, 0xb2, 0x32, 0x7d,
+ 0x22, 0xf0, 0x20, 0x2d, 0xa5, 0x71, 0xba, 0xbd, 0x0f, 0x7e, 0x18, 0xdf,
+ 0x96, 0xba, 0x24, 0x29, 0xd2, 0xe1, 0x3a, 0x0c, 0x33, 0xe7, 0x7a, 0x7b,
+ 0xb5, 0x80, 0x08, 0x6a, 0x58, 0x76, 0x0c, 0xd3, 0x8b, 0x28, 0x30, 0xff,
+ 0xf9, 0xe1, 0xf4, 0xb8, 0xe6, 0xdd, 0xe7, 0x38, 0x4a, 0xb4, 0x32, 0x5a,
+ 0xc1, 0xb0, 0xb2, 0xf2, 0xe4, 0x04, 0x75, 0x58, 0xcd, 0xc6, 0xd5, 0xc4,
+ 0xb9, 0xda, 0xf1, 0xe6, 0x59, 0x40, 0xa4, 0x82, 0xbe, 0xf0, 0xcb, 0xee,
+ 0xe8, 0x8e, 0xde, 0xd1, 0xdd, 0xdf, 0xfa, 0x8e, 0xee, 0xfe, 0x36, 0x77,
+ 0x54, 0x39, 0x88, 0xf3, 0x77, 0xf7, 0xba, 0x7a, 0x66, 0x29, 0x5d, 0x5f,
+ 0xd7, 0xe1, 0x5c, 0xcf, 0x19, 0xe8, 0x31, 0x78, 0x44, 0x4f, 0xfc, 0x16,
+ 0x3d, 0x2e, 0x90, 0x0d, 0xd5, 0x86, 0x45, 0xe2, 0x38, 0x55, 0xf0, 0xc7,
+ 0x6e, 0x74, 0xca, 0xc0, 0xe6, 0x94, 0x9d, 0x24, 0xaf, 0x9f, 0x71, 0x7d,
+ 0xad, 0xf8, 0xbd, 0xd5, 0xe7, 0x1f, 0xa8, 0xc0, 0x4f, 0x47, 0x08, 0xaf,
+ 0x66, 0x3d, 0xee, 0x68, 0x31, 0xab, 0xce, 0x58, 0x2c, 0x29, 0xa4, 0x10,
+ 0x1d, 0x2d, 0xb0, 0x44, 0x16, 0x34, 0x8e, 0x07, 0xdb, 0x1f, 0x19, 0x49,
+ 0xcc, 0xcf, 0x45, 0xc2, 0x4d, 0x46, 0x0f, 0xae, 0x64, 0xde, 0x37, 0xa7,
+ 0x43, 0xa3, 0x33, 0xfc, 0xe1, 0x0c, 0x89, 0xbf, 0x60, 0xc3, 0x71, 0x07,
+ 0x08, 0x7c, 0xea, 0xb5, 0x55, 0x18, 0x3e, 0x56, 0x81, 0x32, 0x30, 0x5c,
+ 0x35, 0xee, 0xc2, 0x7a, 0x29, 0x59, 0xa6, 0x7b, 0xb0, 0x8f, 0x1b, 0x5d,
+ 0x6c, 0x40, 0xbf, 0xa0, 0x1d, 0xc0, 0x3a, 0x1d, 0x63, 0x5c, 0x61, 0x99,
+ 0x5a, 0x3a, 0x45, 0x8f, 0x55, 0xce, 0xd7, 0xd8, 0xb3, 0x68, 0xd0, 0xbb,
+ 0x2d, 0x69, 0x8e, 0x9a, 0x43, 0x28, 0x70, 0xb3, 0xf5, 0x12, 0xd5, 0xb4,
+ 0x4b, 0x9d, 0xe7, 0xc8, 0x37, 0xdd, 0x0c, 0x1e, 0x89, 0xc7, 0x9a, 0xed,
+ 0x5f, 0xd5, 0x69, 0x14, 0xd6, 0x5f, 0x2c, 0x5e, 0x61, 0x5c, 0xd2, 0xa2,
+ 0x83, 0x02, 0x7b, 0xf4, 0x64, 0xa0, 0xd7, 0x4f, 0xfd, 0xc5, 0x11, 0x79,
+ 0x36, 0xf9, 0x0b, 0xe2, 0x80, 0x62, 0x33, 0xdf, 0x40, 0x44, 0xa3, 0x97,
+ 0x08, 0xfd, 0xf9, 0xdc, 0x69, 0xa5, 0xeb, 0xc3, 0xea, 0x19, 0xdf, 0xb3,
+ 0x05, 0x8a, 0xae, 0xdd, 0x58, 0x05, 0x77, 0xee, 0xf7, 0xfb, 0x01, 0x38,
+ 0x8b, 0xbb, 0x34, 0xb9, 0xaf, 0xb9, 0xe2, 0x65, 0x66, 0x5d, 0xd3, 0x20,
+ 0x85, 0x3d, 0x40, 0x77, 0xb8, 0x43, 0x30, 0xe4, 0x10, 0x91, 0x34, 0x5b,
+ 0xca, 0x49, 0xec, 0x95, 0x77, 0x9f, 0x76, 0xb6, 0xf9, 0x96, 0xb7, 0xb9,
+ 0x0c, 0xd5, 0x83, 0x32, 0x30, 0xb2, 0xed, 0xe7, 0xd0, 0x45, 0x8f, 0x48,
+ 0xf1, 0x18, 0x51, 0xe3, 0x0e, 0xcb, 0xd3, 0xe8, 0xfa, 0x73, 0xfd, 0x41,
+ 0x5a, 0x32, 0x2e, 0x31, 0xe3, 0x0a, 0xf9, 0xd1, 0x62, 0xfe, 0x4c, 0x9d,
+ 0x1f, 0x08, 0x3f, 0x57, 0xe9, 0x05, 0x62, 0x6f, 0x84, 0x8e, 0x28, 0x12,
+ 0x4e, 0xda, 0x8c, 0x80, 0x5c, 0x31, 0x81, 0xd4, 0x23, 0x39, 0x11, 0xa7,
+ 0x73, 0x89, 0x93, 0x29, 0x63, 0xdb, 0xc9, 0x44, 0xba, 0xc0, 0x70, 0xbc,
+ 0x57, 0xcf, 0xd5, 0xe5, 0xd3, 0xee, 0x4a, 0xc0, 0x3a, 0x92, 0xd6, 0x6c,
+ 0xe2, 0x8b, 0xb5, 0x78, 0xcb, 0x4d, 0x1b, 0xd1, 0xd6, 0xa7, 0x5a, 0x4c,
+ 0x2d, 0xeb, 0xd5, 0x66, 0xf0, 0x3e, 0x5a, 0x99, 0x0c, 0x5e, 0xba, 0x40,
+ 0xd9, 0x1e, 0xd4, 0x80, 0x6d, 0x1e, 0x84, 0x03, 0x73, 0x83, 0x9f, 0xe0,
+ 0x11, 0xb3, 0x5e, 0xc1, 0xa8, 0x17, 0xd8, 0x82, 0x6a, 0x89, 0x89, 0x27,
+ 0x74, 0xf7, 0xa5, 0x7a, 0x5d, 0x0a, 0xd6, 0x9b, 0x60, 0x26, 0x06, 0x12,
+ 0x0e, 0x77, 0xbf, 0x7f, 0x13, 0x3f, 0x3c, 0xf4, 0xcb, 0x64, 0x13, 0xa8,
+ 0xb6, 0xdc, 0x2c, 0xcb, 0x19, 0x7e, 0xb4, 0x24, 0xf4, 0xb5, 0x95, 0xdd,
+ 0x2d, 0x1f, 0x1e, 0x0d, 0x01, 0x09, 0x73, 0x1e, 0xc5, 0xf8, 0x6a, 0x8d,
+ 0xd9, 0xda, 0xf6, 0x96, 0xdc, 0x20, 0xa6, 0x99, 0x32, 0xcc, 0xc0, 0xd3,
+ 0x04, 0xa1, 0xee, 0x56, 0xdb, 0x32, 0x6b, 0xb0, 0xc9, 0x59, 0x66, 0x1c,
+ 0x8b, 0xa7, 0x8f, 0x50, 0xd3, 0x45, 0x5b, 0x69, 0x87, 0xdc, 0x55, 0x27,
+ 0x34, 0x0a, 0x9b, 0x62, 0x0a, 0x20, 0x40, 0x3e, 0x58, 0x58, 0x1d, 0xee,
+ 0xf8, 0x84, 0x96, 0x74, 0x7e, 0x1b, 0x80, 0x7c, 0x6a, 0x73, 0x5b, 0x3a,
+ 0x4b, 0xc3, 0x52, 0x91, 0x03, 0x0b, 0x30, 0x78, 0x7f, 0x7f, 0xdf, 0x5f,
+ 0xe5, 0xb7, 0xfc, 0x97, 0x63, 0xe0, 0xf5, 0xe1, 0x2e, 0x80, 0x6a, 0xcf,
+ 0xd2, 0x6c, 0xf9, 0x10, 0x39, 0x18, 0x2f, 0xa6, 0x19, 0x90, 0x06, 0xe6,
+ 0xa2, 0xef, 0xae, 0xde, 0x9a, 0x46, 0xd8, 0x8a, 0xae, 0x81, 0x9e, 0xdf,
+ 0xd2, 0xd7, 0xda, 0x92, 0x94, 0x71, 0x77, 0x10, 0x34, 0xfa, 0xf8, 0xe8,
+ 0xf2, 0xe3, 0xf9, 0xc9, 0xf5, 0xc7, 0xab, 0xa3, 0xef, 0x71, 0x0b, 0xd9,
+ 0x2b, 0x03, 0xf2, 0x0a, 0xe3, 0x01, 0x45, 0x9e, 0x63, 0x53, 0xbb, 0xf7,
+ 0x54, 0x36, 0x98, 0x66, 0x04, 0xaf, 0x12, 0x6c, 0xb3, 0x6e, 0x30, 0xa3,
+ 0x64, 0x9e, 0x30, 0x97, 0x83, 0xa8, 0xb6, 0x5f, 0xb7, 0x49, 0x91, 0x25,
+ 0xb3, 0x7e, 0x5e, 0x4c, 0x91, 0x0a, 0x37, 0xdf, 0x08, 0xff, 0x0c, 0x0e,
+ 0xb7, 0x29, 0x59, 0x0d, 0x08, 0x41, 0x76, 0x57, 0x4c, 0x10, 0xb1, 0xe4,
+ 0xb9, 0x3d, 0x0a, 0x1d, 0xd2, 0xdc, 0x23, 0x06, 0xb8, 0xb8, 0xdb, 0x5b,
+ 0xa1, 0xde, 0xd5, 0x3b, 0xc5, 0x4a, 0x8f, 0x37, 0xa2, 0x20, 0xf2, 0xfd,
+ 0xb8, 0xb9, 0x2a, 0x5c, 0x9d, 0x39, 0x7b, 0xec, 0x06, 0x00, 0x10, 0x48,
+ 0x9d, 0xcb, 0x0d, 0x94, 0x04, 0x15, 0xb8, 0x61, 0x92, 0xcd, 0xca, 0x16,
+ 0xf7, 0x46, 0x2b, 0x6a, 0xfa, 0x10, 0xda, 0x7c, 0x0f, 0xbd, 0x17, 0xbe,
+ 0x65, 0x88, 0x4d, 0x17, 0x9d, 0x35, 0xbf, 0x90, 0x35, 0xbf, 0xf8, 0x97,
+ 0xd6, 0xfc, 0xe2, 0x5f, 0x58, 0xf3, 0xde, 0x6f, 0xbc, 0xe6, 0xbd, 0xe0,
+ 0x9a, 0x9d, 0xaf, 0xf4, 0xfe, 0x8a, 0x6b, 0xfe, 0xeb, 0x32, 0xbb, 0xed,
+ 0xc1, 0x7c, 0x51, 0x0a, 0x4b, 0x8f, 0xb5, 0xb2, 0xc5, 0x64, 0x73, 0x1b,
+ 0xed, 0x90, 0x6f, 0xdf, 0x02, 0x0c, 0x3b, 0x3d, 0xe3, 0x62, 0x31, 0x15,
+ 0x38, 0xc4, 0x5f, 0xf9, 0x4d, 0x2d, 0x3c, 0x03, 0x21, 0xc5, 0x7a, 0xdf,
+ 0x72, 0x84, 0x7e, 0x0a, 0xd4, 0xec, 0x3b, 0x32, 0x1b, 0x1d, 0xb6, 0xa3,
+ 0x7d, 0x57, 0xe8, 0xa6, 0xc7, 0x3e, 0xce, 0xd1, 0x88, 0xdc, 0x64, 0x74,
+ 0x27, 0x4d, 0x0c, 0xdc, 0xf6, 0x65, 0x27, 0xa3, 0x83, 0x31, 0xa0, 0x74,
+ 0x60, 0x8e, 0x0b, 0x62, 0xcc, 0xc7, 0xe7, 0x19, 0xd7, 0x8f, 0x0b, 0x1c,
+ 0x10, 0x64, 0x73, 0x01, 0x32, 0x98, 0x13, 0x51, 0xa8, 0x99, 0x78, 0x64,
+ 0x26, 0x19, 0x35, 0x26, 0x28, 0xd1, 0x8e, 0x9b, 0xe4, 0x71, 0xcd, 0x53,
+ 0x18, 0x46, 0xb3, 0x1c, 0xf9, 0xcd, 0x78, 0xb5, 0xf1, 0x31, 0xb4, 0x0d,
+ 0xee, 0x58, 0x5e, 0x34, 0x3a, 0xde, 0xb9, 0x72, 0xe3, 0x36, 0x49, 0x16,
+ 0xf1, 0x8c, 0xa0, 0x35, 0x30, 0xf7, 0xa1, 0xad, 0x51, 0x56, 0x2d, 0x39,
+ 0x52, 0x0b, 0x07, 0xe8, 0x8d, 0x5a, 0xe6, 0x19, 0xf1, 0x39, 0x3e, 0x48,
+ 0xac, 0x94, 0x89, 0xd2, 0x31, 0xd5, 0xba, 0x86, 0xfb, 0xa6, 0xd8, 0xa6,
+ 0x0c, 0x66, 0x12, 0xd8, 0x7a, 0x23, 0x1f, 0x0a, 0x06, 0x8c, 0xf9, 0x84,
+ 0xe2, 0xc8, 0x61, 0x6a, 0xce, 0x5d, 0x8a, 0x29, 0x79, 0x4d, 0xec, 0x61,
+ 0xf3, 0x3e, 0xbf, 0x4e, 0xa8, 0x52, 0xb5, 0xce, 0x09, 0x7c, 0x80, 0xf8,
+ 0x44, 0x6e, 0xe4, 0x1f, 0xaa, 0x1b, 0xd4, 0x47, 0xd4, 0x23, 0x29, 0x05,
+ 0x50, 0x66, 0xfd, 0xf7, 0xfa, 0xf8, 0xf2, 0xe3, 0xb7, 0x27, 0x27, 0x97,
+ 0xa7, 0x6f, 0xce, 0x4e, 0xe4, 0xc2, 0x98, 0x1f, 0x9d, 0x5f, 0x7f, 0x77,
+ 0xa6, 0x7d, 0xe2, 0x94, 0x16, 0x3d, 0x82, 0x17, 0xd8, 0x7f, 0x66, 0xca,
+ 0x5d, 0x6a, 0x87, 0x05, 0x86, 0xf4, 0xd1, 0xe9, 0x0f, 0xa0, 0xb5, 0x5e,
+ 0xf6, 0x3e, 0xfc, 0xe0, 0xf5, 0x22, 0x71, 0x6a, 0x4c, 0xfc, 0x66, 0x02,
+ 0xb6, 0xe4, 0x84, 0x7a, 0xba, 0xdb, 0xb5, 0xb7, 0xa5, 0xdc, 0xfd, 0xc6,
+ 0x62, 0x10, 0x1b, 0x9c, 0x67, 0x46, 0x61, 0xe0, 0x17, 0xb5, 0xdf, 0x8f,
+ 0x93, 0xd6, 0xf6, 0x62, 0x4b, 0xdb, 0xa8, 0xad, 0x0c, 0x5a, 0x7c, 0x5e,
+ 0xb7, 0x19, 0x6f, 0x93, 0x47, 0xc2, 0x70, 0x8c, 0x0e, 0xf1, 0xbf, 0xe1,
+ 0x36, 0x77, 0x97, 0x45, 0x7a, 0x87, 0xfa, 0x1f, 0x3c, 0xcb, 0x21, 0x5d,
+ 0x7c, 0xb4, 0x6f, 0x9a, 0xfe, 0x49, 0x58, 0x19, 0x07, 0xa1, 0xcc, 0x13,
+ 0x1a, 0x34, 0x0a, 0x79, 0x7b, 0x08, 0x19, 0x07, 0x7f, 0xc3, 0xe3, 0xd1,
+ 0x80, 0xb0, 0x3d, 0xfd, 0xe8, 0xcd, 0xc9, 0x55, 0x37, 0xba, 0x3c, 0x79,
+ 0xcf, 0x85, 0x2a, 0x27, 0xe7, 0xdf, 0x70, 0x1f, 0x44, 0x6d, 0x6f, 0x47,
+ 0x99, 0x10, 0x7e, 0xb2, 0xa6, 0xb3, 0x27, 0xf0, 0x2e, 0x65, 0xa6, 0x96,
+ 0x25, 0x48, 0xd7, 0x4f, 0x08, 0xa0, 0xc3, 0x6b, 0x3b, 0x84, 0xff, 0x84,
+ 0xb6, 0x0a, 0xec, 0x88, 0x77, 0x81, 0xed, 0x12, 0xc5, 0xcc, 0xe4, 0xce,
+ 0x88, 0x51, 0x80, 0xbb, 0xc1, 0x3b, 0x06, 0x1b, 0xe2, 0x67, 0x71, 0xe8,
+ 0x06, 0x91, 0xd9, 0x47, 0x10, 0x42, 0xdc, 0x3c, 0x57, 0x62, 0xf0, 0x68,
+ 0xc5, 0xc2, 0xe7, 0xba, 0x48, 0x97, 0x04, 0x48, 0x6e, 0x37, 0x23, 0x54,
+ 0x1d, 0x5d, 0xa4, 0xdc, 0x88, 0xb8, 0x81, 0x4c, 0x07, 0xdb, 0x9d, 0x8e,
+ 0x19, 0x81, 0x01, 0x03, 0xc8, 0x79, 0x81, 0x09, 0x1c, 0x08, 0x7d, 0xf0,
+ 0xbf, 0x36, 0xfb, 0x65, 0x79, 0xb3, 0x99, 0x8e, 0x3f, 0x16, 0x65, 0xbc,
+ 0xd6, 0x94, 0x45, 0xce, 0xaf, 0xc7, 0xf8, 0xeb, 0x68, 0xad, 0x6f, 0x1e,
+ 0x95, 0xbf, 0xe3, 0xcf, 0x83, 0x58, 0x00, 0x2a, 0x82, 0xd8, 0xb5, 0xa2,
+ 0xf9, 0x9c, 0xda, 0x3e, 0x71, 0x96, 0x0e, 0x0b, 0x50, 0xe0, 0x6c, 0xf7,
+ 0x0f, 0xe9, 0x86, 0xb8, 0xb8, 0x1d, 0x95, 0xdb, 0xdb, 0x3e, 0x1a, 0xbd,
+ 0x29, 0x71, 0xec, 0x6a, 0x5e, 0xee, 0xe5, 0xb7, 0xc7, 0x83, 0x3f, 0x6e,
+ 0x6f, 0x53, 0x1a, 0xf4, 0x3a, 0xa6, 0xab, 0xbe, 0xdc, 0xdf, 0xde, 0xd9,
+ 0x08, 0xa9, 0x8f, 0x5e, 0x5e, 0x0f, 0x76, 0xb0, 0x8c, 0x2d, 0x7d, 0xe2,
+ 0xee, 0x53, 0x98, 0x5b, 0x8a, 0x1e, 0xcc, 0xd0, 0xe3, 0x04, 0x93, 0x04,
+ 0xa9, 0xb2, 0x93, 0xc3, 0x99, 0x94, 0x3b, 0xe9, 0xa5, 0x5e, 0x18, 0x1c,
+ 0xa4, 0x0e, 0xcf, 0xfe, 0xa0, 0x63, 0xa8, 0xca, 0xcd, 0x21, 0xa7, 0xfc,
+ 0x13, 0x67, 0xd6, 0x7d, 0xde, 0xa7, 0x66, 0x78, 0xcd, 0x5d, 0x17, 0x25,
+ 0x3a, 0x5a, 0xa0, 0x29, 0x16, 0x5f, 0xb6, 0x75, 0x64, 0x23, 0x41, 0x00,
+ 0xf3, 0x03, 0x3c, 0x5f, 0xbd, 0xcc, 0xa9, 0xc3, 0xf4, 0x83, 0x04, 0x1f,
+ 0xdb, 0x41, 0xcd, 0xee, 0x3b, 0x0c, 0xc2, 0x1d, 0xd4, 0x77, 0xf6, 0xf1,
+ 0x37, 0xa2, 0x0e, 0xdc, 0xdd, 0xf0, 0x90, 0x9f, 0xf4, 0x4e, 0x16, 0xc3,
+ 0xe8, 0x70, 0x06, 0x2f, 0xce, 0x5a, 0x4a, 0xef, 0x4e, 0xb8, 0xdd, 0xd6,
+ 0xb7, 0x49, 0x31, 0x4c, 0x8a, 0xbc, 0x6c, 0x54, 0x09, 0xd1, 0x6a, 0xa5,
+ 0xee, 0x17, 0x6b, 0x02, 0x60, 0x1c, 0x4d, 0x97, 0xf2, 0x1a, 0x6b, 0x56,
+ 0x64, 0x7d, 0x0b, 0xc6, 0x7b, 0x1d, 0x97, 0x67, 0x8d, 0x6a, 0x95, 0xf0,
+ 0x02, 0x60, 0x7f, 0x29, 0xfc, 0x13, 0xb8, 0xf1, 0x84, 0x9a, 0xc1, 0xa4,
+ 0xf1, 0x6c, 0x0d, 0xbb, 0xfe, 0x34, 0xaf, 0x91, 0x50, 0xda, 0x5a, 0x1f,
+ 0x0b, 0xd0, 0xd8, 0x58, 0xa3, 0x2c, 0x28, 0x2a, 0xb7, 0x8e, 0x23, 0x99,
+ 0x8b, 0xe6, 0x77, 0xe3, 0x35, 0xb7, 0x69, 0x80, 0xa5, 0xd7, 0x09, 0xc9,
+ 0x0c, 0x57, 0x87, 0x4e, 0x6a, 0xcb, 0x30, 0xfe, 0x8d, 0xc5, 0x14, 0x1f,
+ 0xc3, 0x2f, 0x6e, 0x9e, 0x6d, 0xfa, 0x65, 0x37, 0x86, 0xd3, 0xb3, 0x72,
+ 0xcf, 0x59, 0xdf, 0x0f, 0xb6, 0xa2, 0x3d, 0xe2, 0xea, 0xf0, 0x06, 0xd6,
+ 0x08, 0x75, 0x25, 0xc0, 0x92, 0xa6, 0x31, 0x1b, 0x86, 0x52, 0xfd, 0x6a,
+ 0x13, 0x27, 0x98, 0xd3, 0xf8, 0xc1, 0x71, 0x5a, 0x2a, 0xf5, 0x0f, 0xd1,
+ 0x69, 0xf7, 0xd8, 0x78, 0x3f, 0x8e, 0xc4, 0x1b, 0x41, 0x75, 0x51, 0xf7,
+ 0x05, 0xa2, 0xa5, 0x66, 0x16, 0x73, 0x79, 0x96, 0xb4, 0x82, 0x68, 0x29,
+ 0xa2, 0x2a, 0x1c, 0xd2, 0x4c, 0x7a, 0x1b, 0x6a, 0x36, 0x62, 0xa1, 0x73,
+ 0xea, 0x49, 0x32, 0x87, 0x3a, 0x0c, 0xf0, 0xbd, 0x3f, 0x3c, 0x09, 0xa9,
+ 0xf2, 0xd4, 0xd9, 0x59, 0x95, 0x3e, 0x04, 0x93, 0xf0, 0x6c, 0xac, 0xb8,
+ 0x46, 0x99, 0x1f, 0x55, 0x0c, 0xf4, 0x48, 0x26, 0x1d, 0x02, 0x3f, 0x4d,
+ 0x3c, 0xb0, 0xac, 0x41, 0x0d, 0x5f, 0x41, 0x5a, 0xbe, 0x6a, 0x09, 0x1d,
+ 0xbd, 0x67, 0x5a, 0x5f, 0x9b, 0x26, 0x65, 0x4c, 0xfb, 0x3d, 0x52, 0x59,
+ 0x9b, 0xee, 0x36, 0x6c, 0x57, 0x62, 0xcb, 0xb4, 0xe9, 0xd6, 0x12, 0x18,
+ 0xbd, 0x82, 0x1c, 0x69, 0x96, 0x34, 0x6f, 0x07, 0xfa, 0xa2, 0x25, 0xff,
+ 0x96, 0x8c, 0x8b, 0xd8, 0xf3, 0x81, 0x50, 0xc1, 0x03, 0x77, 0x00, 0x11,
+ 0x22, 0x58, 0x1b, 0xb3, 0x67, 0x94, 0x8e, 0xc4, 0x4c, 0x15, 0x2f, 0x9e,
+ 0x84, 0xa1, 0xb8, 0x6b, 0x02, 0xdc, 0x68, 0xcf, 0x54, 0x18, 0xc2, 0x10,
+ 0xf7, 0xe9, 0xb8, 0xba, 0xa1, 0x9e, 0x3c, 0x6a, 0x19, 0x95, 0x82, 0x0b,
+ 0x80, 0x4e, 0xea, 0xd4, 0xaf, 0x7a, 0x1b, 0xb6, 0x38, 0xf0, 0xf8, 0xc0,
+ 0x68, 0x53, 0x23, 0x06, 0xc8, 0x42, 0x47, 0x1d, 0x9d, 0x03, 0x39, 0xb5,
+ 0x37, 0x59, 0xd5, 0x33, 0xd0, 0x30, 0x31, 0xdc, 0xa2, 0x09, 0xb6, 0xdb,
+ 0xf1, 0xcc, 0x35, 0x2d, 0x4f, 0xeb, 0xeb, 0x0d, 0x41, 0x1a, 0x5e, 0xbb,
+ 0x65, 0x50, 0xfc, 0x6f, 0xd7, 0xb4, 0xab, 0xec, 0x32, 0xab, 0xdc, 0x0a,
+ 0x1a, 0xe4, 0xe5, 0xd1, 0x6d, 0xea, 0x77, 0x6a, 0xa0, 0xaf, 0x77, 0x81,
+ 0xd7, 0xcc, 0x79, 0x84, 0xf7, 0x6b, 0xea, 0x28, 0x45, 0xc0, 0x84, 0x69,
+ 0x2c, 0xbf, 0x67, 0xb0, 0x94, 0xb5, 0x29, 0x3f, 0xf4, 0x8d, 0x7d, 0xa8,
+ 0x31, 0x1c, 0x7a, 0xed, 0xd9, 0x4b, 0xaf, 0xc9, 0x74, 0xe5, 0x01, 0x16,
+ 0x68, 0x7c, 0xdb, 0x8d, 0x76, 0xe7, 0x74, 0x28, 0xdb, 0xdf, 0x84, 0x18,
+ 0x17, 0xf7, 0x08, 0x2e, 0x73, 0x53, 0x2e, 0xdf, 0xfb, 0x0b, 0x9a, 0x5c,
+ 0xb4, 0x61, 0x4c, 0x97, 0xa6, 0x12, 0x8c, 0xeb, 0x51, 0x94, 0x1f, 0x04,
+ 0x82, 0x0e, 0x94, 0x4b, 0xb9, 0x40, 0x23, 0x61, 0x9c, 0x28, 0x4a, 0xf8,
+ 0x9c, 0xbc, 0x9b, 0x98, 0x2d, 0xb5, 0x10, 0x38, 0x0c, 0x24, 0xd7, 0x9e,
+ 0x81, 0x20, 0x2d, 0x67, 0xf8, 0x00, 0xb5, 0xc9, 0xca, 0xbd, 0xcc, 0xea,
+ 0xd9, 0x82, 0x0c, 0x24, 0xd3, 0xc9, 0xce, 0x99, 0x14, 0x56, 0xb5, 0x8e,
+ 0x22, 0xf1, 0xf1, 0x7c, 0x42, 0x91, 0x38, 0xa3, 0x14, 0xbd, 0xb4, 0xac,
+ 0x7a, 0x01, 0xbc, 0x57, 0x8a, 0x01, 0x5d, 0x5e, 0x5c, 0xee, 0x6e, 0xb8,
+ 0xa0, 0x98, 0x02, 0x8e, 0xc0, 0x3d, 0x1f, 0x29, 0x4a, 0x64, 0x80, 0x13,
+ 0xba, 0xca, 0x6e, 0xb8, 0x4c, 0xcf, 0xb7, 0x2d, 0x47, 0x82, 0x18, 0x87,
+ 0xcc, 0x85, 0xbe, 0x48, 0x2e, 0x7f, 0x5b, 0x28, 0xe2, 0x74, 0x43, 0xb4,
+ 0x17, 0x53, 0xe1, 0x11, 0x3f, 0xf3, 0x61, 0x65, 0x4a, 0x4e, 0x28, 0x27,
+ 0x44, 0x96, 0x1e, 0x15, 0xff, 0xd5, 0xfb, 0x89, 0x60, 0xe1, 0x82, 0x37,
+ 0xcb, 0x88, 0x13, 0x8f, 0x02, 0x29, 0x5d, 0x12, 0xe4, 0xb5, 0x4f, 0x52,
+ 0x40, 0x42, 0x8b, 0x21, 0x09, 0x5d, 0xc8, 0xe6, 0x5a, 0xa0, 0xb7, 0x14,
+ 0xa9, 0x96, 0x31, 0x95, 0xfb, 0xad, 0x7d, 0xe0, 0x4d, 0x5f, 0x8b, 0x9a,
+ 0x45, 0x26, 0x5d, 0xcb, 0xe2, 0xe8, 0xfc, 0x6c, 0x70, 0xed, 0x06, 0x91,
+ 0x48, 0x0f, 0xf3, 0x52, 0x99, 0xeb, 0xc0, 0x6e, 0x4e, 0x6a, 0xd1, 0xd9,
+ 0xe9, 0xe0, 0xba, 0x1f, 0xea, 0xd8, 0x00, 0xda, 0xf9, 0x00, 0xcb, 0x6d,
+ 0x6a, 0x40, 0x19, 0x11, 0x77, 0x07, 0xe7, 0x44, 0x63, 0x8e, 0x8e, 0x71,
+ 0xb4, 0x28, 0x2d, 0x5c, 0x50, 0x88, 0xe6, 0x70, 0x30, 0xc5, 0x2f, 0x38,
+ 0x4d, 0x59, 0x52, 0x9c, 0x35, 0x4a, 0x54, 0x2e, 0x87, 0x3d, 0x07, 0x49,
+ 0x91, 0xf5, 0x1d, 0x6a, 0xd1, 0x05, 0xd4, 0x0b, 0x12, 0xea, 0xd6, 0xb7,
+ 0x31, 0xd7, 0x99, 0xa0, 0x68, 0x7f, 0x04, 0x01, 0xb3, 0xe6, 0xea, 0x1e,
+ 0x45, 0x09, 0x21, 0xee, 0x92, 0x93, 0x09, 0x9f, 0x7d, 0x36, 0x51, 0xe1,
+ 0x56, 0x34, 0x76, 0x52, 0xba, 0x3a, 0xd6, 0x6b, 0x16, 0x30, 0x6c, 0xf7,
+ 0x4b, 0xe2, 0x94, 0x0e, 0x09, 0x5a, 0xa2, 0x2b, 0x93, 0x84, 0x5d, 0x4e,
+ 0x66, 0xda, 0xad, 0x20, 0xc0, 0xe9, 0x98, 0x71, 0x30, 0xcb, 0x3a, 0x10,
+ 0x26, 0x83, 0x1e, 0x20, 0xd3, 0xe1, 0x06, 0x40, 0xa8, 0xba, 0xb5, 0x9d,
+ 0x24, 0xfb, 0xe4, 0x6a, 0xf9, 0xa9, 0xbd, 0x1f, 0x38, 0xe3, 0x99, 0x02,
+ 0x65, 0xdd, 0x36, 0x84, 0x36, 0x9f, 0x8c, 0xb4, 0x19, 0xd3, 0x87, 0xd3,
+ 0x37, 0x67, 0x66, 0xb7, 0x64, 0x77, 0x28, 0x85, 0xd6, 0xac, 0x15, 0xcb,
+ 0x5a, 0x94, 0x6d, 0xd2, 0x99, 0x78, 0x41, 0x9f, 0x65, 0x96, 0xfe, 0x8d,
+ 0x52, 0xad, 0x48, 0x77, 0x9d, 0xa4, 0x04, 0xe7, 0x15, 0x93, 0xeb, 0x5c,
+ 0x25, 0xd9, 0x5a, 0x69, 0x3a, 0xd9, 0xa5, 0x63, 0x53, 0xfe, 0xc1, 0x31,
+ 0xbe, 0x60, 0xfe, 0xf1, 0x4a, 0xe4, 0x94, 0xed, 0x3a, 0xbc, 0x29, 0xa1,
+ 0x1c, 0x0b, 0x18, 0x19, 0x08, 0xa4, 0x4d, 0x2a, 0x5f, 0xf4, 0x94, 0x0b,
+ 0xd2, 0xcd, 0x6c, 0x76, 0x5d, 0x1d, 0x64, 0x27, 0x2f, 0xa4, 0xe8, 0x71,
+ 0xfd, 0xed, 0xd5, 0xc5, 0xfb, 0xde, 0xf5, 0x05, 0xb5, 0xba, 0x27, 0x73,
+ 0x6e, 0xb6, 0x22, 0x45, 0xa4, 0x34, 0x7d, 0x52, 0x2d, 0x4a, 0x89, 0xf8,
+ 0xda, 0xd6, 0xcb, 0x0d, 0x29, 0xf4, 0x61, 0x91, 0x42, 0xd3, 0xd3, 0xb7,
+ 0xbc, 0xf6, 0x25, 0x19, 0x6b, 0x22, 0x31, 0xb5, 0x48, 0x45, 0xbf, 0xe3,
+ 0xc8, 0x89, 0x63, 0x71, 0x4a, 0x87, 0x70, 0xee, 0xe1, 0xb2, 0x7c, 0x8c,
+ 0xa4, 0xb6, 0x14, 0x31, 0x0b, 0xc9, 0x96, 0xf2, 0xa3, 0x03, 0xa6, 0xf7,
+ 0xb6, 0x41, 0x2a, 0xc2, 0xaa, 0x3b, 0x2e, 0xeb, 0xaa, 0x72, 0xb8, 0xbe,
+ 0x71, 0x51, 0xe4, 0xf7, 0x2a, 0xb8, 0xa4, 0xf6, 0x1b, 0xa6, 0x8e, 0x87,
+ 0x54, 0x3c, 0xb6, 0xa2, 0xbb, 0x08, 0x60, 0x99, 0x76, 0x0e, 0x5f, 0xa9,
+ 0xfe, 0xed, 0xd7, 0x31, 0x37, 0x34, 0x03, 0xbc, 0x57, 0x15, 0x4b, 0x2c,
+ 0x29, 0x0d, 0xbb, 0x9d, 0xcf, 0x90, 0x4d, 0xd6, 0x53, 0xc6, 0xbb, 0x82,
+ 0xa8, 0x88, 0x00, 0x3c, 0xd4, 0xeb, 0xcd, 0xf8, 0x25, 0xc9, 0x3f, 0xc1,
+ 0x31, 0xc5, 0x3f, 0x7b, 0x37, 0x58, 0xa0, 0x96, 0x51, 0xa3, 0xc7, 0x36,
+ 0xae, 0x94, 0x36, 0x6e, 0x73, 0xf1, 0xd2, 0x8a, 0xfb, 0x6f, 0x6a, 0x12,
+ 0x0e, 0x81, 0xa9, 0x11, 0x33, 0xc0, 0x9f, 0x7a, 0xba, 0xa4, 0xa2, 0x24,
+ 0xa5, 0x88, 0x50, 0x31, 0x5e, 0x8e, 0xe8, 0x98, 0x30, 0xe2, 0x87, 0xed,
+ 0x3d, 0x87, 0x8c, 0xdb, 0xaa, 0x20, 0x0f, 0x38, 0xb4, 0x4d, 0x97, 0x67,
+ 0x07, 0x4e, 0x53, 0xcb, 0x8a, 0xf8, 0x31, 0xdb, 0xb3, 0x0c, 0x95, 0x49,
+ 0xcc, 0x7d, 0x4d, 0x58, 0xb1, 0x2c, 0x9a, 0x36, 0x27, 0x46, 0x95, 0xb4,
+ 0x67, 0xb2, 0xcf, 0xae, 0x10, 0x34, 0x9f, 0xe0, 0xc2, 0x25, 0xe8, 0x8f,
+ 0xc8, 0x96, 0x48, 0xc0, 0x14, 0x74, 0xff, 0x3a, 0x2e, 0x81, 0x2f, 0xd5,
+ 0xc7, 0xdb, 0x58, 0xe1, 0x9e, 0x5e, 0x6a, 0x61, 0x85, 0x73, 0x7a, 0xb5,
+ 0x03, 0x09, 0x9f, 0xdc, 0x69, 0x0d, 0xe3, 0x82, 0x53, 0x33, 0x9c, 0x1d,
+ 0x17, 0x16, 0x45, 0xc0, 0x8b, 0x94, 0xab, 0x1e, 0x53, 0xb7, 0xeb, 0xbb,
+ 0x10, 0x73, 0x8a, 0x4d, 0x3f, 0xc7, 0x2a, 0xd2, 0x8f, 0x46, 0xeb, 0x5a,
+ 0xf9, 0x69, 0x2a, 0x91, 0xce, 0xe4, 0x57, 0x07, 0xa6, 0x34, 0x15, 0x79,
+ 0x5a, 0x63, 0xb8, 0xdd, 0x1f, 0x7e, 0xa8, 0xf7, 0x5f, 0xde, 0x68, 0x03,
+ 0xc3, 0x90, 0x9a, 0x94, 0x31, 0xf3, 0x3e, 0x9d, 0xb0, 0x57, 0x57, 0xa7,
+ 0x64, 0x87, 0x21, 0x06, 0xca, 0xe2, 0x67, 0x07, 0x8c, 0x78, 0x8a, 0xc0,
+ 0x04, 0xbc, 0xd1, 0x62, 0xab, 0x5a, 0x0a, 0x07, 0xc1, 0x64, 0x9c, 0x06,
+ 0x72, 0x16, 0x89, 0xe1, 0x6a, 0xee, 0x05, 0xc7, 0x54, 0x28, 0x27, 0xdd,
+ 0xdd, 0xae, 0xd2, 0x3a, 0x67, 0x6e, 0x30, 0xb6, 0x20, 0x40, 0xcd, 0xab,
+ 0x9b, 0x44, 0x1b, 0xe0, 0x4c, 0x53, 0x7a, 0x49, 0xf2, 0x9e, 0xdb, 0x4a,
+ 0x60, 0x5a, 0xec, 0xa8, 0x48, 0xc4, 0xdb, 0xa0, 0x4d, 0x80, 0xbc, 0x28,
+ 0x32, 0x82, 0xf6, 0xf0, 0xe5, 0x21, 0xa7, 0x6a, 0xec, 0xdc, 0x17, 0x8b,
+ 0xb7, 0xd8, 0x38, 0x31, 0x29, 0xc3, 0xf0, 0xb5, 0xf7, 0xfb, 0x9c, 0x20,
+ 0x36, 0xa9, 0xf7, 0x12, 0xc1, 0xc6, 0xe5, 0xec, 0xd8, 0x92, 0xf6, 0xc1,
+ 0x2c, 0x6f, 0xfe, 0xac, 0x37, 0xb7, 0xef, 0x06, 0x2f, 0x91, 0x0a, 0x42,
+ 0x21, 0x50, 0x65, 0x26, 0x78, 0x2e, 0x88, 0xed, 0x8b, 0xb9, 0x70, 0xda,
+ 0x92, 0x0c, 0x3d, 0xc5, 0x1a, 0x23, 0x67, 0x75, 0x9a, 0x90, 0x28, 0xe6,
+ 0x64, 0xbc, 0xf8, 0x40, 0xd3, 0xf6, 0xca, 0x62, 0x0e, 0x0f, 0x39, 0x3d,
+ 0x2d, 0x2e, 0x1d, 0x3b, 0xb7, 0xc0, 0x28, 0xed, 0xd1, 0x63, 0x65, 0x5b,
+ 0xba, 0x89, 0x20, 0x8f, 0x53, 0x0e, 0x1c, 0xb7, 0x4f, 0x71, 0xf7, 0x4c,
+ 0xdd, 0x64, 0x06, 0xf5, 0x44, 0x0a, 0xcd, 0xa4, 0x0f, 0xc7, 0x37, 0x27,
+ 0xd7, 0xcd, 0xab, 0xe5, 0x46, 0x0e, 0x09, 0x63, 0x04, 0xfe, 0x7d, 0xf9,
+ 0xe1, 0x7a, 0x83, 0x9a, 0x93, 0x29, 0x60, 0x70, 0x55, 0x6b, 0x3a, 0x63,
+ 0xea, 0x57, 0xfd, 0x52, 0x1c, 0x46, 0xf5, 0x10, 0x3e, 0x25, 0xc9, 0x40,
+ 0x72, 0x33, 0xd0, 0xc7, 0xb2, 0xbb, 0xb5, 0x0d, 0x76, 0xd4, 0xd6, 0x0e,
+ 0x35, 0x9c, 0xde, 0xdd, 0xda, 0x35, 0x40, 0x08, 0xfa, 0x94, 0xdf, 0xa6,
+ 0x82, 0x5f, 0x24, 0x97, 0x09, 0xd1, 0xfd, 0xee, 0xc3, 0x03, 0xfd, 0xb8,
+ 0x5e, 0x5e, 0xd1, 0x33, 0x25, 0x89, 0xee, 0x34, 0x83, 0x72, 0xdf, 0xd9,
+ 0x6f, 0x8a, 0xec, 0x2d, 0x33, 0x2e, 0x00, 0xa6, 0x86, 0xde, 0x88, 0x1b,
+ 0xd2, 0x6f, 0xef, 0x6e, 0xe5, 0xb4, 0xea, 0x13, 0x74, 0x34, 0xb7, 0x3d,
+ 0x1d, 0x10, 0x8b, 0x8b, 0x38, 0x23, 0x28, 0x24, 0x1e, 0x6b, 0xc6, 0x67,
+ 0x04, 0xaf, 0x09, 0xf6, 0xe0, 0xc1, 0xee, 0x90, 0x69, 0x99, 0x2a, 0x0c,
+ 0x00, 0x04, 0x9d, 0xb0, 0x23, 0x53, 0x4c, 0x13, 0x70, 0x42, 0x20, 0xff,
+ 0x3b, 0xc0, 0x34, 0x11, 0xb8, 0x13, 0xb4, 0xbf, 0xfa, 0x57, 0xcd, 0xe3,
+ 0xe3, 0x7f, 0xed, 0xd6, 0x25, 0x25, 0xba, 0x87, 0x75, 0xd0, 0x43, 0xf9,
+ 0x8b, 0xe7, 0xab, 0xa4, 0x3e, 0xc3, 0xa4, 0x1b, 0x53, 0x87, 0x98, 0x8d,
+ 0x9a, 0xff, 0x84, 0xc6, 0x30, 0x13, 0x13, 0x2d, 0x45, 0x3a, 0xb8, 0x33,
+ 0x8b, 0x6e, 0xd2, 0x46, 0x4d, 0x3e, 0xf4, 0xdb, 0x1a, 0x00, 0xaa, 0x26,
+ 0xe8, 0x8d, 0xaf, 0x09, 0x16, 0x06, 0x31, 0xc0, 0x51, 0x89, 0xf3, 0x45,
+ 0xe8, 0xee, 0x96, 0x0a, 0xfe, 0x80, 0xc2, 0xd5, 0x38, 0xdb, 0x65, 0x8e,
+ 0x8d, 0xe9, 0x44, 0x47, 0x15, 0xf5, 0x83, 0x26, 0x3f, 0x98, 0x6f, 0xa2,
+ 0xe2, 0x56, 0x74, 0x79, 0x2b, 0xa8, 0xcf, 0x3a, 0x36, 0xcc, 0xd1, 0x14,
+ 0xcc, 0xda, 0x4c, 0x39, 0x10, 0x32, 0x77, 0x13, 0x35, 0x42, 0x19, 0xb6,
+ 0x43, 0x4d, 0xde, 0x8b, 0x1a, 0x0b, 0x85, 0x7b, 0x88, 0xa2, 0x15, 0xd5,
+ 0x7e, 0xe9, 0x06, 0xbd, 0xd7, 0xa5, 0xbf, 0xed, 0x6f, 0xbd, 0xe2, 0x13,
+ 0x3d, 0x3d, 0xb9, 0x7e, 0xdb, 0x74, 0xe6, 0x15, 0x40, 0x50, 0xfc, 0xdf,
+ 0x5e, 0x12, 0x17, 0x37, 0x60, 0x5c, 0x20, 0x54, 0x52, 0x0f, 0xfb, 0x6f,
+ 0xf4, 0xb6, 0xb6, 0x42, 0x79, 0x1b, 0x9f, 0x10, 0x1e, 0x62, 0x77, 0xaf,
+ 0x1e, 0xd2, 0x43, 0x95, 0xbe, 0x87, 0xdb, 0xdd, 0x8e, 0xe4, 0x5b, 0x27,
+ 0xaf, 0x58, 0x75, 0x67, 0x79, 0xbc, 0x16, 0xb0, 0x4f, 0x22, 0x03, 0x09,
+ 0x1d, 0x35, 0x81, 0x30, 0x1d, 0x13, 0xbb, 0xa9, 0xde, 0x98, 0xec, 0x24,
+ 0x10, 0xf3, 0x24, 0x93, 0xaa, 0xc7, 0x8d, 0x88, 0xfb, 0x48, 0x72, 0xbb,
+ 0xb7, 0x8a, 0x18, 0x00, 0x59, 0x10, 0xc1, 0xc2, 0xf9, 0x52, 0x6a, 0x07,
+ 0x8b, 0x04, 0x21, 0xd7, 0x58, 0xed, 0x93, 0xb6, 0x59, 0x4f, 0xc3, 0xc6,
+ 0xd1, 0x16, 0x14, 0xa3, 0x85, 0x14, 0x91, 0xf2, 0xbf, 0x51, 0x14, 0xd7,
+ 0xf2, 0x67, 0x77, 0xf6, 0x03, 0x1b, 0x47, 0x02, 0xfb, 0x57, 0x6e, 0x9c,
+ 0x55, 0x8e, 0xd8, 0x7f, 0x47, 0x06, 0xaf, 0x29, 0x75, 0x0b, 0x64, 0x6a,
+ 0x6b, 0x5b, 0xe7, 0x5f, 0xbc, 0x16, 0xdc, 0xed, 0xfe, 0x2a, 0xf0, 0x49,
+ 0xfb, 0xd6, 0xaf, 0x5c, 0x4b, 0xd7, 0x76, 0x3e, 0x41, 0xe9, 0x31, 0x97,
+ 0xc6, 0x6e, 0xe4, 0x67, 0xa0, 0x80, 0x66, 0x13, 0x18, 0x26, 0x59, 0x24,
+ 0xb4, 0x78, 0x37, 0x6f, 0xc1, 0x21, 0x6e, 0x63, 0xa3, 0xa2, 0xad, 0xa8,
+ 0x05, 0x91, 0x20, 0x44, 0xd3, 0x05, 0x22, 0x7e, 0x94, 0x41, 0x3f, 0x8b,
+ 0x98, 0xf9, 0xec, 0x47, 0xa0, 0xcd, 0x54, 0x97, 0x6c, 0x57, 0xc4, 0x98,
+ 0xbc, 0xae, 0x7b, 0xac, 0x3c, 0xcb, 0x53, 0x1a, 0xef, 0xe2, 0x19, 0x9a,
+ 0xeb, 0x34, 0x86, 0x39, 0xac, 0xdc, 0x56, 0xd6, 0xf3, 0xe0, 0x79, 0x8b,
+ 0xf8, 0x77, 0xe7, 0x91, 0x99, 0xf7, 0x39, 0xe1, 0x51, 0x95, 0xd9, 0xef,
+ 0xae, 0xde, 0xfe, 0x45, 0xed, 0xee, 0x8d, 0x6e, 0x8b, 0x25, 0xdc, 0x98,
+ 0xee, 0x30, 0x71, 0x12, 0x01, 0x05, 0x02, 0xa2, 0xb6, 0xeb, 0xfc, 0x2f,
+ 0x9b, 0x65, 0xe9, 0x05, 0x15, 0x28, 0xe9, 0x63, 0x1d, 0xc3, 0x6c, 0xf0,
+ 0xdc, 0x40, 0x4c, 0xba, 0xdd, 0xfe, 0x3e, 0xf9, 0x43, 0xde, 0x1e, 0xef,
+ 0xef, 0xee, 0x6c, 0x83, 0xd5, 0xba, 0xde, 0xe0, 0x16, 0x1b, 0x9f, 0x3d,
+ 0x6b, 0xb7, 0xcd, 0x79, 0x27, 0x0f, 0x0b, 0xa4, 0xbd, 0xf5, 0x93, 0x1f,
+ 0x2e, 0xcf, 0xbd, 0x35, 0xc2, 0x9a, 0xbc, 0x40, 0x6a, 0xdb, 0x1a, 0xad,
+ 0x2e, 0x50, 0x1b, 0x5f, 0xf3, 0x8f, 0xa9, 0x61, 0x75, 0x20, 0x54, 0xf9,
+ 0xb6, 0x48, 0x51, 0xc7, 0xed, 0xe0, 0x96, 0x74, 0xce, 0xf2, 0x6c, 0x0c,
+ 0xa2, 0xff, 0x02, 0x21, 0xfa, 0x92, 0x0e, 0xe8, 0xea, 0x4f, 0xae, 0xae,
+ 0xfd, 0x9a, 0xbc, 0xef, 0xd2, 0x55, 0xc9, 0xfc, 0x0c, 0x97, 0xf7, 0xf4,
+ 0x43, 0x42, 0x44, 0x46, 0x70, 0x13, 0xae, 0x31, 0x59, 0x4e, 0x13, 0x76,
+ 0xef, 0xa2, 0x69, 0x56, 0xbf, 0x6d, 0x0f, 0xd4, 0x90, 0x88, 0x3c, 0x3e,
+ 0x87, 0xe4, 0xd0, 0x6e, 0x8b, 0x85, 0x30, 0xb7, 0xd4, 0x68, 0x08, 0xfb,
+ 0x88, 0xd6, 0xd5, 0xad, 0xbf, 0xe1, 0x74, 0x74, 0x27, 0xf0, 0x4e, 0x8e,
+ 0x75, 0xa0, 0xde, 0x16, 0xe0, 0xb9, 0xf4, 0x98, 0xb5, 0x2b, 0xd2, 0x7a,
+ 0x4a, 0x3c, 0xdd, 0x44, 0x02, 0x83, 0xe8, 0xd6, 0xb1, 0x0b, 0x43, 0x3e,
+ 0x70, 0xca, 0x20, 0xa0, 0x8e, 0x7b, 0x71, 0x56, 0xc7, 0x79, 0x45, 0x30,
+ 0x03, 0xb6, 0x7e, 0x92, 0x07, 0x6a, 0xa2, 0x0a, 0x2a, 0xe2, 0x8b, 0x5d,
+ 0x5f, 0x1e, 0xc9, 0x52, 0x04, 0xde, 0x45, 0xdc, 0x4c, 0x06, 0x8a, 0xfa,
+ 0xad, 0x55, 0x7b, 0xbb, 0xc1, 0x38, 0x44, 0x28, 0x24, 0xc5, 0x51, 0x09,
+ 0xb1, 0xce, 0x1a, 0x71, 0x09, 0x37, 0x0e, 0x41, 0x37, 0x05, 0x23, 0x11,
+ 0x12, 0x65, 0xf0, 0x0d, 0x15, 0x27, 0x32, 0xd1, 0x1e, 0x9a, 0x58, 0x11,
+ 0x8c, 0x68, 0x9a, 0xa0, 0x26, 0x34, 0x51, 0x23, 0xbe, 0xfd, 0xcf, 0x03,
+ 0xc4, 0x77, 0x7e, 0x71, 0x7d, 0x72, 0x20, 0x10, 0x5f, 0x8a, 0x85, 0xa3,
+ 0x66, 0x02, 0x27, 0xa6, 0x71, 0x23, 0x77, 0xae, 0x39, 0x44, 0x21, 0xab,
+ 0xa7, 0xde, 0x0d, 0x5d, 0x79, 0xca, 0x11, 0xc7, 0x6b, 0xc2, 0x5e, 0xde,
+ 0xaa, 0x15, 0x21, 0x97, 0x4a, 0xfd, 0xc5, 0x32, 0x60, 0x7a, 0xc2, 0xf3,
+ 0xf7, 0x91, 0x51, 0x08, 0x3e, 0x83, 0x10, 0x29, 0x58, 0xde, 0x7a, 0x24,
+ 0xc4, 0xa2, 0x8c, 0x0d, 0x2e, 0x93, 0xb0, 0x38, 0xc2, 0x7e, 0xaa, 0x7e,
+ 0x13, 0x50, 0x8a, 0xd0, 0xbd, 0x95, 0x46, 0xf2, 0x64, 0x8f, 0x18, 0x98,
+ 0xcd, 0x55, 0x22, 0xce, 0x06, 0x12, 0x9b, 0x97, 0x4a, 0x8c, 0x33, 0xf4,
+ 0x02, 0x7e, 0xd9, 0x0a, 0x73, 0x55, 0x39, 0xf7, 0x49, 0xe9, 0x04, 0xee,
+ 0x91, 0x5a, 0x69, 0x68, 0x55, 0x1a, 0x33, 0x45, 0x30, 0x6c, 0xfc, 0xf0,
+ 0x35, 0xb1, 0xc0, 0xba, 0x5b, 0x44, 0xb5, 0xb4, 0xae, 0x51, 0xd7, 0x28,
+ 0x71, 0x27, 0xa1, 0xb2, 0x2c, 0x36, 0xc0, 0x49, 0x5b, 0x68, 0x41, 0x62,
+ 0x75, 0x31, 0x06, 0x44, 0xa9, 0x46, 0xd1, 0x37, 0x02, 0xc1, 0xed, 0x56,
+ 0x20, 0x90, 0xce, 0x47, 0xd6, 0x6c, 0xca, 0x40, 0x0f, 0xf0, 0x91, 0xfd,
+ 0xad, 0x16, 0x5b, 0x96, 0x55, 0xde, 0x41, 0x52, 0x17, 0xb4, 0xf0, 0x46,
+ 0x6f, 0xdb, 0x38, 0x61, 0x53, 0x2a, 0x6e, 0x17, 0x34, 0xb7, 0x4f, 0x17,
+ 0x62, 0x9a, 0x77, 0xe5, 0x8c, 0x56, 0xe6, 0x31, 0xbe, 0xd7, 0xb0, 0x2f,
+ 0x3e, 0x94, 0x66, 0x9a, 0xa2, 0xc6, 0x9a, 0x12, 0x47, 0xf1, 0x14, 0xb4,
+ 0x16, 0x6e, 0x66, 0x8e, 0xd1, 0x73, 0x1b, 0xfc, 0xf6, 0x8d, 0x39, 0x74,
+ 0x52, 0xf4, 0xa3, 0xc8, 0x45, 0x20, 0xd3, 0x92, 0x23, 0x39, 0x18, 0xdc,
+ 0x75, 0xf2, 0xb7, 0x0d, 0xb1, 0x7e, 0x3f, 0xfa, 0x6b, 0x3e, 0x14, 0x27,
+ 0x0c, 0x5a, 0x8e, 0x21, 0x24, 0x9f, 0x09, 0xe5, 0xcf, 0x2f, 0x81, 0xca,
+ 0xc6, 0x4b, 0xf6, 0xab, 0xe2, 0x84, 0x24, 0x13, 0x9b, 0x5b, 0x3f, 0x63,
+ 0xc0, 0x23, 0x9a, 0x12, 0x8e, 0x26, 0xa7, 0x82, 0x6a, 0x21, 0xba, 0x5f,
+ 0xed, 0xbc, 0xd3, 0x44, 0x6b, 0x89, 0x47, 0xe8, 0x0d, 0x81, 0xc1, 0x05,
+ 0x1c, 0x81, 0x01, 0xf7, 0x6c, 0xc2, 0x7a, 0x3c, 0xaa, 0x96, 0xb2, 0xf1,
+ 0xcd, 0xd9, 0xe5, 0xea, 0x25, 0x85, 0x77, 0x09, 0x06, 0x9e, 0xb2, 0x90,
+ 0x46, 0x40, 0x79, 0xf1, 0xe8, 0x51, 0xf5, 0x05, 0x2b, 0x5c, 0x05, 0xd0,
+ 0xd1, 0x82, 0xc6, 0xfb, 0x35, 0x9e, 0x3a, 0x09, 0x8c, 0x76, 0xa6, 0x65,
+ 0x4b, 0xb7, 0x96, 0xdf, 0xd4, 0x4e, 0x71, 0x7b, 0x6e, 0xb1, 0xd3, 0x59,
+ 0x81, 0x27, 0x6b, 0x57, 0x3d, 0xa9, 0x62, 0xdc, 0xe5, 0x95, 0xc5, 0xe8,
+ 0xd6, 0x25, 0x60, 0x2a, 0x6b, 0x28, 0x32, 0x48, 0xf5, 0x8c, 0x58, 0x63,
+ 0x43, 0x71, 0x70, 0x6d, 0x38, 0x75, 0xea, 0xeb, 0x11, 0xef, 0xe5, 0x2b,
+ 0xcc, 0x0f, 0xd7, 0x89, 0x59, 0xd9, 0x8a, 0x52, 0x1c, 0x66, 0x8f, 0x33,
+ 0xc6, 0xa2, 0xfd, 0xcf, 0xf7, 0xf7, 0x36, 0xb4, 0x79, 0xb1, 0x66, 0x21,
+ 0x6e, 0x84, 0x3a, 0x00, 0xd2, 0x8d, 0x93, 0x9e, 0x0a, 0xa4, 0xd7, 0xa4,
+ 0xd8, 0x23, 0x93, 0xd1, 0x3a, 0xc4, 0xb1, 0x99, 0x72, 0xd3, 0x2c, 0x74,
+ 0xb1, 0x53, 0xfb, 0x39, 0x66, 0xca, 0x5e, 0xfe, 0x00, 0x7e, 0x2c, 0xe1,
+ 0x97, 0xd7, 0x89, 0xc3, 0xc7, 0xa5, 0x65, 0xde, 0xb6, 0x32, 0x88, 0xa1,
+ 0xfd, 0x49, 0x49, 0xd3, 0xd4, 0xb7, 0x0d, 0x2a, 0x5f, 0x0f, 0x96, 0x95,
+ 0x73, 0xfa, 0x39, 0x69, 0xaa, 0xa2, 0x7a, 0xdc, 0x60, 0x47, 0xf6, 0xdc,
+ 0x91, 0x0b, 0xec, 0x1b, 0xe1, 0xda, 0x2e, 0x16, 0x3c, 0x21, 0xa0, 0x6a,
+ 0xc2, 0x99, 0x28, 0x39, 0x43, 0xaa, 0xbe, 0x8f, 0x0c, 0x7d, 0x4a, 0xe0,
+ 0x0b, 0xf2, 0xbe, 0x24, 0x48, 0xc9, 0x99, 0x30, 0xe2, 0xae, 0x27, 0x90,
+ 0xe7, 0xda, 0x1d, 0x8a, 0x55, 0x8f, 0xbc, 0xb0, 0xa5, 0xb9, 0x1c, 0xa4,
+ 0x61, 0x71, 0x49, 0xf9, 0xc2, 0x6d, 0xc0, 0x3b, 0xea, 0x06, 0x89, 0x15,
+ 0x23, 0xa4, 0x36, 0xb3, 0xd6, 0xfa, 0x16, 0xa5, 0x36, 0x85, 0xe2, 0x69,
+ 0x96, 0xb5, 0xe8, 0xdf, 0x0d, 0x55, 0xfa, 0x15, 0x6d, 0xfc, 0xd5, 0xc6,
+ 0x46, 0xb4, 0xcc, 0x9e, 0x2c, 0x29, 0xc6, 0xcd, 0x23, 0x5f, 0x8a, 0xdf,
+ 0x1c, 0x76, 0x16, 0xad, 0xd3, 0x84, 0x37, 0x37, 0x37, 0x9e, 0x9e, 0xb4,
+ 0x3c, 0xf9, 0xd4, 0x24, 0x2f, 0xd9, 0xb1, 0xe1, 0xb4, 0x93, 0x98, 0x38,
+ 0x73, 0xc0, 0x6f, 0x3a, 0x70, 0x19, 0x5d, 0xa6, 0x48, 0x72, 0x30, 0x67,
+ 0x88, 0x79, 0x1a, 0x3f, 0xfa, 0x4e, 0x7c, 0xcd, 0x4a, 0xe3, 0x05, 0xd6,
+ 0xd7, 0xae, 0xf5, 0xc8, 0x04, 0xe7, 0x27, 0x2c, 0x04, 0x53, 0xa3, 0x08,
+ 0x5f, 0xed, 0x08, 0x88, 0xd0, 0xd7, 0x37, 0xed, 0xb4, 0x9c, 0xc5, 0x91,
+ 0x89, 0x9b, 0x76, 0x23, 0xc7, 0xcd, 0xce, 0xb7, 0x50, 0x7d, 0x10, 0xec,
+ 0x8e, 0x0f, 0xd4, 0x46, 0xe8, 0xd3, 0x26, 0xc3, 0x92, 0x3b, 0xa9, 0xf7,
+ 0x3d, 0x44, 0x64, 0x7e, 0xd2, 0x76, 0xf3, 0x0e, 0xf4, 0x52, 0x70, 0x5d,
+ 0xa4, 0x32, 0x20, 0x70, 0xd4, 0x5b, 0xbb, 0x66, 0xc6, 0x23, 0xe6, 0x8e,
+ 0xed, 0xd2, 0x90, 0x4f, 0x07, 0xc3, 0xe9, 0x7a, 0x8c, 0x97, 0xe6, 0x66,
+ 0xe8, 0x9b, 0x76, 0x8c, 0xc1, 0x78, 0x86, 0xfc, 0xd3, 0xda, 0x66, 0x76,
+ 0xf9, 0x8e, 0x12, 0x0c, 0x4e, 0x48, 0x57, 0xa7, 0xae, 0x89, 0x3e, 0x92,
+ 0x83, 0xd9, 0xc3, 0x95, 0x29, 0x78, 0x26, 0x07, 0x8f, 0xfc, 0xbc, 0x92,
+ 0x85, 0xe7, 0xcb, 0x59, 0xf5, 0xb5, 0xe9, 0xa0, 0x75, 0x5f, 0xc3, 0xcb,
+ 0xba, 0xaf, 0xc1, 0x80, 0x52, 0x84, 0x35, 0x34, 0x4e, 0xbe, 0x2c, 0xa3,
+ 0x73, 0x7d, 0x2c, 0x5a, 0x1f, 0x5c, 0x9e, 0x9f, 0x7c, 0x73, 0xb1, 0xf1,
+ 0x94, 0x8f, 0xb2, 0xce, 0xff, 0xcd, 0xba, 0x62, 0xcd, 0x12, 0x96, 0xe9,
+ 0x93, 0x75, 0xf2, 0xcd, 0x60, 0xd0, 0x3b, 0xba, 0x3c, 0xa5, 0x2e, 0x97,
+ 0x03, 0xf8, 0xb3, 0x05, 0x8b, 0xbd, 0x4f, 0xad, 0x00, 0x7a, 0xdf, 0x49,
+ 0xed, 0x68, 0xa9, 0x49, 0x82, 0xe4, 0x01, 0xc4, 0xc3, 0x14, 0xf4, 0x44,
+ 0xde, 0x23, 0x03, 0xed, 0x41, 0xc3, 0x37, 0x4d, 0x9e, 0xcb, 0xd3, 0x4d,
+ 0xfa, 0x14, 0x7e, 0x92, 0x16, 0xd4, 0xe2, 0x3e, 0x58, 0xfa, 0x0d, 0x2e,
+ 0x51, 0xf3, 0xa1, 0x14, 0x53, 0x62, 0xd0, 0x9a, 0x0c, 0x0e, 0x96, 0x1f,
+ 0x8a, 0x13, 0x1b, 0xb0, 0x0b, 0x97, 0xde, 0xa0, 0x2b, 0x0c, 0x6b, 0x2b,
+ 0x14, 0x34, 0xb5, 0xe1, 0x7a, 0x23, 0x13, 0x8d, 0xa1, 0xf1, 0x66, 0x08,
+ 0x3f, 0x32, 0xd0, 0xe8, 0x6a, 0xd3, 0x29, 0xb2, 0xd6, 0x5b, 0x46, 0xd1,
+ 0xc1, 0x9a, 0x34, 0x8e, 0xcf, 0xf2, 0xe5, 0xf4, 0x86, 0x0d, 0xac, 0xba,
+ 0x1f, 0x82, 0x78, 0xb9, 0x46, 0x5f, 0x4d, 0xef, 0x06, 0x98, 0xa4, 0x47,
+ 0x82, 0xf4, 0x8e, 0xea, 0x3d, 0x45, 0x82, 0xc1, 0x21, 0x56, 0x6f, 0x38,
+ 0xe9, 0x62, 0xfc, 0xbb, 0x60, 0xa0, 0xaf, 0xd0, 0x40, 0x86, 0x1c, 0x38,
+ 0x25, 0x37, 0x5a, 0x56, 0xcd, 0xe6, 0xf2, 0xd7, 0x38, 0x7b, 0x24, 0x77,
+ 0xa9, 0xf8, 0xef, 0xa9, 0xfe, 0xd3, 0xd0, 0x74, 0x9d, 0xd0, 0xab, 0x62,
+ 0x44, 0x86, 0x3e, 0xa7, 0xa0, 0x72, 0xe1, 0xe7, 0x2a, 0x9a, 0xa5, 0x9e,
+ 0xf6, 0x73, 0x10, 0xd3, 0x64, 0xda, 0xf5, 0xb2, 0xae, 0x8e, 0xd2, 0x05,
+ 0x73, 0x58, 0xc2, 0x64, 0xa2, 0x08, 0x0b, 0x11, 0x04, 0x58, 0x11, 0xb5,
+ 0x80, 0x5c, 0x8f, 0x87, 0x65, 0x3e, 0x5b, 0x56, 0xa4, 0x0b, 0xa0, 0x53,
+ 0x14, 0x8b, 0x6b, 0x36, 0x88, 0x74, 0x25, 0x7c, 0x09, 0xa3, 0x46, 0x4e,
+ 0x02, 0x6a, 0x14, 0xaa, 0x03, 0xb0, 0xed, 0x49, 0xfb, 0x36, 0x04, 0xc0,
+ 0x51, 0x44, 0xf1, 0x4f, 0xe0, 0xce, 0xf2, 0x58, 0x34, 0xd4, 0x82, 0xd2,
+ 0x92, 0xee, 0x14, 0xec, 0xcd, 0x3f, 0x3f, 0x3d, 0xab, 0xda, 0xee, 0xa8,
+ 0x77, 0x1d, 0x59, 0x77, 0x2d, 0x51, 0xdd, 0x6a, 0x8d, 0x21, 0xce, 0xd6,
+ 0x9a, 0xa9, 0xac, 0xd9, 0x02, 0x43, 0xbc, 0x25, 0xc3, 0x47, 0xf3, 0x31,
+ 0xfe, 0x4e, 0x4c, 0xb9, 0x3c, 0x46, 0x11, 0x7e, 0x2e, 0xb4, 0x92, 0x3d,
+ 0x8c, 0xfe, 0xaa, 0x64, 0x94, 0xfa, 0x97, 0x1a, 0x43, 0x7f, 0x97, 0x70,
+ 0xde, 0x19, 0x1f, 0x31, 0x9d, 0x46, 0xed, 0x90, 0x59, 0xcb, 0x6f, 0x36,
+ 0xb5, 0xc3, 0x8d, 0xe8, 0xd3, 0x13, 0x1e, 0x01, 0x63, 0x28, 0xdd, 0xac,
+ 0x4a, 0xd5, 0x23, 0xf4, 0xb7, 0xc5, 0xdc, 0x4e, 0x93, 0x5f, 0x76, 0xbe,
+ 0x61, 0x4a, 0x81, 0xf2, 0xd5, 0x1d, 0x6f, 0xed, 0xe9, 0xf4, 0x9f, 0xb1,
+ 0x21, 0x76, 0xfd, 0xf6, 0x87, 0x9e, 0x65, 0x67, 0xe2, 0xc5, 0x25, 0x41,
+ 0x52, 0x9a, 0x45, 0x01, 0xe7, 0xff, 0x28, 0x7f, 0xc1, 0x3b, 0xf0, 0x7d,
+ 0x9a, 0x81, 0x66, 0x58, 0x6e, 0x28, 0x71, 0xa6, 0x59, 0x08, 0x46, 0x01,
+ 0x79, 0xc7, 0x5a, 0x09, 0x96, 0x18, 0x70, 0x1c, 0x9b, 0xa8, 0x87, 0x8a,
+ 0x33, 0x07, 0x6c, 0x3c, 0x56, 0xe4, 0x34, 0x36, 0x7d, 0x5c, 0x78, 0xf5,
+ 0x33, 0x23, 0xc3, 0x74, 0x68, 0x0c, 0x02, 0x2f, 0x06, 0xb3, 0x20, 0x4b,
+ 0x1f, 0xfa, 0x26, 0xb8, 0x6f, 0xd0, 0xd7, 0xdc, 0xe0, 0x26, 0x30, 0xc2,
+ 0x40, 0x4f, 0x7b, 0xe2, 0x6c, 0xcd, 0x10, 0x16, 0xee, 0x2e, 0xad, 0x73,
+ 0x7d, 0x7f, 0x23, 0x9a, 0x54, 0x8b, 0xf5, 0xed, 0x0d, 0xc6, 0xb0, 0x97,
+ 0x5e, 0xea, 0xb9, 0x15, 0xf7, 0xbe, 0x17, 0x07, 0x73, 0x0b, 0xa3, 0x63,
+ 0xf3, 0x59, 0x0a, 0x6e, 0x22, 0x9c, 0x1b, 0x55, 0xf1, 0x4d, 0xe4, 0x06,
+ 0xf3, 0x86, 0x99, 0x06, 0xcc, 0x94, 0xc6, 0x1c, 0xd8, 0x3b, 0xae, 0xc5,
+ 0x5f, 0x20, 0xb2, 0x2b, 0x55, 0x36, 0x82, 0x05, 0x61, 0xbb, 0xe0, 0x4a,
+ 0x2f, 0x30, 0x29, 0x7d, 0x86, 0x9d, 0x9b, 0x8d, 0x7b, 0xc8, 0x43, 0xa6,
+ 0x45, 0x0e, 0x22, 0xb2, 0x08, 0xe0, 0x5f, 0x8a, 0x4d, 0x71, 0x4d, 0xd5,
+ 0x37, 0x77, 0x69, 0x91, 0x67, 0x04, 0x31, 0x7a, 0x17, 0x17, 0x29, 0x85,
+ 0xf9, 0x3b, 0xef, 0x2e, 0xde, 0x9f, 0x74, 0x5c, 0xa7, 0xc8, 0x24, 0x15,
+ 0x3f, 0x3a, 0x9d, 0x5f, 0xd3, 0x4b, 0xad, 0xa7, 0x19, 0x72, 0x1a, 0x82,
+ 0x48, 0x1f, 0xb1, 0xda, 0x47, 0x40, 0x0c, 0x04, 0x15, 0x97, 0x98, 0x08,
+ 0x39, 0xa8, 0x92, 0x92, 0x04, 0x20, 0x7d, 0x15, 0x95, 0xc2, 0x28, 0x09,
+ 0x28, 0xd4, 0xfd, 0x46, 0x4d, 0x43, 0xea, 0x80, 0x93, 0xbb, 0x9d, 0xfd,
+ 0x22, 0xa7, 0xfb, 0x1f, 0xaa, 0xf9, 0xda, 0x16, 0xc5, 0xba, 0xd8, 0x9b,
+ 0xe2, 0x71, 0xfe, 0x88, 0x96, 0xcd, 0x5a, 0x5d, 0x00, 0xae, 0x95, 0x68,
+ 0x8c, 0x57, 0x6b, 0xba, 0xbd, 0x94, 0x2e, 0x6a, 0x79, 0xbc, 0xdf, 0x71,
+ 0xb9, 0xe5, 0xeb, 0x4c, 0xd5, 0xfc, 0x09, 0x3b, 0x3a, 0x0f, 0x6e, 0x6f,
+ 0xdf, 0x01, 0xdf, 0xbe, 0x87, 0xea, 0x49, 0x7c, 0xa4, 0xd8, 0x16, 0x88,
+ 0xd5, 0x9b, 0x35, 0xd7, 0xa3, 0xf4, 0xd8, 0x63, 0xc2, 0xf7, 0x2a, 0xc2,
+ 0xe7, 0xf3, 0x11, 0xc3, 0x8a, 0x99, 0xb8, 0x6a, 0x03, 0xf0, 0x59, 0xb5,
+ 0xa4, 0xcc, 0x69, 0xdb, 0x4a, 0xa3, 0xb5, 0x02, 0x8e, 0x82, 0xe0, 0xa6,
+ 0x34, 0x2a, 0xc5, 0x5d, 0x4c, 0x0b, 0xc4, 0xf0, 0xb1, 0x51, 0x64, 0xf9,
+ 0x52, 0xd7, 0xad, 0xa6, 0x6e, 0x83, 0x20, 0xb6, 0xc9, 0x28, 0x46, 0x2f,
+ 0x61, 0x0c, 0x5e, 0x46, 0x71, 0x35, 0xf8, 0x6f, 0x8a, 0x64, 0xeb, 0xeb,
+ 0xc7, 0x66, 0x27, 0xd5, 0xb1, 0x4d, 0x15, 0x4b, 0xf0, 0x37, 0x36, 0x67,
+ 0x4c, 0xc4, 0x9f, 0x51, 0x3a, 0x48, 0xe1, 0xc0, 0xf6, 0x23, 0x31, 0x65,
+ 0xd9, 0x24, 0x61, 0xd0, 0x36, 0x73, 0x1f, 0x61, 0x69, 0xd2, 0x48, 0xa1,
+ 0x5c, 0x16, 0x77, 0x54, 0xf5, 0x2a, 0xfd, 0xb7, 0x38, 0x35, 0xd8, 0x9e,
+ 0x87, 0x9c, 0x43, 0x40, 0xca, 0x3b, 0x33, 0xc4, 0xb4, 0xcd, 0x42, 0x90,
+ 0xb1, 0xa2, 0x6f, 0x78, 0x16, 0x66, 0x82, 0xc6, 0xd2, 0x41, 0x00, 0x14,
+ 0xd6, 0x62, 0xbd, 0x24, 0xfd, 0xbc, 0x24, 0xdc, 0xdc, 0xaa, 0x88, 0x47,
+ 0xf6, 0x2f, 0xbd, 0xb8, 0x1c, 0xa5, 0xa9, 0xf6, 0x73, 0xc2, 0xf8, 0x60,
+ 0x82, 0xe9, 0xb0, 0x41, 0x7c, 0x1c, 0x7b, 0x1e, 0xa6, 0x93, 0xca, 0x38,
+ 0x67, 0xf7, 0x2e, 0xe7, 0x9c, 0xc4, 0xdc, 0xea, 0x0f, 0x33, 0x58, 0xa8,
+ 0x34, 0x4e, 0x82, 0x87, 0xa1, 0x16, 0x57, 0x5a, 0x69, 0xd3, 0x62, 0xda,
+ 0x82, 0xf5, 0xbd, 0xed, 0x9a, 0xdf, 0xba, 0x09, 0x3d, 0x44, 0xa9, 0x2a,
+ 0x2b, 0x36, 0x25, 0xef, 0xef, 0x77, 0xdc, 0x67, 0x56, 0x45, 0xc3, 0x1b,
+ 0xa0, 0x48, 0x59, 0xde, 0x8b, 0x67, 0x8b, 0x60, 0x8a, 0xdb, 0x60, 0xa3,
+ 0xd6, 0xf0, 0xf2, 0xe8, 0xec, 0xf2, 0x9c, 0xf0, 0xf2, 0x10, 0x39, 0x3d,
+ 0x2b, 0x39, 0x4b, 0x01, 0x7f, 0x86, 0x09, 0xec, 0x19, 0xc3, 0x4a, 0x52,
+ 0xd2, 0xc8, 0xd8, 0x2f, 0xaf, 0xa6, 0xe6, 0x10, 0x64, 0x3e, 0x84, 0xec,
+ 0x2b, 0x4e, 0x6f, 0xcb, 0x22, 0xa7, 0xc0, 0x91, 0x19, 0xbc, 0xda, 0x17,
+ 0xcd, 0xe5, 0xc0, 0x57, 0xed, 0xb7, 0xb5, 0xcb, 0x82, 0x29, 0x44, 0xaa,
+ 0xbf, 0x6b, 0x00, 0x03, 0xf3, 0x48, 0xe0, 0x01, 0x3d, 0x7e, 0x5e, 0x25,
+ 0x06, 0x9b, 0x50, 0xec, 0x3a, 0x83, 0x85, 0xaa, 0x1d, 0xac, 0x38, 0x49,
+ 0x83, 0x80, 0x2b, 0xb4, 0x3e, 0xbe, 0x5c, 0x8d, 0x68, 0x00, 0x1b, 0x9b,
+ 0x2d, 0xb2, 0x26, 0xde, 0x96, 0x6c, 0x77, 0xd0, 0x08, 0xf5, 0xc0, 0xdf,
+ 0x56, 0xd6, 0x85, 0xe9, 0x54, 0xb1, 0x71, 0xd6, 0x8a, 0x03, 0x3e, 0xef,
+ 0xf2, 0x57, 0x87, 0x4b, 0xe4, 0x10, 0x8d, 0x2f, 0xc8, 0xf1, 0xb2, 0xd2,
+ 0xc4, 0x4f, 0xe0, 0xf7, 0xc4, 0xfd, 0xc5, 0x48, 0x4a, 0x58, 0xc3, 0x99,
+ 0xc4, 0x73, 0x50, 0x0b, 0x32, 0x2d, 0x14, 0x40, 0xcf, 0x2f, 0xe6, 0x73,
+ 0x36, 0x27, 0xbc, 0x8c, 0x85, 0x63, 0x29, 0x9c, 0x3d, 0x71, 0x81, 0x46,
+ 0xfd, 0x00, 0x7f, 0x06, 0x39, 0xa9, 0x3b, 0x7c, 0xa8, 0x26, 0x8c, 0x5e,
+ 0x37, 0xb8, 0x07, 0x12, 0xb7, 0xd1, 0xd6, 0x9f, 0x0c, 0x1c, 0xce, 0x43,
+ 0x98, 0xee, 0xdf, 0xd8, 0xb9, 0xea, 0x66, 0x99, 0xdd, 0xc2, 0x14, 0xfc,
+ 0x72, 0x68, 0x4d, 0xf6, 0xc5, 0xe6, 0x17, 0xdc, 0x32, 0x17, 0xff, 0xc2,
+ 0xfd, 0x97, 0xcd, 0x08, 0x88, 0x59, 0x7e, 0x87, 0x8e, 0x3c, 0x01, 0xf1,
+ 0x76, 0x94, 0xd3, 0xd0, 0xec, 0xc6, 0xe6, 0x7e, 0xc0, 0xac, 0xcc, 0x06,
+ 0x06, 0xd3, 0xd9, 0xf5, 0xa4, 0x6d, 0xb3, 0x79, 0xa0, 0x46, 0x47, 0xa4,
+ 0x48, 0x14, 0x5b, 0x01, 0xa4, 0xa8, 0x22, 0x49, 0x53, 0xbd, 0x3c, 0x76,
+ 0xb8, 0x24, 0xb2, 0x47, 0x93, 0x8d, 0xbe, 0x49, 0xd8, 0x2d, 0x4e, 0xf7,
+ 0xa9, 0xc0, 0x4c, 0xea, 0xb5, 0xf9, 0x6d, 0x74, 0xc0, 0x4a, 0x0a, 0x39,
+ 0xb2, 0x80, 0x08, 0x6c, 0x29, 0xbf, 0x64, 0xa2, 0x18, 0x9d, 0x0d, 0xfb,
+ 0xc2, 0xba, 0x8d, 0x29, 0x03, 0x7c, 0xcb, 0x96, 0x72, 0x25, 0x99, 0x21,
+ 0xb2, 0x79, 0x10, 0x78, 0xf6, 0x93, 0xef, 0x92, 0x5d, 0x88, 0xb3, 0x51,
+ 0xe6, 0x87, 0x8d, 0x4d, 0xca, 0x9e, 0xc5, 0x0d, 0xcf, 0x7d, 0x66, 0x78,
+ 0x5e, 0xe7, 0x85, 0x76, 0xa5, 0x5e, 0x1d, 0x75, 0xe0, 0x46, 0x3f, 0xc9,
+ 0x03, 0x71, 0x78, 0x4c, 0xb0, 0xbf, 0x3c, 0xf7, 0xab, 0xbc, 0xc5, 0xfd,
+ 0x37, 0xa4, 0xfa, 0xec, 0xa7, 0xb8, 0xa0, 0x31, 0xdd, 0xe5, 0x67, 0x2d,
+ 0xae, 0xad, 0x5f, 0xcf, 0x02, 0xd5, 0xa2, 0x12, 0x56, 0xe7, 0x73, 0xc0,
+ 0xcc, 0x63, 0x80, 0x42, 0x77, 0x9f, 0x86, 0x05, 0xe2, 0x27, 0x65, 0xc2,
+ 0xe9, 0x38, 0x88, 0xe0, 0x60, 0x4e, 0x56, 0xba, 0xc2, 0x4a, 0xc0, 0x02,
+ 0xcf, 0x42, 0xb1, 0x63, 0x4e, 0xdf, 0x00, 0x89, 0xa1, 0xaa, 0x8a, 0x3d,
+ 0xc2, 0xbf, 0x6e, 0x3b, 0xda, 0x78, 0x66, 0x73, 0x70, 0xd8, 0xbc, 0x47,
+ 0x78, 0x4c, 0x17, 0xd6, 0x0b, 0x71, 0xfe, 0xfa, 0x0e, 0xa9, 0x73, 0xb8,
+ 0x5d, 0x3b, 0xd0, 0xb4, 0xf4, 0xf9, 0x48, 0x08, 0xad, 0x8c, 0x50, 0xa5,
+ 0x6f, 0x96, 0x08, 0x00, 0x88, 0xe2, 0x8e, 0xbb, 0x46, 0x49, 0x63, 0xb3,
+ 0x22, 0xc1, 0x39, 0xd7, 0x27, 0xec, 0x01, 0xd5, 0xb1, 0x13, 0xbb, 0x4c,
+ 0xe0, 0x1a, 0x72, 0x9d, 0xd0, 0xb0, 0xc8, 0x6f, 0x13, 0xa6, 0x39, 0x32,
+ 0x2c, 0x08, 0x79, 0x89, 0xf5, 0x28, 0xf1, 0xc5, 0x02, 0x97, 0xe3, 0xa6,
+ 0x10, 0x98, 0xaf, 0xe0, 0x05, 0x5d, 0xb9, 0x43, 0xa5, 0x40, 0x36, 0x58,
+ 0x5e, 0x98, 0xd2, 0xeb, 0x04, 0x96, 0xa0, 0x7d, 0x1c, 0xf8, 0xb8, 0x46,
+ 0x08, 0xf4, 0x16, 0xbe, 0xf7, 0x86, 0x0e, 0x90, 0x9c, 0x57, 0x5c, 0x7d,
+ 0xf7, 0xe6, 0x8b, 0x83, 0xa6, 0xfd, 0xde, 0x9b, 0x53, 0x77, 0xef, 0x7d,
+ 0xe0, 0x44, 0x9f, 0xdf, 0x78, 0x12, 0x68, 0x89, 0x1c, 0x60, 0xd1, 0x21,
+ 0x10, 0x15, 0xbb, 0xc2, 0x30, 0x94, 0xd5, 0xf4, 0x72, 0x51, 0x03, 0xd5,
+ 0x9e, 0x5a, 0x1c, 0x63, 0x4e, 0xe3, 0x21, 0x6b, 0x0d, 0xb5, 0x70, 0xae,
+ 0x6a, 0x18, 0x5b, 0xf0, 0x57, 0x69, 0xa0, 0xd0, 0x65, 0x15, 0xc9, 0x07,
+ 0x54, 0xa5, 0x32, 0x30, 0xe3, 0xbf, 0xe1, 0x1a, 0x58, 0xd2, 0xc1, 0xf1,
+ 0x78, 0x08, 0xb4, 0x27, 0x2d, 0xad, 0x92, 0xf9, 0x6f, 0x98, 0x06, 0x0c,
+ 0x1a, 0x6d, 0x85, 0x79, 0x60, 0xf4, 0x2d, 0x4f, 0xe5, 0xe4, 0x66, 0x82,
+ 0xa6, 0x4e, 0x84, 0x8b, 0xbc, 0x0d, 0x26, 0x0d, 0xc2, 0x8f, 0xbb, 0x9a,
+ 0x01, 0x77, 0x77, 0x88, 0x4e, 0xd0, 0x5a, 0x09, 0x18, 0x82, 0xec, 0xb0,
+ 0x48, 0x4d, 0x95, 0x5d, 0x2a, 0xe0, 0xf0, 0x9c, 0xb4, 0x25, 0x86, 0x75,
+ 0xac, 0xd9, 0x58, 0xbc, 0x78, 0x17, 0x2b, 0x2f, 0xd0, 0xf0, 0x80, 0x13,
+ 0x9e, 0xc4, 0x3a, 0xd3, 0x1f, 0x98, 0x2e, 0x82, 0xb5, 0x6c, 0x19, 0x36,
+ 0x50, 0xc4, 0x62, 0x0d, 0xb4, 0x02, 0xa4, 0xa9, 0x44, 0xce, 0x63, 0xee,
+ 0x2b, 0x07, 0x9f, 0x6f, 0x75, 0xc5, 0xa6, 0xc1, 0x28, 0x97, 0xfb, 0x0c,
+ 0xa1, 0xd2, 0xfa, 0x5a, 0x04, 0x3e, 0x06, 0x3f, 0x35, 0x4f, 0xb6, 0x20,
+ 0xb0, 0xbf, 0xec, 0xef, 0xef, 0x62, 0xa8, 0x3b, 0xec, 0x4a, 0x62, 0x76,
+ 0xe7, 0x3a, 0x0f, 0x8c, 0xf7, 0xa0, 0x0c, 0x65, 0x7b, 0x3a, 0x77, 0xcb,
+ 0x9c, 0xc6, 0xa9, 0x84, 0x49, 0xd7, 0xa8, 0xe1, 0x60, 0xd0, 0x11, 0x31,
+ 0x4e, 0xcb, 0x80, 0xef, 0x82, 0x13, 0xd8, 0x84, 0xe0, 0x4c, 0x1f, 0x48,
+ 0xea, 0x82, 0xc5, 0xa4, 0x4d, 0xa7, 0x08, 0x17, 0xa6, 0x43, 0x4d, 0x6c,
+ 0x74, 0xd6, 0xb0, 0xfb, 0x2b, 0xef, 0xc9, 0xab, 0xfe, 0x5e, 0xed, 0x9e,
+ 0x54, 0xb3, 0x79, 0xef, 0x7e, 0xf8, 0x44, 0xc8, 0xe3, 0xfa, 0xec, 0x3d,
+ 0xa5, 0x7c, 0x28, 0xbb, 0xa1, 0x4e, 0x2c, 0xea, 0x7d, 0x46, 0xbf, 0x0e,
+ 0xbb, 0x08, 0x11, 0xa1, 0x9b, 0x26, 0xf2, 0x9c, 0xcc, 0x5a, 0x53, 0x33,
+ 0x2a, 0xe6, 0xbe, 0x42, 0xde, 0xc1, 0x90, 0xec, 0xc6, 0x5e, 0x2c, 0x66,
+ 0x69, 0xb0, 0xb0, 0x47, 0x33, 0x6b, 0x93, 0x87, 0x64, 0xb4, 0xa4, 0xf0,
+ 0x34, 0x2a, 0x87, 0x88, 0x21, 0xb5, 0xda, 0x6f, 0xee, 0xf8, 0xca, 0xc5,
+ 0x3b, 0x0e, 0x3f, 0x68, 0x6e, 0x46, 0x73, 0xed, 0xbc, 0x78, 0xcf, 0x69,
+ 0xc6, 0xf5, 0xed, 0xa1, 0xdf, 0x79, 0x21, 0x62, 0xca, 0xe7, 0x47, 0x81,
+ 0x08, 0x24, 0x95, 0x4e, 0x33, 0x56, 0x39, 0xde, 0xa7, 0xa3, 0x22, 0x2f,
+ 0xf3, 0x09, 0x67, 0xaa, 0x39, 0xe6, 0xd1, 0xe9, 0xe9, 0x20, 0xba, 0x4f,
+ 0x86, 0x5a, 0x12, 0xdb, 0xf7, 0x7d, 0xc8, 0xc4, 0x43, 0x30, 0x30, 0x52,
+ 0xa4, 0x49, 0x85, 0x5b, 0xa6, 0xa1, 0x50, 0x84, 0x88, 0xa2, 0xbe, 0x74,
+ 0x02, 0xa0, 0x42, 0xea, 0x3b, 0xb6, 0xf6, 0x9c, 0xb1, 0x60, 0x5a, 0x24,
+ 0x79, 0x20, 0x1e, 0xce, 0x13, 0x50, 0xb1, 0xc2, 0x74, 0x42, 0x32, 0x7c,
+ 0x18, 0x4b, 0xd7, 0x34, 0xf6, 0x0c, 0x00, 0xdb, 0x41, 0x0d, 0x45, 0x3c,
+ 0x2a, 0xb7, 0xe8, 0x2a, 0xf3, 0x6a, 0x55, 0x86, 0x09, 0xf6, 0x19, 0xc5,
+ 0x28, 0x7f, 0xdd, 0x69, 0x97, 0x8d, 0xf3, 0x82, 0x32, 0x90, 0x9c, 0x7e,
+ 0x46, 0xd4, 0xf9, 0x73, 0x59, 0x50, 0xd1, 0x15, 0xc1, 0x97, 0xfa, 0xfc,
+ 0xf4, 0xfe, 0x86, 0xc3, 0xb5, 0x7a, 0x0a, 0x28, 0x9c, 0xa8, 0xca, 0x96,
+ 0x4b, 0x7b, 0xa4, 0x6b, 0x06, 0xce, 0xdf, 0x8a, 0x1b, 0xe7, 0x34, 0x82,
+ 0x50, 0x87, 0x72, 0x1e, 0xb6, 0xa4, 0x54, 0x72, 0x14, 0xde, 0xa4, 0xd3,
+ 0x96, 0xf6, 0xb6, 0x06, 0xdc, 0x81, 0x84, 0x13, 0xdd, 0x58, 0x9a, 0x8d,
+ 0x88, 0xcc, 0x82, 0xef, 0x68, 0xe4, 0xf5, 0x6c, 0xa6, 0xaa, 0x27, 0xdf,
+ 0x01, 0xdb, 0x42, 0x7d, 0x6d, 0x98, 0x18, 0x8e, 0xde, 0xd8, 0x88, 0x27,
+ 0x91, 0x64, 0xa9, 0x4c, 0xd3, 0x4d, 0x54, 0x60, 0x7e, 0x61, 0x28, 0xa9,
+ 0x3e, 0x15, 0x73, 0x03, 0xac, 0xd2, 0x57, 0xd7, 0xfa, 0x54, 0xcb, 0xf3,
+ 0x00, 0x28, 0x1c, 0x57, 0x41, 0x58, 0xe9, 0x6b, 0x03, 0xce, 0xa7, 0x48,
+ 0x56, 0x20, 0x1f, 0xc5, 0x09, 0xc6, 0xca, 0xbf, 0xc7, 0x74, 0x3c, 0xf5,
+ 0x48, 0x97, 0x7b, 0x75, 0x73, 0xfc, 0xc1, 0x4e, 0x6f, 0x98, 0xc4, 0xd8,
+ 0x61, 0xe9, 0xb0, 0x42, 0x85, 0x29, 0x5c, 0x99, 0xd2, 0x52, 0x98, 0xf2,
+ 0x35, 0xbf, 0x79, 0x4d, 0x9a, 0x16, 0x1e, 0xed, 0xc5, 0xd1, 0x87, 0xeb,
+ 0x77, 0x51, 0xb4, 0x83, 0x5d, 0x22, 0x9e, 0x53, 0x99, 0x42, 0x1c, 0xa1,
+ 0x36, 0x8a, 0xde, 0x6a, 0x6a, 0xd4, 0x9c, 0xfd, 0x75, 0x99, 0xd5, 0x1b,
+ 0xb8, 0x84, 0x7c, 0xf3, 0x24, 0x3f, 0x45, 0xf4, 0x72, 0x99, 0x74, 0x2d,
+ 0xb3, 0x5a, 0xdb, 0x7b, 0xf1, 0x89, 0xf4, 0x7a, 0x5c, 0x3d, 0x07, 0x57,
+ 0xfb, 0x89, 0x30, 0x66, 0x19, 0x86, 0xe7, 0x90, 0xd9, 0xca, 0x74, 0x15,
+ 0x3f, 0x48, 0xe3, 0xa5, 0xd4, 0x4f, 0x09, 0x1d, 0xfc, 0x55, 0xb3, 0x3d,
+ 0xef, 0xd5, 0xdb, 0xe3, 0xc6, 0x70, 0x2f, 0x5e, 0xee, 0x6f, 0x7d, 0xc2,
+ 0x24, 0xbd, 0x1c, 0xbd, 0x23, 0xe2, 0x45, 0x08, 0xa2, 0xe6, 0x7c, 0x5f,
+ 0x60, 0xd9, 0xaa, 0xfa, 0x19, 0x72, 0x79, 0xc8, 0x2d, 0xab, 0x2f, 0xab,
+ 0x31, 0x66, 0x6b, 0x19, 0xd4, 0x8d, 0x42, 0xd5, 0xfd, 0x7f, 0xfc, 0xd3,
+ 0x2f, 0xab, 0xfd, 0xf1, 0x67, 0xf6, 0x13, 0x4f, 0xa8, 0xa9, 0xa5, 0x4d,
+ 0xf4, 0x57, 0x36, 0x53, 0x5a, 0x89, 0x8c, 0x37, 0x7a, 0xed, 0x8f, 0x6b,
+ 0xa6, 0xf5, 0x14, 0xe9, 0xfc, 0x61, 0xdc, 0x7e, 0x11, 0x9e, 0x32, 0x37,
+ 0x3d, 0x58, 0x02, 0x25, 0x8f, 0x1d, 0x75, 0x40, 0xa1, 0xa9, 0x4c, 0x67,
+ 0xbe, 0x71, 0x5b, 0xe3, 0x38, 0xed, 0xa0, 0x24, 0xf0, 0x5d, 0xea, 0x26,
+ 0x47, 0x77, 0x36, 0xe7, 0x56, 0xd1, 0xfc, 0x51, 0x15, 0xa5, 0xf2, 0xe5,
+ 0x34, 0x6b, 0xf1, 0x5d, 0x4a, 0x02, 0xd1, 0x3f, 0xe0, 0x04, 0xba, 0xd5,
+ 0x7d, 0xfe, 0xcf, 0xba, 0x1f, 0x13, 0x34, 0x0c, 0x9c, 0xf1, 0xc7, 0x3f,
+ 0x6e, 0x63, 0x45, 0x50, 0xa7, 0x39, 0x44, 0x4e, 0x0d, 0x09, 0xcc, 0xa9,
+ 0x1a, 0x05, 0x69, 0x15, 0x38, 0xaf, 0x7e, 0x10, 0x8b, 0x8d, 0xbb, 0xa8,
+ 0x37, 0xfe, 0xb3, 0x8f, 0xff, 0xfd, 0x71, 0xbb, 0xb7, 0xff, 0xb3, 0xf9,
+ 0xe8, 0x1f, 0xb7, 0x3f, 0xfe, 0x71, 0xa7, 0x13, 0x2c, 0xab, 0xb3, 0xb5,
+ 0xff, 0x4e, 0x86, 0x22, 0xaa, 0xb3, 0xd9, 0xa3, 0x94, 0x69, 0x48, 0x84,
+ 0xd1, 0xf6, 0xba, 0xa4, 0xce, 0xd9, 0x3e, 0x3e, 0x12, 0xfa, 0xad, 0x1a,
+ 0x9a, 0xaa, 0x36, 0xbb, 0x54, 0xe6, 0x70, 0x9f, 0xf3, 0xcb, 0xe2, 0x53,
+ 0xe1, 0xfa, 0x3f, 0xad, 0x1f, 0xf0, 0x78, 0x21, 0x42, 0x31, 0xb9, 0xb4,
+ 0x81, 0x68, 0x29, 0x0a, 0xb1, 0xe1, 0xef, 0x86, 0xa4, 0x45, 0x81, 0x34,
+ 0x8b, 0xa3, 0xc6, 0xa6, 0x0f, 0x87, 0xe6, 0x27, 0x59, 0xe2, 0x15, 0x62,
+ 0xc5, 0x8c, 0x11, 0x95, 0x08, 0xd8, 0x5d, 0x64, 0xb8, 0x02, 0xbc, 0x69,
+ 0xc2, 0xd6, 0x12, 0xcd, 0xa2, 0xd9, 0xdb, 0x9e, 0xe9, 0xd8, 0xba, 0xbb,
+ 0xc9, 0x2d, 0xfe, 0xba, 0xd4, 0x86, 0xf6, 0x56, 0xa0, 0xc0, 0x48, 0x69,
+ 0x69, 0x63, 0x2f, 0xf4, 0x33, 0x89, 0xbb, 0x50, 0x7d, 0x3f, 0xc9, 0xb8,
+ 0x32, 0x0f, 0x45, 0xf2, 0xe2, 0x21, 0x76, 0xa2, 0xac, 0x35, 0xf6, 0x32,
+ 0x5d, 0x9a, 0x86, 0x16, 0x6d, 0x2a, 0x2e, 0x5b, 0x36, 0xc4, 0xdd, 0x0a,
+ 0x67, 0x13, 0x64, 0xa3, 0x68, 0x73, 0x56, 0x38, 0x75, 0xb9, 0x28, 0x16,
+ 0xb3, 0x47, 0xab, 0xa4, 0xe7, 0x54, 0xc5, 0x52, 0x15, 0x2e, 0xfd, 0xd4,
+ 0xc9, 0x70, 0x93, 0xb0, 0x5e, 0xcf, 0x8b, 0x45, 0x02, 0x11, 0x8d, 0x1f,
+ 0x81, 0x13, 0x32, 0xb0, 0xab, 0xc1, 0x89, 0x54, 0x0f, 0x81, 0xf0, 0x1a,
+ 0xa0, 0xb3, 0xb5, 0xde, 0x5a, 0xb4, 0x4e, 0x95, 0xf3, 0x64, 0xd6, 0x45,
+ 0xe3, 0xb8, 0xbc, 0xd9, 0x08, 0x79, 0x21, 0xad, 0xe3, 0xcf, 0x32, 0x2a,
+ 0xe9, 0xcc, 0x41, 0x12, 0x93, 0x39, 0xd4, 0x2a, 0x6f, 0xf5, 0x05, 0x83,
+ 0x6a, 0x60, 0x92, 0x60, 0xcf, 0x44, 0x92, 0x6b, 0x3f, 0xe9, 0xa1, 0xb1,
+ 0x48, 0x3f, 0xfd, 0x0f, 0x7e, 0xd6, 0x8b, 0x63, 0xe0, 0x93, 0x9c, 0xe5,
+ 0xd5, 0xe3, 0x02, 0x28, 0x2b, 0x44, 0xb5, 0x97, 0x37, 0xe6, 0x43, 0x87,
+ 0x52, 0x80, 0xe2, 0xf2, 0x96, 0x03, 0xa5, 0xe3, 0xdc, 0xf4, 0xfd, 0xb6,
+ 0x7e, 0x94, 0xae, 0x30, 0xd4, 0xde, 0xff, 0xec, 0x3a, 0x63, 0x09, 0x3e,
+ 0x4a, 0x38, 0x05, 0x08, 0xcd, 0xcb, 0x22, 0x9f, 0x95, 0x35, 0x68, 0x2d,
+ 0xa9, 0x84, 0x46, 0xef, 0xb6, 0x71, 0xd1, 0xf0, 0x37, 0xcb, 0x14, 0x39,
+ 0x71, 0x9c, 0x05, 0x52, 0x8c, 0xcb, 0x40, 0x04, 0x08, 0x65, 0x9c, 0x76,
+ 0xbc, 0x06, 0x4a, 0x0e, 0x48, 0x28, 0x6b, 0x1c, 0xd4, 0xe6, 0xbc, 0xaa,
+ 0x3d, 0x45, 0xed, 0xc1, 0xf6, 0x5c, 0x02, 0xa9, 0x42, 0xa2, 0x7a, 0x76,
+ 0xbb, 0x0c, 0xa7, 0x5f, 0x3a, 0x52, 0x0e, 0x46, 0xca, 0xe3, 0x82, 0xb7,
+ 0x34, 0x14, 0x0f, 0x4f, 0xa6, 0x08, 0xf5, 0x82, 0xda, 0x07, 0x56, 0xbb,
+ 0xc3, 0x5d, 0xca, 0x9e, 0x68, 0xdd, 0xdc, 0x70, 0x82, 0x60, 0x3c, 0x36,
+ 0x3a, 0x5c, 0xdc, 0x14, 0xa0, 0xc9, 0xfb, 0x75, 0x73, 0x83, 0x77, 0x11,
+ 0xe3, 0xa2, 0xc2, 0x53, 0xfc, 0x8c, 0xb9, 0xec, 0x0e, 0x74, 0xe4, 0x27,
+ 0xc4, 0x3b, 0xc4, 0x84, 0xa0, 0x5e, 0x5c, 0xf6, 0x3c, 0xea, 0xb8, 0xb6,
+ 0x05, 0xd3, 0x1c, 0x0f, 0xca, 0xd9, 0xb6, 0xc4, 0x5c, 0x54, 0x0c, 0x91,
+ 0x66, 0x88, 0xa9, 0x03, 0xf4, 0xb1, 0xd9, 0xef, 0x6f, 0xa2, 0xfc, 0xd9,
+ 0x84, 0x3f, 0x52, 0xa7, 0x41, 0x4c, 0xb3, 0x0b, 0x21, 0x30, 0x2d, 0xfc,
+ 0x16, 0xfa, 0xf3, 0xa4, 0x63, 0xaf, 0xd3, 0xd5, 0xed, 0x6f, 0x4b, 0x4a,
+ 0x25, 0x2e, 0xc0, 0x32, 0x28, 0xb8, 0x26, 0x1b, 0xd1, 0xee, 0x8d, 0xba,
+ 0x13, 0x48, 0x2a, 0x94, 0x10, 0x49, 0x29, 0xf8, 0x1f, 0x8d, 0x7e, 0x96,
+ 0x68, 0xa2, 0x93, 0x27, 0x0d, 0x17, 0x91, 0x56, 0x8a, 0xba, 0x46, 0xf5,
+ 0xf0, 0xf1, 0x4a, 0xdb, 0x7c, 0x6f, 0xa7, 0x71, 0x7c, 0x29, 0x1c, 0xf8,
+ 0x18, 0xac, 0x1c, 0x02, 0x6b, 0xc5, 0x6c, 0x4a, 0xbf, 0x1e, 0x4b, 0x1c,
+ 0xa3, 0x1c, 0x48, 0x6f, 0xc2, 0xcf, 0xb1, 0xb8, 0x32, 0x0a, 0xa4, 0xd3,
+ 0x66, 0x50, 0x72, 0xc7, 0x3d, 0xc5, 0x87, 0x3f, 0x42, 0xf9, 0x58, 0x92,
+ 0x6d, 0x4d, 0xe4, 0x90, 0x98, 0xd6, 0x29, 0xa2, 0x95, 0xc6, 0x9c, 0xcd,
+ 0x45, 0x66, 0x98, 0xa4, 0x77, 0x84, 0x3c, 0x58, 0xc6, 0x7d, 0x64, 0x9c,
+ 0x5e, 0xce, 0x14, 0x60, 0xcd, 0x88, 0x77, 0x0b, 0x3b, 0xff, 0xe6, 0xe4,
+ 0x4a, 0x54, 0x4d, 0x72, 0x26, 0xd9, 0x26, 0xd5, 0x7e, 0x0f, 0x77, 0x34,
+ 0x4a, 0x5f, 0xec, 0x91, 0xed, 0x88, 0xfb, 0x56, 0xde, 0xc4, 0x3b, 0xfb,
+ 0x2f, 0x64, 0xda, 0x8a, 0x7e, 0x46, 0x3a, 0xd8, 0x1a, 0xff, 0x6a, 0x73,
+ 0x93, 0x13, 0x1f, 0xd0, 0xcd, 0xe0, 0xf1, 0x78, 0xf2, 0xf9, 0xe1, 0xb3,
+ 0x5f, 0xac, 0x85, 0x53, 0x1e, 0xd5, 0x0a, 0xd1, 0x56, 0xc9, 0xd4, 0xab,
+ 0x8d, 0x52, 0x33, 0xdd, 0x46, 0x1b, 0xdd, 0x5a, 0x1b, 0x35, 0xaa, 0x43,
+ 0x8a, 0x57, 0xf4, 0x9f, 0x10, 0xbc, 0x10, 0x6a, 0xf4, 0x0a, 0xdc, 0x41,
+ 0xeb, 0x8a, 0x11, 0x87, 0xd5, 0xd9, 0x1d, 0xce, 0x66, 0xc4, 0x06, 0xdd,
+ 0x23, 0x1f, 0x94, 0x86, 0xeb, 0x75, 0x88, 0xea, 0xdc, 0x91, 0x25, 0x91,
+ 0x17, 0x91, 0xcc, 0x11, 0xa7, 0x11, 0x29, 0x4f, 0x03, 0x68, 0xec, 0x5e,
+ 0xa3, 0xc3, 0x5c, 0x0e, 0xbd, 0x8c, 0x13, 0xf9, 0xa6, 0xc1, 0x4d, 0x25,
+ 0xdf, 0x8c, 0x93, 0xe7, 0x69, 0xaf, 0x0b, 0x48, 0xf6, 0x82, 0x95, 0x04,
+ 0x67, 0x03, 0x3c, 0x2f, 0x00, 0xe1, 0x74, 0x2b, 0x1c, 0x0e, 0x25, 0xfa,
+ 0x8d, 0x92, 0x94, 0x81, 0xb4, 0xe0, 0x6c, 0x31, 0x82, 0xe7, 0xdd, 0x03,
+ 0x20, 0x85, 0x4d, 0xa4, 0x03, 0xb1, 0x1b, 0xbd, 0x86, 0x18, 0x18, 0x2f,
+ 0x78, 0xd5, 0xdf, 0x3a, 0x50, 0x88, 0xdd, 0x6e, 0xf4, 0x4d, 0xb6, 0xc4,
+ 0xf3, 0xc0, 0x45, 0x7f, 0x33, 0xf8, 0xd6, 0x2b, 0x96, 0xc3, 0x37, 0xf6,
+ 0x76, 0xf1, 0x8d, 0xf3, 0x01, 0x3f, 0x75, 0x9f, 0xcf, 0x26, 0xf0, 0x66,
+ 0xe8, 0xb9, 0x97, 0xf8, 0x1c, 0x50, 0xdc, 0xb8, 0x9a, 0x95, 0x4a, 0x54,
+ 0x2b, 0x66, 0xb2, 0xb7, 0x17, 0x98, 0x49, 0xf7, 0x17, 0x7f, 0xe8, 0x82,
+ 0x5c, 0xae, 0x48, 0x4c, 0xd8, 0x47, 0x8a, 0x08, 0x87, 0xca, 0x08, 0x0c,
+ 0x60, 0xf4, 0xa7, 0x64, 0xbe, 0x0c, 0xfc, 0xf0, 0x9c, 0x2e, 0x73, 0x05,
+ 0xe1, 0xde, 0x55, 0x84, 0x27, 0xf0, 0x72, 0x67, 0x77, 0x7b, 0xf3, 0x45,
+ 0x7f, 0xaf, 0xbf, 0x63, 0xd2, 0xfa, 0x80, 0x0e, 0xee, 0xb0, 0x0b, 0x0a,
+ 0x66, 0x51, 0x04, 0x42, 0x0f, 0x94, 0xd0, 0x92, 0x66, 0x30, 0x8e, 0x03,
+ 0x73, 0x21, 0x68, 0xf5, 0x36, 0xa1, 0x07, 0x41, 0x2d, 0xb6, 0xdd, 0xfa,
+ 0xb0, 0x7e, 0xa0, 0xeb, 0x2a, 0x62, 0x65, 0x50, 0x61, 0x8b, 0xf8, 0x99,
+ 0x30, 0xc3, 0x99, 0xdc, 0x23, 0xc3, 0xf4, 0x6f, 0xcb, 0xb4, 0x02, 0x2d,
+ 0x00, 0x99, 0x0a, 0x7a, 0xcf, 0x14, 0x36, 0x9f, 0x20, 0xc3, 0x68, 0x1d,
+ 0x78, 0x23, 0x02, 0x6e, 0x49, 0x9e, 0x3c, 0xe5, 0x4f, 0xdb, 0x40, 0x20,
+ 0xd7, 0xa0, 0xa5, 0xc4, 0xbb, 0x22, 0x6e, 0x57, 0x03, 0x76, 0x64, 0x36,
+ 0xa2, 0x2e, 0x88, 0x60, 0xe4, 0xdd, 0xa1, 0xc7, 0xde, 0xef, 0x4e, 0x2b,
+ 0xdd, 0x6a, 0x08, 0x36, 0x42, 0x83, 0x2e, 0x9a, 0x5d, 0x62, 0xb1, 0xed,
+ 0xe5, 0x07, 0x5c, 0xaf, 0xc2, 0xde, 0x27, 0x5a, 0xb7, 0xc7, 0x9d, 0xec,
+ 0x3e, 0xd4, 0x4e, 0x5c, 0x50, 0xe1, 0xb1, 0x5e, 0x8c, 0x63, 0x0b, 0x0c,
+ 0xe5, 0x47, 0x2c, 0x0a, 0x0b, 0xff, 0x56, 0xa0, 0xd2, 0xac, 0xce, 0x84,
+ 0x50, 0xfc, 0x8f, 0x3a, 0x00, 0x08, 0xff, 0xab, 0xd1, 0x2b, 0xb9, 0xb5,
+ 0x4d, 0x66, 0xb3, 0x99, 0xac, 0x8c, 0xf9, 0xab, 0xa9, 0x6c, 0xf7, 0xb7,
+ 0xa7, 0xb2, 0x9d, 0xe7, 0x52, 0x99, 0x25, 0x32, 0xbc, 0x67, 0x2b, 0x48,
+ 0x8c, 0x8c, 0x20, 0x16, 0xbd, 0x2d, 0x54, 0xe6, 0x92, 0x99, 0xe4, 0xde,
+ 0xf8, 0x84, 0x56, 0xa3, 0x33, 0x43, 0x66, 0x2d, 0x54, 0xc6, 0x18, 0x61,
+ 0x4c, 0x63, 0xab, 0x49, 0x4c, 0xcb, 0xd1, 0xa3, 0xd5, 0x54, 0x56, 0xcf,
+ 0xf8, 0x5e, 0x4d, 0x67, 0x96, 0x1c, 0x9e, 0x4d, 0x65, 0xda, 0x95, 0x88,
+ 0xb9, 0x4e, 0x0b, 0x89, 0xd5, 0x68, 0x4c, 0x88, 0x2c, 0x48, 0x65, 0xaf,
+ 0x42, 0x54, 0xb6, 0xfb, 0x1c, 0x2a, 0x83, 0x03, 0x9d, 0xa1, 0xa8, 0xac,
+ 0x51, 0xd9, 0xde, 0x6f, 0x4b, 0x65, 0x88, 0x51, 0xd4, 0xac, 0x75, 0x8d,
+ 0x8e, 0xfe, 0xd5, 0x73, 0x8c, 0x69, 0x58, 0x1d, 0xd5, 0x2b, 0x01, 0xfd,
+ 0x65, 0x9c, 0xa2, 0x71, 0xa1, 0x9f, 0x3c, 0xb1, 0x3a, 0x2a, 0xd0, 0xf6,
+ 0x2f, 0x3e, 0xb1, 0x9d, 0xa6, 0x65, 0x52, 0x24, 0xec, 0x35, 0xff, 0x51,
+ 0x83, 0x17, 0x07, 0x9b, 0x9b, 0x3f, 0x93, 0x0f, 0xe8, 0x00, 0x65, 0xdf,
+ 0xcf, 0x5e, 0x23, 0xf1, 0x80, 0x3a, 0x3b, 0xb8, 0x38, 0xfe, 0x76, 0x20,
+ 0xde, 0x77, 0xd1, 0x39, 0x54, 0x27, 0x61, 0x3f, 0x25, 0xe8, 0xaa, 0x54,
+ 0xbd, 0xed, 0xa9, 0xb9, 0xdc, 0xca, 0xb6, 0xf7, 0xd0, 0x55, 0x0f, 0x38,
+ 0xa5, 0x4d, 0x09, 0x33, 0x26, 0x90, 0x3a, 0xa9, 0x8b, 0xe6, 0x32, 0x0d,
+ 0x19, 0x55, 0x1a, 0xa5, 0xfb, 0x86, 0x1a, 0x4f, 0xc4, 0xc4, 0x01, 0xc4,
+ 0x35, 0x93, 0x39, 0x2f, 0xae, 0x57, 0x37, 0x05, 0x15, 0xa6, 0xd0, 0xa3,
+ 0x1b, 0x1a, 0xfc, 0x5a, 0x35, 0x3b, 0x99, 0xd7, 0x3b, 0x02, 0xf3, 0x5d,
+ 0x14, 0x1a, 0x50, 0x0c, 0x19, 0xb9, 0xe6, 0xb7, 0xea, 0x09, 0x0c, 0x81,
+ 0x56, 0x08, 0x38, 0x9d, 0xb3, 0xdf, 0xf8, 0x9e, 0x97, 0x02, 0x98, 0x3e,
+ 0xd4, 0x30, 0x72, 0x50, 0x3c, 0x50, 0x0f, 0xe8, 0x4a, 0xdb, 0xac, 0x3c,
+ 0x70, 0x53, 0x0c, 0x1a, 0x84, 0x13, 0xb0, 0x12, 0x6a, 0x64, 0x52, 0xee,
+ 0xc1, 0x90, 0x4d, 0xbf, 0x12, 0xff, 0x22, 0xc6, 0xdf, 0xf0, 0xdf, 0xf7,
+ 0xf1, 0xbb, 0xe8, 0xb1, 0xe6, 0x7f, 0xdd, 0xe0, 0x3f, 0xe9, 0x7b, 0x8a,
+ 0x7f, 0x55, 0x3b, 0xe5, 0x51, 0x78, 0xa3, 0xdd, 0x8a, 0x27, 0x83, 0xcd,
+ 0x70, 0x9e, 0xdb, 0x9a, 0x40, 0x77, 0xd5, 0x2e, 0x8c, 0x9e, 0x97, 0xb6,
+ 0x62, 0xb8, 0x30, 0x8d, 0xbc, 0x17, 0x56, 0xb8, 0x12, 0x17, 0x24, 0x53,
+ 0x51, 0x0f, 0xdc, 0xd6, 0x67, 0x36, 0xde, 0x2b, 0x07, 0xc0, 0x8d, 0x42,
+ 0x03, 0x28, 0xd6, 0xdc, 0xd8, 0x43, 0xe6, 0xbd, 0xbd, 0xf5, 0xb9, 0xef,
+ 0x92, 0xf8, 0xa0, 0x15, 0x79, 0x16, 0x29, 0x92, 0xd2, 0x3a, 0x28, 0x37,
+ 0x7e, 0x68, 0xeb, 0x50, 0x42, 0x9f, 0x0d, 0x14, 0xed, 0xa1, 0xed, 0x3b,
+ 0x4e, 0xd8, 0x58, 0x1a, 0xb2, 0xdd, 0xeb, 0xe7, 0x44, 0x53, 0x0d, 0x72,
+ 0x49, 0x92, 0x4d, 0x10, 0x8e, 0x23, 0xc9, 0x4d, 0xf0, 0xf8, 0x3b, 0x7a,
+ 0x31, 0x34, 0x64, 0xf6, 0x95, 0xc5, 0xa1, 0xfb, 0xd3, 0xde, 0x16, 0x9e,
+ 0xaa, 0x8e, 0x82, 0xcd, 0x7d, 0x66, 0x1a, 0xea, 0xf8, 0xd3, 0x6e, 0xdc,
+ 0xff, 0x1d, 0x71, 0xa4, 0xf6, 0xeb, 0x56, 0xf4, 0x1f, 0xe5, 0x8e, 0x4f,
+ 0x11, 0xec, 0xa6, 0x37, 0x8c, 0x8b, 0x80, 0xcf, 0x46, 0x34, 0x44, 0xc5,
+ 0x48, 0x51, 0x84, 0x11, 0x7d, 0x8b, 0x5b, 0x5b, 0x48, 0x4e, 0xbf, 0xf9,
+ 0x21, 0x0c, 0x15, 0xf9, 0xdd, 0x32, 0x4c, 0xbc, 0xc1, 0x6d, 0x7c, 0xdd,
+ 0x65, 0x64, 0x2f, 0x07, 0xd8, 0x2b, 0x9e, 0x75, 0x31, 0x12, 0x19, 0x70,
+ 0xe7, 0xd0, 0xd9, 0xd4, 0x3e, 0x32, 0x2e, 0xe2, 0x7b, 0xc7, 0x82, 0x66,
+ 0x64, 0xfd, 0x09, 0x05, 0x1d, 0x6c, 0x06, 0x09, 0xa6, 0x7c, 0x63, 0x44,
+ 0x39, 0xa4, 0x7d, 0x94, 0xa3, 0x02, 0xdb, 0x20, 0x49, 0xb7, 0x07, 0x1a,
+ 0x6b, 0x81, 0xe8, 0x86, 0xa0, 0x76, 0x4c, 0x13, 0xad, 0xfc, 0x34, 0xab,
+ 0x56, 0x68, 0x0f, 0xc2, 0xf3, 0xe8, 0x07, 0x92, 0xaa, 0xad, 0x3b, 0x4b,
+ 0x3b, 0x91, 0xc7, 0x02, 0xfe, 0x81, 0xaf, 0x6a, 0x0d, 0xae, 0x13, 0xc6,
+ 0x28, 0x17, 0xd8, 0x84, 0x0f, 0xbe, 0x9d, 0x2e, 0x9a, 0x22, 0xba, 0xf7,
+ 0x3a, 0x7f, 0xdd, 0xdb, 0x30, 0x80, 0x6b, 0xf9, 0x5d, 0x52, 0x72, 0x4f,
+ 0x5d, 0x9c, 0x2c, 0xc6, 0x9b, 0x6f, 0xc8, 0xc9, 0x22, 0xe2, 0x8b, 0x0a,
+ 0x4e, 0x29, 0x81, 0x54, 0x60, 0xb5, 0xbc, 0xf6, 0x30, 0x3c, 0xb3, 0x02,
+ 0x43, 0xcd, 0xc2, 0xef, 0xd0, 0x1d, 0x03, 0xbb, 0x35, 0xe1, 0xfc, 0x34,
+ 0x2a, 0x49, 0xc5, 0x28, 0xbc, 0xe0, 0x40, 0xb3, 0x57, 0x3f, 0x5f, 0xd4,
+ 0x65, 0x13, 0x56, 0x37, 0x2b, 0x6f, 0x38, 0x54, 0xa6, 0xf2, 0xe5, 0x93,
+ 0xb5, 0x0b, 0x86, 0xfd, 0x4c, 0xc4, 0x89, 0x81, 0x97, 0x8f, 0x6a, 0x59,
+ 0x18, 0x41, 0x7a, 0x74, 0x93, 0xcc, 0xa5, 0x8d, 0x4e, 0x4b, 0x25, 0x78,
+ 0x6b, 0xd9, 0x74, 0x7d, 0x4e, 0x9c, 0xdc, 0x37, 0xa9, 0x16, 0xfd, 0x79,
+ 0xfe, 0x77, 0xd8, 0xe6, 0x18, 0xfb, 0xf2, 0x79, 0x57, 0x02, 0x64, 0x7d,
+ 0xc6, 0xe7, 0x82, 0x21, 0x9a, 0xcc, 0x58, 0x95, 0x91, 0x83, 0x85, 0x27,
+ 0x38, 0xdf, 0x5c, 0xb1, 0x1f, 0x45, 0xc7, 0x30, 0xe3, 0x93, 0x8f, 0x1f,
+ 0xce, 0x07, 0x1f, 0x2e, 0x9b, 0x84, 0x7d, 0x79, 0x71, 0x75, 0x7d, 0xf2,
+ 0xe6, 0xe3, 0xe5, 0xd5, 0xc5, 0xf5, 0xc5, 0xf1, 0xc5, 0x59, 0xb4, 0xbe,
+ 0xbd, 0xb1, 0xb2, 0x42, 0xcd, 0x78, 0x20, 0x1c, 0xac, 0x43, 0x9d, 0x3f,
+ 0xf3, 0x2c, 0x33, 0x8b, 0x75, 0x5c, 0x8f, 0x3f, 0xda, 0xf7, 0xda, 0xe7,
+ 0xbe, 0x16, 0x0f, 0x67, 0x57, 0x04, 0x89, 0x37, 0x62, 0xeb, 0x71, 0x34,
+ 0x5d, 0xf2, 0x4d, 0xb1, 0xd9, 0x0a, 0x8c, 0xf4, 0xe9, 0x29, 0x5c, 0x89,
+ 0x44, 0x4c, 0x9d, 0xe2, 0xa6, 0x95, 0xee, 0xb8, 0xfd, 0xa6, 0xce, 0x82,
+ 0x67, 0x40, 0x0a, 0x98, 0xa5, 0x8a, 0x72, 0x35, 0x59, 0x30, 0x22, 0x0a,
+ 0xc1, 0x68, 0x9b, 0x37, 0xa8, 0xc7, 0x80, 0x04, 0xb0, 0xf2, 0xcc, 0x68,
+ 0x74, 0x20, 0x4a, 0x2f, 0xfd, 0x5e, 0x53, 0xf2, 0x0a, 0xcc, 0x37, 0x93,
+ 0x8e, 0xa7, 0x32, 0x11, 0x8a, 0x60, 0x52, 0x2b, 0x15, 0x8e, 0xa7, 0xc3,
+ 0x03, 0xf8, 0x5b, 0x87, 0xab, 0x52, 0x65, 0x97, 0x17, 0x15, 0xe6, 0x97,
+ 0x19, 0x2d, 0xe4, 0xde, 0x99, 0x14, 0x0e, 0x87, 0x4a, 0x19, 0x61, 0x19,
+ 0x06, 0x38, 0xec, 0x89, 0x86, 0xc7, 0x18, 0xe9, 0x84, 0x6e, 0x24, 0xa9,
+ 0x2f, 0x8a, 0x91, 0x33, 0x70, 0x17, 0xf3, 0x04, 0x21, 0xf3, 0x26, 0x62,
+ 0xac, 0xa2, 0x8b, 0x67, 0xdf, 0x65, 0x82, 0x96, 0xa8, 0xe0, 0x8a, 0x02,
+ 0x09, 0x9b, 0xd0, 0xe9, 0xba, 0xa4, 0x68, 0x42, 0x5c, 0x00, 0x47, 0x13,
+ 0xe9, 0x1a, 0xec, 0x9e, 0xb7, 0x8d, 0x69, 0x35, 0xd9, 0xcf, 0xcb, 0xfe,
+ 0x8b, 0xfd, 0xfe, 0x0e, 0x02, 0x4f, 0x5c, 0xcc, 0x30, 0x8a, 0x26, 0x8a,
+ 0x05, 0x39, 0x97, 0xe9, 0x03, 0x82, 0xb2, 0x43, 0x29, 0x78, 0x76, 0xaf,
+ 0x64, 0xc4, 0x90, 0x2d, 0xa5, 0xf5, 0xb0, 0x2a, 0xc9, 0x14, 0x9a, 0x40,
+ 0xba, 0xe2, 0x0a, 0x32, 0x33, 0x02, 0x9b, 0xc0, 0x67, 0x0e, 0x24, 0x0b,
+ 0x4d, 0xf2, 0xb2, 0x9a, 0xbc, 0xf6, 0xd4, 0xf4, 0x8d, 0x1b, 0x1c, 0x5f,
+ 0x0a, 0x80, 0x80, 0x85, 0x3a, 0x20, 0x76, 0xae, 0xad, 0x9f, 0xb7, 0xfa,
+ 0x5b, 0xd1, 0xe0, 0xfd, 0xd7, 0x82, 0x32, 0xf9, 0xf5, 0x20, 0xa0, 0x09,
+ 0x90, 0x3e, 0xaf, 0xaf, 0xd7, 0xc2, 0x59, 0xb8, 0x38, 0x98, 0xdd, 0x9f,
+ 0xf1, 0x4f, 0x4d, 0x02, 0xc7, 0xbf, 0x3b, 0x2b, 0x8e, 0x3c, 0x27, 0x9f,
+ 0x6e, 0x69, 0xd7, 0x41, 0x22, 0x80, 0xfb, 0x5a, 0x26, 0xe1, 0x25, 0xf7,
+ 0x57, 0xa3, 0x99, 0xed, 0x78, 0x17, 0xed, 0xc9, 0x2b, 0x66, 0x9d, 0xdd,
+ 0x4f, 0x5d, 0x32, 0xd1, 0x94, 0x54, 0x3a, 0x34, 0x65, 0xda, 0x65, 0xed,
+ 0x0e, 0x24, 0x58, 0x01, 0xc5, 0xc9, 0xa0, 0xc9, 0x84, 0x54, 0x43, 0x2a,
+ 0x4b, 0xec, 0xd2, 0x2f, 0x29, 0xa2, 0x69, 0x52, 0xd6, 0xc2, 0xd0, 0x56,
+ 0x74, 0x4c, 0x54, 0x31, 0xe6, 0x68, 0xdb, 0x06, 0x0a, 0x6f, 0x0d, 0x36,
+ 0x16, 0x7b, 0x28, 0x49, 0x6d, 0xec, 0xec, 0x91, 0xa0, 0xdf, 0xd3, 0x07,
+ 0xbe, 0xdb, 0x7f, 0x4f, 0x8a, 0xdc, 0x0f, 0xaf, 0x93, 0xf2, 0xa0, 0x80,
+ 0x64, 0xa0, 0x72, 0x1f, 0x29, 0x62, 0x8a, 0xfd, 0x21, 0x7e, 0xd5, 0xbb,
+ 0x73, 0x7f, 0xa6, 0xf6, 0xbd, 0x0c, 0x30, 0xcc, 0x4a, 0x85, 0x20, 0x66,
+ 0x10, 0xf8, 0x5f, 0xaa, 0x21, 0x51, 0x87, 0x07, 0xcc, 0xb0, 0x8e, 0xf2,
+ 0x91, 0x4b, 0x30, 0x3d, 0x13, 0x93, 0xd4, 0xbf, 0x31, 0x9a, 0x32, 0x36,
+ 0xeb, 0xdf, 0x84, 0xd7, 0xb0, 0x55, 0x96, 0x05, 0x4d, 0x13, 0x7d, 0xce,
+ 0xe7, 0xe9, 0xbd, 0x28, 0x7a, 0x93, 0x64, 0x8f, 0xca, 0xd3, 0x6d, 0xe6,
+ 0x1a, 0x41, 0x9f, 0xdc, 0xb1, 0x4f, 0xdc, 0x56, 0xe7, 0x6b, 0x3e, 0xae,
+ 0x99, 0xa2, 0x3f, 0xa5, 0xfa, 0x9c, 0x43, 0x9c, 0xeb, 0xb5, 0xd9, 0x06,
+ 0xc9, 0x98, 0x72, 0xf7, 0x62, 0x9d, 0x00, 0x36, 0x34, 0xa8, 0x4b, 0xdf,
+ 0xd3, 0x11, 0x57, 0x6e, 0xc3, 0x06, 0xc5, 0x35, 0xc9, 0xa4, 0x2b, 0x97,
+ 0xc3, 0xbf, 0x32, 0x52, 0x7b, 0x84, 0xae, 0x85, 0x42, 0xb6, 0x41, 0xf2,
+ 0x1c, 0xe1, 0x54, 0xe1, 0x01, 0x0e, 0x5b, 0x01, 0x77, 0xc8, 0x42, 0xc3,
+ 0x51, 0xb0, 0x59, 0x21, 0xd2, 0xeb, 0x24, 0x46, 0x53, 0x0a, 0xd6, 0xb6,
+ 0x25, 0x2d, 0x2a, 0x83, 0xde, 0x9f, 0xde, 0x04, 0x79, 0x2a, 0xa7, 0xcf,
+ 0x35, 0x84, 0x2f, 0xef, 0x25, 0xe7, 0x6c, 0x9a, 0x0c, 0x62, 0x7c, 0xbc,
+ 0x75, 0x2c, 0xe5, 0xd4, 0x65, 0xf7, 0xcf, 0xf8, 0x87, 0xbf, 0x86, 0x1a,
+ 0xc9, 0xe2, 0x36, 0x2b, 0x23, 0xc1, 0xc7, 0x89, 0x2d, 0xd1, 0xeb, 0x6d,
+ 0x1f, 0x78, 0x6d, 0xc5, 0xc0, 0xea, 0xb1, 0x89, 0x8b, 0x3d, 0xe7, 0x03,
+ 0x1f, 0x32, 0x05, 0xa4, 0x53, 0xea, 0x5e, 0x18, 0x84, 0xfc, 0xfb, 0xb8,
+ 0xc8, 0xa8, 0x42, 0xc0, 0x35, 0x84, 0x10, 0xc7, 0x64, 0x21, 0xdd, 0x33,
+ 0xe2, 0x09, 0x26, 0x57, 0x17, 0x89, 0x05, 0xf4, 0xc5, 0x93, 0x64, 0xb8,
+ 0x22, 0x41, 0x08, 0xd7, 0x54, 0xdf, 0x45, 0x5e, 0x31, 0x56, 0x39, 0x66,
+ 0x63, 0xa3, 0xa6, 0x53, 0xa0, 0x8f, 0xd0, 0xd9, 0x64, 0x55, 0x92, 0x71,
+ 0x34, 0x73, 0xf8, 0x38, 0xd2, 0x72, 0x81, 0xd1, 0x42, 0x49, 0x93, 0xe3,
+ 0xc8, 0xab, 0xc3, 0xc1, 0xe4, 0x73, 0x9c, 0x4f, 0x47, 0x2e, 0x27, 0x1b,
+ 0xdc, 0x8b, 0xef, 0xf2, 0x74, 0x8c, 0xbc, 0x47, 0x87, 0x23, 0xf5, 0xcd,
+ 0x52, 0xc9, 0x75, 0xb8, 0xdb, 0x86, 0xcd, 0x63, 0x12, 0xfb, 0xca, 0xa6,
+ 0x79, 0xc7, 0x65, 0xad, 0x7a, 0x2b, 0xad, 0x25, 0x7c, 0x53, 0xc2, 0x0b,
+ 0x85, 0xab, 0x33, 0x0c, 0x33, 0x65, 0x1c, 0xbb, 0x12, 0xe3, 0x53, 0xd9,
+ 0x2d, 0xce, 0x90, 0x52, 0x10, 0x33, 0xb4, 0x7a, 0x46, 0x06, 0x49, 0xaa,
+ 0x09, 0x48, 0x5e, 0x6f, 0x51, 0x6e, 0x74, 0x01, 0x93, 0x96, 0x6b, 0xd5,
+ 0xdc, 0xfe, 0x13, 0x32, 0xe2, 0xe1, 0x51, 0x13, 0x01, 0x57, 0xaa, 0x60,
+ 0x0b, 0xaa, 0xcc, 0x86, 0x8d, 0x4e, 0x2b, 0x3a, 0xb0, 0x46, 0x1e, 0xb2,
+ 0xe6, 0xe7, 0x8a, 0xbf, 0x66, 0x3e, 0x5f, 0xfa, 0x0d, 0x10, 0x25, 0x5a,
+ 0x27, 0x95, 0xd6, 0x95, 0xed, 0x6c, 0x45, 0x0a, 0x90, 0x38, 0x6a, 0xb8,
+ 0x49, 0x83, 0xd3, 0xb7, 0x02, 0xd3, 0xbd, 0x31, 0x7e, 0x17, 0xf6, 0x23,
+ 0x6e, 0x1a, 0x64, 0x1e, 0x20, 0x98, 0x6c, 0xdc, 0x03, 0x26, 0xb0, 0x58,
+ 0xe1, 0x87, 0xb3, 0xae, 0xaa, 0x5a, 0x06, 0xb3, 0x0b, 0x05, 0xc2, 0x3f,
+ 0xe1, 0x44, 0x49, 0xd9, 0x3b, 0xbf, 0x02, 0x00, 0x34, 0x8d, 0xdd, 0xd0,
+ 0x4e, 0x86, 0x32, 0x31, 0x9b, 0x72, 0x16, 0x17, 0xd5, 0xda, 0xb9, 0x81,
+ 0x77, 0x90, 0x36, 0x50, 0x37, 0xac, 0x2d, 0x6d, 0x8d, 0xf7, 0x4e, 0xb6,
+ 0xed, 0x03, 0xd7, 0xc7, 0xd1, 0x88, 0x54, 0xf6, 0x9c, 0x49, 0xee, 0xbb,
+ 0xf3, 0x25, 0x36, 0xe5, 0xbc, 0x7d, 0x24, 0xac, 0x2c, 0x69, 0x02, 0x20,
+ 0x4f, 0x52, 0x38, 0xc8, 0xe5, 0x76, 0xe1, 0xd3, 0x0e, 0xf8, 0x82, 0x88,
+ 0x4f, 0xd2, 0x87, 0x70, 0x62, 0xe9, 0x4a, 0x14, 0x8a, 0x96, 0xc3, 0x08,
+ 0x01, 0xb0, 0x8c, 0x1b, 0x69, 0xc5, 0xfa, 0xf3, 0x51, 0x8c, 0x81, 0xdb,
+ 0x70, 0x32, 0xe3, 0x40, 0xee, 0x5b, 0x4f, 0x9f, 0x42, 0x3e, 0xad, 0x99,
+ 0xa4, 0x8e, 0x73, 0x90, 0x1b, 0x49, 0x3d, 0x54, 0xcf, 0x48, 0xf0, 0x1d,
+ 0xc5, 0x14, 0xaf, 0xd7, 0xb6, 0xdd, 0x32, 0xae, 0xfd, 0xa7, 0xfb, 0xdb,
+ 0x87, 0x6e, 0x88, 0x49, 0xe3, 0x59, 0xb5, 0x7b, 0x59, 0xea, 0x9f, 0x39,
+ 0x84, 0x1b, 0xbd, 0x6a, 0x51, 0xf4, 0xd0, 0xaf, 0x59, 0x94, 0xb7, 0x2a,
+ 0x5a, 0x06, 0xed, 0xb7, 0x77, 0x26, 0xfc, 0x99, 0x15, 0xb1, 0xaa, 0x96,
+ 0x25, 0xc0, 0x88, 0x2b, 0x5a, 0x09, 0x3b, 0xcb, 0x30, 0x0f, 0xfe, 0xd2,
+ 0x95, 0x3c, 0xbd, 0x8d, 0x44, 0x1a, 0xf8, 0xdf, 0x1f, 0x0f, 0xc8, 0x0d,
+ 0x38, 0xfe, 0xb9, 0x75, 0x1e, 0x27, 0x5d, 0x99, 0xcb, 0x27, 0x98, 0x46,
+ 0xba, 0xb8, 0x41, 0xdd, 0xf2, 0x30, 0x54, 0x3a, 0xe5, 0x6c, 0x84, 0x3c,
+ 0xf6, 0xdb, 0x7f, 0xbf, 0x98, 0x59, 0x90, 0xa2, 0x15, 0xdf, 0x97, 0xc7,
+ 0x7e, 0xf3, 0xef, 0xf3, 0xdd, 0x7d, 0xd2, 0xed, 0x43, 0x8c, 0xea, 0x8d,
+ 0xe4, 0xa7, 0x07, 0x78, 0xe2, 0xaf, 0x66, 0x8a, 0x92, 0xf3, 0xee, 0x73,
+ 0x45, 0xf9, 0x58, 0xb0, 0x93, 0x86, 0xb0, 0x45, 0xe2, 0x8a, 0xbf, 0x09,
+ 0x07, 0x23, 0xd6, 0xec, 0x6f, 0x8e, 0xb4, 0xb6, 0x39, 0xe4, 0x3f, 0x37,
+ 0xbf, 0x0a, 0x9d, 0x91, 0x96, 0xd2, 0xa0, 0x14, 0xd4, 0x5e, 0x38, 0xd4,
+ 0x5c, 0x85, 0xa1, 0x1f, 0x44, 0xe3, 0x35, 0x8d, 0x41, 0x70, 0xb3, 0x4c,
+ 0x0f, 0x25, 0x7c, 0x35, 0xd4, 0x81, 0x47, 0x76, 0x08, 0xd3, 0x80, 0xd1,
+ 0xbe, 0xd3, 0x30, 0x85, 0xcd, 0x19, 0x42, 0xc5, 0x23, 0x71, 0xbe, 0x58,
+ 0xb6, 0x35, 0x53, 0x6b, 0xb6, 0x31, 0xb5, 0x20, 0xb4, 0xef, 0xba, 0xd2,
+ 0x00, 0x07, 0x46, 0x43, 0xaa, 0x92, 0x34, 0x58, 0x09, 0x7e, 0xc8, 0x71,
+ 0xfa, 0x50, 0x3d, 0x5c, 0xaf, 0xc1, 0xa0, 0x1b, 0x94, 0xf3, 0x8b, 0x2b,
+ 0x3c, 0xbe, 0x38, 0x3f, 0x3f, 0x39, 0x6e, 0x06, 0x0b, 0x4d, 0x4d, 0x89,
+ 0x55, 0xf5, 0xbd, 0xfe, 0x8b, 0xf4, 0x79, 0xc2, 0xd6, 0x97, 0x68, 0x11,
+ 0x7f, 0x9f, 0x5a, 0x33, 0xc5, 0x02, 0xb3, 0xcb, 0xbf, 0x94, 0x02, 0x2b,
+ 0x86, 0x60, 0x15, 0x0a, 0x08, 0x54, 0xeb, 0x79, 0xf4, 0xe0, 0x96, 0xff,
+ 0x93, 0x33, 0x0d, 0x71, 0x3f, 0xb4, 0xc6, 0x93, 0x4c, 0x58, 0x99, 0x05,
+ 0x65, 0xcc, 0x8f, 0xc7, 0x9b, 0x92, 0x90, 0xae, 0xdf, 0x6e, 0xa3, 0x65,
+ 0x46, 0x6d, 0xc3, 0xb2, 0x9f, 0x5e, 0x3e, 0xe1, 0x56, 0xb0, 0xf3, 0xb8,
+ 0xb8, 0xc5, 0x70, 0xb6, 0x53, 0x00, 0x44, 0x05, 0xa0, 0x04, 0x20, 0x3d,
+ 0x1e, 0x87, 0x70, 0x05, 0xc8, 0xeb, 0xae, 0x15, 0x0f, 0xe4, 0xd5, 0xe3,
+ 0xc9, 0x48, 0xfb, 0xc4, 0x03, 0xad, 0xcc, 0xc4, 0xd7, 0xb3, 0xe4, 0x1e,
+ 0x3f, 0xc3, 0x60, 0x2a, 0x08, 0x0e, 0xe0, 0xf7, 0x63, 0x60, 0x0c, 0x70,
+ 0x8e, 0x2a, 0x3c, 0x0a, 0x2e, 0x01, 0x1e, 0xd5, 0x9c, 0x3b, 0x1e, 0x10,
+ 0xa8, 0x32, 0xb6, 0x10, 0xe3, 0xaa, 0x1e, 0x6f, 0xaf, 0xde, 0x09, 0x30,
+ 0x62, 0x23, 0xa0, 0xe6, 0xb5, 0x6c, 0x92, 0x92, 0x27, 0x03, 0x96, 0x48,
+ 0x65, 0x97, 0x6d, 0xd8, 0x32, 0xbc, 0xd3, 0x74, 0x0c, 0x68, 0xad, 0x94,
+ 0xb5, 0x21, 0xf4, 0x74, 0xe3, 0x96, 0xc8, 0xdf, 0x00, 0x81, 0xce, 0xe9,
+ 0xae, 0xe0, 0x27, 0x80, 0x89, 0xed, 0x37, 0x41, 0x7b, 0x09, 0xcf, 0x8a,
+ 0x9c, 0xa4, 0x08, 0x64, 0x37, 0xa5, 0xd2, 0x05, 0x7c, 0x98, 0x2e, 0xab,
+ 0xa7, 0xe6, 0x22, 0x43, 0xa5, 0xc2, 0x3e, 0xa9, 0x46, 0x95, 0x4e, 0xe4,
+ 0x63, 0x4c, 0x67, 0xd3, 0xbd, 0x57, 0x60, 0x1a, 0x8e, 0x42, 0xc8, 0x05,
+ 0x86, 0x3f, 0x17, 0xcb, 0xca, 0x0b, 0x24, 0x22, 0x44, 0x17, 0xa3, 0x33,
+ 0x7c, 0xd5, 0xf3, 0xdb, 0x59, 0xc5, 0x63, 0xf7, 0x4c, 0x89, 0x81, 0x93,
+ 0xd9, 0x5f, 0x56, 0x70, 0xff, 0x9f, 0x80, 0x50, 0x24, 0x08, 0x5d, 0xd3,
+ 0xd2, 0xa3, 0x6e, 0xd5, 0xd0, 0x8e, 0x59, 0x52, 0xdd, 0x24, 0xbf, 0x42,
+ 0x93, 0x16, 0xcc, 0x2b, 0xca, 0x22, 0x56, 0x21, 0xb1, 0x10, 0x4c, 0x64,
+ 0x83, 0xfb, 0x81, 0x95, 0x83, 0x8e, 0xad, 0xa4, 0x4d, 0x28, 0xdd, 0x72,
+ 0x87, 0x2d, 0x7e, 0xe8, 0xb7, 0x97, 0x4c, 0xa6, 0x9b, 0xf9, 0x13, 0x3a,
+ 0x8a, 0x79, 0xee, 0x53, 0xcc, 0x20, 0x3a, 0x84, 0xff, 0xac, 0xfc, 0xf6,
+ 0xf3, 0x3f, 0xeb, 0xe1, 0x15, 0x3e, 0x4f, 0xea, 0x5a, 0x2c, 0x4e, 0x0b,
+ 0xc6, 0xe9, 0x15, 0x9a, 0xde, 0xfb, 0x65, 0x78, 0x35, 0x89, 0xbc, 0x52,
+ 0x06, 0xdb, 0x3a, 0x34, 0x57, 0x0c, 0x07, 0x02, 0xf6, 0x21, 0x5c, 0x50,
+ 0x09, 0x41, 0x3d, 0x4f, 0x24, 0x3f, 0x29, 0x82, 0x6b, 0x65, 0xbc, 0xcd,
+ 0x3c, 0x2b, 0x53, 0xc6, 0xf7, 0xcc, 0x8d, 0x0b, 0x14, 0xae, 0x46, 0xff,
+ 0xa2, 0xba, 0x42, 0xb5, 0x83, 0x35, 0x65, 0x85, 0xbe, 0x52, 0xdb, 0x84,
+ 0xe7, 0x48, 0x25, 0x6f, 0x4b, 0x9a, 0xb5, 0x80, 0xb5, 0x8d, 0xf2, 0x77,
+ 0x61, 0x55, 0xd6, 0xbb, 0x25, 0x4f, 0x7a, 0xea, 0x37, 0xbf, 0x16, 0xcf,
+ 0x4f, 0xd9, 0xae, 0x1f, 0xcc, 0xca, 0x7c, 0x6d, 0xce, 0x07, 0xe6, 0x2c,
+ 0xeb, 0xf6, 0x94, 0xed, 0x66, 0xce, 0xb6, 0xe3, 0x95, 0x08, 0x24, 0x6d,
+ 0xd3, 0x68, 0xff, 0x17, 0xa6, 0x6c, 0xbb, 0x19, 0xdb, 0x31, 0xe5, 0x6b,
+ 0x07, 0xd2, 0xb5, 0x65, 0xa3, 0x25, 0x5f, 0x93, 0x33, 0xb6, 0x57, 0xa6,
+ 0x6c, 0xbb, 0x39, 0xdb, 0xab, 0x92, 0xb6, 0xa9, 0x28, 0x7d, 0x45, 0xca,
+ 0xf6, 0xaf, 0xcb, 0xd8, 0x6e, 0x4b, 0xd9, 0xfe, 0xe5, 0x39, 0xdb, 0xbf,
+ 0x6d, 0xca, 0xf6, 0x6f, 0x99, 0x8d, 0x4c, 0xb7, 0x07, 0x4f, 0x24, 0x1d,
+ 0x49, 0x69, 0xd3, 0x61, 0x2b, 0x2c, 0xad, 0x16, 0xfc, 0xd5, 0x12, 0x58,
+ 0x9c, 0x30, 0xb3, 0x0c, 0xc3, 0x1a, 0x8d, 0xa3, 0xb8, 0xfb, 0x75, 0x43,
+ 0x42, 0x2b, 0x81, 0x0c, 0x38, 0x37, 0x0e, 0xbc, 0x1b, 0xba, 0xe9, 0x65,
+ 0x39, 0xeb, 0xd1, 0x0c, 0xb0, 0xe6, 0xd8, 0xb3, 0x12, 0x2d, 0x9f, 0x69,
+ 0x3c, 0xf7, 0xdb, 0xb3, 0x9c, 0x6a, 0x56, 0x6e, 0xef, 0x5a, 0x5b, 0x5d,
+ 0xfe, 0xb2, 0xc4, 0x7a, 0xd8, 0x90, 0xdd, 0x2e, 0x05, 0x23, 0x03, 0xe1,
+ 0x32, 0x8a, 0x72, 0xc2, 0xaf, 0x91, 0x97, 0x34, 0x31, 0x7d, 0xf9, 0x4c,
+ 0x48, 0xc2, 0xb4, 0xd9, 0xf5, 0x8a, 0x61, 0xa8, 0x00, 0xde, 0x5d, 0x07,
+ 0xc9, 0x10, 0x2c, 0x7b, 0x51, 0xa6, 0x5d, 0xd2, 0x2d, 0xdc, 0xee, 0xef,
+ 0x72, 0x85, 0xb4, 0x86, 0x74, 0x64, 0x9e, 0x1e, 0xaa, 0x11, 0x7d, 0x9f,
+ 0x41, 0xa5, 0x6d, 0x0e, 0x1a, 0xf7, 0xbd, 0xd2, 0x77, 0xfa, 0xd1, 0x15,
+ 0xaa, 0x8f, 0xa0, 0xac, 0xc3, 0x8c, 0x64, 0x70, 0xf9, 0x5d, 0x68, 0xb8,
+ 0x3a, 0x90, 0x29, 0xd0, 0xcf, 0x87, 0xab, 0x33, 0x3f, 0x3e, 0x4d, 0xd1,
+ 0x83, 0x83, 0xcd, 0x4d, 0xca, 0x90, 0xba, 0x89, 0x1f, 0x1e, 0xfa, 0x65,
+ 0xb2, 0x39, 0xce, 0x47, 0xe5, 0x26, 0x9e, 0xa0, 0x7e, 0xf9, 0xa6, 0x9a,
+ 0xcf, 0x56, 0x65, 0x3d, 0xa4, 0xa5, 0x16, 0xe5, 0x2a, 0x6c, 0xab, 0xcd,
+ 0xbc, 0x64, 0x6b, 0x2b, 0x75, 0xe1, 0xca, 0x89, 0xef, 0x37, 0x86, 0x93,
+ 0xaa, 0x02, 0x58, 0x14, 0xfc, 0x1f, 0xf5, 0xed, 0xc0, 0xa0, 0x52, 0xa0,
+ 0x70, 0xd9, 0xed, 0x6d, 0xea, 0xd4, 0x10, 0xf8, 0x07, 0xc4, 0x76, 0x00,
+ 0xc2, 0x92, 0x26, 0x15, 0xb1, 0xb0, 0xfa, 0x9e, 0xe9, 0xa6, 0xd7, 0x9a,
+ 0x8a, 0x1a, 0xf2, 0xf2, 0x5b, 0x7f, 0x11, 0x9d, 0xb5, 0xf4, 0x19, 0xfd,
+ 0xcd, 0x59, 0x02, 0x50, 0x37, 0x4a, 0xf9, 0xe7, 0x28, 0xbb, 0xee, 0xa3,
+ 0x9f, 0xe2, 0x96, 0x99, 0x84, 0xbc, 0x43, 0xce, 0xb6, 0x5b, 0x39, 0x13,
+ 0xf3, 0xf0, 0xa7, 0x98, 0x09, 0x15, 0xe9, 0x07, 0xf9, 0x63, 0x6d, 0x0e,
+ 0xf4, 0xd8, 0xa7, 0xf8, 0xfe, 0xdd, 0x76, 0xdb, 0x67, 0xa9, 0x91, 0x28,
+ 0x3d, 0xf1, 0x1b, 0x7e, 0xf8, 0x83, 0x71, 0x56, 0x31, 0xa6, 0xc1, 0x21,
+ 0xfe, 0xf7, 0x40, 0x77, 0x78, 0x65, 0x87, 0xb2, 0x16, 0xf8, 0x77, 0xa7,
+ 0x3b, 0xba, 0x38, 0xc1, 0x56, 0x82, 0x86, 0xb4, 0xa1, 0x82, 0x30, 0x26,
+ 0x94, 0x00, 0x43, 0x13, 0x5e, 0x7f, 0x4f, 0x51, 0xe5, 0x18, 0x41, 0x85,
+ 0x21, 0x6d, 0x18, 0xa0, 0x44, 0x11, 0x96, 0xc0, 0x50, 0x08, 0x8b, 0x21,
+ 0xaa, 0xe5, 0x66, 0x9d, 0xb9, 0xa1, 0x98, 0x57, 0xea, 0x32, 0xa2, 0x8b,
+ 0xec, 0xb6, 0x8e, 0x29, 0x93, 0x99, 0x9f, 0xd6, 0xf2, 0x14, 0xee, 0x3d,
+ 0xf1, 0x6c, 0x17, 0x89, 0x68, 0x68, 0xfc, 0x68, 0xc4, 0x57, 0x9a, 0x4c,
+ 0x54, 0x31, 0x51, 0x67, 0x16, 0xbc, 0xc2, 0x5c, 0xf1, 0x83, 0xa8, 0xd3,
+ 0xfb, 0x10, 0x1d, 0x74, 0xbc, 0x2d, 0xba, 0xc8, 0xa4, 0x6f, 0x08, 0x79,
+ 0xbc, 0x0a, 0x2a, 0x84, 0xa7, 0x56, 0x44, 0xae, 0x66, 0x72, 0x83, 0x80,
+ 0x45, 0xd6, 0x9c, 0x30, 0x98, 0xfb, 0x53, 0x2f, 0x08, 0x37, 0xd7, 0x1e,
+ 0x93, 0xa6, 0x47, 0x0e, 0x0a, 0x12, 0x74, 0xda, 0x58, 0x00, 0x6d, 0xd2,
+ 0x9e, 0x18, 0xff, 0x1f, 0x59, 0x2b, 0x06, 0x13, 0x31, 0x98, 0x89, 0x35,
+ 0xdf, 0x3e, 0x60, 0x9d, 0xf4, 0x97, 0x96, 0x52, 0xba, 0x45, 0x5e, 0x96,
+ 0xe9, 0x10, 0x38, 0xf5, 0x54, 0x58, 0x64, 0x99, 0x70, 0x3e, 0x15, 0xb7,
+ 0xea, 0xc4, 0xdd, 0x34, 0x00, 0x00, 0xa5, 0x0f, 0xad, 0xc5, 0x2b, 0x15,
+ 0xd0, 0x01, 0x71, 0x2e, 0xc1, 0xec, 0x98, 0xb1, 0xdd, 0xa5, 0x38, 0x34,
+ 0x53, 0x5b, 0x1c, 0x0d, 0x8b, 0x34, 0x99, 0x60, 0xaa, 0x23, 0xe3, 0x49,
+ 0xb1, 0xe2, 0xd5, 0x64, 0xb2, 0x33, 0x04, 0xe6, 0xc0, 0x24, 0x1d, 0xcc,
+ 0xb4, 0x2d, 0x11, 0xb8, 0x90, 0xd2, 0xaf, 0x29, 0xf7, 0xd1, 0xe6, 0x76,
+ 0x17, 0x09, 0x66, 0x0e, 0xdc, 0x25, 0x72, 0xac, 0xb1, 0xf6, 0x6f, 0x69,
+ 0xc9, 0x49, 0x2d, 0x0c, 0xbe, 0x33, 0x55, 0x3b, 0x10, 0x26, 0x90, 0xc1,
+ 0x27, 0xc1, 0x2f, 0x46, 0xda, 0xaa, 0x3d, 0xae, 0x95, 0xee, 0xf7, 0x3f,
+ 0x19, 0x8f, 0x77, 0xbc, 0xd0, 0xbf, 0xa0, 0x0e, 0xa0, 0xde, 0x2e, 0x6a,
+ 0x55, 0x56, 0xbc, 0x93, 0x19, 0xed, 0xa1, 0xa9, 0x84, 0xd3, 0xe1, 0x27,
+ 0x08, 0xac, 0x1e, 0x9d, 0x37, 0xb5, 0x9c, 0x40, 0x62, 0x39, 0x26, 0xd0,
+ 0x71, 0xbe, 0x9a, 0x59, 0x5d, 0x45, 0xd8, 0x02, 0x04, 0xd4, 0xe2, 0x06,
+ 0x86, 0x3f, 0x78, 0x22, 0xde, 0xa6, 0xcb, 0xb7, 0x27, 0xc8, 0x3b, 0xf9,
+ 0xf1, 0x54, 0x10, 0xc2, 0x3e, 0xf2, 0x18, 0x67, 0xe0, 0xcb, 0x64, 0xc4,
+ 0xa1, 0xe6, 0xdc, 0x78, 0x4d, 0x8d, 0x77, 0x33, 0xe3, 0x41, 0xe7, 0x73,
+ 0x62, 0xf5, 0x16, 0x39, 0x12, 0x1d, 0xac, 0xe1, 0x28, 0x31, 0xdd, 0x50,
+ 0xea, 0x21, 0xf0, 0xd2, 0xeb, 0x04, 0xe8, 0xf2, 0x72, 0x1d, 0xea, 0x2e,
+ 0x8d, 0x8d, 0x02, 0x65, 0x3f, 0xc4, 0xfb, 0x29, 0x10, 0xc2, 0x71, 0x6b,
+ 0x6d, 0x08, 0x72, 0x7b, 0x46, 0xdc, 0x09, 0x54, 0x76, 0x9e, 0x0f, 0x06,
+ 0x7e, 0x8a, 0x7c, 0x06, 0xc6, 0x49, 0x3e, 0xcd, 0xd2, 0xbf, 0x27, 0x63,
+ 0x09, 0x5a, 0x36, 0xd3, 0x5b, 0x6b, 0x45, 0x0a, 0x91, 0x13, 0x90, 0xc7,
+ 0x44, 0x09, 0x9f, 0xbf, 0x31, 0x12, 0x1c, 0x4a, 0x1d, 0x4c, 0x07, 0x43,
+ 0x00, 0x2b, 0x93, 0x09, 0x88, 0x41, 0x06, 0x6e, 0xc2, 0x23, 0xb6, 0x98,
+ 0xc9, 0x9d, 0xe5, 0x0f, 0x7b, 0x87, 0xab, 0x54, 0x21, 0xd8, 0x33, 0x2d,
+ 0x08, 0x4f, 0x49, 0xf4, 0x2b, 0x8a, 0x0a, 0xa8, 0xb9, 0xde, 0x2f, 0x2f,
+ 0x29, 0x08, 0xa3, 0x2f, 0x25, 0x0f, 0xcc, 0x40, 0x5b, 0xf0, 0xed, 0x34,
+ 0x27, 0xbb, 0x4c, 0x42, 0xe2, 0x45, 0xf7, 0x98, 0x05, 0xe9, 0xb3, 0x50,
+ 0xee, 0x54, 0xf9, 0x8c, 0xfd, 0xbb, 0xd5, 0x44, 0xb8, 0x33, 0x81, 0x8e,
+ 0x67, 0x40, 0xdb, 0xa1, 0x1b, 0x5f, 0x81, 0xc9, 0xc5, 0x9f, 0x4e, 0xed,
+ 0x3a, 0x18, 0x7f, 0x21, 0x61, 0x3c, 0x3a, 0x53, 0x09, 0x24, 0x36, 0x4a,
+ 0xaa, 0xf8, 0x9f, 0x1e, 0x1e, 0x5a, 0x2c, 0xba, 0x3b, 0xb9, 0x97, 0xa5,
+ 0x1a, 0x4c, 0xda, 0x46, 0xe3, 0x00, 0x7d, 0x04, 0x60, 0xc3, 0xba, 0x2a,
+ 0x75, 0xdd, 0xc3, 0xaf, 0xb1, 0x52, 0x4b, 0xa9, 0xa2, 0x49, 0x5a, 0x16,
+ 0x24, 0xde, 0x4c, 0x91, 0x53, 0x44, 0xc4, 0xc7, 0x6f, 0x9a, 0x9f, 0xd5,
+ 0xa5, 0x18, 0x43, 0x90, 0x7a, 0xa4, 0x25, 0xc8, 0x34, 0xa4, 0x05, 0x2c,
+ 0xc1, 0x26, 0x43, 0xf0, 0x58, 0x2e, 0x2b, 0x32, 0xb4, 0xd2, 0x45, 0xee,
+ 0xc3, 0x2c, 0x57, 0x3c, 0x75, 0xbd, 0x85, 0x72, 0xd9, 0xe6, 0x62, 0x1f,
+ 0x65, 0x90, 0x16, 0x5d, 0xfe, 0x13, 0x54, 0xa2, 0xfc, 0xaa, 0x52, 0x94,
+ 0x4f, 0x5b, 0x89, 0x62, 0x25, 0x05, 0x4a, 0x1d, 0x5f, 0x4e, 0x50, 0x94,
+ 0x10, 0x5d, 0x32, 0x9c, 0x06, 0x75, 0x1f, 0x9b, 0xee, 0x25, 0xfc, 0x5a,
+ 0x63, 0xb8, 0xf0, 0x65, 0xea, 0x46, 0xb5, 0x2c, 0xd9, 0xc4, 0xe3, 0x91,
+ 0xeb, 0xc2, 0x35, 0x42, 0xcd, 0xf9, 0x68, 0x06, 0x58, 0x32, 0x3e, 0x4e,
+ 0x04, 0x9f, 0xeb, 0xcf, 0xb6, 0x7b, 0xc8, 0xa7, 0x36, 0xc0, 0xb6, 0x81,
+ 0x37, 0x1f, 0x3a, 0xf2, 0xf8, 0xcb, 0x27, 0x05, 0x32, 0xdd, 0x33, 0x7c,
+ 0xcd, 0x02, 0x60, 0x3a, 0xfc, 0xce, 0x74, 0x36, 0xe5, 0x1e, 0x6d, 0x55,
+ 0xf8, 0xc2, 0x50, 0xb3, 0x52, 0x46, 0x3a, 0x14, 0xf6, 0x86, 0x99, 0x71,
+ 0xf8, 0x7e, 0x0b, 0x83, 0x4b, 0x34, 0xee, 0xaa, 0x26, 0x31, 0x70, 0xf4,
+ 0x61, 0x52, 0xdd, 0xa3, 0x16, 0x47, 0xfb, 0xa1, 0x1b, 0xe9, 0x70, 0x01,
+ 0xd9, 0xa2, 0xd6, 0x7c, 0x97, 0x2e, 0xa7, 0xc1, 0x21, 0x43, 0x61, 0x0c,
+ 0x5f, 0xe3, 0x17, 0xd1, 0x98, 0xae, 0x77, 0xfb, 0x82, 0xed, 0x80, 0x6c,
+ 0x88, 0xba, 0xb6, 0x37, 0x9a, 0x8b, 0x5b, 0xab, 0x18, 0xd2, 0xb4, 0x25,
+ 0x79, 0xd0, 0xf5, 0xf1, 0x9b, 0x6b, 0x2c, 0xd7, 0x36, 0x08, 0x58, 0x81,
+ 0x81, 0x31, 0x7a, 0x57, 0xe6, 0xa3, 0xe7, 0xef, 0xa8, 0x5a, 0x5d, 0x3f,
+ 0x66, 0x89, 0x71, 0xb9, 0x50, 0x68, 0xb8, 0x8d, 0xc9, 0xb0, 0x27, 0x47,
+ 0x7e, 0x1b, 0x2f, 0xe0, 0x67, 0x18, 0x12, 0x24, 0x3c, 0x59, 0xee, 0x5d,
+ 0xe7, 0xe5, 0x25, 0x10, 0x01, 0xb8, 0x13, 0x6b, 0x84, 0xc5, 0xe9, 0x7c,
+ 0x7c, 0xb0, 0x7d, 0x31, 0xce, 0x42, 0x2d, 0x52, 0x4a, 0x41, 0x6e, 0x52,
+ 0xef, 0x94, 0x06, 0xc9, 0x25, 0xd8, 0xe2, 0x0a, 0x57, 0x41, 0xa4, 0xce,
+ 0xf8, 0x00, 0x2b, 0x1f, 0xbe, 0xba, 0xb6, 0x48, 0xbf, 0x7b, 0xfa, 0x75,
+ 0xce, 0x70, 0xdb, 0x54, 0x91, 0xe5, 0xcd, 0x5f, 0xb2, 0xf8, 0xb4, 0x71,
+ 0x9e, 0x75, 0xf5, 0x98, 0x3e, 0xb8, 0x7e, 0x3f, 0x54, 0x04, 0x7f, 0xd2,
+ 0x17, 0x04, 0x02, 0x59, 0xc6, 0x37, 0xed, 0x45, 0xdb, 0x22, 0x93, 0xa1,
+ 0x1c, 0x8e, 0xda, 0xad, 0x95, 0xd8, 0x43, 0x20, 0x36, 0xb7, 0x3e, 0xc0,
+ 0xba, 0x88, 0xc1, 0xf1, 0xe5, 0x46, 0x74, 0xd9, 0x40, 0x82, 0xa1, 0xa2,
+ 0x24, 0x14, 0xa6, 0x2e, 0x1f, 0x96, 0x76, 0x6e, 0x8c, 0x71, 0xd9, 0x8e,
+ 0x1a, 0x92, 0xca, 0x15, 0x33, 0x48, 0xae, 0x14, 0xfa, 0xfd, 0xcd, 0x19,
+ 0x53, 0x63, 0x2d, 0x47, 0x54, 0xa4, 0xc1, 0xa0, 0x20, 0x62, 0x52, 0xba,
+ 0xd7, 0x14, 0x2c, 0xe8, 0x1c, 0x4b, 0xed, 0xb8, 0x81, 0x92, 0x38, 0xe5,
+ 0x15, 0xff, 0x64, 0xe6, 0xa5, 0x3a, 0xd2, 0x46, 0x68, 0xd6, 0xb9, 0x83,
+ 0x7e, 0x24, 0x9d, 0x0c, 0x4b, 0x96, 0x4a, 0x8d, 0x4e, 0x03, 0xc4, 0xc3,
+ 0xa6, 0x49, 0xe6, 0x77, 0x2e, 0xa1, 0x8f, 0xa2, 0x20, 0x17, 0x92, 0x1e,
+ 0xf7, 0x9b, 0xa8, 0xf9, 0x4e, 0xd0, 0x40, 0x26, 0x97, 0xe6, 0x16, 0x6d,
+ 0xbd, 0x05, 0x61, 0x93, 0x75, 0x3c, 0x6c, 0x64, 0x88, 0x1c, 0x71, 0x8a,
+ 0x61, 0x9a, 0x8a, 0x24, 0xdc, 0xe2, 0x11, 0x37, 0x03, 0x1e, 0x2b, 0xcb,
+ 0x9b, 0x1d, 0xe0, 0x1b, 0x3b, 0xfd, 0xcf, 0x19, 0x17, 0xf2, 0x06, 0x84,
+ 0x75, 0x00, 0x8e, 0x97, 0xd3, 0x47, 0xa4, 0xe5, 0x69, 0x63, 0x3c, 0xd1,
+ 0xc2, 0xfb, 0x56, 0xf1, 0xef, 0xfd, 0x27, 0x52, 0xda, 0xdf, 0x96, 0x7e,
+ 0xfc, 0x6e, 0x1d, 0x09, 0x2a, 0x42, 0xb2, 0xda, 0xe0, 0x06, 0x7d, 0x9c,
+ 0x69, 0x30, 0x4c, 0x2b, 0x02, 0xc6, 0x57, 0x2b, 0xb2, 0x7e, 0x35, 0xa9,
+ 0x89, 0x55, 0x41, 0x6f, 0x05, 0x6b, 0xe2, 0xfb, 0xd1, 0x7f, 0xe2, 0xa7,
+ 0xf4, 0x6d, 0x2e, 0xcb, 0xa0, 0x64, 0x88, 0xaf, 0x4f, 0xde, 0x5e, 0x5c,
+ 0x9d, 0xd4, 0xcb, 0x15, 0x2b, 0xee, 0x95, 0x4e, 0xc1, 0xfe, 0xe6, 0xec,
+ 0x08, 0xd5, 0x4e, 0x61, 0x10, 0x24, 0x53, 0x21, 0x45, 0xbb, 0x3f, 0xba,
+ 0xfc, 0xfe, 0x8d, 0x99, 0x1d, 0x6a, 0x09, 0x19, 0x77, 0x5a, 0x92, 0x41,
+ 0xbb, 0xbc, 0xd3, 0x4d, 0xd1, 0x8e, 0x5a, 0x00, 0x36, 0x94, 0x92, 0x06,
+ 0xd5, 0x66, 0x7e, 0x94, 0x62, 0xc1, 0x89, 0x31, 0x5a, 0xaa, 0x4f, 0x18,
+ 0xea, 0x65, 0x89, 0xa5, 0xf7, 0x66, 0x50, 0x4f, 0xef, 0x65, 0xeb, 0x88,
+ 0x01, 0xa7, 0x38, 0xb5, 0x38, 0x66, 0xf4, 0x38, 0x84, 0x94, 0xeb, 0x47,
+ 0xfe, 0x87, 0x34, 0x29, 0x84, 0xbe, 0x12, 0x62, 0xd8, 0xd8, 0x3b, 0x9d,
+ 0x03, 0x21, 0x2c, 0xed, 0xd0, 0xe1, 0x82, 0x44, 0x6b, 0x7a, 0x57, 0x75,
+ 0x19, 0xe9, 0x4f, 0xc2, 0x3d, 0xee, 0x46, 0x06, 0x22, 0xe4, 0xf0, 0xcd,
+ 0xf5, 0x12, 0x0b, 0x1d, 0x9c, 0xa9, 0x9a, 0xdf, 0x44, 0x6a, 0x41, 0xaf,
+ 0xfd, 0x79, 0xcd, 0xd6, 0x84, 0x70, 0x0f, 0xbe, 0x70, 0xcf, 0x4a, 0xdb,
+ 0xc3, 0x6c, 0xe3, 0xa9, 0xfc, 0x2d, 0x5d, 0x71, 0x5b, 0x3d, 0xb6, 0x84,
+ 0xee, 0x24, 0xa5, 0x87, 0x5a, 0x89, 0x2e, 0x19, 0xae, 0x94, 0x18, 0x87,
+ 0x08, 0x53, 0x1d, 0xa5, 0x6b, 0x80, 0xbc, 0x7d, 0xe7, 0x5e, 0xe1, 0xf6,
+ 0x35, 0x52, 0x86, 0x43, 0x01, 0x33, 0x45, 0xae, 0xa7, 0x50, 0x04, 0x35,
+ 0x8c, 0x2a, 0x1f, 0xb3, 0x0a, 0x2f, 0x2a, 0xf3, 0x94, 0x51, 0x5e, 0x04,
+ 0x0b, 0xc0, 0x90, 0x90, 0x2c, 0xe9, 0x96, 0x84, 0x34, 0xf1, 0x6a, 0xff,
+ 0x15, 0x8a, 0x76, 0xca, 0x50, 0x92, 0xae, 0x5e, 0x82, 0xef, 0x4c, 0xd1,
+ 0x53, 0xee, 0x24, 0xe8, 0xa1, 0x29, 0xbb, 0x6b, 0xd0, 0x4e, 0xcc, 0xc3,
+ 0x64, 0xc6, 0x9d, 0xc4, 0x06, 0xce, 0x20, 0x3e, 0x98, 0xd2, 0x8a, 0x03,
+ 0x43, 0x18, 0x3f, 0x20, 0x9f, 0xb4, 0xbc, 0x8d, 0xd6, 0xff, 0x6d, 0xc3,
+ 0xb4, 0x5b, 0x27, 0xfa, 0x41, 0xdf, 0x6c, 0x9a, 0x2d, 0x3d, 0xca, 0x47,
+ 0xe7, 0x5c, 0x5a, 0xdb, 0x54, 0xda, 0x73, 0x5a, 0xdf, 0x30, 0x54, 0x93,
+ 0x57, 0x56, 0xf9, 0x22, 0xe2, 0xd6, 0x6f, 0x85, 0x17, 0x1c, 0x93, 0xe3,
+ 0x5a, 0x69, 0xa7, 0xb6, 0x97, 0x2d, 0xf8, 0x12, 0x91, 0x98, 0x10, 0xa1,
+ 0x62, 0x8b, 0xc3, 0x55, 0xb5, 0xab, 0x7e, 0xf4, 0x21, 0xa3, 0x44, 0x3c,
+ 0xa1, 0x3b, 0x91, 0x13, 0x69, 0x06, 0xeb, 0x07, 0x9a, 0x06, 0x49, 0x11,
+ 0x60, 0x42, 0x7f, 0xab, 0x33, 0x1f, 0x61, 0x92, 0x8d, 0x00, 0x29, 0x5d,
+ 0x5a, 0x61, 0x6b, 0x86, 0x6d, 0x45, 0xd1, 0x5b, 0xbf, 0x47, 0x1e, 0xf7,
+ 0xf8, 0x42, 0x52, 0x87, 0xe5, 0xd0, 0xd8, 0x18, 0x02, 0x4f, 0x66, 0xb3,
+ 0x1e, 0x83, 0xa8, 0x23, 0xa8, 0x34, 0x2a, 0xf7, 0x5c, 0x25, 0x4d, 0x09,
+ 0x6c, 0xae, 0xe1, 0xe3, 0x49, 0x16, 0x2a, 0xf6, 0xee, 0x63, 0x09, 0x90,
+ 0xc2, 0x8d, 0x48, 0x29, 0x96, 0x06, 0xd6, 0xb0, 0x72, 0xcf, 0x3a, 0x43,
+ 0x68, 0x73, 0x78, 0x49, 0x6d, 0x5d, 0xad, 0x7c, 0x58, 0xd2, 0xd1, 0xcd,
+ 0xb4, 0x58, 0x70, 0x67, 0xbd, 0x50, 0xdb, 0x3f, 0x57, 0xeb, 0xe6, 0x47,
+ 0x95, 0x28, 0xca, 0xa4, 0xe2, 0xc9, 0xf0, 0xbb, 0xa7, 0x6f, 0x6a, 0x2d,
+ 0xba, 0x71, 0x2b, 0xd0, 0xf4, 0x0b, 0x0f, 0x67, 0x9b, 0x84, 0xe3, 0x7d,
+ 0xb4, 0x52, 0xc3, 0x0c, 0x65, 0x4d, 0x8c, 0xa1, 0xb6, 0x51, 0xa5, 0xdf,
+ 0x85, 0x87, 0x93, 0x51, 0x58, 0x55, 0xe5, 0x31, 0x74, 0x60, 0x22, 0x15,
+ 0xed, 0x21, 0x8f, 0xc4, 0x30, 0x4d, 0x0a, 0xf3, 0x19, 0x3f, 0x49, 0xf2,
+ 0x66, 0x9e, 0x8f, 0xb1, 0xa6, 0x2b, 0x79, 0x7a, 0x2f, 0xf0, 0x49, 0x7b,
+ 0xdf, 0xa4, 0x1c, 0xae, 0x34, 0x3d, 0x5f, 0xb9, 0x62, 0x0f, 0xa1, 0xee,
+ 0xab, 0x52, 0x76, 0x26, 0x3c, 0x9c, 0x5d, 0xaa, 0x76, 0xba, 0x94, 0x37,
+ 0xdd, 0x25, 0x64, 0x51, 0x3e, 0xaa, 0x9c, 0x15, 0xe0, 0x03, 0xe1, 0xe1,
+ 0x98, 0xb1, 0x06, 0x56, 0x86, 0x05, 0x52, 0x64, 0x51, 0xae, 0x5e, 0x19,
+ 0x3f, 0xe8, 0x1d, 0x32, 0xfc, 0x90, 0xd9, 0xb5, 0x77, 0xc2, 0xed, 0x2b,
+ 0x0b, 0x9d, 0x30, 0xcd, 0xa0, 0x79, 0xc0, 0xda, 0xe1, 0xa8, 0xe0, 0xa3,
+ 0xec, 0x85, 0x87, 0x33, 0x27, 0x2c, 0x60, 0xd7, 0x2b, 0x0e, 0x58, 0xbe,
+ 0xe2, 0xed, 0xc2, 0x2c, 0x03, 0xf5, 0x6e, 0x59, 0x8c, 0x92, 0x8f, 0x34,
+ 0xb7, 0x2a, 0x2e, 0xa6, 0x49, 0xf5, 0x71, 0xf5, 0x86, 0xcc, 0x04, 0x4d,
+ 0xe1, 0x71, 0x4e, 0xad, 0xaa, 0x0d, 0xb3, 0x10, 0x74, 0xd9, 0x58, 0xd0,
+ 0x05, 0x40, 0xc1, 0xe3, 0x76, 0xe0, 0x55, 0xfb, 0x86, 0x38, 0xdf, 0x8b,
+ 0x14, 0x4a, 0x07, 0xc4, 0x65, 0x9a, 0x29, 0x88, 0x8d, 0xf0, 0x18, 0x67,
+ 0x8a, 0x51, 0x08, 0x79, 0x69, 0x55, 0xb8, 0x6a, 0x7e, 0x8b, 0x25, 0x56,
+ 0x46, 0x09, 0xf8, 0x18, 0x68, 0x0e, 0xe2, 0xd2, 0x31, 0x3f, 0xae, 0xc7,
+ 0xcd, 0x6b, 0x92, 0x1a, 0x42, 0xd3, 0xd1, 0xd4, 0x3d, 0xe9, 0xc8, 0x2f,
+ 0x85, 0x76, 0x04, 0xa2, 0x7e, 0xd0, 0xdc, 0xc8, 0xe6, 0xec, 0x16, 0xf7,
+ 0x63, 0xe3, 0x88, 0x81, 0xbf, 0xea, 0x77, 0x55, 0xb8, 0x53, 0x6b, 0x68,
+ 0x6d, 0x1a, 0x8c, 0x09, 0x4c, 0x3c, 0xd8, 0x44, 0x11, 0xb0, 0x5b, 0x3f,
+ 0x9d, 0x55, 0xbe, 0xfe, 0xe3, 0x7d, 0xbc, 0x48, 0x38, 0xef, 0x95, 0xb6,
+ 0x57, 0x0e, 0xa3, 0x7d, 0x6b, 0xe4, 0x69, 0x3b, 0x45, 0xe6, 0xee, 0x96,
+ 0x75, 0x15, 0x81, 0x2d, 0x6a, 0x67, 0x77, 0xf2, 0xd5, 0xc6, 0x75, 0x18,
+ 0x27, 0xe8, 0x97, 0x15, 0x42, 0xc0, 0x84, 0x2d, 0x1e, 0x48, 0xb9, 0xde,
+ 0x2a, 0x32, 0x6a, 0xdd, 0xe3, 0x62, 0xfe, 0xc4, 0x15, 0x87, 0x07, 0xec,
+ 0xaa, 0x18, 0x87, 0xc3, 0xac, 0xca, 0xbb, 0x97, 0x72, 0x89, 0x5b, 0x76,
+ 0xbe, 0x6d, 0x06, 0x35, 0x1a, 0x5c, 0x35, 0x13, 0x97, 0xfa, 0xdc, 0xc9,
+ 0xd8, 0xad, 0x05, 0x55, 0xae, 0xa2, 0x8e, 0xc5, 0x3a, 0xb3, 0xf0, 0x70,
+ 0x86, 0x3c, 0xf5, 0x3d, 0xd9, 0x9e, 0xae, 0xe3, 0xbb, 0xe4, 0x4e, 0x22,
+ 0x60, 0x36, 0xfa, 0xb4, 0xa1, 0xd7, 0xfb, 0x17, 0xb1, 0x07, 0xb4, 0xcf,
+ 0x67, 0x99, 0x6b, 0x91, 0xe3, 0x17, 0x41, 0xf2, 0xae, 0x28, 0x65, 0x71,
+ 0xda, 0x10, 0x98, 0x03, 0xe7, 0x7e, 0xb4, 0x14, 0x77, 0xa5, 0x84, 0x3c,
+ 0x4a, 0x54, 0xa5, 0x4e, 0x54, 0xa2, 0xa4, 0x12, 0x5c, 0xdc, 0x18, 0x7b,
+ 0x7c, 0xf8, 0x79, 0xf3, 0xfc, 0x49, 0xce, 0xda, 0x62, 0x18, 0x64, 0x8c,
+ 0x1c, 0x8a, 0x12, 0xa2, 0xdd, 0x6e, 0xcb, 0x44, 0xac, 0x04, 0x7d, 0x3c,
+ 0xe2, 0xb6, 0x21, 0x7e, 0x93, 0xdf, 0x46, 0x02, 0x5d, 0xd9, 0x77, 0xdc,
+ 0x10, 0x0c, 0xb6, 0x9d, 0x4c, 0xc7, 0x6e, 0xcb, 0x6c, 0x67, 0xf9, 0x45,
+ 0x97, 0xb7, 0x60, 0x0a, 0x8b, 0xa7, 0x3f, 0x82, 0x45, 0x22, 0xa4, 0x12,
+ 0x93, 0xae, 0x82, 0xa8, 0x07, 0x1b, 0xd1, 0x95, 0x84, 0x36, 0x51, 0xa7,
+ 0x7b, 0x84, 0x7b, 0xcf, 0x03, 0xac, 0xa7, 0x7d, 0x10, 0x86, 0x5c, 0x14,
+ 0x80, 0x0a, 0x12, 0xc2, 0xf1, 0x87, 0x02, 0xc5, 0x1b, 0x12, 0x10, 0x65,
+ 0x87, 0xdb, 0xe6, 0x76, 0x7f, 0xbb, 0xeb, 0x5a, 0x9d, 0x36, 0xf5, 0x0f,
+ 0x75, 0xef, 0x58, 0xfa, 0x0c, 0x31, 0xe0, 0x42, 0xd3, 0xcf, 0x70, 0x85,
+ 0x1f, 0x2e, 0x7d, 0xb7, 0x30, 0xb9, 0x96, 0xad, 0xc1, 0x72, 0x1f, 0x3f,
+ 0xfa, 0x8a, 0xe9, 0x56, 0x6f, 0xef, 0xd5, 0xab, 0x9a, 0x3c, 0x2f, 0x1d,
+ 0x28, 0xf5, 0xfd, 0xad, 0x2d, 0x5a, 0x9b, 0x57, 0x13, 0x0d, 0xbf, 0xe8,
+ 0xbd, 0xa2, 0x17, 0xeb, 0xaf, 0x95, 0x09, 0x1c, 0xc1, 0xb8, 0xfd, 0xbd,
+ 0x1e, 0xfe, 0x26, 0xf0, 0x39, 0xf2, 0xa7, 0xb4, 0xbe, 0xf5, 0x0a, 0x3f,
+ 0x17, 0x78, 0x8b, 0x1e, 0xe6, 0x7d, 0xcc, 0x27, 0x13, 0x74, 0x64, 0xe1,
+ 0x93, 0x8a, 0xcb, 0x73, 0x1f, 0x17, 0x63, 0x7f, 0xb9, 0x5b, 0xdd, 0xde,
+ 0x76, 0xdb, 0x72, 0x29, 0x9a, 0x4c, 0x09, 0x70, 0x78, 0x9e, 0x68, 0x27,
+ 0x82, 0xf5, 0xc1, 0x05, 0x42, 0xcd, 0x81, 0xb6, 0x61, 0x46, 0xdb, 0xaf,
+ 0x5e, 0x75, 0x71, 0x66, 0xfb, 0xaf, 0x5e, 0xb5, 0x16, 0x84, 0x3b, 0x9f,
+ 0xb9, 0xcf, 0xad, 0xfb, 0x09, 0x5f, 0xb7, 0x44, 0x53, 0xa2, 0x91, 0x13,
+ 0xfe, 0x0e, 0xfe, 0x26, 0x7a, 0x1d, 0x9d, 0x5f, 0x5c, 0x9f, 0x38, 0x9e,
+ 0x19, 0xba, 0x5f, 0x1c, 0x30, 0x74, 0x4c, 0x4d, 0x8a, 0xc1, 0x2e, 0xa8,
+ 0x95, 0x17, 0x59, 0xbd, 0x60, 0x93, 0xf8, 0xc6, 0x24, 0x15, 0xab, 0xa8,
+ 0x47, 0xf0, 0x0f, 0x7e, 0x46, 0x04, 0x35, 0xec, 0x9a, 0xa6, 0x95, 0x0b,
+ 0xdb, 0xb4, 0x0e, 0x87, 0xbd, 0x41, 0x2e, 0x0e, 0x4e, 0x72, 0x93, 0x60,
+ 0xca, 0x5a, 0x89, 0xd5, 0x1d, 0x9c, 0x08, 0x8b, 0xff, 0xc8, 0x17, 0x6b,
+ 0x5e, 0x81, 0x45, 0x32, 0xc3, 0xbc, 0x55, 0x91, 0x84, 0xfc, 0x42, 0x8f,
+ 0x9e, 0x94, 0xeb, 0x42, 0xf6, 0x2a, 0x37, 0x0a, 0x8f, 0x09, 0xd5, 0xd2,
+ 0xfd, 0x78, 0x20, 0x9e, 0x82, 0x9c, 0x90, 0x13, 0x31, 0xb4, 0x32, 0x0b,
+ 0x87, 0x71, 0xd1, 0x8d, 0xd7, 0x4a, 0xeb, 0xf0, 0x34, 0xde, 0xb9, 0x0c,
+ 0xcf, 0xc1, 0xc3, 0x23, 0x64, 0x27, 0xfe, 0x38, 0x59, 0x68, 0x4a, 0x69,
+ 0x56, 0x1f, 0x07, 0x68, 0x79, 0x92, 0x4e, 0x97, 0x45, 0x38, 0xfd, 0x92,
+ 0xba, 0x3c, 0x48, 0xa6, 0x83, 0x76, 0x0d, 0x88, 0xef, 0xe3, 0x22, 0xd1,
+ 0x26, 0x77, 0xd9, 0xa3, 0xb9, 0xdb, 0x6a, 0x05, 0x6b, 0x3d, 0x10, 0xb6,
+ 0x74, 0xf0, 0x2c, 0x69, 0x2c, 0xe1, 0x02, 0x3d, 0x06, 0xbd, 0x04, 0x92,
+ 0xa2, 0x43, 0x5e, 0x3d, 0xe9, 0xed, 0x27, 0xe9, 0x35, 0xe2, 0x40, 0xc4,
+ 0xc3, 0xa6, 0x26, 0x7e, 0x71, 0x24, 0x5b, 0xe0, 0xe7, 0xd4, 0xad, 0xcd,
+ 0xac, 0xef, 0x1e, 0x9f, 0x25, 0x6f, 0xcb, 0x4d, 0xee, 0xf4, 0x08, 0xf1,
+ 0x41, 0x1b, 0x90, 0xf3, 0x30, 0x9c, 0x0b, 0xfd, 0x95, 0x0f, 0x09, 0x9e,
+ 0xbf, 0xcf, 0x66, 0x79, 0x3c, 0xb6, 0xce, 0x93, 0x85, 0xa6, 0xeb, 0x0a,
+ 0xe4, 0x98, 0x1c, 0xad, 0x97, 0xd5, 0x81, 0x27, 0xcd, 0x67, 0x1c, 0xad,
+ 0x3b, 0x80, 0x22, 0x44, 0xa1, 0x8e, 0x1b, 0x84, 0xb9, 0x14, 0x52, 0x0a,
+ 0x03, 0x64, 0x20, 0xdc, 0x8d, 0x6f, 0xf6, 0x22, 0xbd, 0xf3, 0x69, 0x99,
+ 0x44, 0x17, 0xea, 0x99, 0x89, 0x42, 0xd2, 0x71, 0x69, 0x44, 0x83, 0xd3,
+ 0xff, 0x79, 0xf2, 0x29, 0xa3, 0x4e, 0x45, 0x7c, 0x6f, 0x0a, 0x07, 0xbf,
+ 0x67, 0xc0, 0x4a, 0x89, 0x06, 0x19, 0xa4, 0x8a, 0x78, 0x26, 0x36, 0x3c,
+ 0xac, 0x97, 0x83, 0x0a, 0x14, 0x56, 0x94, 0x96, 0xb8, 0x40, 0x58, 0x3e,
+ 0x6d, 0x63, 0x7d, 0x9f, 0x45, 0x2e, 0xe3, 0x5c, 0x74, 0xaa, 0xf8, 0x62,
+ 0x07, 0x20, 0x9f, 0xe3, 0x9c, 0x5c, 0x89, 0x64, 0xda, 0xa3, 0xb7, 0x97,
+ 0xe1, 0xa4, 0x02, 0xdd, 0x2e, 0x09, 0x11, 0x11, 0x27, 0x05, 0x73, 0x7d,
+ 0xa2, 0x27, 0xa1, 0x5b, 0x69, 0x9f, 0x70, 0x43, 0x06, 0x0c, 0x4f, 0x15,
+ 0xd1, 0xe1, 0x87, 0xab, 0xb3, 0x96, 0x72, 0xc9, 0x01, 0x9d, 0x01, 0x6e,
+ 0x56, 0xe7, 0x2a, 0x21, 0x34, 0xb3, 0x22, 0xba, 0x8c, 0xa7, 0x49, 0xc7,
+ 0x05, 0x90, 0xab, 0x21, 0x48, 0x8a, 0x03, 0x22, 0xe4, 0x4e, 0x71, 0xdb,
+ 0x6e, 0x20, 0x13, 0xb7, 0x61, 0x61, 0xb7, 0xc8, 0x71, 0x32, 0x8b, 0x65,
+ 0xef, 0x96, 0x05, 0x86, 0xf3, 0x69, 0xe7, 0x03, 0xad, 0xa4, 0xd4, 0x4f,
+ 0xd9, 0x80, 0xfe, 0xe4, 0x2c, 0x53, 0x2e, 0xcb, 0x8a, 0x17, 0x48, 0x43,
+ 0x51, 0xe7, 0x0b, 0xf4, 0xc0, 0x77, 0x74, 0x9a, 0xbd, 0xc4, 0x0f, 0xb2,
+ 0xe9, 0x56, 0x60, 0x60, 0xb8, 0xe6, 0x85, 0xaa, 0xfb, 0xee, 0x71, 0xd6,
+ 0x1a, 0x6f, 0x4d, 0x10, 0x8f, 0xb7, 0xa4, 0x58, 0xb2, 0xd7, 0x2a, 0x0c,
+ 0xc3, 0x5f, 0x08, 0xba, 0xc8, 0x38, 0xac, 0x98, 0x71, 0x12, 0x9d, 0xc9,
+ 0xfc, 0x0e, 0x24, 0xd8, 0xc2, 0xba, 0x90, 0x4e, 0xad, 0x96, 0x19, 0x14,
+ 0x5a, 0x6c, 0x3c, 0xc3, 0x86, 0x38, 0xc6, 0xfb, 0x85, 0x6b, 0x1c, 0xe7,
+ 0xd8, 0x43, 0x85, 0x7a, 0xae, 0x67, 0xc6, 0x99, 0x5c, 0x3b, 0xd9, 0x4f,
+ 0x0e, 0x75, 0x68, 0x03, 0x40, 0x47, 0x5d, 0xe9, 0xf2, 0xd4, 0x03, 0xea,
+ 0xc8, 0xa4, 0x0e, 0xde, 0x39, 0x56, 0x87, 0xf6, 0xfe, 0xc3, 0x69, 0x1c,
+ 0xe2, 0x34, 0xff, 0x68, 0x41, 0xcc, 0x75, 0xa6, 0x5b, 0x51, 0x99, 0x0a,
+ 0x1d, 0xa1, 0xd7, 0x7c, 0xc4, 0x56, 0xcc, 0x8a, 0xb0, 0x0c, 0xba, 0xf3,
+ 0x7b, 0x4e, 0x41, 0xcb, 0x31, 0x97, 0x6e, 0xf6, 0xde, 0xa4, 0x20, 0x44,
+ 0x4a, 0x46, 0x20, 0x22, 0x2d, 0x97, 0xdb, 0x05, 0xeb, 0x45, 0xe4, 0x12,
+ 0xde, 0x9e, 0x8f, 0xee, 0x37, 0x92, 0xba, 0x0e, 0xf3, 0x8a, 0x89, 0xd9,
+ 0x00, 0x45, 0x3c, 0xe1, 0x2c, 0xb6, 0xda, 0x42, 0x6c, 0x9d, 0x15, 0xd2,
+ 0x00, 0x5e, 0x3a, 0x18, 0x08, 0xbc, 0x07, 0xfa, 0x2d, 0x03, 0xbb, 0x63,
+ 0x70, 0x81, 0x28, 0x73, 0x86, 0x5a, 0xd8, 0xd7, 0xba, 0x30, 0x79, 0xc6,
+ 0xa6, 0xe9, 0x7f, 0xcd, 0xc9, 0x1e, 0xcd, 0x30, 0x20, 0x4c, 0xca, 0x34,
+ 0xc2, 0xe1, 0xc8, 0x09, 0xa3, 0xf0, 0x71, 0x69, 0xea, 0x08, 0x86, 0xed,
+ 0x37, 0x96, 0xa0, 0x3d, 0x7c, 0xc2, 0x02, 0xf7, 0xb1, 0xb6, 0x30, 0xca,
+ 0x19, 0x75, 0x09, 0x0f, 0x63, 0x03, 0x59, 0x2e, 0x08, 0x2f, 0xa1, 0x10,
+ 0x3a, 0x65, 0xef, 0xe0, 0x23, 0xae, 0x1c, 0xe4, 0x84, 0x8d, 0xe8, 0x4f,
+ 0x3d, 0xdb, 0x78, 0x63, 0xfd, 0x31, 0x01, 0x0d, 0xdb, 0x26, 0x7d, 0x90,
+ 0x21, 0x15, 0xa8, 0xfe, 0x8c, 0xb8, 0x3b, 0x68, 0x59, 0xab, 0x4b, 0x21,
+ 0x23, 0xc4, 0x89, 0x2c, 0xf2, 0xa6, 0x83, 0x16, 0x40, 0x69, 0x96, 0x59,
+ 0xf2, 0x80, 0x18, 0xe0, 0xed, 0xc3, 0xf9, 0x4a, 0xf6, 0xf7, 0x47, 0x57,
+ 0xe7, 0xa7, 0xe7, 0xdf, 0x1c, 0x20, 0x42, 0x5d, 0x52, 0x8c, 0xb0, 0x91,
+ 0x75, 0xf4, 0xd7, 0xe5, 0x38, 0x1d, 0x31, 0xa7, 0x90, 0x16, 0xc1, 0xb5,
+ 0xca, 0x98, 0x44, 0x1c, 0xac, 0xc0, 0x5c, 0xbc, 0x42, 0x18, 0x49, 0xe6,
+ 0xc5, 0xba, 0x9e, 0x22, 0x9f, 0x2e, 0xcd, 0xd6, 0x8f, 0x48, 0x15, 0xa1,
+ 0x30, 0x00, 0x85, 0x47, 0x91, 0x1f, 0x31, 0xd1, 0x62, 0xe3, 0x25, 0x50,
+ 0x14, 0xde, 0x9c, 0x9d, 0x45, 0x3e, 0x94, 0x2f, 0xa7, 0x8f, 0x0a, 0x7d,
+ 0x71, 0xc6, 0x10, 0x0d, 0x64, 0xf2, 0x4d, 0x31, 0x9e, 0x07, 0xc2, 0x9f,
+ 0xfb, 0x16, 0x3a, 0x5c, 0x0f, 0x4c, 0xd7, 0xef, 0xfd, 0x4c, 0x4e, 0xca,
+ 0x33, 0xa6, 0xe4, 0x40, 0x3a, 0xe1, 0xb4, 0x18, 0x93, 0x2d, 0x04, 0x4c,
+ 0x32, 0x9f, 0x54, 0xa8, 0x1e, 0xd5, 0x24, 0x69, 0xbd, 0x2b, 0xd0, 0x2a,
+ 0x67, 0xfb, 0x0d, 0x5b, 0x39, 0x35, 0xe0, 0x14, 0x8e, 0x48, 0x52, 0xd2,
+ 0x2a, 0xd0, 0x23, 0xeb, 0x85, 0xd4, 0x49, 0x0a, 0x7d, 0x52, 0x1e, 0x35,
+ 0x8f, 0x93, 0xd8, 0x74, 0xc7, 0x2e, 0x91, 0x5b, 0xfa, 0xec, 0xe2, 0x3e,
+ 0x29, 0xc4, 0xf8, 0x34, 0x55, 0xc4, 0xc0, 0xec, 0xfa, 0xd1, 0x20, 0x87,
+ 0xe7, 0x03, 0x55, 0x0b, 0xda, 0x73, 0xb1, 0xd6, 0xbc, 0x9d, 0x93, 0x68,
+ 0x4d, 0x5e, 0x15, 0xf5, 0xa3, 0xa2, 0x98, 0x5b, 0x7d, 0xbd, 0x81, 0x7e,
+ 0xcf, 0x48, 0xff, 0xc3, 0xc4, 0x28, 0x14, 0x8f, 0x1a, 0xda, 0x41, 0x0a,
+ 0xe9, 0xf4, 0x80, 0x9d, 0x76, 0x70, 0x67, 0xa9, 0x0b, 0xb5, 0x33, 0xd2,
+ 0x13, 0xbd, 0x54, 0xdd, 0x34, 0xf5, 0xe6, 0x82, 0x83, 0x2d, 0xea, 0x9c,
+ 0xd6, 0x4f, 0xb1, 0xd8, 0x9d, 0x8e, 0xe7, 0x54, 0x3a, 0x85, 0x99, 0x50,
+ 0x29, 0x57, 0xe9, 0x25, 0xa8, 0x61, 0x7a, 0x01, 0xf0, 0x0b, 0xdb, 0xfe,
+ 0x11, 0x8b, 0xf4, 0x9c, 0x3a, 0x79, 0xf7, 0x65, 0x11, 0x37, 0x5d, 0xeb,
+ 0x5c, 0x48, 0x09, 0xd2, 0xa7, 0xf2, 0xea, 0xf4, 0x26, 0xfd, 0x8d, 0x60,
+ 0x5e, 0x0d, 0xcf, 0x41, 0x24, 0x52, 0x19, 0xdf, 0xd9, 0x84, 0xaf, 0x56,
+ 0xc6, 0xa7, 0xc5, 0x2a, 0x4d, 0x19, 0x4d, 0x07, 0x6a, 0xbc, 0x4a, 0x3a,
+ 0x54, 0x1c, 0x39, 0x85, 0x2c, 0x6e, 0xa8, 0xb2, 0x86, 0x49, 0xe0, 0x0f,
+ 0x27, 0x15, 0x5f, 0x12, 0xe4, 0x6a, 0x65, 0xc2, 0x12, 0xb9, 0x49, 0xb3,
+ 0xbb, 0x9c, 0x7e, 0x23, 0x41, 0xaa, 0x40, 0x8a, 0x4a, 0xda, 0x5a, 0xd6,
+ 0x72, 0xdd, 0xd8, 0x55, 0x75, 0xd0, 0x68, 0x11, 0x01, 0xac, 0x85, 0x4b,
+ 0x03, 0xdd, 0x9e, 0x2d, 0xb6, 0x4d, 0x4b, 0x93, 0x14, 0xf8, 0x32, 0x21,
+ 0xf1, 0x76, 0x4d, 0x4b, 0x71, 0x78, 0x71, 0x56, 0x26, 0xd2, 0xe5, 0x98,
+ 0x4b, 0x02, 0x55, 0xe0, 0x88, 0xbc, 0x49, 0x8d, 0xef, 0xa7, 0x5d, 0x92,
+ 0xf4, 0xeb, 0x0d, 0x4b, 0x6b, 0xf6, 0x2b, 0x66, 0x34, 0xd2, 0x45, 0xa2,
+ 0x1b, 0x3c, 0xba, 0xc9, 0x73, 0xa9, 0x39, 0x6d, 0x63, 0xb6, 0x11, 0xa9,
+ 0x34, 0x84, 0x88, 0xd1, 0xa2, 0x3f, 0xd4, 0x5b, 0x55, 0x4a, 0x32, 0x79,
+ 0xf3, 0xee, 0x39, 0x50, 0x83, 0x35, 0x74, 0xd2, 0xba, 0x6c, 0xe3, 0xf9,
+ 0x18, 0xe1, 0x2c, 0xcc, 0xd5, 0x87, 0x57, 0x24, 0x2e, 0xc0, 0xa2, 0x3b,
+ 0xbc, 0x3d, 0x92, 0x59, 0xe9, 0x6e, 0x4a, 0x50, 0xd8, 0x71, 0xae, 0xa5,
+ 0x05, 0xc8, 0x26, 0xaa, 0x21, 0xb3, 0x29, 0xab, 0x07, 0x34, 0x68, 0xa6,
+ 0x69, 0x45, 0x0c, 0xe4, 0x4f, 0x3b, 0x5b, 0x6d, 0x4c, 0x1e, 0x07, 0xd2,
+ 0x1a, 0x57, 0xbc, 0x8d, 0xa5, 0xb1, 0xbf, 0x48, 0x0c, 0xda, 0xc2, 0x00,
+ 0x94, 0x21, 0xcb, 0x05, 0xfa, 0xe9, 0x7a, 0x48, 0x2f, 0x71, 0xd9, 0xb6,
+ 0xff, 0xfd, 0xdf, 0xa3, 0xf7, 0xa1, 0xe5, 0x5f, 0x57, 0xce, 0x19, 0xe3,
+ 0x40, 0xa1, 0x04, 0x33, 0xe5, 0x25, 0xea, 0x27, 0x71, 0x94, 0x76, 0xab,
+ 0x33, 0x90, 0x5d, 0x4f, 0x4d, 0xee, 0xe4, 0x72, 0xe2, 0x68, 0xbe, 0xf9,
+ 0x1a, 0xcf, 0x17, 0x51, 0x80, 0x65, 0x75, 0xf5, 0x06, 0x68, 0x9a, 0x4a,
+ 0x6c, 0xe1, 0x2e, 0xe3, 0x5b, 0x6d, 0xdd, 0xe7, 0xa3, 0xaf, 0x08, 0x23,
+ 0x65, 0x63, 0x3c, 0x96, 0x74, 0x4d, 0xda, 0x10, 0xfc, 0x52, 0x5d, 0x30,
+ 0x52, 0xce, 0x59, 0x2f, 0xe8, 0xed, 0x0f, 0x76, 0x8d, 0x90, 0xec, 0x71,
+ 0x17, 0x0a, 0xbf, 0xc3, 0x6f, 0x77, 0xa2, 0x75, 0xe4, 0xaa, 0x1b, 0x46,
+ 0x79, 0xf5, 0xeb, 0x9f, 0xb5, 0x39, 0x0b, 0xdb, 0x30, 0x31, 0x4b, 0xc8,
+ 0x66, 0xf2, 0x2c, 0xea, 0xaf, 0x60, 0xe5, 0x15, 0x20, 0xff, 0xb1, 0xe7,
+ 0x1b, 0x57, 0x0f, 0x4e, 0x96, 0xb3, 0x90, 0x99, 0x83, 0x77, 0x5b, 0x82,
+ 0x43, 0x69, 0x59, 0x2e, 0xc5, 0x08, 0x34, 0x00, 0x33, 0x06, 0x71, 0x30,
+ 0x9a, 0xc1, 0x7c, 0xe8, 0xd3, 0xe5, 0x0c, 0xb3, 0x4a, 0x5a, 0xd5, 0x13,
+ 0xf2, 0x0e, 0x6b, 0x0b, 0x73, 0xd1, 0x31, 0xc5, 0x8e, 0x92, 0xd3, 0xe1,
+ 0x46, 0x74, 0xd2, 0x48, 0x0d, 0x37, 0xa1, 0x4b, 0xb2, 0xaa, 0x31, 0x5c,
+ 0xe7, 0xe2, 0xf2, 0xfa, 0xf4, 0xe2, 0x7c, 0x10, 0xfd, 0x5b, 0x67, 0x65,
+ 0x79, 0x57, 0x1d, 0x58, 0xf9, 0x87, 0xae, 0x3d, 0x93, 0xe8, 0x50, 0xfc,
+ 0x0c, 0x6d, 0xb6, 0xb1, 0xa3, 0xc4, 0x8f, 0x40, 0x7a, 0x03, 0x7f, 0xd5,
+ 0x37, 0x05, 0xda, 0x4d, 0x4e, 0xab, 0x81, 0x46, 0xe7, 0x69, 0xcb, 0x06,
+ 0xce, 0xaf, 0x69, 0x44, 0x33, 0xb3, 0xb7, 0x36, 0x4b, 0x63, 0xf8, 0x30,
+ 0x07, 0x16, 0xce, 0x57, 0x4b, 0xe5, 0x94, 0x17, 0x68, 0x8b, 0xef, 0x49,
+ 0x2d, 0x65, 0x0b, 0x7a, 0x9d, 0x79, 0xa6, 0x2a, 0x5a, 0x65, 0xa0, 0xc3,
+ 0xdc, 0x37, 0x27, 0xd7, 0xe8, 0xa4, 0xa1, 0x2a, 0x57, 0x3b, 0x41, 0x72,
+ 0x75, 0x89, 0xe2, 0x13, 0x1b, 0xe5, 0x4c, 0x8b, 0x5b, 0xf1, 0xd2, 0x80,
+ 0xf6, 0x3c, 0x8b, 0xb3, 0x60, 0x09, 0x1b, 0x68, 0xb4, 0xc7, 0xb0, 0x1b,
+ 0xb9, 0x85, 0x7e, 0x55, 0xdf, 0x89, 0xd3, 0xd7, 0x84, 0x61, 0x99, 0x2e,
+ 0x3f, 0x5c, 0x8b, 0x9f, 0xea, 0xcd, 0xc9, 0xd9, 0xc9, 0xf5, 0x49, 0xd3,
+ 0x72, 0x1f, 0x32, 0x98, 0x25, 0x95, 0xba, 0x54, 0xc9, 0xe8, 0x26, 0xcb,
+ 0x67, 0xf9, 0x34, 0x95, 0x86, 0xaf, 0xd1, 0xf7, 0xc9, 0xf0, 0xcd, 0xd1,
+ 0x77, 0xa8, 0x4f, 0xa0, 0xcf, 0xe9, 0xf2, 0xea, 0xe2, 0xf2, 0xed, 0xe9,
+ 0xf9, 0x9b, 0x6e, 0x74, 0x7c, 0x71, 0xf9, 0x97, 0x6e, 0xf4, 0xfe, 0xe2,
+ 0xbb, 0x93, 0x40, 0x8a, 0x33, 0x22, 0xdc, 0x7a, 0x14, 0x63, 0x9a, 0xf5,
+ 0x59, 0xc3, 0x3b, 0xe3, 0x90, 0x85, 0x23, 0x44, 0x30, 0xff, 0x1f, 0xb4,
+ 0x5f, 0x64, 0xb7, 0x74, 0xd7, 0x60, 0xeb, 0x40, 0x86, 0xbe, 0x3b, 0x39,
+ 0x7a, 0xd3, 0xf5, 0x00, 0xcc, 0xb1, 0x95, 0x0a, 0x7c, 0x0c, 0xd7, 0x67,
+ 0x16, 0x4d, 0xb0, 0xd7, 0x6c, 0x7d, 0x90, 0x86, 0xc0, 0x41, 0x2e, 0xbe,
+ 0xb1, 0x40, 0xb0, 0x54, 0xa5, 0x3f, 0x6e, 0xcb, 0x9c, 0x10, 0x2c, 0xfe,
+ 0xd6, 0x16, 0xcb, 0x4e, 0xd9, 0x05, 0x2a, 0x6b, 0xae, 0x9a, 0x2d, 0x60,
+ 0x4d, 0x94, 0x56, 0xaf, 0x45, 0x58, 0x6e, 0x96, 0x6c, 0x0b, 0x62, 0x50,
+ 0xb7, 0x06, 0x15, 0x40, 0xfc, 0x88, 0x5d, 0x8f, 0xb1, 0xf4, 0x34, 0xa4,
+ 0xa6, 0x45, 0x60, 0x26, 0xa1, 0x56, 0x3d, 0xb1, 0x28, 0xb1, 0xab, 0x35,
+ 0x6c, 0x01, 0x52, 0x17, 0xd8, 0x26, 0xdc, 0x3c, 0xdd, 0x20, 0xd3, 0xd3,
+ 0xf3, 0x07, 0xfe, 0xb1, 0x80, 0x45, 0x05, 0x12, 0xb7, 0x97, 0x13, 0x20,
+ 0xcb, 0x84, 0x53, 0xa6, 0xf8, 0x98, 0x8c, 0x5b, 0x20, 0xea, 0x9d, 0xaa,
+ 0x53, 0x62, 0x95, 0x82, 0xa5, 0x37, 0x46, 0x1d, 0x33, 0x8c, 0x15, 0xa5,
+ 0x3e, 0xab, 0x3a, 0x9b, 0x70, 0x3d, 0x24, 0xb8, 0xce, 0x80, 0xbe, 0xaf,
+ 0x47, 0xac, 0x68, 0x46, 0xe2, 0xc1, 0x71, 0x37, 0x85, 0x40, 0x37, 0x3c,
+ 0x5f, 0x16, 0x08, 0x58, 0x4f, 0xb8, 0xd0, 0x93, 0xc0, 0x4a, 0x32, 0xf1,
+ 0x88, 0x46, 0x18, 0x7a, 0xeb, 0xb1, 0x2d, 0xed, 0xe6, 0xfc, 0x2a, 0xf7,
+ 0x14, 0xdd, 0x54, 0xe6, 0xe0, 0x85, 0xa8, 0x68, 0x9d, 0xb5, 0x96, 0xda,
+ 0xe6, 0x96, 0xef, 0x6e, 0x3d, 0x58, 0x1f, 0x3b, 0x6a, 0x13, 0x65, 0xd4,
+ 0x13, 0xac, 0x6f, 0x2a, 0xde, 0xf3, 0xb6, 0x6e, 0xfd, 0x6d, 0x0b, 0x63,
+ 0x74, 0xbd, 0xb6, 0xa6, 0xa0, 0xdf, 0xb0, 0xa8, 0xb3, 0x53, 0xb8, 0x0e,
+ 0x01, 0x68, 0x9c, 0x71, 0x4e, 0x8d, 0xa3, 0x29, 0x1d, 0x81, 0xf4, 0x2a,
+ 0xda, 0x7d, 0x18, 0xcb, 0xff, 0x30, 0x76, 0x52, 0x0f, 0x7e, 0x99, 0x5a,
+ 0xac, 0x3f, 0xf1, 0x69, 0xef, 0xcc, 0xae, 0x4e, 0xae, 0xaf, 0xfa, 0xd1,
+ 0xba, 0x8b, 0xf9, 0xfa, 0xa2, 0xbf, 0xe5, 0x07, 0x6d, 0xb0, 0x89, 0x7b,
+ 0xf0, 0xab, 0xd4, 0xdd, 0xbd, 0xe5, 0xab, 0xc4, 0x1b, 0xf0, 0xbb, 0x7e,
+ 0x1e, 0xb1, 0x83, 0xf4, 0xb4, 0x15, 0xfa, 0x9e, 0xdb, 0x2a, 0xbe, 0xf6,
+ 0x3d, 0xfc, 0xc5, 0x8a, 0x55, 0xbe, 0x3b, 0x39, 0x0b, 0xf4, 0xf6, 0xf9,
+ 0xee, 0xea, 0xed, 0x5f, 0xea, 0xab, 0xdc, 0xdd, 0x0b, 0x7c, 0xf5, 0xb7,
+ 0x74, 0xa8, 0x27, 0x65, 0x3e, 0x03, 0x85, 0x85, 0xaa, 0x38, 0xa8, 0x88,
+ 0xe3, 0x00, 0x44, 0x00, 0xe6, 0x9a, 0xff, 0xd8, 0x95, 0xbf, 0xfc, 0xdc,
+ 0xef, 0xf7, 0xbf, 0xf4, 0x51, 0xd1, 0xc9, 0x47, 0x63, 0x96, 0x2b, 0xcf,
+ 0x36, 0x2d, 0x70, 0xaa, 0x9a, 0xa1, 0x2a, 0x21, 0x8c, 0x5a, 0x2c, 0xe2,
+ 0xb4, 0xa0, 0x9e, 0x40, 0x41, 0x81, 0x8b, 0x4b, 0xb2, 0x95, 0x5e, 0x46,
+ 0x9b, 0x13, 0x44, 0x30, 0xbe, 0xae, 0xeb, 0xe5, 0x86, 0xd4, 0x55, 0x5b,
+ 0x19, 0x1c, 0x8f, 0x3d, 0x47, 0x08, 0xf7, 0x65, 0xc1, 0xcf, 0x16, 0xe8,
+ 0x9f, 0x65, 0x5b, 0xc7, 0xca, 0xda, 0x4c, 0x65, 0x87, 0xac, 0x7e, 0x6c,
+ 0xa6, 0x1f, 0xf4, 0x5e, 0x48, 0x9d, 0xe4, 0xb1, 0x84, 0xd4, 0xc9, 0x91,
+ 0x1c, 0x93, 0x58, 0xa1, 0x36, 0xb3, 0x49, 0x35, 0xda, 0xc4, 0x75, 0x96,
+ 0x35, 0x0d, 0xd0, 0xa8, 0x70, 0x9e, 0x13, 0xc9, 0xcd, 0x93, 0xa4, 0x0a,
+ 0x5a, 0x4e, 0x6e, 0x71, 0x4a, 0x12, 0x6c, 0x11, 0xaf, 0xa3, 0xa9, 0xb3,
+ 0x7e, 0xe0, 0x73, 0xb3, 0x5a, 0x47, 0x24, 0xb7, 0x02, 0x51, 0x5b, 0x5d,
+ 0x78, 0xec, 0xd0, 0x29, 0x53, 0xf3, 0xd5, 0x7e, 0xe2, 0xce, 0x4a, 0x49,
+ 0x98, 0x48, 0x41, 0xe8, 0xe3, 0x93, 0x9a, 0x44, 0x50, 0x0f, 0x9d, 0x7b,
+ 0xe8, 0x2d, 0xb5, 0xcf, 0x34, 0x01, 0x46, 0x12, 0x57, 0x23, 0x1e, 0x57,
+ 0xea, 0xcb, 0xc3, 0xaf, 0x4d, 0xc2, 0x06, 0x95, 0x99, 0xaf, 0xfd, 0xdb,
+ 0x1a, 0x2a, 0xc2, 0xf4, 0x7a, 0xb0, 0xb6, 0x5d, 0x09, 0x17, 0x0d, 0x1b,
+ 0x7c, 0x2a, 0xa0, 0x37, 0x98, 0x4d, 0x31, 0xc4, 0xa7, 0xbc, 0xd4, 0x25,
+ 0x1e, 0x5a, 0x42, 0x3f, 0xfa, 0x3e, 0x9d, 0x8d, 0x47, 0x71, 0x41, 0xe9,
+ 0x61, 0xbe, 0x78, 0x15, 0x32, 0xe1, 0xfb, 0x54, 0xe6, 0xf4, 0x55, 0x7b,
+ 0x79, 0xb4, 0x99, 0x4c, 0x98, 0xea, 0x03, 0x45, 0x3f, 0xe6, 0x30, 0x30,
+ 0xf8, 0xdd, 0x56, 0x74, 0xc6, 0xe4, 0xa3, 0x7b, 0x8c, 0xa2, 0xae, 0xde,
+ 0xc1, 0xa3, 0x7e, 0xae, 0x1a, 0x87, 0xe8, 0xed, 0xf9, 0xb1, 0x94, 0x74,
+ 0x71, 0xb7, 0x47, 0xee, 0xab, 0x17, 0x5d, 0xfe, 0xd7, 0x0b, 0x5b, 0x7e,
+ 0xe2, 0x18, 0x69, 0x6c, 0xc7, 0xb0, 0xd6, 0x7f, 0x7a, 0xa9, 0x45, 0xae,
+ 0x4d, 0x9e, 0x38, 0x70, 0x30, 0xc9, 0x79, 0x96, 0x5a, 0xb6, 0x06, 0xef,
+ 0xe8, 0x6c, 0x71, 0x47, 0x80, 0x7f, 0xfd, 0x38, 0x2c, 0x10, 0x76, 0xa4,
+ 0x2a, 0x7f, 0x5e, 0x55, 0x4f, 0x0c, 0x3a, 0xff, 0xcb, 0x7e, 0xa0, 0xfd,
+ 0x76, 0xf0, 0x43, 0x26, 0xdd, 0xd7, 0x7e, 0x0d, 0x81, 0xa2, 0x28, 0x6c,
+ 0x87, 0x59, 0x3f, 0xb6, 0x9c, 0x38, 0xf8, 0xa1, 0x57, 0x4f, 0x7c, 0x88,
+ 0x8f, 0xd4, 0xe0, 0xbe, 0xdd, 0x2b, 0x55, 0x98, 0xe9, 0x4b, 0x2f, 0xed,
+ 0xbd, 0xfe, 0xd6, 0xf3, 0x33, 0x94, 0xad, 0xf1, 0xcd, 0xf0, 0x83, 0xfc,
+ 0x13, 0xa2, 0x12, 0x49, 0x11, 0xcb, 0xdb, 0x68, 0x6e, 0x65, 0x67, 0x0c,
+ 0x84, 0xcd, 0xa9, 0xf1, 0x72, 0xd8, 0x00, 0x2a, 0x11, 0x2a, 0xc0, 0x38,
+ 0x2c, 0xbd, 0x1d, 0x38, 0xcd, 0x1a, 0xee, 0x16, 0xe1, 0x89, 0x18, 0x14,
+ 0xe5, 0x1f, 0x23, 0xfc, 0x82, 0x72, 0xb9, 0x13, 0x2c, 0x62, 0xba, 0x3a,
+ 0x79, 0xfb, 0x61, 0x70, 0xf2, 0x26, 0x8a, 0x03, 0x10, 0x58, 0x14, 0x2f,
+ 0x4d, 0xc9, 0x2d, 0x27, 0x0d, 0x82, 0xaa, 0x3c, 0xe7, 0x8c, 0x20, 0x99,
+ 0x8b, 0xd7, 0x73, 0x50, 0x92, 0x8b, 0xc0, 0x32, 0xf6, 0xeb, 0x4e, 0x58,
+ 0x8f, 0x93, 0x17, 0x7f, 0x01, 0xee, 0x08, 0xaf, 0x7a, 0x9c, 0x60, 0x73,
+ 0xae, 0x43, 0xce, 0x82, 0xf1, 0x40, 0xd5, 0x6c, 0x1b, 0xaf, 0x72, 0x96,
+ 0x24, 0x0b, 0x29, 0xfa, 0xb3, 0x9d, 0xe4, 0xe1, 0x6c, 0xd4, 0x13, 0x28,
+ 0xcd, 0x39, 0x68, 0x54, 0x0d, 0x1c, 0xc6, 0x2d, 0x9d, 0xa4, 0x08, 0x5e,
+ 0x8d, 0x33, 0xd6, 0x2d, 0x66, 0x80, 0xdd, 0x16, 0xde, 0x95, 0xf5, 0xb4,
+ 0x6a, 0xb8, 0xd0, 0xbd, 0xae, 0x7a, 0xe4, 0x52, 0x47, 0x80, 0x1e, 0xb0,
+ 0x8b, 0x78, 0x32, 0xf1, 0x6c, 0x9a, 0x17, 0x30, 0xde, 0xdc, 0xd4, 0x29,
+ 0x32, 0x9c, 0x43, 0xb9, 0xd1, 0xec, 0xc5, 0xe9, 0xd7, 0x7c, 0x73, 0xa9,
+ 0x23, 0x85, 0xc0, 0x13, 0xae, 0xe1, 0x46, 0xb6, 0xc0, 0xfb, 0x44, 0x1e,
+ 0x13, 0x0c, 0x0f, 0xb2, 0x4c, 0x1b, 0x48, 0xd5, 0x35, 0xed, 0x07, 0x6f,
+ 0xa1, 0x67, 0x6e, 0x62, 0xd7, 0x91, 0xa6, 0x3b, 0x47, 0x55, 0x77, 0x0d,
+ 0x07, 0xb8, 0x73, 0xff, 0x3d, 0xbb, 0xb9, 0x6d, 0xef, 0x84, 0x6e, 0xc0,
+ 0x3c, 0x7e, 0x20, 0x17, 0x55, 0x2b, 0x39, 0xb0, 0xc3, 0x16, 0xb7, 0x03,
+ 0x1f, 0x2b, 0x98, 0xe5, 0x13, 0x83, 0xb5, 0x95, 0x2f, 0x9c, 0x97, 0x64,
+ 0x4e, 0x5a, 0x1c, 0x58, 0x64, 0x77, 0xfb, 0xa1, 0x47, 0x4a, 0xe3, 0x36,
+ 0x2d, 0xcd, 0xc8, 0x4f, 0x18, 0xe3, 0x32, 0xd1, 0x88, 0x5b, 0xe7, 0xd6,
+ 0x52, 0xf4, 0xbd, 0x0d, 0xfc, 0xf1, 0x2c, 0xc7, 0x28, 0x25, 0x13, 0x03,
+ 0x7d, 0xdf, 0x87, 0xec, 0x43, 0x23, 0xa1, 0x40, 0x42, 0x54, 0x83, 0x96,
+ 0x7d, 0xc2, 0xd4, 0xca, 0x86, 0x8a, 0xc5, 0x10, 0xc0, 0x8c, 0x3d, 0x60,
+ 0x13, 0x3b, 0x8e, 0xbc, 0xe9, 0xe5, 0xb0, 0xf2, 0x38, 0xac, 0x28, 0xd0,
+ 0x10, 0xdd, 0x3a, 0xb2, 0xb2, 0x6c, 0x36, 0x95, 0x67, 0x52, 0x83, 0x6a,
+ 0x6a, 0xa5, 0x26, 0x35, 0xf2, 0x01, 0x55, 0xad, 0xab, 0xed, 0x73, 0xa8,
+ 0xb4, 0x09, 0x97, 0x43, 0x76, 0x66, 0x9c, 0xb9, 0x73, 0xa5, 0x03, 0x80,
+ 0x31, 0xd2, 0x7c, 0x4c, 0x45, 0x51, 0xdc, 0x86, 0xa7, 0x0d, 0x3e, 0x46,
+ 0xe6, 0xb2, 0x86, 0x9e, 0xca, 0x87, 0x74, 0xbe, 0x9c, 0xd3, 0xfb, 0x5d,
+ 0x2e, 0x7f, 0x9c, 0xa3, 0xd4, 0xd2, 0x43, 0xa5, 0xec, 0xc2, 0x4a, 0x29,
+ 0x2a, 0xe4, 0xcc, 0x40, 0xde, 0x46, 0x44, 0x5b, 0x71, 0xc6, 0x0f, 0xbe,
+ 0xc5, 0x2d, 0x36, 0xe8, 0xa0, 0xfe, 0xdb, 0xe9, 0x33, 0x3a, 0x04, 0x8d,
+ 0xee, 0x4b, 0x7f, 0x12, 0x3e, 0xeb, 0x20, 0xba, 0xc4, 0x3c, 0xe7, 0x64,
+ 0xec, 0x58, 0x91, 0x42, 0x6e, 0x04, 0x62, 0xc3, 0x67, 0xd4, 0xce, 0xa1,
+ 0xa4, 0xd5, 0x24, 0xcd, 0x57, 0x28, 0x1e, 0x97, 0x6a, 0x9d, 0xbf, 0x2c,
+ 0x96, 0x84, 0xee, 0xa7, 0x0c, 0xe9, 0xb7, 0x5c, 0x78, 0x32, 0xdf, 0xf0,
+ 0x09, 0xa3, 0x8e, 0xc2, 0xe7, 0xb7, 0x24, 0x27, 0x46, 0x6c, 0x5b, 0xf4,
+ 0x97, 0xcb, 0x1e, 0x1b, 0x37, 0x96, 0x34, 0x5c, 0x08, 0x77, 0xd6, 0x24,
+ 0x5e, 0xe6, 0x09, 0x11, 0x56, 0x4c, 0x19, 0x0e, 0xe9, 0x00, 0x37, 0x85,
+ 0x8f, 0xaf, 0xab, 0x65, 0x78, 0x7b, 0x0f, 0x0f, 0x1e, 0x85, 0x3b, 0x06,
+ 0x31, 0xe3, 0x4d, 0xb2, 0xb5, 0xbc, 0xb7, 0xf5, 0x39, 0xfe, 0x73, 0xff,
+ 0xa1, 0x61, 0x34, 0xf7, 0x83, 0xe0, 0x90, 0x5a, 0x96, 0x1b, 0x0f, 0x73,
+ 0x0e, 0xc1, 0xf1, 0x86, 0xc5, 0xce, 0x66, 0x6a, 0x14, 0x41, 0x3a, 0xbf,
+ 0xde, 0xc7, 0xb8, 0xb9, 0x79, 0xe6, 0xa7, 0x36, 0x50, 0x2e, 0xa6, 0xd3,
+ 0xeb, 0x55, 0x03, 0xa5, 0xd4, 0xb4, 0x10, 0x94, 0x7f, 0xdc, 0x4c, 0xdd,
+ 0x2b, 0x1d, 0x74, 0x9c, 0x2f, 0x39, 0x90, 0x99, 0x78, 0x91, 0xb1, 0x94,
+ 0x77, 0x1f, 0xaf, 0x14, 0x88, 0xac, 0x74, 0x86, 0xef, 0xf0, 0xbd, 0x2e,
+ 0xa3, 0x6d, 0x38, 0x86, 0x34, 0x5b, 0x56, 0x06, 0xac, 0x8f, 0x3e, 0xa8,
+ 0x14, 0x1a, 0xdc, 0x7d, 0xe4, 0xf3, 0x46, 0xb0, 0x08, 0x2f, 0x28, 0x9d,
+ 0x00, 0x21, 0xdf, 0x13, 0xd2, 0xc9, 0xc5, 0xc1, 0xe3, 0x4a, 0xd9, 0x80,
+ 0xab, 0xc8, 0x44, 0x61, 0xa5, 0x73, 0x53, 0xf2, 0x00, 0x9b, 0xcd, 0x20,
+ 0x4a, 0x91, 0x11, 0x0e, 0x56, 0xa8, 0x49, 0x86, 0x30, 0x37, 0x6c, 0x08,
+ 0x64, 0xfe, 0xd4, 0x98, 0xb8, 0x69, 0xe1, 0x45, 0x7c, 0x2e, 0xaf, 0xe4,
+ 0x4a, 0x9a, 0xe6, 0x6b, 0xac, 0xb5, 0x85, 0xaf, 0xb6, 0x34, 0x50, 0x63,
+ 0x6c, 0x3d, 0xd0, 0xda, 0x5e, 0x60, 0x35, 0xb0, 0x53, 0x88, 0x06, 0x27,
+ 0x61, 0xb2, 0x36, 0x71, 0xf8, 0x2b, 0xfa, 0xf4, 0x11, 0x86, 0x8c, 0x0f,
+ 0x42, 0x1a, 0x99, 0x5b, 0xcc, 0x8d, 0xac, 0x97, 0x78, 0x01, 0xf9, 0xeb,
+ 0x13, 0xc5, 0xe3, 0x46, 0xa4, 0x6e, 0xbe, 0xac, 0xc6, 0x01, 0xcf, 0xe9,
+ 0x00, 0xc9, 0x83, 0xcf, 0x99, 0x43, 0xaa, 0xce, 0xef, 0xc8, 0x8e, 0xca,
+ 0x18, 0xe1, 0x27, 0x97, 0xd5, 0xcd, 0xdf, 0xd3, 0x71, 0x10, 0xb9, 0x01,
+ 0x6f, 0x03, 0xfc, 0x1a, 0x4e, 0xad, 0x64, 0xf7, 0x97, 0x22, 0x9b, 0x46,
+ 0xeb, 0xf2, 0xda, 0x46, 0x37, 0x1a, 0x2f, 0xc9, 0x21, 0x37, 0x38, 0x1a,
+ 0x9c, 0x45, 0x97, 0x67, 0x47, 0xa7, 0xe7, 0xf0, 0x4e, 0xcf, 0x37, 0x52,
+ 0x0d, 0x60, 0x59, 0xb7, 0xd9, 0x62, 0x8c, 0x3c, 0x9e, 0x75, 0x4c, 0x33,
+ 0xf3, 0x1d, 0xfe, 0x90, 0x8f, 0x69, 0x34, 0x26, 0x51, 0x5a, 0xab, 0x3d,
+ 0xe8, 0x2d, 0x35, 0xe3, 0xa9, 0x1d, 0x55, 0xc7, 0x2a, 0x4d, 0x9a, 0x29,
+ 0x23, 0xa9, 0xa8, 0x4e, 0xac, 0x91, 0x2f, 0x23, 0x48, 0xae, 0xbb, 0x44,
+ 0xa6, 0xe6, 0xaf, 0x06, 0x56, 0x6e, 0xb3, 0x8b, 0x70, 0x86, 0x30, 0x23,
+ 0xee, 0x98, 0x05, 0x54, 0xe1, 0x0c, 0x4b, 0xe0, 0x6e, 0x26, 0xcb, 0x95,
+ 0x32, 0x06, 0xdb, 0x32, 0xa1, 0x60, 0x52, 0xe8, 0x76, 0xc4, 0xe4, 0x50,
+ 0xd9, 0x26, 0x15, 0xb3, 0x4e, 0x56, 0x7e, 0x4c, 0x85, 0xc3, 0xc6, 0x4a,
+ 0xc3, 0xc5, 0xae, 0x95, 0x9e, 0x84, 0x1e, 0xe6, 0x0f, 0x5d, 0x0b, 0x93,
+ 0x40, 0xa5, 0x4d, 0x26, 0xbf, 0x61, 0x0a, 0xcc, 0x8c, 0x60, 0xa8, 0x78,
+ 0x24, 0x18, 0xb4, 0x6b, 0x32, 0xdd, 0xcb, 0x9b, 0xd8, 0x2f, 0x18, 0x98,
+ 0x83, 0x76, 0x0b, 0x03, 0xba, 0xae, 0xd1, 0x55, 0x34, 0xf6, 0xa2, 0xd1,
+ 0xcb, 0x9b, 0x68, 0x2c, 0x6d, 0xea, 0x38, 0x27, 0x94, 0x65, 0x6b, 0x72,
+ 0xe4, 0x0c, 0x77, 0x86, 0x21, 0x88, 0x8e, 0xea, 0xe4, 0xb0, 0x12, 0x80,
+ 0x7d, 0xbb, 0xf1, 0xbd, 0x4f, 0x84, 0x12, 0xcb, 0xa8, 0xdd, 0x6d, 0x8d,
+ 0x2f, 0xcb, 0x03, 0xfe, 0xba, 0x05, 0xa3, 0xf6, 0x27, 0xc3, 0xc8, 0x5e,
+ 0x58, 0xcd, 0xc4, 0x0d, 0x4a, 0x43, 0xf0, 0x50, 0xf4, 0xc4, 0xa6, 0xa4,
+ 0xc6, 0x3d, 0x95, 0x61, 0xc2, 0xd0, 0xb3, 0xba, 0xf2, 0x01, 0x52, 0x3f,
+ 0x76, 0xf0, 0xed, 0x85, 0x60, 0xac, 0x4c, 0x7c, 0x56, 0xec, 0xac, 0x92,
+ 0x9e, 0xc6, 0x44, 0xb9, 0x4a, 0xd4, 0x39, 0x23, 0xc9, 0x71, 0x0c, 0x9b,
+ 0x6f, 0x86, 0x0d, 0x10, 0xfc, 0x76, 0x09, 0x9c, 0x82, 0x30, 0xe1, 0x26,
+ 0xa9, 0x3a, 0x03, 0x67, 0x4c, 0x8f, 0x0f, 0x53, 0x13, 0x0d, 0xa2, 0xb3,
+ 0xbf, 0x2d, 0xd3, 0x84, 0xba, 0xf9, 0x82, 0x1c, 0x8e, 0xde, 0x70, 0xc6,
+ 0xa4, 0x34, 0x1b, 0xe5, 0xae, 0xc6, 0xd4, 0xf9, 0x18, 0x1f, 0x35, 0x13,
+ 0xf0, 0xf8, 0x30, 0x4c, 0x08, 0xe5, 0xd3, 0x7b, 0x9a, 0xf4, 0x31, 0x4e,
+ 0x7a, 0x0e, 0x02, 0x90, 0xfc, 0x5a, 0x0e, 0xba, 0x9e, 0x26, 0xd3, 0x68,
+ 0x85, 0x0b, 0x8b, 0xaa, 0xb8, 0xbc, 0xf5, 0x6b, 0x58, 0xba, 0xb5, 0x4e,
+ 0x6d, 0xe4, 0x4b, 0x11, 0xc6, 0x54, 0x61, 0x9b, 0xbf, 0x2c, 0x9e, 0x6d,
+ 0x96, 0xd5, 0x18, 0xf5, 0x82, 0x65, 0x36, 0xc3, 0x49, 0xe2, 0x50, 0x2d,
+ 0x7d, 0x43, 0x03, 0x38, 0x54, 0x04, 0x81, 0xde, 0x38, 0x20, 0x8a, 0xe9,
+ 0x18, 0x36, 0x28, 0xb5, 0x7c, 0xae, 0x61, 0x87, 0x3f, 0x11, 0xb9, 0xea,
+ 0x83, 0x62, 0xb9, 0x5b, 0x85, 0x6c, 0x87, 0x57, 0x4c, 0x1b, 0x59, 0x3b,
+ 0xb7, 0x55, 0x10, 0x21, 0x77, 0x38, 0x21, 0x20, 0xb4, 0x61, 0x5e, 0x2a,
+ 0x78, 0x3a, 0x2c, 0x12, 0x5e, 0xaf, 0xdd, 0x27, 0x82, 0xa0, 0xfb, 0x85,
+ 0x28, 0x3f, 0xdc, 0x2f, 0xdd, 0xc1, 0xf8, 0x59, 0xd5, 0x26, 0xdd, 0x6f,
+ 0x32, 0xff, 0x8b, 0x01, 0x7e, 0x42, 0x08, 0x66, 0xe8, 0x62, 0x31, 0x39,
+ 0xc1, 0x92, 0xe8, 0x57, 0x03, 0xba, 0x21, 0xa7, 0x06, 0x26, 0x5e, 0x04,
+ 0x5a, 0x74, 0x02, 0x39, 0x2d, 0x05, 0x1b, 0x64, 0x34, 0x03, 0x1d, 0x28,
+ 0xe0, 0x88, 0x19, 0x08, 0x30, 0x1c, 0xc2, 0xe0, 0x75, 0x9b, 0x22, 0xbb,
+ 0x5c, 0xa2, 0x6a, 0x3e, 0x5b, 0xe2, 0xb7, 0x19, 0x41, 0xce, 0x20, 0x98,
+ 0x29, 0xa4, 0x41, 0x10, 0xf5, 0xcf, 0x40, 0x90, 0xe1, 0x1d, 0x75, 0x00,
+ 0x10, 0x15, 0xd3, 0xd7, 0x60, 0x03, 0x36, 0x31, 0xa2, 0xfa, 0x2d, 0xb3,
+ 0x43, 0x6f, 0x09, 0x0f, 0x93, 0x08, 0xc0, 0xaa, 0xe3, 0x98, 0xc2, 0x32,
+ 0x2f, 0x9d, 0x8e, 0x20, 0x04, 0x0a, 0xa6, 0x4e, 0x10, 0xd5, 0x8d, 0x72,
+ 0x26, 0x58, 0xf9, 0x72, 0xe7, 0xa6, 0x1a, 0x8a, 0x02, 0x08, 0x50, 0xe5,
+ 0x85, 0x83, 0x03, 0x08, 0x04, 0x90, 0x79, 0xf1, 0x40, 0x44, 0xe6, 0xe2,
+ 0xc6, 0x82, 0xc4, 0x73, 0x58, 0xa1, 0x96, 0x22, 0xb2, 0x52, 0xef, 0x5e,
+ 0x6d, 0x4a, 0x0c, 0xd1, 0x94, 0x85, 0x32, 0xf8, 0xf9, 0xa5, 0x75, 0x05,
+ 0xe9, 0xa1, 0xd7, 0x36, 0x6a, 0x71, 0xb3, 0xbc, 0x06, 0x43, 0xfd, 0xbb,
+ 0xea, 0x5c, 0xfb, 0xf5, 0x86, 0x7a, 0x02, 0xe9, 0xf8, 0xab, 0x2e, 0x54,
+ 0xfc, 0xbc, 0x1b, 0xd5, 0x52, 0x6d, 0xf3, 0xff, 0xe6, 0x8d, 0x8a, 0x9f,
+ 0x77, 0xa5, 0xe2, 0xda, 0x9d, 0xc2, 0x65, 0xfa, 0x6c, 0xe9, 0xa1, 0x75,
+ 0xc6, 0xbf, 0xe1, 0x2d, 0x33, 0x89, 0x49, 0xcf, 0xbd, 0x63, 0x4a, 0x13,
+ 0xff, 0x6f, 0xdf, 0xb2, 0xcf, 0x1b, 0x5a, 0x20, 0xe1, 0xa3, 0xae, 0xe8,
+ 0x5b, 0xe9, 0xe6, 0x6e, 0xa1, 0x82, 0x8c, 0xba, 0xd6, 0xa6, 0x81, 0x32,
+ 0x0c, 0x37, 0xaf, 0x64, 0xe8, 0xad, 0x60, 0xe8, 0x32, 0xd7, 0xa3, 0xdd,
+ 0x37, 0xc7, 0xa1, 0xb8, 0x03, 0x2b, 0x47, 0xf6, 0x9c, 0xb7, 0x8a, 0x10,
+ 0x6d, 0x71, 0x53, 0xfa, 0xa2, 0x3e, 0xe8, 0x9a, 0xa6, 0x20, 0xd7, 0x17,
+ 0x29, 0x69, 0x07, 0xa0, 0xb8, 0xa0, 0x79, 0xfb, 0xcd, 0x60, 0xd0, 0x3b,
+ 0xba, 0x3c, 0x8d, 0x9e, 0xb0, 0xbb, 0x08, 0x17, 0xc6, 0xce, 0x31, 0x64,
+ 0x2f, 0xb7, 0xa7, 0x61, 0xd5, 0xbf, 0x0e, 0x7a, 0x6e, 0x73, 0x5b, 0x8f,
+ 0xca, 0xa8, 0x96, 0x66, 0xac, 0x93, 0x32, 0x2d, 0x37, 0x50, 0xdb, 0x56,
+ 0xd4, 0x65, 0x4a, 0xf5, 0x47, 0x67, 0x0d, 0x72, 0x2d, 0x7a, 0xc0, 0xcb,
+ 0xc9, 0x26, 0x84, 0x1d, 0x44, 0xc7, 0xd9, 0x7e, 0xf5, 0x62, 0x1b, 0x6e,
+ 0xc5, 0x23, 0xa3, 0x3e, 0xca, 0xcb, 0x7b, 0xfd, 0xdd, 0xcd, 0xbd, 0xfe,
+ 0x1e, 0xf2, 0x34, 0x09, 0x96, 0x92, 0xb3, 0x43, 0x86, 0x07, 0x6e, 0x17,
+ 0xc8, 0x4a, 0x62, 0x21, 0x76, 0x7e, 0x72, 0x1c, 0x71, 0xea, 0x2a, 0xc1,
+ 0x00, 0x36, 0x8c, 0x2e, 0xce, 0x70, 0xa3, 0x14, 0x16, 0x39, 0x42, 0x26,
+ 0x56, 0xcf, 0x49, 0xe1, 0x6d, 0x87, 0x9a, 0x12, 0x64, 0x71, 0x65, 0x66,
+ 0x22, 0xc8, 0xee, 0xd8, 0xaa, 0x90, 0x7d, 0xc1, 0x39, 0xfa, 0x15, 0x68,
+ 0xce, 0x96, 0x38, 0x1b, 0xf6, 0x44, 0x7a, 0xf9, 0x5e, 0xfb, 0xf9, 0xa8,
+ 0xf9, 0xd2, 0x62, 0x00, 0x59, 0xcf, 0xbd, 0x67, 0xe7, 0x08, 0x43, 0x54,
+ 0xa3, 0x14, 0x5d, 0x90, 0xa3, 0xb9, 0x31, 0x49, 0x26, 0x7f, 0x1b, 0x67,
+ 0xfd, 0x5f, 0x6a, 0x4f, 0x05, 0x14, 0x62, 0xc7, 0x6c, 0xd2, 0xa9, 0x0b,
+ 0x23, 0x13, 0x5b, 0xa9, 0x6d, 0x41, 0x62, 0x22, 0x35, 0x3d, 0x64, 0x4c,
+ 0x02, 0x78, 0x99, 0xd9, 0x82, 0x72, 0x86, 0x32, 0xe3, 0x07, 0x7e, 0xa6,
+ 0xa3, 0x07, 0x0c, 0x72, 0xfc, 0x18, 0x8f, 0x55, 0x24, 0xf1, 0x4c, 0x66,
+ 0xe5, 0x7c, 0xc7, 0xff, 0x25, 0xee, 0x1e, 0x31, 0xdb, 0xd2, 0x4f, 0xcb,
+ 0x94, 0xa0, 0x82, 0x33, 0x05, 0x93, 0xa6, 0x65, 0x3b, 0xb9, 0x2c, 0x0a,
+ 0x10, 0x27, 0xe9, 0x22, 0x9e, 0x45, 0xcf, 0xa8, 0x2d, 0x68, 0x3f, 0xfc,
+ 0x27, 0xfa, 0xf4, 0xd2, 0xec, 0xf5, 0x76, 0xae, 0x60, 0x74, 0x92, 0x7a,
+ 0xd4, 0x94, 0xaa, 0x01, 0x2e, 0xd7, 0x32, 0x18, 0x22, 0x27, 0x58, 0x6e,
+ 0xa6, 0x14, 0xd7, 0x4c, 0xa0, 0x01, 0x4b, 0xd2, 0x78, 0x5e, 0xd1, 0x1d,
+ 0x67, 0x43, 0x69, 0x3a, 0xac, 0xd4, 0xbc, 0x6e, 0x34, 0x19, 0x61, 0x88,
+ 0xb9, 0x57, 0xb9, 0x30, 0xc5, 0x27, 0x39, 0xef, 0x6f, 0xc1, 0x0c, 0x51,
+ 0x85, 0x63, 0x3f, 0xc3, 0x2f, 0x57, 0xe6, 0x64, 0x0b, 0xa3, 0x75, 0x4a,
+ 0x03, 0x91, 0x1a, 0x61, 0xc5, 0x09, 0xd5, 0xc4, 0x82, 0x80, 0xb3, 0x88,
+ 0xa2, 0xc6, 0x44, 0x20, 0xb8, 0x21, 0x4f, 0x98, 0x56, 0x01, 0xc5, 0xcf,
+ 0xe3, 0xb3, 0xff, 0x4f, 0xa8, 0x81, 0xfb, 0x91, 0x39, 0xab, 0xe7, 0xa8,
+ 0x83, 0x8c, 0xac, 0xce, 0xfd, 0xc6, 0x3d, 0xe8, 0x3b, 0x6b, 0x72, 0xfd,
+ 0xff, 0xda, 0xe0, 0xff, 0x49, 0xda, 0xe0, 0xbf, 0x72, 0x4b, 0x7b, 0x92,
+ 0xd7, 0xcc, 0xd7, 0xd2, 0x64, 0x56, 0x49, 0x1d, 0x4a, 0xb0, 0xe0, 0x60,
+ 0xf6, 0xd8, 0x8f, 0x5a, 0xe0, 0x8d, 0x9f, 0xb8, 0xa2, 0x3e, 0x29, 0xfc,
+ 0xbf, 0x71, 0x45, 0x9f, 0x75, 0x33, 0xff, 0x7f, 0xdf, 0xc7, 0xff, 0x6e,
+ 0xf7, 0x30, 0x40, 0x90, 0x3a, 0xd8, 0x3a, 0x90, 0xd9, 0x3d, 0x66, 0xed,
+ 0x71, 0xb3, 0x33, 0xb2, 0xb4, 0x37, 0xac, 0xea, 0x83, 0xe5, 0x78, 0xbc,
+ 0x75, 0xa7, 0x97, 0xdf, 0xbd, 0x20, 0x14, 0x9e, 0x41, 0x33, 0x99, 0xa5,
+ 0x88, 0xce, 0xde, 0x1c, 0x5d, 0xfe, 0x82, 0xdb, 0xfe, 0x17, 0x72, 0xb3,
+ 0x2e, 0x92, 0x64, 0xdc, 0xe3, 0xb8, 0xe1, 0x21, 0xfd, 0x23, 0x18, 0x70,
+ 0x57, 0x74, 0x0d, 0x22, 0x5b, 0x0c, 0x27, 0xfa, 0x79, 0x0c, 0xf4, 0x32,
+ 0xa8, 0x29, 0x99, 0x60, 0xde, 0x2c, 0xa8, 0xed, 0xb2, 0xe7, 0x63, 0xc9,
+ 0xb3, 0xf1, 0x86, 0xa8, 0x80, 0xfc, 0x6d, 0x22, 0x15, 0xc9, 0x3f, 0xc1,
+ 0xeb, 0x3d, 0x45, 0x5c, 0x3c, 0x03, 0x1d, 0xea, 0x3c, 0xc3, 0x99, 0x78,
+ 0xc1, 0x64, 0xa8, 0x47, 0xbb, 0x14, 0x0e, 0x79, 0x32, 0x7a, 0xdd, 0xee,
+ 0x16, 0xfa, 0xdf, 0x89, 0x83, 0x24, 0xd5, 0x27, 0x44, 0xdb, 0x68, 0x7e,
+ 0xbe, 0x2d, 0x9d, 0x66, 0xe5, 0x56, 0xba, 0x27, 0x51, 0xdb, 0x41, 0x8c,
+ 0x90, 0x73, 0xe8, 0xd0, 0xeb, 0x52, 0xee, 0x7c, 0x93, 0x33, 0x48, 0x78,
+ 0xbe, 0xe6, 0x13, 0xf5, 0xbd, 0x3c, 0x9d, 0xd4, 0xb7, 0x33, 0x90, 0xbd,
+ 0xdb, 0xad, 0x65, 0x2b, 0xb9, 0x53, 0x32, 0x71, 0xf2, 0xed, 0x48, 0x5d,
+ 0xfb, 0x8c, 0x29, 0x21, 0x50, 0x16, 0x7f, 0xf1, 0xb3, 0x29, 0x9d, 0xd7,
+ 0x9f, 0xea, 0x44, 0x9c, 0x67, 0x55, 0x41, 0x2d, 0x46, 0x34, 0x85, 0xa0,
+ 0x54, 0xd0, 0xfe, 0xa5, 0xd3, 0xcd, 0x39, 0xa6, 0x42, 0x01, 0xda, 0x35,
+ 0xbf, 0xdd, 0x26, 0xdf, 0xef, 0xa4, 0x1a, 0xf5, 0xcd, 0xc9, 0x12, 0x80,
+ 0x21, 0xfc, 0x6a, 0x04, 0x2a, 0xae, 0x76, 0xa4, 0xee, 0x52, 0x0b, 0x37,
+ 0x6d, 0xce, 0xd6, 0xe2, 0xab, 0xd0, 0x4c, 0x98, 0x4f, 0xdf, 0x9e, 0x6d,
+ 0x75, 0xff, 0x43, 0x1f, 0x42, 0x42, 0xdd, 0x31, 0x86, 0x2b, 0xc4, 0xc0,
+ 0xce, 0x08, 0x7c, 0x81, 0x9a, 0x24, 0x63, 0x24, 0x78, 0x32, 0x8b, 0xef,
+ 0xa5, 0x1e, 0xae, 0xc9, 0xef, 0x07, 0x67, 0xbb, 0xb4, 0xad, 0xd7, 0x67,
+ 0x03, 0x17, 0x3e, 0xbf, 0xa4, 0x60, 0x3c, 0xd5, 0x3f, 0x7e, 0x7d, 0x72,
+ 0x34, 0xb8, 0xee, 0x7b, 0x4b, 0xe4, 0x38, 0x70, 0x90, 0x60, 0x98, 0x09,
+ 0x0f, 0xce, 0x60, 0xad, 0x8f, 0x08, 0x9f, 0x29, 0x75, 0x95, 0x38, 0x39,
+ 0x9e, 0x9b, 0x8e, 0x8e, 0x76, 0x6e, 0xcc, 0xd9, 0xfd, 0x55, 0x52, 0xf8,
+ 0x29, 0x49, 0xb0, 0x77, 0xc3, 0x74, 0x86, 0x2b, 0x80, 0x79, 0x81, 0x35,
+ 0x34, 0x97, 0xa2, 0x09, 0xaa, 0xd2, 0xcf, 0x67, 0x98, 0x49, 0x80, 0x9f,
+ 0xa9, 0xfb, 0x21, 0x30, 0x21, 0x59, 0xa0, 0x0b, 0xda, 0x0b, 0x91, 0x41,
+ 0xef, 0xc8, 0xb1, 0xfd, 0x93, 0x99, 0xaa, 0xee, 0x15, 0xc7, 0x9d, 0x9d,
+ 0x8e, 0x7d, 0x88, 0x6f, 0x84, 0x20, 0x2e, 0x7e, 0xba, 0x77, 0x5c, 0xde,
+ 0x6a, 0x64, 0x97, 0xfa, 0x8a, 0x62, 0xd4, 0x78, 0x65, 0xce, 0x69, 0xd3,
+ 0x12, 0x82, 0x83, 0xa6, 0x9a, 0x78, 0xac, 0x8e, 0xf2, 0x8a, 0x23, 0xd0,
+ 0x01, 0x90, 0x25, 0xb3, 0x8d, 0x15, 0x27, 0xae, 0x99, 0x23, 0x6e, 0xdf,
+ 0x53, 0x1c, 0x2d, 0xdc, 0x6b, 0x2d, 0x1a, 0xdd, 0x24, 0x20, 0x44, 0xfa,
+ 0x0e, 0xb2, 0xc3, 0xb3, 0x37, 0xe4, 0x33, 0x0f, 0xfe, 0x2f, 0xb0, 0x3d,
+ 0xbf, 0x78, 0x43, 0xf6, 0xf6, 0xfc, 0x0d, 0x29, 0x92, 0xbf, 0x8d, 0x43,
+ 0x58, 0xe8, 0x54, 0x83, 0x42, 0xe5, 0x2f, 0x5c, 0x36, 0x72, 0xc5, 0x80,
+ 0xee, 0x38, 0xd5, 0x4d, 0x6c, 0x69, 0xa4, 0x79, 0xf4, 0x16, 0x4c, 0x0f,
+ 0x2d, 0x6c, 0x0c, 0x40, 0xfa, 0xed, 0xd8, 0x15, 0x74, 0xd3, 0x69, 0xbf,
+ 0x99, 0x86, 0xe1, 0x40, 0x24, 0xbb, 0x59, 0x3e, 0xb2, 0x52, 0x83, 0xc4,
+ 0x5c, 0x16, 0x6a, 0x8c, 0x83, 0x25, 0xa6, 0xe6, 0xf2, 0xf4, 0x7a, 0x93,
+ 0x6a, 0x61, 0x16, 0xb6, 0x92, 0x3a, 0xb6, 0xbc, 0xcd, 0x68, 0x59, 0xfa,
+ 0x75, 0xf1, 0xa8, 0xee, 0xd7, 0x95, 0xab, 0xf7, 0xb3, 0x2d, 0xb1, 0xe7,
+ 0x0e, 0x27, 0x52, 0x13, 0x6a, 0x99, 0x34, 0x51, 0x6f, 0xdd, 0x06, 0x5b,
+ 0xb2, 0x2a, 0x1b, 0xe1, 0x33, 0x0f, 0xda, 0x96, 0x5a, 0x64, 0xd4, 0x2c,
+ 0x58, 0x38, 0xb8, 0x46, 0x47, 0x65, 0x0b, 0xb8, 0xb4, 0x92, 0x0a, 0x1a,
+ 0xbc, 0xdb, 0x9e, 0x55, 0x60, 0xcd, 0xdf, 0x25, 0x33, 0x2a, 0xf0, 0x4e,
+ 0xb2, 0x51, 0xf1, 0xb8, 0x70, 0xc1, 0xfb, 0xc7, 0xff, 0xca, 0xfe, 0x6b,
+ 0x65, 0x10, 0x85, 0x8e, 0x41, 0xf1, 0x01, 0x66, 0xb7, 0xe1, 0xeb, 0x5f,
+ 0x58, 0xa7, 0x2b, 0xe3, 0x31, 0x1e, 0x29, 0x4a, 0xe1, 0xca, 0xad, 0x15,
+ 0x40, 0x5b, 0x46, 0x39, 0x37, 0x43, 0x68, 0x0a, 0xd4, 0xc2, 0xc4, 0x77,
+ 0x20, 0xe3, 0xe6, 0x9a, 0x4a, 0x80, 0x67, 0x9f, 0xfc, 0x4e, 0x97, 0xb7,
+ 0xeb, 0x6e, 0xc7, 0xe3, 0x09, 0x83, 0xb3, 0x8d, 0xe8, 0x2d, 0xfa, 0x68,
+ 0xea, 0x4e, 0x78, 0xbc, 0xae, 0xda, 0x9e, 0x6c, 0x87, 0x1d, 0x51, 0x6e,
+ 0xb7, 0x66, 0x85, 0xc0, 0xf7, 0x52, 0xa8, 0xa8, 0x32, 0x9c, 0xde, 0xb6,
+ 0x35, 0xba, 0x03, 0x60, 0xad, 0x9c, 0xd8, 0xa8, 0x9e, 0x25, 0xee, 0xa9,
+ 0xaa, 0xa5, 0xcf, 0xf0, 0xf4, 0xdd, 0x4e, 0x1b, 0x10, 0x7d, 0x5f, 0x7e,
+ 0x4d, 0x45, 0xec, 0xe3, 0x84, 0xb0, 0xdc, 0x15, 0x4b, 0x13, 0x2b, 0xb8,
+ 0x98, 0xde, 0x28, 0xab, 0x17, 0xdd, 0xd3, 0x2f, 0xb6, 0x5f, 0xbe, 0xd8,
+ 0x58, 0xd5, 0xa5, 0x1c, 0x7b, 0xf7, 0x60, 0x71, 0x2e, 0x93, 0x10, 0xfe,
+ 0x6b, 0xa7, 0xef, 0x6e, 0x50, 0x64, 0x3b, 0x9b, 0x48, 0x91, 0xb5, 0x2f,
+ 0xe1, 0x40, 0xdc, 0x20, 0x49, 0xd0, 0x46, 0x68, 0xbb, 0x07, 0x22, 0x16,
+ 0x5e, 0x17, 0xda, 0x32, 0x72, 0xcb, 0x89, 0x94, 0x9b, 0x46, 0xa1, 0x87,
+ 0x44, 0x4f, 0x46, 0x62, 0x6f, 0x57, 0xe7, 0xc0, 0xd2, 0xd3, 0x6d, 0xcf,
+ 0xc9, 0x93, 0xa5, 0xbf, 0xf7, 0xeb, 0xff, 0x72, 0x83, 0x99, 0x76, 0x80,
+ 0x5f, 0x73, 0xca, 0xbb, 0xbf, 0xc3, 0x29, 0xef, 0xae, 0x3e, 0xe5, 0xdd,
+ 0xe7, 0x9e, 0xf2, 0xcb, 0xfd, 0x17, 0x9f, 0xff, 0x8a, 0x53, 0x76, 0x76,
+ 0xf8, 0xbf, 0xed, 0x94, 0x1d, 0x4a, 0xfb, 0x75, 0xa7, 0x2c, 0x49, 0x21,
+ 0xcd, 0x82, 0x4c, 0x49, 0x7e, 0xa1, 0xb4, 0x56, 0x84, 0xd2, 0xe0, 0x32,
+ 0x16, 0x7e, 0xd6, 0xaf, 0xb3, 0x92, 0xe6, 0x93, 0xdc, 0xf4, 0x0e, 0xf5,
+ 0xb0, 0x80, 0x91, 0x6d, 0xa1, 0x45, 0x48, 0xc3, 0x5d, 0xcc, 0xb0, 0x77,
+ 0xda, 0x5a, 0x6f, 0x4d, 0xdd, 0x23, 0x5a, 0x3e, 0xa9, 0xb8, 0x58, 0xfc,
+ 0x39, 0x38, 0xea, 0xdf, 0x11, 0x55, 0xcd, 0xcf, 0x99, 0x71, 0xb2, 0x9e,
+ 0xea, 0x9b, 0xf6, 0x38, 0x03, 0x33, 0x81, 0x73, 0x90, 0x82, 0xd9, 0x6f,
+ 0x82, 0xfc, 0x6e, 0x90, 0x9d, 0xd4, 0x51, 0x33, 0x04, 0xa5, 0x10, 0xa4,
+ 0x40, 0x86, 0x49, 0x3d, 0x8f, 0xb3, 0x44, 0x0a, 0x88, 0x71, 0xd1, 0x48,
+ 0x19, 0x68, 0xca, 0x37, 0x5d, 0xc2, 0xd2, 0x2b, 0xa8, 0x91, 0xb1, 0xd4,
+ 0x17, 0x77, 0x39, 0xa8, 0x67, 0xb5, 0xc9, 0x50, 0x10, 0xa0, 0x84, 0x5b,
+ 0x32, 0xba, 0xe1, 0xfe, 0x22, 0x01, 0xb0, 0x9f, 0x55, 0x09, 0x7e, 0xcd,
+ 0x84, 0xbb, 0x96, 0xde, 0x44, 0xc1, 0x0e, 0x54, 0xd8, 0xa7, 0xaa, 0xde,
+ 0xa8, 0x8a, 0x73, 0xc4, 0x19, 0x51, 0x8f, 0x14, 0xfe, 0x66, 0xef, 0x27,
+ 0x69, 0x1c, 0xe5, 0x15, 0x22, 0xa3, 0x4c, 0x97, 0x05, 0xd5, 0x9b, 0x2e,
+ 0xd9, 0x6c, 0x42, 0xdd, 0x99, 0xa7, 0x6b, 0x66, 0x30, 0xe9, 0x5c, 0x7a,
+ 0x6e, 0xab, 0x90, 0x64, 0x13, 0xfc, 0x0d, 0x9e, 0xee, 0x78, 0x39, 0x5f,
+ 0x28, 0x18, 0x22, 0x56, 0x37, 0xa5, 0x54, 0x46, 0x27, 0x80, 0x08, 0x94,
+ 0x74, 0x1d, 0x70, 0xa3, 0x19, 0x2f, 0x93, 0x24, 0xb7, 0xb1, 0xc7, 0x4a,
+ 0xcf, 0x4a, 0x80, 0x3d, 0x78, 0x01, 0x94, 0xb8, 0x46, 0xa5, 0x44, 0x88,
+ 0xaf, 0x96, 0x4c, 0xbc, 0xd4, 0x03, 0x6a, 0x54, 0x4b, 0xd1, 0xc9, 0x64,
+ 0xb8, 0x9c, 0x2a, 0xa6, 0x80, 0x69, 0x70, 0x57, 0xa7, 0x4a, 0xaa, 0xbf,
+ 0x42, 0x94, 0xa1, 0xa4, 0xcb, 0xc9, 0xf0, 0x8f, 0x3e, 0xb8, 0x4a, 0x85,
+ 0xdd, 0x1d, 0x47, 0xab, 0x92, 0xc3, 0xbc, 0x85, 0x13, 0xb1, 0xd7, 0x56,
+ 0x4e, 0x3f, 0xa9, 0x35, 0x1e, 0x0b, 0xb4, 0xce, 0x72, 0x49, 0xa5, 0x1a,
+ 0x2d, 0x7a, 0x93, 0x18, 0xa1, 0x49, 0xbd, 0xc2, 0x72, 0x49, 0x08, 0x95,
+ 0x2b, 0x70, 0x7d, 0x7c, 0x19, 0xbd, 0x8d, 0xa5, 0xdd, 0x50, 0xb4, 0x0e,
+ 0x1c, 0xf8, 0xe5, 0xde, 0xf6, 0xee, 0xc6, 0x4a, 0x3d, 0xbc, 0x0e, 0xb7,
+ 0x45, 0xdf, 0xca, 0xf2, 0x50, 0xc2, 0xfa, 0xf5, 0x12, 0xcc, 0x66, 0xc5,
+ 0xf1, 0x81, 0x2f, 0x7d, 0x3c, 0xbf, 0x78, 0x73, 0x72, 0x76, 0xf4, 0x17,
+ 0x83, 0x1a, 0x81, 0x9b, 0xa0, 0x95, 0xc7, 0x1f, 0xc1, 0x7c, 0x7d, 0xfc,
+ 0x58, 0x26, 0x30, 0xe7, 0x6a, 0x7d, 0x77, 0x03, 0x2b, 0xf7, 0xbc, 0xa6,
+ 0x90, 0xd3, 0xa4, 0x8e, 0xb5, 0xc1, 0xf5, 0x03, 0x2b, 0x00, 0xa3, 0x8c,
+ 0x83, 0x72, 0xab, 0xbf, 0x23, 0x5d, 0x47, 0xa4, 0x6d, 0x82, 0xe5, 0x59,
+ 0x4e, 0xe3, 0x94, 0x58, 0x60, 0xe5, 0xb8, 0x36, 0xd7, 0xaf, 0xd0, 0x42,
+ 0x60, 0x8f, 0x74, 0x94, 0xa2, 0xb5, 0x22, 0xd7, 0x3a, 0xc5, 0x30, 0xfc,
+ 0xa4, 0x0e, 0x4b, 0x49, 0xc5, 0xbb, 0xf8, 0x8b, 0xd5, 0x61, 0xe5, 0x3a,
+ 0xef, 0xaf, 0x48, 0x58, 0x24, 0xb3, 0x2c, 0xa9, 0x7a, 0x32, 0xb1, 0x43,
+ 0xf8, 0xf3, 0xf5, 0x5d, 0x3c, 0xf3, 0x4a, 0xc2, 0xb1, 0xa7, 0xa2, 0x52,
+ 0xa6, 0x61, 0x45, 0xf8, 0xa6, 0xd3, 0x71, 0x65, 0x60, 0x5a, 0x8f, 0xe8,
+ 0x93, 0x70, 0x55, 0xbc, 0x0e, 0x23, 0xd7, 0xd7, 0x7f, 0xb9, 0x3c, 0x79,
+ 0x7d, 0x88, 0x8c, 0xec, 0x4b, 0xac, 0x3d, 0x29, 0x6b, 0x7c, 0x2d, 0xc2,
+ 0x1e, 0xee, 0xde, 0x1a, 0x7e, 0x78, 0x73, 0x3a, 0xb8, 0x3c, 0xbb, 0x38,
+ 0x7e, 0x7d, 0xf8, 0x03, 0xda, 0x94, 0x20, 0x3c, 0x1e, 0x9d, 0x77, 0xcd,
+ 0xcf, 0x4c, 0x17, 0x05, 0x1f, 0x50, 0xe4, 0xe4, 0xfb, 0x8f, 0x27, 0xe7,
+ 0xdf, 0xbd, 0x3e, 0xbc, 0x8b, 0x8b, 0x2e, 0xae, 0x8f, 0xdf, 0x6e, 0x69,
+ 0x58, 0x5a, 0x23, 0x35, 0x54, 0xcf, 0x87, 0xb3, 0xdb, 0x32, 0xfd, 0x7b,
+ 0x12, 0xc1, 0xeb, 0xb3, 0xa5, 0x0f, 0x63, 0x7e, 0xcd, 0x38, 0x0c, 0xb0,
+ 0x19, 0xf8, 0xb7, 0xe8, 0xeb, 0xb3, 0x6f, 0x11, 0x2a, 0xd7, 0xf8, 0x49,
+ 0xe7, 0xdc, 0x77, 0x29, 0xfa, 0x72, 0x7f, 0x7b, 0x67, 0xc3, 0x76, 0xfb,
+ 0x24, 0xa8, 0x6d, 0x98, 0xf1, 0xad, 0x57, 0x35, 0xf5, 0x77, 0xa9, 0xff,
+ 0xb2, 0xb5, 0x0c, 0x95, 0xb5, 0xa8, 0xb8, 0xfc, 0x40, 0x5c, 0x4e, 0x94,
+ 0x9c, 0x4f, 0xf9, 0xaf, 0xd8, 0x2c, 0xb5, 0xa0, 0xb4, 0x75, 0xcf, 0xe3,
+ 0x76, 0xfd, 0xd6, 0xc1, 0xb8, 0xf9, 0xda, 0x92, 0x1e, 0x4c, 0x47, 0xbc,
+ 0x76, 0x2b, 0xe5, 0xe3, 0x27, 0x8c, 0xe5, 0x34, 0x4d, 0x4a, 0xda, 0x6c,
+ 0x10, 0x69, 0x42, 0x3f, 0xe1, 0x7d, 0x76, 0x72, 0x7c, 0xa8, 0x02, 0x2c,
+ 0x67, 0x6c, 0x46, 0x5a, 0xa5, 0x12, 0x9e, 0x42, 0x0a, 0x3c, 0xe1, 0xc3,
+ 0x4b, 0xe7, 0x58, 0x7b, 0x9c, 0x94, 0x91, 0xfa, 0x77, 0x1c, 0xef, 0xcd,
+ 0x2c, 0x99, 0xc6, 0xa3, 0x47, 0x83, 0x30, 0x4d, 0x07, 0x32, 0x6e, 0xde,
+ 0x4e, 0xf2, 0xf0, 0x8d, 0xd0, 0x98, 0x03, 0x11, 0x3c, 0x25, 0xf6, 0xcc,
+ 0x50, 0x2a, 0x70, 0x5d, 0x8d, 0xd3, 0x87, 0xa7, 0x66, 0xc0, 0x62, 0x54,
+ 0x5c, 0xe2, 0xa6, 0x36, 0xa5, 0x73, 0x7d, 0x8b, 0x1b, 0xd4, 0x87, 0x64,
+ 0x43, 0xed, 0x88, 0x57, 0xee, 0xe9, 0x5e, 0xdd, 0x63, 0xfe, 0x77, 0xba,
+ 0xe4, 0x88, 0xc2, 0x45, 0x4e, 0xd9, 0x43, 0xfc, 0x6b, 0x18, 0x87, 0x9f,
+ 0xda, 0x73, 0x91, 0xdb, 0x82, 0xdb, 0x4d, 0x73, 0xd3, 0x03, 0x5c, 0xb6,
+ 0xa9, 0x2f, 0x90, 0xb6, 0x36, 0x08, 0xe7, 0x5e, 0x59, 0x77, 0x7a, 0x18,
+ 0xe3, 0xce, 0x38, 0xb5, 0x81, 0x3c, 0x59, 0x58, 0x21, 0x65, 0xb4, 0x8c,
+ 0x67, 0x0a, 0x74, 0xf1, 0xf7, 0x01, 0xc7, 0xa6, 0x24, 0x23, 0x1c, 0xe2,
+ 0x58, 0xc8, 0x12, 0x51, 0x27, 0x81, 0x9d, 0xfa, 0x52, 0xa3, 0x3e, 0xd4,
+ 0xf9, 0x28, 0x17, 0xe4, 0x35, 0x7a, 0x88, 0x91, 0x64, 0x4a, 0x1f, 0x86,
+ 0x83, 0xb3, 0xdb, 0xd5, 0x71, 0xc0, 0x09, 0x1a, 0x18, 0x52, 0x33, 0xb0,
+ 0xd2, 0x30, 0xcd, 0x52, 0xb5, 0x52, 0x2c, 0x82, 0x24, 0x33, 0xdd, 0x02,
+ 0xcf, 0x06, 0xb0, 0x08, 0x9c, 0xaa, 0x3d, 0x05, 0x04, 0xe7, 0x95, 0x49,
+ 0x3a, 0x02, 0x4d, 0x68, 0x7d, 0x8e, 0x0b, 0x91, 0xfe, 0x04, 0xdc, 0x0c,
+ 0xa2, 0xad, 0x61, 0x7b, 0x43, 0x4a, 0xc1, 0x98, 0x38, 0x82, 0x48, 0x28,
+ 0x92, 0x49, 0x0c, 0xcb, 0xd0, 0xd8, 0x8d, 0x40, 0xf5, 0x71, 0xc5, 0x49,
+ 0xfc, 0x4d, 0x11, 0x85, 0xa0, 0xe2, 0x9a, 0x3a, 0x5f, 0x1b, 0x41, 0xca,
+ 0x9c, 0xa9, 0x13, 0xdd, 0x7a, 0xcf, 0xb6, 0x08, 0x4b, 0x2b, 0xa3, 0xb2,
+ 0x05, 0x20, 0x77, 0x0c, 0xf0, 0xb9, 0x01, 0x6e, 0x63, 0xd7, 0xa7, 0xd2,
+ 0x87, 0x50, 0x04, 0x7e, 0x6c, 0x93, 0x4b, 0x3f, 0x95, 0x05, 0xa5, 0x81,
+ 0xd2, 0x73, 0x6f, 0xb0, 0x2c, 0xb9, 0x77, 0x07, 0xb3, 0x76, 0x87, 0x19,
+ 0xf0, 0x53, 0x7a, 0xbb, 0xc1, 0x66, 0xc2, 0x7a, 0xb5, 0xe8, 0xf0, 0xbb,
+ 0x93, 0xab, 0xc1, 0xe9, 0xc5, 0xf9, 0x97, 0x41, 0x73, 0x58, 0x7e, 0x69,
+ 0x5a, 0xbd, 0x69, 0xa5, 0xab, 0x6d, 0xc7, 0x85, 0x5e, 0x30, 0xf5, 0xb5,
+ 0x70, 0x57, 0xa7, 0x34, 0xc3, 0x47, 0xbc, 0x2e, 0x5f, 0xa3, 0x64, 0x51,
+ 0x91, 0xbe, 0xa4, 0xb6, 0x34, 0xed, 0x12, 0xc5, 0x2d, 0xa8, 0x0f, 0x0c,
+ 0xd9, 0x70, 0x58, 0xea, 0x26, 0xb6, 0x9d, 0xf9, 0xdb, 0x4e, 0x00, 0xe6,
+ 0x8d, 0x7f, 0xb3, 0xeb, 0x6d, 0x50, 0x38, 0x61, 0xc7, 0x89, 0x97, 0x2f,
+ 0x17, 0x5c, 0x25, 0x89, 0x60, 0x26, 0x0c, 0x7c, 0xe4, 0x2e, 0xc0, 0xeb,
+ 0xdb, 0xd0, 0xdf, 0xaa, 0xbf, 0x08, 0x0f, 0xdf, 0x6d, 0x3b, 0x15, 0x2c,
+ 0xe6, 0xb9, 0xed, 0xd0, 0x73, 0xdb, 0xfe, 0x73, 0x3b, 0xa1, 0xe7, 0x76,
+ 0xfc, 0xe7, 0x76, 0x43, 0xcf, 0x39, 0xeb, 0x75, 0xcc, 0x78, 0xd9, 0xb9,
+ 0x55, 0x96, 0x71, 0xed, 0x5f, 0xbb, 0x7d, 0x7b, 0xfc, 0x9f, 0x19, 0x6f,
+ 0x45, 0xb3, 0x51, 0xad, 0x63, 0xd8, 0xab, 0x5d, 0xdf, 0x6e, 0xd6, 0x2b,
+ 0x9f, 0xd6, 0xe1, 0x40, 0x4d, 0x6c, 0xb8, 0x98, 0xe1, 0x7b, 0xdb, 0xbb,
+ 0xbd, 0x51, 0xba, 0xb8, 0x41, 0xa9, 0x73, 0xa8, 0xad, 0xdd, 0x70, 0xf3,
+ 0x71, 0xb1, 0xf2, 0x8b, 0x25, 0x9a, 0xe4, 0xbe, 0x1e, 0x72, 0x36, 0xd8,
+ 0x88, 0x1c, 0xbc, 0x22, 0x81, 0xe8, 0xa4, 0x57, 0x22, 0x7e, 0xc7, 0xa2,
+ 0x15, 0xf9, 0x0e, 0x66, 0xaf, 0xd4, 0xc5, 0xb8, 0x6f, 0xe0, 0x3d, 0x99,
+ 0x00, 0x93, 0xae, 0xce, 0x4a, 0xa7, 0x29, 0x63, 0x33, 0xaa, 0xae, 0x86,
+ 0xde, 0x9b, 0xae, 0x5d, 0xea, 0x71, 0xa1, 0xaf, 0x28, 0xc6, 0x1d, 0xf6,
+ 0x66, 0xcb, 0x1a, 0xab, 0xe3, 0xe1, 0x8c, 0xca, 0x9d, 0x67, 0x21, 0x51,
+ 0xf9, 0xe1, 0xea, 0xcc, 0x53, 0x2d, 0x23, 0x74, 0xcd, 0x94, 0x07, 0x9b,
+ 0x9b, 0xd4, 0x60, 0xfc, 0x26, 0x7e, 0x78, 0xe8, 0x97, 0xc9, 0x26, 0xf0,
+ 0x93, 0x72, 0x93, 0xfc, 0xbd, 0xf2, 0xe9, 0x9b, 0x6a, 0x3e, 0x5b, 0xe5,
+ 0xa8, 0x4d, 0x4b, 0xc5, 0x94, 0x65, 0x2c, 0xc6, 0x31, 0xa3, 0x2e, 0xd8,
+ 0x22, 0x6d, 0xba, 0x90, 0x7c, 0xc0, 0x9a, 0x74, 0xd7, 0x6c, 0xf8, 0xc1,
+ 0x9d, 0x54, 0xa9, 0x8f, 0xf3, 0x36, 0xca, 0x3e, 0x12, 0x98, 0x06, 0xa2,
+ 0x95, 0x4d, 0x48, 0xce, 0x7c, 0xb0, 0xd8, 0x39, 0xf8, 0x02, 0xd6, 0xd3,
+ 0x26, 0x5e, 0x38, 0xc3, 0x80, 0xe4, 0x14, 0x04, 0x8a, 0x4f, 0xbe, 0x82,
+ 0xd0, 0x9e, 0x95, 0x6e, 0xe0, 0x03, 0xdd, 0x03, 0xb2, 0xe4, 0xa0, 0x9a,
+ 0xf1, 0x89, 0x99, 0x26, 0xa6, 0xe4, 0xa1, 0x32, 0x0f, 0x2a, 0x07, 0xfc,
+ 0xf7, 0x4b, 0xbf, 0xe8, 0x3c, 0xa2, 0x25, 0x78, 0xa9, 0x7b, 0xa8, 0xff,
+ 0x63, 0xd9, 0x17, 0xef, 0x3f, 0x7f, 0xcf, 0x6d, 0x8f, 0x41, 0xe6, 0x45,
+ 0x30, 0x7c, 0x44, 0xc7, 0xd2, 0x19, 0x5c, 0x5d, 0x76, 0xba, 0x12, 0xad,
+ 0x87, 0x0f, 0xf4, 0xe0, 0xdf, 0x11, 0x59, 0x99, 0xd8, 0x5e, 0x67, 0x7f,
+ 0x4f, 0x12, 0xeb, 0x78, 0x8e, 0xdc, 0x64, 0xce, 0x0f, 0x1f, 0xd1, 0x2f,
+ 0x4d, 0x72, 0x21, 0x77, 0xa1, 0xb5, 0xd5, 0xa8, 0x60, 0x00, 0xd6, 0x57,
+ 0xc8, 0x29, 0x3f, 0x5d, 0x0b, 0xbc, 0x1e, 0x56, 0xeb, 0x0c, 0xec, 0x23,
+ 0xd0, 0x0c, 0x4d, 0xb3, 0xdf, 0x08, 0x10, 0xe4, 0xc5, 0xad, 0xb4, 0x02,
+ 0x91, 0x30, 0x07, 0x33, 0x17, 0xaf, 0xfb, 0x72, 0xc3, 0x8b, 0xe8, 0x50,
+ 0x23, 0xbb, 0x58, 0x75, 0xd9, 0xb2, 0x63, 0x0a, 0x83, 0xd7, 0xd2, 0x62,
+ 0x58, 0x69, 0x15, 0x36, 0xec, 0x9b, 0x6c, 0x89, 0x67, 0x42, 0xa3, 0x34,
+ 0x06, 0x79, 0x02, 0xab, 0x66, 0xaf, 0x71, 0xfa, 0xba, 0x79, 0x81, 0x63,
+ 0x37, 0xfb, 0x8a, 0x47, 0x44, 0x16, 0x8d, 0x56, 0x68, 0xe3, 0xb7, 0x1b,
+ 0xe4, 0x60, 0x91, 0x01, 0xdb, 0xaa, 0xc9, 0x14, 0x5b, 0xc6, 0x39, 0x90,
+ 0xbe, 0x06, 0xdf, 0x84, 0x4d, 0xdb, 0xb3, 0x76, 0xfa, 0x61, 0x3c, 0xbd,
+ 0x20, 0x77, 0x3d, 0xf4, 0x76, 0x30, 0xe1, 0x9a, 0x28, 0x59, 0x33, 0x52,
+ 0xa3, 0x67, 0x2d, 0x4a, 0xd6, 0xf4, 0x2b, 0x97, 0x24, 0x2e, 0xe6, 0x26,
+ 0x8d, 0xe2, 0xca, 0x7c, 0xdf, 0xd7, 0xb3, 0x16, 0x5a, 0x5b, 0x29, 0x8a,
+ 0xc8, 0xb0, 0x60, 0x09, 0xb8, 0xfc, 0x1d, 0x9d, 0x80, 0x74, 0x00, 0xe5,
+ 0x74, 0x4f, 0x56, 0x55, 0x50, 0x88, 0x4f, 0x5c, 0xff, 0x38, 0x88, 0xf6,
+ 0x31, 0xf1, 0x51, 0x8d, 0xd0, 0x61, 0x2a, 0x9f, 0x20, 0xed, 0x9e, 0x3f,
+ 0x5f, 0x33, 0xe3, 0x08, 0x16, 0x4a, 0xd5, 0x46, 0xf6, 0xa2, 0x44, 0x9c,
+ 0xad, 0xde, 0x18, 0xee, 0x23, 0x5e, 0xae, 0x8f, 0xc2, 0x78, 0x48, 0x89,
+ 0xc2, 0xcb, 0x4c, 0xc0, 0x99, 0x29, 0xb6, 0x5f, 0x88, 0x09, 0x0a, 0x15,
+ 0x63, 0x05, 0x25, 0x35, 0x8e, 0x69, 0xf6, 0x30, 0x6a, 0x0a, 0x0d, 0x18,
+ 0x06, 0x6e, 0x21, 0x36, 0xbc, 0x56, 0x7f, 0xac, 0x6a, 0x8b, 0x0d, 0x50,
+ 0x35, 0x6a, 0x1b, 0x62, 0x94, 0x42, 0xd9, 0x35, 0x4f, 0xf7, 0x7f, 0xaa,
+ 0x1a, 0xda, 0x57, 0x15, 0x50, 0x83, 0xf9, 0x95, 0x87, 0xb5, 0xfd, 0x7f,
+ 0xd8, 0x61, 0x6d, 0xff, 0xdf, 0x70, 0x58, 0x3b, 0xbf, 0xf2, 0xb0, 0x76,
+ 0xfe, 0x0f, 0x3b, 0xac, 0x9d, 0xff, 0x1b, 0x0e, 0x6b, 0xf7, 0x57, 0x1e,
+ 0xd6, 0xee, 0x6f, 0x7e, 0x58, 0xe7, 0xf8, 0x7b, 0x62, 0xfb, 0xaa, 0xf5,
+ 0xa5, 0x65, 0x53, 0x29, 0x1a, 0x3e, 0x52, 0xf3, 0xf9, 0x21, 0x6e, 0x88,
+ 0x18, 0x0c, 0xa2, 0x4c, 0x96, 0x4d, 0xab, 0xe9, 0xa8, 0x32, 0xb8, 0x52,
+ 0xa6, 0x43, 0x8a, 0x84, 0xa0, 0x04, 0xad, 0x1e, 0x35, 0x9e, 0xaf, 0x73,
+ 0xf4, 0xa0, 0x80, 0x66, 0xd0, 0x8d, 0xce, 0x07, 0x03, 0x4e, 0x3b, 0x1a,
+ 0x50, 0xe8, 0xb4, 0x79, 0x58, 0xe8, 0x8c, 0x24, 0x1b, 0x67, 0x1d, 0xd5,
+ 0xc6, 0x0b, 0x98, 0xa1, 0x65, 0x2e, 0xfc, 0xde, 0x3c, 0x1e, 0xe1, 0x8f,
+ 0xb7, 0xfa, 0xdb, 0x76, 0x73, 0x36, 0x7e, 0x01, 0x10, 0x9c, 0x8d, 0x6b,
+ 0x06, 0xad, 0xef, 0x00, 0x64, 0x3b, 0x66, 0x6a, 0xa0, 0x96, 0x5a, 0x3f,
+ 0x9a, 0x07, 0x01, 0x7d, 0x53, 0xc3, 0xa6, 0x1d, 0x1c, 0x9c, 0x3a, 0xc0,
+ 0x49, 0x68, 0x9a, 0x88, 0x5a, 0x1d, 0xa8, 0x94, 0x83, 0xc1, 0x38, 0x46,
+ 0xbe, 0xf4, 0x6b, 0x06, 0xef, 0xd2, 0x29, 0x62, 0xe1, 0xfd, 0xd2, 0xc8,
+ 0xb2, 0x13, 0xc5, 0xfd, 0x6f, 0x8b, 0x2c, 0x3f, 0xcb, 0x3e, 0x76, 0xaf,
+ 0x4c, 0xd1, 0xd3, 0xd6, 0x6a, 0x61, 0xfc, 0x76, 0xeb, 0x58, 0xc4, 0x4a,
+ 0x20, 0x82, 0x76, 0x1c, 0x33, 0xe9, 0x60, 0xa6, 0xcd, 0x89, 0xbc, 0x6b,
+ 0xe3, 0x7b, 0x6c, 0xc6, 0xf8, 0xf8, 0x4b, 0xb9, 0x66, 0xdd, 0x1b, 0xc4,
+ 0x21, 0x85, 0xb6, 0xe0, 0x55, 0x96, 0x4c, 0x71, 0xcb, 0x4c, 0x3f, 0x63,
+ 0x31, 0x22, 0x08, 0xfb, 0xcc, 0x4b, 0x3f, 0x18, 0x25, 0x8c, 0x8c, 0x95,
+ 0x3e, 0xa5, 0x29, 0xbd, 0xa8, 0xaf, 0x37, 0x1e, 0x25, 0xbd, 0xb8, 0x1c,
+ 0xa5, 0x69, 0xb8, 0xb5, 0xab, 0xc6, 0x81, 0x31, 0xf1, 0x86, 0x3c, 0xf8,
+ 0xf0, 0x7c, 0x84, 0x31, 0x37, 0xed, 0xd4, 0x8e, 0xfc, 0x90, 0xb0, 0xa2,
+ 0x70, 0xba, 0xf9, 0xb2, 0x9a, 0xe6, 0xea, 0xcc, 0xef, 0x06, 0x1c, 0x83,
+ 0x18, 0x95, 0xa3, 0x23, 0x86, 0xd3, 0x19, 0x15, 0xe9, 0x82, 0x70, 0x68,
+ 0xdd, 0xb6, 0x70, 0x5d, 0xd3, 0x35, 0x9d, 0x9c, 0x6d, 0x12, 0x3d, 0xe5,
+ 0x26, 0xe2, 0x1f, 0x3c, 0x03, 0xb5, 0xd3, 0xeb, 0xa0, 0x5b, 0xd3, 0x74,
+ 0xd3, 0x82, 0x77, 0x11, 0x3d, 0xdc, 0x89, 0x5b, 0x46, 0x0a, 0x7a, 0xd4,
+ 0x12, 0x86, 0xd7, 0x30, 0x06, 0x90, 0xd0, 0xa3, 0x22, 0x54, 0x53, 0xc3,
+ 0x10, 0x0d, 0x4f, 0xa2, 0x00, 0x80, 0x3b, 0x88, 0xee, 0xf5, 0x5c, 0x90,
+ 0x3a, 0x6e, 0x92, 0x07, 0xae, 0x23, 0xf5, 0x4d, 0x2e, 0x06, 0x36, 0xc4,
+ 0x78, 0xaa, 0x84, 0xce, 0x8f, 0x06, 0xc7, 0xa7, 0xa7, 0xb5, 0xaa, 0x53,
+ 0xdc, 0x3c, 0x86, 0xb7, 0x25, 0x68, 0x90, 0x12, 0x61, 0x7e, 0x31, 0x68,
+ 0x1b, 0x8a, 0xc2, 0x73, 0xaf, 0x48, 0xb8, 0x7e, 0x14, 0x79, 0x01, 0x4e,
+ 0x90, 0x6a, 0x27, 0xcf, 0x58, 0x0c, 0x8f, 0x0c, 0xa6, 0x99, 0x22, 0xf8,
+ 0xda, 0xcd, 0x72, 0x1e, 0x67, 0x9f, 0x1e, 0x39, 0x2e, 0x5c, 0xcc, 0x21,
+ 0xbb, 0xc5, 0xf7, 0xca, 0x8d, 0xf4, 0xfa, 0xb4, 0x16, 0x68, 0xcc, 0x71,
+ 0x59, 0x48, 0xdb, 0x46, 0x46, 0x52, 0x93, 0xce, 0x1a, 0xb0, 0x4c, 0xc2,
+ 0xb9, 0xe4, 0x91, 0x61, 0xad, 0x1a, 0x3c, 0x66, 0xd0, 0x7a, 0x61, 0x24,
+ 0x78, 0x67, 0x9a, 0x4e, 0x41, 0x0e, 0xa3, 0xad, 0xac, 0x96, 0xdb, 0x6e,
+ 0x8a, 0x4a, 0xfa, 0xc8, 0xef, 0x79, 0x03, 0xdc, 0x0b, 0xf0, 0x24, 0xfd,
+ 0xcb, 0x05, 0x68, 0xb9, 0x01, 0x54, 0x29, 0x63, 0x9b, 0xd0, 0x3d, 0x7d,
+ 0x09, 0x48, 0x17, 0xe9, 0xfc, 0xa9, 0x13, 0x6e, 0xdd, 0xf2, 0x8c, 0x9b,
+ 0x54, 0x03, 0x60, 0xf9, 0x7d, 0x29, 0x2d, 0x80, 0x08, 0xe3, 0x30, 0x31,
+ 0xf7, 0x4c, 0x97, 0x59, 0xfa, 0x40, 0x05, 0x1d, 0xa0, 0x4a, 0x1c, 0x62,
+ 0xdb, 0x92, 0x96, 0x96, 0x1c, 0xc7, 0xac, 0xd8, 0x44, 0x5a, 0x9f, 0x42,
+ 0xab, 0xf8, 0x00, 0x2f, 0x83, 0xca, 0x38, 0xc7, 0xfc, 0x1e, 0x1e, 0xa3,
+ 0xeb, 0x62, 0xa3, 0x13, 0x5b, 0x0f, 0xe4, 0x07, 0x65, 0x49, 0x85, 0xfe,
+ 0x8f, 0x95, 0x91, 0xad, 0x7a, 0xb4, 0xf0, 0x9a, 0x10, 0xc1, 0x16, 0x58,
+ 0x34, 0xb0, 0xa2, 0xc3, 0x36, 0x07, 0xfc, 0x9c, 0x14, 0x7d, 0x17, 0x52,
+ 0x1b, 0x23, 0x59, 0xb6, 0x11, 0x97, 0xd0, 0x8f, 0x48, 0x7d, 0x6a, 0xcb,
+ 0x12, 0x4a, 0x65, 0x32, 0xfd, 0x83, 0x6c, 0xf7, 0xad, 0xb4, 0x19, 0x99,
+ 0xa0, 0xfe, 0x4e, 0x36, 0x7c, 0x2b, 0x9d, 0x31, 0x7d, 0xd9, 0xdd, 0x68,
+ 0x03, 0xd6, 0x77, 0x3a, 0x12, 0xd7, 0xba, 0x94, 0x11, 0x4e, 0x61, 0x3a,
+ 0x43, 0xf2, 0xdf, 0xd4, 0xec, 0x86, 0x99, 0x9f, 0x7b, 0x6f, 0x5b, 0x5f,
+ 0x31, 0xab, 0xc3, 0x42, 0x2f, 0x8a, 0x70, 0xe2, 0xbf, 0x8f, 0x59, 0xbd,
+ 0x67, 0xb7, 0x75, 0x7d, 0x11, 0xd2, 0xce, 0xae, 0xa9, 0xbe, 0x38, 0xf1,
+ 0xe7, 0x1b, 0xec, 0x86, 0xae, 0xf3, 0x2a, 0x98, 0x10, 0xeb, 0xfd, 0xee,
+ 0x35, 0xa4, 0xed, 0xf4, 0xf3, 0xf1, 0xf2, 0x9a, 0x4d, 0xeb, 0x2c, 0x51,
+ 0xa3, 0x18, 0x79, 0x16, 0x8b, 0xed, 0xb0, 0x81, 0x08, 0xe6, 0xe9, 0x99,
+ 0xe6, 0xcb, 0x7c, 0xb0, 0xdc, 0xb6, 0x5d, 0x6a, 0x7a, 0x3d, 0x64, 0xdd,
+ 0x74, 0x56, 0xab, 0x9b, 0x10, 0x57, 0xad, 0x96, 0x6a, 0xad, 0x83, 0xb2,
+ 0xce, 0x4a, 0x1b, 0x5f, 0x1e, 0x6c, 0xfe, 0xa1, 0xd0, 0xec, 0xed, 0xb0,
+ 0xdd, 0x41, 0x78, 0xa7, 0x7a, 0x02, 0x1b, 0x72, 0x8e, 0xf5, 0x58, 0xd1,
+ 0x4d, 0x31, 0x56, 0xb6, 0xa1, 0x6a, 0x27, 0xdc, 0xf0, 0x34, 0x73, 0xc9,
+ 0xdd, 0x8b, 0x6e, 0x49, 0x03, 0x30, 0x61, 0x4b, 0xd1, 0x91, 0xa0, 0xca,
+ 0x27, 0xe8, 0xea, 0x6c, 0x7e, 0xa7, 0xef, 0x7e, 0x87, 0x8b, 0x65, 0x36,
+ 0x3c, 0x00, 0xb7, 0xc7, 0x66, 0x77, 0x72, 0xf3, 0x6d, 0x9c, 0xa7, 0xd6,
+ 0x84, 0xcb, 0xcc, 0x28, 0xb9, 0x18, 0x33, 0xab, 0x29, 0xf1, 0xc0, 0xbf,
+ 0x89, 0x04, 0x52, 0x60, 0x8d, 0x3c, 0x02, 0x98, 0x95, 0x3e, 0x42, 0x9c,
+ 0x71, 0x2d, 0x1c, 0x8d, 0x51, 0x64, 0x65, 0xb5, 0x18, 0xcc, 0x65, 0x68,
+ 0x51, 0xcf, 0x53, 0x49, 0xfd, 0x0d, 0x83, 0xcd, 0xac, 0xdc, 0x92, 0x41,
+ 0xe4, 0x68, 0xfe, 0x75, 0x36, 0xad, 0x02, 0xb1, 0xf7, 0x50, 0xae, 0x3d,
+ 0x52, 0xda, 0xfa, 0xb1, 0x08, 0xda, 0x7e, 0x74, 0x82, 0x6f, 0xf8, 0x83,
+ 0xfd, 0x59, 0x3a, 0x18, 0xa5, 0x6e, 0x37, 0xd0, 0x7b, 0xba, 0x0c, 0x4d,
+ 0xba, 0x12, 0xca, 0x93, 0xd6, 0x0e, 0x54, 0xdf, 0xdf, 0x97, 0x46, 0x57,
+ 0xa8, 0xb4, 0xab, 0x9a, 0x19, 0x75, 0xa6, 0xb3, 0x7c, 0x38, 0x84, 0x85,
+ 0x77, 0x1c, 0xa5, 0x14, 0xbe, 0xec, 0xf9, 0x92, 0xdd, 0x79, 0x80, 0x65,
+ 0x35, 0x25, 0x63, 0xba, 0xcb, 0x79, 0x69, 0xd2, 0x1c, 0x01, 0x05, 0xb2,
+ 0x3a, 0xf9, 0xe5, 0xfb, 0x8a, 0x85, 0x1e, 0x90, 0x33, 0x92, 0x21, 0x2f,
+ 0x84, 0x81, 0x0b, 0xab, 0xb9, 0xfd, 0xa9, 0x9c, 0x11, 0x7f, 0xaa, 0x13,
+ 0xe4, 0x5c, 0xc3, 0xa8, 0x2d, 0x5d, 0xb6, 0xd6, 0x8a, 0xaa, 0xab, 0x9d,
+ 0x08, 0xd3, 0xd2, 0x8f, 0xaf, 0xd0, 0x2e, 0xd4, 0x17, 0xd4, 0xf9, 0x07,
+ 0xfe, 0xb1, 0xdd, 0xc5, 0xff, 0xee, 0xfc, 0xb3, 0x43, 0x21, 0x98, 0x83,
+ 0xcd, 0xcd, 0xfb, 0xfb, 0xfb, 0xbe, 0x02, 0x0a, 0xc2, 0x91, 0x7d, 0xe6,
+ 0x57, 0xfe, 0x21, 0x0e, 0x5b, 0xcb, 0x07, 0xae, 0xa3, 0x4e, 0x3a, 0x9f,
+ 0xfe, 0xb8, 0xdd, 0xdb, 0xde, 0xda, 0xda, 0xfa, 0xb9, 0xbf, 0xc0, 0x2d,
+ 0x9e, 0xd0, 0xb0, 0xf0, 0x5f, 0x77, 0xd8, 0x4d, 0x9e, 0xc9, 0x66, 0x10,
+ 0xf2, 0x55, 0x36, 0xd2, 0x60, 0xb8, 0x64, 0xdc, 0xb6, 0x83, 0x09, 0xf9,
+ 0xc0, 0x61, 0x32, 0x1c, 0x49, 0x8e, 0xdb, 0xeb, 0xe8, 0xb9, 0x83, 0x1e,
+ 0x86, 0x10, 0xf6, 0x77, 0x77, 0x76, 0x22, 0x56, 0x39, 0xb8, 0x3c, 0x8d,
+ 0x93, 0x19, 0x10, 0x99, 0x40, 0x5a, 0x8c, 0xb3, 0x2c, 0x43, 0xf8, 0xc5,
+ 0x98, 0x83, 0x35, 0x40, 0x1b, 0x2d, 0x29, 0x9d, 0x9c, 0x3b, 0x80, 0x10,
+ 0x8c, 0xc0, 0x7d, 0xf2, 0xf1, 0xa3, 0x1d, 0x18, 0xa8, 0xbc, 0x40, 0xde,
+ 0xca, 0xdd, 0x40, 0x0d, 0xce, 0x63, 0x5c, 0x86, 0xb4, 0x36, 0x53, 0x6a,
+ 0x46, 0x42, 0x8e, 0x60, 0x72, 0xb3, 0x5c, 0x1a, 0x5d, 0x53, 0xe4, 0x7e,
+ 0xb2, 0x2c, 0xa4, 0xcb, 0x11, 0x25, 0x3a, 0xdc, 0xc7, 0x8f, 0x35, 0x61,
+ 0x0f, 0x3b, 0x7e, 0x08, 0xff, 0xf1, 0xfc, 0xda, 0xa6, 0x80, 0x56, 0xba,
+ 0x34, 0x4f, 0x92, 0x6a, 0x74, 0xe3, 0xa1, 0xbe, 0x13, 0xfb, 0x46, 0xd5,
+ 0xfd, 0x06, 0x56, 0x63, 0x40, 0xd5, 0xdb, 0x3a, 0x40, 0xda, 0xba, 0x5c,
+ 0x18, 0x14, 0xfb, 0x7d, 0x50, 0x65, 0x02, 0x37, 0x84, 0x67, 0x9e, 0xd8,
+ 0x86, 0xee, 0x69, 0xba, 0x90, 0x52, 0xce, 0x68, 0x5a, 0x6a, 0xdd, 0xf0,
+ 0xe8, 0x26, 0x99, 0x0b, 0xbf, 0x5c, 0xd7, 0x94, 0xc9, 0x8e, 0x10, 0x61,
+ 0xc7, 0x17, 0x69, 0x9d, 0x89, 0xfc, 0x06, 0x16, 0xb3, 0x21, 0x75, 0xb7,
+ 0x46, 0xca, 0x49, 0x33, 0xa4, 0xe9, 0x12, 0xad, 0xc6, 0x61, 0x2c, 0xe2,
+ 0x44, 0x0b, 0xc2, 0xdb, 0x32, 0x9b, 0x91, 0x27, 0x26, 0x05, 0x49, 0x31,
+ 0xf4, 0xbf, 0xf4, 0x44, 0xf7, 0x11, 0xa1, 0x4a, 0x09, 0x26, 0x70, 0x63,
+ 0xdf, 0x9c, 0x1e, 0x5f, 0x53, 0x11, 0x6c, 0x97, 0xca, 0x65, 0xba, 0x54,
+ 0xf9, 0xea, 0x37, 0xaa, 0xba, 0x24, 0xff, 0x08, 0x11, 0xaa, 0x44, 0x93,
+ 0x62, 0x9b, 0x62, 0x67, 0x51, 0xc8, 0xb5, 0x8e, 0xcd, 0x69, 0x31, 0x16,
+ 0xc8, 0x1d, 0xae, 0x69, 0x89, 0x26, 0x31, 0x71, 0x6f, 0xbf, 0xbf, 0xc5,
+ 0x6b, 0xb4, 0x3d, 0xb0, 0xb5, 0x52, 0x8b, 0xdc, 0x48, 0x1a, 0x61, 0x8c,
+ 0xc3, 0x39, 0x03, 0x66, 0x3a, 0xdd, 0x88, 0xd1, 0xcf, 0x19, 0x4a, 0x41,
+ 0x7f, 0xeb, 0x64, 0x4b, 0xae, 0xd4, 0x4c, 0x5d, 0xf0, 0x53, 0x24, 0xcb,
+ 0x06, 0x6c, 0x35, 0xc6, 0xc6, 0x72, 0x53, 0x65, 0x29, 0x38, 0x2b, 0xa1,
+ 0x72, 0x39, 0xa2, 0x89, 0x48, 0x3c, 0x58, 0x55, 0x92, 0x75, 0x6d, 0xef,
+ 0xa9, 0x1c, 0xa5, 0x80, 0x48, 0x2c, 0xa9, 0x3f, 0xaa, 0xb5, 0x6a, 0x0d,
+ 0xe9, 0x27, 0x5e, 0x4b, 0xaf, 0xde, 0xd7, 0x82, 0x3c, 0xcb, 0x7a, 0x72,
+ 0xa8, 0xf4, 0x0b, 0x8f, 0x72, 0x43, 0xb3, 0x5c, 0xd9, 0x6e, 0x55, 0x85,
+ 0xb3, 0x8f, 0xee, 0x42, 0x3e, 0xf6, 0xaa, 0xd9, 0x94, 0x1d, 0xae, 0x68,
+ 0xcf, 0x47, 0xab, 0x1c, 0x51, 0x3a, 0xd4, 0xa3, 0xe9, 0x1d, 0x18, 0xcb,
+ 0x0a, 0x89, 0x12, 0xc8, 0xd8, 0x23, 0xff, 0x54, 0xe7, 0x0b, 0x0c, 0x0b,
+ 0xbd, 0x3e, 0xea, 0xd4, 0x6e, 0x64, 0xa8, 0x7b, 0x55, 0xc9, 0xdc, 0xad,
+ 0x6e, 0xc9, 0x08, 0x4f, 0x43, 0xbe, 0x9f, 0x3c, 0x54, 0x2c, 0xf7, 0x27,
+ 0xd4, 0x81, 0x3a, 0xdb, 0xdd, 0x89, 0xca, 0x47, 0x50, 0x22, 0xe6, 0xee,
+ 0x26, 0x34, 0x1b, 0x8e, 0x07, 0x43, 0x61, 0xb5, 0x4e, 0x7d, 0xcc, 0xb7,
+ 0x3e, 0xe0, 0x2b, 0x47, 0xf4, 0x8a, 0xf4, 0xf6, 0xd2, 0x7c, 0xbd, 0x67,
+ 0x74, 0xb1, 0xc7, 0x7c, 0x69, 0xe6, 0x62, 0xc3, 0x59, 0x9c, 0xdd, 0x9a,
+ 0xc4, 0x6a, 0x1e, 0xa9, 0x8b, 0xed, 0x61, 0xb9, 0x92, 0xd4, 0xfe, 0x50,
+ 0x12, 0xf8, 0x48, 0x32, 0x7a, 0x5d, 0xd4, 0x50, 0x2f, 0x9d, 0xc7, 0x05,
+ 0x96, 0x18, 0xd2, 0x9e, 0x49, 0xf2, 0xb3, 0x7b, 0x26, 0xa6, 0xe9, 0x18,
+ 0x4b, 0xf3, 0x77, 0x94, 0xd1, 0xce, 0xcf, 0xf9, 0x22, 0x8c, 0x63, 0xec,
+ 0x8c, 0xfb, 0xa3, 0x19, 0xe4, 0x2d, 0x1d, 0xe1, 0x7e, 0xbb, 0xd8, 0xba,
+ 0x01, 0x42, 0x06, 0xae, 0x0d, 0xff, 0x3d, 0xd0, 0x10, 0x60, 0x1b, 0xff,
+ 0x36, 0xd2, 0xc3, 0x34, 0x3d, 0x37, 0x41, 0x43, 0xb7, 0x8d, 0x2d, 0xab,
+ 0x77, 0x36, 0x50, 0x19, 0x8a, 0xb0, 0xf7, 0xa3, 0x0b, 0x6b, 0x4e, 0x66,
+ 0x5d, 0x82, 0xc4, 0xad, 0x8a, 0x91, 0x18, 0x93, 0xf4, 0x77, 0x49, 0xdd,
+ 0x8c, 0x67, 0xa1, 0x1d, 0xa0, 0xae, 0x6e, 0x29, 0xa1, 0x72, 0x97, 0xa1,
+ 0xd9, 0x29, 0x7c, 0xb7, 0xf0, 0x39, 0xd8, 0x58, 0x6c, 0x2b, 0xca, 0xa1,
+ 0xfc, 0xd8, 0xcb, 0xcc, 0xe6, 0x45, 0x84, 0xfb, 0xc9, 0x71, 0x60, 0xdf,
+ 0x34, 0x92, 0xb5, 0x8f, 0x97, 0x12, 0xcc, 0x9f, 0x81, 0x5c, 0xe4, 0xdc,
+ 0x13, 0xdb, 0x0f, 0x02, 0x58, 0x5a, 0x9e, 0x75, 0x3d, 0x7c, 0x27, 0x0c,
+ 0x9d, 0xb3, 0xc7, 0x09, 0x73, 0x02, 0xe7, 0xd2, 0xbf, 0xdb, 0x34, 0x01,
+ 0x8e, 0xf9, 0x3d, 0xa5, 0x4d, 0xf7, 0xcb, 0x4f, 0xb4, 0x1a, 0xe6, 0x5e,
+ 0x40, 0x7a, 0x18, 0x40, 0x85, 0x5d, 0x2e, 0xe5, 0xf3, 0x96, 0x74, 0x91,
+ 0xe9, 0x8d, 0x14, 0xb8, 0xa9, 0x94, 0x0b, 0xa9, 0x4b, 0xd7, 0xc6, 0xbc,
+ 0xc1, 0xa6, 0x4d, 0x8e, 0xff, 0x43, 0x30, 0xbb, 0x40, 0xdd, 0xf4, 0xf4,
+ 0x65, 0xbc, 0x8d, 0x94, 0x86, 0x08, 0x3b, 0x4c, 0x40, 0xd1, 0x98, 0xcf,
+ 0x83, 0xd9, 0x92, 0x36, 0x39, 0x19, 0xf5, 0x89, 0x24, 0x63, 0xab, 0x3e,
+ 0x37, 0xd8, 0x6b, 0x70, 0x3e, 0x3e, 0x76, 0xe2, 0x98, 0xa1, 0x75, 0x4b,
+ 0x6d, 0x7a, 0x6c, 0x1a, 0x9c, 0x4f, 0x45, 0x8e, 0x94, 0x98, 0xea, 0x09,
+ 0x1c, 0xcd, 0xc2, 0x5a, 0x97, 0xba, 0xf1, 0x81, 0xa6, 0x52, 0xbc, 0x52,
+ 0xe9, 0xa1, 0xf1, 0xe8, 0x42, 0xfe, 0xc2, 0x5d, 0xb8, 0x4b, 0x79, 0xef,
+ 0x19, 0xcc, 0x6c, 0x58, 0xa4, 0xc9, 0x04, 0x35, 0x10, 0x5a, 0x91, 0xe4,
+ 0x90, 0x7a, 0x5e, 0xa3, 0x04, 0x71, 0xaf, 0x31, 0x3b, 0x1d, 0xce, 0x11,
+ 0x0b, 0x88, 0x53, 0xf2, 0x1c, 0x31, 0x4f, 0x34, 0xbd, 0xb8, 0x18, 0x64,
+ 0x1e, 0x6b, 0x25, 0x69, 0x11, 0xb1, 0xd6, 0x34, 0x05, 0xf3, 0x33, 0xa9,
+ 0x0f, 0xbb, 0x78, 0x3c, 0x91, 0xba, 0x32, 0xbc, 0xc5, 0xa6, 0x97, 0x23,
+ 0x7d, 0x91, 0xd9, 0xaa, 0x68, 0x37, 0x4e, 0x3b, 0xb0, 0x30, 0x72, 0x33,
+ 0xee, 0xd2, 0xb7, 0x49, 0x01, 0xf2, 0x2f, 0x2f, 0xa3, 0xef, 0xf6, 0x35,
+ 0x0d, 0x53, 0x3a, 0xd2, 0x8b, 0x2a, 0x62, 0x8a, 0x5e, 0xa9, 0x5c, 0x80,
+ 0xa7, 0xee, 0x85, 0x2f, 0xb8, 0x78, 0x83, 0xb9, 0x97, 0xbe, 0x2e, 0x0a,
+ 0x09, 0x1b, 0xe9, 0x59, 0xf3, 0xca, 0xc1, 0x4f, 0x80, 0xfc, 0xe0, 0x9f,
+ 0xe1, 0xee, 0x63, 0xb6, 0x89, 0x34, 0x68, 0x57, 0x48, 0x2c, 0xe8, 0xcb,
+ 0x83, 0xb3, 0x1c, 0x56, 0xa4, 0xe4, 0x80, 0x74, 0x32, 0x13, 0x8f, 0xae,
+ 0x53, 0x74, 0xf7, 0x48, 0x82, 0x8d, 0xaf, 0x02, 0x72, 0xa9, 0x82, 0xa8,
+ 0x35, 0x16, 0x1f, 0xbc, 0x91, 0x1c, 0x81, 0x7a, 0x64, 0x79, 0x83, 0x9a,
+ 0x18, 0x6a, 0x08, 0x64, 0xe4, 0xb7, 0xa8, 0xf7, 0x2c, 0x1f, 0xcf, 0xaf,
+ 0xcf, 0xde, 0x8b, 0xe9, 0x6c, 0xd9, 0x9c, 0x68, 0x35, 0xd6, 0x2c, 0x16,
+ 0xb6, 0xc3, 0x54, 0xe5, 0x63, 0x02, 0xe8, 0x66, 0x68, 0x79, 0x21, 0x23,
+ 0x52, 0xe0, 0xb6, 0x75, 0x25, 0x17, 0xa7, 0x90, 0xc2, 0x35, 0x31, 0xba,
+ 0x74, 0x53, 0x03, 0x9e, 0x6c, 0x24, 0xc2, 0x92, 0xce, 0x9e, 0x5c, 0x25,
+ 0x20, 0x51, 0x80, 0xd1, 0xac, 0x02, 0x58, 0x47, 0x39, 0xa7, 0xfc, 0xd0,
+ 0xf9, 0x32, 0xaf, 0x04, 0x59, 0x0c, 0xf7, 0xcb, 0x88, 0xde, 0xe4, 0xf7,
+ 0x59, 0xef, 0x0c, 0xeb, 0x8f, 0xa3, 0xb3, 0x7c, 0x0a, 0x5b, 0x75, 0x4e,
+ 0x0a, 0x4b, 0xf3, 0xd4, 0x3e, 0x5c, 0x9e, 0x47, 0xeb, 0x28, 0x77, 0xa3,
+ 0x4b, 0x83, 0x39, 0x87, 0x4f, 0x6e, 0x88, 0x7d, 0x51, 0xb2, 0x4e, 0x22,
+ 0xb3, 0xe9, 0x46, 0x27, 0x3f, 0x1c, 0xbd, 0xbf, 0x3c, 0x3b, 0xf9, 0x89,
+ 0x4d, 0x0c, 0x6f, 0x39, 0xf8, 0xe3, 0xaf, 0x1c, 0x9b, 0x8b, 0x22, 0x34,
+ 0x98, 0x33, 0x08, 0xf3, 0x08, 0x02, 0xce, 0x30, 0x7d, 0x32, 0x6b, 0x54,
+ 0x12, 0x1c, 0x0c, 0x2e, 0x4f, 0x7b, 0x0a, 0x18, 0xc7, 0xdd, 0x4a, 0xd3,
+ 0x0c, 0x0d, 0x24, 0x92, 0x47, 0xd2, 0xe8, 0xe4, 0x5b, 0x3f, 0x18, 0xa5,
+ 0x37, 0xa2, 0x1b, 0x9d, 0x6b, 0x2a, 0x62, 0x97, 0x4e, 0x1c, 0xaf, 0xe0,
+ 0x9b, 0x74, 0x4a, 0x01, 0xa5, 0x46, 0x02, 0x19, 0x12, 0x07, 0x4d, 0x61,
+ 0xe4, 0x95, 0xf3, 0x50, 0x93, 0x39, 0x8b, 0x96, 0x57, 0x26, 0x33, 0x76,
+ 0x5f, 0xb6, 0x4a, 0x48, 0x62, 0x06, 0x74, 0x8c, 0x58, 0x27, 0xe2, 0x85,
+ 0xca, 0xa4, 0x6e, 0x64, 0xf8, 0xe8, 0x76, 0xb7, 0x33, 0x34, 0xc2, 0x72,
+ 0x41, 0xb4, 0x09, 0xc3, 0xf6, 0x0f, 0xa2, 0x4e, 0x6f, 0x19, 0x1d, 0x74,
+ 0x3e, 0xa1, 0x8a, 0xe0, 0x7a, 0x7a, 0x03, 0xcd, 0xb2, 0x24, 0x5e, 0xa6,
+ 0xae, 0x60, 0x69, 0xf1, 0x40, 0xfe, 0x6a, 0xf5, 0xb6, 0xb1, 0xc7, 0x1c,
+ 0xae, 0xba, 0x48, 0x5f, 0x2a, 0x4d, 0x9b, 0x06, 0xe0, 0x5c, 0x32, 0xe2,
+ 0x4b, 0x09, 0xc7, 0x4d, 0x41, 0x43, 0x5d, 0x03, 0x36, 0xc0, 0x6e, 0x7c,
+ 0x64, 0xf1, 0x1d, 0x8a, 0x4d, 0x8a, 0x05, 0x95, 0x8f, 0x41, 0x57, 0x3d,
+ 0xe2, 0x18, 0x44, 0x89, 0x19, 0xe8, 0xfe, 0x70, 0xb4, 0x57, 0x6b, 0x5f,
+ 0xae, 0x49, 0x7c, 0xb5, 0x23, 0x4a, 0x15, 0xf2, 0xea, 0x0e, 0x2b, 0xb0,
+ 0xa8, 0x18, 0xe3, 0xec, 0xe1, 0xc6, 0xaf, 0x1d, 0xae, 0x69, 0x43, 0x19,
+ 0x7d, 0xb2, 0xc9, 0x70, 0xe8, 0x3d, 0x09, 0xf1, 0xa9, 0x5a, 0x2d, 0xa7,
+ 0x2f, 0xb9, 0xe5, 0x20, 0x35, 0xc7, 0x09, 0x09, 0x6f, 0xee, 0x1b, 0xc9,
+ 0x18, 0x8f, 0x1c, 0x42, 0x6c, 0xaa, 0x1c, 0xb5, 0x99, 0xcb, 0x5c, 0xff,
+ 0x4d, 0xe7, 0xea, 0xf4, 0x56, 0xc6, 0xa0, 0x84, 0xed, 0xf1, 0x37, 0xe4,
+ 0xf6, 0xbc, 0x6d, 0xfa, 0x10, 0xa7, 0x96, 0xa2, 0x71, 0x4c, 0x9a, 0x70,
+ 0xb0, 0x84, 0xb0, 0xdb, 0xa8, 0xcd, 0xa3, 0xb8, 0x96, 0xef, 0xbe, 0xac,
+ 0x0c, 0xa2, 0x29, 0x8e, 0xbc, 0x56, 0x60, 0xfb, 0xa6, 0xfc, 0x96, 0x7a,
+ 0xba, 0xe6, 0x45, 0xeb, 0x4d, 0x55, 0xd7, 0xae, 0xa5, 0x3c, 0x96, 0xb6,
+ 0x5a, 0x21, 0x81, 0xea, 0x04, 0x3d, 0x28, 0xea, 0x80, 0xd8, 0x76, 0x5d,
+ 0x1f, 0xcd, 0x86, 0x5b, 0xcb, 0x69, 0x53, 0x19, 0x13, 0x7d, 0xaa, 0xc7,
+ 0x4a, 0xb5, 0x4c, 0x38, 0x88, 0xa2, 0xef, 0x94, 0xdb, 0xd6, 0xbb, 0x17,
+ 0x8a, 0x2f, 0x9b, 0xda, 0x0b, 0xb4, 0xd7, 0x35, 0xd2, 0x36, 0xd9, 0x7d,
+ 0xf2, 0x2a, 0x43, 0x6d, 0x30, 0xc4, 0xcc, 0x2f, 0x9c, 0xfc, 0x19, 0x0c,
+ 0x8b, 0x7c, 0x27, 0xb7, 0xaa, 0xf4, 0xed, 0xac, 0x37, 0x12, 0x38, 0x73,
+ 0xe3, 0x51, 0x52, 0x2a, 0xc8, 0x8e, 0x43, 0xb1, 0x51, 0x34, 0x3c, 0xaf,
+ 0x49, 0x03, 0x29, 0x79, 0xf7, 0xcb, 0x7e, 0x48, 0x85, 0x95, 0x36, 0x44,
+ 0x1c, 0xb2, 0x93, 0x15, 0xb1, 0x87, 0x9d, 0xa2, 0x69, 0x3a, 0x84, 0xe4,
+ 0xed, 0x74, 0xcd, 0xd8, 0x81, 0xd0, 0x2a, 0x49, 0x8f, 0xdd, 0x62, 0x4c,
+ 0xc1, 0x8a, 0x47, 0x49, 0xac, 0xe1, 0xb6, 0xdd, 0xd9, 0xad, 0xa6, 0x1b,
+ 0xe2, 0xc8, 0xc9, 0x43, 0x32, 0x5a, 0x56, 0xf5, 0x12, 0x38, 0x67, 0x4e,
+ 0x02, 0xec, 0x44, 0x53, 0x5a, 0xa7, 0x8b, 0xa0, 0xc6, 0xe8, 0xa5, 0xa2,
+ 0xf2, 0x1c, 0x74, 0x36, 0x34, 0x88, 0x1b, 0x8b, 0x0e, 0xcf, 0xbf, 0x08,
+ 0xc5, 0x67, 0x75, 0xca, 0x45, 0xc2, 0x1e, 0x55, 0x9b, 0xaa, 0x10, 0xfc,
+ 0x3c, 0xd0, 0x68, 0x11, 0xfc, 0xfa, 0x5b, 0xf6, 0xbd, 0x39, 0x1f, 0x37,
+ 0xdd, 0x3a, 0xc5, 0x2d, 0x57, 0x7a, 0x57, 0xd9, 0xfb, 0x32, 0xb5, 0x2d,
+ 0x07, 0x06, 0x75, 0x07, 0xd4, 0x4d, 0x86, 0xbc, 0xbe, 0xaa, 0x9b, 0xef,
+ 0xb9, 0x43, 0x4f, 0x2f, 0xef, 0x5e, 0x38, 0xde, 0x6c, 0x94, 0x78, 0xf4,
+ 0x23, 0xc3, 0xf1, 0xbd, 0x55, 0xdc, 0x16, 0xc3, 0x3d, 0xf8, 0xe3, 0x5b,
+ 0xfc, 0x63, 0xc2, 0x7e, 0x01, 0x01, 0xd5, 0x63, 0x3f, 0xac, 0x4f, 0xda,
+ 0x08, 0x8a, 0x10, 0xb9, 0xc8, 0x0a, 0x94, 0xa9, 0x85, 0x85, 0x8a, 0x88,
+ 0xc0, 0x67, 0xc1, 0x90, 0xc8, 0xaa, 0xd1, 0x61, 0xba, 0x5c, 0x3c, 0xec,
+ 0x07, 0x29, 0xe5, 0x7f, 0x84, 0x18, 0xc7, 0x88, 0x6c, 0x5d, 0xf2, 0x39,
+ 0x0d, 0xb8, 0xa5, 0x6a, 0x1e, 0xaa, 0x1f, 0x85, 0xad, 0xfa, 0x3b, 0x06,
+ 0x2a, 0x4c, 0x25, 0x3b, 0x70, 0x00, 0x4d, 0xad, 0x50, 0x02, 0xb4, 0x09,
+ 0x1d, 0xec, 0x9e, 0xc6, 0x8b, 0xc6, 0xfc, 0x2c, 0x6d, 0x99, 0x42, 0xfb,
+ 0x92, 0x49, 0xba, 0xcb, 0x1f, 0x3e, 0xe8, 0x6c, 0xfb, 0x7b, 0x6f, 0xa8,
+ 0x7a, 0x9a, 0x6f, 0xbc, 0xf6, 0x31, 0x44, 0x85, 0x4d, 0x8f, 0xda, 0xe2,
+ 0x47, 0xf0, 0xa3, 0x86, 0x3b, 0xb0, 0x5a, 0xd2, 0x32, 0xcf, 0x39, 0xb7,
+ 0x8d, 0xc4, 0xae, 0x1b, 0xc4, 0x16, 0x6e, 0xd9, 0x27, 0x83, 0x29, 0x4d,
+ 0xc9, 0x1c, 0x43, 0x5f, 0x46, 0x32, 0x32, 0x8c, 0x17, 0x6a, 0x56, 0xf8,
+ 0xb9, 0x5e, 0x78, 0xb8, 0x31, 0x6a, 0x6f, 0x28, 0x65, 0x39, 0x7d, 0xeb,
+ 0x0f, 0x5e, 0xb4, 0xb3, 0x7c, 0xcc, 0x46, 0x37, 0x6f, 0xce, 0x07, 0xe1,
+ 0xd7, 0x9b, 0x8b, 0xa3, 0xa7, 0x41, 0x0b, 0x41, 0x5a, 0x60, 0x93, 0x53,
+ 0x50, 0x2c, 0xd1, 0x7d, 0x76, 0xe4, 0xfc, 0x36, 0x3c, 0x5c, 0xfd, 0x15,
+ 0xe3, 0x0a, 0x44, 0xcd, 0x82, 0xb9, 0xb8, 0x28, 0x9e, 0x54, 0x29, 0xd2,
+ 0x8b, 0xf1, 0x2e, 0xb0, 0xd7, 0x23, 0x3c, 0x5c, 0x75, 0x83, 0xd1, 0x22,
+ 0x20, 0x02, 0x19, 0xb1, 0x70, 0x12, 0xd0, 0x9a, 0x74, 0x4d, 0x0d, 0x77,
+ 0xf4, 0x8f, 0x5f, 0x72, 0xcc, 0x67, 0x60, 0xd1, 0x26, 0x81, 0xe0, 0xa2,
+ 0xb7, 0x43, 0x26, 0x4e, 0x63, 0x63, 0xbf, 0x40, 0xaa, 0x33, 0x7c, 0x9d,
+ 0xa9, 0xb4, 0x2b, 0xc4, 0x4a, 0x3f, 0x2a, 0xda, 0x96, 0x04, 0x7b, 0xb2,
+ 0xf3, 0xcd, 0xd7, 0xbe, 0xf4, 0x7c, 0x73, 0xde, 0xf2, 0x39, 0xfc, 0x4d,
+ 0x4f, 0xab, 0x09, 0x45, 0x23, 0x70, 0x14, 0x7a, 0x7f, 0x2f, 0x04, 0x0a,
+ 0x39, 0x3c, 0x01, 0xc5, 0x49, 0x7e, 0x82, 0x4b, 0x20, 0x40, 0x3c, 0xff,
+ 0xb1, 0xf2, 0x41, 0xc9, 0xe9, 0x0f, 0x7f, 0x8a, 0x0b, 0x25, 0x38, 0xc3,
+ 0x2f, 0xba, 0xe2, 0x28, 0xee, 0xa5, 0x28, 0xc2, 0x1b, 0xab, 0xce, 0x28,
+ 0x3c, 0x1c, 0xf2, 0xb7, 0x10, 0x24, 0x15, 0xb2, 0x85, 0x1d, 0xfe, 0x63,
+ 0x73, 0xc7, 0xa4, 0xa6, 0x99, 0x92, 0x50, 0xba, 0xa6, 0x20, 0xc1, 0x7d,
+ 0x05, 0x21, 0x4b, 0x1f, 0x06, 0x94, 0x4f, 0xd0, 0x42, 0xcd, 0x94, 0x78,
+ 0xc0, 0x19, 0x07, 0x66, 0x72, 0x38, 0x4f, 0xd5, 0xc4, 0x82, 0x33, 0x19,
+ 0xb0, 0xfb, 0xee, 0x29, 0x62, 0x4a, 0x03, 0xd9, 0x74, 0xab, 0x70, 0x37,
+ 0xdf, 0x83, 0x92, 0x84, 0xc2, 0xf5, 0xd9, 0x44, 0xaa, 0x2f, 0x44, 0xeb,
+ 0x43, 0x10, 0xd7, 0x0e, 0x8c, 0x0e, 0xab, 0xd8, 0x7b, 0x5c, 0xc2, 0x12,
+ 0x1e, 0x6e, 0xff, 0xf3, 0xfd, 0xbd, 0x8d, 0x8d, 0xae, 0xfa, 0xaa, 0x24,
+ 0x41, 0x66, 0x48, 0x05, 0x59, 0x29, 0x72, 0x2e, 0x6e, 0x97, 0x0e, 0x5b,
+ 0x7c, 0x43, 0x8c, 0xc1, 0xf8, 0x8c, 0xc2, 0xc3, 0xa1, 0x1c, 0xd3, 0xf7,
+ 0xf0, 0x10, 0xd1, 0x04, 0x27, 0x86, 0x6e, 0x0c, 0x61, 0x14, 0x36, 0x09,
+ 0x3f, 0x60, 0x62, 0x2e, 0xad, 0x5c, 0x81, 0x1c, 0x29, 0xd6, 0xc3, 0x88,
+ 0x8e, 0x25, 0x0e, 0x17, 0xc7, 0x2a, 0x69, 0xfd, 0x44, 0xd0, 0x4b, 0x16,
+ 0x7b, 0xf4, 0x07, 0x15, 0x3f, 0xde, 0x68, 0x0b, 0xe7, 0xcb, 0xe5, 0x70,
+ 0x06, 0x32, 0x68, 0xb0, 0x9c, 0x4c, 0xe0, 0xb4, 0xcf, 0x52, 0xe9, 0xc5,
+ 0xcd, 0x3a, 0xb8, 0x24, 0x37, 0xb4, 0xc9, 0x1c, 0x5a, 0x77, 0x9d, 0xd0,
+ 0x24, 0xd7, 0xd3, 0x16, 0x70, 0x8b, 0xd6, 0x16, 0x75, 0x16, 0xfc, 0x21,
+ 0x38, 0xa1, 0x49, 0xaf, 0x6d, 0x61, 0x0f, 0x49, 0xe9, 0x9b, 0x71, 0xef,
+ 0x31, 0x6e, 0x0b, 0x02, 0xfb, 0xd9, 0x47, 0x6f, 0x9a, 0x5e, 0xd7, 0x53,
+ 0x76, 0x8d, 0xde, 0x79, 0x8f, 0x7a, 0x27, 0x81, 0xf0, 0x60, 0x2c, 0x23,
+ 0x3a, 0x64, 0x0d, 0xb3, 0xbd, 0x0b, 0xb2, 0x82, 0x21, 0xb8, 0xba, 0x28,
+ 0x69, 0xf5, 0xe4, 0xf7, 0x8f, 0xb1, 0xff, 0xa1, 0x24, 0x61, 0xce, 0x12,
+ 0x8c, 0x35, 0x12, 0x7f, 0xf4, 0x51, 0x49, 0x0a, 0xf6, 0x4f, 0xf2, 0x18,
+ 0xe2, 0xfb, 0x10, 0x0f, 0x3e, 0xe5, 0xd6, 0xc5, 0x84, 0xaa, 0xc4, 0x5e,
+ 0x20, 0x46, 0xf3, 0x61, 0x9f, 0x17, 0xd0, 0xce, 0x83, 0xc7, 0x13, 0x24,
+ 0xa5, 0x36, 0x7b, 0x8c, 0x9c, 0x38, 0x8f, 0xc2, 0x2d, 0x94, 0xb5, 0x2f,
+ 0x79, 0xae, 0x1b, 0xac, 0xbe, 0xf6, 0x74, 0x92, 0x8a, 0x6c, 0xe2, 0x0e,
+ 0xcf, 0xa8, 0x43, 0xe5, 0xe5, 0x1a, 0x3f, 0xa7, 0xec, 0x2b, 0xb5, 0x1a,
+ 0x58, 0xef, 0xd6, 0xb1, 0xc5, 0x43, 0x19, 0x07, 0x62, 0xea, 0x3a, 0xc7,
+ 0xce, 0x57, 0x9a, 0xc9, 0xd5, 0xd1, 0x14, 0x80, 0x46, 0x6b, 0x7a, 0x19,
+ 0x53, 0x86, 0x0c, 0x20, 0x2e, 0x70, 0x5a, 0x04, 0x25, 0xa9, 0xe3, 0xa9,
+ 0xc1, 0x90, 0xbd, 0x4e, 0x50, 0xa1, 0x35, 0x1b, 0x60, 0x7a, 0x4c, 0xd6,
+ 0xcc, 0x3e, 0xfd, 0x84, 0x8d, 0xfa, 0x61, 0x7a, 0x77, 0x95, 0x56, 0x4b,
+ 0x9f, 0xe9, 0x0e, 0x15, 0x1f, 0x94, 0x10, 0x2a, 0x48, 0x4c, 0xe3, 0x61,
+ 0x58, 0x18, 0x09, 0x32, 0xf3, 0x30, 0xe1, 0x13, 0x9b, 0xad, 0x96, 0x86,
+ 0x47, 0xa0, 0xf3, 0x73, 0x96, 0xdf, 0x7b, 0x19, 0xe2, 0x68, 0x61, 0x98,
+ 0xd9, 0xd5, 0xeb, 0xdf, 0xe0, 0xed, 0x3f, 0xfd, 0x43, 0x7f, 0xf9, 0x11,
+ 0x77, 0xea, 0x9f, 0xba, 0x53, 0x9a, 0x74, 0x17, 0x7b, 0x30, 0x09, 0x64,
+ 0x5b, 0x47, 0x7f, 0xa2, 0x5d, 0xf9, 0x2b, 0x66, 0x35, 0xf1, 0xd6, 0x20,
+ 0x42, 0x11, 0x0d, 0xf8, 0xa7, 0xbe, 0xd1, 0xa3, 0x65, 0x90, 0x18, 0xeb,
+ 0xbe, 0x49, 0xd9, 0x1f, 0x3e, 0x7a, 0x2e, 0x29, 0x24, 0xc3, 0x9f, 0xb2,
+ 0x2e, 0x41, 0x2d, 0x83, 0x49, 0x87, 0x28, 0x2d, 0xdc, 0x4c, 0x97, 0x4f,
+ 0xf1, 0xa7, 0x42, 0xf0, 0x86, 0xc0, 0x96, 0x81, 0x99, 0xa3, 0xa1, 0xc7,
+ 0x3f, 0x0f, 0x1b, 0x16, 0x9a, 0xd4, 0x22, 0xde, 0x94, 0x1a, 0x04, 0x15,
+ 0x8c, 0x83, 0x2d, 0xe2, 0xd5, 0x10, 0x1f, 0x2a, 0xfa, 0x0b, 0x4d, 0x15,
+ 0x9e, 0x6e, 0x9e, 0x3d, 0x61, 0xb4, 0x08, 0x38, 0x90, 0xbe, 0xcc, 0x4d,
+ 0xdb, 0x4c, 0x8e, 0xc6, 0x9f, 0xfe, 0xc1, 0x89, 0x80, 0xff, 0xf4, 0x75,
+ 0xdf, 0x8b, 0xeb, 0x93, 0x03, 0x9a, 0xd2, 0x9f, 0x7a, 0xe5, 0xe3, 0x7c,
+ 0x98, 0xcf, 0xe4, 0xe2, 0xe1, 0xe6, 0xc3, 0x06, 0xea, 0xcf, 0x98, 0x4a,
+ 0x28, 0x56, 0xd7, 0x73, 0x00, 0x4c, 0xba, 0xc1, 0xde, 0x14, 0x68, 0x87,
+ 0xe5, 0x23, 0xae, 0x68, 0xc5, 0xc2, 0x05, 0xb8, 0x79, 0x7f, 0x8a, 0x14,
+ 0x93, 0x84, 0xfb, 0xd2, 0x4a, 0x07, 0x62, 0xf1, 0xa8, 0x6a, 0x09, 0x48,
+ 0x30, 0x04, 0xb4, 0x9a, 0x8e, 0x0d, 0x4f, 0x0f, 0x42, 0xbf, 0x20, 0xbf,
+ 0x80, 0x69, 0x7e, 0xa4, 0xa2, 0x49, 0x31, 0x73, 0x8f, 0xf9, 0x67, 0xbd,
+ 0x6b, 0xfa, 0x99, 0xe6, 0xd1, 0x08, 0xd8, 0x00, 0x66, 0x66, 0x48, 0xf1,
+ 0x49, 0xd7, 0x2f, 0x50, 0x8e, 0x42, 0xa9, 0x79, 0x98, 0xf8, 0x0e, 0x7c,
+ 0xc6, 0x9b, 0xa7, 0xde, 0xea, 0x8f, 0x09, 0x01, 0xf2, 0xa6, 0x77, 0xc9,
+ 0xea, 0xd1, 0xa8, 0xc3, 0x0f, 0x30, 0xe6, 0x79, 0x2c, 0xc9, 0x6c, 0x9c,
+ 0xbd, 0x66, 0xee, 0x93, 0xc2, 0xa2, 0x51, 0x6e, 0x33, 0x9c, 0x76, 0xff,
+ 0xa9, 0xe1, 0x70, 0x4f, 0xb5, 0x6a, 0x43, 0x32, 0x7f, 0xd0, 0xbf, 0x96,
+ 0x4e, 0x8c, 0x86, 0x51, 0x61, 0x41, 0x0e, 0xa6, 0x1c, 0xe1, 0xc8, 0x4f,
+ 0xac, 0x35, 0xd7, 0x10, 0x85, 0xb0, 0x2d, 0x0e, 0x57, 0x5e, 0x74, 0x23,
+ 0x1b, 0xdd, 0xd6, 0xa4, 0xbe, 0x08, 0x03, 0xe1, 0xab, 0x87, 0x33, 0x51,
+ 0x72, 0x13, 0x9a, 0x3a, 0xa5, 0x76, 0xdd, 0x39, 0xa7, 0x1f, 0xd2, 0x3c,
+ 0xb1, 0x8e, 0x65, 0x8e, 0x5e, 0xdb, 0x40, 0x9c, 0x39, 0x0a, 0x70, 0x7b,
+ 0x0a, 0x8e, 0xfe, 0x87, 0x13, 0x6d, 0x67, 0xd7, 0x56, 0xcf, 0x89, 0xb2,
+ 0x83, 0x2e, 0xc2, 0xa0, 0x97, 0xab, 0x87, 0xe3, 0xfc, 0xfb, 0x17, 0xfd,
+ 0xad, 0x0d, 0xef, 0x50, 0xab, 0xc5, 0x47, 0xa0, 0x8d, 0xe2, 0xf1, 0x23,
+ 0x66, 0xa9, 0xd2, 0x99, 0x69, 0x54, 0x81, 0x7e, 0x40, 0x3b, 0xcb, 0xe8,
+ 0x05, 0xcb, 0x05, 0x8e, 0x43, 0x64, 0x3e, 0xcb, 0xd9, 0x60, 0x7b, 0x6a,
+ 0x19, 0xf5, 0x7c, 0x50, 0x17, 0x44, 0x67, 0xbd, 0xde, 0x03, 0x6e, 0xcf,
+ 0x9b, 0x18, 0x26, 0xa0, 0x7c, 0xa4, 0xc8, 0xb5, 0x21, 0x26, 0x90, 0x7b,
+ 0x49, 0x91, 0x8e, 0xdc, 0x86, 0xa8, 0xf4, 0x00, 0x91, 0x14, 0x63, 0x83,
+ 0x62, 0x28, 0x3b, 0x08, 0x82, 0xdc, 0xf8, 0x1f, 0xf9, 0x7f, 0x9d, 0x90,
+ 0x95, 0x49, 0x77, 0xa4, 0xd3, 0x86, 0x89, 0x62, 0x66, 0x8d, 0xcd, 0x40,
+ 0x38, 0x7d, 0x62, 0x9d, 0x84, 0xb2, 0xbe, 0xc3, 0x78, 0x75, 0xb3, 0x34,
+ 0x2e, 0xcd, 0x04, 0x79, 0x05, 0x74, 0xa3, 0x68, 0xbd, 0x84, 0x2d, 0x77,
+ 0xe3, 0xd5, 0x7e, 0x45, 0x81, 0xa8, 0x11, 0xc7, 0x9a, 0x26, 0x79, 0xbf,
+ 0x65, 0x67, 0x38, 0x71, 0xb8, 0xb9, 0x33, 0xed, 0x1b, 0xc2, 0x6b, 0xf6,
+ 0x83, 0x8f, 0x4d, 0xb7, 0x02, 0x6f, 0xec, 0xba, 0x04, 0xf1, 0x48, 0x39,
+ 0xdf, 0xe0, 0xdb, 0x42, 0xb4, 0xe0, 0xc0, 0xc8, 0x11, 0x83, 0x79, 0xe2,
+ 0xd6, 0xae, 0xd7, 0xfb, 0x2b, 0xb7, 0x9c, 0xb3, 0xc1, 0xe9, 0x60, 0x8e,
+ 0x86, 0x3f, 0x8b, 0x2c, 0x78, 0x07, 0x27, 0xf7, 0x51, 0x21, 0x9d, 0x61,
+ 0x3d, 0xb3, 0xc7, 0x28, 0x88, 0xaf, 0xbf, 0xe2, 0xf3, 0xfb, 0x5b, 0x01,
+ 0xfa, 0xa7, 0xf4, 0xe1, 0x8f, 0xe9, 0xc2, 0xe1, 0x59, 0xa7, 0x97, 0x78,
+ 0x58, 0x54, 0xf7, 0x22, 0x65, 0x13, 0x9c, 0x63, 0x8c, 0x29, 0x17, 0xda,
+ 0xa5, 0x8a, 0x73, 0x95, 0x9e, 0xdc, 0xcc, 0x11, 0x23, 0x20, 0xb0, 0x43,
+ 0xc0, 0x85, 0x8a, 0x00, 0xfb, 0x56, 0xb4, 0x34, 0x71, 0x10, 0x9c, 0x5e,
+ 0xde, 0xed, 0xf9, 0x81, 0xa8, 0x28, 0xe0, 0x2e, 0x73, 0x97, 0xb4, 0xf3,
+ 0xaa, 0x75, 0x49, 0xdc, 0x51, 0x43, 0x96, 0xc4, 0x0b, 0x70, 0xdb, 0xe0,
+ 0xc8, 0x42, 0x74, 0x1d, 0xee, 0x44, 0x9f, 0x58, 0x92, 0x5d, 0xc4, 0x93,
+ 0x33, 0x81, 0x6f, 0x7d, 0x34, 0x18, 0xed, 0x20, 0x9b, 0xf9, 0xd3, 0xf8,
+ 0x6d, 0x50, 0x4c, 0x2c, 0x7a, 0x3b, 0xe2, 0x17, 0x2a, 0x91, 0xf2, 0x54,
+ 0xc2, 0x1a, 0x75, 0x14, 0x50, 0xb0, 0x1b, 0xf4, 0xb5, 0x1b, 0x9c, 0x83,
+ 0x76, 0xa2, 0x2d, 0xcd, 0x1c, 0x60, 0x0a, 0xf6, 0x87, 0x7c, 0x5d, 0x50,
+ 0xf4, 0x4d, 0x72, 0xe9, 0x9a, 0x6e, 0x66, 0xf3, 0xc4, 0x1c, 0xf8, 0x0a,
+ 0x3c, 0x3d, 0x0b, 0xba, 0x46, 0x1f, 0xcb, 0x72, 0x86, 0xa4, 0x9e, 0x4e,
+ 0x1e, 0x61, 0x4a, 0x65, 0x2b, 0x78, 0x8c, 0x2b, 0x40, 0xf9, 0x39, 0x3d,
+ 0x2e, 0xc7, 0x60, 0x5e, 0x2b, 0xc9, 0xa7, 0xb9, 0x48, 0x30, 0xfd, 0x86,
+ 0xc1, 0xc1, 0x9f, 0x22, 0x46, 0x94, 0xc3, 0xf4, 0x79, 0x1b, 0xe8, 0x13,
+ 0x3e, 0x61, 0x94, 0x85, 0x7e, 0xb4, 0x65, 0x2c, 0xc1, 0x27, 0x08, 0xa1,
+ 0x36, 0x12, 0x0e, 0x62, 0xa3, 0xdb, 0xf5, 0x0d, 0xc1, 0x42, 0x44, 0x6f,
+ 0x43, 0x74, 0xf7, 0x3f, 0x92, 0x26, 0xc0, 0xf1, 0x68, 0xc9, 0x3a, 0x37,
+ 0x38, 0x49, 0x38, 0x28, 0xd1, 0x86, 0xc6, 0x94, 0x7b, 0x67, 0x28, 0x0c,
+ 0x67, 0x01, 0xf0, 0xf3, 0x28, 0x00, 0x66, 0x41, 0xcd, 0xae, 0x28, 0x07,
+ 0xdb, 0x1e, 0xf5, 0x7a, 0x2e, 0x15, 0xa5, 0x3d, 0xac, 0x84, 0xed, 0xd1,
+ 0x2f, 0xa2, 0x56, 0x17, 0xab, 0x4d, 0xf7, 0xa8, 0x36, 0xba, 0xaa, 0xd5,
+ 0xa9, 0xaa, 0x26, 0x39, 0x36, 0x84, 0x5f, 0x49, 0x8c, 0x7f, 0x84, 0x7d,
+ 0x61, 0x28, 0xd3, 0x2c, 0x5e, 0x3d, 0x9c, 0x4e, 0x47, 0xfa, 0xa5, 0x91,
+ 0xb5, 0x35, 0x25, 0x68, 0xaf, 0xbc, 0x41, 0x4a, 0x20, 0x54, 0x02, 0x3b,
+ 0x87, 0xc2, 0xd4, 0xb0, 0xac, 0x6b, 0x2b, 0x5f, 0x7d, 0xc6, 0xf5, 0x2f,
+ 0x5d, 0xef, 0x16, 0x16, 0xd5, 0xe0, 0x42, 0x4f, 0x09, 0xc6, 0x20, 0x63,
+ 0x90, 0x35, 0x28, 0x8f, 0x72, 0xd6, 0xd0, 0xc6, 0xa3, 0x3e, 0x15, 0x8b,
+ 0x92, 0xec, 0xd7, 0x5a, 0xdc, 0x88, 0x92, 0x05, 0xe5, 0x17, 0xeb, 0xa5,
+ 0x85, 0x51, 0xc6, 0x62, 0xb9, 0xb1, 0x89, 0x18, 0x6c, 0x84, 0x90, 0xd6,
+ 0x9a, 0x6a, 0x1c, 0x50, 0xb0, 0x2b, 0xb2, 0x28, 0x1c, 0xfd, 0xe4, 0xdd,
+ 0x40, 0xa8, 0xba, 0x8f, 0xa6, 0x9b, 0x07, 0x07, 0x6e, 0xf2, 0x0a, 0xf3,
+ 0x3c, 0xe6, 0x20, 0xcf, 0x89, 0x19, 0x30, 0xe8, 0xa0, 0x65, 0x5c, 0xfa,
+ 0x74, 0xc0, 0x47, 0x47, 0xa3, 0x49, 0x18, 0x38, 0x5a, 0x35, 0x9a, 0xd6,
+ 0x08, 0x9a, 0xa1, 0x28, 0x94, 0xfa, 0xc4, 0x4d, 0x43, 0x34, 0xa0, 0xe0,
+ 0x17, 0xf5, 0x12, 0xcb, 0x9e, 0xf2, 0x27, 0x57, 0xac, 0xc0, 0x31, 0xde,
+ 0x57, 0x7f, 0xd1, 0x65, 0x11, 0xe1, 0x4f, 0x4b, 0xfa, 0x7f, 0xf4, 0xbc,
+ 0xad, 0xd3, 0x0c, 0x76, 0x7f, 0x2c, 0x6c, 0x64, 0x62, 0xcf, 0x01, 0xc7,
+ 0x8a, 0x31, 0x91, 0x60, 0xea, 0xb4, 0x5a, 0xe1, 0xf6, 0x37, 0xd6, 0xa6,
+ 0x01, 0xde, 0x59, 0x2e, 0x11, 0x23, 0x7b, 0xf2, 0x94, 0x2c, 0x67, 0xec,
+ 0x28, 0xf6, 0x20, 0x99, 0xf1, 0x10, 0x5c, 0xb2, 0xde, 0x03, 0xa6, 0x65,
+ 0x56, 0x66, 0x89, 0xb4, 0xb9, 0x3a, 0x2d, 0x2d, 0x7c, 0xf8, 0x8d, 0x66,
+ 0xc5, 0xa3, 0x3d, 0x67, 0x4e, 0xff, 0xaa, 0x5c, 0x6b, 0x4a, 0x32, 0x12,
+ 0x55, 0x46, 0xc2, 0x3c, 0x8b, 0xd9, 0xaf, 0x16, 0x65, 0x35, 0x69, 0xf5,
+ 0xf4, 0x9d, 0x6d, 0x13, 0x65, 0xdb, 0x41, 0x16, 0xc2, 0x98, 0xde, 0xfa,
+ 0xbf, 0xb7, 0xa8, 0x38, 0x93, 0xa8, 0x58, 0xe4, 0x29, 0x92, 0x5c, 0xd6,
+ 0x15, 0xdb, 0xf2, 0x9e, 0x6c, 0x4b, 0xeb, 0x87, 0x0c, 0xd7, 0xdd, 0x46,
+ 0x81, 0x0c, 0x74, 0x72, 0x5d, 0xa9, 0x53, 0x85, 0x8d, 0x08, 0xf5, 0x8c,
+ 0xb0, 0x6b, 0xa4, 0xff, 0x7c, 0x86, 0xfc, 0x62, 0x37, 0xbc, 0x06, 0x9a,
+ 0xd1, 0x27, 0x5e, 0x43, 0xbb, 0x5f, 0xa8, 0x1f, 0xb9, 0xa8, 0xae, 0xab,
+ 0x87, 0x93, 0x3c, 0x79, 0x76, 0x25, 0xb9, 0x4d, 0xcb, 0x6a, 0xd0, 0xdd,
+ 0xe8, 0x07, 0x8e, 0xd8, 0x59, 0xfb, 0x84, 0xc5, 0x43, 0x2f, 0x68, 0x62,
+ 0x35, 0x17, 0x98, 0xd6, 0x2d, 0x87, 0xe0, 0x96, 0xa1, 0x50, 0xf8, 0x18,
+ 0x2f, 0x16, 0x22, 0x6d, 0x9e, 0x26, 0xf9, 0x88, 0x81, 0x1b, 0xb9, 0x4d,
+ 0x2f, 0x36, 0x8a, 0x22, 0x88, 0xcc, 0x2a, 0xcf, 0x6f, 0xd9, 0xa9, 0xca,
+ 0x29, 0xd8, 0x58, 0x0c, 0xe9, 0x23, 0x45, 0x7b, 0x24, 0x3f, 0xd3, 0x7b,
+ 0xb3, 0x39, 0x18, 0xbc, 0xdb, 0x4c, 0xaa, 0x91, 0x4a, 0xbd, 0x4d, 0x9b,
+ 0xfd, 0x27, 0xd6, 0xf7, 0xd3, 0x5a, 0x2c, 0x49, 0x5e, 0xea, 0xd8, 0x87,
+ 0xc4, 0x6f, 0xfc, 0xda, 0xcf, 0xa0, 0x7d, 0xda, 0x84, 0xba, 0x2d, 0xfa,
+ 0x09, 0x96, 0x89, 0x78, 0xd7, 0xfa, 0x91, 0xba, 0x4b, 0x81, 0x26, 0xbd,
+ 0xce, 0x98, 0xb1, 0x60, 0xa7, 0x3e, 0x7d, 0xb3, 0xed, 0xe2, 0x82, 0x4b,
+ 0x41, 0xd7, 0x0a, 0xa6, 0xfc, 0x2c, 0x17, 0xff, 0x2d, 0xe7, 0x49, 0x9e,
+ 0x1d, 0x8e, 0xfd, 0x52, 0x82, 0xd4, 0xd3, 0x13, 0x5e, 0xa0, 0x0f, 0x83,
+ 0xdd, 0x14, 0x4f, 0xcf, 0xf8, 0xd9, 0x13, 0x7e, 0xde, 0x8c, 0x25, 0x30,
+ 0x40, 0x3e, 0x34, 0x9d, 0x04, 0xcd, 0x99, 0xdc, 0xd3, 0x82, 0xf3, 0x8d,
+ 0x35, 0x01, 0xd3, 0x34, 0x7b, 0x8e, 0x73, 0xcf, 0xa4, 0xe8, 0xa0, 0xbf,
+ 0x15, 0x5b, 0xcc, 0x9b, 0x41, 0x25, 0x01, 0xb8, 0x94, 0x5c, 0xe1, 0x69,
+ 0xfe, 0xe4, 0xec, 0x62, 0x01, 0xda, 0x46, 0xb1, 0xe0, 0x38, 0xdf, 0x47,
+ 0x4a, 0x3f, 0x98, 0xc7, 0x93, 0x8e, 0x96, 0x98, 0x7f, 0x1c, 0xe8, 0x38,
+ 0xed, 0xb9, 0xb1, 0x40, 0xdf, 0xe3, 0x5a, 0xab, 0x3b, 0x0c, 0xcb, 0xb7,
+ 0x9c, 0x85, 0xd1, 0xeb, 0x9f, 0xda, 0x6c, 0x4c, 0xbd, 0x9e, 0xcd, 0x8c,
+ 0x1d, 0xf0, 0xa4, 0x48, 0x02, 0x71, 0xb6, 0xd0, 0xed, 0x41, 0xba, 0x20,
+ 0x32, 0x61, 0x32, 0xed, 0xea, 0xc5, 0xe8, 0x46, 0xcf, 0x26, 0x05, 0x0a,
+ 0x35, 0xe8, 0xd6, 0x5a, 0xd8, 0x60, 0x3a, 0x4b, 0x8c, 0xb5, 0xf3, 0x2f,
+ 0xe3, 0x91, 0x01, 0x30, 0x7a, 0x6a, 0x76, 0x31, 0x77, 0x9a, 0x6b, 0xec,
+ 0x02, 0xe7, 0x11, 0xd5, 0x34, 0x0a, 0xca, 0x8e, 0x7a, 0x96, 0x38, 0x4f,
+ 0xa5, 0xdf, 0xb6, 0x09, 0xed, 0xb9, 0xbb, 0x55, 0x5a, 0xfe, 0xfc, 0x0c,
+ 0x81, 0x17, 0x34, 0xc8, 0x69, 0xaa, 0x34, 0xf3, 0xe7, 0x5f, 0x9f, 0x4f,
+ 0x70, 0xe1, 0x39, 0x45, 0x0d, 0x55, 0xd2, 0xe6, 0xc5, 0xd1, 0x66, 0x0b,
+ 0xcf, 0x75, 0x85, 0x50, 0x86, 0xbe, 0x3a, 0xc9, 0x4d, 0xae, 0x5b, 0x83,
+ 0x45, 0x70, 0x4c, 0x67, 0x56, 0xe6, 0x4f, 0x6b, 0x81, 0x74, 0x02, 0x4e,
+ 0xfa, 0x3a, 0x82, 0xeb, 0xb3, 0x03, 0x13, 0xec, 0x20, 0xbc, 0x38, 0x95,
+ 0x12, 0xcd, 0xd3, 0x2e, 0x45, 0x38, 0xc3, 0xf0, 0x8d, 0x11, 0xab, 0xa0,
+ 0x6e, 0x24, 0xf8, 0xbb, 0x6c, 0x90, 0x62, 0x29, 0x6f, 0x8f, 0x52, 0x6c,
+ 0x9f, 0x43, 0x44, 0xe8, 0xf0, 0x0c, 0xdc, 0x55, 0x6a, 0x5b, 0xa0, 0x46,
+ 0x19, 0x7f, 0x99, 0xea, 0x33, 0x8d, 0xd3, 0x34, 0xe1, 0xf8, 0x13, 0xbe,
+ 0x6e, 0xcb, 0x39, 0xc8, 0x0a, 0x45, 0x7d, 0xb2, 0xf7, 0x94, 0xab, 0x9d,
+ 0x82, 0x12, 0x18, 0x95, 0xa0, 0x1c, 0x52, 0x6a, 0x53, 0x8d, 0x61, 0x09,
+ 0x0d, 0x7f, 0x8a, 0x4f, 0x42, 0x81, 0xf6, 0x0f, 0x56, 0x0f, 0xa7, 0x2d,
+ 0x3a, 0x3e, 0x21, 0xd2, 0xe8, 0x43, 0x0c, 0x77, 0x20, 0x54, 0x1f, 0x50,
+ 0xc6, 0x24, 0x85, 0x6c, 0x5b, 0x14, 0x0e, 0x98, 0xd4, 0x3b, 0xda, 0x56,
+ 0xcd, 0xfe, 0xe9, 0x65, 0x15, 0x28, 0x21, 0x01, 0xb5, 0x9e, 0xe2, 0xdb,
+ 0x2c, 0x2c, 0xc0, 0xa2, 0x8e, 0xa9, 0x7a, 0x04, 0x4f, 0x39, 0x79, 0xa8,
+ 0x38, 0xbe, 0x40, 0xbf, 0xc3, 0xb9, 0xa4, 0xa0, 0xd7, 0x61, 0x48, 0xdb,
+ 0x42, 0x98, 0x06, 0xaa, 0x2a, 0xa4, 0x8e, 0x95, 0xbe, 0x66, 0xfc, 0x75,
+ 0x0f, 0xe3, 0x69, 0x3f, 0x2f, 0x52, 0x94, 0x37, 0x94, 0xc8, 0xa9, 0x83,
+ 0x21, 0xdd, 0x77, 0x89, 0x9f, 0xa0, 0xf5, 0x18, 0x1a, 0x4e, 0x23, 0x6b,
+ 0x51, 0xc4, 0xa1, 0x35, 0x6f, 0xe8, 0x39, 0xd1, 0x2b, 0xfe, 0xce, 0x8c,
+ 0x2a, 0xd0, 0x09, 0xa1, 0xfa, 0x72, 0xad, 0xc1, 0x31, 0xbd, 0x5c, 0x35,
+ 0xe5, 0xc5, 0xac, 0xd6, 0x2e, 0x14, 0x63, 0xb0, 0x40, 0x78, 0x05, 0x57,
+ 0xb2, 0x7b, 0xbe, 0xa8, 0xb4, 0x2c, 0x97, 0x74, 0x60, 0x6f, 0x4f, 0xcf,
+ 0x4e, 0x4c, 0x56, 0xdb, 0xff, 0xda, 0xec, 0xe3, 0x96, 0x17, 0x23, 0x2f,
+ 0x87, 0x8f, 0x6b, 0x48, 0x9d, 0x82, 0x60, 0x29, 0x32, 0xfd, 0xb6, 0xcb,
+ 0x9d, 0x2f, 0xe9, 0xc7, 0xb5, 0x0a, 0xd3, 0x93, 0xf3, 0xef, 0x4e, 0xaf,
+ 0x2e, 0xce, 0xdf, 0x9f, 0x9c, 0x5f, 0x7f, 0xe6, 0xb0, 0xbb, 0x50, 0x5f,
+ 0x87, 0xd2, 0x4f, 0x2e, 0x48, 0x31, 0x1c, 0x74, 0x4f, 0x45, 0x80, 0xdc,
+ 0x5d, 0x05, 0x56, 0x2a, 0xff, 0xea, 0xbb, 0xc3, 0x39, 0x0f, 0xa9, 0x67,
+ 0x1f, 0x33, 0x49, 0x16, 0xe8, 0xd9, 0x19, 0x63, 0x5c, 0xb5, 0xcf, 0xb1,
+ 0x00, 0xd3, 0x39, 0x18, 0x5b, 0x4b, 0x3c, 0x20, 0x94, 0x37, 0xa5, 0x02,
+ 0x63, 0xed, 0xd8, 0x67, 0x66, 0x4b, 0x38, 0x08, 0x68, 0x63, 0xa5, 0xb5,
+ 0x49, 0x58, 0xe2, 0xfe, 0x20, 0x05, 0xa0, 0x59, 0x14, 0x5c, 0x8d, 0xa2,
+ 0xdf, 0x91, 0x42, 0x40, 0x9f, 0xbd, 0xe1, 0x3c, 0x1c, 0x8e, 0xbe, 0x30,
+ 0x93, 0x70, 0x72, 0x40, 0x1d, 0x5c, 0x60, 0xa7, 0xc9, 0x71, 0x13, 0x0b,
+ 0xd8, 0x59, 0xc5, 0x8f, 0xea, 0x2c, 0x3a, 0xd8, 0xdc, 0xfc, 0x99, 0xfa,
+ 0x6b, 0x7f, 0x29, 0x0d, 0xb6, 0x7d, 0x08, 0xd4, 0xd2, 0x99, 0x86, 0x2d,
+ 0x19, 0xd2, 0xea, 0x42, 0xa4, 0x5b, 0xb3, 0x9d, 0xe4, 0x06, 0xfe, 0x78,
+ 0x79, 0x75, 0xf1, 0xc3, 0x5f, 0x7e, 0xe3, 0x4f, 0x38, 0xc9, 0x66, 0x3f,
+ 0x62, 0x0e, 0xa6, 0x0e, 0xfe, 0xf3, 0x6f, 0xfe, 0xb5, 0xfa, 0xf0, 0x5d,
+ 0x89, 0xb4, 0x73, 0x33, 0x70, 0x5f, 0x21, 0xe3, 0xe2, 0x6d, 0x06, 0xbb,
+ 0xb7, 0x29, 0xd1, 0x91, 0xe3, 0xe3, 0x30, 0xc9, 0x40, 0x24, 0xe2, 0xca,
+ 0x3a, 0x81, 0xc6, 0x3e, 0xf4, 0x75, 0x9f, 0x4b, 0x8a, 0x6d, 0x06, 0xaf,
+ 0x56, 0x95, 0x63, 0xe5, 0x38, 0xd7, 0x96, 0x53, 0x3e, 0xaa, 0xd9, 0x8f,
+ 0xa3, 0xb3, 0xb3, 0xdf, 0x74, 0x13, 0xa8, 0x47, 0xb1, 0x5d, 0x4b, 0xcf,
+ 0x68, 0xa8, 0xf2, 0xf4, 0x13, 0x48, 0xb4, 0xe7, 0x17, 0x32, 0x9b, 0x43,
+ 0x52, 0x8e, 0x7b, 0x65, 0x02, 0x2a, 0x6d, 0x8c, 0xf1, 0x7e, 0x85, 0x16,
+ 0xc7, 0x89, 0x95, 0x9b, 0x9c, 0x38, 0xe9, 0x21, 0x9d, 0xd3, 0x43, 0x94,
+ 0x2c, 0x40, 0x26, 0x14, 0xe5, 0x55, 0xf2, 0x6e, 0x72, 0x59, 0x1c, 0xd5,
+ 0x2d, 0xe4, 0x06, 0x97, 0x88, 0x3b, 0xa6, 0x73, 0xc7, 0xee, 0x49, 0xa0,
+ 0x21, 0x33, 0xa3, 0x43, 0xa0, 0xbc, 0x2d, 0xd2, 0xf2, 0x96, 0x8a, 0x3a,
+ 0xf0, 0x86, 0x92, 0x82, 0xa4, 0xf5, 0xfb, 0xa8, 0xf2, 0xd2, 0x9c, 0xfa,
+ 0x0c, 0x31, 0x62, 0xab, 0xe9, 0xd2, 0x32, 0x34, 0x3b, 0xea, 0x6c, 0xc5,
+ 0xa2, 0x18, 0xdd, 0xa8, 0xec, 0x84, 0x8e, 0x6b, 0xa5, 0x5d, 0x02, 0xcf,
+ 0xce, 0x49, 0x54, 0xa5, 0xc1, 0x19, 0x08, 0x95, 0xa5, 0x77, 0xb5, 0xdc,
+ 0x18, 0x1f, 0xe0, 0x4f, 0x57, 0x65, 0x32, 0x9b, 0x84, 0x2b, 0xec, 0x83,
+ 0xdc, 0x42, 0x2a, 0xfc, 0x4d, 0xcb, 0x78, 0x25, 0x56, 0x3c, 0xac, 0x84,
+ 0x30, 0x69, 0x30, 0xb4, 0xe0, 0xfb, 0xeb, 0x84, 0x0e, 0x6b, 0x79, 0x06,
+ 0x0f, 0xb6, 0xd1, 0x57, 0xe4, 0x54, 0xb3, 0x72, 0x9e, 0x98, 0x9e, 0xed,
+ 0xeb, 0xb1, 0x5f, 0x30, 0x05, 0x1c, 0xc9, 0xc5, 0xef, 0x50, 0xc9, 0xdb,
+ 0x7b, 0x88, 0x14, 0x38, 0x84, 0xcf, 0xa9, 0xf6, 0x8c, 0xfc, 0xe6, 0x39,
+ 0xc3, 0x51, 0xfb, 0x84, 0x12, 0x73, 0xa3, 0x65, 0xaa, 0x51, 0x85, 0xd9,
+ 0xbd, 0x55, 0x24, 0x7e, 0x71, 0x56, 0xc2, 0x09, 0x6b, 0xc7, 0xaf, 0x93,
+ 0x70, 0x26, 0xbe, 0x6a, 0xa2, 0xad, 0x33, 0x0d, 0xc4, 0x86, 0xe1, 0x31,
+ 0x74, 0xc1, 0x33, 0x88, 0x8c, 0x3b, 0x9e, 0x99, 0x27, 0x69, 0xab, 0x3c,
+ 0x47, 0xd6, 0xe3, 0x14, 0x4a, 0x2b, 0x09, 0x05, 0xe1, 0x82, 0xe9, 0x37,
+ 0xee, 0x95, 0x91, 0xbb, 0x60, 0x4a, 0xda, 0x49, 0x09, 0x37, 0x65, 0xa1,
+ 0x36, 0xd2, 0x8e, 0xe1, 0x96, 0xc8, 0xf7, 0x8f, 0x53, 0xfc, 0x05, 0x85,
+ 0x3a, 0x31, 0x22, 0x8a, 0x95, 0x98, 0xba, 0x03, 0x29, 0x96, 0xa5, 0xfa,
+ 0xba, 0xa1, 0x96, 0x19, 0x6b, 0x70, 0x0b, 0x44, 0xe0, 0x2c, 0x2f, 0x43,
+ 0x70, 0x9a, 0x43, 0xcc, 0x9a, 0x4f, 0xa8, 0x15, 0x0f, 0x5f, 0x79, 0xf8,
+ 0xef, 0xf5, 0xc5, 0xf1, 0xc5, 0x19, 0xfc, 0xe5, 0xe4, 0xed, 0xe9, 0x0f,
+ 0x56, 0x2b, 0x60, 0x80, 0x8a, 0x5a, 0x81, 0x0c, 0xe1, 0x2e, 0xbe, 0xec,
+ 0xba, 0x6c, 0x88, 0x73, 0x10, 0x31, 0xfd, 0x90, 0x53, 0xe2, 0x9a, 0x14,
+ 0x6a, 0xb8, 0xa5, 0xc3, 0xe7, 0x50, 0x4e, 0x63, 0xbe, 0xa8, 0x83, 0x3f,
+ 0x12, 0x0b, 0xf0, 0x12, 0x6a, 0xd1, 0x3c, 0xb2, 0x29, 0xa6, 0xb0, 0x9b,
+ 0x8c, 0x35, 0x52, 0x2e, 0x9b, 0x93, 0x6c, 0x54, 0xfb, 0xc9, 0x54, 0x61,
+ 0x89, 0x6a, 0x93, 0xcb, 0x0b, 0xd3, 0xa7, 0xb6, 0x72, 0x7b, 0xa0, 0x37,
+ 0x9a, 0xce, 0xb8, 0x88, 0xf6, 0x59, 0xe2, 0x2e, 0xd2, 0x34, 0x2e, 0xaf,
+ 0x8a, 0x84, 0xb8, 0x22, 0x01, 0xd5, 0xa1, 0x22, 0xe0, 0xa2, 0x7c, 0x34,
+ 0x28, 0x82, 0x2a, 0x74, 0xcc, 0x88, 0xf5, 0x35, 0xc9, 0x06, 0x48, 0x2e,
+ 0x1f, 0xe5, 0x56, 0xa0, 0x1e, 0xef, 0x40, 0xfc, 0x08, 0xb5, 0x06, 0xcb,
+ 0x05, 0xa5, 0x4e, 0x09, 0xff, 0xa0, 0xec, 0x2a, 0x8e, 0x62, 0x08, 0x47,
+ 0xbd, 0x76, 0x9a, 0xaf, 0xb3, 0x54, 0x90, 0xe0, 0xd3, 0xc2, 0x37, 0xad,
+ 0xf0, 0x0c, 0x44, 0xd9, 0xaf, 0x6b, 0x1c, 0x65, 0xdb, 0xa7, 0xd1, 0x44,
+ 0x95, 0x3d, 0xb0, 0x9f, 0xf6, 0xb2, 0xae, 0x31, 0xeb, 0xbb, 0xdc, 0x5b,
+ 0x35, 0x06, 0x6a, 0x84, 0x7f, 0x5b, 0xa6, 0x77, 0x31, 0xd5, 0x96, 0xc1,
+ 0x65, 0xe9, 0xf5, 0xf8, 0xa5, 0xc6, 0x18, 0xf1, 0xaf, 0x1a, 0x24, 0xae,
+ 0x8f, 0xb2, 0xff, 0x6b, 0x06, 0xd9, 0x6f, 0x8c, 0x71, 0xf3, 0xab, 0x06,
+ 0xe9, 0xa9, 0x80, 0x00, 0xc5, 0xf8, 0x87, 0xd3, 0xeb, 0xe8, 0xf8, 0xe2,
+ 0x8d, 0xbd, 0x60, 0xd7, 0x26, 0x7b, 0x3b, 0x8e, 0x86, 0xcb, 0x0c, 0x68,
+ 0x10, 0xbb, 0x25, 0x99, 0xfe, 0x13, 0x9c, 0xa6, 0x88, 0x39, 0x38, 0xa5,
+ 0x56, 0xac, 0xa5, 0x05, 0x43, 0x11, 0x61, 0x5e, 0x0d, 0x23, 0x29, 0x39,
+ 0x35, 0xba, 0xf8, 0xf4, 0x1c, 0x81, 0x8e, 0xa6, 0x2a, 0x7d, 0xf1, 0x56,
+ 0x22, 0xd6, 0x5d, 0x5c, 0x68, 0x55, 0xe9, 0x30, 0x46, 0x30, 0xa3, 0x8c,
+ 0x6b, 0x23, 0x41, 0x76, 0x06, 0xa0, 0x87, 0x75, 0x38, 0x17, 0x81, 0x18,
+ 0x74, 0xe7, 0xb4, 0xd2, 0xa9, 0xb8, 0x99, 0x84, 0xdb, 0x9a, 0xeb, 0x5f,
+ 0xa3, 0x74, 0x69, 0x40, 0x47, 0xc2, 0x0f, 0xf3, 0xba, 0xc7, 0x06, 0xce,
+ 0x1a, 0x55, 0xe2, 0xcc, 0xe6, 0xec, 0x73, 0x1b, 0x6a, 0x4f, 0x62, 0x9b,
+ 0x21, 0xcc, 0x77, 0x76, 0x24, 0x94, 0x00, 0x2a, 0x3a, 0xfb, 0x0d, 0x24,
+ 0xaf, 0x2c, 0xfd, 0xbb, 0xa3, 0xa0, 0xef, 0x1a, 0x7d, 0x0c, 0x56, 0x3e,
+ 0xa3, 0xde, 0xce, 0x63, 0xbe, 0x10, 0xe5, 0x23, 0x08, 0xf5, 0x07, 0x32,
+ 0xc8, 0xd1, 0x7e, 0x12, 0x38, 0x27, 0xfb, 0xe6, 0x9e, 0x68, 0x65, 0x91,
+ 0xc1, 0x8d, 0xa2, 0x06, 0x59, 0x8b, 0x7a, 0x34, 0xc8, 0x7a, 0x2d, 0xb4,
+ 0x44, 0x9a, 0x42, 0x9c, 0x49, 0x89, 0xbd, 0xa6, 0x03, 0x9e, 0x0b, 0x9b,
+ 0x78, 0xc0, 0xf0, 0x0d, 0x5c, 0x6e, 0x2d, 0xf0, 0xdb, 0x4e, 0x23, 0x41,
+ 0x03, 0xf6, 0x83, 0x99, 0x49, 0xb4, 0x5f, 0x3d, 0xee, 0xa2, 0xe4, 0xd5,
+ 0xa5, 0xdb, 0x0a, 0x4c, 0xb5, 0x38, 0xc6, 0x39, 0x6d, 0x60, 0x97, 0x32,
+ 0x79, 0xb1, 0xe9, 0x7d, 0x8c, 0x50, 0x0f, 0xd4, 0xbc, 0x30, 0xce, 0xb8,
+ 0xd2, 0x50, 0x4f, 0x20, 0x5c, 0x73, 0x67, 0x6b, 0x9e, 0xf6, 0xf9, 0x8f,
+ 0x63, 0xd5, 0xd8, 0xa4, 0x6c, 0xc8, 0x65, 0x2c, 0x2c, 0x64, 0xc4, 0xba,
+ 0xc9, 0x09, 0xa3, 0x03, 0x65, 0x10, 0xad, 0x8f, 0x18, 0xa4, 0xbf, 0x09,
+ 0x65, 0xc3, 0xc7, 0xf9, 0xa2, 0xe5, 0x2b, 0x0c, 0xe9, 0x64, 0x3f, 0xe2,
+ 0xfa, 0xe4, 0x75, 0x0b, 0xe5, 0x59, 0x67, 0xb4, 0x97, 0x4d, 0xba, 0x70,
+ 0x3c, 0xfb, 0x34, 0xa2, 0x79, 0xf2, 0x73, 0xf1, 0x45, 0x24, 0x58, 0xb4,
+ 0x28, 0xca, 0x73, 0x91, 0x2c, 0x66, 0xb2, 0x32, 0xf9, 0x09, 0x05, 0x8e,
+ 0xc9, 0x9b, 0x40, 0xbb, 0x3c, 0xd2, 0x59, 0x82, 0x3a, 0xec, 0x9a, 0x82,
+ 0xaf, 0xe4, 0xb3, 0xd8, 0xa6, 0x8d, 0x55, 0x07, 0xc2, 0xdd, 0x48, 0x0d,
+ 0xbd, 0x49, 0x5b, 0x78, 0xfa, 0x11, 0x26, 0x38, 0x12, 0xaa, 0x83, 0xfe,
+ 0x5b, 0xde, 0xf0, 0x90, 0xee, 0x1a, 0xae, 0x64, 0x5c, 0xed, 0xb2, 0xe0,
+ 0xa2, 0x5d, 0x8b, 0xed, 0xa8, 0x60, 0xeb, 0x92, 0xff, 0x57, 0x20, 0x24,
+ 0x5f, 0x1f, 0x78, 0x51, 0xee, 0xa1, 0x4f, 0xe6, 0x93, 0x4a, 0xb0, 0xbf,
+ 0xb8, 0x23, 0x1a, 0xef, 0xcf, 0x4d, 0x9c, 0x4d, 0x13, 0xf6, 0xbf, 0x38,
+ 0xf0, 0x94, 0xdc, 0x4d, 0x8f, 0xc5, 0x21, 0xdc, 0x75, 0x72, 0xf2, 0xb4,
+ 0xa2, 0x4f, 0xd8, 0x7d, 0xd8, 0xde, 0x32, 0xfb, 0xc0, 0x8d, 0xb2, 0xa8,
+ 0x3a, 0x05, 0x77, 0xe1, 0x7b, 0x42, 0x24, 0xbc, 0x8f, 0xb9, 0x91, 0xae,
+ 0xb6, 0x9b, 0xb7, 0x46, 0x8b, 0x09, 0xf3, 0x60, 0x64, 0xcd, 0xcf, 0x93,
+ 0x26, 0x24, 0x07, 0xcc, 0x82, 0x41, 0x7d, 0x80, 0x53, 0x3d, 0xb9, 0xbc,
+ 0x51, 0xc4, 0x55, 0x97, 0x0c, 0x7a, 0xc3, 0x20, 0x39, 0xce, 0x4a, 0xbc,
+ 0xf7, 0x2e, 0x09, 0xc1, 0x66, 0x28, 0x6e, 0x95, 0x93, 0xcd, 0x61, 0x41,
+ 0x43, 0x9c, 0xf5, 0x6c, 0x9b, 0xf5, 0xdc, 0x13, 0xa1, 0x5c, 0x1e, 0x0d,
+ 0x06, 0x4a, 0x26, 0xc7, 0x3e, 0x45, 0x48, 0xf4, 0x88, 0x10, 0x74, 0xa4,
+ 0x48, 0x3a, 0xa0, 0x2a, 0xca, 0x20, 0x8d, 0x24, 0x83, 0x6d, 0xe6, 0x69,
+ 0x6f, 0x98, 0x31, 0x93, 0x36, 0x21, 0xeb, 0x65, 0xba, 0xd2, 0x15, 0xdf,
+ 0xaf, 0xde, 0xc9, 0xcf, 0x82, 0xe9, 0x2a, 0x1c, 0xb0, 0xc4, 0x7d, 0xa6,
+ 0x62, 0x64, 0xe5, 0xf1, 0xa4, 0x1a, 0x3e, 0x2c, 0xd2, 0x5a, 0xcf, 0xc2,
+ 0xed, 0x5d, 0x7f, 0xd1, 0xdf, 0xf1, 0xaa, 0xba, 0xff, 0xd2, 0xa2, 0xbf,
+ 0x0b, 0x2c, 0x7a, 0xcf, 0x5e, 0x1c, 0xfe, 0x58, 0xb4, 0xb3, 0xf3, 0x52,
+ 0x0b, 0x42, 0x80, 0x8e, 0xe9, 0x7b, 0xf6, 0x83, 0xce, 0x17, 0xe1, 0xb9,
+ 0x1e, 0xd5, 0x1f, 0xf8, 0xdf, 0x72, 0x2e, 0xaf, 0xf3, 0xa9, 0x7d, 0xf3,
+ 0x29, 0x50, 0xbf, 0xd1, 0x02, 0x05, 0x9d, 0x9e, 0xb9, 0x8c, 0xc7, 0x7c,
+ 0xd4, 0x94, 0x43, 0x35, 0xfc, 0x1e, 0xf3, 0xa7, 0x2a, 0xa3, 0x4b, 0x36,
+ 0x3e, 0xa5, 0xb3, 0x70, 0xbe, 0xf3, 0xc2, 0xb8, 0x51, 0x36, 0x77, 0x34,
+ 0x80, 0x7e, 0x44, 0xbc, 0x78, 0x96, 0xcc, 0x89, 0x32, 0xc7, 0x09, 0xa2,
+ 0xf5, 0x58, 0xf7, 0x1f, 0xd7, 0xdc, 0x4d, 0x8a, 0x98, 0xd0, 0x96, 0x67,
+ 0xf1, 0x63, 0x00, 0x6c, 0x4b, 0x3c, 0xc5, 0x6c, 0xae, 0xc4, 0x38, 0xfb,
+ 0x0c, 0x6d, 0x05, 0xd2, 0x04, 0xc4, 0x6d, 0x86, 0x7e, 0x58, 0x3c, 0xd1,
+ 0x7c, 0x62, 0x5c, 0xb5, 0xf2, 0x55, 0x0f, 0x0e, 0xa0, 0x94, 0x06, 0x86,
+ 0x7c, 0x65, 0x44, 0x4b, 0x08, 0x63, 0xc3, 0x6d, 0xbf, 0xb4, 0x47, 0x64,
+ 0xce, 0x01, 0x1d, 0x5b, 0x0c, 0x11, 0xe2, 0xec, 0x9e, 0xf2, 0x12, 0x8d,
+ 0x07, 0x48, 0x1f, 0x1d, 0x8c, 0xd2, 0xa5, 0xbe, 0xd5, 0x5c, 0x38, 0x0a,
+ 0xe2, 0x36, 0x73, 0xe3, 0x4b, 0x64, 0x76, 0x02, 0xb8, 0xdb, 0x8f, 0x2e,
+ 0xc8, 0x0b, 0x57, 0x83, 0x18, 0x9f, 0x30, 0xe9, 0xdb, 0xa2, 0xd1, 0x3a,
+ 0xe1, 0xbe, 0xb2, 0x27, 0xac, 0x73, 0xd2, 0xe4, 0x97, 0x4d, 0x65, 0xb2,
+ 0x46, 0xa0, 0xa8, 0xb7, 0x39, 0x89, 0xae, 0x4e, 0xae, 0xaf, 0x28, 0xce,
+ 0x4b, 0x0c, 0xc0, 0x03, 0x49, 0x8d, 0x8b, 0x0d, 0x03, 0x12, 0x24, 0xec,
+ 0xcc, 0xea, 0x21, 0x96, 0x41, 0x30, 0x7e, 0x99, 0x39, 0x6f, 0xfe, 0xa7,
+ 0xbe, 0xc7, 0xd5, 0x2f, 0x89, 0xd6, 0x9a, 0xd8, 0x88, 0x4e, 0x1d, 0x59,
+ 0x6d, 0x67, 0xc7, 0x66, 0x21, 0x71, 0x73, 0x63, 0x16, 0x73, 0x92, 0x49,
+ 0xde, 0x97, 0xec, 0x16, 0x2d, 0xbe, 0xd0, 0x66, 0x76, 0xf8, 0x10, 0x67,
+ 0x63, 0xe7, 0x45, 0x40, 0xe4, 0xca, 0xa7, 0x55, 0xfe, 0xf3, 0x14, 0x2c,
+ 0x8a, 0x1a, 0x7f, 0x8d, 0x7f, 0xca, 0xdc, 0x53, 0x2a, 0x00, 0xa3, 0xbd,
+ 0xad, 0xad, 0x00, 0xec, 0x70, 0x3c, 0x04, 0xa6, 0x2a, 0xda, 0x9c, 0x54,
+ 0xf5, 0xd0, 0x5b, 0xec, 0x35, 0x25, 0xf5, 0xb2, 0x44, 0x53, 0xa3, 0x37,
+ 0x41, 0x37, 0x26, 0xee, 0x98, 0x6f, 0x54, 0xec, 0x30, 0x8f, 0xf9, 0x9e,
+ 0xaa, 0x8c, 0x74, 0xd3, 0x1a, 0xcc, 0x85, 0x4b, 0x90, 0xb4, 0x7b, 0x6e,
+ 0xec, 0x80, 0x31, 0x8b, 0xff, 0xdb, 0x9b, 0x99, 0xc7, 0xbf, 0x77, 0xf6,
+ 0x7d, 0x8a, 0x18, 0x5c, 0x5f, 0x5c, 0x09, 0x85, 0xf9, 0xa2, 0x99, 0x77,
+ 0x84, 0x1e, 0xb1, 0x68, 0x2b, 0x5d, 0x1f, 0x72, 0x67, 0x6c, 0xf0, 0x01,
+ 0x0c, 0x8a, 0xa9, 0xf3, 0x55, 0xe6, 0x00, 0xd4, 0x40, 0x4f, 0x96, 0xf6,
+ 0x9d, 0x20, 0x02, 0x28, 0x5e, 0xaf, 0xde, 0x4b, 0xe7, 0x25, 0xbe, 0x66,
+ 0x17, 0x7c, 0x7f, 0xb9, 0x7a, 0x1d, 0xe9, 0x48, 0xea, 0xd8, 0x11, 0xef,
+ 0x57, 0xd2, 0x61, 0x4d, 0xa7, 0xcf, 0x26, 0x2d, 0xf2, 0x25, 0xba, 0xb0,
+ 0x90, 0xcc, 0xcc, 0xe1, 0x65, 0x9d, 0xc6, 0x2a, 0xa6, 0x6e, 0xb3, 0xc8,
+ 0x27, 0x18, 0xb2, 0x58, 0x12, 0x9b, 0x62, 0xf6, 0x85, 0x8d, 0x3c, 0x58,
+ 0xf7, 0xbc, 0x18, 0x4b, 0xfa, 0x8a, 0x08, 0x4e, 0x35, 0x16, 0xac, 0x9e,
+ 0x6d, 0xa5, 0xfe, 0xe5, 0xc5, 0xd5, 0xb5, 0x91, 0xf9, 0xf8, 0x59, 0xfa,
+ 0x41, 0xe3, 0xf6, 0x60, 0xbf, 0x14, 0xc1, 0x9f, 0x10, 0xc9, 0x46, 0x3d,
+ 0x7c, 0x3f, 0x0b, 0x42, 0x10, 0xc8, 0x91, 0xd0, 0x38, 0x3a, 0x50, 0x97,
+ 0x3a, 0xed, 0x8d, 0x73, 0x86, 0xf3, 0x31, 0xfc, 0x86, 0x3d, 0xe8, 0x24,
+ 0x68, 0x5a, 0x90, 0xc1, 0xac, 0x72, 0xbb, 0xbb, 0xed, 0x53, 0x06, 0xda,
+ 0xd0, 0x57, 0x27, 0x83, 0x6b, 0x9e, 0x39, 0xfe, 0xcd, 0x9b, 0x39, 0xd7,
+ 0x87, 0xca, 0x0f, 0x7d, 0x27, 0xaa, 0xa1, 0x0c, 0xcc, 0x40, 0x03, 0x6b,
+ 0x83, 0xc6, 0x37, 0x05, 0xee, 0xce, 0x8e, 0xed, 0x3a, 0xd9, 0x86, 0xc4,
+ 0x34, 0x85, 0x4e, 0xe8, 0x7e, 0xd3, 0x0f, 0x3a, 0xf2, 0x95, 0x0e, 0xa8,
+ 0x65, 0x7c, 0x1d, 0x6a, 0xf0, 0xeb, 0xbb, 0x7b, 0x76, 0x84, 0x05, 0x4a,
+ 0x2a, 0x19, 0xe0, 0x54, 0xdb, 0xe4, 0xe2, 0x0f, 0x7b, 0x4a, 0x2a, 0x24,
+ 0x2c, 0x98, 0x28, 0xf8, 0x39, 0x3b, 0xce, 0xbe, 0x94, 0xa8, 0x9f, 0x19,
+ 0x55, 0xc1, 0x99, 0x0a, 0xfe, 0x58, 0x53, 0x7e, 0x48, 0xdb, 0x68, 0x90,
+ 0xdc, 0x2e, 0x53, 0xfa, 0xd7, 0x98, 0x2d, 0x68, 0xd2, 0x16, 0x79, 0xed,
+ 0xae, 0x5c, 0x00, 0x65, 0x2b, 0xcd, 0x96, 0x09, 0xe9, 0x68, 0x71, 0x31,
+ 0xc3, 0x5e, 0x0f, 0xc0, 0x44, 0x0a, 0xae, 0x1f, 0xbb, 0xcf, 0x42, 0xb0,
+ 0xd4, 0xce, 0x37, 0x44, 0xfe, 0x9c, 0x9e, 0x9d, 0xd8, 0xa3, 0xe2, 0x3e,
+ 0x11, 0x74, 0x89, 0xad, 0xae, 0x8f, 0xad, 0xed, 0x8d, 0x98, 0xe8, 0x47,
+ 0x97, 0xd8, 0xb3, 0x9c, 0x74, 0xa6, 0xf2, 0xdf, 0xed, 0x68, 0x7c, 0x49,
+ 0xc8, 0x03, 0x0f, 0x62, 0x93, 0xca, 0x9d, 0xd3, 0x0c, 0x4e, 0x96, 0x7e,
+ 0x82, 0x7f, 0x75, 0x30, 0xcd, 0xbd, 0xe5, 0xbe, 0xb2, 0x2f, 0x97, 0xb0,
+ 0x12, 0xb0, 0xd0, 0x9b, 0x8f, 0xec, 0x09, 0x5d, 0x81, 0xf9, 0x4e, 0x43,
+ 0x18, 0xd6, 0x8c, 0x77, 0x59, 0x9a, 0xc5, 0x8c, 0x79, 0x84, 0x89, 0x3e,
+ 0x53, 0x63, 0xe1, 0xce, 0x50, 0x2c, 0x0c, 0x8e, 0x86, 0xa6, 0x81, 0x10,
+ 0x26, 0x09, 0xa3, 0x22, 0x07, 0x63, 0x65, 0xc8, 0x69, 0x67, 0x26, 0xd7,
+ 0xde, 0x8d, 0x01, 0xd3, 0xd6, 0x1a, 0xbc, 0xa8, 0xe6, 0xe6, 0x36, 0x1a,
+ 0xb0, 0xef, 0x31, 0x25, 0x1a, 0xb2, 0x31, 0xf2, 0xab, 0x36, 0x3b, 0xc9,
+ 0x4e, 0x16, 0xdc, 0x3b, 0x74, 0x1a, 0x60, 0x3c, 0x00, 0xe4, 0xbb, 0xab,
+ 0xfc, 0xef, 0xed, 0xdb, 0xa1, 0x26, 0x04, 0xde, 0xa3, 0x7c, 0xfd, 0xa8,
+ 0xe6, 0x94, 0x33, 0x9d, 0x24, 0x52, 0xf3, 0x24, 0x9b, 0x8d, 0x5c, 0x7b,
+ 0x1e, 0xb8, 0x52, 0xce, 0x37, 0x5e, 0x8a, 0xe9, 0x8b, 0xb6, 0x6f, 0xf6,
+ 0x68, 0x93, 0xef, 0xfb, 0x1c, 0x55, 0x66, 0xbf, 0x19, 0x37, 0xaa, 0x91,
+ 0xdf, 0x08, 0x08, 0xe3, 0x8d, 0xf8, 0x65, 0xb0, 0x15, 0x95, 0x87, 0xb8,
+ 0xb8, 0x9c, 0x4b, 0x0e, 0xaf, 0xf3, 0xa5, 0xcf, 0xc5, 0x93, 0x81, 0xc5,
+ 0xe7, 0x99, 0x05, 0x29, 0x72, 0x16, 0x82, 0x8a, 0xae, 0x58, 0xcd, 0x1a,
+ 0xca, 0x07, 0xe6, 0x38, 0x8a, 0x4d, 0x0a, 0xb0, 0x8f, 0xb1, 0x87, 0xc8,
+ 0x65, 0xc8, 0x66, 0x45, 0xd9, 0x55, 0x8f, 0x42, 0xae, 0x45, 0xc0, 0xe2,
+ 0x59, 0x90, 0xc7, 0xf8, 0x57, 0xa6, 0x69, 0x90, 0xef, 0x12, 0x2f, 0x92,
+ 0xbf, 0x92, 0x22, 0xd9, 0x37, 0xdd, 0x5a, 0x35, 0xa0, 0x1c, 0x67, 0xcb,
+ 0xd8, 0xb1, 0xe5, 0xf7, 0x5e, 0x89, 0x87, 0x4a, 0xdc, 0x20, 0x18, 0x59,
+ 0xcf, 0x10, 0xfc, 0xba, 0x11, 0x5e, 0xdc, 0xdf, 0x36, 0xbe, 0x4a, 0x4c,
+ 0x99, 0x95, 0x3a, 0x10, 0x37, 0x71, 0x16, 0xe1, 0x8f, 0x07, 0xef, 0xa2,
+ 0xf7, 0x6f, 0xf6, 0x31, 0xa1, 0x67, 0x9a, 0x14, 0x8b, 0x02, 0x93, 0x38,
+ 0x95, 0x86, 0x2f, 0xbe, 0x75, 0x06, 0xdb, 0xb1, 0xd9, 0x17, 0x0a, 0x8e,
+ 0x28, 0xcc, 0x4c, 0xec, 0x05, 0x38, 0x42, 0x2c, 0x7c, 0x9e, 0x6a, 0x0b,
+ 0x4c, 0xc5, 0xf1, 0x53, 0xb4, 0x2a, 0xd2, 0x5a, 0x3e, 0x6b, 0x26, 0x85,
+ 0xd7, 0x18, 0xd8, 0xfe, 0xae, 0x65, 0x60, 0xc5, 0xe3, 0x02, 0x9b, 0xab,
+ 0x64, 0x53, 0x34, 0x0b, 0x02, 0x37, 0x6a, 0x9f, 0x99, 0xe6, 0x31, 0xdf,
+ 0x7b, 0xd4, 0x61, 0xfd, 0xd7, 0x48, 0x3d, 0x27, 0x77, 0xa9, 0xf3, 0xde,
+ 0xbe, 0xeb, 0x55, 0x28, 0xa5, 0x33, 0x9a, 0xb4, 0xc4, 0x20, 0x0d, 0xc5,
+ 0x79, 0xf6, 0x85, 0x79, 0x16, 0xfd, 0x46, 0x69, 0xe6, 0xb4, 0x30, 0x6a,
+ 0x79, 0x43, 0x94, 0x5f, 0x35, 0x10, 0x54, 0x31, 0x63, 0x7d, 0xc7, 0xd9,
+ 0x7b, 0xe7, 0x95, 0x57, 0x75, 0xa7, 0x09, 0xf5, 0x36, 0x30, 0x84, 0x49,
+ 0x8b, 0xa2, 0xce, 0xb2, 0x8e, 0x9b, 0x85, 0x65, 0xf4, 0x65, 0x33, 0x0f,
+ 0x5a, 0x79, 0x60, 0xe2, 0x22, 0x88, 0xe8, 0x55, 0x67, 0xd2, 0x3f, 0x3e,
+ 0x8a, 0xda, 0x8a, 0x80, 0x88, 0xd6, 0x9d, 0x8f, 0x6c, 0xcb, 0x9d, 0xc1,
+ 0xbe, 0xd4, 0xd3, 0x2c, 0xfd, 0x7b, 0xe2, 0xe4, 0x82, 0x69, 0xfb, 0x29,
+ 0xe7, 0xf1, 0x1d, 0x61, 0x18, 0xdc, 0x7b, 0x98, 0x98, 0x22, 0x06, 0x4f,
+ 0xed, 0x03, 0xbb, 0x42, 0xb5, 0xdc, 0x3d, 0x8e, 0x73, 0x1f, 0x60, 0x54,
+ 0x0a, 0xdd, 0x27, 0xb5, 0xb4, 0xfa, 0x17, 0x7b, 0xa2, 0x73, 0xa9, 0x6e,
+ 0x8c, 0x92, 0x17, 0x37, 0x62, 0x46, 0x80, 0x8c, 0x4d, 0x36, 0xfd, 0x42,
+ 0xc4, 0x9e, 0x1c, 0xa5, 0x69, 0x41, 0x65, 0xda, 0x79, 0xe1, 0x5f, 0xef,
+ 0xd3, 0x4c, 0x12, 0xdd, 0xbd, 0xd7, 0x5f, 0xb4, 0xb8, 0x1f, 0x4b, 0x96,
+ 0x99, 0x27, 0x44, 0x4b, 0xce, 0xf3, 0x2f, 0xed, 0x4d, 0xb0, 0x08, 0xb4,
+ 0x5d, 0x8b, 0x7b, 0xdb, 0x75, 0x31, 0x4b, 0xf5, 0x2e, 0xb1, 0x0b, 0x25,
+ 0xe1, 0x5e, 0x07, 0x01, 0x64, 0xf9, 0x89, 0xf9, 0xfc, 0x2c, 0x47, 0x6e,
+ 0xea, 0x7c, 0x8f, 0x49, 0xea, 0x2d, 0xf5, 0xaa, 0xb0, 0xc6, 0x41, 0x16,
+ 0x5d, 0x3b, 0x65, 0xb2, 0xf6, 0xe9, 0x57, 0x42, 0x1b, 0x2a, 0x2f, 0x8d,
+ 0xb1, 0xda, 0xf6, 0xc6, 0xcb, 0x2d, 0x57, 0x59, 0x1d, 0x63, 0x54, 0x96,
+ 0xcb, 0xf8, 0x5b, 0x5f, 0x60, 0xca, 0x38, 0x05, 0x31, 0x32, 0x05, 0xa2,
+ 0xa6, 0x67, 0x2c, 0x9a, 0xa1, 0x7d, 0x6c, 0xa7, 0xc6, 0x74, 0xaf, 0x5d,
+ 0xf5, 0x29, 0x3a, 0x7d, 0xe3, 0x3c, 0xb8, 0x6b, 0x17, 0x18, 0xcf, 0x50,
+ 0x1b, 0x78, 0x64, 0x3f, 0x55, 0x19, 0xad, 0xe3, 0x5b, 0x0e, 0x66, 0xc9,
+ 0x4b, 0xa6, 0x8c, 0xf3, 0x9c, 0x51, 0xb7, 0x68, 0xfb, 0xbd, 0x67, 0x98,
+ 0x1c, 0x8e, 0x6f, 0x40, 0xaa, 0x8d, 0x2a, 0xca, 0x09, 0xcd, 0x34, 0xc6,
+ 0xd5, 0x3c, 0xfb, 0x97, 0x2f, 0x56, 0x3c, 0x2b, 0x42, 0xb3, 0x34, 0xa2,
+ 0xde, 0x79, 0xef, 0xa5, 0x7f, 0xcd, 0xd5, 0x1c, 0xd0, 0x32, 0x05, 0xb8,
+ 0x6a, 0x78, 0xd3, 0xa2, 0x75, 0x2c, 0x8f, 0xfe, 0x77, 0x75, 0x0c, 0x16,
+ 0x88, 0x27, 0x58, 0xfe, 0xbb, 0x3b, 0xdf, 0xcf, 0xdd, 0x5a, 0x07, 0xf6,
+ 0x0a, 0x16, 0x09, 0xc5, 0x09, 0x46, 0xb5, 0x76, 0x11, 0x36, 0x47, 0x88,
+ 0x76, 0xc7, 0x19, 0x81, 0xcf, 0x1c, 0xf4, 0x88, 0x65, 0x66, 0x39, 0x07,
+ 0x1b, 0x81, 0x82, 0x46, 0x30, 0x76, 0xa1, 0x27, 0x91, 0xe7, 0x8b, 0x07,
+ 0xca, 0xf1, 0xa1, 0x6e, 0x35, 0xae, 0x41, 0x79, 0xb3, 0x64, 0x93, 0xdb,
+ 0xac, 0xc8, 0x3a, 0xd8, 0x9c, 0xd7, 0x76, 0x2c, 0xf7, 0xa2, 0xb9, 0x91,
+ 0xda, 0x78, 0x0c, 0xb3, 0x65, 0x9b, 0xdc, 0xf4, 0x0f, 0xa0, 0x7a, 0xe9,
+ 0xfb, 0x22, 0xc7, 0xbf, 0x2a, 0x44, 0xc8, 0x7a, 0xdc, 0x92, 0x9a, 0x29,
+ 0x49, 0xe4, 0xce, 0x67, 0x44, 0xb5, 0xc1, 0x14, 0x27, 0x38, 0xa5, 0x9b,
+ 0x64, 0x74, 0xab, 0x57, 0x46, 0x06, 0xb1, 0xa9, 0xe7, 0xce, 0x5b, 0x7b,
+ 0x66, 0x6b, 0xc9, 0xa0, 0xb9, 0x3a, 0x69, 0x5a, 0x01, 0xf6, 0x51, 0xa6,
+ 0x9a, 0xab, 0xeb, 0xc1, 0xe5, 0x01, 0xce, 0x99, 0xe3, 0x86, 0x70, 0x21,
+ 0x8e, 0x07, 0xc9, 0xdf, 0xa4, 0xce, 0xac, 0xb4, 0x4f, 0xbf, 0x68, 0x79,
+ 0x7a, 0x20, 0x8e, 0xbd, 0x53, 0x42, 0x6a, 0x86, 0x73, 0x70, 0x5f, 0x62,
+ 0xa2, 0x59, 0x66, 0xea, 0xdf, 0x67, 0xff, 0x17, 0xce, 0x8c, 0xb8, 0x21,
+ 0xc6, 0x96, 0xed, 0xc3, 0x9f, 0x5b, 0x9b, 0xe6, 0x66, 0x99, 0xdd, 0x1a,
+ 0x7d, 0x51, 0x70, 0xf4, 0xf4, 0x80, 0xed, 0x0b, 0xaf, 0xf4, 0x6a, 0x38,
+ 0x7e, 0x50, 0x93, 0xf7, 0xd4, 0x15, 0x0f, 0x85, 0xb8, 0x1d, 0x25, 0xe6,
+ 0x09, 0xfc, 0x75, 0xe9, 0xec, 0xc1, 0xab, 0x2d, 0x23, 0x7e, 0x05, 0x92,
+ 0xe7, 0x36, 0x79, 0xb4, 0x54, 0xa7, 0x39, 0x16, 0x8b, 0x34, 0x43, 0x17,
+ 0x84, 0x7d, 0xc4, 0x0e, 0xb0, 0x5d, 0x13, 0x02, 0x4d, 0x75, 0xa3, 0xac,
+ 0xe2, 0x6a, 0xe9, 0x88, 0x98, 0x57, 0x4c, 0x3b, 0x03, 0x8c, 0x3a, 0xce,
+ 0x85, 0x5e, 0xd3, 0x4c, 0xbd, 0x6d, 0x0d, 0x17, 0x9a, 0xbe, 0xf4, 0xc3,
+ 0x0f, 0x2c, 0x47, 0x72, 0x05, 0x46, 0x92, 0xd0, 0x95, 0x69, 0xfe, 0x04,
+ 0x4c, 0x97, 0x55, 0x0f, 0xbc, 0xc2, 0x14, 0xef, 0x29, 0x12, 0xec, 0x4f,
+ 0xa9, 0xd8, 0x37, 0x74, 0x79, 0x42, 0xd1, 0xf3, 0x3c, 0x93, 0x98, 0x2d,
+ 0x26, 0x6f, 0x92, 0xeb, 0x93, 0xc1, 0xa6, 0xd9, 0x15, 0x06, 0x33, 0x38,
+ 0xfa, 0x70, 0xfd, 0xee, 0xe2, 0x6a, 0x10, 0x6d, 0x62, 0x6d, 0xfb, 0xf5,
+ 0xd5, 0xe9, 0xd7, 0x1f, 0xae, 0xe1, 0x9f, 0x3a, 0xd2, 0x9b, 0x38, 0x4b,
+ 0x41, 0x3a, 0x0d, 0xaa, 0x24, 0x03, 0x5a, 0x99, 0x6a, 0x8f, 0x26, 0xca,
+ 0x41, 0x41, 0x79, 0x9c, 0x17, 0x0a, 0x69, 0x82, 0xe9, 0x28, 0xf9, 0xcc,
+ 0x26, 0x13, 0xb0, 0x07, 0x1b, 0x73, 0xfc, 0x72, 0x6b, 0x39, 0xa7, 0x8d,
+ 0xa2, 0x7c, 0x4d, 0xdb, 0x89, 0xae, 0xdf, 0x1d, 0x9d, 0x7f, 0x3b, 0xd0,
+ 0x0e, 0x1e, 0xdf, 0x7f, 0xff, 0x7d, 0x33, 0xb8, 0x4b, 0x3a, 0xec, 0x4d,
+ 0xfc, 0xf0, 0xd0, 0x2f, 0x93, 0xcf, 0x3e, 0x1b, 0x9c, 0x9c, 0x44, 0x47,
+ 0x67, 0x83, 0x8b, 0xcf, 0x2c, 0x8e, 0xc3, 0xfa, 0xf6, 0x06, 0x28, 0x69,
+ 0xd3, 0xa4, 0x82, 0xbf, 0x7c, 0xf6, 0xd9, 0xff, 0x07, 0x20, 0xad, 0x4e,
+ 0xbd, 0x33, 0x97, 0x02, 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
diff --git a/src/tool_main.c b/src/tool_main.c
index 7d1e62b7..4803adbb 100644
--- a/src/tool_main.c
+++ b/src/tool_main.c
@@ -113,9 +113,9 @@ static void memory_tracking_init(void)
strcpy(fname, env);
curl_free(env);
curl_dbg_memdebug(fname);
- /* this weird stuff here is to make curl_free() get called
- before curl_memdebug() as otherwise memory tracking will
- log a free() without an alloc! */
+ /* this weird stuff here is to make curl_free() get called before
+ curl_gdb_memdebug() as otherwise memory tracking will log a free()
+ without an alloc! */
}
/* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
env = curlx_getenv("CURL_MEMLIMIT");
@@ -149,6 +149,7 @@ static CURLcode main_init(struct GlobalConfig *config)
config->showerror = -1; /* Will show errors */
config->errors = stderr; /* Default errors to stderr */
config->styled_output = TRUE; /* enable detection */
+ config->parallel_max = PARALLEL_DEFAULT;
/* Allocate the initial operate config */
config->first = config->last = malloc(sizeof(struct OperationConfig));
@@ -160,19 +161,9 @@ static CURLcode main_init(struct GlobalConfig *config)
result = get_libcurl_info();
if(!result) {
- /* Get a curl handle to use for all forthcoming curl transfers */
- config->easy = curl_easy_init();
- if(config->easy) {
- /* Initialise the config */
- config_init(config->first);
- config->first->easy = config->easy;
- config->first->global = config;
- }
- else {
- helpf(stderr, "error initializing curl easy handle\n");
- result = CURLE_FAILED_INIT;
- free(config->first);
- }
+ /* Initialise the config */
+ config_init(config->first);
+ config->first->global = config;
}
else {
helpf(stderr, "error retrieving curl library information\n");
@@ -214,9 +205,6 @@ static void free_globalconfig(struct GlobalConfig *config)
static void main_free(struct GlobalConfig *config)
{
/* Cleanup the easy handle */
- curl_easy_cleanup(config->easy);
- config->easy = NULL;
-
/* Main cleanup */
curl_global_cleanup();
convert_cleanup();
diff --git a/src/tool_main.h b/src/tool_main.h
index 86881881..a68287ec 100644
--- a/src/tool_main.h
+++ b/src/tool_main.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -28,6 +28,9 @@
#define RETRY_SLEEP_DEFAULT 1000L /* ms */
#define RETRY_SLEEP_MAX 600000L /* ms == 10 minutes */
+#define MAX_PARALLEL 300 /* conservative */
+#define PARALLEL_DEFAULT 50
+
#ifndef STDIN_FILENO
# define STDIN_FILENO fileno(stdin)
#endif
diff --git a/src/tool_metalink.c b/src/tool_metalink.c
index 28aa7170..0740407f 100644
--- a/src/tool_metalink.c
+++ b/src/tool_metalink.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -104,6 +104,7 @@ struct win32_crypto_hash {
#include "tool_paramhlp.h"
#include "tool_cfgable.h"
#include "tool_metalink.h"
+#include "tool_operate.h"
#include "tool_msgs.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -674,8 +675,9 @@ int metalink_check_hash(struct GlobalConfig *config,
return rv;
}
-static metalink_checksum *new_metalink_checksum_from_hex_digest
-(const metalink_digest_def *digest_def, const char *hex_digest)
+static metalink_checksum *
+checksum_from_hex_digest(const metalink_digest_def *digest_def,
+ const char *hex_digest)
{
metalink_checksum *chksum;
unsigned char *digest;
@@ -754,8 +756,8 @@ static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo)
if(curl_strequal(digest_alias->alias_name, (*p)->type) &&
check_hex_digest((*p)->hash, digest_alias->digest_def)) {
f->checksum =
- new_metalink_checksum_from_hex_digest(digest_alias->digest_def,
- (*p)->hash);
+ checksum_from_hex_digest(digest_alias->digest_def,
+ (*p)->hash);
break;
}
}
@@ -891,7 +893,8 @@ int parse_metalink(struct OperationConfig *config, struct OutStruct *outs,
size_t metalink_write_cb(void *buffer, size_t sz, size_t nmemb,
void *userdata)
{
- struct OutStruct *outs = userdata;
+ struct per_transfer *per = userdata;
+ struct OutStruct *outs = &per->outs;
struct OperationConfig *config = outs->config;
int rv;
diff --git a/src/tool_metalink.h b/src/tool_metalink.h
index 7ee2736a..1e367033 100644
--- a/src/tool_metalink.h
+++ b/src/tool_metalink.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -22,6 +22,7 @@
*
***************************************************************************/
#include "tool_setup.h"
+#include "tool_sdecls.h"
struct GlobalConfig;
struct OperationConfig;
diff --git a/src/tool_operate.c b/src/tool_operate.c
index bf9a9b8d..d2ad9642 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -29,6 +29,10 @@
# include <locale.h>
#endif
+#ifdef HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#endif
+
#ifdef __VMS
# include <fabdef.h>
#endif
@@ -75,6 +79,7 @@
#include "tool_vms.h"
#include "tool_help.h"
#include "tool_hugehelp.h"
+#include "tool_progress.h"
#include "memdebug.h" /* keep this as LAST include */
@@ -98,6 +103,11 @@ CURLcode curl_easy_perform_ev(CURL *easy);
"this situation and\nhow to fix it, please visit the web page mentioned " \
"above.\n"
+static CURLcode create_transfers(struct GlobalConfig *global,
+ struct OperationConfig *config,
+ CURLSH *share,
+ bool capath_from_env);
+
static bool is_fatal_error(CURLcode code)
{
switch(code) {
@@ -187,135 +197,474 @@ static curl_off_t VmsSpecialSize(const char *name,
#define BUFFER_SIZE (100*1024)
-static CURLcode operate_do(struct GlobalConfig *global,
- struct OperationConfig *config)
+struct per_transfer *transfers; /* first node */
+static struct per_transfer *transfersl; /* last node */
+
+static CURLcode add_transfer(struct per_transfer **per)
{
- char errorbuffer[CURL_ERROR_SIZE];
- struct ProgressData progressbar;
- struct getout *urlnode;
+ struct per_transfer *p;
+ p = calloc(sizeof(struct per_transfer), 1);
+ if(!p)
+ return CURLE_OUT_OF_MEMORY;
+ if(!transfers)
+ /* first entry */
+ transfersl = transfers = p;
+ else {
+ /* make the last node point to the new node */
+ transfersl->next = p;
+ /* make the new node point back to the formerly last node */
+ p->prev = transfersl;
+ /* move the last node pointer to the new entry */
+ transfersl = p;
+ }
+ *per = p;
+ all_xfers++; /* count total number of transfers added */
+ return CURLE_OK;
+}
- struct HdrCbData hdrcbdata;
- struct OutStruct heads;
+/* Remove the specified transfer from the list (and free it), return the next
+ in line */
+static struct per_transfer *del_transfer(struct per_transfer *per)
+{
+ struct per_transfer *n;
+ struct per_transfer *p;
+ DEBUGASSERT(transfers);
+ DEBUGASSERT(transfersl);
+ DEBUGASSERT(per);
- metalinkfile *mlfile_last = NULL;
+ n = per->next;
+ p = per->prev;
- CURL *curl = config->easy;
- char *httpgetfields = NULL;
+ if(p)
+ p->next = n;
+ else
+ transfers = n;
+ if(n)
+ n->prev = p;
+ else
+ transfersl = p;
+
+ free(per);
+
+ return n;
+}
+
+static CURLcode pre_transfer(struct GlobalConfig *global,
+ struct per_transfer *per)
+{
+ curl_off_t uploadfilesize = -1;
+ struct_stat fileinfo;
CURLcode result = CURLE_OK;
- unsigned long li;
- bool capath_from_env;
- /* Save the values of noprogress and isatty to restore them later on */
- bool orig_noprogress = global->noprogress;
- bool orig_isatty = global->isatty;
+ if(per->separator_err)
+ fprintf(global->errors, "%s\n", per->separator_err);
+ if(per->separator)
+ printf("%s\n", per->separator);
+
+ if(per->uploadfile && !stdin_upload(per->uploadfile)) {
+ /* VMS Note:
+ *
+ * Reading binary from files can be a problem... Only FIXED, VAR
+ * etc WITHOUT implied CC will work Others need a \n appended to a
+ * line
+ *
+ * - Stat gives a size but this is UNRELIABLE in VMS As a f.e. a
+ * fixed file with implied CC needs to have a byte added for every
+ * record processed, this can by derived from Filesize & recordsize
+ * for VARiable record files the records need to be counted! for
+ * every record add 1 for linefeed and subtract 2 for the record
+ * header for VARIABLE header files only the bare record data needs
+ * to be considered with one appended if implied CC
+ */
+#ifdef __VMS
+ /* Calculate the real upload size for VMS */
+ per->infd = -1;
+ if(stat(per->uploadfile, &fileinfo) == 0) {
+ fileinfo.st_size = VmsSpecialSize(uploadfile, &fileinfo);
+ switch(fileinfo.st_fab_rfm) {
+ case FAB$C_VAR:
+ case FAB$C_VFC:
+ case FAB$C_STMCR:
+ per->infd = open(per->uploadfile, O_RDONLY | O_BINARY);
+ break;
+ default:
+ per->infd = open(per->uploadfile, O_RDONLY | O_BINARY,
+ "rfm=stmlf", "ctx=stm");
+ }
+ }
+ if(per->infd == -1)
+#else
+ per->infd = open(per->uploadfile, O_RDONLY | O_BINARY);
+ if((per->infd == -1) || fstat(per->infd, &fileinfo))
+#endif
+ {
+ helpf(global->errors, "Can't open '%s'!\n", per->uploadfile);
+ if(per->infd != -1) {
+ close(per->infd);
+ per->infd = STDIN_FILENO;
+ }
+ return CURLE_READ_ERROR;
+ }
+ per->infdopen = TRUE;
- errorbuffer[0] = '\0';
+ /* we ignore file size for char/block devices, sockets, etc. */
+ if(S_ISREG(fileinfo.st_mode))
+ uploadfilesize = fileinfo.st_size;
- /* default headers output stream is stdout */
- memset(&hdrcbdata, 0, sizeof(struct HdrCbData));
- memset(&heads, 0, sizeof(struct OutStruct));
- heads.stream = stdout;
- heads.config = config;
+ if(uploadfilesize != -1)
+ my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
+ per->input.fd = per->infd;
+ }
+ show_error:
+ return result;
+}
- /*
- ** Beyond this point no return'ing from this function allowed.
- ** Jump to label 'quit_curl' in order to abandon this function
- ** from outside of nested loops further down below.
- */
+/*
+ * Call this after a transfer has completed.
+ */
+static CURLcode post_transfer(struct GlobalConfig *global,
+ CURLSH *share,
+ struct per_transfer *per,
+ CURLcode result,
+ bool *retryp)
+{
+ struct OutStruct *outs = &per->outs;
+ CURL *curl = per->curl;
+ struct OperationConfig *config = per->config;
- /* Check we have a url */
- if(!config->url_list || !config->url_list->url) {
- helpf(global->errors, "no URL specified!\n");
- result = CURLE_FAILED_INIT;
- goto quit_curl;
+ *retryp = FALSE;
+
+ if(per->infdopen)
+ close(per->infd);
+
+#ifdef __VMS
+ if(is_vms_shell()) {
+ /* VMS DCL shell behavior */
+ if(!global->showerror)
+ vms_show = VMSSTS_HIDE;
}
+ else
+#endif
+ if(config->synthetic_error) {
+ ;
+ }
+ else if(result && global->showerror) {
+ fprintf(global->errors, "curl: (%d) %s\n", result,
+ (per->errorbuffer[0]) ? per->errorbuffer :
+ curl_easy_strerror(result));
+ if(result == CURLE_PEER_FAILED_VERIFICATION)
+ fputs(CURL_CA_CERT_ERRORMSG, global->errors);
+ }
- /* On WIN32 we can't set the path to curl-ca-bundle.crt
- * at compile time. So we look here for the file in two ways:
- * 1: look at the environment variable CURL_CA_BUNDLE for a path
- * 2: if #1 isn't found, use the windows API function SearchPath()
- * to find it along the app's path (includes app's dir and CWD)
- *
- * We support the environment variable thing for non-Windows platforms
- * too. Just for the sake of it.
- */
- capath_from_env = false;
- if(!config->cacert &&
- !config->capath &&
- !config->insecure_ok) {
- struct curl_tlssessioninfo *tls_backend_info = NULL;
+ /* Set file extended attributes */
+ if(!result && config->xattr && outs->fopened && outs->stream) {
+ int rc = fwrite_xattr(curl, fileno(outs->stream));
+ if(rc)
+ warnf(config->global, "Error setting extended attributes: %s\n",
+ strerror(errno));
+ }
- /* With the addition of CAINFO support for Schannel, this search could find
- * a certificate bundle that was previously ignored. To maintain backward
- * compatibility, only perform this search if not using Schannel.
- */
- result = curl_easy_getinfo(config->easy,
- CURLINFO_TLS_SSL_PTR,
- &tls_backend_info);
- if(result) {
- goto quit_curl;
+ if(!result && !outs->stream && !outs->bytes) {
+ /* we have received no data despite the transfer was successful
+ ==> force cration of an empty output file (if an output file
+ was specified) */
+ long cond_unmet = 0L;
+ /* do not create (or even overwrite) the file in case we get no
+ data because of unmet condition */
+ curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &cond_unmet);
+ if(!cond_unmet && !tool_create_output_file(outs))
+ result = CURLE_WRITE_ERROR;
+ }
+
+ if(!outs->s_isreg && outs->stream) {
+ /* Dump standard stream buffered data */
+ int rc = fflush(outs->stream);
+ if(!result && rc) {
+ /* something went wrong in the writing process */
+ result = CURLE_WRITE_ERROR;
+ fprintf(global->errors, "(%d) Failed writing body\n", result);
}
+ }
- /* Set the CA cert locations specified in the environment. For Windows if
- * no environment-specified filename is found then check for CA bundle
- * default filename curl-ca-bundle.crt in the user's PATH.
- *
- * If Schannel is the selected SSL backend then these locations are
- * ignored. We allow setting CA location for schannel only when explicitly
- * specified by the user via CURLOPT_CAINFO / --cacert.
- */
- if(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
- char *env;
- env = curlx_getenv("CURL_CA_BUNDLE");
- if(env) {
- config->cacert = strdup(env);
- if(!config->cacert) {
- curl_free(env);
- helpf(global->errors, "out of memory\n");
- result = CURLE_OUT_OF_MEMORY;
- goto quit_curl;
+#ifdef USE_METALINK
+ if(per->metalink && !per->metalink_next_res)
+ fprintf(global->errors, "Metalink: fetching (%s) from (%s) OK\n",
+ per->mlfile->filename, per->this_url);
+
+ if(!per->metalink && config->use_metalink && result == CURLE_OK) {
+ int rv = parse_metalink(config, outs, per->this_url);
+ if(!rv) {
+ fprintf(config->global->errors, "Metalink: parsing (%s) OK\n",
+ per->this_url);
+ }
+ else if(rv == -1)
+ fprintf(config->global->errors, "Metalink: parsing (%s) FAILED\n",
+ per->this_url);
+ result = create_transfers(global, config, share, FALSE);
+ }
+ else if(per->metalink && result == CURLE_OK && !per->metalink_next_res) {
+ int rv;
+ (void)fflush(outs->stream);
+ rv = metalink_check_hash(global, per->mlfile, outs->filename);
+ if(!rv)
+ per->metalink_next_res = 1;
+ }
+#else
+ (void)share;
+#endif /* USE_METALINK */
+
+#ifdef USE_METALINK
+ if(outs->metalink_parser)
+ metalink_parser_context_delete(outs->metalink_parser);
+#endif /* USE_METALINK */
+
+ if(outs->is_cd_filename && outs->stream && !global->mute &&
+ outs->filename)
+ printf("curl: Saved to filename '%s'\n", outs->filename);
+
+ /* if retry-max-time is non-zero, make sure we haven't exceeded the
+ time */
+ if(per->retry_numretries &&
+ (!config->retry_maxtime ||
+ (tvdiff(tvnow(), per->retrystart) <
+ config->retry_maxtime*1000L)) ) {
+ enum {
+ RETRY_NO,
+ RETRY_TIMEOUT,
+ RETRY_CONNREFUSED,
+ RETRY_HTTP,
+ RETRY_FTP,
+ RETRY_LAST /* not used */
+ } retry = RETRY_NO;
+ long response;
+ if((CURLE_OPERATION_TIMEDOUT == result) ||
+ (CURLE_COULDNT_RESOLVE_HOST == result) ||
+ (CURLE_COULDNT_RESOLVE_PROXY == result) ||
+ (CURLE_FTP_ACCEPT_TIMEOUT == result))
+ /* retry timeout always */
+ retry = RETRY_TIMEOUT;
+ else if(config->retry_connrefused &&
+ (CURLE_COULDNT_CONNECT == result)) {
+ long oserrno;
+ curl_easy_getinfo(curl, CURLINFO_OS_ERRNO, &oserrno);
+ if(ECONNREFUSED == oserrno)
+ retry = RETRY_CONNREFUSED;
+ }
+ else if((CURLE_OK == result) ||
+ (config->failonerror &&
+ (CURLE_HTTP_RETURNED_ERROR == result))) {
+ /* If it returned OK. _or_ failonerror was enabled and it
+ returned due to such an error, check for HTTP transient
+ errors to retry on. */
+ long protocol;
+ curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
+ if((protocol == CURLPROTO_HTTP) || (protocol == CURLPROTO_HTTPS)) {
+ /* This was HTTP(S) */
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+
+ switch(response) {
+ case 500: /* Internal Server Error */
+ case 502: /* Bad Gateway */
+ case 503: /* Service Unavailable */
+ case 504: /* Gateway Timeout */
+ retry = RETRY_HTTP;
+ /*
+ * At this point, we have already written data to the output
+ * file (or terminal). If we write to a file, we must rewind
+ * or close/re-open the file so that the next attempt starts
+ * over from the beginning.
+ *
+ * TODO: similar action for the upload case. We might need
+ * to start over reading from a previous point if we have
+ * uploaded something when this was returned.
+ */
+ break;
}
}
- else {
- env = curlx_getenv("SSL_CERT_DIR");
- if(env) {
- config->capath = strdup(env);
- if(!config->capath) {
- curl_free(env);
- helpf(global->errors, "out of memory\n");
- result = CURLE_OUT_OF_MEMORY;
- goto quit_curl;
- }
- capath_from_env = true;
- }
- else {
- env = curlx_getenv("SSL_CERT_FILE");
- if(env) {
- config->cacert = strdup(env);
- if(!config->cacert) {
- curl_free(env);
- helpf(global->errors, "out of memory\n");
- result = CURLE_OUT_OF_MEMORY;
- goto quit_curl;
- }
- }
+ } /* if CURLE_OK */
+ else if(result) {
+ long protocol;
+
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+ curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
+
+ if((protocol == CURLPROTO_FTP || protocol == CURLPROTO_FTPS) &&
+ response / 100 == 4)
+ /*
+ * This is typically when the FTP server only allows a certain
+ * amount of users and we are not one of them. All 4xx codes
+ * are transient.
+ */
+ retry = RETRY_FTP;
+ }
+
+ if(retry) {
+ long sleeptime = 0;
+ curl_off_t retry_after = 0;
+ static const char * const m[]={
+ NULL,
+ "timeout",
+ "connection refused",
+ "HTTP error",
+ "FTP error"
+ };
+
+ sleeptime = per->retry_sleep;
+ if(RETRY_HTTP == retry) {
+ curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &retry_after);
+ if(retry_after) {
+ /* store in a 'long', make sure it doesn't overflow */
+ if(retry_after > LONG_MAX/1000)
+ sleeptime = LONG_MAX;
+ else
+ sleeptime = (long)retry_after * 1000; /* milliseconds */
}
}
-
- if(env)
- curl_free(env);
-#ifdef WIN32
- else {
- result = FindWin32CACert(config, tls_backend_info->backend,
- "curl-ca-bundle.crt");
- if(result)
- goto quit_curl;
+ warnf(config->global, "Transient problem: %s "
+ "Will retry in %ld seconds. "
+ "%ld retries left.\n",
+ m[retry], per->retry_sleep/1000L, per->retry_numretries);
+
+ per->retry_numretries--;
+ tool_go_sleep(sleeptime);
+ if(!config->retry_delay) {
+ per->retry_sleep *= 2;
+ if(per->retry_sleep > RETRY_SLEEP_MAX)
+ per->retry_sleep = RETRY_SLEEP_MAX;
}
+ if(outs->bytes && outs->filename && outs->stream) {
+ int rc;
+ /* We have written data to a output file, we truncate file
+ */
+ if(!global->mute)
+ fprintf(global->errors, "Throwing away %"
+ CURL_FORMAT_CURL_OFF_T " bytes\n",
+ outs->bytes);
+ fflush(outs->stream);
+ /* truncate file at the position where we started appending */
+#ifdef HAVE_FTRUNCATE
+ if(ftruncate(fileno(outs->stream), outs->init)) {
+ /* when truncate fails, we can't just append as then we'll
+ create something strange, bail out */
+ if(!global->mute)
+ fprintf(global->errors,
+ "failed to truncate, exiting\n");
+ return CURLE_WRITE_ERROR;
+ }
+ /* now seek to the end of the file, the position where we
+ just truncated the file in a large file-safe way */
+ rc = fseek(outs->stream, 0, SEEK_END);
+#else
+ /* ftruncate is not available, so just reposition the file
+ to the location we would have truncated it. This won't
+ work properly with large files on 32-bit systems, but
+ most of those will have ftruncate. */
+ rc = fseek(outs->stream, (long)outs->init, SEEK_SET);
#endif
+ if(rc) {
+ if(!global->mute)
+ fprintf(global->errors,
+ "failed seeking to end of file, exiting\n");
+ return CURLE_WRITE_ERROR;
+ }
+ outs->bytes = 0; /* clear for next round */
+ }
+ *retryp = TRUE; /* curl_easy_perform loop */
+ return CURLE_OK;
+ }
+ } /* if retry_numretries */
+ else if(per->metalink) {
+ /* Metalink: Decide to try the next resource or not. Try the next resource
+ if download was not successful. */
+ long response;
+ if(CURLE_OK == result) {
+ /* TODO We want to try next resource when download was
+ not successful. How to know that? */
+ char *effective_url = NULL;
+ curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
+ if(effective_url &&
+ curl_strnequal(effective_url, "http", 4)) {
+ /* This was HTTP(S) */
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+ if(response != 200 && response != 206) {
+ per->metalink_next_res = 1;
+ fprintf(global->errors,
+ "Metalink: fetching (%s) from (%s) FAILED "
+ "(HTTP status code %ld)\n",
+ per->mlfile->filename, per->this_url, response);
+ }
+ }
+ }
+ else {
+ per->metalink_next_res = 1;
+ fprintf(global->errors,
+ "Metalink: fetching (%s) from (%s) FAILED (%s)\n",
+ per->mlfile->filename, per->this_url,
+ curl_easy_strerror(result));
}
}
+ if((global->progressmode == CURL_PROGRESS_BAR) &&
+ per->progressbar.calls)
+ /* if the custom progress bar has been displayed, we output a
+ newline here */
+ fputs("\n", per->progressbar.out);
+
+ if(config->writeout)
+ ourWriteOut(per->curl, &per->outs, config->writeout);
+
+ /* Close the outs file */
+ if(outs->fopened && outs->stream) {
+ int rc = fclose(outs->stream);
+ if(!result && rc) {
+ /* something went wrong in the writing process */
+ result = CURLE_WRITE_ERROR;
+ fprintf(global->errors, "(%d) Failed writing body\n", result);
+ }
+ }
+
+ /* File time can only be set _after_ the file has been closed */
+ if(!result && config->remote_time && outs->s_isreg && outs->filename) {
+ /* Ask libcurl if we got a remote file time */
+ curl_off_t filetime = -1;
+ curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
+ setfiletime(filetime, outs->filename, config->global->errors);
+ }
+
+ /* Close function-local opened file descriptors */
+ if(per->heads.fopened && per->heads.stream)
+ fclose(per->heads.stream);
+
+ if(per->heads.alloc_filename)
+ Curl_safefree(per->heads.filename);
+
+ curl_easy_cleanup(per->curl);
+ if(outs->alloc_filename)
+ free(outs->filename);
+ free(per->this_url);
+ free(per->separator_err);
+ free(per->separator);
+ free(per->outfile);
+ free(per->uploadfile);
+
+ return CURLE_OK;
+}
+
+/* go through the list of URLs and configs and add transfers */
+
+static CURLcode create_transfers(struct GlobalConfig *global,
+ struct OperationConfig *config,
+ CURLSH *share,
+ bool capath_from_env)
+{
+ CURLcode result = CURLE_OK;
+ struct getout *urlnode;
+ metalinkfile *mlfile_last = NULL;
+ bool orig_noprogress = global->noprogress;
+ bool orig_isatty = global->isatty;
+ char *httpgetfields = NULL;
+
if(config->postfields) {
if(config->use_httpget) {
/* Use the postfields data for a http get */
@@ -341,44 +690,14 @@ static CURLcode operate_do(struct GlobalConfig *global,
}
}
- /* Single header file for all URLs */
- if(config->headerfile) {
- /* open file for output: */
- if(strcmp(config->headerfile, "-")) {
- FILE *newfile = fopen(config->headerfile, "wb");
- if(!newfile) {
- warnf(config->global, "Failed to open %s\n", config->headerfile);
- result = CURLE_WRITE_ERROR;
- goto quit_curl;
- }
- else {
- heads.filename = config->headerfile;
- heads.s_isreg = TRUE;
- heads.fopened = TRUE;
- heads.stream = newfile;
- }
- }
- else {
- /* always use binary mode for protocol header output */
- set_binmode(heads.stream);
- }
- }
-
- /*
- ** Nested loops start here.
- */
-
- /* loop through the list of given URLs */
-
for(urlnode = config->url_list; urlnode; urlnode = urlnode->next) {
-
+ unsigned long li;
unsigned long up; /* upload file counter within a single upload glob */
char *infiles; /* might be a glob pattern */
char *outfiles;
unsigned long infilenum;
URLGlob *inglob;
-
- int metalink = 0; /* nonzero for metalink download. */
+ bool metalink = FALSE; /* metalink download? */
metalinkfile *mlfile;
metalink_resource *mlres;
@@ -461,8 +780,6 @@ static CURLcode operate_do(struct GlobalConfig *global,
result = CURLE_OUT_OF_MEMORY;
}
}
- else
- uploadfile = NULL;
if(!uploadfile)
break;
}
@@ -490,65 +807,102 @@ static CURLcode operate_do(struct GlobalConfig *global,
/* Here's looping around each globbed URL */
for(li = 0 ; li < urlnum; li++) {
+ struct per_transfer *per;
+ struct OutStruct *outs;
+ struct InStruct *input;
+ struct OutStruct *heads;
+ struct HdrCbData *hdrcbdata = NULL;
+ CURL *curl = curl_easy_init();
+
+ result = add_transfer(&per);
+ if(result || !curl) {
+ free(uploadfile);
+ curl_easy_cleanup(curl);
+ result = CURLE_OUT_OF_MEMORY;
+ goto show_error;
+ }
+ per->config = config;
+ per->curl = curl;
+ per->uploadfile = uploadfile;
+
+ /* default headers output stream is stdout */
+ heads = &per->heads;
+ heads->stream = stdout;
+ heads->config = config;
+
+ /* Single header file for all URLs */
+ if(config->headerfile) {
+ /* open file for output: */
+ if(strcmp(config->headerfile, "-")) {
+ FILE *newfile = fopen(config->headerfile, "wb");
+ if(!newfile) {
+ warnf(config->global, "Failed to open %s\n", config->headerfile);
+ result = CURLE_WRITE_ERROR;
+ goto quit_curl;
+ }
+ else {
+ heads->filename = config->headerfile;
+ heads->s_isreg = TRUE;
+ heads->fopened = TRUE;
+ heads->stream = newfile;
+ }
+ }
+ else {
+ /* always use binary mode for protocol header output */
+ set_binmode(heads->stream);
+ }
+ }
+
- int infd;
- bool infdopen;
- char *outfile;
- struct OutStruct outs;
- struct InStruct input;
- struct timeval retrystart;
- curl_off_t uploadfilesize;
- long retry_numretries;
- long retry_sleep_default;
- long retry_sleep;
- char *this_url = NULL;
- int metalink_next_res = 0;
-
- outfile = NULL;
- infdopen = FALSE;
- infd = STDIN_FILENO;
- uploadfilesize = -1; /* -1 means unknown */
+ hdrcbdata = &per->hdrcbdata;
+
+ outs = &per->outs;
+ input = &per->input;
+
+ per->outfile = NULL;
+ per->infdopen = FALSE;
+ per->infd = STDIN_FILENO;
/* default output stream is stdout */
- memset(&outs, 0, sizeof(struct OutStruct));
- outs.stream = stdout;
- outs.config = config;
+ outs->stream = stdout;
+ outs->config = config;
if(metalink) {
/* For Metalink download, use name in Metalink file as
filename. */
- outfile = strdup(mlfile->filename);
- if(!outfile) {
+ per->outfile = strdup(mlfile->filename);
+ if(!per->outfile) {
result = CURLE_OUT_OF_MEMORY;
goto show_error;
}
- this_url = strdup(mlres->url);
- if(!this_url) {
+ per->this_url = strdup(mlres->url);
+ if(!per->this_url) {
result = CURLE_OUT_OF_MEMORY;
goto show_error;
}
+ per->mlfile = mlfile;
}
else {
if(urls) {
- result = glob_next_url(&this_url, urls);
+ result = glob_next_url(&per->this_url, urls);
if(result)
goto show_error;
}
else if(!li) {
- this_url = strdup(urlnode->url);
- if(!this_url) {
+ per->this_url = strdup(urlnode->url);
+ if(!per->this_url) {
result = CURLE_OUT_OF_MEMORY;
goto show_error;
}
}
else
- this_url = NULL;
- if(!this_url)
+ per->this_url = NULL;
+ if(!per->this_url)
break;
if(outfiles) {
- outfile = strdup(outfiles);
- if(!outfile) {
+ per->outfile = strdup(outfiles);
+ if(!per->outfile) {
result = CURLE_OUT_OF_MEMORY;
goto show_error;
}
@@ -556,7 +910,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
}
if(((urlnode->flags&GETOUT_USEREMOTE) ||
- (outfile && strcmp("-", outfile))) &&
+ (per->outfile && strcmp("-", per->outfile))) &&
(metalink || !config->use_metalink)) {
/*
@@ -564,12 +918,12 @@ static CURLcode operate_do(struct GlobalConfig *global,
* decided we want to use the remote file name.
*/
- if(!outfile) {
+ if(!per->outfile) {
/* extract the file name from the URL */
- result = get_url_file_name(&outfile, this_url);
+ result = get_url_file_name(&per->outfile, per->this_url);
if(result)
goto show_error;
- if(!*outfile && !config->content_disposition) {
+ if(!*per->outfile && !config->content_disposition) {
helpf(global->errors, "Remote file name has no length!\n");
result = CURLE_WRITE_ERROR;
goto quit_urls;
@@ -577,8 +931,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
}
else if(urls) {
/* fill '#1' ... '#9' terms from URL pattern */
- char *storefile = outfile;
- result = glob_match_url(&outfile, storefile, urls);
+ char *storefile = per->outfile;
+ result = glob_match_url(&per->outfile, storefile, urls);
Curl_safefree(storefile);
if(result) {
/* bad globbing */
@@ -591,7 +945,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
file output call */
if(config->create_dirs || metalink) {
- result = create_dir_hierarchy(outfile, global->errors);
+ result = create_dir_hierarchy(per->outfile, global->errors);
/* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
if(result == CURLE_WRITE_ERROR)
goto quit_urls;
@@ -603,7 +957,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
if((urlnode->flags & GETOUT_USEREMOTE)
&& config->content_disposition) {
/* Our header callback MIGHT set the filename */
- DEBUGASSERT(!outs.filename);
+ DEBUGASSERT(!outs->filename);
}
if(config->resume_from_current) {
@@ -611,7 +965,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
of the file as it is now and open it for append instead */
struct_stat fileinfo;
/* VMS -- Danger, the filesize is only valid for stream files */
- if(0 == stat(outfile, &fileinfo))
+ if(0 == stat(per->outfile, &fileinfo))
/* set offset to current file size: */
config->resume_from = fileinfo.st_size;
else
@@ -627,87 +981,36 @@ static CURLcode operate_do(struct GlobalConfig *global,
"ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
#else
/* open file for output: */
- FILE *file = fopen(outfile, config->resume_from?"ab":"wb");
+ FILE *file = fopen(per->outfile, config->resume_from?"ab":"wb");
#endif
if(!file) {
- helpf(global->errors, "Can't open '%s'!\n", outfile);
+ helpf(global->errors, "Can't open '%s'!\n", per->outfile);
result = CURLE_WRITE_ERROR;
goto quit_urls;
}
- outs.fopened = TRUE;
- outs.stream = file;
- outs.init = config->resume_from;
+ outs->fopened = TRUE;
+ outs->stream = file;
+ outs->init = config->resume_from;
}
else {
- outs.stream = NULL; /* open when needed */
+ outs->stream = NULL; /* open when needed */
}
- outs.filename = outfile;
- outs.s_isreg = TRUE;
+ outs->filename = per->outfile;
+ outs->s_isreg = TRUE;
}
- if(uploadfile && !stdin_upload(uploadfile)) {
+ if(per->uploadfile && !stdin_upload(per->uploadfile)) {
/*
* We have specified a file to upload and it isn't "-".
*/
- struct_stat fileinfo;
-
- this_url = add_file_name_to_url(curl, this_url, uploadfile);
- if(!this_url) {
+ char *nurl = add_file_name_to_url(per->this_url, per->uploadfile);
+ if(!nurl) {
result = CURLE_OUT_OF_MEMORY;
goto show_error;
}
- /* VMS Note:
- *
- * Reading binary from files can be a problem... Only FIXED, VAR
- * etc WITHOUT implied CC will work Others need a \n appended to a
- * line
- *
- * - Stat gives a size but this is UNRELIABLE in VMS As a f.e. a
- * fixed file with implied CC needs to have a byte added for every
- * record processed, this can by derived from Filesize & recordsize
- * for VARiable record files the records need to be counted! for
- * every record add 1 for linefeed and subtract 2 for the record
- * header for VARIABLE header files only the bare record data needs
- * to be considered with one appended if implied CC
- */
-#ifdef __VMS
- /* Calculate the real upload size for VMS */
- infd = -1;
- if(stat(uploadfile, &fileinfo) == 0) {
- fileinfo.st_size = VmsSpecialSize(uploadfile, &fileinfo);
- switch(fileinfo.st_fab_rfm) {
- case FAB$C_VAR:
- case FAB$C_VFC:
- case FAB$C_STMCR:
- infd = open(uploadfile, O_RDONLY | O_BINARY);
- break;
- default:
- infd = open(uploadfile, O_RDONLY | O_BINARY,
- "rfm=stmlf", "ctx=stm");
- }
- }
- if(infd == -1)
-#else
- infd = open(uploadfile, O_RDONLY | O_BINARY);
- if((infd == -1) || fstat(infd, &fileinfo))
-#endif
- {
- helpf(global->errors, "Can't open '%s'!\n", uploadfile);
- if(infd != -1) {
- close(infd);
- infd = STDIN_FILENO;
- }
- result = CURLE_READ_ERROR;
- goto quit_urls;
- }
- infdopen = TRUE;
-
- /* we ignore file size for char/block devices, sockets, etc. */
- if(S_ISREG(fileinfo.st_mode))
- uploadfilesize = fileinfo.st_size;
-
+ per->this_url = nurl;
}
- else if(uploadfile && stdin_upload(uploadfile)) {
+ else if(per->uploadfile && stdin_upload(per->uploadfile)) {
/* count to see if there are more than one auth bit set
in the authtype field */
int authbits = 0;
@@ -733,22 +1036,22 @@ static CURLcode operate_do(struct GlobalConfig *global,
" file or a fixed auth type instead!\n");
}
- DEBUGASSERT(infdopen == FALSE);
- DEBUGASSERT(infd == STDIN_FILENO);
+ DEBUGASSERT(per->infdopen == FALSE);
+ DEBUGASSERT(per->infd == STDIN_FILENO);
set_binmode(stdin);
- if(!strcmp(uploadfile, ".")) {
- if(curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
+ if(!strcmp(per->uploadfile, ".")) {
+ if(curlx_nonblock((curl_socket_t)per->infd, TRUE) < 0)
warnf(config->global,
- "fcntl failed on fd=%d: %s\n", infd, strerror(errno));
+ "fcntl failed on fd=%d: %s\n", per->infd, strerror(errno));
}
}
- if(uploadfile && config->resume_from_current)
+ if(per->uploadfile && config->resume_from_current)
config->resume_from = -1; /* -1 will then force get-it-yourself */
- if(output_expected(this_url, uploadfile) && outs.stream &&
- isatty(fileno(outs.stream)))
+ if(output_expected(per->this_url, per->uploadfile) && outs->stream &&
+ isatty(fileno(outs->stream)))
/* we send the output to a tty, therefore we switch off the progress
meter */
global->noprogress = global->isatty = TRUE;
@@ -760,20 +1063,22 @@ static CURLcode operate_do(struct GlobalConfig *global,
}
if(urlnum > 1 && !global->mute) {
- fprintf(global->errors, "\n[%lu/%lu]: %s --> %s\n",
- li + 1, urlnum, this_url, outfile ? outfile : "<stdout>");
+ per->separator_err =
+ aprintf("\n[%lu/%lu]: %s --> %s",
+ li + 1, urlnum, per->this_url,
+ per->outfile ? per->outfile : "<stdout>");
if(separator)
- printf("%s%s\n", CURLseparator, this_url);
+ per->separator = aprintf("%s%s", CURLseparator, per->this_url);
}
if(httpgetfields) {
char *urlbuffer;
/* Find out whether the url contains a file name */
- const char *pc = strstr(this_url, "://");
+ const char *pc = strstr(per->this_url, "://");
char sep = '?';
if(pc)
pc += 3;
else
- pc = this_url;
+ pc = per->this_url;
pc = strrchr(pc, '/'); /* check for a slash */
@@ -789,33 +1094,41 @@ static CURLcode operate_do(struct GlobalConfig *global,
* Then append ? followed by the get fields to the url.
*/
if(pc)
- urlbuffer = aprintf("%s%c%s", this_url, sep, httpgetfields);
+ urlbuffer = aprintf("%s%c%s", per->this_url, sep, httpgetfields);
else
/* Append / before the ? to create a well-formed url
if the url contains a hostname only
*/
- urlbuffer = aprintf("%s/?%s", this_url, httpgetfields);
+ urlbuffer = aprintf("%s/?%s", per->this_url, httpgetfields);
if(!urlbuffer) {
result = CURLE_OUT_OF_MEMORY;
goto show_error;
}
- Curl_safefree(this_url); /* free previous URL */
- this_url = urlbuffer; /* use our new URL instead! */
+ Curl_safefree(per->this_url); /* free previous URL */
+ per->this_url = urlbuffer; /* use our new URL instead! */
}
if(!global->errors)
global->errors = stderr;
- if((!outfile || !strcmp(outfile, "-")) && !config->use_ascii) {
+ if((!per->outfile || !strcmp(per->outfile, "-")) &&
+ !config->use_ascii) {
/* We get the output to stdout and we have not got the ASCII/text
flag, then set stdout to be binary */
set_binmode(stdout);
}
/* explicitly passed to stdout means okaying binary gunk */
- config->terminal_binary_ok = (outfile && !strcmp(outfile, "-"));
+ config->terminal_binary_ok =
+ (per->outfile && !strcmp(per->outfile, "-"));
+
+ /* avoid having this setopt added to the --libcurl source
+ output */
+ result = curl_easy_setopt(curl, CURLOPT_SHARE, share);
+ if(result)
+ goto show_error;
if(!config->tcp_nodelay)
my_setopt(curl, CURLOPT_TCP_NODELAY, 0L);
@@ -824,8 +1137,8 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L);
/* where to store */
- my_setopt(curl, CURLOPT_WRITEDATA, &outs);
- my_setopt(curl, CURLOPT_INTERLEAVEDATA, &outs);
+ my_setopt(curl, CURLOPT_WRITEDATA, per);
+ my_setopt(curl, CURLOPT_INTERLEAVEDATA, per);
if(metalink || !config->use_metalink)
/* what call to write */
@@ -838,8 +1151,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
#endif /* USE_METALINK */
/* for uploads */
- input.fd = infd;
- input.config = config;
+ input->config = config;
/* Note that if CURLOPT_READFUNCTION is fread (the default), then
* lib/telnet.c will Curl_poll() on the input file descriptor
* rather then calling the READFUNCTION at regular intervals.
@@ -847,13 +1159,13 @@ static CURLcode operate_do(struct GlobalConfig *global,
* behaviour, by omitting to set the READFUNCTION & READDATA options,
* have not been determined.
*/
- my_setopt(curl, CURLOPT_READDATA, &input);
+ my_setopt(curl, CURLOPT_READDATA, input);
/* what call to read */
my_setopt(curl, CURLOPT_READFUNCTION, tool_read_cb);
/* in 7.18.0, the CURLOPT_SEEKFUNCTION/DATA pair is taking over what
CURLOPT_IOCTLFUNCTION/DATA pair previously provided for seeking */
- my_setopt(curl, CURLOPT_SEEKDATA, &input);
+ my_setopt(curl, CURLOPT_SEEKDATA, input);
my_setopt(curl, CURLOPT_SEEKFUNCTION, tool_seek_cb);
if(config->recvpersecond &&
@@ -863,10 +1175,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
else
my_setopt(curl, CURLOPT_BUFFERSIZE, (long)BUFFER_SIZE);
- /* size of uploaded file: */
- if(uploadfilesize != -1)
- my_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
- my_setopt_str(curl, CURLOPT_URL, this_url); /* what to fetch */
+ my_setopt_str(curl, CURLOPT_URL, per->this_url);
my_setopt(curl, CURLOPT_NOPROGRESS, global->noprogress?1L:0L);
if(config->no_body)
my_setopt(curl, CURLOPT_NOBODY, 1L);
@@ -915,7 +1224,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt(curl, CURLOPT_FAILONERROR, config->failonerror?1L:0L);
my_setopt(curl, CURLOPT_REQUEST_TARGET, config->request_target);
- my_setopt(curl, CURLOPT_UPLOAD, uploadfile?1L:0L);
+ my_setopt(curl, CURLOPT_UPLOAD, per->uploadfile?1L:0L);
my_setopt(curl, CURLOPT_DIRLISTONLY, config->dirlistonly?1L:0L);
my_setopt(curl, CURLOPT_APPEND, config->ftp_append?1L:0L);
@@ -934,7 +1243,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt_str(curl, CURLOPT_LOGIN_OPTIONS, config->login_options);
my_setopt_str(curl, CURLOPT_USERPWD, config->userpwd);
my_setopt_str(curl, CURLOPT_RANGE, config->range);
- my_setopt(curl, CURLOPT_ERRORBUFFER, errorbuffer);
+ my_setopt(curl, CURLOPT_ERRORBUFFER, per->errorbuffer);
my_setopt(curl, CURLOPT_TIMEOUT_MS, (long)(config->timeout * 1000));
switch(config->httpreq) {
@@ -1182,7 +1491,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
result = CURLE_OUT_OF_MEMORY;
home = homedir();
if(home) {
- file = aprintf("%s/%sssh/known_hosts", home, DOT_CHAR);
+ file = aprintf("%s/.ssh/known_hosts", home);
if(file) {
/* new in curl 7.19.6 */
result = res_setopt_str(curl, CURLOPT_SSH_KNOWNHOSTS, file);
@@ -1230,14 +1539,14 @@ static CURLcode operate_do(struct GlobalConfig *global,
/* three new ones in libcurl 7.3: */
my_setopt_str(curl, CURLOPT_INTERFACE, config->iface);
my_setopt_str(curl, CURLOPT_KRBLEVEL, config->krblevel);
+ progressbarinit(&per->progressbar, config);
- progressbarinit(&progressbar, config);
if((global->progressmode == CURL_PROGRESS_BAR) &&
!global->noprogress && !global->mute) {
/* we want the alternative style, then we have to implement it
ourselves! */
my_setopt(curl, CURLOPT_XFERINFOFUNCTION, tool_progress_cb);
- my_setopt(curl, CURLOPT_XFERINFODATA, &progressbar);
+ my_setopt(curl, CURLOPT_XFERINFODATA, &per->progressbar);
}
/* new in libcurl 7.24.0: */
@@ -1420,17 +1729,17 @@ static CURLcode operate_do(struct GlobalConfig *global,
if(config->content_disposition
&& (urlnode->flags & GETOUT_USEREMOTE))
- hdrcbdata.honor_cd_filename = TRUE;
+ hdrcbdata->honor_cd_filename = TRUE;
else
- hdrcbdata.honor_cd_filename = FALSE;
+ hdrcbdata->honor_cd_filename = FALSE;
- hdrcbdata.outs = &outs;
- hdrcbdata.heads = &heads;
- hdrcbdata.global = global;
- hdrcbdata.config = config;
+ hdrcbdata->outs = outs;
+ hdrcbdata->heads = heads;
+ hdrcbdata->global = global;
+ hdrcbdata->config = config;
my_setopt(curl, CURLOPT_HEADERFUNCTION, tool_header_cb);
- my_setopt(curl, CURLOPT_HEADERDATA, &hdrcbdata);
+ my_setopt(curl, CURLOPT_HEADERDATA, per);
if(config->resolve)
/* new in 7.21.3 */
@@ -1482,6 +1791,10 @@ static CURLcode operate_do(struct GlobalConfig *global,
if(config->mail_auth)
my_setopt_str(curl, CURLOPT_MAIL_AUTH, config->mail_auth);
+ /* new in 7.66.0 */
+ if(config->sasl_authzid)
+ my_setopt_str(curl, CURLOPT_SASL_AUTHZID, config->sasl_authzid);
+
/* new in 7.31.0 */
if(config->sasl_ir)
my_setopt(curl, CURLOPT_SASL_IR, 1L);
@@ -1505,6 +1818,7 @@ static CURLcode operate_do(struct GlobalConfig *global,
config->unix_socket_path);
}
}
+
/* new in 7.45.0 */
if(config->proto_default)
my_setopt_str(curl, CURLOPT_DEFAULT_PROTOCOL, config->proto_default);
@@ -1536,397 +1850,34 @@ static CURLcode operate_do(struct GlobalConfig *global,
my_setopt_str(curl, CURLOPT_ALTSVC, config->altsvc);
#endif
- /* initialize retry vars for loop below */
- retry_sleep_default = (config->retry_delay) ?
- config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
-
- retry_numretries = config->req_retry;
- retry_sleep = retry_sleep_default; /* ms */
- retrystart = tvnow();
-
-#ifndef CURL_DISABLE_LIBCURL_OPTION
- if(global->libcurl) {
- result = easysrc_perform();
- if(result)
- goto show_error;
- }
-#endif
-
- for(;;) {
-#ifdef USE_METALINK
- if(!metalink && config->use_metalink) {
- /* If outs.metalink_parser is non-NULL, delete it first. */
- if(outs.metalink_parser)
- metalink_parser_context_delete(outs.metalink_parser);
- outs.metalink_parser = metalink_parser_context_new();
- if(outs.metalink_parser == NULL) {
- result = CURLE_OUT_OF_MEMORY;
- goto show_error;
- }
- fprintf(config->global->errors,
- "Metalink: parsing (%s) metalink/XML...\n", this_url);
- }
- else if(metalink)
- fprintf(config->global->errors,
- "Metalink: fetching (%s) from (%s)...\n",
- mlfile->filename, this_url);
-#endif /* USE_METALINK */
-
-#ifdef CURLDEBUG
- if(config->test_event_based)
- result = curl_easy_perform_ev(curl);
- else
-#endif
- result = curl_easy_perform(curl);
-
- if(!result && !outs.stream && !outs.bytes) {
- /* we have received no data despite the transfer was successful
- ==> force cration of an empty output file (if an output file
- was specified) */
- long cond_unmet = 0L;
- /* do not create (or even overwrite) the file in case we get no
- data because of unmet condition */
- curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &cond_unmet);
- if(!cond_unmet && !tool_create_output_file(&outs))
- result = CURLE_WRITE_ERROR;
- }
-
- if(outs.is_cd_filename && outs.stream && !global->mute &&
- outs.filename)
- printf("curl: Saved to filename '%s'\n", outs.filename);
-
- /* if retry-max-time is non-zero, make sure we haven't exceeded the
- time */
- if(retry_numretries &&
- (!config->retry_maxtime ||
- (tvdiff(tvnow(), retrystart) <
- config->retry_maxtime*1000L)) ) {
- enum {
- RETRY_NO,
- RETRY_TIMEOUT,
- RETRY_CONNREFUSED,
- RETRY_HTTP,
- RETRY_FTP,
- RETRY_LAST /* not used */
- } retry = RETRY_NO;
- long response;
- if((CURLE_OPERATION_TIMEDOUT == result) ||
- (CURLE_COULDNT_RESOLVE_HOST == result) ||
- (CURLE_COULDNT_RESOLVE_PROXY == result) ||
- (CURLE_FTP_ACCEPT_TIMEOUT == result))
- /* retry timeout always */
- retry = RETRY_TIMEOUT;
- else if(config->retry_connrefused &&
- (CURLE_COULDNT_CONNECT == result)) {
- long oserrno;
- curl_easy_getinfo(curl, CURLINFO_OS_ERRNO, &oserrno);
- if(ECONNREFUSED == oserrno)
- retry = RETRY_CONNREFUSED;
- }
- else if((CURLE_OK == result) ||
- (config->failonerror &&
- (CURLE_HTTP_RETURNED_ERROR == result))) {
- /* If it returned OK. _or_ failonerror was enabled and it
- returned due to such an error, check for HTTP transient
- errors to retry on. */
- char *effective_url = NULL;
- curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
- if(effective_url &&
- checkprefix("http", effective_url)) {
- /* This was HTTP(S) */
- curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
-
- switch(response) {
- case 408: /* Request Timeout */
- case 500: /* Internal Server Error */
- case 502: /* Bad Gateway */
- case 503: /* Service Unavailable */
- case 504: /* Gateway Timeout */
- retry = RETRY_HTTP;
- /*
- * At this point, we have already written data to the output
- * file (or terminal). If we write to a file, we must rewind
- * or close/re-open the file so that the next attempt starts
- * over from the beginning.
- */
- break;
- }
- }
- } /* if CURLE_OK */
- else if(result) {
- long protocol;
-
- curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
- curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
-
- if((protocol == CURLPROTO_FTP || protocol == CURLPROTO_FTPS) &&
- response / 100 == 4)
- /*
- * This is typically when the FTP server only allows a certain
- * amount of users and we are not one of them. All 4xx codes
- * are transient.
- */
- retry = RETRY_FTP;
- }
-
- if(retry) {
- static const char * const m[]={
- NULL,
- "timeout",
- "connection refused",
- "HTTP error",
- "FTP error"
- };
-
- warnf(config->global, "Transient problem: %s "
- "Will retry in %ld seconds. "
- "%ld retries left.\n",
- m[retry], retry_sleep/1000L, retry_numretries);
-
- tool_go_sleep(retry_sleep);
- retry_numretries--;
- if(!config->retry_delay) {
- retry_sleep *= 2;
- if(retry_sleep > RETRY_SLEEP_MAX)
- retry_sleep = RETRY_SLEEP_MAX;
- }
- if(outs.bytes && outs.filename && outs.stream) {
- int rc;
- /* We have written data to a output file, we truncate file
- */
- if(!global->mute)
- fprintf(global->errors, "Throwing away %"
- CURL_FORMAT_CURL_OFF_T " bytes\n",
- outs.bytes);
- fflush(outs.stream);
- /* truncate file at the position where we started appending */
-#ifdef HAVE_FTRUNCATE
- if(ftruncate(fileno(outs.stream), outs.init)) {
- /* when truncate fails, we can't just append as then we'll
- create something strange, bail out */
- if(!global->mute)
- fprintf(global->errors,
- "failed to truncate, exiting\n");
- result = CURLE_WRITE_ERROR;
- goto quit_urls;
- }
- /* now seek to the end of the file, the position where we
- just truncated the file in a large file-safe way */
- rc = fseek(outs.stream, 0, SEEK_END);
-#else
- /* ftruncate is not available, so just reposition the file
- to the location we would have truncated it. This won't
- work properly with large files on 32-bit systems, but
- most of those will have ftruncate. */
- rc = fseek(outs.stream, (long)outs.init, SEEK_SET);
-#endif
- if(rc) {
- if(!global->mute)
- fprintf(global->errors,
- "failed seeking to end of file, exiting\n");
- result = CURLE_WRITE_ERROR;
- goto quit_urls;
- }
- outs.bytes = 0; /* clear for next round */
- }
- continue; /* curl_easy_perform loop */
- }
- } /* if retry_numretries */
- else if(metalink) {
- /* Metalink: Decide to try the next resource or
- not. Basically, we want to try the next resource if
- download was not successful. */
- long response;
- if(CURLE_OK == result) {
- char *effective_url = NULL;
- curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
- if(effective_url &&
- curl_strnequal(effective_url, "http", 4)) {
- /* This was HTTP(S) */
- curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
- if(response != 200 && response != 206) {
- metalink_next_res = 1;
- fprintf(global->errors,
- "Metalink: fetching (%s) from (%s) FAILED "
- "(HTTP status code %ld)\n",
- mlfile->filename, this_url, response);
- }
- }
- }
- else {
- metalink_next_res = 1;
- fprintf(global->errors,
- "Metalink: fetching (%s) from (%s) FAILED (%s)\n",
- mlfile->filename, this_url,
- (errorbuffer[0]) ?
- errorbuffer : curl_easy_strerror(result));
- }
- }
- if(metalink && !metalink_next_res)
- fprintf(global->errors, "Metalink: fetching (%s) from (%s) OK\n",
- mlfile->filename, this_url);
-
- /* In all ordinary cases, just break out of loop here */
- break; /* curl_easy_perform loop */
-
- }
-
- if((global->progressmode == CURL_PROGRESS_BAR) &&
- progressbar.calls)
- /* if the custom progress bar has been displayed, we output a
- newline here */
- fputs("\n", progressbar.out);
-
- if(config->writeout)
- ourWriteOut(curl, &outs, config->writeout);
-
- /*
- ** Code within this loop may jump directly here to label 'show_error'
- ** in order to display an error message for CURLcode stored in 'res'
- ** variable and exit loop once that necessary writing and cleanup
- ** in label 'quit_urls' has been done.
- */
-
- show_error:
-
-#ifdef __VMS
- if(is_vms_shell()) {
- /* VMS DCL shell behavior */
- if(!global->showerror)
- vms_show = VMSSTS_HIDE;
- }
- else
-#endif
- if(config->synthetic_error) {
- ;
- }
- else if(result && global->showerror) {
- fprintf(global->errors, "curl: (%d) %s\n", result, (errorbuffer[0]) ?
- errorbuffer : curl_easy_strerror(result));
- if(result == CURLE_PEER_FAILED_VERIFICATION)
- fputs(CURL_CA_CERT_ERRORMSG, global->errors);
- }
-
- /* Fall through comment to 'quit_urls' label */
-
- /*
- ** Upon error condition and always that a message has already been
- ** displayed, code within this loop may jump directly here to label
- ** 'quit_urls' otherwise it should jump to 'show_error' label above.
- **
- ** When 'res' variable is _not_ CURLE_OK loop will exit once that
- ** all code following 'quit_urls' has been executed. Otherwise it
- ** will loop to the beginning from where it may exit if there are
- ** no more urls left.
- */
-
- quit_urls:
-
- /* Set file extended attributes */
- if(!result && config->xattr && outs.fopened && outs.stream) {
- int rc = fwrite_xattr(curl, fileno(outs.stream));
- if(rc)
- warnf(config->global, "Error setting extended attributes: %s\n",
- strerror(errno));
- }
-
- /* Close the file */
- if(outs.fopened && outs.stream) {
- int rc = fclose(outs.stream);
- if(!result && rc) {
- /* something went wrong in the writing process */
- result = CURLE_WRITE_ERROR;
- fprintf(global->errors, "(%d) Failed writing body\n", result);
- }
- }
- else if(!outs.s_isreg && outs.stream) {
- /* Dump standard stream buffered data */
- int rc = fflush(outs.stream);
- if(!result && rc) {
- /* something went wrong in the writing process */
- result = CURLE_WRITE_ERROR;
- fprintf(global->errors, "(%d) Failed writing body\n", result);
- }
- }
-
-#ifdef __AMIGA__
- if(!result && outs.s_isreg && outs.filename) {
- /* Set the url (up to 80 chars) as comment for the file */
- if(strlen(urlnode->url) > 78)
- urlnode->url[79] = '\0';
- SetComment(outs.filename, urlnode->url);
- }
-#endif
-
- /* File time can only be set _after_ the file has been closed */
- if(!result && config->remote_time && outs.s_isreg && outs.filename) {
- /* Ask libcurl if we got a remote file time */
- curl_off_t filetime = -1;
- curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
- setfiletime(filetime, outs.filename, config->global->errors);
- }
-
#ifdef USE_METALINK
- if(!metalink && config->use_metalink && result == CURLE_OK) {
- int rv = parse_metalink(config, &outs, this_url);
- if(rv == 0)
- fprintf(config->global->errors, "Metalink: parsing (%s) OK\n",
- this_url);
- else if(rv == -1)
- fprintf(config->global->errors, "Metalink: parsing (%s) FAILED\n",
- this_url);
- }
- else if(metalink && result == CURLE_OK && !metalink_next_res) {
- int rv = metalink_check_hash(global, mlfile, outs.filename);
- if(rv == 0) {
- metalink_next_res = 1;
+ if(!metalink && config->use_metalink) {
+ outs->metalink_parser = metalink_parser_context_new();
+ if(outs->metalink_parser == NULL) {
+ result = CURLE_OUT_OF_MEMORY;
+ goto show_error;
}
+ fprintf(config->global->errors,
+ "Metalink: parsing (%s) metalink/XML...\n", per->this_url);
}
+ else if(metalink)
+ fprintf(config->global->errors,
+ "Metalink: fetching (%s) from (%s)...\n",
+ mlfile->filename, per->this_url);
#endif /* USE_METALINK */
- /* No more business with this output struct */
- if(outs.alloc_filename)
- Curl_safefree(outs.filename);
-#ifdef USE_METALINK
- if(outs.metalink_parser)
- metalink_parser_context_delete(outs.metalink_parser);
-#endif /* USE_METALINK */
- memset(&outs, 0, sizeof(struct OutStruct));
- hdrcbdata.outs = NULL;
-
- /* Free loop-local allocated memory and close loop-local opened fd */
-
- Curl_safefree(outfile);
- Curl_safefree(this_url);
-
- if(infdopen)
- close(infd);
-
- if(metalink) {
- /* Should exit if error is fatal. */
- if(is_fatal_error(result)) {
- break;
- }
- if(!metalink_next_res)
- break;
- mlres = mlres->next;
- if(mlres == NULL)
- break;
- }
- else if(urlnum > 1) {
- /* when url globbing, exit loop upon critical error */
- if(is_fatal_error(result))
- break;
- }
- else if(result)
- /* when not url globbing, exit loop upon any error */
- break;
+ per->metalink = metalink;
+ /* initialize retry vars for loop below */
+ per->retry_sleep_default = (config->retry_delay) ?
+ config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
+ per->retry_numretries = config->req_retry;
+ per->retry_sleep = per->retry_sleep_default; /* ms */
+ per->retrystart = tvnow();
} /* loop to the next URL */
- /* Free loop-local allocated memory */
-
- Curl_safefree(uploadfile);
+ show_error:
+ quit_urls:
if(urls) {
/* Free list of remaining URLs */
@@ -1962,41 +1913,312 @@ static CURLcode operate_do(struct GlobalConfig *global,
Curl_safefree(urlnode->infile);
urlnode->flags = 0;
- /*
- ** Bail out upon critical errors or --fail-early
- */
- if(is_fatal_error(result) || (result && global->fail_early))
- goto quit_curl;
-
} /* for-loop through all URLs */
-
- /*
- ** Nested loops end here.
- */
-
quit_curl:
- /* Reset the global config variables */
- global->noprogress = orig_noprogress;
- global->isatty = orig_isatty;
-
/* Free function-local referenced allocated memory */
Curl_safefree(httpgetfields);
- /* Free list of given URLs */
- clean_getout(config);
+ return result;
+}
- hdrcbdata.heads = NULL;
+static long all_added; /* number of easy handles currently added */
- /* Close function-local opened file descriptors */
- if(heads.fopened && heads.stream)
- fclose(heads.stream);
+/*
+ * add_parallel_transfers() sets 'morep' to TRUE if there are more transfers
+ * to add even after this call returns. sets 'addedp' to TRUE if one or more
+ * transfers were added.
+ */
+static int add_parallel_transfers(struct GlobalConfig *global,
+ CURLM *multi,
+ bool *morep,
+ bool *addedp)
+{
+ struct per_transfer *per;
+ CURLcode result;
+ CURLMcode mcode;
+ *addedp = FALSE;
+ *morep = FALSE;
+ for(per = transfers; per && (all_added < global->parallel_max);
+ per = per->next) {
+ if(per->added)
+ /* already added */
+ continue;
+
+ result = pre_transfer(global, per);
+ if(result)
+ break;
+
+ (void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per);
+ (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
+ (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);
+
+ mcode = curl_multi_add_handle(multi, per->curl);
+ if(mcode)
+ return CURLE_OUT_OF_MEMORY;
+ per->added = TRUE;
+ all_added++;
+ *addedp = TRUE;
+ }
+ *morep = per ? TRUE : FALSE;
+ return CURLE_OK;
+}
+
+static CURLcode parallel_transfers(struct GlobalConfig *global,
+ CURLSH *share)
+{
+ CURLM *multi;
+ bool done = FALSE;
+ CURLMcode mcode = CURLM_OK;
+ CURLcode result = CURLE_OK;
+ int still_running = 1;
+ struct timeval start = tvnow();
+ bool more_transfers;
+ bool added_transfers;
+
+ multi = curl_multi_init();
+ if(!multi)
+ return CURLE_OUT_OF_MEMORY;
+
+ result = add_parallel_transfers(global, multi,
+ &more_transfers, &added_transfers);
+ if(result)
+ return result;
+
+ while(!done && !mcode && (still_running || more_transfers)) {
+ mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
+ if(!mcode)
+ mcode = curl_multi_perform(multi, &still_running);
+
+ progress_meter(global, &start, FALSE);
+
+ if(!mcode) {
+ int rc;
+ CURLMsg *msg;
+ bool removed = FALSE;
+ do {
+ msg = curl_multi_info_read(multi, &rc);
+ if(msg) {
+ bool retry;
+ struct per_transfer *ended;
+ CURL *easy = msg->easy_handle;
+ result = msg->data.result;
+ curl_easy_getinfo(easy, CURLINFO_PRIVATE, (void *)&ended);
+ curl_multi_remove_handle(multi, easy);
+
+ result = post_transfer(global, share, ended, result, &retry);
+ if(retry)
+ continue;
+ progress_finalize(ended); /* before it goes away */
+ all_added--; /* one fewer added */
+ removed = TRUE;
+ (void)del_transfer(ended);
+ }
+ } while(msg);
+ if(removed) {
+ /* one or more transfers completed, add more! */
+ (void)add_parallel_transfers(global, multi, &more_transfers,
+ &added_transfers);
+ if(added_transfers)
+ /* we added new ones, make sure the loop doesn't exit yet */
+ still_running = 1;
+ }
+ }
+ }
+
+ (void)progress_meter(global, &start, TRUE);
+
+ /* Make sure to return some kind of error if there was a multi problem */
+ if(mcode) {
+ result = (mcode == CURLM_OUT_OF_MEMORY) ? CURLE_OUT_OF_MEMORY :
+ /* The other multi errors should never happen, so return
+ something suitably generic */
+ CURLE_BAD_FUNCTION_ARGUMENT;
+ }
+
+ curl_multi_cleanup(multi);
- if(heads.alloc_filename)
- Curl_safefree(heads.filename);
+ return result;
+}
+
+static CURLcode serial_transfers(struct GlobalConfig *global,
+ CURLSH *share)
+{
+ CURLcode returncode = CURLE_OK;
+ CURLcode result = CURLE_OK;
+ struct per_transfer *per;
+ for(per = transfers; per;) {
+ bool retry;
+ result = pre_transfer(global, per);
+ if(result)
+ break;
+
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+ if(global->libcurl) {
+ result = easysrc_perform();
+ if(result)
+ break;
+ }
+#endif
+#ifdef CURLDEBUG
+ if(global->test_event_based)
+ result = curl_easy_perform_ev(per->curl);
+ else
+#endif
+ result = curl_easy_perform(per->curl);
+
+ /* store the result of the actual transfer */
+ returncode = result;
+
+ result = post_transfer(global, share, per, result, &retry);
+ if(retry)
+ continue;
+ per = del_transfer(per);
+
+ /* Bail out upon critical errors or --fail-early */
+ if(result || is_fatal_error(returncode) ||
+ (returncode && global->fail_early))
+ break;
+ }
+ if(returncode)
+ /* returncode errors have priority */
+ result = returncode;
+ return result;
+}
+
+static CURLcode operate_do(struct GlobalConfig *global,
+ struct OperationConfig *config,
+ CURLSH *share)
+{
+ CURLcode result = CURLE_OK;
+ bool capath_from_env;
+
+ /* Check we have a url */
+ if(!config->url_list || !config->url_list->url) {
+ helpf(global->errors, "no URL specified!\n");
+ return CURLE_FAILED_INIT;
+ }
+
+ /* On WIN32 we can't set the path to curl-ca-bundle.crt
+ * at compile time. So we look here for the file in two ways:
+ * 1: look at the environment variable CURL_CA_BUNDLE for a path
+ * 2: if #1 isn't found, use the windows API function SearchPath()
+ * to find it along the app's path (includes app's dir and CWD)
+ *
+ * We support the environment variable thing for non-Windows platforms
+ * too. Just for the sake of it.
+ */
+ capath_from_env = false;
+ if(!config->cacert &&
+ !config->capath &&
+ !config->insecure_ok) {
+ CURL *curltls = curl_easy_init();
+ struct curl_tlssessioninfo *tls_backend_info = NULL;
+
+ /* With the addition of CAINFO support for Schannel, this search could find
+ * a certificate bundle that was previously ignored. To maintain backward
+ * compatibility, only perform this search if not using Schannel.
+ */
+ result = curl_easy_getinfo(curltls, CURLINFO_TLS_SSL_PTR,
+ &tls_backend_info);
+ if(result)
+ return result;
+
+ /* Set the CA cert locations specified in the environment. For Windows if
+ * no environment-specified filename is found then check for CA bundle
+ * default filename curl-ca-bundle.crt in the user's PATH.
+ *
+ * If Schannel is the selected SSL backend then these locations are
+ * ignored. We allow setting CA location for schannel only when explicitly
+ * specified by the user via CURLOPT_CAINFO / --cacert.
+ */
+ if(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
+ char *env;
+ env = curlx_getenv("CURL_CA_BUNDLE");
+ if(env) {
+ config->cacert = strdup(env);
+ if(!config->cacert) {
+ curl_free(env);
+ helpf(global->errors, "out of memory\n");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
+ else {
+ env = curlx_getenv("SSL_CERT_DIR");
+ if(env) {
+ config->capath = strdup(env);
+ if(!config->capath) {
+ curl_free(env);
+ helpf(global->errors, "out of memory\n");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ capath_from_env = true;
+ }
+ else {
+ env = curlx_getenv("SSL_CERT_FILE");
+ if(env) {
+ config->cacert = strdup(env);
+ if(!config->cacert) {
+ curl_free(env);
+ helpf(global->errors, "out of memory\n");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ }
+ }
+ }
+
+ if(env)
+ curl_free(env);
+#ifdef WIN32
+ else {
+ result = FindWin32CACert(config, tls_backend_info->backend,
+ "curl-ca-bundle.crt");
+ }
+#endif
+ }
+ curl_easy_cleanup(curltls);
+ }
+
+ if(!result)
+ /* loop through the list of given URLs */
+ result = create_transfers(global, config, share, capath_from_env);
+
+ return result;
+}
+
+static CURLcode operate_transfers(struct GlobalConfig *global,
+ CURLSH *share,
+ CURLcode result)
+{
+ /* Save the values of noprogress and isatty to restore them later on */
+ bool orig_noprogress = global->noprogress;
+ bool orig_isatty = global->isatty;
+ struct per_transfer *per;
+
+ /* Time to actually do the transfers */
+ if(!result) {
+ if(global->parallel)
+ result = parallel_transfers(global, share);
+ else
+ result = serial_transfers(global, share);
+ }
+
+ /* cleanup if there are any left */
+ for(per = transfers; per;) {
+ bool retry;
+ (void)post_transfer(global, share, per, result, &retry);
+ /* Free list of given URLs */
+ clean_getout(per->config);
+
+ /* Release metalink related resources here */
+ clean_metalink(per->config);
+ per = del_transfer(per);
+ }
+
+ /* Reset the global config variables */
+ global->noprogress = orig_noprogress;
+ global->isatty = orig_isatty;
- /* Release metalink related resources here */
- clean_metalink(config);
return result;
}
@@ -2040,7 +2262,7 @@ CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[])
tool_version_info();
/* Check if we were asked to list the SSL engines */
else if(res == PARAM_ENGINES_REQUESTED)
- tool_list_engines(config->easy);
+ tool_list_engines();
else if(res == PARAM_LIBCURL_UNSUPPORTED_PROTOCOL)
result = CURLE_UNSUPPORTED_PROTOCOL;
else
@@ -2058,27 +2280,43 @@ CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[])
if(!result) {
size_t count = 0;
struct OperationConfig *operation = config->first;
+ CURLSH *share = curl_share_init();
+ if(!share) {
+#ifndef CURL_DISABLE_LIBCURL_OPTION
+ if(config->libcurl) {
+ /* Cleanup the libcurl source output */
+ easysrc_cleanup();
+ }
+#endif
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
+ curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_PSL);
/* Get the required arguments for each operation */
- while(!result && operation) {
+ do {
result = get_args(operation, count++);
operation = operation->next;
- }
+ } while(!result && operation);
/* Set the current operation pointer */
config->current = config->first;
- /* Perform each operation */
+ /* Setup all transfers */
while(!result && config->current) {
- result = operate_do(config, config->current);
-
+ result = operate_do(config, config->current, share);
config->current = config->current->next;
-
- if(config->current && config->current->easy)
- curl_easy_reset(config->current->easy);
}
+ /* now run! */
+ result = operate_transfers(config, share, result);
+
+ curl_share_cleanup(share);
#ifndef CURL_DISABLE_LIBCURL_OPTION
if(config->libcurl) {
/* Cleanup the libcurl source output */
diff --git a/src/tool_operate.h b/src/tool_operate.h
index b84388bc..60257fc6 100644
--- a/src/tool_operate.h
+++ b/src/tool_operate.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -22,7 +22,53 @@
*
***************************************************************************/
#include "tool_setup.h"
+#include "tool_cb_hdr.h"
+#include "tool_cb_prg.h"
+#include "tool_sdecls.h"
+
+struct per_transfer {
+ /* double linked */
+ struct per_transfer *next;
+ struct per_transfer *prev;
+ struct OperationConfig *config; /* for this transfer */
+ CURL *curl;
+ long retry_numretries;
+ long retry_sleep_default;
+ long retry_sleep;
+ struct timeval retrystart;
+ bool metalink; /* nonzero for metalink download. */
+ bool metalink_next_res;
+ metalinkfile *mlfile;
+ metalink_resource *mlres;
+ char *this_url;
+ char *outfile;
+ bool infdopen; /* TRUE if infd needs closing */
+ int infd;
+ struct ProgressData progressbar;
+ struct OutStruct outs;
+ struct OutStruct heads;
+ struct InStruct input;
+ struct HdrCbData hdrcbdata;
+ char errorbuffer[CURL_ERROR_SIZE];
+
+ bool added; /* set TRUE when added to the multi handle */
+
+ /* for parallel progress bar */
+ curl_off_t dltotal;
+ curl_off_t dlnow;
+ curl_off_t ultotal;
+ curl_off_t ulnow;
+ bool dltotal_added; /* if the total has been added from this */
+ bool ultotal_added;
+
+ /* NULL or malloced */
+ char *separator_err;
+ char *separator;
+ char *uploadfile;
+};
CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]);
+extern struct per_transfer *transfers; /* first node */
+
#endif /* HEADER_CURL_TOOL_OPERATE_H */
diff --git a/src/tool_operhlp.c b/src/tool_operhlp.c
index c3a82627..f3fcc699 100644
--- a/src/tool_operhlp.c
+++ b/src/tool_operhlp.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -71,10 +71,13 @@ bool stdin_upload(const char *uploadfile)
* Adds the file name to the URL if it doesn't already have one.
* url will be freed before return if the returned pointer is different
*/
-char *add_file_name_to_url(CURL *curl, char *url, const char *filename)
+char *add_file_name_to_url(char *url, const char *filename)
{
/* If no file name part is given in the URL, we add this file name */
char *ptr = strstr(url, "://");
+ CURL *curl = curl_easy_init(); /* for url escaping */
+ if(!curl)
+ return NULL; /* error! */
if(ptr)
ptr += 3;
else
@@ -120,6 +123,7 @@ char *add_file_name_to_url(CURL *curl, char *url, const char *filename)
else
Curl_safefree(url);
}
+ curl_easy_cleanup(curl);
return url;
}
diff --git a/src/tool_operhlp.h b/src/tool_operhlp.h
index 90c85492..1e2f0274 100644
--- a/src/tool_operhlp.h
+++ b/src/tool_operhlp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -31,7 +31,7 @@ bool output_expected(const char *url, const char *uploadfile);
bool stdin_upload(const char *uploadfile);
-char *add_file_name_to_url(CURL *curl, char *url, const char *filename);
+char *add_file_name_to_url(char *url, const char *filename);
CURLcode get_url_file_name(char **filename, const char *url);
diff --git a/src/tool_paramhlp.c b/src/tool_paramhlp.c
index 3a4286c6..c9dac4f0 100644
--- a/src/tool_paramhlp.c
+++ b/src/tool_paramhlp.c
@@ -198,6 +198,28 @@ ParameterError str2unum(long *val, const char *str)
}
/*
+ * Parse the string and write the long in the given address if it is below the
+ * maximum allowed value. Return PARAM_OK on success, otherwise a parameter
+ * error enum. ONLY ACCEPTS POSITIVE NUMBERS!
+ *
+ * Since this function gets called with the 'nextarg' pointer from within the
+ * getparameter a lot, we must check it for NULL before accessing the str
+ * data.
+ */
+
+ParameterError str2unummax(long *val, const char *str, long max)
+{
+ ParameterError result = str2unum(val, str);
+ if(result != PARAM_OK)
+ return result;
+ if(*val > max)
+ return PARAM_NUMBER_TOO_LARGE;
+
+ return PARAM_OK;
+}
+
+
+/*
* Parse the string and write the double in the given address. Return PARAM_OK
* on success, otherwise a parameter specific error enum.
*
diff --git a/src/tool_paramhlp.h b/src/tool_paramhlp.h
index 854f5225..f13a114f 100644
--- a/src/tool_paramhlp.h
+++ b/src/tool_paramhlp.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -33,6 +33,7 @@ void cleanarg(char *str);
ParameterError str2num(long *val, const char *str);
ParameterError str2unum(long *val, const char *str);
+ParameterError str2unummax(long *val, const char *str, long max);
ParameterError str2udouble(double *val, const char *str, long max);
long proto2num(struct OperationConfig *config, long *val, const char *str);
diff --git a/src/tool_parsecfg.c b/src/tool_parsecfg.c
index 36c7bccf..9b32e54a 100644
--- a/src/tool_parsecfg.c
+++ b/src/tool_parsecfg.c
@@ -34,8 +34,6 @@
#include "memdebug.h" /* keep this as LAST include */
-#define CURLRC DOT_CHAR "curlrc"
-
/* only acknowledge colon or equals as separators if the option was not
specified with an initial dash! */
#define ISSEP(x,dash) (!dash && (((x) == '=') || ((x) == ':')))
@@ -43,74 +41,90 @@
static const char *unslashquote(const char *line, char *param);
static char *my_get_line(FILE *fp);
+#ifdef WIN32
+static FILE *execpath(const char *filename)
+{
+ char filebuffer[512];
+ /* Get the filename of our executable. GetModuleFileName is already declared
+ * via inclusions done in setup header file. We assume that we are using
+ * the ASCII version here.
+ */
+ unsigned long len = GetModuleFileNameA(0, filebuffer, sizeof(filebuffer));
+ if(len > 0 && len < sizeof(filebuffer)) {
+ /* We got a valid filename - get the directory part */
+ char *lastdirchar = strrchr(filebuffer, '\\');
+ if(lastdirchar) {
+ size_t remaining;
+ *lastdirchar = 0;
+ /* If we have enough space, build the RC filename */
+ remaining = sizeof(filebuffer) - strlen(filebuffer);
+ if(strlen(filename) < remaining - 1) {
+ msnprintf(lastdirchar, remaining, "%s%s", DIR_CHAR, filename);
+ return fopen(filebuffer, FOPEN_READTEXT);
+ }
+ }
+ }
+
+ return NULL;
+}
+#endif
+
+
/* return 0 on everything-is-fine, and non-zero otherwise */
int parseconfig(const char *filename, struct GlobalConfig *global)
{
FILE *file = NULL;
- char filebuffer[512];
bool usedarg = FALSE;
int rc = 0;
struct OperationConfig *operation = global->first;
+ char *pathalloc = NULL;
if(!filename || !*filename) {
/* NULL or no file name attempts to load .curlrc from the homedir! */
-#ifndef __AMIGA__
char *home = homedir(); /* portable homedir finder */
- filename = CURLRC; /* sensible default */
+#ifndef WIN32
if(home) {
- if(strlen(home) < (sizeof(filebuffer) - strlen(CURLRC))) {
- msnprintf(filebuffer, sizeof(filebuffer),
- "%s%s%s", home, DIR_CHAR, CURLRC);
-
-#ifdef WIN32
- /* Check if the file exists - if not, try CURLRC in the same
- * directory as our executable
- */
- file = fopen(filebuffer, FOPEN_READTEXT);
- if(file != NULL) {
- filename = filebuffer;
- }
- else {
- /* Get the filename of our executable. GetModuleFileName is
- * already declared via inclusions done in setup header file.
- * We assume that we are using the ASCII version here.
- */
- unsigned long len = GetModuleFileNameA(0, filebuffer,
- sizeof(filebuffer));
- if(len > 0 && len < sizeof(filebuffer)) {
- /* We got a valid filename - get the directory part */
- char *lastdirchar = strrchr(filebuffer, '\\');
- if(lastdirchar) {
- size_t remaining;
- *lastdirchar = 0;
- /* If we have enough space, build the RC filename */
- remaining = sizeof(filebuffer) - strlen(filebuffer);
- if(strlen(CURLRC) < remaining - 1) {
- msnprintf(lastdirchar, remaining,
- "%s%s", DIR_CHAR, CURLRC);
- /* Don't bother checking if it exists - we do that later */
- filename = filebuffer;
- }
- }
- }
- }
-#else /* WIN32 */
- filename = filebuffer;
-#endif /* WIN32 */
+ pathalloc = curl_maprintf("%s%s.curlrc", home, DIR_CHAR);
+ if(!pathalloc) {
+ free(home);
+ return 1; /* out of memory */
}
- Curl_safefree(home); /* we've used it, now free it */
+ filename = pathalloc;
}
+#else /* Windows */
+ if(home) {
+ int i = 0;
+ char prefix = '.';
+ do {
+ /* check for .curlrc then _curlrc in the home dir */
+ pathalloc = curl_maprintf("%s%s%ccurlrc", home, DIR_CHAR, prefix);
+ if(!pathalloc) {
+ free(home);
+ return 1; /* out of memory */
+ }
-# else /* __AMIGA__ */
- /* On AmigaOS all the config files are into env:
- */
- filename = "ENV:" CURLRC;
-
+ /* Check if the file exists - if not, try _curlrc */
+ file = fopen(pathalloc, FOPEN_READTEXT);
+ if(file) {
+ filename = pathalloc;
+ break;
+ }
+ prefix = '_';
+ } while(++i < 2);
+ }
+ if(!filename) {
+ /* check for .curlrc then _curlrc in the dir of the executable */
+ file = execpath(".curlrc");
+ if(!file)
+ file = execpath("_curlrc");
+ }
#endif
+
+ Curl_safefree(home); /* we've used it, now free it */
}
- if(!file) { /* WIN32: no need to fopen() again */
+ if(!file && filename) { /* no need to fopen() again */
if(strcmp(filename, "-"))
file = fopen(filename, FOPEN_READTEXT);
else
@@ -230,9 +244,6 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
/* Initialise the newly created config */
config_init(operation->next);
- /* Copy the easy handle */
- operation->next->easy = global->easy;
-
/* Set the global config pointer */
operation->next->global = global;
@@ -274,6 +285,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
else
rc = 1; /* couldn't open the file */
+ free(pathalloc);
return rc;
}
diff --git a/src/tool_progress.c b/src/tool_progress.c
new file mode 100644
index 00000000..a2667f38
--- /dev/null
+++ b/src/tool_progress.c
@@ -0,0 +1,314 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+#include "tool_operate.h"
+#include "tool_progress.h"
+#include "tool_util.h"
+
+#define ENABLE_CURLX_PRINTF
+/* use our own printf() functions */
+#include "curlx.h"
+
+/* The point of this function would be to return a string of the input data,
+ but never longer than 5 columns (+ one zero byte).
+ Add suffix k, M, G when suitable... */
+static char *max5data(curl_off_t bytes, char *max5)
+{
+#define ONE_KILOBYTE CURL_OFF_T_C(1024)
+#define ONE_MEGABYTE (CURL_OFF_T_C(1024) * ONE_KILOBYTE)
+#define ONE_GIGABYTE (CURL_OFF_T_C(1024) * ONE_MEGABYTE)
+#define ONE_TERABYTE (CURL_OFF_T_C(1024) * ONE_GIGABYTE)
+#define ONE_PETABYTE (CURL_OFF_T_C(1024) * ONE_TERABYTE)
+
+ if(bytes < CURL_OFF_T_C(100000))
+ msnprintf(max5, 6, "%5" CURL_FORMAT_CURL_OFF_T, bytes);
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_KILOBYTE)
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "k", bytes/ONE_KILOBYTE);
+
+ else if(bytes < CURL_OFF_T_C(100) * ONE_MEGABYTE)
+ /* 'XX.XM' is good as long as we're less than 100 megs */
+ msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
+ CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE,
+ (bytes%ONE_MEGABYTE) / (ONE_MEGABYTE/CURL_OFF_T_C(10)) );
+
+#if (CURL_SIZEOF_CURL_OFF_T > 4)
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_MEGABYTE)
+ /* 'XXXXM' is good until we're at 10000MB or above */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);
+
+ else if(bytes < CURL_OFF_T_C(100) * ONE_GIGABYTE)
+ /* 10000 MB - 100 GB, we show it as XX.XG */
+ msnprintf(max5, 6, "%2" CURL_FORMAT_CURL_OFF_T ".%0"
+ CURL_FORMAT_CURL_OFF_T "G", bytes/ONE_GIGABYTE,
+ (bytes%ONE_GIGABYTE) / (ONE_GIGABYTE/CURL_OFF_T_C(10)) );
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_GIGABYTE)
+ /* up to 10000GB, display without decimal: XXXXG */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "G", bytes/ONE_GIGABYTE);
+
+ else if(bytes < CURL_OFF_T_C(10000) * ONE_TERABYTE)
+ /* up to 10000TB, display without decimal: XXXXT */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "T", bytes/ONE_TERABYTE);
+
+ else
+ /* up to 10000PB, display without decimal: XXXXP */
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "P", bytes/ONE_PETABYTE);
+
+ /* 16384 petabytes (16 exabytes) is the maximum a 64 bit unsigned number
+ can hold, but our data type is signed so 8192PB will be the maximum. */
+
+#else
+
+ else
+ msnprintf(max5, 6, "%4" CURL_FORMAT_CURL_OFF_T "M", bytes/ONE_MEGABYTE);
+
+#endif
+
+ return max5;
+}
+
+int xferinfo_cb(void *clientp,
+ curl_off_t dltotal,
+ curl_off_t dlnow,
+ curl_off_t ultotal,
+ curl_off_t ulnow)
+{
+ struct per_transfer *per = clientp;
+ per->dltotal = dltotal;
+ per->dlnow = dlnow;
+ per->ultotal = ultotal;
+ per->ulnow = ulnow;
+ return 0;
+}
+
+/* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero
+ byte) */
+static void time2str(char *r, curl_off_t seconds)
+{
+ curl_off_t h;
+ if(seconds <= 0) {
+ strcpy(r, "--:--:--");
+ return;
+ }
+ h = seconds / CURL_OFF_T_C(3600);
+ if(h <= CURL_OFF_T_C(99)) {
+ curl_off_t m = (seconds - (h*CURL_OFF_T_C(3600))) / CURL_OFF_T_C(60);
+ curl_off_t s = (seconds - (h*CURL_OFF_T_C(3600))) - (m*CURL_OFF_T_C(60));
+ msnprintf(r, 9, "%2" CURL_FORMAT_CURL_OFF_T ":%02" CURL_FORMAT_CURL_OFF_T
+ ":%02" CURL_FORMAT_CURL_OFF_T, h, m, s);
+ }
+ else {
+ /* this equals to more than 99 hours, switch to a more suitable output
+ format to fit within the limits. */
+ curl_off_t d = seconds / CURL_OFF_T_C(86400);
+ h = (seconds - (d*CURL_OFF_T_C(86400))) / CURL_OFF_T_C(3600);
+ if(d <= CURL_OFF_T_C(999))
+ msnprintf(r, 9, "%3" CURL_FORMAT_CURL_OFF_T
+ "d %02" CURL_FORMAT_CURL_OFF_T "h", d, h);
+ else
+ msnprintf(r, 9, "%7" CURL_FORMAT_CURL_OFF_T "d", d);
+ }
+}
+
+static curl_off_t all_dltotal = 0;
+static curl_off_t all_ultotal = 0;
+static curl_off_t all_dlalready = 0;
+static curl_off_t all_ulalready = 0;
+
+curl_off_t all_xfers = 0; /* current total */
+
+struct speedcount {
+ curl_off_t dl;
+ curl_off_t ul;
+ struct timeval stamp;
+};
+#define SPEEDCNT 10
+static unsigned int speedindex;
+static bool indexwrapped;
+static struct speedcount speedstore[SPEEDCNT];
+
+/*
+ |DL% UL% Dled Uled Xfers Live Qd Total Current Left Speed
+ | 6 -- 9.9G 0 2 2 0 0:00:40 0:00:02 0:00:37 4087M
+*/
+bool progress_meter(struct GlobalConfig *global,
+ struct timeval *start,
+ bool final)
+{
+ static struct timeval stamp;
+ static bool header = FALSE;
+ struct timeval now;
+ long diff;
+
+ if(global->noprogress)
+ return FALSE;
+
+ now = tvnow();
+ diff = tvdiff(now, stamp);
+
+ if(!header) {
+ header = TRUE;
+ fputs("DL% UL% Dled Uled Xfers Live Qd "
+ "Total Current Left Speed\n",
+ global->errors);
+ }
+ if(final || (diff > 500)) {
+ char time_left[10];
+ char time_total[10];
+ char time_spent[10];
+ char buffer[3][6];
+ curl_off_t spent = tvdiff(now, *start)/1000;
+ char dlpercen[4]="--";
+ char ulpercen[4]="--";
+ struct per_transfer *per;
+ curl_off_t all_dlnow = 0;
+ curl_off_t all_ulnow = 0;
+ bool dlknown = TRUE;
+ bool ulknown = TRUE;
+ curl_off_t all_running = 0; /* in progress */
+ curl_off_t all_queued = 0; /* pending */
+ curl_off_t speed = 0;
+ unsigned int i;
+ stamp = now;
+
+ /* first add the amounts of the already completed transfers */
+ all_dlnow += all_dlalready;
+ all_ulnow += all_ulalready;
+
+ for(per = transfers; per; per = per->next) {
+ all_dlnow += per->dlnow;
+ all_ulnow += per->ulnow;
+ if(!per->dltotal)
+ dlknown = FALSE;
+ else if(!per->dltotal_added) {
+ /* only add this amount once */
+ all_dltotal += per->dltotal;
+ per->dltotal_added = TRUE;
+ }
+ if(!per->ultotal)
+ ulknown = FALSE;
+ else if(!per->ultotal_added) {
+ /* only add this amount once */
+ all_ultotal += per->ultotal;
+ per->ultotal_added = TRUE;
+ }
+ if(!per->added)
+ all_queued++;
+ else
+ all_running++;
+ }
+ if(dlknown && all_dltotal)
+ /* TODO: handle integer overflow */
+ msnprintf(dlpercen, sizeof(dlpercen), "%3d",
+ all_dlnow * 100 / all_dltotal);
+ if(ulknown && all_ultotal)
+ /* TODO: handle integer overflow */
+ msnprintf(ulpercen, sizeof(ulpercen), "%3d",
+ all_ulnow * 100 / all_ultotal);
+
+ /* get the transfer speed, the higher of the two */
+
+ i = speedindex;
+ speedstore[i].dl = all_dlnow;
+ speedstore[i].ul = all_ulnow;
+ speedstore[i].stamp = now;
+ if(++speedindex >= SPEEDCNT) {
+ indexwrapped = TRUE;
+ speedindex = 0;
+ }
+
+ {
+ long deltams;
+ curl_off_t dl;
+ curl_off_t ul;
+ curl_off_t dls;
+ curl_off_t uls;
+ if(indexwrapped) {
+ /* 'speedindex' is the oldest stored data */
+ deltams = tvdiff(now, speedstore[speedindex].stamp);
+ dl = all_dlnow - speedstore[speedindex].dl;
+ ul = all_ulnow - speedstore[speedindex].ul;
+ }
+ else {
+ /* since the beginning */
+ deltams = tvdiff(now, *start);
+ dl = all_dlnow;
+ ul = all_ulnow;
+ }
+ dls = (curl_off_t)((double)dl / ((double)deltams/1000.0));
+ uls = (curl_off_t)((double)ul / ((double)deltams/1000.0));
+ speed = dls > uls ? dls : uls;
+ }
+
+
+ if(dlknown && speed) {
+ curl_off_t est = all_dltotal / speed;
+ curl_off_t left = (all_dltotal - all_dlnow) / speed;
+ time2str(time_left, left);
+ time2str(time_total, est);
+ }
+ else {
+ time2str(time_left, 0);
+ time2str(time_total, 0);
+ }
+ time2str(time_spent, spent);
+
+ fprintf(global->errors,
+ "\r"
+ "%-3s " /* percent downloaded */
+ "%-3s " /* percent uploaded */
+ "%s " /* Dled */
+ "%s " /* Uled */
+ "%5" CURL_FORMAT_CURL_OFF_T " " /* Xfers */
+ "%5" CURL_FORMAT_CURL_OFF_T " " /* Live */
+ "%5" CURL_FORMAT_CURL_OFF_T " " /* Queued */
+ "%s " /* Total time */
+ "%s " /* Current time */
+ "%s " /* Time left */
+ "%s " /* Speed */
+ "%5s" /* final newline */,
+
+ dlpercen, /* 3 letters */
+ ulpercen, /* 3 letters */
+ max5data(all_dlnow, buffer[0]),
+ max5data(all_ulnow, buffer[1]),
+ all_xfers,
+ all_running,
+ all_queued,
+ time_total,
+ time_spent,
+ time_left,
+ max5data(speed, buffer[2]), /* speed */
+ final ? "\n" :"");
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void progress_finalize(struct per_transfer *per)
+{
+ /* get the numbers before this transfer goes away */
+ all_dlalready += per->dlnow;
+ all_ulalready += per->ulnow;
+}
diff --git a/src/tool_progress.h b/src/tool_progress.h
new file mode 100644
index 00000000..34b60981
--- /dev/null
+++ b/src/tool_progress.h
@@ -0,0 +1,39 @@
+#ifndef HEADER_CURL_TOOL_PROGRESS_H
+#define HEADER_CURL_TOOL_PROGRESS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+int xferinfo_cb(void *clientp,
+ curl_off_t dltotal,
+ curl_off_t dlnow,
+ curl_off_t ultotal,
+ curl_off_t ulnow);
+
+bool progress_meter(struct GlobalConfig *global,
+ struct timeval *start,
+ bool final);
+void progress_finalize(struct per_transfer *per);
+
+extern curl_off_t all_xfers; /* total number */
+
+#endif /* HEADER_CURL_TOOL_PROGRESS_H */
diff --git a/src/tool_setopt.c b/src/tool_setopt.c
index b5486e6e..4c98d905 100644
--- a/src/tool_setopt.c
+++ b/src/tool_setopt.c
@@ -82,6 +82,7 @@ const NameValue setopt_nv_CURL_HTTP_VERSION[] = {
NV(CURL_HTTP_VERSION_1_1),
NV(CURL_HTTP_VERSION_2_0),
NV(CURL_HTTP_VERSION_2TLS),
+ NV(CURL_HTTP_VERSION_3),
NVEND,
};
@@ -823,6 +824,16 @@ bool tool_setopt_skip(CURLoption tag)
break;
}
#endif
+#ifdef CURL_DISABLE_NETRC
+#define USED_TAG
+ switch(tag) {
+ case CURLOPT_NETRC:
+ case CURLOPT_NETRC_FILE:
+ return TRUE;
+ default:
+ break;
+ }
+#endif
#ifndef USED_TAG
(void)tag;
diff --git a/src/tool_version.h b/src/tool_version.h
index 04c879c6..8dfc9e7a 100644
--- a/src/tool_version.h
+++ b/src/tool_version.h
@@ -25,7 +25,7 @@
#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.65.3"
+#define CURL_VERSION "7.66.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
diff --git a/src/tool_writeout.c b/src/tool_writeout.c
index d5b0bc44..27b2ac50 100644
--- a/src/tool_writeout.c
+++ b/src/tool_writeout.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -314,6 +314,9 @@ void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo)
case CURL_HTTP_VERSION_2_0:
version = "2";
break;
+ case CURL_HTTP_VERSION_3:
+ version = "3";
+ break;
}
fprintf(stream, version);
diff --git a/tests/Makefile.in b/tests/Makefile.in
index d6c20a3f..0656334d 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -350,8 +350,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -473,9 +477,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/Makefile
+ $(AUTOMAKE) --foreign tests/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/tests/README b/tests/README
index 16a8f06e..bfd234a1 100644
--- a/tests/README
+++ b/tests/README
@@ -216,27 +216,12 @@ The curl Test Suite
2.1 Test case numbering
- 1 - 99 HTTP
- 100 - 199 FTP
- 200 - 299 FILE
- 300 - 399 HTTPS
- 400 - 499 FTPS
- 500 - 599 libcurl source code tests, not using the curl command tool
- 600 - 699 SCP/SFTP
- 700 - 799 SOCKS4 (even numbers) and SOCK5 (odd numbers)
- 800 - 849 IMAP
- 850 - 899 POP3
- 900 - 999 SMTP
- 1000 - 1299 miscellaneous
- 1300 - 1399 unit tests
- 1400 - 1499 miscellaneous
- 1500 - 1599 libcurl source code tests, not using the curl command tool
- (same as 5xx)
- 1600 - 1699 unit tests
- 2000 - x multiple sequential protocols per test case
-
- There's nothing in the system that *requires* us to keep within these number
- series.
+ Test cases used to be numbered by category, but the ranges filled
+ up. Subsets of tests can now be selected by passing keywords to the
+ runtests.pl script via the make TFLAGS variable.
+
+ New tests should now be added by finding a free number in
+ tests/data/Makefile.inc.
3. Write tests
diff --git a/tests/certs/Makefile.in b/tests/certs/Makefile.in
index a47ac5b5..e0da0550 100644
--- a/tests/certs/Makefile.in
+++ b/tests/certs/Makefile.in
@@ -329,8 +329,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
diff --git a/tests/certs/scripts/Makefile.in b/tests/certs/scripts/Makefile.in
index 64f4244e..f709d2cf 100644
--- a/tests/certs/scripts/Makefile.in
+++ b/tests/certs/scripts/Makefile.in
@@ -269,8 +269,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
diff --git a/tests/data/Makefile.in b/tests/data/Makefile.in
index 246ffa32..ef61ac81 100644
--- a/tests/data/Makefile.in
+++ b/tests/data/Makefile.in
@@ -291,8 +291,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -395,7 +399,7 @@ test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
-test334 \
+test334 test335 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
@@ -431,20 +435,21 @@ test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
test836 test837 test838 test839 test840 test841 test842 test843 test844 \
-test845 test846 test847 \
+test845 test846 test847 test848 test849 \
\
test850 test851 test852 test853 test854 test855 test856 test857 test858 \
test859 test860 test861 test862 test863 test864 test865 test866 test867 \
test868 test869 test870 test871 test872 test873 test874 test875 test876 \
test877 test878 test879 test880 test881 test882 test883 test884 test885 \
-test886 test887 test888 test889 test890 test891 \
+test886 test887 test888 test889 test890 test891 test892 test893 \
\
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
test936 test937 test938 test939 test940 test941 test942 test943 test944 \
-test945 test946 test947 test948 test949 test950 test951 test952 \
+test945 test946 test947 test948 test949 test950 test951 test952 test953 \
+test954 \
\
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -467,7 +472,7 @@ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 \
-test1170 test1171 test1172 test1173 \
+test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
@@ -478,7 +483,7 @@ test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 \
-test1268 \
+test1268 test1269 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 \
@@ -515,7 +520,7 @@ test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
-test1590 test1591 test1592 test1593 \
+test1590 test1591 test1592 test1593 test1594 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
@@ -537,7 +542,8 @@ test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \
test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
test2064 test2065 test2066 test2067 test2068 test2069 \
- test2071 test2072 test2073 test2074 test2075 test2076 \
+ test2071 test2072 test2073 test2074 test2075 test2076 test2077 \
+test2078 \
test2080 \
test2100 \
\
@@ -558,9 +564,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/data/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/data/Makefile
+ $(AUTOMAKE) --foreign tests/data/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 6ec5a3c1..fc22c2f1 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -57,7 +57,7 @@ test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
-test334 \
+test334 test335 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
@@ -93,20 +93,21 @@ test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
test827 test828 test829 test830 test831 test832 test833 test834 test835 \
test836 test837 test838 test839 test840 test841 test842 test843 test844 \
-test845 test846 test847 \
+test845 test846 test847 test848 test849 \
\
test850 test851 test852 test853 test854 test855 test856 test857 test858 \
test859 test860 test861 test862 test863 test864 test865 test866 test867 \
test868 test869 test870 test871 test872 test873 test874 test875 test876 \
test877 test878 test879 test880 test881 test882 test883 test884 test885 \
-test886 test887 test888 test889 test890 test891 \
+test886 test887 test888 test889 test890 test891 test892 test893 \
\
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
test918 test919 test920 test921 test922 test923 test924 test925 test926 \
test927 test928 test929 test930 test931 test932 test933 test934 test935 \
test936 test937 test938 test939 test940 test941 test942 test943 test944 \
-test945 test946 test947 test948 test949 test950 test951 test952 \
+test945 test946 test947 test948 test949 test950 test951 test952 test953 \
+test954 \
\
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -129,7 +130,7 @@ test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 \
-test1170 test1171 test1172 test1173 \
+test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
@@ -140,7 +141,7 @@ test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 \
-test1268 \
+test1268 test1269 \
\
test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
test1288 test1289 test1290 test1291 test1292 \
@@ -177,7 +178,7 @@ test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
-test1590 test1591 test1592 test1593 \
+test1590 test1591 test1592 test1593 test1594 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
@@ -199,7 +200,8 @@ test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
test2048 test2049 test2050 test2051 test2052 test2053 test2054 test2055 \
test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
test2064 test2065 test2066 test2067 test2068 test2069 \
- test2071 test2072 test2073 test2074 test2075 test2076 \
+ test2071 test2072 test2073 test2074 test2075 test2076 test2077 \
+test2078 \
test2080 \
test2100 \
\
diff --git a/tests/data/test1002 b/tests/data/test1002
index d12046e5..c20995d9 100644
--- a/tests/data/test1002
+++ b/tests/data/test1002
@@ -103,6 +103,14 @@ Expect: 100-continue
st
GET http://%HOSTIP:%HTTPPORT/1002.upload2 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
+Content-Range: bytes 2-4/5
+User-Agent: curl/7.16.1
+Accept: */*
+Proxy-Connection: Keep-Alive
+Content-Length: 0
+
+GET http://%HOSTIP:%HTTPPORT/1002.upload2 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="auser", realm="testrealm", nonce="1053604144", uri="/1002.upload2", response="d711f0d2042786d930de635ba0d1a1d0"
Content-Range: bytes 2-4/5
User-Agent: curl/7.16.1
diff --git a/tests/data/test1135 b/tests/data/test1135
index 3591a543..eca6860f 100644
--- a/tests/data/test1135
+++ b/tests/data/test1135
@@ -91,6 +91,7 @@ CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
+CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
diff --git a/tests/data/test1174 b/tests/data/test1174
new file mode 100644
index 00000000..b316fde8
--- /dev/null
+++ b/tests/data/test1174
@@ -0,0 +1,50 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP/0.9
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+-foo- swsclose
+</data>
+<datacheck>
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP/0.9 GET response denied by default
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1174
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1174 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+# unsupported protocol
+<errorcode>
+1
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1269 b/tests/data/test1269
new file mode 100644
index 00000000..c7766363
--- /dev/null
+++ b/tests/data/test1269
@@ -0,0 +1,34 @@
+<testcase>
+<info>
+<keywords>
+--retry-delay
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+ <name>
+too large --retry-delay value
+ </name>
+ <command>
+--retry 3 --retry-delay 9223372036854776 http://%HOSTIP:%HTTPPORT/1269
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+2
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1291 b/tests/data/test1291
index 3f157518..a2e505fc 100644
--- a/tests/data/test1291
+++ b/tests/data/test1291
@@ -21,7 +21,7 @@ HTTP PUT
none
</server>
<name>
-Attempt to upload 100K files but fail immediately
+Attempt to upload 1000 files but fail immediately
</name>
<command>
-K log/cmd1291 --fail-early
@@ -31,7 +31,7 @@ XXXXXXXx
</file>
# generate the config file
<precheck>
-perl -e 'for(1 .. 100000) { printf("upload-file=log/upload-this\nurl=htttttp://non-existing-host.haxx.se/upload/1291\n", $_);}' > log/cmd1291;
+perl -e 'for(1 .. 1000) { printf("upload-file=log/upload-this\nurl=htttttp://non-existing-host.haxx.se/upload/1291\n", $_);}' > log/cmd1291;
</precheck>
</client>
@@ -40,11 +40,5 @@ perl -e 'for(1 .. 100000) { printf("upload-file=log/upload-this\nurl=htttttp://n
<errorcode>
1
</errorcode>
-
-# we disable valgrind here since it takes 40+ seconds even on a fairly snappy
-# machine
-<valgrind>
-disable
-</valgrind>
</verify>
</testcase>
diff --git a/tests/data/test1401 b/tests/data/test1401
index 647f036f..ec3b25cc 100644
--- a/tests/data/test1401
+++ b/tests/data/test1401
@@ -88,7 +88,6 @@ int main(int argc, char *argv[])
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1);
curl_easy_setopt(hnd, CURLOPT_USERAGENT, "MyUA");
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
- curl_easy_setopt(hnd, CURLOPT_HTTP09_ALLOWED, 1L);
curl_easy_setopt(hnd, CURLOPT_COOKIE, "chocolate=chip");
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
diff --git a/tests/data/test1402 b/tests/data/test1402
index b9f52f2e..bf7eb7b8 100644
--- a/tests/data/test1402
+++ b/tests/data/test1402
@@ -80,7 +80,6 @@ int main(int argc, char *argv[])
curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)16);
curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
- curl_easy_setopt(hnd, CURLOPT_HTTP09_ALLOWED, 1L);
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
diff --git a/tests/data/test1403 b/tests/data/test1403
index db13081b..731d274b 100644
--- a/tests/data/test1403
+++ b/tests/data/test1403
@@ -75,7 +75,6 @@ int main(int argc, char *argv[])
curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/1403?foo=bar&baz=quux");
curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
- curl_easy_setopt(hnd, CURLOPT_HTTP09_ALLOWED, 1L);
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
diff --git a/tests/data/test1404 b/tests/data/test1404
index e976f0b3..d3c66a9d 100644
--- a/tests/data/test1404
+++ b/tests/data/test1404
@@ -146,7 +146,6 @@ int main(int argc, char *argv[])
curl_easy_setopt(hnd, CURLOPT_MIMEPOST, mime1);
curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
- curl_easy_setopt(hnd, CURLOPT_HTTP09_ALLOWED, 1L);
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
diff --git a/tests/data/test1406 b/tests/data/test1406
index ab835d3c..8803c846 100644
--- a/tests/data/test1406
+++ b/tests/data/test1406
@@ -76,13 +76,13 @@ int main(int argc, char *argv[])
hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
- curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, (curl_off_t)38);
curl_easy_setopt(hnd, CURLOPT_URL, "smtp://%HOSTIP:%SMTPPORT/1406");
curl_easy_setopt(hnd, CURLOPT_UPLOAD, 1L);
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
curl_easy_setopt(hnd, CURLOPT_MAIL_FROM, "sender@example.com");
curl_easy_setopt(hnd, CURLOPT_MAIL_RCPT, slist1);
+ curl_easy_setopt(hnd, CURLOPT_INFILESIZE_LARGE, (curl_off_t)38);
/* Here is a list of options the curl code used that cannot get generated
as source easily. You may select to either not use them or implement
diff --git a/tests/data/test1412 b/tests/data/test1412
index ae63290e..36d3d1d9 100644
--- a/tests/data/test1412
+++ b/tests/data/test1412
@@ -25,6 +25,19 @@ Connection: close
This is not the real page
</data>
+# The second URL will get this response
+<data1>
+HTTP/1.1 401 Authorization Required swsclose
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts"
+WWW-Authenticate: Basic realm="gimme all yer s3cr3ts"
+WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344"
+Content-Type: text/html; charset=iso-8859-1
+Connection: close
+
+This is not the real page
+</data1>
+
# This is supposed to be returned when the server gets a
# Authorization: Digest line passed-in from the client
<data1000>
@@ -109,6 +122,11 @@ Accept: */*
GET /14120001 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
+Accept: */*
+
+GET /14120001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/14120001", response="0085df91870374c8bf4e94415e7fbf8e"
User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3
Accept: */*
diff --git a/tests/data/test1418 b/tests/data/test1418
index b3a2f23b..c137b1c5 100644
--- a/tests/data/test1418
+++ b/tests/data/test1418
@@ -22,6 +22,15 @@ WWW-Authenticate: Basic
Please auth with me
</data>
+<data3>
+HTTP/1.1 401 Authentication please!
+Content-Length: 20
+WWW-Authenticate: Digest realm="loonie", nonce="314156592"
+WWW-Authenticate: Basic
+
+Please auth with me
+</data3>
+
# This is supposed to be returned when the server gets the second
# Authorization: NTLM line passed-in from the client
<data1000>
@@ -99,6 +108,10 @@ Accept: */*
GET /14180003 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+GET /14180003 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="loonie", nonce="314156592", uri="/14180003", response="1c6390a67bac3283a9b023402f3b3540"
Accept: */*
diff --git a/tests/data/test1420 b/tests/data/test1420
index ebd45ff8..03c4584d 100644
--- a/tests/data/test1420
+++ b/tests/data/test1420
@@ -66,7 +66,6 @@ int main(int argc, char *argv[])
curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
curl_easy_setopt(hnd, CURLOPT_URL, "imap://%HOSTIP:%IMAPPORT/1420/;MAILINDEX=1");
curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:secret");
- curl_easy_setopt(hnd, CURLOPT_HTTP09_ALLOWED, 1L);
curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
diff --git a/tests/data/test1514 b/tests/data/test1514
index 38f5da61..6c09ae3b 100644
--- a/tests/data/test1514
+++ b/tests/data/test1514
@@ -4,13 +4,14 @@
HTTP
HTTP POST
Content-Length
+chunked Transfer-Encoding
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
-HTTP/1.1 411 Length Required
+HTTP/1.1 200 OK
Date: Sun, 19 Jan 2014 18:50:58 GMT
Server: test-server/fake swsclose
Connection: close
@@ -36,13 +37,27 @@ http://%HOSTIP:%HTTPPORT/1514
# Verify data after the test has been "shot"
<verify>
# Content-Length header is not present
+# Transfer-Encoding header is added automatically
<protocol>
POST /1514 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
+Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
+1
+d
+1
+u
+1
+m
+1
+m
+1
+y
+0
+
</protocol>
</verify>
</testcase>
diff --git a/tests/data/test153 b/tests/data/test153
index f679de4e..77f7adb0 100644
--- a/tests/data/test153
+++ b/tests/data/test153
@@ -9,7 +9,7 @@ HTTP Digest auth
# Server-side
<reply>
-# reply back and ask for Digest auth
+# First reply back and ask for Digest auth
<data1>
HTTP/1.1 401 Authorization Required swsclose
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
@@ -20,6 +20,17 @@ Content-Length: 26
This is not the real page
</data1>
+# second reply back
+<data2>
+HTTP/1.1 401 Authorization Required swsclose
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
+This is not the real page
+</data2>
+
# This is supposed to be returned when the server gets a
# Authorization: Digest line passed-in from the client
<data1001>
@@ -93,6 +104,11 @@ Accept: */*
GET /1530002 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
+User-Agent: curl/7.11.0-CVS (i686-pc-linux-gnu) libcurl/7.11.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS
+Accept: */*
+
+GET /1530002 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/1530002", response="f84511b014fdd0ba6494f42871079c32"
User-Agent: curl/7.11.0-CVS (i686-pc-linux-gnu) libcurl/7.11.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS
Accept: */*
@@ -117,6 +133,12 @@ Content-Type: text/html; charset=iso-8859-1
Content-Length: 23
This IS the real page!
+HTTP/1.1 401 Authorization Required swsclose
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"
+Content-Type: text/html; charset=iso-8859-1
+Content-Length: 26
+
HTTP/1.1 401 Authorization re-negotiation please swsbounce
Server: Apache/1.3.27 (Darwin) PHP/4.1.2
WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth"
diff --git a/tests/data/test1538 b/tests/data/test1538
index 98d6731e..9374debb 100644
--- a/tests/data/test1538
+++ b/tests/data/test1538
@@ -126,7 +126,8 @@ e90: SSL public key does not match pinned public key
e91: SSL server certificate status verification FAILED
e92: Stream error in the HTTP/2 framing layer
e93: API function called from within callback
-e94: Unknown error
+e94: An authentication function returned an error
+e95: Unknown error
m-1: Please call curl_multi_perform() soon
m0: No error
m1: Invalid multi handle
diff --git a/tests/data/test1594 b/tests/data/test1594
new file mode 100644
index 00000000..4907ca2b
--- /dev/null
+++ b/tests/data/test1594
@@ -0,0 +1,52 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP replaced headers
+CURLOPT_TIMECONDITION
+If-Modified-Since
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 503 Error
+Date: Thu, 11 Jul 2019 02:26:59 GMT
+Server: test-server/swsclose
+Retry-After: 22
+
+</data>
+</reply>
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+HTTP Retry-After header parsing and extraction
+</name>
+<tool>
+lib1594
+</tool>
+<command>
+http://%HOSTIP:%HTTPPORT/1594
+</command>
+</client>
+
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1594 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol>
+<stdout>
+Retry-After: 22
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1654 b/tests/data/test1654
index 175076c8..5b32cb41 100644
--- a/tests/data/test1654
+++ b/tests/data/test1654
@@ -32,7 +32,7 @@ unit1654
<file name="log/1654" mode="text">
h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
# a comment
-h2c example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
+h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
# also a comment
@@ -45,14 +45,14 @@ rubbish
# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h2 example.com 443 h3 shiny.example.com 8443 "20191231 00:00:00" 0 1
-h2c example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
+h2 foo.example.com 443 h3 shiny.example.com 8443 "20291231 23:30:00" 0 1
h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
h1 2.example.org 8080 h3 2.example.org 8080 "20190125 22:34:21" 0 0
h1 3.example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
h1 3.example.org 8080 h3 yesyes.com 8080 "20190125 22:34:21" 0 0
-h2c example.org 80 h2 example.com 443 "20190124 22:36:21" 0 0
+h2 example.org 80 h2 example.com 443 "20190124 22:36:21" 0 0
</file>
</verify>
</testcase>
diff --git a/tests/data/test2006 b/tests/data/test2006
index 3acbdaee..4d08e0aa 100644
--- a/tests/data/test2006
+++ b/tests/data/test2006
@@ -86,10 +86,6 @@ Accept: */*
Some data delivered from an HTTP resource
</file1>
<file2 name="log/heads2006">
-Content-Length: 496
-Accept-ranges: bytes
-
-
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:49:01 GMT
Server: test-server/fake
diff --git a/tests/data/test2007 b/tests/data/test2007
index b169c490..bb4d5cde 100644
--- a/tests/data/test2007
+++ b/tests/data/test2007
@@ -90,10 +90,6 @@ Something delivered from an HTTP resource
s/Last-Modified:.*//
</stripfile2>
<file2 name="log/heads2007">
-Content-Length: 496
-Accept-ranges: bytes
-
-
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 14:50:02 GMT
Server: test-server/fake
diff --git a/tests/data/test2008 b/tests/data/test2008
index 012f221c..d6bbf6b4 100644
--- a/tests/data/test2008
+++ b/tests/data/test2008
@@ -82,10 +82,6 @@ Some stuff delivered from an HTTP resource
s/Last-Modified:.*//
</stripfile2>
<file2 name="log/heads2008">
-Content-Length: 496
-Accept-ranges: bytes
-
-
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 15:23:48 GMT
Server: test-server/fake
diff --git a/tests/data/test2009 b/tests/data/test2009
index b0e5c6c6..1a933585 100644
--- a/tests/data/test2009
+++ b/tests/data/test2009
@@ -83,10 +83,6 @@ Some contents delivered from an HTTP resource
s/Last-Modified:.*//
</stripfile2>
<file2 name="log/heads2009">
-Content-Length: 496
-Accept-ranges: bytes
-
-
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 16:27:17 GMT
Server: test-server/fake
diff --git a/tests/data/test2010 b/tests/data/test2010
index 33bb309e..1f5320fe 100644
--- a/tests/data/test2010
+++ b/tests/data/test2010
@@ -82,10 +82,6 @@ Contents delivered from an HTTP resource
s/Last-Modified:.*//
</stripfile2>
<file2 name="log/heads2010">
-Content-Length: 496
-Accept-ranges: bytes
-
-
HTTP/1.1 200 OK
Date: Thu, 21 Jun 2012 17:37:27 GMT
Server: test-server/fake
diff --git a/tests/data/test2047 b/tests/data/test2047
index fc140486..bc735097 100644
--- a/tests/data/test2047
+++ b/tests/data/test2047
@@ -92,7 +92,7 @@ OK
1
1
3
-http://xn--4cab6c.se/20470001
+http://åäö.se/20470001
text/plain; charset=us-ascii
200
</stdout>
diff --git a/tests/data/test2077 b/tests/data/test2077
new file mode 100644
index 00000000..0c600f5c
--- /dev/null
+++ b/tests/data/test2077
@@ -0,0 +1,42 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+GSS-API
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK swsclose
+Content-Length: 23
+
+This IS the real page!
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+GSS-API
+</features>
+<name>
+curl --fail --negotiate to unauthenticated service fails
+</name>
+<command>
+http://%HOSTIP:%HTTPPORT/2077 -u : --fail --negotiate
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test2078 b/tests/data/test2078
new file mode 100644
index 00000000..99bc2dbe
--- /dev/null
+++ b/tests/data/test2078
@@ -0,0 +1,54 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+GSS-API
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK swsclose
+Content-Length: 23
+
+This IS the real page!
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+GSS-API
+</features>
+<name>
+curl --negotiate should not send empty POST request only
+</name>
+<command>
+http://%HOSTIP:%HTTPPORT/2078 -u : --negotiate --data name=value
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+0
+</errorcode>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol nonewline="yes">
+POST /2078 HTTP/1.1
+Host: 127.0.0.1:8990
+Accept: */*
+Content-Length: 10
+Content-Type: application/x-www-form-urlencoded
+
+name=value
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test335 b/tests/data/test335
new file mode 100644
index 00000000..4d54da98
--- /dev/null
+++ b/tests/data/test335
@@ -0,0 +1,102 @@
+# Mostly a duplicate of test168
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP proxy
+HTTP proxy Digest auth
+HTTP Digest auth
+HTTP auth in URL
+</keywords>
+</info>
+
+# Server-side
+<reply>
+
+# this is returned first since we get no proxy-auth
+<data>
+HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
+Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
+
+And you should ignore this data.
+</data>
+
+# then this is returned since we get no server-auth
+<data1000>
+HTTP/1.1 401 Authorization to the remote host as well swsbounce swsclose
+WWW-Authenticate: Digest realm="realmweirdo", nonce="123456"
+
+you should ignore this data too
+</data1000>
+
+<data1001>
+HTTP/1.1 200 OK swsclose
+Server: no
+Content-Length: 15
+
+Nice auth sir!
+</data1001>
+
+<datacheck>
+HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
+Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"
+
+HTTP/1.1 401 Authorization to the remote host as well swsbounce swsclose
+WWW-Authenticate: Digest realm="realmweirdo", nonce="123456"
+
+HTTP/1.1 200 OK swsclose
+Server: no
+Content-Length: 15
+
+Nice auth sir!
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+!SSPI
+crypto
+</features>
+ <name>
+HTTP with proxy Digest and site Digest with creds in URLs
+ </name>
+ <command>
+http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@%HOSTIP:%HTTPPORT --proxy-digest --digest
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent: curl/.*
+</strip>
+<protocol>
+GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
+User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
+Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c5626cb"
+User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b zlib/1.1.4 c-ares/1.2.0 libidn/0.4.3
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+GET http://data.from.server.requiring.digest.hohoho.com/335 HTTP/1.1
+Host: data.from.server.requiring.digest.hohoho.com
+Proxy-Authorization: Digest username="foo", realm="weirdorealm", nonce="12345", uri="/335", response="f61609cd8f5bb205ef4e169b2c5626cb"
+Authorization: Digest username="digest", realm="realmweirdo", nonce="123456", uri="/335", response="08a2e2e684047f4219a38ddc189ac00c"
+User-Agent: curl/7.12.0-CVS (i686-pc-linux-gnu) libcurl/7.12.0-CVS OpenSSL/0.9.6b ipv6 zlib/1.1.4 GSS libidn/0.4.3
+Accept: */*
+Proxy-Connection: Keep-Alive
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test356 b/tests/data/test356
index e2ac4860..1be05fe6 100644
--- a/tests/data/test356
+++ b/tests/data/test356
@@ -16,7 +16,7 @@ Content-Length: 6
Connection: close
Content-Type: text/html
Funny-head: yesyes
-Alt-Svc: h1="nowhere.foo:81"
+Alt-Svc: h1="nowhere.foo:81", un-kno22!wn=":82"
-foo-
</data>
diff --git a/tests/data/test848 b/tests/data/test848
new file mode 100644
index 00000000..2b4a30b2
--- /dev/null
+++ b/tests/data/test848
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH PLAIN
+RFC4616
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTHENTICATE +
+REPLY c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ= A002 OK AUTHENTICATE completed
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP plain authentication with alternative authorization identity
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/848/;MAILINDEX=1' -u user:secret --sasl-authzid shared-mailbox
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+A001 CAPABILITY
+A002 AUTHENTICATE PLAIN
+c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ=
+A003 SELECT 848
+A004 FETCH 1 BODY[]
+A005 LOGOUT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test849 b/tests/data/test849
new file mode 100644
index 00000000..8a4b39c0
--- /dev/null
+++ b/tests/data/test849
@@ -0,0 +1,51 @@
+<testcase>
+<info>
+<keywords>
+IMAP
+SASL
+SASL AUTH PLAIN
+RFC4616
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTHENTICATE +
+REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= A002 NO Not authorized
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+imap
+</server>
+ <name>
+IMAP plain authentication with alternative authorization identity (Not authorized)
+ </name>
+ <command>
+'imap://%HOSTIP:%IMAPPORT/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "LOGOUT"
+<protocol>
+A001 CAPABILITY
+A002 AUTHENTICATE PLAIN
+dXJzZWwAa3VydAB4aXBqM3BsbXE=
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test892 b/tests/data/test892
new file mode 100644
index 00000000..4b831829
--- /dev/null
+++ b/tests/data/test892
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH PLAIN
+RFC1734
+RFC4616
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH +
+REPLY c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ= +OK Login successful
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 plain authentication with alternative authorization identity
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/892 -u user:secret --sasl-authzid shared-mailbox
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA
+AUTH PLAIN
+c2hhcmVkLW1haWxib3gAdXNlcgBzZWNyZXQ=
+RETR 892
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test893 b/tests/data/test893
new file mode 100644
index 00000000..2a762fc2
--- /dev/null
+++ b/tests/data/test893
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+POP3
+SASL
+SASL AUTH PLAIN
+RFC1734
+RFC4616
+RFC5034
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH +
+REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= -ERR Not authorized
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+ <name>
+POP3 plain authentication with alternative authorization identity (Not authorized)
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/893 -u kurt:xipj3plmq --sasl-authzid ursel
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+CAPA
+AUTH PLAIN
+dXJzZWwAa3VydAB4aXBqM3BsbXE=
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test953 b/tests/data/test953
new file mode 100644
index 00000000..4a70e1f3
--- /dev/null
+++ b/tests/data/test953
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH PLAIN
+RFC4616
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH 334 PLAIN supported
+REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= 235 Authenticated
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP plain authentication with alternative authorization identity
+ </name>
+<stdin>
+mail body
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/953 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 953
+AUTH PLAIN
+dXJzZWwAa3VydAB4aXBqM3BsbXE=
+MAIL FROM:<sender@example.com>
+RCPT TO:<recipient@example.com>
+DATA
+QUIT
+</protocol>
+<upload>
+mail body
+.
+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test954 b/tests/data/test954
new file mode 100644
index 00000000..a5e6bb0d
--- /dev/null
+++ b/tests/data/test954
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+SASL
+SASL AUTH PLAIN
+RFC4616
+RFC4954
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+AUTH PLAIN
+REPLY AUTH 334 PLAIN supported
+REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= 501 Not authorized
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP plain authentication with alternative authorization identity (Not authorized)
+ </name>
+<stdin>
+mail body
+</stdin>
+ <command>
+smtp://%HOSTIP:%SMTPPORT/954 --mail-rcpt recipient@example.com --mail-from sender@example.com -u kurt:xipj3plmq --sasl-authzid ursel -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# 67 - CURLE_LOGIN_DENIED
+<errorcode>
+67
+</errorcode>
+#
+# The multi interface considers a broken "CONNECT" as a prematurely broken
+# transfer and such a connection will not get a "QUIT"
+<protocol>
+EHLO 954
+AUTH PLAIN
+dXJzZWwAa3VydAB4aXBqM3BsbXE=
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/libtest/Makefile.in b/tests/libtest/Makefile.in
index 6e4b3c53..456e67f2 100644
--- a/tests/libtest/Makefile.in
+++ b/tests/libtest/Makefile.in
@@ -138,8 +138,9 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
lib1554$(EXEEXT) lib1555$(EXEEXT) lib1556$(EXEEXT) \
lib1557$(EXEEXT) lib1558$(EXEEXT) lib1559$(EXEEXT) \
lib1560$(EXEEXT) lib1591$(EXEEXT) lib1592$(EXEEXT) \
- lib1593$(EXEEXT) lib1900$(EXEEXT) lib1905$(EXEEXT) \
- lib1906$(EXEEXT) lib2033$(EXEEXT)
+ lib1593$(EXEEXT) lib1594$(EXEEXT) lib1596$(EXEEXT) \
+ lib1900$(EXEEXT) lib1905$(EXEEXT) lib1906$(EXEEXT) \
+ lib2033$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@@ -553,549 +554,560 @@ am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_121) \
$(am__objects_122) $(am__objects_123)
lib1593_OBJECTS = $(am_lib1593_OBJECTS)
lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_130 = lib1900-first.$(OBJEXT)
-am__objects_131 = lib1900-testutil.$(OBJEXT)
-am__objects_132 = ../../lib/lib1900-warnless.$(OBJEXT)
-am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_130) \
+am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_121) \
+ $(am__objects_122) $(am__objects_123)
+lib1594_OBJECTS = $(am_lib1594_OBJECTS)
+lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_130 = lib1596-first.$(OBJEXT)
+am__objects_131 = lib1596-testutil.$(OBJEXT)
+am__objects_132 = ../../lib/lib1596-warnless.$(OBJEXT)
+am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_130) \
$(am__objects_131) $(am__objects_132)
+lib1596_OBJECTS = $(am_lib1596_OBJECTS)
+lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_133 = lib1900-first.$(OBJEXT)
+am__objects_134 = lib1900-testutil.$(OBJEXT)
+am__objects_135 = ../../lib/lib1900-warnless.$(OBJEXT)
+am_lib1900_OBJECTS = lib1900-lib1900.$(OBJEXT) $(am__objects_133) \
+ $(am__objects_134) $(am__objects_135)
lib1900_OBJECTS = $(am_lib1900_OBJECTS)
lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_133 = lib1905-first.$(OBJEXT)
-am__objects_134 = lib1905-testutil.$(OBJEXT)
-am__objects_135 = ../../lib/lib1905-warnless.$(OBJEXT)
-am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_133) \
- $(am__objects_134) $(am__objects_135)
+am__objects_136 = lib1905-first.$(OBJEXT)
+am__objects_137 = lib1905-testutil.$(OBJEXT)
+am__objects_138 = ../../lib/lib1905-warnless.$(OBJEXT)
+am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_136) \
+ $(am__objects_137) $(am__objects_138)
lib1905_OBJECTS = $(am_lib1905_OBJECTS)
lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_136 = lib1906-first.$(OBJEXT)
-am__objects_137 = lib1906-testutil.$(OBJEXT)
-am__objects_138 = ../../lib/lib1906-warnless.$(OBJEXT)
-am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_136) \
- $(am__objects_137) $(am__objects_138)
+am__objects_139 = lib1906-first.$(OBJEXT)
+am__objects_140 = lib1906-testutil.$(OBJEXT)
+am__objects_141 = ../../lib/lib1906-warnless.$(OBJEXT)
+am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_139) \
+ $(am__objects_140) $(am__objects_141)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_139 = lib2033-first.$(OBJEXT)
-am__objects_140 = lib2033-testutil.$(OBJEXT)
-am__objects_141 = ../../lib/lib2033-warnless.$(OBJEXT)
+am__objects_142 = lib2033-first.$(OBJEXT)
+am__objects_143 = lib2033-testutil.$(OBJEXT)
+am__objects_144 = ../../lib/lib2033-warnless.$(OBJEXT)
am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
- $(am__objects_139) $(am__objects_140) $(am__objects_141)
+ $(am__objects_142) $(am__objects_143) $(am__objects_144)
lib2033_OBJECTS = $(am_lib2033_OBJECTS)
lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_142 = lib500-first.$(OBJEXT)
-am__objects_143 = lib500-testutil.$(OBJEXT)
-am__objects_144 = lib500-testtrace.$(OBJEXT)
-am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_142) \
- $(am__objects_143) $(am__objects_144)
+am__objects_145 = lib500-first.$(OBJEXT)
+am__objects_146 = lib500-testutil.$(OBJEXT)
+am__objects_147 = lib500-testtrace.$(OBJEXT)
+am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_145) \
+ $(am__objects_146) $(am__objects_147)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_145 = lib501-first.$(OBJEXT)
-am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_145)
+am__objects_148 = lib501-first.$(OBJEXT)
+am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_148)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_146 = lib502-first.$(OBJEXT)
-am__objects_147 = lib502-testutil.$(OBJEXT)
-am__objects_148 = ../../lib/lib502-warnless.$(OBJEXT)
-am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_146) \
- $(am__objects_147) $(am__objects_148)
+am__objects_149 = lib502-first.$(OBJEXT)
+am__objects_150 = lib502-testutil.$(OBJEXT)
+am__objects_151 = ../../lib/lib502-warnless.$(OBJEXT)
+am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_149) \
+ $(am__objects_150) $(am__objects_151)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_149 = lib503-first.$(OBJEXT)
-am__objects_150 = lib503-testutil.$(OBJEXT)
-am__objects_151 = ../../lib/lib503-warnless.$(OBJEXT)
-am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_149) \
- $(am__objects_150) $(am__objects_151)
+am__objects_152 = lib503-first.$(OBJEXT)
+am__objects_153 = lib503-testutil.$(OBJEXT)
+am__objects_154 = ../../lib/lib503-warnless.$(OBJEXT)
+am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_152) \
+ $(am__objects_153) $(am__objects_154)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_152 = lib504-first.$(OBJEXT)
-am__objects_153 = lib504-testutil.$(OBJEXT)
-am__objects_154 = ../../lib/lib504-warnless.$(OBJEXT)
-am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_152) \
- $(am__objects_153) $(am__objects_154)
+am__objects_155 = lib504-first.$(OBJEXT)
+am__objects_156 = lib504-testutil.$(OBJEXT)
+am__objects_157 = ../../lib/lib504-warnless.$(OBJEXT)
+am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_155) \
+ $(am__objects_156) $(am__objects_157)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_155 = lib505-first.$(OBJEXT)
-am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_155)
+am__objects_158 = lib505-first.$(OBJEXT)
+am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_158)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_156 = lib506-first.$(OBJEXT)
-am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_156)
+am__objects_159 = lib506-first.$(OBJEXT)
+am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_159)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_157 = lib507-first.$(OBJEXT)
-am__objects_158 = lib507-testutil.$(OBJEXT)
-am__objects_159 = ../../lib/lib507-warnless.$(OBJEXT)
-am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_157) \
- $(am__objects_158) $(am__objects_159)
+am__objects_160 = lib507-first.$(OBJEXT)
+am__objects_161 = lib507-testutil.$(OBJEXT)
+am__objects_162 = ../../lib/lib507-warnless.$(OBJEXT)
+am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_160) \
+ $(am__objects_161) $(am__objects_162)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_160 = lib508-first.$(OBJEXT)
-am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_160)
+am__objects_163 = lib508-first.$(OBJEXT)
+am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_163)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_161 = lib509-first.$(OBJEXT)
-am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_161)
+am__objects_164 = lib509-first.$(OBJEXT)
+am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_164)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_162 = lib510-first.$(OBJEXT)
-am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_162)
+am__objects_165 = lib510-first.$(OBJEXT)
+am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_165)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_163 = lib511-first.$(OBJEXT)
-am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_163)
+am__objects_166 = lib511-first.$(OBJEXT)
+am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_166)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_164 = lib512-first.$(OBJEXT)
-am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_164)
+am__objects_167 = lib512-first.$(OBJEXT)
+am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_167)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_165 = lib513-first.$(OBJEXT)
-am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_165)
+am__objects_168 = lib513-first.$(OBJEXT)
+am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_168)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_166 = lib514-first.$(OBJEXT)
-am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_166)
+am__objects_169 = lib514-first.$(OBJEXT)
+am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_169)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_167 = lib515-first.$(OBJEXT)
-am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_167)
+am__objects_170 = lib515-first.$(OBJEXT)
+am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_170)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_168 = lib516-first.$(OBJEXT)
-am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_168)
+am__objects_171 = lib516-first.$(OBJEXT)
+am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_171)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_169 = lib517-first.$(OBJEXT)
-am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_169)
+am__objects_172 = lib517-first.$(OBJEXT)
+am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_172)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_170 = lib518-first.$(OBJEXT)
-am__objects_171 = ../../lib/lib518-warnless.$(OBJEXT)
-am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_170) \
- $(am__objects_171)
+am__objects_173 = lib518-first.$(OBJEXT)
+am__objects_174 = ../../lib/lib518-warnless.$(OBJEXT)
+am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_173) \
+ $(am__objects_174)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_172 = lib519-first.$(OBJEXT)
-am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_172)
+am__objects_175 = lib519-first.$(OBJEXT)
+am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_175)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_173 = lib520-first.$(OBJEXT)
-am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_173)
+am__objects_176 = lib520-first.$(OBJEXT)
+am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_176)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_174 = lib521-first.$(OBJEXT)
-am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_174)
+am__objects_177 = lib521-first.$(OBJEXT)
+am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_177)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_175 = lib523-first.$(OBJEXT)
-am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_175)
+am__objects_178 = lib523-first.$(OBJEXT)
+am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_178)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_176 = lib524-first.$(OBJEXT)
-am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_176)
+am__objects_179 = lib524-first.$(OBJEXT)
+am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_179)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_177 = lib525-first.$(OBJEXT)
-am__objects_178 = lib525-testutil.$(OBJEXT)
-am__objects_179 = ../../lib/lib525-warnless.$(OBJEXT)
-am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_177) \
- $(am__objects_178) $(am__objects_179)
+am__objects_180 = lib525-first.$(OBJEXT)
+am__objects_181 = lib525-testutil.$(OBJEXT)
+am__objects_182 = ../../lib/lib525-warnless.$(OBJEXT)
+am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_180) \
+ $(am__objects_181) $(am__objects_182)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_180 = lib526-first.$(OBJEXT)
-am__objects_181 = lib526-testutil.$(OBJEXT)
-am__objects_182 = ../../lib/lib526-warnless.$(OBJEXT)
-am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_180) \
- $(am__objects_181) $(am__objects_182)
+am__objects_183 = lib526-first.$(OBJEXT)
+am__objects_184 = lib526-testutil.$(OBJEXT)
+am__objects_185 = ../../lib/lib526-warnless.$(OBJEXT)
+am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_183) \
+ $(am__objects_184) $(am__objects_185)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_183 = lib527-first.$(OBJEXT)
-am__objects_184 = lib527-testutil.$(OBJEXT)
-am__objects_185 = ../../lib/lib527-warnless.$(OBJEXT)
-am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_183) \
- $(am__objects_184) $(am__objects_185)
+am__objects_186 = lib527-first.$(OBJEXT)
+am__objects_187 = lib527-testutil.$(OBJEXT)
+am__objects_188 = ../../lib/lib527-warnless.$(OBJEXT)
+am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_186) \
+ $(am__objects_187) $(am__objects_188)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_186 = lib529-first.$(OBJEXT)
-am__objects_187 = lib529-testutil.$(OBJEXT)
-am__objects_188 = ../../lib/lib529-warnless.$(OBJEXT)
-am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_186) \
- $(am__objects_187) $(am__objects_188)
+am__objects_189 = lib529-first.$(OBJEXT)
+am__objects_190 = lib529-testutil.$(OBJEXT)
+am__objects_191 = ../../lib/lib529-warnless.$(OBJEXT)
+am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_189) \
+ $(am__objects_190) $(am__objects_191)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_189 = lib530-first.$(OBJEXT)
-am__objects_190 = lib530-testutil.$(OBJEXT)
-am__objects_191 = ../../lib/lib530-warnless.$(OBJEXT)
-am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_189) \
- $(am__objects_190) $(am__objects_191)
+am__objects_192 = lib530-first.$(OBJEXT)
+am__objects_193 = lib530-testutil.$(OBJEXT)
+am__objects_194 = ../../lib/lib530-warnless.$(OBJEXT)
+am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_192) \
+ $(am__objects_193) $(am__objects_194)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_192 = lib532-first.$(OBJEXT)
-am__objects_193 = lib532-testutil.$(OBJEXT)
-am__objects_194 = ../../lib/lib532-warnless.$(OBJEXT)
-am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_192) \
- $(am__objects_193) $(am__objects_194)
+am__objects_195 = lib532-first.$(OBJEXT)
+am__objects_196 = lib532-testutil.$(OBJEXT)
+am__objects_197 = ../../lib/lib532-warnless.$(OBJEXT)
+am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_195) \
+ $(am__objects_196) $(am__objects_197)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_195 = lib533-first.$(OBJEXT)
-am__objects_196 = lib533-testutil.$(OBJEXT)
-am__objects_197 = ../../lib/lib533-warnless.$(OBJEXT)
-am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_195) \
- $(am__objects_196) $(am__objects_197)
+am__objects_198 = lib533-first.$(OBJEXT)
+am__objects_199 = lib533-testutil.$(OBJEXT)
+am__objects_200 = ../../lib/lib533-warnless.$(OBJEXT)
+am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_198) \
+ $(am__objects_199) $(am__objects_200)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_198 = lib537-first.$(OBJEXT)
-am__objects_199 = ../../lib/lib537-warnless.$(OBJEXT)
-am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_198) \
- $(am__objects_199)
+am__objects_201 = lib537-first.$(OBJEXT)
+am__objects_202 = ../../lib/lib537-warnless.$(OBJEXT)
+am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_201) \
+ $(am__objects_202)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_200 = lib539-first.$(OBJEXT)
-am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_200)
+am__objects_203 = lib539-first.$(OBJEXT)
+am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_203)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_201 = lib540-first.$(OBJEXT)
-am__objects_202 = lib540-testutil.$(OBJEXT)
-am__objects_203 = ../../lib/lib540-warnless.$(OBJEXT)
-am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_201) \
- $(am__objects_202) $(am__objects_203)
+am__objects_204 = lib540-first.$(OBJEXT)
+am__objects_205 = lib540-testutil.$(OBJEXT)
+am__objects_206 = ../../lib/lib540-warnless.$(OBJEXT)
+am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_204) \
+ $(am__objects_205) $(am__objects_206)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_204 = lib541-first.$(OBJEXT)
-am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_204)
+am__objects_207 = lib541-first.$(OBJEXT)
+am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_207)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_205 = lib542-first.$(OBJEXT)
-am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_205)
+am__objects_208 = lib542-first.$(OBJEXT)
+am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_208)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_206 = lib543-first.$(OBJEXT)
-am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_206)
+am__objects_209 = lib543-first.$(OBJEXT)
+am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_209)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_207 = lib544-first.$(OBJEXT)
-am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_207)
+am__objects_210 = lib544-first.$(OBJEXT)
+am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_210)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_208 = lib545-first.$(OBJEXT)
-am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_208)
+am__objects_211 = lib545-first.$(OBJEXT)
+am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_211)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_209 = lib547-first.$(OBJEXT)
-am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_209)
+am__objects_212 = lib547-first.$(OBJEXT)
+am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_212)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_210 = lib548-first.$(OBJEXT)
-am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_210)
+am__objects_213 = lib548-first.$(OBJEXT)
+am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_213)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_211 = lib549-first.$(OBJEXT)
-am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_211)
+am__objects_214 = lib549-first.$(OBJEXT)
+am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_214)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_212 = lib552-first.$(OBJEXT)
-am__objects_213 = ../../lib/lib552-warnless.$(OBJEXT)
-am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_212) \
- $(am__objects_213)
+am__objects_215 = lib552-first.$(OBJEXT)
+am__objects_216 = ../../lib/lib552-warnless.$(OBJEXT)
+am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_215) \
+ $(am__objects_216)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_214 = lib553-first.$(OBJEXT)
-am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_214)
+am__objects_217 = lib553-first.$(OBJEXT)
+am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_217)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_215 = lib554-first.$(OBJEXT)
-am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_215)
+am__objects_218 = lib554-first.$(OBJEXT)
+am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_218)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_216 = lib555-first.$(OBJEXT)
-am__objects_217 = lib555-testutil.$(OBJEXT)
-am__objects_218 = ../../lib/lib555-warnless.$(OBJEXT)
-am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_216) \
- $(am__objects_217) $(am__objects_218)
+am__objects_219 = lib555-first.$(OBJEXT)
+am__objects_220 = lib555-testutil.$(OBJEXT)
+am__objects_221 = ../../lib/lib555-warnless.$(OBJEXT)
+am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_219) \
+ $(am__objects_220) $(am__objects_221)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_219 = lib556-first.$(OBJEXT)
-am__objects_220 = ../../lib/lib556-warnless.$(OBJEXT)
-am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_219) \
- $(am__objects_220)
+am__objects_222 = lib556-first.$(OBJEXT)
+am__objects_223 = ../../lib/lib556-warnless.$(OBJEXT)
+am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_222) \
+ $(am__objects_223)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_221 = lib557-first.$(OBJEXT)
-am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_221)
+am__objects_224 = lib557-first.$(OBJEXT)
+am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_224)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_222 = lib558-first.$(OBJEXT)
-am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_222)
+am__objects_225 = lib558-first.$(OBJEXT)
+am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_225)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_223 = lib559-first.$(OBJEXT)
-am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_223)
+am__objects_226 = lib559-first.$(OBJEXT)
+am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_226)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_224 = lib560-first.$(OBJEXT)
-am__objects_225 = lib560-testutil.$(OBJEXT)
-am__objects_226 = ../../lib/lib560-warnless.$(OBJEXT)
-am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_224) \
- $(am__objects_225) $(am__objects_226)
+am__objects_227 = lib560-first.$(OBJEXT)
+am__objects_228 = lib560-testutil.$(OBJEXT)
+am__objects_229 = ../../lib/lib560-warnless.$(OBJEXT)
+am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_227) \
+ $(am__objects_228) $(am__objects_229)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_227 = lib562-first.$(OBJEXT)
-am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_227)
+am__objects_230 = lib562-first.$(OBJEXT)
+am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_230)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_228 = lib564-first.$(OBJEXT)
-am__objects_229 = lib564-testutil.$(OBJEXT)
-am__objects_230 = ../../lib/lib564-warnless.$(OBJEXT)
-am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_228) \
- $(am__objects_229) $(am__objects_230)
+am__objects_231 = lib564-first.$(OBJEXT)
+am__objects_232 = lib564-testutil.$(OBJEXT)
+am__objects_233 = ../../lib/lib564-warnless.$(OBJEXT)
+am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_231) \
+ $(am__objects_232) $(am__objects_233)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_231 = lib565-first.$(OBJEXT)
-am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_231)
+am__objects_234 = lib565-first.$(OBJEXT)
+am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_234)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_232 = lib566-first.$(OBJEXT)
-am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_232)
+am__objects_235 = lib566-first.$(OBJEXT)
+am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_235)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_233 = lib567-first.$(OBJEXT)
-am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_233)
+am__objects_236 = lib567-first.$(OBJEXT)
+am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_236)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_234 = lib568-first.$(OBJEXT)
-am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_234)
+am__objects_237 = lib568-first.$(OBJEXT)
+am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_237)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_235 = lib569-first.$(OBJEXT)
-am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_235)
+am__objects_238 = lib569-first.$(OBJEXT)
+am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_238)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_236 = lib570-first.$(OBJEXT)
-am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_236)
+am__objects_239 = lib570-first.$(OBJEXT)
+am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_239)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_237 = lib571-first.$(OBJEXT)
-am__objects_238 = ../../lib/lib571-warnless.$(OBJEXT)
-am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_237) \
- $(am__objects_238)
+am__objects_240 = lib571-first.$(OBJEXT)
+am__objects_241 = ../../lib/lib571-warnless.$(OBJEXT)
+am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_240) \
+ $(am__objects_241)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_239 = lib572-first.$(OBJEXT)
-am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_239)
+am__objects_242 = lib572-first.$(OBJEXT)
+am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_242)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_240 = lib573-first.$(OBJEXT)
-am__objects_241 = lib573-testutil.$(OBJEXT)
-am__objects_242 = ../../lib/lib573-warnless.$(OBJEXT)
-am__objects_243 = lib573-testtrace.$(OBJEXT)
-am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_240) \
- $(am__objects_241) $(am__objects_242) $(am__objects_243)
+am__objects_243 = lib573-first.$(OBJEXT)
+am__objects_244 = lib573-testutil.$(OBJEXT)
+am__objects_245 = ../../lib/lib573-warnless.$(OBJEXT)
+am__objects_246 = lib573-testtrace.$(OBJEXT)
+am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_243) \
+ $(am__objects_244) $(am__objects_245) $(am__objects_246)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_244 = lib574-first.$(OBJEXT)
-am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_244)
+am__objects_247 = lib574-first.$(OBJEXT)
+am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_247)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_245 = lib575-first.$(OBJEXT)
-am__objects_246 = lib575-testutil.$(OBJEXT)
-am__objects_247 = ../../lib/lib575-warnless.$(OBJEXT)
-am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_245) \
- $(am__objects_246) $(am__objects_247)
+am__objects_248 = lib575-first.$(OBJEXT)
+am__objects_249 = lib575-testutil.$(OBJEXT)
+am__objects_250 = ../../lib/lib575-warnless.$(OBJEXT)
+am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_248) \
+ $(am__objects_249) $(am__objects_250)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_248 = lib576-first.$(OBJEXT)
-am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_248)
+am__objects_251 = lib576-first.$(OBJEXT)
+am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_251)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_249 = lib578-first.$(OBJEXT)
-am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_249)
+am__objects_252 = lib578-first.$(OBJEXT)
+am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_252)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_250 = lib579-first.$(OBJEXT)
-am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_250)
+am__objects_253 = lib579-first.$(OBJEXT)
+am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_253)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_251 = lib582-first.$(OBJEXT)
-am__objects_252 = lib582-testutil.$(OBJEXT)
-am__objects_253 = ../../lib/lib582-warnless.$(OBJEXT)
-am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_251) \
- $(am__objects_252) $(am__objects_253)
+am__objects_254 = lib582-first.$(OBJEXT)
+am__objects_255 = lib582-testutil.$(OBJEXT)
+am__objects_256 = ../../lib/lib582-warnless.$(OBJEXT)
+am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_254) \
+ $(am__objects_255) $(am__objects_256)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_254 = lib583-first.$(OBJEXT)
-am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_254)
+am__objects_257 = lib583-first.$(OBJEXT)
+am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_257)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_255 = lib585-first.$(OBJEXT)
-am__objects_256 = lib585-testutil.$(OBJEXT)
-am__objects_257 = lib585-testtrace.$(OBJEXT)
-am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_255) \
- $(am__objects_256) $(am__objects_257)
+am__objects_258 = lib585-first.$(OBJEXT)
+am__objects_259 = lib585-testutil.$(OBJEXT)
+am__objects_260 = lib585-testtrace.$(OBJEXT)
+am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_258) \
+ $(am__objects_259) $(am__objects_260)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_258 = lib586-first.$(OBJEXT)
-am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_258)
+am__objects_261 = lib586-first.$(OBJEXT)
+am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_261)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_259 = lib587-first.$(OBJEXT)
-am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_259)
+am__objects_262 = lib587-first.$(OBJEXT)
+am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_262)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_260 = lib589-first.$(OBJEXT)
-am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_260)
+am__objects_263 = lib589-first.$(OBJEXT)
+am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_263)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_261 = lib590-first.$(OBJEXT)
-am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_261)
+am__objects_264 = lib590-first.$(OBJEXT)
+am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_264)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_262 = lib591-first.$(OBJEXT)
-am__objects_263 = lib591-testutil.$(OBJEXT)
-am__objects_264 = ../../lib/lib591-warnless.$(OBJEXT)
-am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_262) \
- $(am__objects_263) $(am__objects_264)
+am__objects_265 = lib591-first.$(OBJEXT)
+am__objects_266 = lib591-testutil.$(OBJEXT)
+am__objects_267 = ../../lib/lib591-warnless.$(OBJEXT)
+am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_265) \
+ $(am__objects_266) $(am__objects_267)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_265 = lib597-first.$(OBJEXT)
-am__objects_266 = lib597-testutil.$(OBJEXT)
-am__objects_267 = ../../lib/lib597-warnless.$(OBJEXT)
-am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_265) \
- $(am__objects_266) $(am__objects_267)
+am__objects_268 = lib597-first.$(OBJEXT)
+am__objects_269 = lib597-testutil.$(OBJEXT)
+am__objects_270 = ../../lib/lib597-warnless.$(OBJEXT)
+am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_268) \
+ $(am__objects_269) $(am__objects_270)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_268 = lib598-first.$(OBJEXT)
-am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_268)
+am__objects_271 = lib598-first.$(OBJEXT)
+am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_271)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_269 = lib599-first.$(OBJEXT)
-am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_269)
+am__objects_272 = lib599-first.$(OBJEXT)
+am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_272)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_270 = lib643-first.$(OBJEXT)
-am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_270)
+am__objects_273 = lib643-first.$(OBJEXT)
+am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_273)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_271 = lib644-first.$(OBJEXT)
-am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_271)
+am__objects_274 = lib644-first.$(OBJEXT)
+am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_274)
lib644_OBJECTS = $(am_lib644_OBJECTS)
lib644_LDADD = $(LDADD)
lib644_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_272 = lib645-first.$(OBJEXT)
-am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_272)
+am__objects_275 = lib645-first.$(OBJEXT)
+am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_275)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_273 = lib650-first.$(OBJEXT)
-am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_273)
+am__objects_276 = lib650-first.$(OBJEXT)
+am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_276)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_274 = lib651-first.$(OBJEXT)
-am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_274)
+am__objects_277 = lib651-first.$(OBJEXT)
+am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_277)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_275 = lib652-first.$(OBJEXT)
-am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_275)
+am__objects_278 = lib652-first.$(OBJEXT)
+am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_278)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_276 = lib653-first.$(OBJEXT)
-am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_276)
+am__objects_279 = lib653-first.$(OBJEXT)
+am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_279)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_277 = lib654-first.$(OBJEXT)
-am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_277)
+am__objects_280 = lib654-first.$(OBJEXT)
+am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_280)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_278 = lib655-first.$(OBJEXT)
-am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_278)
+am__objects_281 = lib655-first.$(OBJEXT)
+am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_281)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_279 = lib658-first.$(OBJEXT)
-am__objects_280 = lib658-testutil.$(OBJEXT)
-am__objects_281 = ../../lib/lib658-warnless.$(OBJEXT)
-am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_279) \
- $(am__objects_280) $(am__objects_281)
+am__objects_282 = lib658-first.$(OBJEXT)
+am__objects_283 = lib658-testutil.$(OBJEXT)
+am__objects_284 = ../../lib/lib658-warnless.$(OBJEXT)
+am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_282) \
+ $(am__objects_283) $(am__objects_284)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_282 = lib659-first.$(OBJEXT)
-am__objects_283 = lib659-testutil.$(OBJEXT)
-am__objects_284 = ../../lib/lib659-warnless.$(OBJEXT)
-am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_282) \
- $(am__objects_283) $(am__objects_284)
+am__objects_285 = lib659-first.$(OBJEXT)
+am__objects_286 = lib659-testutil.$(OBJEXT)
+am__objects_287 = ../../lib/lib659-warnless.$(OBJEXT)
+am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_285) \
+ $(am__objects_286) $(am__objects_287)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_285 = libauthretry-first.$(OBJEXT)
+am__objects_288 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
- $(am__objects_285)
+ $(am__objects_288)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_286 = libntlmconnect-first.$(OBJEXT)
-am__objects_287 = libntlmconnect-testutil.$(OBJEXT)
-am__objects_288 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
+am__objects_289 = libntlmconnect-first.$(OBJEXT)
+am__objects_290 = libntlmconnect-testutil.$(OBJEXT)
+am__objects_291 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
- $(am__objects_286) $(am__objects_287) $(am__objects_288)
+ $(am__objects_289) $(am__objects_290) $(am__objects_291)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
@@ -1154,6 +1166,7 @@ am__depfiles_remade = \
../../lib/$(DEPDIR)/lib1557-warnless.Po \
../../lib/$(DEPDIR)/lib1591-warnless.Po \
../../lib/$(DEPDIR)/lib1592-warnless.Po \
+ ../../lib/$(DEPDIR)/lib1596-warnless.Po \
../../lib/$(DEPDIR)/lib1900-warnless.Po \
../../lib/$(DEPDIR)/lib1905-warnless.Po \
../../lib/$(DEPDIR)/lib1906-warnless.Po \
@@ -1260,6 +1273,8 @@ am__depfiles_remade = \
./$(DEPDIR)/lib1591-lib1591.Po ./$(DEPDIR)/lib1591-testutil.Po \
./$(DEPDIR)/lib1592-first.Po ./$(DEPDIR)/lib1592-lib1592.Po \
./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
+ ./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
+ ./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
./$(DEPDIR)/lib1900-first.Po ./$(DEPDIR)/lib1900-lib1900.Po \
./$(DEPDIR)/lib1900-testutil.Po ./$(DEPDIR)/lib1905-first.Po \
./$(DEPDIR)/lib1905-lib1905.Po ./$(DEPDIR)/lib1905-testutil.Po \
@@ -1416,7 +1431,60 @@ SOURCES = $(libhostname_la_SOURCES) $(libstubgss_la_SOURCES) \
$(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
$(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
$(lib1560_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
- $(lib1593_SOURCES) $(lib1900_SOURCES) $(lib1905_SOURCES) \
+ $(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
+ $(lib1900_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \
+ $(lib2033_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
+ $(lib502_SOURCES) $(lib503_SOURCES) $(lib504_SOURCES) \
+ $(lib505_SOURCES) $(lib506_SOURCES) $(lib507_SOURCES) \
+ $(lib508_SOURCES) $(lib509_SOURCES) $(lib510_SOURCES) \
+ $(lib511_SOURCES) $(lib512_SOURCES) $(lib513_SOURCES) \
+ $(lib514_SOURCES) $(lib515_SOURCES) $(lib516_SOURCES) \
+ $(lib517_SOURCES) $(lib518_SOURCES) $(lib519_SOURCES) \
+ $(lib520_SOURCES) $(lib521_SOURCES) $(lib523_SOURCES) \
+ $(lib524_SOURCES) $(lib525_SOURCES) $(lib526_SOURCES) \
+ $(lib527_SOURCES) $(lib529_SOURCES) $(lib530_SOURCES) \
+ $(lib532_SOURCES) $(lib533_SOURCES) $(lib537_SOURCES) \
+ $(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
+ $(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
+ $(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
+ $(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
+ $(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
+ $(lib557_SOURCES) $(lib558_SOURCES) $(lib559_SOURCES) \
+ $(lib560_SOURCES) $(lib562_SOURCES) $(lib564_SOURCES) \
+ $(lib565_SOURCES) $(lib566_SOURCES) $(lib567_SOURCES) \
+ $(lib568_SOURCES) $(lib569_SOURCES) $(lib570_SOURCES) \
+ $(lib571_SOURCES) $(lib572_SOURCES) $(lib573_SOURCES) \
+ $(lib574_SOURCES) $(lib575_SOURCES) $(lib576_SOURCES) \
+ $(lib578_SOURCES) $(lib579_SOURCES) $(lib582_SOURCES) \
+ $(lib583_SOURCES) $(lib585_SOURCES) $(lib586_SOURCES) \
+ $(lib587_SOURCES) $(lib589_SOURCES) $(lib590_SOURCES) \
+ $(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
+ $(lib599_SOURCES) $(lib643_SOURCES) $(lib644_SOURCES) \
+ $(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \
+ $(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \
+ $(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
+ $(libauthretry_SOURCES) $(libntlmconnect_SOURCES)
+DIST_SOURCES = $(libhostname_la_SOURCES) \
+ $(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
+ $(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
+ $(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
+ $(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
+ $(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
+ $(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
+ $(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
+ $(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
+ $(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
+ $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
+ $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
+ $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
+ $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
+ $(lib1538_SOURCES) $(lib1540_SOURCES) $(lib1541_SOURCES) \
+ $(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
+ $(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
+ $(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
+ $(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1591_SOURCES) \
+ $(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1594_SOURCES) \
+ $(lib1596_SOURCES) $(lib1900_SOURCES) $(lib1905_SOURCES) \
$(lib1906_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
@@ -1449,58 +1517,6 @@ SOURCES = $(libhostname_la_SOURCES) $(libstubgss_la_SOURCES) \
$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
$(lib659_SOURCES) $(libauthretry_SOURCES) \
$(libntlmconnect_SOURCES)
-DIST_SOURCES = $(libhostname_la_SOURCES) \
- $(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
- $(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
- $(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
- $(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
- $(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
- $(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
- $(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
- $(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
- $(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
- $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
- $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
- $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
- $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
- $(lib1538_SOURCES) $(lib1540_SOURCES) $(lib1541_SOURCES) \
- $(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
- $(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
- $(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
- $(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1591_SOURCES) \
- $(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1900_SOURCES) \
- $(lib1905_SOURCES) $(lib1906_SOURCES) $(lib2033_SOURCES) \
- $(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
- $(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
- $(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
- $(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
- $(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
- $(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
- $(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
- $(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
- $(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
- $(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
- $(lib533_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
- $(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
- $(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
- $(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
- $(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
- $(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
- $(lib558_SOURCES) $(lib559_SOURCES) $(lib560_SOURCES) \
- $(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
- $(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
- $(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
- $(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
- $(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
- $(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
- $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
- $(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \
- $(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \
- $(lib643_SOURCES) $(lib644_SOURCES) $(lib645_SOURCES) \
- $(lib650_SOURCES) $(lib651_SOURCES) $(lib652_SOURCES) \
- $(lib653_SOURCES) $(lib654_SOURCES) $(lib655_SOURCES) \
- $(lib658_SOURCES) $(lib659_SOURCES) $(libauthretry_SOURCES) \
- $(libntlmconnect_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -1663,8 +1679,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
@@ -2158,6 +2178,11 @@ lib1592_LDADD = $(TESTUTIL_LIBS)
lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1593_LDADD = $(TESTUTIL_LIBS)
+lib1594_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1594_LDADD = $(TESTUTIL_LIBS)
+lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1596_LDADD = $(TESTUTIL_LIBS)
+lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596
lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1900_LDADD = $(TESTUTIL_LIBS)
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
@@ -2569,6 +2594,16 @@ lib1592$(EXEEXT): $(lib1592_OBJECTS) $(lib1592_DEPENDENCIES) $(EXTRA_lib1592_DEP
lib1593$(EXEEXT): $(lib1593_OBJECTS) $(lib1593_DEPENDENCIES) $(EXTRA_lib1593_DEPENDENCIES)
@rm -f lib1593$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(lib1593_OBJECTS) $(lib1593_LDADD) $(LIBS)
+
+lib1594$(EXEEXT): $(lib1594_OBJECTS) $(lib1594_DEPENDENCIES) $(EXTRA_lib1594_DEPENDENCIES)
+ @rm -f lib1594$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1594_OBJECTS) $(lib1594_LDADD) $(LIBS)
+../../lib/lib1596-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+ ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1596$(EXEEXT): $(lib1596_OBJECTS) $(lib1596_DEPENDENCIES) $(EXTRA_lib1596_DEPENDENCIES)
+ @rm -f lib1596$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(lib1596_OBJECTS) $(lib1596_LDADD) $(LIBS)
../../lib/lib1900-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -3061,6 +3096,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker
@@ -3239,6 +3275,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-lib1592.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1592-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1593.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1594.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-lib1594.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-lib1900.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-testutil.Po@am__quote@ # am--include-marker
@@ -6029,6 +6069,62 @@ lib1592-testutil.obj: testutil.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1592-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+lib1596-lib1594.o: lib1594.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-lib1594.o -MD -MP -MF $(DEPDIR)/lib1596-lib1594.Tpo -c -o lib1596-lib1594.o `test -f 'lib1594.c' || echo '$(srcdir)/'`lib1594.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-lib1594.Tpo $(DEPDIR)/lib1596-lib1594.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1594.c' object='lib1596-lib1594.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-lib1594.o `test -f 'lib1594.c' || echo '$(srcdir)/'`lib1594.c
+
+lib1596-lib1594.obj: lib1594.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-lib1594.obj -MD -MP -MF $(DEPDIR)/lib1596-lib1594.Tpo -c -o lib1596-lib1594.obj `if test -f 'lib1594.c'; then $(CYGPATH_W) 'lib1594.c'; else $(CYGPATH_W) '$(srcdir)/lib1594.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-lib1594.Tpo $(DEPDIR)/lib1596-lib1594.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1594.c' object='lib1596-lib1594.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-lib1594.obj `if test -f 'lib1594.c'; then $(CYGPATH_W) 'lib1594.c'; else $(CYGPATH_W) '$(srcdir)/lib1594.c'; fi`
+
+lib1596-first.o: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-first.o -MD -MP -MF $(DEPDIR)/lib1596-first.Tpo -c -o lib1596-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-first.Tpo $(DEPDIR)/lib1596-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1596-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1596-first.obj: first.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-first.obj -MD -MP -MF $(DEPDIR)/lib1596-first.Tpo -c -o lib1596-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-first.Tpo $(DEPDIR)/lib1596-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1596-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1596-testutil.o: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-testutil.o -MD -MP -MF $(DEPDIR)/lib1596-testutil.Tpo -c -o lib1596-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-testutil.Tpo $(DEPDIR)/lib1596-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1596-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1596-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-testutil.obj -MD -MP -MF $(DEPDIR)/lib1596-testutil.Tpo -c -o lib1596-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-testutil.Tpo $(DEPDIR)/lib1596-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testutil.c' object='lib1596-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1596-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1596-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1596-warnless.Tpo -c -o ../../lib/lib1596-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1596-warnless.Tpo ../../lib/$(DEPDIR)/lib1596-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1596-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1596-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1596-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1596-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1596-warnless.Tpo -c -o ../../lib/lib1596-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1596-warnless.Tpo ../../lib/$(DEPDIR)/lib1596-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1596-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1596-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
lib1900-lib1900.o: lib1900.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1900_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1900-lib1900.o -MD -MP -MF $(DEPDIR)/lib1900-lib1900.Tpo -c -o lib1900-lib1900.o `test -f 'lib1900.c' || echo '$(srcdir)/'`lib1900.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1900-lib1900.Tpo $(DEPDIR)/lib1900-lib1900.Po
@@ -9760,6 +9856,7 @@ distclean: distclean-am
-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
@@ -9938,6 +10035,10 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
-rm -f ./$(DEPDIR)/lib1592-testutil.Po
-rm -f ./$(DEPDIR)/lib1593.Po
+ -rm -f ./$(DEPDIR)/lib1594.Po
+ -rm -f ./$(DEPDIR)/lib1596-first.Po
+ -rm -f ./$(DEPDIR)/lib1596-lib1594.Po
+ -rm -f ./$(DEPDIR)/lib1596-testutil.Po
-rm -f ./$(DEPDIR)/lib1900-first.Po
-rm -f ./$(DEPDIR)/lib1900-lib1900.Po
-rm -f ./$(DEPDIR)/lib1900-testutil.Po
@@ -10248,6 +10349,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
+ -rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
@@ -10426,6 +10528,10 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/lib1592-lib1592.Po
-rm -f ./$(DEPDIR)/lib1592-testutil.Po
-rm -f ./$(DEPDIR)/lib1593.Po
+ -rm -f ./$(DEPDIR)/lib1594.Po
+ -rm -f ./$(DEPDIR)/lib1596-first.Po
+ -rm -f ./$(DEPDIR)/lib1596-lib1594.Po
+ -rm -f ./$(DEPDIR)/lib1596-testutil.Po
-rm -f ./$(DEPDIR)/lib1900-first.Po
-rm -f ./$(DEPDIR)/lib1900-lib1900.Po
-rm -f ./$(DEPDIR)/lib1900-testutil.Po
diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
index f5effd97..4ea9cf2a 100644
--- a/tests/libtest/Makefile.inc
+++ b/tests/libtest/Makefile.inc
@@ -32,7 +32,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
lib1540 lib1541 \
lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
lib1558 lib1559 lib1560 \
- lib1591 lib1592 lib1593 \
+ lib1591 lib1592 lib1593 lib1594 lib1596 \
lib1900 lib1905 lib1906 \
lib2033
@@ -544,6 +544,13 @@ lib1592_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1592
lib1593_SOURCES = lib1593.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1593_LDADD = $(TESTUTIL_LIBS)
+lib1594_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1594_LDADD = $(TESTUTIL_LIBS)
+
+lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1596_LDADD = $(TESTUTIL_LIBS)
+lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596
+
lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1900_LDADD = $(TESTUTIL_LIBS)
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/libtest/first.c b/tests/libtest/first.c
index d687bf27..2731ef8d 100644
--- a/tests/libtest/first.c
+++ b/tests/libtest/first.c
@@ -97,9 +97,9 @@ static void memory_tracking_init(void)
strcpy(fname, env);
curl_free(env);
curl_dbg_memdebug(fname);
- /* this weird stuff here is to make curl_free() get called
- before curl_memdebug() as otherwise memory tracking will
- log a free() without an alloc! */
+ /* this weird stuff here is to make curl_free() get called before
+ curl_dbg_memdebug() as otherwise memory tracking will log a free()
+ without an alloc! */
}
/* if CURL_MEMLIMIT is set, this enables fail-on-alloc-number-N feature */
env = curl_getenv("CURL_MEMLIMIT");
diff --git a/tests/libtest/lib1560.c b/tests/libtest/lib1560.c
index 1185096d..85884474 100644
--- a/tests/libtest/lib1560.c
+++ b/tests/libtest/lib1560.c
@@ -140,6 +140,10 @@ static struct testcase get_parts_list[] ={
"file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]",
CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
#endif
+ {"http://[ab.be:1]/x", "",
+ CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT},
+ {"http://[ab.be]/x", "",
+ CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT},
/* URL without host name */
{"http://a:b@/x", "",
CURLU_DEFAULT_SCHEME, 0, CURLUE_NO_HOST},
diff --git a/tests/libtest/lib1594.c b/tests/libtest/lib1594.c
new file mode 100644
index 00000000..a7697159
--- /dev/null
+++ b/tests/libtest/lib1594.c
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/* Testing Retry-After header parser */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+int test(char *URL)
+{
+ struct curl_slist *header = NULL;
+ curl_off_t retry;
+ CURL *curl = NULL;
+ int res = 0;
+
+ global_init(CURL_GLOBAL_ALL);
+
+ easy_init(curl);
+
+ easy_setopt(curl, CURLOPT_URL, URL);
+
+ res = curl_easy_perform(curl);
+ if(res)
+ goto test_cleanup;
+
+ res = curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &retry);
+ if(res)
+ goto test_cleanup;
+
+#ifdef LIB1596
+ /* we get a relative number of seconds, so add the number of seconds
+ we're at to make it a somewhat stable number. Then remove accuracy. */
+ retry += time(NULL);
+ retry /= 10000;
+#endif
+ printf("Retry-After: %" CURL_FORMAT_CURL_OFF_T "\n", retry);
+
+test_cleanup:
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ curl_slist_free_all(header);
+ curl_global_cleanup();
+
+ return res;
+}
diff --git a/tests/runtests.1 b/tests/runtests.1
index afc33186..58d441b8 100644
--- a/tests/runtests.1
+++ b/tests/runtests.1
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH runtests.pl 1 "May 05, 2017" "Curl 7.65.3" "runtests"
+.TH runtests.pl 1 "May 05, 2017" "Curl 7.66.0" "runtests"
.SH NAME
runtests.pl \- run one or more test cases
diff --git a/tests/server/Makefile.in b/tests/server/Makefile.in
index 3d9ab43d..2bf0e5dc 100644
--- a/tests/server/Makefile.in
+++ b/tests/server/Makefile.in
@@ -535,8 +535,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
diff --git a/tests/symbol-scan.pl b/tests/symbol-scan.pl
index 6706aa70..1379299d 100755
--- a/tests/symbol-scan.pl
+++ b/tests/symbol-scan.pl
@@ -119,11 +119,13 @@ for my $e (sort @syms) {
# CURL_EXTERN - is a define used for libcurl functions that are external,
# public. No app or other code should ever use it.
#
+ # CURLINC_ - defines for header dual-include prevention, ignore those.
+ #
# *_LAST and *_LASTENTRY are just prefix for the placeholders used for the
# last entry in many enum series.
#
- if($e =~ /(OBSOLETE|^CURL_EXTERN|_LAST\z|_LASTENTRY\z)/) {
+ if($e =~ /(OBSOLETE|^CURL_EXTERN|^CURLINC_|_LAST\z|_LASTENTRY\z)/) {
$ignored++;
next;
}
diff --git a/tests/testcurl.1 b/tests/testcurl.1
index f5b52eef..561b77a2 100644
--- a/tests/testcurl.1
+++ b/tests/testcurl.1
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH testcurl.pl 1 "October 22, 2016" "Curl 7.65.3" "testcurl"
+.TH testcurl.pl 1 "October 22, 2016" "Curl 7.66.0" "testcurl"
.SH NAME
testcurl.pl \- (automatically) test curl
diff --git a/tests/unit/Makefile.in b/tests/unit/Makefile.in
index bc8f05c1..5bd06fb5 100644
--- a/tests/unit/Makefile.in
+++ b/tests/unit/Makefile.in
@@ -628,8 +628,12 @@ USE_LIBSSH2 = @USE_LIBSSH2@
USE_MBEDTLS = @USE_MBEDTLS@
USE_MESALINK = @USE_MESALINK@
USE_NGHTTP2 = @USE_NGHTTP2@
+USE_NGHTTP3 = @USE_NGHTTP3@
+USE_NGTCP2 = @USE_NGTCP2@
+USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@
USE_NSS = @USE_NSS@
USE_OPENLDAP = @USE_OPENLDAP@
+USE_QUICHE = @USE_QUICHE@
USE_SCHANNEL = @USE_SCHANNEL@
USE_SECTRANSP = @USE_SECTRANSP@
USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@
diff --git a/tests/unit/unit1607.c b/tests/unit/unit1607.c
index 6e40be70..a8b0331c 100644
--- a/tests/unit/unit1607.c
+++ b/tests/unit/unit1607.c
@@ -25,10 +25,6 @@
#include "connect.h"
#include "share.h"
-/* retrieves ip address and port from a sockaddr structure.
- note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
-bool getaddressinfo(struct sockaddr *sa, char *addr, long *port);
-
#include "memdebug.h" /* LAST include file */
static void unit_stop(void)
@@ -154,8 +150,8 @@ UNITTEST_START
if(tests[i].address[j] == &skip)
continue;
- if(addr && !getaddressinfo(addr->ai_addr,
- ipaddress, &port)) {
+ if(addr && !Curl_addr2string(addr->ai_addr, addr->ai_addrlen,
+ ipaddress, &port)) {
fprintf(stderr, "%s:%d tests[%d] failed. getaddressinfo failed.\n",
__FILE__, __LINE__, i);
problem = true;
diff --git a/tests/unit/unit1609.c b/tests/unit/unit1609.c
index 8d9bc652..8223a147 100644
--- a/tests/unit/unit1609.c
+++ b/tests/unit/unit1609.c
@@ -25,10 +25,6 @@
#include "connect.h"
#include "share.h"
-/* retrieves ip address and port from a sockaddr structure.
- note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
-bool getaddressinfo(struct sockaddr *sa, char *addr, long *port);
-
#include "memdebug.h" /* LAST include file */
static void unit_stop(void)
@@ -154,9 +150,9 @@ UNITTEST_START
if(!addr && !tests[i].address[j])
break;
- if(addr && !getaddressinfo(addr->ai_addr,
- ipaddress, &port)) {
- fprintf(stderr, "%s:%d tests[%d] failed. getaddressinfo failed.\n",
+ if(addr && !Curl_addr2string(addr->ai_addr, addr->ai_addrlen,
+ ipaddress, &port)) {
+ fprintf(stderr, "%s:%d tests[%d] failed. Curl_addr2string failed.\n",
__FILE__, __LINE__, i);
problem = true;
break;
diff --git a/tests/unit/unit1654.c b/tests/unit/unit1654.c
index 9d1a3e21..51fc5d16 100644
--- a/tests/unit/unit1654.c
+++ b/tests/unit/unit1654.c
@@ -90,7 +90,7 @@ UNITTEST_START
fail_unless(asi->num == 8, "wrong number of entries");
result = Curl_altsvc_parse(curl, asi, "h2=\"example.com:443\"; ma = 120;",
- ALPN_h2c, "example.org", 80);
+ ALPN_h2, "example.org", 80);
if(result) {
fprintf(stderr, "Curl_altsvc_parse(4) failed!\n");
unitfail++;
diff --git a/winbuild/MakefileBuild.vc b/winbuild/MakefileBuild.vc
index 993ab38b..b5742e10 100644
--- a/winbuild/MakefileBuild.vc
+++ b/winbuild/MakefileBuild.vc
@@ -559,6 +559,7 @@ $(LIB_DIROBJ):
@if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)
@if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth
@if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls
+ @if not exist "$(LIB_DIROBJ)\vquic" mkdir $(LIB_DIROBJ)\vquic
$(CURL_DIROBJ):
@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)
@@ -577,6 +578,9 @@ $(CURL_DIROBJ):
{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:
$(CURL_CC) $(CFLAGS) /Fo"$@" $<
+{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj:
+ $(CURL_CC) $(CFLAGS) /Fo"$@" $<
+
$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
$(RC) $(RC_FLAGS)