From 2c80f867dc3ef2103f46506e950a44ce40f620d2 Mon Sep 17 00:00:00 2001 From: Baptiste Daroussin Date: Wed, 6 Dec 2023 10:54:05 +0100 Subject: [PATCH] curl: update to 8.5.0 --- external/curl/CHANGES | 12691 ++++++++-------- external/curl/CMake/CurlTests.c | 246 +- external/curl/CMake/FindZstd.cmake | 7 + external/curl/CMake/Macros.cmake | 13 - external/curl/CMake/OtherTests.cmake | 14 +- external/curl/CMake/PickyWarnings.cmake | 37 +- .../curl/CMake/Platforms/WindowsCache.cmake | 254 +- external/curl/CMake/curl-config.cmake.in | 4 +- external/curl/CMakeLists.txt | 659 +- external/curl/Makefile.am | 131 +- external/curl/Makefile.in | 129 +- external/curl/RELEASE-NOTES | 670 +- external/curl/acinclude.m4 | 80 +- external/curl/configure | 767 +- external/curl/configure.ac | 58 +- external/curl/docs/BINDINGS.md | 2 + external/curl/docs/DEPRECATE.md | 11 + external/curl/docs/EXPERIMENTAL.md | 2 +- external/curl/docs/FEATURES.md | 2 +- external/curl/docs/HTTP3.md | 40 +- external/curl/docs/HYPER.md | 4 + external/curl/docs/INSTALL.md | 43 +- external/curl/docs/KNOWN_BUGS | 21 - external/curl/docs/Makefile.am | 3 +- external/curl/docs/Makefile.in | 3 +- external/curl/docs/THANKS | 42 + external/curl/docs/TODO | 9 + external/curl/docs/VULN-DISCLOSURE-POLICY.md | 12 +- external/curl/docs/cmdline-opts/gen.pl | 10 +- external/curl/docs/cmdline-opts/header.d | 3 +- .../curl/docs/cmdline-opts/ipfs-gateway.d | 38 +- external/curl/docs/cmdline-opts/page-footer | 4 +- .../curl/docs/cmdline-opts/request-target.d | 3 + external/curl/docs/cmdline-opts/request.d | 3 + external/curl/docs/cmdline-opts/resolve.d | 2 - external/curl/docs/cmdline-opts/write-out.d | 2 +- external/curl/docs/curl-config.1 | 2 +- external/curl/docs/curl.1 | 61 +- external/curl/docs/examples/10-at-a-time.c | 2 +- external/curl/docs/examples/Makefile.in | 139 +- external/curl/docs/examples/Makefile.inc | 4 + external/curl/docs/examples/anyauthput.c | 2 +- .../curl/docs/examples/cookie_interface.c | 2 +- external/curl/docs/examples/externalsocket.c | 6 +- external/curl/docs/examples/ftpupload.c | 2 +- external/curl/docs/examples/interface.c | 52 + external/curl/docs/examples/ipv6.c | 4 +- external/curl/docs/examples/keepalive.c | 55 + external/curl/docs/examples/localport.c | 53 + external/curl/docs/examples/rtsp-options.c | 55 + .../curl/docs/libcurl/curl_easy_cleanup.3 | 19 +- .../curl/docs/libcurl/curl_easy_duphandle.3 | 26 +- external/curl/docs/libcurl/curl_easy_escape.3 | 19 +- .../curl/docs/libcurl/curl_easy_getinfo.3 | 8 +- external/curl/docs/libcurl/curl_easy_header.3 | 18 +- external/curl/docs/libcurl/curl_easy_init.3 | 17 +- .../curl/docs/libcurl/curl_easy_nextheader.3 | 35 +- .../docs/libcurl/curl_easy_option_by_id.3 | 11 +- .../docs/libcurl/curl_easy_option_by_name.3 | 11 +- .../curl/docs/libcurl/curl_easy_option_next.3 | 53 +- external/curl/docs/libcurl/curl_easy_pause.3 | 17 +- .../curl/docs/libcurl/curl_easy_perform.3 | 17 +- external/curl/docs/libcurl/curl_easy_recv.3 | 35 +- external/curl/docs/libcurl/curl_easy_reset.3 | 14 +- external/curl/docs/libcurl/curl_easy_send.3 | 33 +- external/curl/docs/libcurl/curl_easy_setopt.3 | 17 +- .../curl/docs/libcurl/curl_easy_strerror.3 | 22 +- .../curl/docs/libcurl/curl_easy_unescape.3 | 25 +- external/curl/docs/libcurl/curl_easy_upkeep.3 | 35 +- external/curl/docs/libcurl/curl_escape.3 | 13 +- external/curl/docs/libcurl/curl_formadd.3 | 171 +- external/curl/docs/libcurl/curl_formfree.3 | 31 +- external/curl/docs/libcurl/curl_formget.3 | 36 +- external/curl/docs/libcurl/curl_free.3 | 5 +- external/curl/docs/libcurl/curl_getdate.3 | 54 +- external/curl/docs/libcurl/curl_getenv.3 | 5 +- .../curl/docs/libcurl/curl_global_cleanup.3 | 11 +- external/curl/docs/libcurl/curl_global_init.3 | 11 +- .../curl/docs/libcurl/curl_global_init_mem.3 | 17 +- .../curl/docs/libcurl/curl_global_sslset.3 | 54 +- .../curl/docs/libcurl/curl_global_trace.3 | 19 +- .../curl/docs/libcurl/curl_mime_addpart.3 | 26 +- external/curl/docs/libcurl/curl_mime_data.3 | 24 +- .../curl/docs/libcurl/curl_mime_data_cb.3 | 31 +- .../curl/docs/libcurl/curl_mime_encoder.3 | 28 +- .../curl/docs/libcurl/curl_mime_filedata.3 | 28 +- .../curl/docs/libcurl/curl_mime_filename.3 | 35 +- external/curl/docs/libcurl/curl_mime_free.3 | 18 +- .../curl/docs/libcurl/curl_mime_headers.3 | 32 +- external/curl/docs/libcurl/curl_mime_init.3 | 36 +- external/curl/docs/libcurl/curl_mime_name.3 | 24 +- .../curl/docs/libcurl/curl_mime_subparts.3 | 47 +- external/curl/docs/libcurl/curl_mime_type.3 | 32 +- external/curl/docs/libcurl/curl_mprintf.3 | 9 +- .../curl/docs/libcurl/curl_multi_add_handle.3 | 15 +- .../curl/docs/libcurl/curl_multi_assign.3 | 15 +- .../curl/docs/libcurl/curl_multi_cleanup.3 | 13 +- external/curl/docs/libcurl/curl_multi_fdset.3 | 39 +- .../docs/libcurl/curl_multi_get_handles.3 | 29 +- .../curl/docs/libcurl/curl_multi_info_read.3 | 33 +- external/curl/docs/libcurl/curl_multi_init.3 | 17 +- .../curl/docs/libcurl/curl_multi_perform.3 | 34 +- external/curl/docs/libcurl/curl_multi_poll.3 | 44 +- .../docs/libcurl/curl_multi_remove_handle.3 | 22 +- .../curl/docs/libcurl/curl_multi_setopt.3 | 27 +- .../curl/docs/libcurl/curl_multi_socket.3 | 16 +- .../docs/libcurl/curl_multi_socket_action.3 | 19 +- .../curl/docs/libcurl/curl_multi_strerror.3 | 20 +- .../curl/docs/libcurl/curl_multi_timeout.3 | 30 +- external/curl/docs/libcurl/curl_multi_wait.3 | 56 +- .../curl/docs/libcurl/curl_multi_wakeup.3 | 53 +- .../docs/libcurl/curl_pushheader_byname.3 | 23 +- .../curl/docs/libcurl/curl_pushheader_bynum.3 | 20 +- .../curl/docs/libcurl/curl_share_cleanup.3 | 7 +- external/curl/docs/libcurl/curl_share_init.3 | 7 +- .../curl/docs/libcurl/curl_share_setopt.3 | 7 +- .../curl/docs/libcurl/curl_share_strerror.3 | 13 +- .../curl/docs/libcurl/curl_slist_append.3 | 35 +- .../curl/docs/libcurl/curl_slist_free_all.3 | 21 +- external/curl/docs/libcurl/curl_strequal.3 | 18 +- external/curl/docs/libcurl/curl_unescape.3 | 22 +- external/curl/docs/libcurl/curl_url.3 | 5 +- external/curl/docs/libcurl/curl_url_cleanup.3 | 5 +- external/curl/docs/libcurl/curl_url_dup.3 | 7 +- external/curl/docs/libcurl/curl_url_get.3 | 7 +- external/curl/docs/libcurl/curl_url_set.3 | 6 +- .../curl/docs/libcurl/curl_url_strerror.3 | 12 +- external/curl/docs/libcurl/curl_version.3 | 7 +- .../curl/docs/libcurl/curl_version_info.3 | 15 +- external/curl/docs/libcurl/curl_ws_meta.3 | 40 +- external/curl/docs/libcurl/curl_ws_recv.3 | 14 +- external/curl/docs/libcurl/curl_ws_send.3 | 23 +- external/curl/docs/libcurl/libcurl-easy.3 | 2 +- external/curl/docs/libcurl/libcurl-env-dbg.3 | 2 +- external/curl/docs/libcurl/libcurl-env.3 | 2 +- external/curl/docs/libcurl/libcurl-errors.3 | 12 +- external/curl/docs/libcurl/libcurl-multi.3 | 2 +- external/curl/docs/libcurl/libcurl-security.3 | 4 +- external/curl/docs/libcurl/libcurl-share.3 | 2 +- external/curl/docs/libcurl/libcurl-symbols.3 | 8 +- external/curl/docs/libcurl/libcurl-thread.3 | 37 +- external/curl/docs/libcurl/libcurl-tutorial.3 | 2 +- external/curl/docs/libcurl/libcurl-url.3 | 2 +- external/curl/docs/libcurl/libcurl-ws.3 | 2 +- external/curl/docs/libcurl/libcurl.3 | 4 +- .../curl/docs/libcurl/mksymbolsmanpage.pl | 10 +- .../docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 | 30 +- .../libcurl/opts/CURLINFO_APPCONNECT_TIME.3 | 26 +- .../libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3 | 28 +- .../curl/docs/libcurl/opts/CURLINFO_CAINFO.3 | 18 +- .../curl/docs/libcurl/opts/CURLINFO_CAPATH.3 | 18 +- .../docs/libcurl/opts/CURLINFO_CERTINFO.3 | 43 +- .../libcurl/opts/CURLINFO_CONDITION_UNMET.3 | 37 +- .../docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 | 26 +- .../libcurl/opts/CURLINFO_CONNECT_TIME_T.3 | 28 +- .../curl/docs/libcurl/opts/CURLINFO_CONN_ID.3 | 25 +- .../opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 | 26 +- .../opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 | 26 +- .../opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 | 26 +- .../opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 | 26 +- .../docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 | 28 +- .../docs/libcurl/opts/CURLINFO_COOKIELIST.3 | 44 +- .../libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 | 31 +- .../libcurl/opts/CURLINFO_EFFECTIVE_URL.3 | 29 +- .../docs/libcurl/opts/CURLINFO_FILETIME.3 | 33 +- .../docs/libcurl/opts/CURLINFO_FILETIME_T.3 | 34 +- .../libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 | 28 +- .../docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 | 27 +- .../libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 | 40 +- .../libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 | 31 +- .../docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 | 23 +- .../docs/libcurl/opts/CURLINFO_LASTSOCKET.3 | 30 +- .../docs/libcurl/opts/CURLINFO_LOCAL_IP.3 | 5 +- .../docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 | 3 +- .../libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 | 26 +- .../libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 | 28 +- .../docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 | 29 +- .../docs/libcurl/opts/CURLINFO_OS_ERRNO.3 | 27 +- .../libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 | 28 +- .../opts/CURLINFO_PRETRANSFER_TIME_T.3 | 41 +- .../docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 | 5 +- .../docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 | 27 +- .../curl/docs/libcurl/opts/CURLINFO_PRIVATE.3 | 29 +- .../docs/libcurl/opts/CURLINFO_PROTOCOL.3 | 23 +- .../libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 | 42 +- .../docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 | 29 +- .../opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 | 29 +- .../libcurl/opts/CURLINFO_REDIRECT_COUNT.3 | 25 +- .../libcurl/opts/CURLINFO_REDIRECT_TIME.3 | 26 +- .../libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 | 28 +- .../docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 | 27 +- .../curl/docs/libcurl/opts/CURLINFO_REFERER.3 | 29 +- .../docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 | 27 +- .../libcurl/opts/CURLINFO_RESPONSE_CODE.3 | 23 +- .../docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 | 27 +- .../libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 | 23 +- .../libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 | 23 +- .../libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 | 23 +- .../libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 | 23 +- .../curl/docs/libcurl/opts/CURLINFO_SCHEME.3 | 27 +- .../libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 | 26 +- .../libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 | 26 +- .../docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 | 24 +- .../libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 | 24 +- .../libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 | 24 +- .../libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 | 25 +- .../docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 | 24 +- .../libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 | 24 +- .../docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 | 25 +- .../libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 | 27 +- .../opts/CURLINFO_STARTTRANSFER_TIME.3 | 26 +- .../opts/CURLINFO_STARTTRANSFER_TIME_T.3 | 28 +- .../docs/libcurl/opts/CURLINFO_TLS_SESSION.3 | 23 +- .../docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 | 6 +- .../docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 | 26 +- .../docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 | 28 +- .../curl/docs/libcurl/opts/CURLINFO_XFER_ID.3 | 24 +- .../opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 | 11 +- .../CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 | 11 +- .../docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 | 11 +- .../opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 | 9 +- .../opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 | 11 +- .../opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 | 11 +- .../opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 | 11 +- .../docs/libcurl/opts/CURLMOPT_PIPELINING.3 | 11 +- .../opts/CURLMOPT_PIPELINING_SERVER_BL.3 | 19 +- .../opts/CURLMOPT_PIPELINING_SITE_BL.3 | 18 +- .../docs/libcurl/opts/CURLMOPT_PUSHDATA.3 | 13 +- .../docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 | 13 +- .../docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 | 30 +- .../libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 | 30 +- .../docs/libcurl/opts/CURLMOPT_TIMERDATA.3 | 47 +- .../libcurl/opts/CURLMOPT_TIMERFUNCTION.3 | 47 +- .../opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 | 16 +- .../libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 | 17 +- .../libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 | 19 +- .../docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 | 25 +- .../curl/docs/libcurl/opts/CURLOPT_ALTSVC.3 | 15 +- .../docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 | 15 +- .../curl/docs/libcurl/opts/CURLOPT_APPEND.3 | 17 +- .../docs/libcurl/opts/CURLOPT_AUTOREFERER.3 | 24 +- .../docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 | 27 +- .../docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 | 20 +- .../curl/docs/libcurl/opts/CURLOPT_CAINFO.3 | 17 +- .../docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 | 34 +- .../curl/docs/libcurl/opts/CURLOPT_CAPATH.3 | 18 +- .../libcurl/opts/CURLOPT_CA_CACHE_TIMEOUT.3 | 30 +- .../curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 | 43 +- .../libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 | 13 +- .../docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 | 13 +- .../libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 | 11 +- .../libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 | 24 +- .../opts/CURLOPT_CLOSESOCKETFUNCTION.3 | 24 +- .../libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 | 17 +- .../libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 | 17 +- .../docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 | 21 +- .../docs/libcurl/opts/CURLOPT_CONNECT_TO.3 | 29 +- .../opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 | 25 +- .../opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 | 20 +- .../opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 | 21 +- .../curl/docs/libcurl/opts/CURLOPT_COOKIE.3 | 15 +- .../docs/libcurl/opts/CURLOPT_COOKIEFILE.3 | 20 +- .../docs/libcurl/opts/CURLOPT_COOKIEJAR.3 | 22 +- .../docs/libcurl/opts/CURLOPT_COOKIELIST.3 | 66 +- .../docs/libcurl/opts/CURLOPT_COOKIESESSION.3 | 24 +- .../libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 | 23 +- .../curl/docs/libcurl/opts/CURLOPT_CRLF.3 | 19 +- .../curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 | 18 +- .../curl/docs/libcurl/opts/CURLOPT_CURLU.3 | 25 +- .../docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 | 23 +- .../docs/libcurl/opts/CURLOPT_DEBUGDATA.3 | 16 +- .../docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 | 16 +- .../libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 | 21 +- .../docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 | 20 +- .../opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 | 15 +- .../libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 | 26 +- .../docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 | 18 +- .../docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 | 18 +- .../docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 | 18 +- .../docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 | 19 +- .../opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 | 19 +- .../opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 | 22 +- .../libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 | 20 +- .../libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 | 20 +- .../opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 | 20 +- .../curl/docs/libcurl/opts/CURLOPT_DOH_URL.3 | 15 +- .../docs/libcurl/opts/CURLOPT_EGDSOCKET.3 | 18 +- .../docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 | 52 +- .../opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 | 17 +- .../docs/libcurl/opts/CURLOPT_FAILONERROR.3 | 21 +- .../curl/docs/libcurl/opts/CURLOPT_FILETIME.3 | 33 +- .../docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 | 26 +- .../libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 | 23 +- .../libcurl/opts/CURLOPT_FOLLOWLOCATION.3 | 17 +- .../docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 | 18 +- .../docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 | 15 +- .../curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 | 19 +- .../docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 | 22 +- .../docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 | 18 +- .../opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 | 20 +- .../opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 | 21 +- .../libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 | 20 +- .../libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 | 20 +- .../docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 | 22 +- .../docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 | 24 +- .../docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 | 21 +- .../docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 | 21 +- .../libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 | 21 +- .../opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 | 19 +- .../libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 | 17 +- .../libcurl/opts/CURLOPT_HAPROXY_CLIENT_IP.3 | 17 +- .../curl/docs/libcurl/opts/CURLOPT_HEADER.3 | 15 +- .../docs/libcurl/opts/CURLOPT_HEADERDATA.3 | 25 +- .../libcurl/opts/CURLOPT_HEADERFUNCTION.3 | 15 +- .../docs/libcurl/opts/CURLOPT_HEADEROPT.3 | 37 +- .../curl/docs/libcurl/opts/CURLOPT_HSTS.3 | 13 +- .../docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 | 25 +- .../libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 | 30 +- .../docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 | 25 +- .../libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 | 30 +- .../docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 | 13 +- .../libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 | 17 +- .../libcurl/opts/CURLOPT_HTTP200ALIASES.3 | 23 +- .../curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 | 21 +- .../curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 | 19 +- .../docs/libcurl/opts/CURLOPT_HTTPHEADER.3 | 29 +- .../curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 | 54 +- .../libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 | 17 +- .../opts/CURLOPT_HTTP_CONTENT_DECODING.3 | 17 +- .../opts/CURLOPT_HTTP_TRANSFER_DECODING.3 | 17 +- .../docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 | 23 +- .../opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 | 17 +- .../docs/libcurl/opts/CURLOPT_INFILESIZE.3 | 23 +- .../libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 | 22 +- .../docs/libcurl/opts/CURLOPT_INTERFACE.3 | 18 +- .../libcurl/opts/CURLOPT_INTERLEAVEDATA.3 | 21 +- .../libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 | 20 +- .../docs/libcurl/opts/CURLOPT_IOCTLDATA.3 | 19 +- .../docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 | 19 +- .../docs/libcurl/opts/CURLOPT_IPRESOLVE.3 | 21 +- .../docs/libcurl/opts/CURLOPT_ISSUERCERT.3 | 18 +- .../libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 | 30 +- .../opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 | 19 +- .../docs/libcurl/opts/CURLOPT_KEYPASSWD.3 | 22 +- .../curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 | 18 +- .../docs/libcurl/opts/CURLOPT_LOCALPORT.3 | 22 +- .../libcurl/opts/CURLOPT_LOCALPORTRANGE.3 | 22 +- .../docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 | 18 +- .../libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 | 28 +- .../libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 | 28 +- .../docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 | 18 +- .../docs/libcurl/opts/CURLOPT_MAIL_FROM.3 | 18 +- .../docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 | 26 +- .../opts/CURLOPT_MAIL_RCPT_ALLOWFAILS.3 | 28 +- .../docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 | 17 +- .../docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 | 19 +- .../docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 | 19 +- .../libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 | 21 +- .../libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 | 17 +- .../docs/libcurl/opts/CURLOPT_MAXREDIRS.3 | 23 +- .../opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 | 19 +- .../opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 | 21 +- .../curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3 | 39 +- .../docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 | 39 +- .../curl/docs/libcurl/opts/CURLOPT_NETRC.3 | 17 +- .../docs/libcurl/opts/CURLOPT_NETRC_FILE.3 | 19 +- .../opts/CURLOPT_NEW_DIRECTORY_PERMS.3 | 20 +- .../libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 | 17 +- .../curl/docs/libcurl/opts/CURLOPT_NOBODY.3 | 19 +- .../docs/libcurl/opts/CURLOPT_NOPROGRESS.3 | 19 +- .../curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 | 23 +- .../curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 | 18 +- .../libcurl/opts/CURLOPT_OPENSOCKETDATA.3 | 32 +- .../libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 | 37 +- .../curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 | 18 +- .../docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 | 16 +- .../libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 | 28 +- .../curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 | 15 +- .../curl/docs/libcurl/opts/CURLOPT_PORT.3 | 18 +- .../curl/docs/libcurl/opts/CURLOPT_POST.3 | 20 +- .../docs/libcurl/opts/CURLOPT_POSTFIELDS.3 | 53 +- .../docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 | 23 +- .../opts/CURLOPT_POSTFIELDSIZE_LARGE.3 | 25 +- .../docs/libcurl/opts/CURLOPT_POSTQUOTE.3 | 26 +- .../docs/libcurl/opts/CURLOPT_POSTREDIR.3 | 23 +- .../curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 | 24 +- .../docs/libcurl/opts/CURLOPT_PREREQDATA.3 | 19 +- .../libcurl/opts/CURLOPT_PREREQFUNCTION.3 | 19 +- .../docs/libcurl/opts/CURLOPT_PRE_PROXY.3 | 17 +- .../curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 | 29 +- .../docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 | 46 +- .../libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 | 58 +- .../docs/libcurl/opts/CURLOPT_PROTOCOLS.3 | 23 +- .../docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 | 21 +- .../curl/docs/libcurl/opts/CURLOPT_PROXY.3 | 15 +- .../docs/libcurl/opts/CURLOPT_PROXYAUTH.3 | 29 +- .../docs/libcurl/opts/CURLOPT_PROXYHEADER.3 | 25 +- .../docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 | 22 +- .../docs/libcurl/opts/CURLOPT_PROXYPORT.3 | 20 +- .../docs/libcurl/opts/CURLOPT_PROXYTYPE.3 | 23 +- .../docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 | 22 +- .../docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 | 20 +- .../docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 | 22 +- .../libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 | 38 +- .../docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 | 22 +- .../docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 | 20 +- .../libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 | 22 +- .../opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 | 34 +- .../libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 | 20 +- .../opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 | 23 +- .../libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 | 17 +- .../docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 | 24 +- .../libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 | 26 +- .../libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 | 36 +- .../docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 | 24 +- .../libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 | 26 +- .../libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 | 45 +- .../libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 | 19 +- .../opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 | 20 +- .../libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 | 37 +- .../opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 | 17 +- .../opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 | 17 +- .../opts/CURLOPT_PROXY_TLS13_CIPHERS.3 | 20 +- .../opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 | 24 +- .../libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 | 24 +- .../opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 | 24 +- .../opts/CURLOPT_PROXY_TRANSFER_MODE.3 | 27 +- external/curl/docs/libcurl/opts/CURLOPT_PUT.3 | 46 +- .../docs/libcurl/opts/CURLOPT_QUICK_EXIT.3 | 15 +- .../curl/docs/libcurl/opts/CURLOPT_QUOTE.3 | 26 +- .../docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 | 18 +- .../curl/docs/libcurl/opts/CURLOPT_RANGE.3 | 19 +- .../curl/docs/libcurl/opts/CURLOPT_READDATA.3 | 25 +- .../docs/libcurl/opts/CURLOPT_READFUNCTION.3 | 19 +- .../libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 | 23 +- .../opts/CURLOPT_REDIR_PROTOCOLS_STR.3 | 21 +- .../curl/docs/libcurl/opts/CURLOPT_REFERER.3 | 17 +- .../libcurl/opts/CURLOPT_REQUEST_TARGET.3 | 24 +- .../curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 | 29 +- .../opts/CURLOPT_RESOLVER_START_DATA.3 | 19 +- .../opts/CURLOPT_RESOLVER_START_FUNCTION.3 | 23 +- .../docs/libcurl/opts/CURLOPT_RESUME_FROM.3 | 29 +- .../libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 | 31 +- .../libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 | 18 +- .../docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 | 20 +- .../libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 | 18 +- .../libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 | 20 +- .../libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 | 21 +- .../libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 | 22 +- .../docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 | 22 +- .../curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 | 18 +- .../curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 | 16 +- .../docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 | 17 +- .../opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 | 20 +- .../docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 | 17 +- .../curl/docs/libcurl/opts/CURLOPT_SHARE.3 | 40 +- .../docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 | 27 +- .../libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 | 38 +- .../docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 | 23 +- .../libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 | 20 +- .../opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 | 20 +- .../libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 | 20 +- .../libcurl/opts/CURLOPT_SSH_COMPRESSION.3 | 19 +- .../libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 | 28 +- .../opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 | 23 +- .../opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 | 20 +- .../opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 | 20 +- .../docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 | 21 +- .../libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 | 22 +- .../libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 | 20 +- .../opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 | 22 +- .../libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 | 20 +- .../curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 | 22 +- .../docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 | 24 +- .../docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 | 34 +- .../docs/libcurl/opts/CURLOPT_SSLENGINE.3 | 18 +- .../libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 | 20 +- .../curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 | 22 +- .../docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 | 24 +- .../docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 | 45 +- .../docs/libcurl/opts/CURLOPT_SSLVERSION.3 | 19 +- .../libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 | 18 +- .../docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 | 6 +- .../libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 | 6 +- .../docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 | 18 +- .../libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 | 18 +- .../libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 | 18 +- .../libcurl/opts/CURLOPT_SSL_FALSESTART.3 | 15 +- .../docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 | 35 +- .../opts/CURLOPT_SSL_SESSIONID_CACHE.3 | 20 +- .../libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 | 17 +- .../libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 | 17 +- .../libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 | 20 +- .../curl/docs/libcurl/opts/CURLOPT_STDERR.3 | 17 +- .../libcurl/opts/CURLOPT_STREAM_DEPENDS.3 | 21 +- .../libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 | 21 +- .../docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 | 23 +- .../opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 | 25 +- .../docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 | 15 +- .../docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 | 25 +- .../docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 | 25 +- .../docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 | 25 +- .../docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 | 17 +- .../docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 | 26 +- .../docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 | 20 +- .../libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 | 31 +- .../docs/libcurl/opts/CURLOPT_TIMECONDITION.3 | 25 +- .../curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 | 17 +- .../docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 | 17 +- .../docs/libcurl/opts/CURLOPT_TIMEVALUE.3 | 23 +- .../libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 | 23 +- .../docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 | 20 +- .../libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 | 22 +- .../docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 | 22 +- .../libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 | 22 +- .../docs/libcurl/opts/CURLOPT_TRAILERDATA.3 | 17 +- .../libcurl/opts/CURLOPT_TRAILERFUNCTION.3 | 2 +- .../docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 | 18 +- .../libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 | 15 +- .../libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 | 19 +- .../libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 | 17 +- .../libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 | 35 +- .../curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 | 46 +- .../libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 | 20 +- external/curl/docs/libcurl/opts/CURLOPT_URL.3 | 15 +- .../docs/libcurl/opts/CURLOPT_USERAGENT.3 | 15 +- .../curl/docs/libcurl/opts/CURLOPT_USERNAME.3 | 18 +- .../curl/docs/libcurl/opts/CURLOPT_USERPWD.3 | 18 +- .../curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 | 19 +- .../curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 | 19 +- .../docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 | 27 +- .../docs/libcurl/opts/CURLOPT_WRITEDATA.3 | 2 +- .../docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 | 39 +- .../docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 | 20 +- .../docs/libcurl/opts/CURLOPT_XFERINFODATA.3 | 47 +- .../libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 | 57 +- .../libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 | 18 +- .../docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 | 10 +- .../curl/docs/libcurl/opts/CURLSHOPT_SHARE.3 | 7 +- .../docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 | 9 +- .../docs/libcurl/opts/CURLSHOPT_UNSHARE.3 | 7 +- .../docs/libcurl/opts/CURLSHOPT_USERDATA.3 | 11 +- .../curl/docs/libcurl/symbols-in-versions | 14 +- external/curl/include/curl/curl.h | 26 +- external/curl/include/curl/curlver.h | 8 +- external/curl/include/curl/system.h | 37 +- external/curl/lib/CMakeLists.txt | 21 +- external/curl/lib/Makefile.am | 2 +- external/curl/lib/Makefile.in | 2 +- external/curl/lib/Makefile.mk | 5 +- external/curl/lib/altsvc.c | 10 +- external/curl/lib/arpa_telnet.h | 9 +- external/curl/lib/asyn-ares.c | 149 +- external/curl/lib/asyn-thread.c | 50 +- external/curl/lib/base64.c | 1 + external/curl/lib/c-hyper.c | 106 +- external/curl/lib/cf-h1-proxy.c | 55 +- external/curl/lib/cf-h2-proxy.c | 67 +- external/curl/lib/cf-haproxy.c | 20 +- external/curl/lib/cf-https-connect.c | 54 +- external/curl/lib/cf-socket.c | 93 +- external/curl/lib/cfilters.c | 204 +- external/curl/lib/cfilters.h | 113 +- external/curl/lib/config-amigaos.h | 1 - external/curl/lib/config-dos.h | 1 - external/curl/lib/config-os400.h | 6 - external/curl/lib/config-plan9.h | 2 - external/curl/lib/config-riscos.h | 6 - external/curl/lib/config-win32.h | 109 +- external/curl/lib/config-win32ce.h | 5 +- external/curl/lib/conncache.c | 25 +- external/curl/lib/connect.c | 93 +- external/curl/lib/content_encoding.c | 281 +- external/curl/lib/content_encoding.h | 9 +- external/curl/lib/cookie.c | 32 +- external/curl/lib/curl_config.h.cmake | 27 +- external/curl/lib/curl_config.h.in | 12 +- external/curl/lib/curl_hmac.h | 3 +- external/curl/lib/curl_memory.h | 6 +- external/curl/lib/curl_multibyte.c | 4 +- external/curl/lib/curl_multibyte.h | 8 +- external/curl/lib/curl_ntlm_core.c | 9 + external/curl/lib/curl_ntlm_wb.c | 14 +- external/curl/lib/curl_path.h | 2 +- external/curl/lib/curl_rtmp.c | 2 +- external/curl/lib/curl_sasl.c | 3 + external/curl/lib/curl_setup.h | 141 +- external/curl/lib/curl_setup_once.h | 8 +- external/curl/lib/curl_sspi.h | 16 + external/curl/lib/curl_trc.c | 26 +- external/curl/lib/curl_trc.h | 108 +- external/curl/lib/doh.c | 43 +- external/curl/lib/dynbuf.c | 6 +- external/curl/lib/dynhds.c | 29 + external/curl/lib/dynhds.h | 9 + external/curl/lib/easy.c | 84 +- external/curl/lib/easy_lock.h | 9 + external/curl/lib/file.c | 8 +- external/curl/lib/fopen.c | 77 +- external/curl/lib/formdata.c | 8 +- external/curl/lib/ftp.c | 6 +- external/curl/lib/ftplistparser.c | 3 - external/curl/lib/functypes.h | 2 +- external/curl/lib/getenv.c | 5 +- external/curl/lib/hostasyn.c | 11 +- external/curl/lib/hostip.c | 115 +- external/curl/lib/hostip.h | 4 + external/curl/lib/hostip6.c | 7 +- external/curl/lib/hsts.c | 28 +- external/curl/lib/http.c | 236 +- external/curl/lib/http.h | 6 +- external/curl/lib/http2.c | 134 +- external/curl/lib/http_aws_sigv4.c | 11 +- external/curl/lib/http_chunks.c | 83 +- external/curl/lib/http_chunks.h | 4 +- external/curl/lib/http_proxy.c | 2 +- external/curl/lib/idn.c | 2 +- external/curl/lib/imap.c | 4 +- external/curl/lib/ldap.c | 20 +- external/curl/lib/libcurl.plist | 6 +- external/curl/lib/md4.c | 5 +- external/curl/lib/memdebug.c | 2 +- external/curl/lib/memdebug.h | 4 +- external/curl/lib/mime.c | 5 +- external/curl/lib/mprintf.c | 7 +- external/curl/lib/mqtt.c | 9 - external/curl/lib/multi.c | 295 +- external/curl/lib/multihandle.h | 15 +- external/curl/lib/netrc.c | 2 +- external/curl/lib/openldap.c | 54 +- external/curl/lib/pop3.c | 2 +- external/curl/lib/progress.c | 8 +- external/curl/lib/rand.c | 28 +- external/curl/lib/rand.h | 2 +- external/curl/lib/rename.c | 2 +- external/curl/lib/rtsp.c | 359 +- external/curl/lib/rtsp.h | 9 + external/curl/lib/select.c | 2 +- external/curl/lib/sendf.c | 326 +- external/curl/lib/sendf.h | 127 +- external/curl/lib/setopt.c | 220 +- external/curl/lib/setup-win32.h | 13 +- external/curl/lib/share.h | 10 +- external/curl/lib/smb.c | 9 +- external/curl/lib/smtp.c | 2 +- external/curl/lib/socketpair.c | 6 +- external/curl/lib/socketpair.h | 17 + external/curl/lib/socks.c | 48 +- external/curl/lib/strdup.c | 28 +- external/curl/lib/strdup.h | 3 +- external/curl/lib/strerror.c | 20 +- external/curl/lib/strerror.h | 2 +- external/curl/lib/system_win32.c | 4 +- external/curl/lib/system_win32.h | 6 +- external/curl/lib/tftp.c | 14 +- external/curl/lib/tftp.h | 3 + external/curl/lib/timediff.c | 2 +- external/curl/lib/timeval.c | 7 +- external/curl/lib/transfer.c | 277 +- external/curl/lib/url.c | 1187 +- external/curl/lib/url.h | 9 +- external/curl/lib/urlapi.c | 45 +- external/curl/lib/urldata.h | 86 +- external/curl/lib/vauth/digest.c | 1 - external/curl/lib/version.c | 12 +- external/curl/lib/version_win32.c | 4 +- external/curl/lib/version_win32.h | 4 +- external/curl/lib/vquic/curl_msh3.c | 35 +- external/curl/lib/vquic/curl_ngtcp2.c | 360 +- external/curl/lib/vquic/curl_quiche.c | 249 +- external/curl/lib/vquic/vquic.c | 27 +- external/curl/lib/vquic/vquic_int.h | 6 + external/curl/lib/vssh/libssh.c | 46 +- external/curl/lib/vssh/libssh2.c | 262 +- external/curl/lib/vssh/ssh.h | 1 + external/curl/lib/vssh/wolfssh.c | 3 - external/curl/lib/vtls/bearssl.c | 54 +- external/curl/lib/vtls/gtls.c | 121 +- external/curl/lib/vtls/gtls.h | 6 +- external/curl/lib/vtls/keylog.c | 9 +- external/curl/lib/vtls/mbedtls.c | 10 +- external/curl/lib/vtls/mbedtls_threadlock.c | 2 +- external/curl/lib/vtls/openssl.c | 526 +- external/curl/lib/vtls/openssl.h | 21 +- external/curl/lib/vtls/rustls.c | 117 +- external/curl/lib/vtls/schannel.c | 174 +- external/curl/lib/vtls/schannel_int.h | 17 + external/curl/lib/vtls/schannel_verify.c | 64 +- external/curl/lib/vtls/sectransp.c | 40 +- external/curl/lib/vtls/vtls.c | 419 +- external/curl/lib/vtls/vtls.h | 80 +- external/curl/lib/vtls/vtls_int.h | 40 +- external/curl/lib/vtls/wolfssl.c | 37 +- external/curl/lib/vtls/x509asn1.c | 10 +- external/curl/lib/warnless.c | 12 +- external/curl/lib/warnless.h | 21 +- external/curl/lib/ws.c | 8 +- external/curl/m4/curl-amissl.m4 | 2 +- external/curl/m4/curl-compilers.m4 | 147 +- external/curl/m4/curl-functions.m4 | 33 +- external/curl/m4/curl-openssl.m4 | 2 +- .../curl/projects/Windows/VC10/curl-all.sln | 298 - .../projects/Windows/VC10/lib/libcurl.sln | 181 - .../projects/Windows/VC10/lib/libcurl.vcxproj | 2664 ---- .../curl/projects/Windows/VC10/src/curl.sln | 181 - .../projects/Windows/VC10/src/curl.vcxproj | 2741 ---- .../curl/projects/Windows/VC11/curl-all.sln | 298 - .../projects/Windows/VC11/lib/libcurl.vcxproj | 2720 ---- .../Windows/VC11/lib/libcurl.vcxproj.filters | 17 - .../curl/projects/Windows/VC11/src/curl.sln | 181 - .../projects/Windows/VC11/src/curl.vcxproj | 2797 ---- .../Windows/VC11/src/curl.vcxproj.filters | 17 - .../projects/Windows/VC12/lib/libcurl.sln | 181 - .../projects/Windows/VC12/lib/libcurl.vcxproj | 2720 ---- .../Windows/VC12/lib/libcurl.vcxproj.filters | 17 - .../projects/Windows/VC12/src/curl.vcxproj | 2797 ---- .../Windows/VC12/src/curl.vcxproj.filters | 17 - .../Windows/VC14.10/lib/libcurl.vcxproj | 2692 ---- .../projects/Windows/VC14.10/src/curl.vcxproj | 2769 ---- .../Windows/{VC12 => VC14.20}/curl-all.sln | 2 +- .../Windows/{VC11 => VC14.20}/lib/libcurl.sln | 2 +- .../lib/libcurl.vcxproj.filters | 0 .../Windows/{VC12 => VC14.20}/src/curl.sln | 2 +- .../src/curl.vcxproj.filters | 0 .../Windows/VC14.30/lib/libcurl.vcxproj | 2692 ---- .../projects/Windows/VC14.30/src/curl.sln | 2 +- .../projects/Windows/VC14.30/src/curl.vcxproj | 2769 ---- .../projects/Windows/VC14/lib/libcurl.vcxproj | 2720 ---- .../projects/Windows/VC14/src/curl.vcxproj | 2797 ---- external/curl/projects/generate.bat | 25 +- external/curl/scripts/Makefile.am | 2 +- external/curl/scripts/Makefile.in | 2 +- external/curl/scripts/checksrc.pl | 20 + external/curl/scripts/schemetable.c | 207 + external/curl/src/.checksrc | 1 + external/curl/src/Makefile.am | 4 +- external/curl/src/Makefile.in | 122 +- external/curl/src/Makefile.inc | 2 + external/curl/src/curl.rc | 2 +- external/curl/src/tool_cb_hdr.c | 27 +- external/curl/src/tool_cb_prg.c | 15 +- external/curl/src/tool_cb_rea.c | 2 +- external/curl/src/tool_cb_see.c | 15 - external/curl/src/tool_cb_see.h | 4 +- external/curl/src/tool_cb_wrt.c | 12 +- external/curl/src/tool_dirhie.c | 8 +- external/curl/src/tool_doswin.c | 36 +- external/curl/src/tool_doswin.h | 8 +- external/curl/src/tool_filetime.c | 8 +- external/curl/src/tool_filetime.h | 4 +- external/curl/src/tool_findfile.c | 2 +- external/curl/src/tool_findfile.h | 2 +- external/curl/src/tool_getparam.c | 8 +- external/curl/src/tool_getpass.c | 6 +- external/curl/src/tool_help.c | 2 - external/curl/src/tool_hugehelp.c | 12341 +++++++-------- external/curl/src/tool_ipfs.c | 296 + .../libtest/sethostname.h => src/tool_ipfs.h} | 23 +- external/curl/src/tool_main.c | 13 +- external/curl/src/tool_operate.c | 205 +- external/curl/src/tool_operate.h | 2 +- external/curl/src/tool_operhlp.c | 4 +- external/curl/src/tool_parsecfg.c | 9 +- external/curl/src/tool_sdecls.h | 2 +- external/curl/src/tool_setup.h | 4 +- external/curl/src/tool_sleep.c | 2 +- external/curl/src/tool_urlglob.c | 26 +- external/curl/src/tool_util.c | 2 +- external/curl/src/tool_version.h | 2 +- external/curl/src/tool_writeout_json.c | 4 +- external/curl/src/tool_xattr.c | 4 +- external/curl/src/var.c | 2 +- external/curl/tests/README.md | 81 +- external/curl/tests/data/DISABLED | 3 - external/curl/tests/data/Makefile.in | 13 +- external/curl/tests/data/Makefile.inc | 13 +- external/curl/tests/data/test1475 | 83 + external/curl/tests/data/test1476 | 59 + external/curl/tests/data/test1477 | 30 + external/curl/tests/data/test1506 | 1 - external/curl/tests/data/test1545 | 38 + external/curl/tests/data/test1683 | 2 - external/curl/tests/data/test1900 | 38 + external/curl/tests/data/test194 | 3 +- external/curl/tests/data/test268 | 59 + external/curl/tests/data/test3103 | 2 +- external/curl/tests/data/test439 | 6 +- external/curl/tests/data/test457 | 5 +- external/curl/tests/data/test459 | 63 + external/curl/tests/data/test722 | 6 +- external/curl/tests/data/test723 | 2 +- external/curl/tests/data/test724 | 8 +- external/curl/tests/data/test725 | 4 +- external/curl/tests/data/test726 | 2 +- external/curl/tests/data/test727 | 6 +- external/curl/tests/data/test729 | 41 + external/curl/tests/data/test730 | 52 + external/curl/tests/data/test731 | 58 + external/curl/tests/data/test732 | 52 + external/curl/tests/data/test733 | 52 + external/curl/tests/data/test734 | 52 + external/curl/tests/data/test735 | 52 + external/curl/tests/data/test736 | 58 + external/curl/tests/data/test737 | 58 + external/curl/tests/data/test738 | 37 + external/curl/tests/data/test739 | 34 + external/curl/tests/data/test740 | 60 + external/curl/tests/data/test741 | 42 + external/curl/tests/disable-scan.pl | 41 + .../curl/tests/http/clients/h2-download.c | 1 - external/curl/tests/libtest/CMakeLists.txt | 2 +- external/curl/tests/libtest/Makefile.am | 2 +- external/curl/tests/libtest/Makefile.in | 774 +- external/curl/tests/libtest/Makefile.inc | 8 +- external/curl/tests/libtest/first.c | 2 +- external/curl/tests/libtest/lib1156.c | 2 +- external/curl/tests/libtest/lib1517.c | 2 +- external/curl/tests/libtest/lib1531.c | 2 +- external/curl/tests/libtest/lib1545.c | 56 + external/curl/tests/libtest/lib1560.c | 17 +- external/curl/tests/libtest/lib1900.c | 55 + external/curl/tests/libtest/lib1960.c | 2 +- external/curl/tests/libtest/lib2305.c | 2 - external/curl/tests/libtest/lib3026.c | 2 +- external/curl/tests/libtest/lib518.c | 2 +- external/curl/tests/libtest/lib537.c | 2 +- external/curl/tests/libtest/lib544.c | 2 - external/curl/tests/libtest/lib670.c | 2 +- external/curl/tests/libtest/sethostname.c | 2 - external/curl/tests/libtest/stub_gssapi.c | 2 +- external/curl/tests/libtest/test.h | 2 +- external/curl/tests/libtest/test613.pl | 2 +- external/curl/tests/libtest/testutil.c | 4 +- external/curl/tests/libtest/testutil.h | 2 +- external/curl/tests/pathhelp.pm | 1 + external/curl/tests/runtests.1 | 37 +- external/curl/tests/runtests.pl | 4 +- external/curl/tests/server/getpart.c | 4 +- external/curl/tests/server/mqttd.c | 3 +- external/curl/tests/server/resolve.c | 2 +- external/curl/tests/server/rtspd.c | 2 +- external/curl/tests/server/sockfilt.c | 4 +- external/curl/tests/server/socksd.c | 19 +- external/curl/tests/server/sws.c | 2 +- external/curl/tests/server/tftpd.c | 4 +- external/curl/tests/server/util.c | 30 +- external/curl/tests/server/util.h | 9 +- external/curl/tests/servers.pm | 34 +- external/curl/tests/testcurl.1 | 2 +- external/curl/tests/unit/curlcheck.h | 2 - external/curl/tests/unit/unit1394.c | 2 +- external/curl/tests/unit/unit1395.c | 10 +- external/curl/tests/unit/unit1604.c | 4 +- external/curl/tests/unit/unit2600.c | 8 +- external/curl/tests/unit/unit3200.c | 5 + 855 files changed, 29445 insertions(+), 57544 deletions(-) create mode 100644 external/curl/docs/examples/interface.c create mode 100644 external/curl/docs/examples/keepalive.c create mode 100644 external/curl/docs/examples/localport.c create mode 100644 external/curl/docs/examples/rtsp-options.c delete mode 100644 external/curl/projects/Windows/VC10/curl-all.sln delete mode 100644 external/curl/projects/Windows/VC10/lib/libcurl.sln delete mode 100644 external/curl/projects/Windows/VC10/lib/libcurl.vcxproj delete mode 100644 external/curl/projects/Windows/VC10/src/curl.sln delete mode 100644 external/curl/projects/Windows/VC10/src/curl.vcxproj delete mode 100644 external/curl/projects/Windows/VC11/curl-all.sln delete mode 100644 external/curl/projects/Windows/VC11/lib/libcurl.vcxproj delete mode 100644 external/curl/projects/Windows/VC11/lib/libcurl.vcxproj.filters delete mode 100644 external/curl/projects/Windows/VC11/src/curl.sln delete mode 100644 external/curl/projects/Windows/VC11/src/curl.vcxproj delete mode 100644 external/curl/projects/Windows/VC11/src/curl.vcxproj.filters delete mode 100644 external/curl/projects/Windows/VC12/lib/libcurl.sln delete mode 100644 external/curl/projects/Windows/VC12/lib/libcurl.vcxproj delete mode 100644 external/curl/projects/Windows/VC12/lib/libcurl.vcxproj.filters delete mode 100644 external/curl/projects/Windows/VC12/src/curl.vcxproj delete mode 100644 external/curl/projects/Windows/VC12/src/curl.vcxproj.filters delete mode 100644 external/curl/projects/Windows/VC14.10/lib/libcurl.vcxproj delete mode 100644 external/curl/projects/Windows/VC14.10/src/curl.vcxproj rename external/curl/projects/Windows/{VC12 => VC14.20}/curl-all.sln (99%) rename external/curl/projects/Windows/{VC11 => VC14.20}/lib/libcurl.sln (98%) rename external/curl/projects/Windows/{VC10 => VC14.20}/lib/libcurl.vcxproj.filters (100%) rename external/curl/projects/Windows/{VC12 => VC14.20}/src/curl.sln (98%) rename external/curl/projects/Windows/{VC10 => VC14.20}/src/curl.vcxproj.filters (100%) delete mode 100644 external/curl/projects/Windows/VC14.30/lib/libcurl.vcxproj delete mode 100644 external/curl/projects/Windows/VC14.30/src/curl.vcxproj delete mode 100644 external/curl/projects/Windows/VC14/lib/libcurl.vcxproj delete mode 100644 external/curl/projects/Windows/VC14/src/curl.vcxproj create mode 100644 external/curl/scripts/schemetable.c create mode 100644 external/curl/src/.checksrc create mode 100644 external/curl/src/tool_ipfs.c rename external/curl/{tests/libtest/sethostname.h => src/tool_ipfs.h} (70%) create mode 100644 external/curl/tests/data/test1475 create mode 100644 external/curl/tests/data/test1476 create mode 100644 external/curl/tests/data/test1477 create mode 100644 external/curl/tests/data/test1545 create mode 100644 external/curl/tests/data/test1900 create mode 100644 external/curl/tests/data/test268 create mode 100644 external/curl/tests/data/test459 create mode 100644 external/curl/tests/data/test729 create mode 100644 external/curl/tests/data/test730 create mode 100644 external/curl/tests/data/test731 create mode 100644 external/curl/tests/data/test732 create mode 100644 external/curl/tests/data/test733 create mode 100644 external/curl/tests/data/test734 create mode 100644 external/curl/tests/data/test735 create mode 100644 external/curl/tests/data/test736 create mode 100644 external/curl/tests/data/test737 create mode 100644 external/curl/tests/data/test738 create mode 100644 external/curl/tests/data/test739 create mode 100644 external/curl/tests/data/test740 create mode 100644 external/curl/tests/data/test741 create mode 100644 external/curl/tests/libtest/lib1545.c create mode 100644 external/curl/tests/libtest/lib1900.c diff --git a/external/curl/CHANGES b/external/curl/CHANGES index 0a20ceace..f9066e768 100644 --- a/external/curl/CHANGES +++ b/external/curl/CHANGES @@ -6,9540 +6,10369 @@ Changelog -Version 8.4.0 (11 Oct 2023) +Version 8.5.0 (6 Dec 2023) -Daniel Stenberg (11 Oct 2023) +Daniel Stenberg (6 Dec 2023) - RELEASE-NOTES: synced -- THANKS: add contributors from 8.4.0 - -Jay Satiro (11 Oct 2023) + The curl 8.5.0 release. -- socks: return error if hostname too long for remote resolve +Dan Fandrich (5 Dec 2023) - Prior to this change the state machine attempted to change the remote - resolve to a local resolve if the hostname was longer than 255 - characters. Unfortunately that did not work as intended and caused a - security issue. +- github/labeler: switch from the beta to labeler v5 - Bug: https://curl.se/docs/CVE-2023-38545.html + Some keys were renamed and the dot option was made default. -Stefan Eissing (10 Oct 2023) + Closes #12458 -- CI: remove slowed-network tests +Daniel Stenberg (5 Dec 2023) - - remove these tests as they are currently not reliable in our CI - setups. +- DEPRECATE: remove NTLM_WB in June 2024 - curl handles the test cases, but CI sometimes fails on these due to - additional conditions. Rather than mix them in, an additional CI job - will be added in the future that is specific to them. + Ref: https://curl.se/mail/lib-2023-12/0010.html - Closes https://github.com/curl/curl/pull/12075 + Closes #12451 -Jay Satiro (10 Oct 2023) +Jacob Hoffman-Andrews (4 Dec 2023) -- libcurl-env-dbg.3: move debug variables from libcurl-env.3 +- rustls: implement connect_blocking - - Move documentation of libcurl environment variables used only in debug - builds from libcurl-env into a separate document libcurl-env-dbg. + Closes #11647 - - Document more debug environment variables. +Daniel Stenberg (4 Dec 2023) - Previously undocumented or missing a description: +- examples/rtsp-options.c: add - CURL_ALTSVC_HTTP, CURL_DBG_SOCK_WBLOCK, CURL_DBG_SOCK_WPARTIAL, - CURL_DBG_QUIC_WBLOCK, CURL_DEBUG, CURL_DEBUG_SIZE, CURL_GETHOSTNAME, - CURL_HSTS_HTTP, CURL_FORCETIME, CURL_SMALLREQSEND, CURL_SMALLSENDS, - CURL_TIME. + Just a bare bones RTSP example using CURLOPT_RTSP_SESSION_ID and + CURLOPT_RTSP_REQUEST set to CURL_RTSPREQ_OPTIONS. - Closes https://github.com/curl/curl/pull/11811 + Closes #12452 -Dan Fandrich (9 Oct 2023) +Stefan Eissing (4 Dec 2023) -- test670: increase the test timeout +- ngtcp2: ignore errors on unknown streams - This should make it more immune to loaded servers. + - expecially in is_alive checks on connections, we might + see incoming packets on streams already forgotten and closed, + leading to errors reported by nghttp3. Ignore those. - Ref: #11328 + Closes #12449 -Stefan Eissing (9 Oct 2023) +Daniel Stenberg (4 Dec 2023) -- MQTT: improve receive of ACKs +- docs: make all examples in all libcurl man pages compile - - add `mq->recvbuf` to provide buffering of incomplete - ACK responses - - continue ACK reading until sufficient bytes available - - fixes test failures on low network receives + Closes #12448 - Closes #12071 +- checksrc.pl: support #line instructions -Viktor Szakats (9 Oct 2023) + makes it identify the correct source file and line -- quic: fix BoringSSL build +- GHA/man-examples: verify libcurl man page examples - Add guard around `SSL_CTX_set_ciphersuites()` use. +- verify-examples.pl: verify that all man page examples compile clean - Bug: https://github.com/curl/curl/pull/12065#issuecomment-1752171885 +- RELEASE-NOTES: synced - Follow-up to aa9a6a177017e4b74d33cdf85a3594900f4a7f81 +Graham Campbell (2 Dec 2023) - Co-authored-by: Jay Satiro - Reviewed-by: Daniel Stenberg - Closes #12067 +- http3: bump ngtcp2 and nghttp3 versions -Stefan Eissing (9 Oct 2023) + nghttp3 v1.1.0 + ngtcp2 v1.1.0 -- test1540: improve reliability + In docs and CI - - print that bytes have been received on pausing, but not how many + Closes #12446 - Closes #12069 +- CI/quiche: use `3.1.4+quic` consistently in CI workflows -- test2302: improve reliability + Closes #12447 - - make result print collected write data, unless - change in meta flags is detected - - will show same result even when data arrives via - several writecb invocations +Viktor Szakats (2 Dec 2023) - Closes #12068 +- test1545: disable deprecation warnings -Daniel Stenberg (9 Oct 2023) + Fixes: + https://ci.appveyor.com/project/curlorg/curl/builds/48631551/job/bhx74e0i66yr + p6pk#L1205 -- curl_easy_pause: set "in callback" true on exit if true + Same with details: + https://ci.appveyor.com/project/curlorg/curl/builds/48662893/job/ol8a78q9gmil + b6wt#L1263 + ``` + tests/libtest/lib1545.c:38:3: error: 'curl_formadd' is deprecated: since 7.56 + .0. Use curl_mime_init() [-Werror=deprecated-declarations] + 38 | curl_formadd(&m_formpost, &lastptr, CURLFORM_COPYNAME, "file", + | ^~~~~~~~~~~~ + [...] + ``` - Because it might have called another callback in the mean time that then - set the bit FALSE on exit. + Follow-up to 07a3cd83e0456ca17dfd8c3104af7cf45b7a1ff5 #12421 - Reported-by: Jay Satiro - Fixes #12059 - Closes #12061 + Fixes #12445 + Closes #12444 -Viktor Szakats (8 Oct 2023) +Daniel Stenberg (2 Dec 2023) -- h3: add support for ngtcp2 with AWS-LC builds +- INSTALL: update list of ports and CPU archs - ``` - curl 8.4.0-DEV (x86_64-apple-darwin) libcurl/8.4.0-DEV (SecureTransport) AWS- - LC/1.15.0 nghttp2/1.56.0 ngtcp2/0.19.1 nghttp3/0.15.0 - Release-Date: [unreleased] - Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps - mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss - Features: alt-svc AsynchDNS HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile Multi - SSL NTLM SSL threadsafe UnixSockets - ``` +- symbols-in-versions: the CLOSEPOLICY options are deprecated - Also delete an obsolete GnuTLS TODO and update the header comment in - `FindNGTCP2.cmake`. + The were used with the CURLOPT_CLOSEPOLICY option, which *never* worked. - Reviewed-by: Daniel Stenberg - Closes #12066 +z2_ (1 Dec 2023) -- build: do not publish `HAVE_BORINGSSL`, `HAVE_AWSLC` macros +- build: fix builds that disable protocols but not digest auth - Syncing this up with CMake. + - Build base64 functions if digest auth is not disabled. - Source code uses the built-in `OPENSSL_IS_AWSLC` and - `OPENSSL_IS_BORINSSL` macros to detect BoringSSL and AWS-LC. No help is - necessary from the build tools. + Prior to this change if some protocols were disabled but not digest auth + then a build error would occur due to missing base64 functions. - The one use of `HAVE_BORINGSSL` in the source turned out to be no longer - necessary for warning-free BoringSSL + Schannel builds. Ref: #1610 #2634 + Fixes https://github.com/curl/curl/issues/12440 + Closes https://github.com/curl/curl/pull/12442 - autotools detects this anyway for display purposes. - CMake detects this to decide whether to use the BoringSSL-specific - crypto lib with ngtcp2. It detects AWS-LC, but doesn't use the detection - result just yet (planned in #12066). +Michał Antoniak (1 Dec 2023) - Ref: #11964 +- connect: reduce number of transportation providers - Reviewed-by: Daniel Stenberg - Reviewed-by: Jay Satiro - Closes #12065 + Use only the ones necessary - the ones that are built-in. Saves a few + bytes in the resulting code. -Marc Hoersken (8 Oct 2023) + Closes #12438 -- CI: move distcheck job from Azure Pipelines to GitHub Actions +David Benjamin (1 Dec 2023) - This will allow for more trigger excludes within Azure Pipelines. +- vtls: consistently use typedef names for OpenSSL structs - Also fixes seemingly broken check with scripts/installcheck.sh. - Ref: 190374c74ec4e5247d9066544c86e8d095e1d7b5 + The foo_st names don't appear in OpenSSL public API documentation. The + FOO typedefs are more common. This header was already referencing + SSL_CTX via . There is a comment about avoiding + , but OpenSSL actually declares all the typedefs in + , which is already included by (and + every other OpenSSL header), so just use that. Though I've included it + just to be explicit. - Assisted-by: Philip Heiduck - Closes #9532 + (I'm also fairly sure including already triggers the + Schannel conflicts anyway. The comment was probably just out of date.) -Daniel Stenberg (8 Oct 2023) + Closes #12439 -- url: fall back to http/https proxy env-variable if ws/wss not set +Lau (1 Dec 2023) - Reported-by: Craig Andrews - Fixes #12031 - Closes #12058 +- libcurl-security.3: fix typo -Stefan Eissing (8 Oct 2023) + Fixed minimal typo. -- cf-socket: simulate slow/blocked receives in debug + Closes #12437 - add 2 env variables for non-UDP sockets: - 1. CURL_DBG_SOCK_RBLOCK: percentage of receive calls that randomly - should return EAGAIN - 2. CURL_DBG_SOCK_RMAX: max amount of bytes read from socket +Stefan Eissing (1 Dec 2023) - Closes #12035 +- ngtcp2: fix races in stream handling -- http2: refused stream handling for retry + - fix cases where ngtcp2 invokes callbacks on streams that + nghttp3 has already forgotten. Ignore the NGHTTP3_ERR_STREAM_NOT_FOUND + in these cases as it is normal behaviour. - - answer HTTP/2 streams refused via a GOAWAY from the server to - respond with CURLE_RECV_ERROR in order to trigger a retry - on another connection + Closes #12435 - Reported-by: black-desk on github - Ref #11859 - Closes #12054 +Emanuele Torre (1 Dec 2023) -Jay Satiro (8 Oct 2023) +- tool_writeout_json: fix JSON encoding of non-ascii bytes -- CURLOPT_DEBUGFUNCTION.3: warn about internal handles + char variables if unspecified can be either signed or unsigned depending + on the platform according to the C standard; in most platforms, they are + signed. - - Warn that the user's debug callback may be called with the handle - parameter set to an internal handle. + This meant that the *i<32 waas always true for bytes with the top bit + set. So they were always getting encoded as \uXXXX, and then since they + were also signed negative, they were getting extended with 1s causing + '\xe2' to be expanded to \uffffffe2, for example: - Without this warning the user may assume that the only handles their - debug callback receives are the easy handles on which they set - CURLOPT_DEBUGFUNCTION. + $ curl --variable 'v=“' --expand-write-out '{{v:json}}\n' file:///dev/nul + l + \uffffffe2\uffffff80\uffffff9c - This is a follow-up to f8cee8cc which changed DoH handles to inherit - the debug callback function set in the user's easy handle. As a result - those handles are now passed to the user's debug callback function. + I fixed this bug by making the code use explicitly unsigned char* + variables instead of char* variables. - Closes https://github.com/curl/curl/pull/12034 + Test 268 verifies -- url: fix typo + Reported-by: iconoclasthero + Closes #12434 -Daniel Stenberg (8 Oct 2023) +Stefan Eissing (1 Dec 2023) -- test458: verify --expand-output, expanding a file name accepting option +- cf-socket: TCP trace output local address used in connect - Verifies the fix in #12055 (commit f2c8086ff15e6e995e1) + Closes #12427 -- tool_getparam: accept variable expansion on file names too +Jay Satiro (1 Dec 2023) - Reported-by: PBudmark on github - Fixes #12048 - Closes #12055 +- CURLINFO_PRETRANSFER_TIME_T.3: fix time explanation -- RELEASE-NOTES: synced + - Change CURLINFO_PRETRANSFER_TIME_T explanation to say that it + includes protocol-specific instructions that trigger a transfer. -- multi: do CURLM_CALL_MULTI_PERFORM at two more places + Prior to this change it explicitly said that it did not include those + instructions in the time, but that is incorrect. - ... when it does a state transition but there is no particular socket or - timer activity. This was made apparent when commit b5bb84c removed a - superfluous timer expiry. + The change is a copy of the fixed explanation already in + CURLINFO_PRETRANSFER_TIME, fixed by ec8dcd7b. - Reported-by: Dan Fandrich. - Fixes #12033 - Closes #12056 + Reported-by: eeverettrbx@users.noreply.github.com -Viktor Szakats (7 Oct 2023) + Fixes https://github.com/curl/curl/issues/12431 + Closes https://github.com/curl/curl/pull/12432 -- GHA/linux: mbedtls 3.5.0 + minor dep bumps +Daniel Stenberg (30 Nov 2023) - Closes #12057 +- multi: during ratelimit multi_getsock should return no sockets -Dan Fandrich (7 Oct 2023) + ... as there is nothing to wait for then, it just waits. Otherwise, this + causes much more CPU work and updates than necessary during ratelimit + periods. -- CI: bump OpenLDAP package version on FreeBSD + Ref: https://curl.se/mail/lib-2023-11/0056.html + Closes #12430 - The old one is no longer available. +Dmitry Karpov (30 Nov 2023) -Marc Hoersken (7 Oct 2023) +- transfer: abort pause send when connection is marked for closing -- docs/libcurl/opts/Makefile.inc: add missing manpage files + This handles cases of some bi-directional "upgrade" scenarios + (i.e. WebSockets) where sending is paused until some "upgrade" handshake + is completed, but server rejects the handshake and closes the + connection. - Detected with #9532 + Closes #12428 -Dan Fandrich (7 Oct 2023) +Daniel Stenberg (28 Nov 2023) -- tests: fix a race condition in ftp server disconnect +- RELEASE-NOTES: synced - If a client disconnected and reconnected quickly, before the ftp server - had a chance to respond, the protocol message/ack (ping/pong) sequence - got out of sync, causing messages sent to the old client to be delivered - to the new. A disconnect must now be acknowledged and intermediate - requests thrown out until it is, which ensures that such synchronization - problems can't occur. This problem could affect ftp, pop3, imap and smtp - tests. +- openssl: when a session-ID is reused, skip OCSP stapling - Fixes #12002 - Closes #12049 + Fixes #12399 + Reported-by: Alexey Larikov + Closes #12418 -Viktor Szakats (7 Oct 2023) +- test1545: test doing curl_formadd twice with missing file -- appveyor: bump mingw-w64 job to gcc 13 (was: 8) + Reproduces #12410 + Verifies the fix + Closes #12421 - This sets gcc 6, 7, 9, 13 in our test mix (was: 6, 7, 8, 9). - Adding a modern gcc version to the tests. +- Curl_http_body: cleanup properly when Curl_getformdata errors - (The gcc 8 job used to take around 50 minutes. The new image with gcc 13 - finished in 32, 35, 34 minutes in the 3 test runs so far.) + Reported-by: yushicheng7788 on github + Based-on-work-by: yushicheng7788 on github + Fixes #12410 + Closes #12421 - It also adds a modern CMake version and OS env to our mingw-w64 builds. +- test1477: verify that libcurl-errors.3 and public headers are synced - Closes #12051 + The script errorcodes.pl extracts all error codes from all headers and + checks that they are all documented, then checks that all documented + error codes are also specified in a header file. -David Benjamin (6 Oct 2023) + Closes #12424 -- openssl: use X509_ALGOR_get0 instead of reaching into X509_ALGOR +- libcurl-errors.3: sync with current public headers - While the struct is still public in OpenSSL, there is a (somewhat - inconvenient) accessor. Use it to remain compatible if it becomes opaque - in the future. + Closes #12424 - Closes #12038 +Stefan Eissing (28 Nov 2023) -Daniel Stenberg (6 Oct 2023) +- test459: fix for parallel runs -- curl_easy_pause.3: mention it works within callbacks + - change warniing message to work better with varying filename + length. + - adapt test output check to new formatting - Reported-by: Maxim Dzhura - Bug: https://curl.se/mail/lib-2023-10/0010.html - Closes #12046 + Follow-up to 97ccc4479f77ba3191c6 + Closes #12423 -- curl_easy_pause.3: mention h2/h3 buffering +Daniel Stenberg (27 Nov 2023) - Asked-by: Maxim Dzhura - Ref: https://curl.se/mail/lib-2023-10/0011.html +- tool_cb_prg: make the carriage return fit for wide progress bars - Closes #12045 + When the progress bar was made max width (256 columns), the fly() + function attempted to generate its output buffer too long so that the + trailing carriage return would not fit and then the output would show + wrongly. The fly function is called when the expected total transfer is + unknown, which could be one or more progress calls before the actual + progress meter get shown when the expected transfer size is provided. -Viktor Szakats (6 Oct 2023) + This new take also replaces the msnprintf() call with a much simpler + memset() for speed. -- cmake: re-add missed C89 headers for specific detections + Reported-by: Tim Hill + Fixes #12407 + Closes #12415 - We removed C89 `setjmp.h` and `signal.h` detections and excluded them - from the global header list we use when detecting functions [1]. Then - missed to re-add these headers to the specific functions which need - them to be detected [2]. Fix this omission in this patch. +- tool_parsecfg: make warning output propose double-quoting - [1] Follow-up to 3795fcde995d96db641ddbcc8a04f9f0f03bef9f #11951 - [2] Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 + When the config file parser detects a word that *probably* should be + quoted, mention double-quotes as a possible remedy. - Closes #12043 + Test 459 verifies. -Daniel Stenberg (6 Oct 2023) + Proposed-by: Jiehong on github + Fixes #12409 + Closes #12412 -- multi: set CURLM_CALL_MULTI_PERFORM after switch to DOING_MORE +Jay Satiro (26 Nov 2023) - Since there is nothing to wait for there. Avoids the test 1233 hang - reported in #12033. +- curl.rc: switch out the copyright symbol for plain ASCII - Reported-by: Dan Fandrich - Closes #12042 + .. like we already do for libcurl.rc. -Dan Fandrich (5 Oct 2023) + libcurl.rc copyright symbol used to cause a "non-ascii 8-bit codepoint" + warning so it was switched to ascii. -- test1903: actually verify the cookies after the test + Ref: https://github.com/curl/curl/commit/1ca62bb5#commitcomment-133474972 - The test otherwise could do just about anything (except leak memory in - debug mode) and its bad behaviour wouldn't be detected. Now, check the - resulting cookie file to ensure the cookies are still there. + Suggested-by: Robert Southee - Closes #12041 + Closes https://github.com/curl/curl/pull/12403 -- test: add missing s +Daniel Stenberg (26 Nov 2023) - The tests will otherwise fail if curl has them disabled. +- conncache: use the closure handle when disconnecting surplus connections -- test1906: set a lower timeout since it's hit on Windows + Use the closure handle for disconnecting connection cache entries so + that anything that happens during the disconnect is not stored and + associated with the 'data' handle which already just finished a transfer + and it is important that details from the unrelated disconnect does not + taint meta-data in the data handle. - msys2 builds actually hit the connect timeout in normal operation, so - lower the timeout from 5 minutes to 5 seconds to reduce test time. + Like storing the response code. - Ref: #11328 - Closes #12036 + This also adjust test 1506. Unfortunately it also removes a key part of + the test that verifies that a connection is closed since when this + output vanishes (because the closure handle is used), we don't know + exactly that the connection actually gets closed in this test... -Daniel Stenberg (5 Oct 2023) + Reported-by: ohyeaah on github + Fixes #12367 + Closes #12405 - RELEASE-NOTES: synced -Jay Satiro (5 Oct 2023) +Stefan Eissing (24 Nov 2023) -- idn: fix WinIDN null ptr deref on bad host +- quic: make eyeballers connect retries stop at weird replies - - Return CURLE_URL_MALFORMAT if IDN hostname cannot be converted from - UTF-8 to UTF-16. + - when a connect immediately goes into DRAINING state, do + not attempt retries in the QUIC connection filter. Instead, + return CURLE_WEIRD_SERVER_REPLY + - When eyeballing, interpret CURLE_WEIRD_SERVER_REPLY as an + inconclusive answer. When all addresses have been attempted, + rewind the address list once on an inconclusive answer. + - refs #11832 where connects were retried indefinitely until + the overall timeout fired - Prior to this change a failed conversion erroneously returned CURLE_OK - which meant 'decoded' pointer (what would normally point to the - punycode) would not be written to, remain NULL and be dereferenced - causing an access violation. + Closes #12400 - Closes https://github.com/curl/curl/pull/11983 +Daniel Stenberg (24 Nov 2023) -Dan Fandrich (4 Oct 2023) +- CI: verify libcurl function SYNPOSIS sections -- tests: close the shell used to start sshd + With the .github/scripits/verify-synopsis.pl script - This shell isn't needed once sshd starts, so use "exec" so it doesn't - stick around. + Closes #12402 - Closes #12032 +- docs/libcurl: SYNSOPSIS cleanup -Daniel Stenberg (4 Oct 2023) + - use the correct include file + - make sure they are declared as in the header file + - fix minor nroff syntax mistakes (missing .fi) -- base64: also build for curl + These are verified by verify-synopsis.pl, which extracts the SYNPOSIS + code and runs it through gcc. - Since the tool itself now uses the base64 code using the curlx way, it - needs to build also when the tool needs it. Starting now, the tool build - defines BULDING_CURL to allow lib-side code to use it. + Closes #12402 - Follow-up to 2e160c9c6525 +- sendf: fix comment typo - Closes #12010 +- fopen: allocate the dir after fopen -Eduard Strehlau (4 Oct 2023) + Move the allocation of the directory name down to after the fopen() call + to allow that shortcut code path to avoid a superfluous malloc+free + cycle. -- tests: Fix zombie processes left behind by FTP tests. + Follow-up to 73b65e94f35311 - ftpserver.pl correctly cleans up spawned server processes, - but forgets to wait for the shell used to spawn them. - This is barely noticeable during a normal testrun, - but causes process exhaustion and test failure - during a complete torture run of the FTP tests. + Closes #12398 - Fixes #12018 - Closes #12020 +Stefan Eissing (24 Nov 2023) -Dan Fandrich (4 Oct 2023) +- transfer: cleanup done+excess handling -- github/labeler: improve labeler matches + - add `SingleRequest->download_done` as indicator that + all download bytes have been received + - remove `stop_reading` bool from readwrite functions + - move excess body handling into client download writer -- test574: add a timeout to the test + Closes #12371 - This one hangs occasionally, so this will speed up a test run and allow - logs to be seen when it does. +Daniel Stenberg (23 Nov 2023) - Closes #12025 +- fopen: create new file using old file's mode -- tests: propagate errors in libtests + Because the function renames the temp file to the target name as a last + step, if the file was previously owned by a different user, not ORing + the old mode could otherwise end up creating a file that was no longer + readable by the original owner after save. - Use the test macros to automatically propagate some errors, and check - and log others while running the tests. This can help in debugging - exactly why a test has failed. + Reported-by: Loïc Yhuel + Fixes #12299 + Closes #12395 -- tests: set --expect100-timeout to improve test reliability +- test1476: require proxy - On an overloaded server, the default 1 second timeout can go by without - the test server having a chance to respond with the expected headers, - causing tests to fail. Increase the 1 second timeout to 99 seconds so - this failure mode is no longer a problem on test 1129. Some other tests - already set a high value, but make them consistently 99 seconds so if - something goes wrong the test is stalled for less time. + Follow-up from 323df4261c3542 - Ref: #11328 + Closes #12394 -- CI: ignore the "flaky" and "timing-dependent" test results in CMake +- fopen: create short(er) temporary file name - This was already done for automake builds but CMake builds were missed. - Test 1086 actually causes the test harness to crash with: + Only using random letters in the name plus a ".tmp" extension. Not by + appending characters to the final file name. - Warning: unable to close filehandle DWRITE properly: Broken pipe at C:/projec - ts/curl/tests/ftpserver.pl line 527 + Reported-by: Maksymilian Arciemowicz - Rather than fix it now, this change leaves test 1086 entirely skipped on - those builds that show this problem. + Closes #12388 - Follow-up to 589dca761 +Stefan Eissing (23 Nov 2023) - Ref: #11865 +- tests: git ignore generated second-hsts.txt file -Viktor Szakats (4 Oct 2023) + File is generated in test lib1900 -- cmake: improve OpenLDAP builds + Follow-up to 7cb03229d9e9c5 - - cmake: detect OpenLDAP based on function `ldap_init_fd`. - autotools does this. autotools also publishes this detection result - in `HAVE_LDAP_INIT_FD`. We don't mimic that with CMake as the source - doesn't use this value. (it might need to be remove-listed in - `scripts/cmp-config.pl` for future OpenLDAP test builds.) - This also deletes existing self-declaration method via the - CMake-specific `CURL_USE_OPENLDAP` configuration. + Closes #12393 - - cmake: define `LDAP_DEPRECATED=1` for OpenLDAP. - Like autotools does. This fixes a long list of these warnings: - ``` - /usr/local/opt/openldap/include/ldap.h:1049:5: warning: 'LDAP_DEPRECATED' i - s not defined, evaluates to 0 [-Wundef] - ``` +Viktor Szakats (23 Nov 2023) - - cmake: delete LDAP TODO comment no longer relevant. +- openssl: enable `infof_certstack` for 1.1 and LibreSSL 3.6 - Also: + Lower the barrier to enable `infof_certstack()` from OpenSSL 3 to + OpenSSL 1.1.x, and LibreSSL 3.6 or upper. - - autotools: replace domain name `dummy` with `0.0.0.0` in LDAP feature - detection functions. + With the caveat, that "group name" and "type name" are missing from + the log output with these TLS backends. - Ref: #11964 (effort to sync cmake detections with autotools) + Follow-up to b6e6d4ff8f253c8b8055bab9d4d6a10f9be109f3 #12030 - Closes #12024 + Reviewed-by: Daniel Stenberg + Closes #12385 -- cmake: fix unity builds for more build combinations +Daniel Stenberg (23 Nov 2023) - By using unique static function/variable names in source files - implementing these interfaces. +- urldata: fix typo in comment - - OpenLDAP combined with any SSH backend. +- CI: codespell - - MultiSSL with mbedTLS, OpenSSL, wolfSSL, SecureTransport. + The list of words to ignore is in the file + .github/scripts/codespell-ignore.txt - Closes #12027 + Closes #12390 -Daniel Stenberg (4 Oct 2023) +- lib: fix comment typos -- tests: remove leading spaces from some tags + Five separate ones, found by codespell - The threee tags ``, `` and `` were frequently used - with a leading space that this removes. The reason this habbit is so - widespread in testcases is probably that they have been copy and pasted. + Closes #12390 - Hence, fixing them all now might curb this practice from now on. +- test1476: verify cookie PSL mixed case - Closes #12028 +- cookie: lowercase the domain names before PSL checks -Viktor Szakats (4 Oct 2023) + Reported-by: Harry Sintonen -- GHA: bump actions/checkout + Closes #12387 - Follow-up to 2e0fa50fc16b9339f51e0a7bfff0352829323acb #11964 - Follow-up to c39585d9b7ef3cbfc1380812dec60e7b275b6af3 #12000 +Viktor Szakats (23 Nov 2023) - Closes #12023 +- openssl: fix building with v3 `no-deprecated` + add CI test -- spelling: fix codespell 2.2.6 typos + - build quictls with `no-deprecated` in CI to have test coverage for + this OpenSSL 3 configuration. - Closes #12019 + - don't call `OpenSSL_add_all_algorithms()`, `OpenSSL_add_all_digests()`. + The caller code is meant for OpenSSL 3, while these two functions were + only necessary before OpenSSL 1.1.0. They are missing from OpenSSL 3 + if built with option `no-deprecated`, causing build errors: + ``` + vtls/openssl.c:4097:3: error: call to undeclared function 'OpenSSL_add_all_ + algorithms'; ISO C99 and later do not support implicit function declaration + s [-Wimplicit-function-declaration] + vtls/openssl.c:4098:3: error: call to undeclared function 'OpenSSL_add_all_ + digests'; ISO C99 and later do not support implicit function declarations [ + -Wimplicit-function-declaration] + ``` + Ref: https://ci.appveyor.com/project/curlorg/curl-for-win/builds/48587418?f + ullLog=true#L7667 -Daniel Stenberg (3 Oct 2023) + Regression from b6e6d4ff8f253c8b8055bab9d4d6a10f9be109f3 #12030 + Bug: https://github.com/curl/curl/issues/12380#issuecomment-1822944669 + Reviewed-by: Alex Bozarth -- GHA: add workflow to compare configure vs cmake outputs + - vquic/curl_ngtcp2: fix using `SSL_get_peer_certificate` with + `no-deprecated` quictls 3 builds. + Do it by moving an existing solution for this from `vtls/openssl.c` + to `vtls/openssl.h` and adjusting caller code. + ``` + vquic/curl_ngtcp2.c:1950:19: error: implicit declaration of function 'SSL_g + et_peer_certificate'; did you mean 'SSL_get1_peer_certificate'? [-Wimplicit + -function-declaration] + ``` + Ref: https://github.com/curl/curl/actions/runs/6960723097/job/18940818625#s + tep:24:1178 - Uses scripts/cmp-config.pl two compare two curl_config.h files, - presumbly generated with configure and cmake. It displays the - differences and filters out a lot of known lines we ignore. + - curl_ntlm_core: fix `-Wunused-parameter`, `-Wunused-variable` and + `-Wunused-function` when trying to build curl with NTLM enabled but + without the necessary TLS backend (with DES) support. - The script also shows the matches that were *not* used. Possibly - subjects for removal. + Closes #12384 - Closes #11964 +- curl.h: delete Symbian OS references -- appveyor: enable test 571 + curl deprecated Symbian OS in 3d64031fa7a80ac4ae3fd09a5939196268b92f81 + via #5989. Delete references to it from public headers, because there + is no fresh release to use those headers with. - Follow-up from 8a940fd55c175f7 / #12013 + Reviewed-by: Dan Fandrich + Reviewed-by: Jay Satiro + Closes #12378 - Closes #12017 +- windows: use built-in `_WIN32` macro to detect Windows -Viktor Szakats (3 Oct 2023) + Windows compilers define `_WIN32` automatically. Windows SDK headers + or build env defines `WIN32`, or we have to take care of it. The + agreement seems to be that `_WIN32` is the preferred practice here. + Make the source code rely on that to detect we're building for Windows. -- build: alpha-sort source files for lib and src + Public `curl.h` was using `WIN32`, `__WIN32__` and `CURL_WIN32` for + Windows detection, next to the official `_WIN32`. After this patch it + only uses `_WIN32` for this. Also, make it stop defining `CURL_WIN32`. - Closes #12014 + There is a slight chance these break compatibility with Windows + compilers that fail to define `_WIN32`. I'm not aware of any obsolete + or modern compiler affected, but in case there is one, one possible + solution is to define this macro manually. -- cmake: delete old `HAVE_LDAP_URL_PARSE` logic + grepping for `WIN32` remains useful to discover Windows-specific code. - Left there by accident after adding proper detection for this. + Also: - Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006 + - extend `checksrc` to ensure we're not using `WIN32` anymore. - Ref: #11964 (effort to sync cmake detections with autotools) + - apply minor formatting here and there. - Closes #12015 + - delete unnecessary checks for `!MSDOS` when `_WIN32` is present. -Stefan Eissing (3 Oct 2023) + Co-authored-by: Jay Satiro + Reviewed-by: Daniel Stenberg -- tests: increase lib571 timeout from 3s to 30s + Closes #12376 - - 3s is too short for our CI, making this test fail occasionally - - test usually experiences no delay run locally, so 30s wont hurt +Stefan Eissing (22 Nov 2023) - Closes #12013 +- url: ConnectionExists revisited -Viktor Szakats (3 Oct 2023) + - have common pattern of `if not match, continue` + - revert pages long if()s to return early + - move dead connection check to later since it may + be relatively expensive + - check multiuse also when NOT building with NGHTTP2 + - for MULTIUSE bundles, verify that the inspected + connection indeed supports multiplexing when in use + (bundles may contain a mix of connection, afaict) -- cmake: fix unity with Windows Unicode + TrackMemory + Closes #12373 - Found the root cause of the startup crash in unity builds with Unicode - and TrackMemory enabled at the same time. +Daniel Stenberg (22 Nov 2023) - We must make sure that the `memdebug.h` header doesn't apply to - `lib/curl_multibyte.c` (as even noted in a comment there.) In unity - builds all headers apply to all sources, including `curl_multibyte.c`. - This probably resulted in an infinite loop on startup. +- CURLMOPT_MAX_CONCURRENT_STREAMS: make sure the set value is within range - Exclude this source from unity compilation with TrackMemory enabled, - in both libcurl and curl tool. Enable unity mode for a debug Unicode - CI job to keep it tested. Also delete the earlier workaround that - fully disabled unity for affected builds. + ... or use the default value. - Follow-up to d82b080f6374433ce7c98241329189ad2d3976f8 #12005 - Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095 + Also clarify the documentation language somewhat. - Closes #11928 + Closes #12382 -- cmake: disable unity mode with Windows Unicode + TrackMemory +- urldata: make maxconnects a 32 bit value - "TrackMemory" is `ENABLE_DEBUG=ON` (aka `ENABLE_CURLDEBUG=ON`, - aka `-DCURLDEBUG`). + "2^32 idle connections ought to be enough for anybody" - There is an issue with memory tracking and Unicode when built in "unity" - mode, which results in the curl tool crashing right on startup, even - without any command-line option. Interestingly this doesn't happen under - WINE (at least on the system I tested this on), but consistenly happens - on real Windows machines. Crash is 0xC0000374 heap corruption. Both - shared and static curl executables are affected. + Closes #12375 - This limitation probably won't hit too many people, but it remains - a TODO to find and fix the root cause and drop this workaround. +- FEATURES: update the URL phrasing - Example builds and runs: - https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/17cptxhtpubd - 7iwj#L313 (static) - https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/76e1ge758tby - qu9c#L317 (shared) + The URL is length limited since a while back so "no limit" simply is not + true anymore. Mention the URL RFC standard used instead. - Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095 + Closes #12383 - Ref: #11928 - Closes #12005 +- wolfssh: remove redundant static prototypes -- cmake: tidy-up `NOT_NEED_LBER_H` detection + vssh/wolfssh.c:346:18: error: redundant redeclaration of ‘wscp_recv’ [-We + rror=redundant-decls] - Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006 + Closes #12381 -- appveyor: rewrite batch in PowerShell + CI improvements +- setopt: remove superfluous use of ternary expressions - 1. Rewrite in PowerShell: + Closes #12374 - - rewrite MS-DOS batch build script in PowerShell. - - move some bash operations into native PowerShell. - - fixups for PowerShell insisting on failure when a command outputs - something to stderr. - - fix to actually run `curl -V` after every build. - (and exclude ARM64 builds.) - - also say why we skipped `curl -V` if we had to skip. - - fix CMake warnings about unused configuration variables, by adapting - these dynamically for build cases. - - dedupe OpenSSL path into a variable. - - disable `test1451` failing with a warning anyway due to missing python - impacket. (after trying and failing to install impacket) - PowerShell promotes these warnings to errors by PowerShell. We can also - suppress they wholesale if they start causing issues in the future, - like we already to with `autoreconf` and `./configure`. +- mime: store "form escape" as a single bit - PowerShell is better than MS-DOS batches, so the hope is this makes it - easier to extend and maintain the AppVeyor build logic. POSIX/bash isn't - supported inline by AppVeyor on Windows build machines, but we are okay - to keep it in an external script, so it's also an option. + Closes #12374 - 2. CI improvements: +- setopt: check CURLOPT_TFTP_BLKSIZE range on set - - enable tests for a "unity" build job. - - speed-up CI initialization by using shallow clones of the curl repo. - - speed-up CMake MSVC jobs with `TrackFileAccess=false`. - - enable parallelism in `VisualStudioSolution` builds. - - display CMake version before builds. - - always show the CPU in job names. - - tell which jobs are build-only in job names. - - move `TESTING:` value next to `DISABLED_TESTS:` in two jobs. - - add `config.log` (autotools) to dumped logs (need to enable manually). + ... instead of later when the transfer is about to happen. - 3. Style: + Closes #12374 - - use single-quotes in YAML like we do in other CI YAML files. - It also allows to drop quoting characters and lighter to write/read. - (keep double quotes for PowerShell strings needing expansion.) +Viktor Szakats (21 Nov 2023) - Closes #11999 +- build: add more picky warnings and fix them -- cmake: fix `HAVE_LDAP_SSL`, `HAVE_LDAP_URL_PARSE` on non-Windows + Enable more picky compiler warnings. I've found these options in the + nghttp3 project when implementing the CMake quick picky warning + functionality for it [1]. - - set `HAVE_LDAP_URL_PARSE` if `ldap_url_parse` function exists. - Before this patch we set it based it on the presence of `stricmp`, - which correctly enabled it on e.g. Windows, but was inaccurate for - other platforms. + `-Wunused-macros` was too noisy to keep around, but fixed a few issues + it revealed while testing. - - always set `HAVE_LDAP_SSL` if an LDAP backend is detected and - LDAPS is not explicitly disabled. This mimics autotools behaviour. - Previously we set it only for Windows LDAP. After this fix, LDAPS is - correctly enabled in default macOS builds. + - autotools: reflect the more precisely-versioned clang warnings. + Follow-up to 033f8e2a08eb1d3102f08c4d8c8e85470f8b460e #12324 + - autotools: sync between clang and gcc the way we set `no-multichar`. + - autotools: avoid setting `-Wstrict-aliasing=3` twice. + - autotools: disable `-Wmissing-noreturn` for MSYS gcc targets [2]. + It triggers in libtool-generated stub code. - - enable LDAP[S] for a CMake macOS CI job. Target OS X 10.9 (Mavericks) - to avoid deprecation warnings for LDAP API. + - lib/timeval: delete a redundant `!MSDOS` guard from a `WIN32` branch. - - always detect `HAVE_LDAP_SSL_H`, even with LDAPS explicitly disabled. - This doesn't make much sense, but let's do it to sync behaviour with - autotools. + - lib/curl_setup.h: delete duplicate declaration for `fileno`. + Added in initial commit ae1912cb0d494b48d514d937826c9fe83ec96c4d + (1999-12-29). This suggests this may not be needed anymore, but if + it does, we may restore this for those specific (non-Windows) systems. + - lib: delete unused macro `FTP_BUFFER_ALLOCSIZE` since + c1d6fe2aaa5a26e49a69a4f2495b3cc7a24d9394. + - lib: delete unused macro `isxdigit_ascii` since + f65f750742068f579f4ee6d8539ed9d5f0afcb85. + - lib/mqtt: delete unused macro `MQTT_HEADER_LEN`. + - lib/multi: delete unused macro `SH_READ`/`SH_WRITE`. + - lib/hostip: add `noreturn` function attribute via new `CURL_NORETURN` + macro. + - lib/mprintf: delete duplicate declaration for `Curl_dyn_vprintf`. + - lib/rand: fix `-Wunreachable-code` and related fallouts [3]. + - lib/setopt: fix `-Wunreachable-code-break`. + - lib/system_win32 and lib/timeval: fix double declarations for + `Curl_freq` and `Curl_isVistaOrGreater` in CMake UNITY mode [4]. + - lib/warnless: fix double declarations in CMake UNITY mode [5]. + This was due to force-disabling the header guard of `warnless.h` to + to reapply it to source code coming after `warnless.c` in UNITY + builds. This reapplied declarations too, causing the warnings. + Solved by adding a header guard for the lines that actually need + to be reapplied. + - lib/vauth/digest: fix `-Wunreachable-code-break` [6]. + - lib/vssh/libssh2: fix `-Wunreachable-code-break` and delete redundant + block. + - lib/vtls/sectransp: fix `-Wunreachable-code-break` [7]. + - lib/vtls/sectransp: suppress `-Wunreachable-code`. + Detected in `else` branches of dynamic feature checks, with results + known at compile-time, e.g. + ```c + if(SecCertificateCopySubjectSummary) /* -> true */ + ``` + Likely fixable as a separate micro-project, but given SecureTransport + is deprecated anyway, let's just silence these locally. + - src/tool_help: delete duplicate declaration for `helptext`. + - src/tool_xattr: fix `-Wunreachable-code`. + - tests: delete duplicate declaration for `unitfail` [8]. + - tests: delete duplicate declaration for `strncasecompare`. + - tests/libtest: delete duplicate declaration for `gethostname`. + Originally added in 687df5c8c39c370a59999b9afc0917d808d978b7 + (2010-08-02). + Got complicated later: c49e9683b85ba9d12cbb6eebc4ab2c8dba68fbdc + If there are still systems around with warnings, we may restore the + prototype, but limited for those systems. + - tests/lib2305: delete duplicate declaration for + `libtest_debug_config`. + - tests/h2-download: fix `-Wunreachable-code-break`. + + [1] https://github.com/ngtcp2/nghttp3/blob/a70edb08e954d690e8fb2c1df999b5a056 + f8bf9f/cmake/PickyWarningsC.cmake + [2] https://ci.appveyor.com/project/curlorg/curl/builds/48553586/job/3qkgjaui + qla5fj45?fullLog=true#L1675 + [3] https://github.com/curl/curl/actions/runs/6880886309/job/18716044703?pr=1 + 2331#step:7:72 + https://github.com/curl/curl/actions/runs/6883016087/job/18722707368?pr=1 + 2331#step:7:109 + [4] https://ci.appveyor.com/project/curlorg/curl/builds/48555101/job/9g15qkrr + iklpf1ut#L204 + [5] https://ci.appveyor.com/project/curlorg/curl/builds/48555101/job/9g15qkrr + iklpf1ut#L218 + [6] https://github.com/curl/curl/actions/runs/6880886309/job/18716042927?pr=1 + 2331#step:7:290 + [7] https://github.com/curl/curl/actions/runs/6891484996/job/18746659406?pr=1 + 2331#step:9:1193 + [8] https://github.com/curl/curl/actions/runs/6882803986/job/18722082562?pr=1 + 2331#step:33:1870 + + Closes #12331 + +Daniel Stenberg (21 Nov 2023) + +- transfer: avoid unreachable expression + + If curl_off_t and size_t have the same size (which is common on modern + 64 bit systems), a condition cannot occur which Coverity pointed + out. Avoid the warning by having the code conditionally only used if + curl_off_t actually is larger. + + Follow-up to 1cd2f0072fa482e25baa2 + + Closes #12370 + +Stefan Eissing (21 Nov 2023) + +- transfer: readwrite improvements + + - changed header/chunk/handler->readwrite prototypes to accept `buf`, + `blen` and a `pconsumed` pointer. They now get the buffer to work on + and report back how many bytes they consumed + - eliminated `k->str` in SingleRequest + - improved excess data handling to properly calculate with any body data + left in the headerb buffer + - eliminated `k->badheader` enum to only be a bool + + Closes #12283 + +Daniel Stenberg (21 Nov 2023) - - fix benign typo in variable name. +- RELEASE-NOTES: synced - Ref: #11964 (effort to sync cmake detections with autotools) +Jiří Hruška (21 Nov 2023) - Closes #12006 +- transfer: avoid calling the read callback again after EOF -- autotools: restore `HAVE_IOCTL_*` detections + Regression since 7f43f3dc5994d01b12 (7.84.0) - This restores `CURL_CHECK_FUNC_IOCTL` detection. I deleted it in - 4d73854462f30948acab12984b611e9e33ee41e6 and - c3456652a0c72d1845d08df9769667db7e159949 (2022-08), because the - `HAVE_IOCTL` result it generated was unused in the source. But, - I did miss the fact that this had two dependent checks: - `CURL_CHECK_FUNC_IOCTL_FIONBIO`, - `CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR` that we do actually need: - `HAVE_IOCTL_FIONBIO`, `HAVE_IOCTL_SIOCGIFADDR`. + Bug: https://curl.se/mail/lib-2023-11/0017.html - Regression from 4d73854462f30948acab12984b611e9e33ee41e6 + Closes #12363 - Ref: #11964 (effort to sync cmake detections with autotools) +Daniel Stenberg (21 Nov 2023) - Closes #12008 +- doh: provide better return code for responses w/o addresses -Daniel Stenberg (2 Oct 2023) + Previously it was wrongly returning CURLE_OUT_OF_MEMORY when the + response did not contain any addresses. Now it more accurately returns + CURLE_COULDNT_RESOLVE_HOST. -- RELEASE-PROCEDURE.md: updated coming release dates + Reported-by: lRoccoon on github -- RELEASE-NOTES: synced + Fixes #12365 + Closes #12366 -Viktor Szakats (1 Oct 2023) +Stefan Eissing (21 Nov 2023) -- cmake: pre-cache `HAVE_POLL_FINE` on Windows +- HTTP/2, HTTP/3: handle detach of onoing transfers - Windows doesn't support `poll()`, so we can safely skip checking for - fine poll. + - refs #12356 where a UAF is reported when closing a connection + with a stream whose easy handle was cleaned up already + - handle DETACH events same as DONE events in h2/h3 filters - Closes #12003 + Fixes #12356 + Reported-by: Paweł Wegner + Closes #12364 -- gha: bump actions to latest versions +Viktor Szakats (20 Nov 2023) - - actions@checkout@v4 (from v3 and v2) +- autotools: stop setting `-std=gnu89` with `--enable-warnings` - - fsfe/reuse-action@v2 (from v1) + Do not alter the C standard when building with `--enable-warnings` when + building with gcc. - Closes #12000 + On one hand this alters warning results compared to a default build. + On the other, it may produce different binaries, which is unexpected. -Stefan Eissing (30 Sep 2023) + Also fix new warnings that appeared after removing `-std=gnu89`: -- h2: testcase and fix for pausing h2 streams + - include: fix public curl headers to use the correct printf mask for + `CURL_FORMAT_CURL_OFF_T` and `CURL_FORMAT_CURL_OFF_TU` with mingw-w64 + and Visual Studio 2013 and newer. This fixes the printf mask warnings + in examples and tests. E.g. [1] - - refs #11982 where it was noted that paused transfers may - close successfully without delivering the complete data - - made sample poc into tests/http/client/h2-pausing.c and - added test_02_27 to reproduce + - conncache: fix printf format string [2]. - Closes #11989 - Fixes #11982 - Reported-by: Harry Sintonen + - http2: fix potential null pointer dereference [3]. + (seen on Slackware with gcc 11.) -Viktor Szakats (30 Sep 2023) + - libssh: fix printf format string in SFTP code [4]. + Also make MSVC builds compatible with old CRT versions. -- cmake: validate `CURL_DEFAULT_SSL_BACKEND` config value + - libssh2: fix printf format string in SFTP code for MSVC. + Applying the same fix as for libssh above. - Before this patch CMake builds accepted any value and it was used at - runtime as-is. This patch make sure that the selected default backend - is also enabled in the build. It also enforces a full lowercase value. + - unit1395: fix `argument is null` and related issues [5]: + - stop calling `strcmp()` with NULL to avoid undefined behaviour. + - fix checking results if some of them were NULL. + - do not pass NULL to printf `%s`. - This improves reproducibility and brings CMake in sync with autotools - which already worked like described above. + - ci: keep a build job with `-std=gnu89` to continue testing for + C89-compliance. We can apply this to other gcc jobs as needed. + Ref: b23ce2cee7329bbf425f18b49973b7a5f23dfcb4 (2022-09-23) #9542 - Follow-up to 26c7feb8b9d51a57fab3325571b4bbfa03b11af0 #11774 + [1] https://dev.azure.com/daniel0244/curl/_build/results?buildId=18581&view=l + ogs&jobId=ccf9cc6d-2ef1-5cf2-2c09-30f0c14f923b + [2] https://github.com/curl/curl/actions/runs/6896854263/job/18763831142?pr=1 + 2346#step:6:67 + [3] https://github.com/curl/curl/actions/runs/6896854253/job/18763839238?pr=1 + 2346#step:30:214 + [4] https://github.com/curl/curl/actions/runs/6896854253/job/18763838007?pr=1 + 2346#step:29:895 + [5] https://github.com/curl/curl/actions/runs/6896854253/job/18763836775?pr=1 + 2346#step:33:1689 - Closes #11998 + Closes #12346 -- autotools: adjust `CURL_CA_PATH` value to CMake +- autotools: fix/improve gcc and Apple clang version detection - autotools was using the same value as CMake, but with an ending - slash. Delete the ending slash to match configurations. + - Before this patch we expected `n.n` `-dumpversion` output, but Ubuntu + may return `n-win32` (also with `-dumpfullversion`). Causing these + errors and failing to enable picky warnings: + ``` + ../configure: line 23845: test: : integer expression expected + ``` + Ref: https://github.com/libssh2/libssh2/actions/runs/6263453828/job/1700789 + 3718#step:5:143 - Ref: #11964 (effort to sync cmake detections with autotools) + Fix that by stripping any dash-suffix and handling a dotless (major-only) + version number by assuming `.0` in that case. - Closes #11997 + `9.3-posix`, `9.3-win32`, `6`, `9.3.0`, `11`, `11.2`, `11.2.0` + Ref: https://github.com/mamedev/mame/pull/9767 -- cmake: detect `sys/wait.h` and `netinet/udp.h` + - fix Apple clang version detection for releases between + 'Apple LLVM version 7.3.0' and 'Apple LLVM version 10.0.1' where the + version was under-detected as 3.7 llvm/clang equivalent. - Ref: #11964 (effort to sync cmake detections with autotools) + - fix Apple clang version detection for 'Apple clang version 11.0.0' + and newer where the Apple clang version was detected, instead of its + llvm/clang equivalent. - Closes #11996 + - display detected clang/gcc/icc compiler version. -Daniel Stenberg (30 Sep 2023) + Via libssh2: + - https://github.com/libssh2/libssh2/commit/00a3b88c51cdb407fbbb347a2e38c5c7d + 89875ad + https://github.com/libssh2/libssh2/pull/1187 + - https://github.com/libssh2/libssh2/commit/89ccc83c7da73e7ca3a112e3500081319 + 42b592e + https://github.com/libssh2/libssh2/pull/1232 -- lib: provide and use Curl_hexencode + Closes #12362 - Generates a lower case ASCII hex output from a binary input. +- autotools: delete LCC compiler support bits - Closes #11990 + Follow-up to fd7ef00f4305a2919e6950def1cf83d0110a4acd #12222 -- configure: check for the capath by default + Closes #12357 - ... if the chosen TLS backend supports it: OpenSSL, GnuTLS, mbedTLS or wolfSS - L +- cmake: add test for `DISABLE` options, add `CURL_DISABLE_HEADERS_API` - cmake: synced - - Assisted-by: Viktor Szakats - Closes #11987 + - tests: verify CMake `DISABLE` options. -- wolfssl: ignore errors in CA path + Make an exception for 2 CMake-only ones, and one more that's + using a different naming scheme, also in autotools and source. - The default wolfSSL_CTX_load_verify_locations() function is quite picky - with the certificates it loads and will for example return error if just - one of the certs has expired. + - cmake: add support for `CURL_DISABLE_HEADERS_API`. - With the *_ex() function and its WOLFSSL_LOAD_FLAG_IGNORE_ERR flag, it - behaves more similar to what OpenSSL does by default. + Suggested-by: Daniel Stenberg + Ref: https://github.com/curl/curl/pull/12345#pullrequestreview-1736238641 - Even the set of default certs on my Debian unstable has several expired - ones. + Closes #12353 - Assisted-by: Juliusz Sosinowicz - Assisted-by: Michael Osipov +Jacob Hoffman-Andrews (20 Nov 2023) - Closes #11987 +- hyper: temporarily remove HTTP/2 support -- create-dirs.d: clarify it also uses --output-dirs + The current design of the Hyper integration requires rebuilding the + Hyper clientconn for each request. However, building the clientconn + requires resending the HTTP/2 connection preface, which is incorrect + from a protocol perspective. That in turn causes servers to send GOAWAY + frames, effectively degrading performance to "no connection reuse" in + the best case. It may also be triggering some bugs where requests get + dropped entirely and reconnects take too long. - Reported-by: Robert Simpson - Fixes #11991 - Closes #11995 + This doesn't rule out HTTP/2 support with Hyper, but it may take a + redesign of the Hyper integration in order to make things work. -Viktor Szakats (30 Sep 2023) + Closes #12191 -- appveyor: fix yamlint issues, indent +Jay Satiro (20 Nov 2023) - Also: - - use double quotes in all batch if statements. +- schannel: fix unused variable warning - Closes #11994 + Bug: https://github.com/curl/curl/pull/12349#issuecomment-1818000846 + Reported-by: Viktor Szakats -- cmake: detect `HAVE_CLOCK_GETTIME_MONOTONIC_RAW` + Closes https://github.com/curl/curl/pull/12361 - Based on existing autotools logic. +Daniel Stenberg (19 Nov 2023) - Ref: #11964 (effort to sync cmake detections with autotools) +- url: find scheme with a "perfect hash" - Closes #11981 + Instead of a loop to scan over the potentially 30+ scheme names, this + uses a "perfect hash" table. This works fine because the set of schemes + is known and cannot change in a build. The hash algorithm and table size + is made to only make a single scheme index per table entry. -- cmake: detect `HAVE_GETADDRINFO_THREADSAFE` + The perfect hash is generated by a separate tool (scripts/schemetable.c) - Based on existing autotools logic. + Closes #12347 - autotools checks for old versions of the allowlisted target OSes and - disables this feature when seeing them. In CMake we assume we're running - on newer systems and enable regardless of OS version. +- scripts: add schemetable.c - autotools always runs all 3 probes for non-fast-tracked systems and - enables this feature if any one of them was successful. To save - configuration time, CMake stops at the first successful check. + This tool generates a scheme-matching table. - OpenBSD is not fast-tracked and then gets blocklisted as a generic BSD - system. I haven't double-checked if this is correct, but looks odd. + It iterates over a number of different initial and shift values in order + to find the hash algorithm that needs the smallest possible table. - Ref: #11964 (effort to sync cmake detections with autotools) + The generated hash function, table and table size then needs to be used + by the url.c:Curl_getn_scheme_handler() function. - Closes #11979 +Stefan Eissing (19 Nov 2023) -- cmake: fix `HAVE_WRITABLE_ARGV` detection +- vtls/vquic, keep peer name information together - Move detection before the creation of detection results in - `curl_config.h`. + - add `struct ssl_peer` to keep hostname, dispname and sni + for a filter + - allocate `sni` for use in VTLS backend + - eliminate `Curl_ssl_snihost()` and its use of the download buffer + - use ssl_peer in SSL and QUIC filters - Ref: #11964 (effort to sync cmake detections with autotools) + Closes #12349 - Closes #11978 +Viktor Szakats (18 Nov 2023) -- appveyor: minor improvements +- build: always revert `#pragma GCC diagnostic` after use - - run `curl -V` after builds to see if they run and with what features. - Except for one job where a CRT DLL is missing. And ARM64 which should - fail, but is silently not launched instead. + Before this patch some source files were overriding gcc warning options, + but without restoring them at the end of the file. In CMake UNITY builds + these options spilled over to the remainder of the source code, + effecitvely disabling them for a larger portion of the codebase than + intended. - - copy libcurl DLL next to curl tool and tests binaries in shared mode. - This makes it possible to run the tests. (We don't run tests after - these builds yet.) + `#pragma clang diagnostic` didn't have such issue in the codebase. - - list the DLLs and EXEs present after the builds. + Reviewed-by: Marcel Raad + Closes #12352 - - add `DEBUG` variable for CMake builds to allow disabling it, for - testing non-debug builds. (currently enabled for all) +- tidy-up: casing typos, delete unused Windows version aliases - - add commented lines that dump CMake configuration logs for debugging - build/auto-detection issues. + - cmake: fix casing of `UnixSockets` to match the rest of the codebase. - - add gcc version to jobs where missing. + - curl-compilers.m4: fix casing in a comment. - - switch a job to the native MSYS2 mingw-w64 toolchain. This adds gcc 9 - to the build mix. + - setup-win32: delete unused Windows version constant aliases. - - make `SHARED=OFF` and `OPENSSL=OFF` defaults global. + Reviewed-by: Marcel Raad + Closes #12351 - - delete a duplicate backslash. +- keylog: disable if unused - Closes #11976 + Fully disable keylog code if there is no TLS or QUIC subsystem using it. -- configure: replace adhoc domain with `localhost` in tests + Closes #12350 - Reviewed-by: Daniel Stenberg - Closes #11988 +- cmake: add `CURL_DISABLE_BINDLOCAL` option -- tidy-up: use more example domains + To match similar autotools option. - Also make use of the example TLD: - https://en.wikipedia.org/wiki/.example + Default is `ON`. Reviewed-by: Daniel Stenberg - Closes #11992 + Closes #12345 -Dan Fandrich (29 Sep 2023) +- url: fix `-Wzero-length-array` with no protocols -- runtests: display the test status if tests appear hung + Fixes: + ``` + ./lib/url.c:178:56: warning: use of an empty initializer is a C2x extension [ + -Wc2x-extensions] + 178 | static const struct Curl_handler * const protocols[] = { + | ^ + ./lib/url.c:178:56: warning: zero size arrays are an extension [-Wzero-length + -array] + ``` - It sometimes happens that a test hangs during a test run and never - returns. The test harness will wait indefinitely for the results and on - CI servers the CI job will eventually be killed after an hour or two. - At the end of a test run, if results haven't come in within a couple of - minutes, display the status of all test runners and what tests they're - running to help in debugging the problem. + Closes #12344 - This feature is really only kick in with parallel testing enabled, which - is fine because without parallel testing it's usually easy to tell what - test has hung. +- url: fix builds with `CURL_DISABLE_HTTP` - Closes #11980 + Fixes: + ``` + ./lib/url.c:456:35: error: no member named 'formp' in 'struct UrlState' + 456 | Curl_mime_cleanpart(data->state.formp); + | ~~~~~~~~~~~ ^ + ``` -- github/labeler: remove workaround for labeler + Regression from 74b87a8af13a155c659227f5acfa78243a8b2aa6 #11682 - This was added due to what seemed to be a bug regarding the sync-labels: - config option, but it looks like it wasn't necessary. + Closes #12343 - Follow-up to b2b0534e7 +- http: fix `-Wunused-parameter` with no auth and no proxy -Viktor Szakats (29 Sep 2023) + ``` + lib/http.c:734:26: warning: unused parameter 'proxy' [-Wunused-parameter] + bool proxy) + ^ + ``` -- docs: upgrade an URL to HTTPS in `BINDINGS.md` [ci skip] + Reviewed-by: Marcel Raad + Closes #12338 -Daniel Stenberg (29 Sep 2023) +Daniel Stenberg (16 Nov 2023) -- docs: replace made up domains with example.com +- TODO: Some TLS options are not offered for HTTPS proxies - in FAQ and MANUAL.md + Closes #12286 + Closes #12342 - - example.com was made for this purpose. +- RELEASE-NOTES: synced - - reduces the risk that one of those domains suddenly start hosting - something nasty and we provide links to them +- duphandle: make dupset() not return with pointers to old alloced data - Closes #11986 + As the blob pointers are to be duplicated, the function must not return + mid-function with lingering pointers to the old handle's allocated data, + as that would lead to double-free in OOM situations. -Michael Osipov (29 Sep 2023) + Make sure to clear all destination pointers first to avoid this risk. -- acinclude.m4: Document proper system truststore on FreeBSD + Closes #12337 - The default system truststore on FreeBSD has been /etc/ssl/certs for many - years now. It is managed canonically through certctl(8) and contains hashed - symlinks for OpenSSL and other TLS providers. - The previous ones require security/ca_root_nss which might not be installed o - r - will not contain any custom CA certificates. +Viktor Szakats (16 Nov 2023) - Closes #11985 +- http: fix `-Wunused-variable` compiler warning -Daniel Stenberg (29 Sep 2023) + Fix compiler warnings in builds with disabled auths, NTLM and SPNEGO. -- FAQ: How do I upgrade curl.exe in Windows? + E.g. with `CURL_DISABLE_BASIC_AUTH` + `CURL_DISABLE_BEARER_AUTH` + + `CURL_DISABLE_DIGEST_AUTH` + `CURL_DISABLE_NEGOTIATE_AUTH` + + `CURL_DISABLE_NTLM` on non-Windows. - This is a growing question, better answer it here to get somewhere to - point users to. + ``` + ./curl/lib/http.c:737:12: warning: unused variable 'result' [-Wunused-variabl + e] + CURLcode result = CURLE_OK; + ^ + ./curl/lib/http.c:995:18: warning: variable 'availp' set but not used [-Wunus + ed-but-set-variable] + unsigned long *availp; + ^ + ./curl/lib/http.c:996:16: warning: variable 'authp' set but not used [-Wunuse + d-but-set-variable] + struct auth *authp; + ^ + ``` - Closes #11984 + Regression from e92edfbef64448ef461117769881f3ed776dec4e #11490 -Viktor Szakats (28 Sep 2023) + Fixes #12228 + Closes #12335 -- cmake: pre-cache `HAVE_BASENAME` for mingw-w64 and MSVC +Jay Satiro (16 Nov 2023) - `basename` is present in mingw-w64, missing from MSVC. Pre-cache - accordingly to make configure faster. +- tool: support bold headers in Windows - Notice that `basename` has a bug so we later disable it even with - mingw-w64: - https://github.com/curl/curl/blob/781242ffa44a9f9b95b6da5ac5a1bf6372ec6257/li - b/curl_setup.h#L820-L825 + - If virtual terminal processing is enabled in Windows then use ANSI + escape codes Esc[1m and Esc[22m to turn bold on and off. - Closes #11974 + Suggested-by: Gisle Vanem -Daniel Stenberg (28 Sep 2023) + Ref: https://github.com/curl/curl/discussions/11770 -- cmake: add missing checks + Closes https://github.com/curl/curl/pull/12321 - - check for arc4random. To make rand.c use it accordingly. - - check for fcntl - - fix fseek detection - - add SIZEOF_CURL_SOCKET_T - - fix USE_UNIX_SOCKETS - - define HAVE_SNPRINTF to 1 - - check for fnmatch - - check for sched_yield - - remove HAVE_GETPPID duplicate from curl_config.h - - add HAVE_SENDMSG +Viktor Szakats (15 Nov 2023) - Ref: #11964 +- build: fix libssh2 + `CURL_DISABLE_DIGEST_AUTH` + `CURL_DISABLE_AWS` - Co-authored-by: Viktor Szakats - Closes #11973 + Builds with libssh2 + `-DCURL_DISABLE_DIGEST_AUTH=ON` + + `-DCURL_DISABLE_AWS=ON` in combination with either Schannel on Windows, + or `-DCURL_DISABLE_NTLM=ON` on other operating systems failed while + compiling due to a missing HMAC declaration. -- configure: remove unused checks + The reason is that HMAC is required by `lib/sha256.c` which publishes + `Curl_sha256it()` which is required by `lib/vssh/libssh2.c` when + building for libssh2 v1.8.2 (2019-05-25) or older. - - for sys/uio.h - - for fork - - for connect + Make sure to compile the HMAC bits for a successful build. - Ref: #11964 + Both HMAC and `Curl_sha256it()` rely on the same internals, so splitting + them into separate sources isn't practical. - Closes #11973 + Fixes: + ``` + [...] + In file included from ./curl/_x64-win-ucrt-cmake-llvm-bld/lib/CMakeFiles/libc + url_object.dir/Unity/unity_0_c.c:310: + ./curl/lib/sha256.c:527:42: error: array has incomplete element type 'const s + truct HMAC_params' + 527 | const struct HMAC_params Curl_HMAC_SHA256[] = { + | ^ + ./curl/lib/curl_sha256.h:34:21: note: forward declaration of 'struct HMAC_par + ams' + [...] + ``` -- lib: remove TIME_WITH_SYS_TIME + Regression from e92edfbef64448ef461117769881f3ed776dec4e #11490 - It is not used in any code anywhere. + Fixes #12273 + Closes #12332 - Ref: #11964 - Closes #11975 +Daniel Stenberg (15 Nov 2023) -- docs: update curl man page references +- duphandle: also free 'outcurl->cookies' in error path - Detected by the manpage-syntax update + Fixes memory-leak when OOM mid-function - Closes #11963 + Use plain free instead of safefree, since the entire struct is + freed below. -- manpage-syntax: verify curl man page references + Remove some free calls that is already freed in Curl_freeset() - 1. References to curl symbols are now checked that they indeed exist as - man pages. This for \f references as well as the names referenced in the - SEE ALSO section. + Closes #12329 - Allowlist curl.1 since it is not always built in builds +Viktor Szakats (15 Nov 2023) - 2. References to curl symbols that lack section now causes warning, since tha - t - will prevent them from getting linked properly +- config-win32: set `HAVE_SNPRINTF` for mingw-w64 - 3. Check for "bare" references to curl functions and warn, they should be - references + It's available in all mingw-w64 releases. We already pre-fill this + detection in CMake. - Closes #11963 + Closes #12325 -- cmake: add check for suseconds_t +- sasl: fix `-Wunused-function` compiler warning - And fix the HAVE_LONGLONG define + In builds with disabled auths. - Ref: #11964 - Closes #11977 + ``` + lib/curl_sasl.c:266:17: warning: unused function 'get_server_message' [-Wunus + ed-function] + static CURLcode get_server_message(struct SASL *sasl, struct Curl_easy *data, + ^ + 1 warning generated. + ``` + Ref: https://github.com/curl/trurl/actions/runs/6871732122/job/18689066151#st + ep:3:3822 -Viktor Szakats (28 Sep 2023) + Reviewed-by: Daniel Stenberg + Closes #12326 -- tidy-up: whitespace fixes +- build: picky warning updates - Closes #11972 + - cmake: sync some picky gcc warnings with autotools. + - cmake, autotools: add `-Wold-style-definition` for clang too. + - cmake: more precise version info for old clang options. + - cmake: use `IN LISTS` syntax in `foreach()`. -- cmake: detect TLS-SRP in OpenSSL/wolfSSL/GnuTLS + Reviewed-by: Daniel Stenberg + Reviewed-by: Marcel Raad + Closes #12324 - With new option `CURL_DISABLE_SRP=ON` to force-disable it. - To match existing option and detection logic in autotools. +Daniel Stenberg (15 Nov 2023) - Also: - - fix detecting GnuTLS. - We assume `nettle` as a GnuTLS dependency. - - add CMake GnuTLS CI job. - - bump AppVeyor CMake OpenSSL MSVC job to OpenSSL 1.1.1 (from 1.0.2) - TLS-SRP fails to detect with 1.0.2 due to an OpenSSL header bug. - - fix compiler warning when building with GnuTLS and disabled TLS-SRP. - - fix comment typos, whitespace. +- urldata: move cookielist from UserDefined to UrlState - Ref: #11964 + 1. Because the value is not strictly set with a setopt option. - Closes #11967 + 2. Because otherwise when duping a handle when all the set.* fields are + first copied and an error happens (think out of memory mid-function), + the function would easily free the list *before* it was deep-copied, + which could lead to a double-free. -- tool: use our own stderr variable + Closes #12323 - Earlier this year we changed our own stderr variable to use the standard - name `stderr` (to avoid bugs where someone is using `stderr` instead of - the curl-tool specific variable). This solution needed to override the - standard `stderr` symbol via the preprocessor. This in turn didn't play - well with unity builds and caused curl tool to crash or stay silent due - to an uninitialized stderr. This was a hard to find issue, fixed by - manually breaking out one file from the unity sources. +Viktor Szakats (14 Nov 2023) - To avoid two these two tricks, this patch implements a different - solution: Restore using our own local variable for our stderr output and - leave `stderr` as-is. To avoid using `stderr` by mistake, add a - `checksrc` rule (based on logic we already used in lib for `strerror`) - that detects any `stderr` use in `src` and points to using our own - variable instead: `tool_stderr`. +- autotools: avoid passing `LDFLAGS` twice to libcurl - Follow-up to 06133d3e9b8aeb9e9ca0b3370c246bdfbfc8619e - Follow-up to 2f17a9b654121dd1ecf4fc043c6d08a9da3522db + autotools passes `LDFLAGS` automatically linker commands. curl's + `lib/Makefile.am` customizes libcurl linker flags. In that + customization, it added `LDFLAGS` to the custom flags. This resulted in + passing `LDFLAGS` _twice_ to the `libtool` command. - Closes #11958 + Most of the time this is benign, but some `LDFLAGS` options can break + the build when passed twice. One such example is passing `.o` files, + e.g. `crt*.o` files necessary when customizing the C runtime, e.g. for + MUSL builds. -Loïc Yhuel (28 Sep 2023) + Passing them twice resulted in duplicate symbol errors: + ``` + libtool: link: clang-15 --target=aarch64-unknown-linux-musl [...] /usr/lib/a + arch64-linux-musl/crt1.o [...] /usr/lib/aarch64-linux-musl/crt1.o [...] + ld.lld-15: error: duplicate symbol: _start + >>> defined at crt1.c + >>> /usr/lib/aarch64-linux-musl/crt1.o:(.text+0x0) + >>> defined at crt1.c + >>> /usr/lib/aarch64-linux-musl/crt1.o:(.text+0x0) + [...] + clang: error: linker command failed with exit code 1 (use -v to see invocatio + n) + ``` -- connect: only start the happy eyeballs timer when needed + This behaviour came with commit 1a593191c2769a47b8c3e4d9715ec9f6dddf5e36 + (2013-07-23) as a fix for bug https://curl.haxx.se/bug/view.cgi?id=1217. + The patch was a works-for-me hack that ended up merged in curl: + https://sourceforge.net/p/curl/bugs/1217/#06ef + With the root cause remaining unclear. - The timeout is only used when there is a second address family, for the - delayed eyeballer. + Perhaps the SUNPro 12 linker was sensitive to `-L` `-l` order, requiring + `-L` first? This would be unusual and suggests a bug in either the + linker or in `libtool`. - Closes #11939 + The curl build does pass the list of detected libs via its own + `LIBCURL_LIBS` variable, which ends up before `LDFLAGS` on the `libtool` + command line, but it's the job of `libtool` to ensure that even + a peculiar linker gets the options in the expected order. Also because + autotools passes `LDFLAGS` last, making it hardly possible to pass + anything after it. -Daniel Stenberg (28 Sep 2023) + Perhaps in the 10 years since this issue, this already got a fix + upstream. -- tool_operate: free 'gateway' correctly + This patch deletes `LDFLAGS` from our customized libcurl options, + leaving a single copy of them as passed by autotools automatically. - Pointed out by Coverity. The fix in 93885cf3a8d4e was incomplete. + Reverts 1a593191c2769a47b8c3e4d9715ec9f6dddf5e36 + Closes #12310 - Also removed repeated wording in IPFS related error messages. +- autotools: accept linker flags via `CURL_LDFLAGS_{LIB,BIN}` - Closes #11969 + To allow passing `LDFLAGS` specific to libcurl (`CURL_LDFLAGS_LIB`) and + curl tool (`CURL_LDFLAGS_BIN`). -Stefan Eissing (28 Sep 2023) + This makes it possible to build libcurl and curl with a single + invocation with lib- and tool-specific custom linker flags. -- lib: move handling of `data->req.writer_stack` into Curl_client_write() + Such flag can be enabling `.map` files, a `.def` file for libcurl DLL, + controlling static/shared, incl. requesting a static curl tool (with + `-static-libtool-libs`) while building both shared and static libcurl. - - move definitions from content_encoding.h to sendf.h - - move create/cleanup/add code into sendf.c - - installed content_encoding writers will always be called - on Curl_client_write(CLIENTWRITE_BODY) - - Curl_client_cleanup() frees writers and tempbuffers from - paused transfers, irregardless of protocol + curl-for-win uses the above and some more. - Closes #11908 + These options are already supported in `Makefile.mk`. CMake has built-in + variables for this. -Loïc Yhuel (28 Sep 2023) + Closes #12312 -- multi: round the timeout up to prevent early wakeups +Jay Satiro (14 Nov 2023) - Curl_timediff rounds down to the millisecond, so curl_multi_perform can - be called too early, then we get a timeout of 0 and call it again. +- tool_cb_hdr: add an additional parsing check - The code already handled the case of timeouts which expired less than - 1ms in the future. By rounding up, we make sure we will never ask the - platform to wake up too early. + - Don't dereference the past-the-end element when parsing the server's + Content-disposition header. - Closes #11938 + As 'p' is advanced it can point to the past-the-end element and prior + to this change 'p' could be dereferenced in that case. -Daniel Stenberg (28 Sep 2023) + Technically the past-the-end element is not out of bounds because dynbuf + (which manages the header line) automatically adds a null terminator to + every buffer and that is not included in the buffer length passed to + the header callback. -- RELEASE-NOTES: spell out that IPFS is via gateway + Closes https://github.com/curl/curl/pull/12320 -- RELEASE-NOTES: synced +Philip Heiduck (14 Nov 2023) -- tool_operate: avoid strlen() -1 on zero length content from file +- .cirrus.yml: freebsd 14 - Follow-up to 65b563a96a226649ba12cb1e + ensure curl works on latest freebsd version - Closes #11959 + Closes #12053 -- tool_operate: fix memory mixups +Daniel Stenberg (13 Nov 2023) - Switch to plain getenv() from curl_getenv() to avoid the allocation and - having to keep track of which free() or curl_free() that need to be - used. +- easy: in duphandle, init the cookies for the new handle - Coverity found issues and a memory leak. + ... not the source handle. - Follow-up to 65b563a96a226649ba12cb1e + Closes #12318 - Closes #11959 +- duphandle: use strdup to clone *COPYPOSTFIELDS if size is not set -Viktor Szakats (27 Sep 2023) + Previously it would unconditionally use the size, which is set to -1 + when strlen is requested. -- curl-functions.m4: fixup recent bad edits + Updated test 544 to verify. - Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 + Closes #12317 - Closes #11966 +- RELEASE-NOTES: synced -Daniel Stenberg (27 Sep 2023) +- curl_easy_duphandle.3: clarify how HSTS and alt-svc are duped -- curl-functions.m4: fix include line + Closes #12315 - This made the getaddrinfo detection fail, but we did not spot it in the - CI because it graciously falled back to using legacy functions instead! +- urldata: move hstslist from 'set' to 'state' - Follow-up to 96c29900bcec (#11940) + To make it work properly with curl_easy_duphandle(). This, because + duphandle duplicates the entire 'UserDefined' struct by plain copy while + 'hstslist' is a linked curl_list of file names. This would lead to a + double-free when the second of the two involved easy handles were + closed. - Closes #11965 + Closes #12315 -- inet_ntop: add typecast to silence Coverity +- test1900: verify duphandle with HSTS using multiple files - CID 1024653: Integer handling issues (SIGN_EXTENSION) + Closes #12315 - Suspicious implicit sign extension: "src[i]" with type "unsigned char - const" (8 bits, unsigned) is promoted in "src[i] << (1 - i % 2 << 3)" to - type "int" (32 bits, signed), then sign-extended to type "unsigned long" - (64 bits, unsigned). If "src[i] << (1 - i % 2 << 3)" is greater than - 0x7FFFFFFF, the upper bits of the result will all be 1. +Goro FUJI (13 Nov 2023) - 111 words[i/2] |= (src[i] << ((1 - (i % 2)) << 3)); +- http: allow longer HTTP/2 request method names - The value will not be greater than 0x7FFFFFFF so this still cannot - happen. + - Increase the maximum request method name length from 11 to 23. - Also, switch to ints here instead of longs. The values stored are 16 bit - so at least no need to use 64 bit variables. Also, longs are 32 bit on - some platforms so this logic still needs to work with 32 bits. + For HTTP/1.1 and earlier there's not a specific limit in libcurl for + method length except that it is limited by the initial HTTP request + limit (DYN_HTTP_REQUEST). Prior to fc2f1e54 HTTP/2 was treated the same + and there was no specific limit. - Closes #11960 + According to Internet Assigned Numbers Authority (IANA) the longest + registered method is UPDATEREDIRECTREF which is 17 characters. -- docs: adapt SEE ALSO sections to new requirements + Also there are unregistered methods used by some companies that are + longer than 11 characters. - To please manpage-syntax.pl used by test 1173 + The limit was originally added by 61f52a97 but not used until fc2f1e54. - Closes #11957 + Ref: https://www.iana.org/assignments/http-methods/http-methods.xhtml -- manpage-syntax.pl: verify SEE ALSO syntax + Closes https://github.com/curl/curl/pull/12311 - - Enforce a single reference per .BR line - - Skip the quotes around the section number for example (3) - - Insist on trailing commas on all lines except the last - - Error on comma on the last SEE ALSO entry +Jay Satiro (12 Nov 2023) - - List the entries alpha-sorted, not enforced just recommended +- CURLOPT_CAINFO_BLOB.3: explain what CURL_BLOB_COPY does - Closes #11957 + - Add an explanation of the CURL_BLOB_COPY flag to CURLOPT_CAINFO_BLOB + and CURLOPT_PROXY_CAINFO_BLOB docs. -- connect: expire the timeout when trying next + All the other _BLOB option docs already have the same explanation. - ... so that it gets called again immediately and can continue trying - addresses to connect to. Otherwise it might unnecessarily wait for a - while there. + Closes https://github.com/curl/curl/pull/12277 - Fixes #11920 - Reported-by: Loïc Yhuel - Closes #11935 +Viktor Szakats (11 Nov 2023) -- http: remove wrong comment for http_should_fail +- tidy-up: dedupe Windows system libs in cmake - Reported-by: Christian Schmitz - Ref: #11936 - Closes #11941 + Reviewed-by: Daniel Stenberg + Closes #12307 -Dan Fandrich (26 Sep 2023) +Junho Choi (11 Nov 2023) -- tool_setopt: remove unused function tool_setopt_flags +- ci: test with latest quiche release (0.19.0) - This function is identical to tool_setopt_bitmask except that it treats - the argument as unsigned. + Closes #12180 - Closes #11943 +- quiche: use quiche_conn_peer_transport_params() -Viktor Szakats (26 Sep 2023) + In recent quiche, transport parameter API is separated + with quiche_conn_peer_transport_params(). + (https://github.com/cloudflare/quiche/pull/1575) + It breaks with bulding with latest(post 0.18.0) quiche. -- cmake: add feature checks for `memrchr` and `getifaddrs` + Closes #12180 - - `HAVE_MEMRCHR` for `memrchr`. - - `HAVE_GETIFADDRS` for `getifaddrs`. - This was present in `lib/curl_config.h.cmake` but missed the detection - logic. +Daniel Stenberg (11 Nov 2023) - To match existing autotools feature checks. +- Makefile: generate the VC 14.20 project files at dist-time - Closes #11954 + Follow-up to 28287092cc5a6d6ef8 (#12282) -- cmake: move global headers to specific checks + Closes #12290 - Before this patch we added standard headers unconditionally to the - global list of headers used for feature checks. This is unnecessary - and also doesn't help CMake 'Generate' performance. This patch moves - these headers to each feature check where they are actually needed. - Stop using `stddef.h`, as it seems unnecessary. +Sam James (11 Nov 2023) - I've used autotools' `m4/curl-functions.m4` to figure out these - dependencies. +- misc: fix -Walloc-size warnings - Also delete checking for the C89 standard header `time.h`, that I - missed in the earlier commit. + GCC 14 introduces a new -Walloc-size included in -Wextra which gives: - Ref: 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 + ``` + src/tool_operate.c: In function ‘add_per_transfer’: + src/tool_operate.c:213:5: warning: allocation of insufficient size ‘1’ fo + r type ‘struct per_transfer’ with size ‘480’ [-Walloc-size] + 213 | p = calloc(sizeof(struct per_transfer), 1); + | ^ + src/var.c: In function ‘addvariable’: + src/var.c:361:5: warning: allocation of insufficient size ‘1’ for type + struct var’ with size ‘32’ [-Walloc-size] + 361 | p = calloc(sizeof(struct var), 1); + | ^ + ``` - Closes #11951 + The calloc prototype is: + ``` + void *calloc(size_t nmemb, size_t size); + ``` -- src/mkhelp: make generated code pass `checksrc` + So, just swap the number of members and size arguments to match the + prototype, as we're initialising 1 struct of size `sizeof(struct + ...)`. GCC then sees we're not doing anything wrong. - Closes #11955 + Closes #12292 -- tests: show which curl tool `runtests.pl` is using +Mark Gaiser (11 Nov 2023) - To help debugging when there is issue finding or running it. +- IPFS: bugfixes - Closes #11953 + - Fixed endianness bug in gateway file parsing + - Use IPFS_PATH in tests where IPFS_DATA was used + - Fixed typos from traling -> trailing + - Fixed broken link in IPFS.md -- CI/azure: make `MAKEFLAGS` global to parallelize all jobs + Follow-up to 859e88f6533f9e - https://dev.azure.com/daniel0244/curl/_build/results?buildId=17528 (before) - https://dev.azure.com/daniel0244/curl/_build/results?buildId=17545 (after, wi - th -j3) + Reported-by: Michael Kaufmann + Bug: https://github.com/curl/curl/pull/12152#issuecomment-1798214137 + Closes #12305 - Closes #11952 +Daniel Stenberg (11 Nov 2023) -- CI/azure: migrate old mingw MSYS1 jobs to MSYS2 +- VULN-DISCLOSURE-POLIC: remove broken link to hackerone - Also delete an accidental variable reference. + It should ideally soon not be done from hackerone anyway - Follow-up to 38029101e2d78ba125732b3bab6ec267b80a0e72 + Closes #12308 - Closes #11945 +Andrew Kurushin (11 Nov 2023) -Daniel Stenberg (26 Sep 2023) +- schannel: add CA cache support for files and memory blobs -- docs: add see also curl_multi_get_handles to some man pages + - Support CA bundle and blob caching. - Assisted-by: Jay Satiro + Cache timeout is 24 hours or can be set via CURLOPT_CA_CACHE_TIMEOUT. - Closes #11942 + Closes https://github.com/curl/curl/pull/12261 -Viktor Szakats (26 Sep 2023) +Daniel Stenberg (10 Nov 2023) -- cmake: assume `_fseeki64` and no `fseeko` on Windows +- RELEASE-NOTES: synced - `_fseeki64` is present in mingw-w64 1.0 (2011-09-26) headers, and - at least Watcom C 1.9 (2010) headers and MSVS 2008 [1]. +Charlie C (10 Nov 2023) - `fseeko` is not present in any of these. +- cmake: option to disable install & drop `curlu` target when unused - (mingw-w64 1.0 also offers `fseeko64`.) + This patch makes the following changes: + - adds the option `CURL_DISABLE_INSTALL` - to disable 'install' targets. + - Removes the target `curlu` when the option `BUILD_TESTING` is set to + `OFF` - to prevent it from being loaded in Visual Studio. - [1] https://github.com/curl/curl/pull/11944#issuecomment-1734995004 + Closes #12287 - Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 +Kai Pastor (10 Nov 2023) - Closes #11950 +- cmake: fix multiple include of CURL package -- build: delete checks for C89 standard headers + Fixes errors on second `find_package(CURL)`. This is a frequent case + with transitive dependencies: + ``` + CMake Error at ...: + add_library cannot create ALIAS target "CURL::libcurl" because another + target with the same name already exists. + ``` - Delete checks and guards for standard C89 headers and assume these are - available: `stdio.h`, `string.h`, `time.h`, `setjmp.h`, `stdlib.h`, - `stddef.h`, `signal.h`. + Test to reproduce: + ```cmake + cmake_minimum_required(VERSION 3.27) # must be 3.18 or higher - Some of these we already used unconditionally, some others we only used - for feature checks. + project(curl) - Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 (for `stdio.h` i - n CMake) + set(CURL_DIR "example/lib/cmake/CURL/") + find_package(CURL CONFIG REQUIRED) + find_package(CURL CONFIG REQUIRED) # fails - Closes #11940 + add_executable(main main.c) + target_link_libraries(main CURL::libcurl) + ``` -Stefan Eissing (26 Sep 2023) + Ref: https://cmake.org/cmake/help/latest/release/3.18.html#other-changes + Ref: https://cmake.org/cmake/help/v3.18/policy/CMP0107.html + Ref: #12300 + Assisted-by: Harry Mallon + Closes #11913 -- multiif.h: remove Curl_multi_dump declaration +Viktor Szakats (8 Nov 2023) - Follow-up to d850eea2 which removed the Curl_multi_dump definition. +- tidy-up: use `OPENSSL_VERSION_NUMBER` - Closes https://github.com/curl/curl/pull/11946 + Uniformly use `OPENSSL_VERSION_NUMBER` to check for OpenSSL version. + Before this patch some places used `OPENSSL_VERSION_MAJOR`. -Jay Satiro (26 Sep 2023) + Also fix `lib/md4.c`, which included `opensslconf.h`, but that doesn't + define any version number in these implementations: BoringSSL, AWS-LC, + LibreSSL, wolfSSL. (Only in mainline OpenSSL/quictls). Switch that to + `opensslv.h`. This wasn't causing a deeper problem because the code is + looking for v3, which is only provided by OpenSSL/quictls as of now. -- config-win32: define HAVE__FSEEKI64 + According to https://github.com/openssl/openssl/issues/17517, the macro + `OPENSSL_VERSION_NUMBER` is safe to use and not deprecated. - Follow-up to 9c7165e9 which added an fseeko wrapper to the lib that - calls _fseeki64 if it is available. + Reviewed-by: Marcel Raad + Closes #12298 - Closes https://github.com/curl/curl/pull/11944 +Daniel Stenberg (8 Nov 2023) -- docs: explain how PINNEDPUBLICKEY is independent of VERIFYPEER +- resolve.d: drop a multi use-sentence - - Explain that peer verification via CURLOPT_PINNEDPUBLICKEY takes place - even if peer verification via CURLOPT_SSL_VERIFYPEER is turned off. + Since the `multi:` keyword adds that message. - The behavior is verified by test2048. + Reported-by: 積丹尼 Dan Jacobson + Fixes https://github.com/curl/curl/discussions/12294 + Closes #12295 - Bug: https://github.com/curl/curl/issues/2935#issuecomment-418371872 - Reported-by: claudiusaiz@users.noreply.github.com +- content_encoding: make Curl_all_content_encodings allocless - Bug: https://github.com/curl/curl/discussions/11910 - Reported-by: Hakan Sunay Halil + - Fixes a memory leak pointed out by Coverity + - Also found by OSS-Fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail? + id=63947 + - Avoids unncessary allocations - Closes https://github.com/curl/curl/pull/11930 + Follow-up ad051e1cbec68b2456a22661b -Stefan Eissing (26 Sep 2023) + Closes #12289 -- openssl: improve ssl shutdown handling +Michael Kaufmann (7 Nov 2023) - - If SSL shutdown is not finished then make an additional call to - SSL_read to gather additional tracing. +- vtls: use ALPN "http/1.1" for HTTP/1.x, including HTTP/1.0 - - Fix http2 and h2-proxy filters to forward do_close() calls to the next - filter. + Some servers don't support the ALPN protocol "http/1.0" (e.g. IIS 10), + avoid it and use "http/1.1" instead. - For example h2 and SSL shutdown before and after this change: + This reverts commit df856cb5c9 (#10183). - Before: + Fixes #12259 + Closes #12285 - Curl_conn_close -> cf_hc_close -> Curl_conn_cf_discard_chain -> - ssl_cf_destroy +Daniel Stenberg (7 Nov 2023) - After: +- Makefile.am: drop vc10, vc11 and vc12 projects from dist - Curl_conn_close -> cf_hc_close -> cf_h2_close -> cf_setup_close -> - ssl_cf_close + They are end of life products. Support for generating them remain in the + repo for a while but this change drops them from distribution. - Note that currently the tracing does not show output on the connection - closure handle. Refer to discussion in #11878. + Closes #12288 - Ref: https://github.com/curl/curl/discussions/11878 +David Suter (7 Nov 2023) - Closes https://github.com/curl/curl/pull/11858 +- projects: add VC14.20 project files -Loïc Yhuel (26 Sep 2023) + Windows projects included VC14, VC14.10, VC14.30 but not VC14.20. + OpenSSL and Wolf SSL scripts mention VC14.20 so I don't see a reason why + this is missing. Updated the templates to produce a VC14.20 project. + Project opens in Visual Studio 2019 as expected. -- multi: fix small timeouts + Closes #12282 - Since Curl_timediff rounds down to the millisecond, timeouts which - expire in less than 1ms are considered as outdated and removed from the - list. We can use Curl_timediff_us instead, big timeouts could saturate - but this is not an issue. +Daniel Stenberg (7 Nov 2023) - Closes #11937 +- curl: move IPFS code into src/tool_ipfs.[ch] -Viktor Szakats (25 Sep 2023) + - convert ensure_trailing into ensure_trailing_slash + - strdup the URL string to own it proper + - use shorter variable names + - combine some expressions + - simplify error handling in ipfs_gateway() + - add MAX_GATEWAY_URL_LEN + proper bailout if maximum is reached + - ipfs-gateway.d polish and simplification + - shorten ipfs error message + make them "synthetic" -- cmake: fix stderr initialization in unity builds + Closes #12281 - Before this patch, in certain build configurations the curl tool may - not have displayed anything (debug, macOS), or crashed at startup - (debug, Windows). +Viktor Szakats (6 Nov 2023) - Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 - Necessary after 2f17a9b654121dd1ecf4fc043c6d08a9da3522db +- build: delete support bits for obsolete Windows compilers - Closes #11929 + - Pelles C: Unclear status, failed to obtain a fresh copy a few months + ago. Possible website is HTTP-only. ~10 years ago I left this compiler + dealing with crashes and other issues with no response on the forum + for years. It has seen some activity in curl back in 2021. + - LCC: Last stable release in September 2002. + - Salford C: Misses winsock2 support, possibly abandoned? Last mentioned + in 2006. + - Borland C++: We dropped Borland C++ support in 2018. + - MS Visual C++ 6.0: Released in 1998. curl already requires VS 2010 + (or possibly 2008) as a minimum. -- cmake: fix missing `zlib.h` when compiling `libcurltool` + Closes #12222 - Came up while testing debug/testing build for Windows. I'm not sure why - it didn't come up in earlier tests with similar config. - `tool_hugehelp.c` might indeed require `zlib.h` and without linking - `CURL_LIBS` to the `curltool` target, CMake doesn't seem to add detected - dependency headers to the compiler command. +- build: delete `HAVE_STDINT_H` and `HAVE_INTTYPES_H` - ``` - [ 25%] Building C object src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj - cd .../curl/bld-cmake-llvm-x64/src && /usr/local/opt/llvm/bin/clang - --target=x86_64-w64-mingw32 --sysroot=/usr/local/opt/mingw-w64/toolchain-x8 - 6_64 - -DCURLDEBUG -DCURL_STATICLIB -DHAVE_CONFIG_H -DUNICODE -DUNITTESTS -D_UNICO - DE - -I.../curl/include -I.../curl/lib -I.../curl/bld-cmake-llvm-x64/lib - -I.../curl/bld-cmake-llvm-x64/include -I.../curl/src -Wno-unused-command-li - ne-argument - -D_UCRT -DDEBUGBUILD -DHAS_ALPN -DUSE_MANUAL=1 -fuse-ld=lld -Wl,-s -static - -libgcc - -lucrt [...] -O3 -DNDEBUG -municode -MD - -MT src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj - -MF CMakeFiles/curltool.dir/tool_hugehelp.c.obj.d - -o CMakeFiles/curltool.dir/tool_hugehelp.c.obj -c .../curl/bld-cmake-llvm-x - 64/src/tool_hugehelp.c - .../curl/bld-cmake-llvm-x64/src/tool_hugehelp.c:6:10: fatal error: 'zlib.h' f - ile not found - 6 | #include - | ^~~~~~~~ - ``` + We use `stdint.h` unconditionally in all places except one. These uses + are imposed by external dependencies / features. nghttp2, quic, wolfSSL + and `HAVE_MACH_ABSOLUTE_TIME` do require this C99 header. It means that + any of these features make curl require a C99 compiler. (In case of + MSVC, this means Visual Studio 2010 or newer.) - Follow-up to 39e7c22bb459c2e818f079984989a26a09741860 + This patch changes the single use of `stdint.h` guarded by + `HAVE_STDINT_H` to use `stdint.h` unconditionally. Also stop using + `inttypes.h` as an alternative there. `HAVE_INTTYPES_H` wasn't used + anywhere else, allowing to delete this feature check as well. - Closes #11927 + Closes #12275 -- cmake: fix duplicate symbols when linking tests +Daniel Stenberg (6 Nov 2023) - The linker resolves this automatically in non-unity builds. In unity - builds the linker cannot drop a single object with the duplicates, - resulting in these errors. The root issue is that we started including - certain objects both via both libcurlu and libcurltool libs. +- tool_operate: do not mix memory models - Regression from 39e7c22bb459c2e818f079984989a26a09741860 + Make sure 'inputpath' only points to memory allocated by libcurl so that + curl_free works correctly. + + Pointed out by Coverity + + Follow-up to 859e88f6533f9e1f890 + + Closes #12280 + +Stefan Eissing (6 Nov 2023) + +- lib: client writer, part 2, accounting + logging + + This PR has these changes: + + Renaming of unencode_* to cwriter, e.g. client writers + - documentation of sendf.h functions + - move max decode stack checks back to content_encoding.c + - define writer phase which was used as order before + - introduce phases for monitoring inbetween decode phases + - offering default implementations for init/write/close + + Add type paramter to client writer's do_write() + - always pass all writes through the writer stack + - writers who only care about BODY data will pass other writes unchanged + + add RAW and PROTOCOL client writers + - RAW used for Curl_debug() logging of CURLINFO_DATA_IN + - PROTOCOL used for updates to data->req.bytecount, max_filesize checks and + Curl_pgrsSetDownloadCounter() + - remove all updates of data->req.bytecount and calls to + Curl_pgrsSetDownloadCounter() and Curl_debug() from other code + - adjust test457 expected output to no longer see the excess write + + Closes #12184 + +Daniel Stenberg (6 Nov 2023) + +- VULN-DISCLOSURE-POLICY: escape sequences are not a security flaw + + Closes #12278 + +Viktor Szakats (6 Nov 2023) + +- rand: fix build error with autotools + LibreSSL + + autotools unexpectedly detects `arc4random` because it is also looking + into dependency libs. One dependency, LibreSSL, happens to publish an + `arc4random` function (via its shared lib before v3.7, also via static + lib as of v3.8.2). When trying to use this function in `lib/rand.c`, + its protoype is missing. To fix that, curl included a prototype, but + that used a C99 type without including `stdint.h`, causing: - Windows errors: ``` - [ 3%] Linking C executable unit1303.exe - [ 3%] Building C object tests/server/CMakeFiles/rtspd.dir/__/__/lib/curl_mul - tibyte.c.obj - ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_UTF8_to_wch - ar': - C:/projects/curl/lib/curl_multibyte.c:44: multiple definition of `curlx_conve - rt_UTF8_to_wchar' - ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. - c:44: first defined here - ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_wchar_to_UT - F8': - C:/projects/curl/lib/curl_multibyte.c:66: multiple definition of `curlx_conve - rt_wchar_to_UTF8' - ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. - c:66: first defined here - ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_open': - C:/projects/curl/lib/curl_multibyte.c:92: multiple definition of `curlx_win32 - _open' - ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. - c:92: first defined here - ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_fopen': - C:/projects/curl/lib/curl_multibyte.c:120: multiple definition of `curlx_win3 - 2_fopen' - ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. - c:120: first defined here - ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_stat': - [...] + ../../lib/rand.c:37:1: error: unknown type name 'uint32_t' + 37 | uint32_t arc4random(void); + | ^ + 1 error generated. ``` - Ref: https://ci.appveyor.com/project/curlorg/curl/builds/48110107/job/nvlhpt9 - aa4ehny5q#L247 - macOS errors: - ``` - [ 56%] Linking C executable unit1302 - duplicate symbol '_curlx_sotouz' in: - ../../lib/libcurlu.a(unity_0_c.c.o) - ../../src/libcurltool.a(unity_0_c.c.o) - duplicate symbol '_curlx_sitouz' in: - ../../lib/libcurlu.a(unity_0_c.c.o) - ../../src/libcurltool.a(unity_0_c.c.o) - duplicate symbol '_curlx_uztosz' in: - ../../lib/libcurlu.a(unity_0_c.c.o) - ../../src/libcurltool.a(unity_0_c.c.o) - [...] - ``` - with config: - ``` - -DCMAKE_UNITY_BUILD=ON \ - -DENABLE_DEBUG=ON -DBUILD_TESTING=ON -DCMAKE_C_FLAGS=-DDEBUGBUILD \ - -DBUILD_SHARED_LIBS=ON \ - -DBUILD_STATIC_LIBS=OFF - ``` + This patch improves this by dropping the local prototype and instead + limiting `arc4random` use for non-OpenSSL builds. OpenSSL builds provide + their own random source anyway. - Closes #11926 + The better fix would be to teach autotools to not link dependency libs + while detecting `arc4random`. -- cmake: lib `CURL_STATICLIB` fixes (Windows) + LibreSSL publishing a non-namespaced `arc4random` tracked here: + https://github.com/libressl/portable/issues/928 - - always define `CURL_STATICLIB` when building libcurl for Windows. + Regression from 755ddbe901cd0c921fbc3ac5b3775c0dc683bc73 #10672 - This disables `__declspec(dllexport)` for exported libcurl symbols. - In normal mode (hide symbols) these exported symbols are specified - via `libcurl.def`. When not hiding symbols, all symbols are exported - by default. + Reviewed-by: Daniel Stenberg + Fixes #12257 + Closes #12274 - Regression from 1199308dbc902c52be67fc805c72dd2582520d30 +Daniel Stenberg (5 Nov 2023) - Fixes #11844 +- RELEASE-NOTES: synced - - fix to omit `libcurl.def` when not hiding private symbols. +- strdup: do Curl_strndup without strncpy - Regression from 2ebc74c36a19a1700af394c16855ce144d9878e3 + To avoid (false positive) gcc-13 compiler warnings. - - fix `ENABLED_DEBUG=ON` + shared curl tool Windows builds by also - omitting `libcurl.def` in this case, and exporting all symbols - instead. This ensures that a shared curl tool can access all debug - functions which are not normally exported from libcurl DLL. + Follow-up to 4855debd8a2c1cb - - delete `INTERFACE_COMPILE_DEFINITIONS "CURL_STATICLIB"` for "objects" - target. + Assisted-by: Jay Satiro + Reported-by: Viktor Szakats + Fixes #12258 - Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3 +Enno Boland (5 Nov 2023) - - delete duplicate `BUILDING_LIBCURL` definitions. +- HTTP: fix empty-body warning - - fix `HIDES_CURL_PRIVATE_SYMBOLS` to not overwrite earlier build settings. + This change fixes a compiler warning with gcc-12.2.0 when + `-DCURL_DISABLE_BEARER_AUTH=ON` is used. - Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30 + /home/tox/src/curl/lib/http.c: In function 'Curl_http_input_auth': + /home/tox/src/curl/lib/http.c:1147:12: warning: suggest braces around emp + ty body in an 'else' statement [-Wempty-body] + 1147 | ; + | ^ - Closes #11914 + Closes #12262 -Daniel Stenberg (25 Sep 2023) +Daniel Stenberg (5 Nov 2023) -- RELEASE-NOTES: synced +- openssl: identify the "quictls" backend correctly -Dan Fandrich (25 Sep 2023) + Since vanilla OpenSSL does not support the QUIC API I think it helps + users to identify the correct OpenSSL fork in version output. The best + (crude) way to do that right now seems to be to check if ngtcp2 support + is enabled. -- tests: fix log directory path in IPFS tests + Closes #12270 - Hard-coding the log directory name fails with parallel tests. +Mark Gaiser (5 Nov 2023) - Follow-up to 65b563a96 +- curl: improved IPFS and IPNS URL support - Ref: #8805 + Previously just ipfs:// and ipns:// was supported, which is + too strict for some usecases. -Daniel Stenberg (25 Sep 2023) + This patch allows paths and query arguments to be used too. + Making this work according to normal http semantics: -- curl_multi_get_handles: get easy handles from a multi handle + ipfs:///foo/bar?key=val + ipns:///foo/bar?key=val - Closes #11750 + The gateway url support is changed. + It now only supports gateways in the form of: -Stefan Eissing (25 Sep 2023) + http:///foo/bar + http:// -- http: h1/h2 proxy unification + Query arguments here are explicitly not allowed and trigger an intended + malformed url error. - - use shared code for setting up the CONNECT request - when tunneling, used in HTTP/1.x and HTTP/2 proxying - - eliminate use of Curl_buffer_send() and other manipulations - of `data->req` or `data->state.ulbuf` + There also was a crash when IPFS_PATH was set with a non trailing + forward slash. This has been fixed. - Closes #11808 + Lastly, a load of test cases have been added to verify the above. -Natanael Copa (25 Sep 2023) + Reported-by: Steven Allen + Fixes #12148 + Closes #12152 -- lib: use wrapper for curl_mime_data fseek callback +Harry Mallon (5 Nov 2023) - fseek uses long offset which does not match with curl_off_t. This leads - to undefined behavior when calling the callback and caused failure on - arm 32 bit. +- docs: KNOWN_BUGS cleanup - Use a wrapper to solve this and use fseeko which uses off_t instead of - long. + * Remove other mention of hyper memory-leaks from `KNOWN_BUGS`. + Should have been removed in 629723ecf22a8eae78d64cceec2f3bdae703ec95 - Thanks to the nice people at Libera IRC #musl for helping finding this - out. + * Remove mention of aws-sigv4 sort query string from `KNOWN_BUGS`. + Fixed in #11806 - Fixes #11882 - Fixes #11900 - Closes #11918 + * Remove mention of aws-sigv4 query empty value problems -- configure: sort AC_CHECK_FUNCS + * Remove mention of aws-sigv4 missing amz-content-sha256 + Fixed in #9995 - No functional changes. +- http_aws_sigv4: canonicalise valueless query params -Daniel Stenberg (25 Sep 2023) + Fixes #8107 + Closes #12244 -- warnless: remove unused functions +Michael Kaufmann (4 Nov 2023) - Previously put there for use with the intel compiler +- docs: preserve the modification date when copying the prebuilt man page - Closes #11932 + The previously built man page "curl.1" must be copied with the original + modification date, otherwise the man page is never updated. -- GHA/linux: run singleuse to detect single-use global functions + This fixes a bug that has been introduced with commit 2568441cab. - Use --unit for configure --enable-debug builds + Reviewed-by: Dan Fandrich + Reviewed-by: Daniel Stenberg - Closes #11932 + Closes #12199 -- singleuse: add scan for use in other source codes +Daniel Stenberg (4 Nov 2023) - This should reduce false-positive to almost zero. Checks for presence in - unit tests if --unit is specified, which is intended for debug builds - where unit testing is enabled. +- docs: remove bold from some man page SYNOPSIS sections - Closes #11932 + In the name of consistency -- multi: remove Curl_multi_dump + Closes #12267 - A debug-only function that is basically never used. Removed to ease the - use of the singleuse script to detect non-static functions not used - outside the file where it is defined. +- openssl: two multi pointer checks should probably rather be asserts - Closes #11931 + ... so add the asserts now and consider removing the dynamic checks in a + future. -Viktor Szakats (24 Sep 2023) + Ref: #12261 + Closes #12264 -- tests: fix compiler warnings +boilingoden (4 Nov 2023) - Seen with llvm 17 on Windows x64. +- docs: add supported version for the json write-out - ``` - .../curl/tests/server/rtspd.c:136:13: warning: no previous extern declaration - for non-static variable 'logdir' [-Wmissing-variable-declarations] - 136 | const char *logdir = "log"; - | ^ - .../curl/tests/server/rtspd.c:136:7: note: declare 'static' if the variable i - s not intended to be used outside of this translation unit - 136 | const char *logdir = "log"; - | ^ - .../curl/tests/server/rtspd.c:137:6: warning: no previous extern declaration - for non-static variable 'loglockfile' [-Wmissing-variable-declarations] - 137 | char loglockfile[256]; - | ^ - .../curl/tests/server/rtspd.c:137:1: note: declare 'static' if the variable i - s not intended to be used outside of this translation unit - 137 | char loglockfile[256]; - | ^ - .../curl/tests/server/fake_ntlm.c:43:13: warning: no previous extern declarat - ion for non-static variable 'logdir' [-Wmissing-variable-declarations] - 43 | const char *logdir = "log"; - | ^ - .../curl/tests/server/fake_ntlm.c:43:7: note: declare 'static' if the variabl - e is not intended to be used outside of this translation unit - 43 | const char *logdir = "log"; - | ^ - .../curl/src/tool_doswin.c:350:8: warning: possible misuse of comma operator - here [-Wcomma] - 350 | ++d, ++s; - | ^ - .../curl/src/tool_doswin.c:350:5: note: cast expression to void to silence wa - rning - 350 | ++d, ++s; - | ^~~ - | (void)( ) - ``` + xref: https://curl.se/changes.html#7_70_0 - ``` - .../curl/tests/libtest/lib540.c:146:27: warning: result of comparison 'long' - > 2147483647 is always false [-Wtautological-type-limit-compare] - 146 | int itimeout = (L > (long)INT_MAX) ? INT_MAX : (int)L; - | ~ ^ ~~~~~~~~~~~~~ - 1 warning generated. + Closes #12266 - .../curl/tests/libtest/libntlmconnect.c:195:31: warning: result of comparison - 'long' > 2147483647 is always false [-Wtautological-type-limit-compare] - 195 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo - ut; - | ~~~~~~~ ^ ~~~~~~~~~~~~~ - 1 warning generated. +Viktor Szakats (3 Nov 2023) - .../curl/tests/libtest/lib591.c:117:31: warning: result of comparison 'long' - > 2147483647 is always false [-Wtautological-type-limit-compare] - 117 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo - ut; - | ~~~~~~~ ^ ~~~~~~~~~~~~~ - 1 warning generated. - .../curl/tests/libtest/lib597.c:99:31: warning: result of comparison 'long' > - 2147483647 is always false [-Wtautological-type-limit-compare] - 99 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo - ut; - | ~~~~~~~ ^ ~~~~~~~~~~~~~ - 1 warning generated. - ``` +- appveyor: make VS2008-built curl tool runnable - Seen on macOS Intel: - ``` - .../curl/tests/server/sws.c:440:64: warning: field precision should have type - 'int', but argument has type 'size_t' (aka 'unsigned long') [-Wformat] - msnprintf(logbuf, sizeof(logbuf), "Got request: %s %.*s HTTP/%d.%d" - , - ~~^~ - 1 warning generated. - ``` + By linking the CRT statically. This avoids the error about missing + runtime DLL `MSVCR90.dll` when running the freshly built `curl.exe`. - Closes #11925 + Closes #12263 -Jay Satiro (24 Sep 2023) +Stefan Eissing (3 Nov 2023) -- url: fix netrc info message +- url: proxy ssl connection reuse fix - - Fix netrc info message to use the generic ".netrc" filename if the - user did not specify a netrc location. + - tunnel https proxy used for http: transfers does + no check if proxy-ssl configuration matches + - test cases added, test_10_12 fails on 8.4.0 - - Update --netrc doc to add that recent versions of curl on Windows - prefer .netrc over _netrc. + Closes #12255 + +Jay Satiro (3 Nov 2023) + +- curl_sspi: support more revocation error names in error messages + + - Add these revocation errors to sspi error list: + CRYPT_E_NO_REVOCATION_DLL, CRYPT_E_NO_REVOCATION_CHECK, + CRYPT_E_REVOCATION_OFFLINE and CRYPT_E_NOT_IN_REVOCATION_DATABASE. + + Prior to this change those error codes were not matched to their macro + name and instead shown as "unknown error". Before: - * Couldn't find host google.com in the (nil) file; using defaults + + schannel: next InitializeSecurityContext failed: + Unknown error (0x80092013) - The revocation function was + unable to check revocation because the revocation server was offline. After: - * Couldn't find host google.com in the .netrc file; using defaults - Closes https://github.com/curl/curl/pull/11904 + schannel: next InitializeSecurityContext failed: + CRYPT_E_REVOCATION_OFFLINE (0x80092013) - The revocation function was + unable to check revocation because the revocation server was offline. -Dan Fandrich (23 Sep 2023) + Bug: https://github.com/curl/curl/issues/12239 + Reported-by: Niracler Li -- wolfssh: do cleanup in Curl_ssh_cleanup + Closes https://github.com/curl/curl/pull/12241 - Closes: #11921 +- strdup: don't allow Curl_strndup to read past a null terminator -Daniel Stenberg (24 Sep 2023) + - Use malloc + strncpy instead of Curl_memdup to dupe the string before + null terminating it. -- tool_listhelp: regenerated + Prior to this change if Curl_strndup was passed a length longer than + the allocated string then it could copy out of bounds. - Polished the --ipfs-gateway description + This change is for posterity. Curl_strndup was added in the parent + commit and currently none of the calls to it pass a length that would + cause it to read past the allocated length of the input. - Fixed the --trace-config description + Follow-up to d3b3ba35. - The script also fixed some other small mistakes + Closes https://github.com/curl/curl/pull/12254 - Closes #11923 +Daniel Stenberg (2 Nov 2023) -Viktor Szakats (23 Sep 2023) +- lib: add and use Curl_strndup() -- Makefile.mk: always set `CURL_STATICLIB` for lib (Windows) + The Curl_strndup() function is similar to memdup(), but copies 'n' bytes + then adds a terminating null byte ('\0'). - Also fix to export all symbols in Windows debug builds, making - `-debug-dyn` builds work with `-DCURL_STATICLIB` set. + Closes #12251 - Ref: https://github.com/curl/curl/pull/11914 (same for CMake) +- CURPOST_POSTFIELDS.3: add CURLOPT_COPYPOSTFIELDS in SEE ALSO - Closes #11924 +Stefan Eissing (2 Nov 2023) -Daniel Stenberg (23 Sep 2023) +- pytest: use lower count in repeat tests -- quic: set ciphers/curves the same way regular TLS does + - lower large iteration counts in some tests somewhat for + the same coverage with less duration - for OpenSSL/BoringSSL + Closes #12248 - Fixes #11796 - Reported-by: Karthikdasari0423 on github - Assisted-by: Jay Satiro - Closes #11836 +Daniel Stenberg (2 Nov 2023) -- test457: verify --max-filesize with chunked encoding +- RELEASE-NOTES: synced -- lib: let the max filesize option stop too big transfers too +- docs: clarify that curl passes on input unfiltered - Previously it would only stop them from getting started if the size is - known to be too big then. + ... for several options. - Update the libcurl and curl docs accordingly. + Reported-by: Ophir Lojkine - Fixes #11810 - Reported-by: Elliot Killick - Assisted-by: Jay Satiro - Closes #11820 + Closes #12249 -Viktor Szakats (23 Sep 2023) +- urlapi: when URL encoding the fragment, pass in the right length -- mingw: delete support for legacy mingw.org toolchain + A benign bug because it would only add an extra null terminator. - Drop support for "old" / "legacy" / "classic" / "v1" / "mingw32" MinGW: - https://en.wikipedia.org/wiki/MinGW, https://osdn.net/projects/mingw/ - Its homepage used to be http://mingw.org/ [no HTTPS], and broken now. - It supported the x86 CPU only and used a old Windows API header and - implib set, often causing issues. It also misses most modern Windows - features, offering old versions of both binutils and gcc (no llvm/clang - support). It was last updated 2 years ago. + Made lib1560 get a test that runs this code. - curl now relies on toolchains based on the mingw-w64 project: - https://www.mingw-w64.org/ https://sourceforge.net/projects/mingw-w64/ - https://www.msys2.org/ https://github.com/msys2/msys2 - https://github.com/mstorsjo/llvm-mingw - (Also available via Linux and macOS package managers.) + Closes #12250 - Closes #11625 +Stefan Eissing (2 Nov 2023) -Mark Gaiser (23 Sep 2023) +- vtls: late clone of connection ssl config -- curl: add support for the IPFS protocols: + - perform connection cache matching against `data->set.ssl.primary` + and proxy counterpart + - fully clone connection ssl config only when connection is used - - ipfs:// - - ipns:// + Closes #12237 - This allows you tu use ipfs in curl like: - curl ipfs:// - and - curl ipns:// +- msh3: error when built with CURL_DISABLE_SOCKETPAIR set - For more information consult the readme at: - https://curl.se/docs/ipfs.html + Reported-by: Gisle Vanem + Closes #12252 + Fixes #12213 - Closes #8805 +Daniel Stenberg (2 Nov 2023) -Daniel Stenberg (23 Sep 2023) +- hsts: skip single-dot hostname -- bufq: remove Curl_bufq_skip_and_shift (unused) + Reported-by: Maksymilian Arciemowicz - Closes #11915 + Closes #12247 -- scripts/singleuse.pl: add curl_global_trace +- vtls: fix build without proxy -Viktor Szakats (22 Sep 2023) + Follow-up to bf0e278a3c54bc7fee7360da17c -- cmake: fix unity symbol collisions in h2 builds + closes #12243 - Regression from 331b89a319d0067fa1e6441719307cfef9c7960f +- docs/example/keepalive.c: show TCP keep-alive options - Reviewed-by: Daniel Stenberg - Reviewed-by: Jay Satiro - Closes #11912 + Closes #12242 -Daniel Stenberg (22 Sep 2023) +- lib1560: verify appending blank URL encoded query string -- RELEASE-NOTES: synced +- urlapi: skip appending NULL pointer query -Dan Fandrich (21 Sep 2023) + Reported-by: kirbyn17 on hackerone -- github/labeler: improve the match patterns + Closes #12240 - This includes new rules for setting the appleOS and logging labels and - matches on some example files. Also, enable dot mode for wildcard - matches in the .github directory. +- lib1560: verify setting host to "" with and without URL encode -Daniel Stenberg (21 Sep 2023) +- urlapi: avoid null deref if setting blank host to url encode -- upload-file.d: describe the file name slash/backslash handling + Reported-by: kirbyn17 on hackerone - Closes #11911 + Closes #12240 -Jakub Jelen (21 Sep 2023) +- dynbuf: assert for NULL pointer inputs -- libssh: cap SFTP packet size sent + Help us catch more mistakes. - Due to libssh limitations + Closes #12238 - Signed-off-by: Jakub Jelen +- HTTP3: ngtcp2 builds are no longer experimental - Closes #11804 + The other HTTP/3 backends are still experimental. -Daniel Stenberg (21 Sep 2023) + Closes #12235 -- curl.h: mark CURLSSLBACKEND_NSS as deprecated since 8.3.0 +Stefan Eissing (31 Oct 2023) - Closes #11905 +- vtls: cleanup SSL config management -- mailmap: unify Michael Osipov under a single email + - remove `Curl_ssl_get_config()`, no longer needed -Ted Lyngmo (21 Sep 2023) + Closes #12204 -- docs: use CURLSSLBACKEND_NONE +Daniel Stenberg (31 Oct 2023) - [ssl] use CURLSSLBACKEND_NONE instead of (curl_sslbackend)-1 in - documentation and examples. +- libcurl-thread.3: simplify the TLS section - Signed-off-by: Ted Lyngmo + All TLS libraries curl can use are threadsafe since OpenSSL 1.1.x, August + 2016. - Closes #11909 + Closes #12233 -Dan Fandrich (21 Sep 2023) +- configure: better --disable-http -- github/labeler: give the sync-labels config item a default value + - disable HTTPS-proxy as well, since it can't work without HTTP - This shouldn't be necessary and is likely a bug with this beta version - of the labeller. + - curl_setup: when HTTP is disabled, also disable all features that are + HTTP-only - Also, fix the negative matches for the documentation label. + - version: HTTPS-proxy only exists if HTTP support exists - Follow-up to dd12b452a - Closes #11907 + Closes #12223 -- github/labeler: fix up more the labeler config format +- http: consider resume with CURLOPT_FAILONERRROR and 416 to be fine - The new version didn't like the workaround we had for a bug in the - previous labeler version, and it should no longer be needed. + Finding a 'Content-Range:' in the response changed the handling. - Follow-up to dd12b452a - Closes #11906 + Add test case 1475 to verify -C - with 416 and Content-Range: header, + which is almost exactly like test 194 which instead uses a fixed -C + offset. Adjusted test 194 to also be considered fine. -- github/labeler: fix indenting to try to appease labeller + Fixes #10521 + Reported-by: Smackd0wn + Fixes #12174 + Reported-by: Anubhav Rai + Closes #12176 - Follow-up to dd12b452a +Stefan Eissing (30 Oct 2023) -Jay Satiro (21 Sep 2023) +- GHA: fix checkout of quictls repository to use correct branch name -- libssh2: fix error message on failed pubkey-from-file + Follow-up to c868b0e30f10cd0ac7 - - If libssh2_userauth_publickey_fromfile_ex returns -1 then show error - message "SSH public key authentication failed: Reason unknown (-1)". + Closes #12232 - When libssh2_userauth_publickey_fromfile_ex returns -1 it does so as a - generic error and therefore doesn't set an error message. AFAICT that is - not documented behavior. +Daniel Stenberg (30 Oct 2023) - Prior to this change libcurl retrieved the last set error message which - would be from a previous function failing. That resulted in misleading - auth failed error messages in verbose mode. +- docs/example/localport.c: show off CURLOPT_LOCALPORT - Bug: https://github.com/curl/curl/issues/11837#issue-1891827355 - Reported-by: consulion@users.noreply.github.com + Closes #12230 - Closes https://github.com/curl/curl/pull/11881 +- docs/examples/interface.c: show CURLOPT_INTERFACE use -Stefan Eissing (21 Sep 2023) + Although super simple. -- pytest: exclude test_03_goaway in CI runs due to timing dependency + Closes #12229 - Closes #11860 +Viktor Szakats (30 Oct 2023) -- lib: disambiguate Curl_client_write flag semantics +- build: fix compiler warning with auths disabled - - use CLIENTWRITE_BODY *only* when data is actually body data - - add CLIENTWRITE_INFO for meta data that is *not* a HEADER - - debug assertions that BODY/INFO/HEADER is not used mixed - - move `data->set.include_header` check into Curl_client_write - so protocol handlers no longer have to care - - add special in FTP for `data->set.include_header` for historic, - backward compatible reasons - - move unpausing of client writes from easy.c to sendf.c, so that - code is in one place and can forward flags correctly + ``` + ./curl/lib/http.c:979:12: warning: unused function 'is_valid_auth_separator' + [-Wunused-function] + static int is_valid_auth_separator(char ch) + ^ + 5 warnings generated. + ``` - Closes #11885 + Follow-up to e92edfbef64448ef461117769881f3ed776dec4e #11490 -Patrick Monnerat (21 Sep 2023) + Closes #12227 -- tftpd: always use curl's own tftp.h +- build: require Windows XP or newer - Using the system's provided arpa/tftp.h and optimizing, GCC 12 detects - and reports a stringop-overread warning: + After this patch we assume availability of `getaddrinfo` and + `freeaddrinfo`, first introduced in Windows XP. Meaning curl + now requires building for Windows XP as a minimum. - tftpd.c: In function ‘write_behind.isra’: - tftpd.c:485:12: warning: ‘write’ reading between 1 and 2147483647 bytes f - rom a region of size 0 [-Wstringop-overread] - 485 | return write(test->ofile, writebuf, count); - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - In file included from tftpd.c:71: - /usr/include/arpa/tftp.h:58:30: note: source object ‘tu_data’ of size 0 - 58 | char tu_data[0]; /* data or error stri - ng */ - | ^~~~~~~ + TODO: assume these also in autotools. - This occurs because writebuf points to this field and the latter - cannot be considered as being of dynamic length because it is not - the last field in the structure. Thus it is bound to its declared - size. + Ref: https://github.com/curl/curl/pull/12221#issuecomment-1783761806 + Closes #12225 - This commit always uses curl's own version of tftp.h where the - target field is last in its structure, effectively avoiding the - warning. +- appveyor: bump one job to OpenSSL 3.1 (was 1.1.1) - As HAVE_ARPA_TFTP_H is not used anymore, cmake/configure checks for - arpa/tftp.h are removed. + Use 3.1 with the modern runner image. - Closes #11897 + We still use 1.1.1 in 8 jobs. -Dan Fandrich (20 Sep 2023) + 1.1.1 is EOL since 2023-09-11: + https://www.openssl.org/blog/blog/2023/03/28/1.1.1-EOL/ -- test1474: make precheck more robust on non-Solaris systems + Also: + - add missing SSL-backend to job descriptions. + - tidy up CPU in job descriptions. - If uname -r returns something odd, perl could return an error code and - the test would be erroneously skipped. The qx// syntax avoid this. + Closes #12226 - Followup to 08f9b2148 +Daniel Stenberg (30 Oct 2023) -- github/labeler: switch to the 5 beta version +- RELEASE-NOTES: synced - This version adds an important feature that will allow more PRs to be - labelled. Rather than being limited to labeling PRs with files that - match a single glob, it can now label them if multiple changed files - match any one of a number of globs. +- GHA: bump ngtcp2, nghttp3, nghttp2 and quictls versions -Daniel Stenberg (20 Sep 2023) + ngtcp2 1.0.1 + nghttp3 1.0.0 + nghttp2 1.58.0 + quictls 3.1.4+quic -- lib: enable hmac for digest as well + also sync HTTP3.md with these changes - Previously a build that disabled NTLM and aws-sigv4 would fail to build - since the hmac was disabled, but it is also needed for digest auth. + Closes #12132 - Follow-up to e92edfbef64448ef +Kareem (29 Oct 2023) - Fixes #11890 - Reported-by: Aleksander Mazur - Closes #11896 +- wolfssl: add default case for wolfssl_connect_step1 switch -- idn: if idn2_check_version returns NULL, return error + Closes #12218 - ... this avoids a NULL dereference for this unusual case. +Jay Satiro (29 Oct 2023) - Reported-by: s0urc3_ on hackerone - Closes #11898 +- curl_setup: disallow Windows IPv6 builds missing getaddrinfo -- http: fix CURL_DISABLE_BEARER_AUTH breakage + - On Windows if IPv6 is enabled but getaddrinfo is missing then #error + the build. - When bearer auth was disabled, the if/else logic got wrong and caused - problems. + curl can be built with IPv6 support (ENABLE_IPV6) but without the + ability to resolve hosts to IPv6 addresses (HAVE_GETADDRINFO). On + Windows this is highly unlikely and should be considered a bad build + configuration. - Follow-up to e92edfbef64448ef461 - Fixes #11892 - Reported-by: Aleksander Mazur - Closes #11895 + Such a bad configuration has already given us a bug that was hard to + diagnose. See #12134 and #12136 for discussion. -Michael Osipov (20 Sep 2023) + Ref: https://github.com/curl/curl/issues/12134 + Ref: https://github.com/curl/curl/pull/12136 -- wolfssl: allow capath with CURLOPT_CAINFO_BLOB + Closes https://github.com/curl/curl/pull/12221 - Remain consistent with OpenSSL. While CAfile is nulled as documented - with CURLOPT_CAINFO_BLOB, CApath remains intact. +Nico Rieck (29 Oct 2023) - Closes #11886 +- openssl: make CURLSSLOPT_NATIVE_CA import Windows intermediate CAs -- wolfssl: use ssl_cafile/ssl_capath variables consistent with openssl.c + - If CURLSSLOPT_NATIVE_CA on Windows then import from intermediate CA + "CA" store after importing from root CA "ROOT" store. - Closes #11886 + This change allows curl to work in situations where a server does not + send all intermediate certs and they are present in the "CA" store (the + store with intermediate CAs). This is already allowed by the Schannel + backend. -Dan Fandrich (19 Sep 2023) + Also this change makes partial chain verification possible for those + certs since we allow partial chain verification by default for OpenSSL + (unless CURLSSLOPT_NO_PARTIALCHAIN). This is not allowed by the Schannel + backend. -- test1474: disable test on NetBSD, OpenBSD and Solaris 10 + Prior to this change CURLSSLOPT_NATIVE_CA only imported "ROOT" certs. - These kernels only send a fraction of the requested amount of the first - large block, invalidating the assumptions of the test and causing it to - fail. + Fixes https://github.com/curl/curl/issues/12155 + Closes https://github.com/curl/curl/pull/12185 - Assisted-by: Christian Weisgerber - Ref: https://curl.se/mail/lib-2023-09/0021.html - Closes #11888 +Viktor Szakats (28 Oct 2023) -Ryan Schmidt (20 Sep 2023) +- Makefile.mk: fix `-rtmp` option for non-Windows [ci skip] -- cmake, configure: also link with CoreServices +Daniel Stenberg (28 Oct 2023) - When linking with CoreFoundation, also link with CoreServices which is - apparently required to avoid an NSInvalidArgumentException in software - linking with libcurl on macOS Sonoma 14 and later. +- asyn-ares: handle no connection in the addrinfo callback - Fixes #11893 - Closes #11894 + To avoid crashing. -Marc Hoersken (19 Sep 2023) + Follow-up from 56a4db2 + Closes #12219 -- CI/azure: remove pip, wheel, cryptography, pyopenssl and impacket +Jay Satiro (28 Oct 2023) - These dependencies are now already included in the Docker image. +- hostip6: fix DEBUG_ADDRINFO builds - Ref: https://github.com/mback2k/curl-docker-winbuildenv/commit/2607a31bcab544 - b41d15606e97f38cf312c1ce56 + - Removed unused and incorrect parameter from dump_addrinfo(). - Closes #11889 + Bug: https://github.com/curl/curl/commit/56a4db2e#commitcomment-131050442 + Reported-by: Gisle Vanem -Daniel Stenberg (19 Sep 2023) + Closes https://github.com/curl/curl/pull/12212 -- wolfssl: if CURLOPT_CAINFO_BLOB is set, ignore the CA files +Viktor Szakats (28 Oct 2023) - Ref: #11883 - Reported-by: Michael Osipov - Closes #11884 +- Makefile.mk: restore `_mingw.h` for default `_WIN32_WINNT` -- RELEASE-NOTES: synced + In 8.4.0 we deleted `_mingw.h` as part of purging old-mingw support. + Turns out `_mingw.h` had the side-effect of setting a default + `_WIN32_WINNT` value expected by `lib/config-win32.h` to enable + `getaddrinfo` support in `Makefile.mk` mingw-w64 builds. This caused + disabling support for this unless specifying the value manually. -- test3103: CURLOPT_COOKIELIST test + Restore this header and update its comment to tell why we continue + to need it. -- cookie: set ->running in cookie_init even if data is NULL + This triggered a regression in official Windows curl builds starting + with 8.4.0_1. Fixed in 8.4.0_6. (8.5.0 will be using CMake.) - This is a regression introduced in b1b326ec500 (shipped in curl 8.1.0) + Regression from 38029101e2d78ba125732b3bab6ec267b80a0e72 #11625 - Test 3103 verifies. + Reported-by: zhengqwe on github + Helped-by: Nico Rieck + Fixes #12134 + Fixes #12136 + Closes #12217 - Fixes #11875 - Reported-by: wangp on github - Closes #11876 +- hostip: silence compiler warning `-Wparentheses-equality` -- test498: total header size for all redirects is larger than accepted + Seen with LLVM 17. -- http: use per-request counter to check too large headers + ``` + hostip.c:1336:22: warning: equality comparison with extraneous parentheses [- + Wparentheses-equality] + 1336 | (a->ai_family == PF_INET)) { + | ~~~~~~~~~~~~~^~~~~~~~~~ + hostip.c:1336:22: note: remove extraneous parentheses around the comparison t + o silence this warning + 1336 | (a->ai_family == PF_INET)) { + | ~ ^ ~ + hostip.c:1336:22: note: use '=' to turn this equality comparison into an assi + gnment + 1336 | (a->ai_family == PF_INET)) { + | ^~ + | = + 1 warning generated. + ``` - Not the counter that accumulates all headers over all redirects. + Follow-up to b651aba0962bb31353f55de4dc35f745952a1b10 #12145 - Follow-up to 3ee79c1674fd6 + Reviewed-by: Daniel Stenberg + Closes #12215 - Do a second check for 20 times the limit for the accumulated size for - all headers. +Stefan Eissing (27 Oct 2023) - Fixes #11871 - Reported-by: Joshix-1 on github - Closes #11872 +- doh: use PIPEWAIT when HTTP/2 is attempted -Jay Satiro (18 Sep 2023) + Closes #12214 -- THANKS: add Eric Murphy +Daniel Stenberg (27 Oct 2023) - He reported #11850 (quiche build error) but I forgot to add a - 'reported-by' entry in the fix 267e14f1. +- setopt: remove outdated cookie comment -Daniel Stenberg (18 Sep 2023) + Closes #12206 -- h2-proxy: remove left-over mistake in drain_tunnel() +Stefan Eissing (27 Oct 2023) - Left-over from 331b89a319 +- cfilter: provide call to tell connection to forget a socket - Reported-by: 南宫雪珊 + - fixed libssh.c workaround for a socket being closed by + the library + - eliminate the terrible hack in cf-socket.c to guess when + this happened and try not closing the socket again. + - fixes race in eyeballing when socket could have failed to + be closed for a discarded connect attempt - Closes https://github.com/curl/curl/pull/11877 + Closes #12207 -vvb2060 (18 Sep 2023) +- url: protocol handler lookup tidy-up -- lib: failf/infof compiler warnings + - rename lookup to what it does + - use ARRAYSIZE instead of NULL check for end + - offer alternate lookup for 0-terminated strings - Closes #11874 + Closes #12216 -Daniel Stenberg (17 Sep 2023) +Viktor Szakats (27 Oct 2023) -- rand: fix 'alnum': array is too small to include a terminating null character +- build: variadic macro tidy-ups - It was that small on purpose, but this change now adds the null byte to - avoid the error. + - delete unused `HAVE_VARIADIC_MACROS_C99/GCC` feature checks. + (both autotools and CMake.) + - delete duplicate `NULL` check in `Curl_trc_cf_infof()`. + - fix compiler warning in `CURL_DISABLE_VERBOSE_STRINGS` builds. + ``` + ./lib/cf-socket.c:122:41: warning: unused parameter 'data' [-Wunused-parame + ter] + static void nosigpipe(struct Curl_easy *data, + ^ + ``` + - fix `#ifdef` comments in `lib/curl_trc.{c,h}`. + - fix indentation in some `infof()` calls. - Follow-up to 3aa3cc9b052353b1 + Follow-up to dac293cfb7026b1ca4175d88b80f1432d3d3c684 #12167 - Reported-by: Dan Fandrich - Ref: #11838 - Closes #11870 + Cherry-picked from #12105 + Closes #12210 -Mathias Fuchs (16 Sep 2023) +- cmake: speed up threads setup for Windows -- cmake: fix the help text to the static build option in CMakeLists.txt + Win32 threads are always available. We enabled them unconditionally + (with `ENABLE_THREADED_RESOLVER`). CMake built-in thread detection + logic has this condition hard-coded for Windows as well (since at least + 2007). - Closes #11843 + Instead of doing all the work of detecting pthread combinations on + Windows, then discarding those results, skip these efforts and assume + built-in thread support when building for Windows. -John Haugabook (16 Sep 2023) + This saves 1-3 slow CMake configuration steps. -- MANUAL.md: change domain to example.com + Reviewed-by: Daniel Stenberg + Closes #12202 - Closes #11866 +- cmake: speed up zstd detection -Daniel Stenberg (16 Sep 2023) + Before this patch we detected the presence of a specific zstd API to + see if we can use the library. zstd published that API in its first + stable release: v1.0.0 (2016-08-31). -- doh: inherit DEBUGFUNCTION/DATA + Replace that method by detecting the zstd library version instead and + accepting if it's v1.0.0 or newer. Also display this detected version + and display a warning if the zstd found is unfit for curl. - When creating new transfers for doing DoH, they now inherit the debug - settings from the initiating transfer, so that the application can - redirect and handle the verbose output correctly even for the DoH - transfers. + We use the same version detection method as zstd itself, via its public + C header. - Reported-by: calvin2021y on github - Fixes #11864 - Closes #11869 + This deviates from autotools which keeps using the slow method of + looking for the API by building a test program. The outcome is the same + as long as zstd keeps offering this API. -Dan Fandrich (16 Sep 2023) + Ref: https://github.com/facebook/zstd/commit/5a0c8e24395079f8e8cdc90aa1659cd5 + ab1b7427 (2016-08-12, committed) + Ref: https://github.com/facebook/zstd/releases/tag/v0.8.1 (2016-08-18, first + released) + Ref: https://github.com/facebook/zstd/releases/tag/v1.0.0 -- http_aws_sigv4: fix sorting with empty parts + Reviewed-by: Daniel Stenberg + Closes #12200 - When comparing with an empty part, the non-empty one is always - considered greater-than. Previously, the two would be considered equal - which would randomly place empty parts amongst non-empty ones. This - showed as a test 439 failure on Solaris as it uses a different - implementation of qsort() that compares parts differently. +Daniel Stenberg (26 Oct 2023) - Fixes #11855 - Closes #11868 +- openssl: fix infof() to avoid compiler warning for %s with null -- CI: ignore the "flaky" and "timing-dependent" test results + vtls/openssl.c: In function ‘ossl_connect_step2’: + ../lib/curl_trc.h:120:10: error: ‘%s’ directive argument is null [-Werror + =format-overflow=] + 120 | Curl_infof(data, __VA_ARGS__); } while(0) + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + vtls/openssl.c:4008:5: note: in expansion of macro ‘infof’ + 4008 | infof(data, "SSL connection using %s / %s / %s / %s", + | ^~~~~ + vtls/openssl.c:4008:49: note: format string is defined here + 4008 | infof(data, "SSL connection using %s / %s / %s / %s", + | ^~ - CI builds will now run these tests, but will ignore the results if they - fail. The relevant tests are ones that are sensitive to timing or - have edge conditions that make them more likely to fail on CI servers, - which are often heavily overloaded and slow. + Follow-up to b6e6d4ff8f253c8b8055bab + Closes #12196 - This change only adds two additional tests to be ignored, since the - others already had the flaky keyword. +Stefan Eissing (26 Oct 2023) - Closes #11865 +- lib: apache style infof and trace macros/functions -- runtests: eliminate a warning on old perl versions + - test for a simplified C99 variadic check + - args to infof() in --disable-verbose are no longer disregarded but + must compile. - The warning "Use of implicit split to @_ is deprecated" showed between - perl versions about 5.8 through 5.11. + Closes #12167 + Fixes #12083 + Fixes #11880 + Fixes #11891 -- tests: log the test result code after each libtest +Daniel Stenberg (26 Oct 2023) - This makes it easier to determine the test status. Also, capitalize - FAILURE and ABORT messages in log lines to make them easier to spot. +- RELEASE-NOTES: synced -Harry Sintonen (16 Sep 2023) +Stefan Eissing (26 Oct 2023) -- misc: better random strings +- urldata: move async resolver state from easy handle to connectdata - Generate alphanumerical random strings. + - resolving is done for a connection, not for every transfer + - save create/dup/free of a cares channel for each transfer + - check values of setopt calls against a local channel if no + connection has been attached yet, when needed. - Prior this change curl used to create random hex strings. This was - mostly okay, but having alphanumerical random strings is better: The - strings have more entropy in the same space. + Closes #12198 - The MIME multipart boundary used to be mere 64-bits of randomness due - to being 16 hex chars. With these changes the boundary is 22 - alphanumerical chars, or little over 130 bits of randomness. +Daniel Stenberg (26 Oct 2023) - Closes #11838 +- CURLOPT_WRITEFUNCTION.3: clarify what libcurl returns for CURL_WRITEFUNC_ERRO + R -Daniel Stenberg (15 Sep 2023) + It returns CURLE_WRITE_ERROR. It was not previously stated clearly. -- cookie: reduce variable scope, add const + Reported-by: enWILLYado on github + Fixes #12201 + Closes #12203 -- cookie: do not store the expire or max-age strings +Viktor Szakats (25 Oct 2023) - Convert it to an expire time at once and save memory. +- autotools: update references to deleted `crypt-auth` option - Closes #11862 + Delete leftovers of the `crypt-auth` `./configure` option and + add the new ones that replaced them. -- cookie: remove unnecessary struct fields + Follow-up to e92edfbef64448ef461117769881f3ed776dec4e #11490 - Plus: reduce the hash table size from 256 to 63. It seems unlikely to - make much of a speed difference for most use cases but saves 1.5KB of - data per instance. + Reviewed-by: Daniel Stenberg + Closes #12194 - Closes #11862 +Stefan Eissing (25 Oct 2023) -- RELEASE-NOTES: synced +- lib: introduce struct easy_poll_set for poll information - Bumped to 8.4.0, the next presumed version + Connection filter had a `get_select_socks()` method, inspired by the + various `getsocks` functions involved during the lifetime of a + transfer. These, depending on transfer state (CONNECT/DO/DONE/ etc.), + return sockets to monitor and flag if this shall be done for POLLIN + and/or POLLOUT. -Dan Fandrich (14 Sep 2023) + Due to this design, sockets and flags could only be added, not + removed. This led to problems in filters like HTTP/2 where flow control + prohibits the sending of data until the peer increases the flow + window. The general transfer loop wants to write, adds POLLOUT, the + socket is writeable but no data can be written. -- test2600: remove special case handling for USE_ALARM_TIMEOUT + This leads to cpu busy loops. To prevent that, HTTP/2 did set the + `SEND_HOLD` flag of such a blocked transfer, so the transfer loop cedes + further attempts. This works if only one such filter is involved. If a + HTTP/2 transfer goes through a HTTP/2 proxy, two filters are + setting/clearing this flag and may step on each other's toes. - This was originally added to handle platforms that supported only 1 - second granularity in connect timeouts, but after some recent changes - the test currently permafails on several Windows platforms. + Connection filters `get_select_socks()` is replaced by + `adjust_pollset()`. They get passed a `struct easy_pollset` that keeps + up to `MAX_SOCKSPEREASYHANDLE` sockets and their `POLLIN|POLLOUT` + flags. This struct is initialized in `multi_getsock()` by calling the + various `getsocks()` implementations based on transfer state, as before. - The need for this special-case was removed in commit 8627416, which - increased the connect timeout in all cases to well above 1 second. + After protocol handlers/transfer loop have set the sockets and flags + they want, the `easy_pollset` is *always* passed to the filters. Filters + "higher" in the chain are called first, starting at the first + not-yet-connection one. Each filter may add sockets and/or change + flags. When all flags are removed, the socket itself is removed from the + pollset. - Fixes #11767 - Closes #11849 + Example: -Daniel Stenberg (14 Sep 2023) + * transfer wants to send, adds POLLOUT + * http/2 filter has a flow control block, removes POLLOUT and adds + POLLIN (it is waiting on a WINDOW_UPDATE from the server) + * TLS filter is connected and changes nothing + * h2-proxy filter also has a flow control block on its tunnel stream, + removes POLLOUT and adds POLLIN also. + * socket filter is connected and changes nothing + * The resulting pollset is then mixed together with all other transfers + and their pollsets, just as before. -- SECURITY-PROCESS.md. call it vulnerability disclosure policy + Use of `SEND_HOLD` is no longer necessary in the filters. - SECURITY-PROCESS.md -> VULN-DISCLOSURE-POLICY.md + All filters are adapted for the changed method. The handling in + `multi.c` has been adjusted, but its state handling the the protocol + handlers' `getsocks` method are untouched. - This a name commonly used for a document like this. This name helps - users find it. + The most affected filters are http/2, ngtcp2, quiche and h2-proxy. TLS + filters needed to be adjusted for the connecting handshake read/write + handling. - Closes #11852 + No noticeable difference in performance was detected in local scorecard + runs. -Junho Choi (14 Sep 2023) + Closes #11833 -- quiche: fix build error with --with-ca-fallback +Daniel Stenberg (25 Oct 2023) - - Fix build error when curl is built with --with-quiche - and --with-ca-fallback. +- tests/README: SOCKS tests are not using OpenSSH, it has its own server - - Add --with-ca-fallback to the quiche CI job. + Follow-up to 04fd67555cc - Fixes https://github.com/curl/curl/issues/11850 - Closes https://github.com/curl/curl/pull/11847 + Closes #12195 -Jay Satiro (14 Sep 2023) +Jacob Hoffman-Andrews (25 Oct 2023) -- escape: replace Curl_isunreserved with ISUNRESERVED +- tets: make test documentation more user-friendly - - Use the ALLCAPS version of the macro so that it is clear a macro is - being called that evaluates the variable multiple times. + Put the instructions to run tests right at the top of tests/README.md. - - Also capitalize macro isurlpuntcs => ISURLPUNTCS since it evaluates - a variable multiple times. + Give instructions to read the runtests.1 man page for information + about flags. Delete redundant copy of the flags documentation in the + README. - This is a follow-up to 291d225a which changed Curl_isunreserved into an - alias macro for ISUNRESERVED. The problem is the former is not easily - identified as a macro by the caller, which could lead to a bug. + Add a mention in README.md of the important parallelism flag, to make + test runs go much faster. - For example, ISUNRESERVED(*foo++) is easily identifiable as wrong but - Curl_isunreserved(*foo++) is not even though they both are the same. + Move documentation of output line format into the runtests.1 man page, + and update it with missing flags. - Closes https://github.com/curl/curl/pull/11846 + Fix the order of two flags in the man page. -Dan Fandrich (13 Sep 2023) + Closes #12193 -- tests: increase the default server logs lock timeout +Viktor Szakats (24 Oct 2023) - This timeout is used to wait for the server to finish writing its logs - before checking them against the expected values. An overloaded machine - could take more than the two seconds previously allocated, so increase - the timeout to 5 seconds. +- cmake: pre-fill rest of detection values for Windows - Ref: #11328 - Closes #11834 + The goal of this patch is to avoid unnecessary feature detection work + when doing Windows builds with CMake. Do this by pre-filling well-known + detection results for Windows and specifically for mingw-w64 and MSVC + compilers. Also limit feature checks to platforms where the results are + actually used. Drop a few redundant ones. And some tidying up. -- tests: increase TEST_HANG_TIMEOUT in two tests + - pre-fill remaining detection values in Windows CMake builds. - These tests had a 5 second timeout compared to 60 seconds for all other - tests. Make these consistent with the others for more reliability on - heavily-loaded machines. + Based on actual detection results observed in CI runs, preceding + similar work over libssh2 and matching up values with + `lib/config-win32.h`. - Ref: #11328 + This brings down CMake configuration time from 58 to 14 seconds on the + same local machine. -- test1056: disable on Windows + On AppVeyor CI this translates to: + - 128 seconds -> 50 seconds VS2022 MSVC with OpenSSL (per CMake job): + https://ci.appveyor.com/project/curlorg/curl/builds/48208419/job/4gw66ecr + jpy7necb#L296 + https://ci.appveyor.com/project/curlorg/curl/builds/48217440/job/8m4fwrr2 + fe249uo8#L186 + - 62 seconds -> 16 seconds VS2017 MINGW (per CMake job): + https://ci.appveyor.com/project/curlorg/curl/builds/48208419/job/s1y8q5iv + lcs7ub29?fullLog=true#L290 + https://ci.appveyor.com/project/curlorg/curl/builds/48217440/job/pchpxyjs + yc9kl13a?fullLog=true#L194 - This test relies on the IPv6 scope field being ignored when connecting to - ipv6-localhost (i.e. [::1%259999] is treated as [::1]). Maybe this is a bit - dodgy, but it works on all our test platforms except Windows. This - test was disabled manually on all Windows CI builds already, so instead - add an incompatible feature and precheck so it's skipped on Windows - everywhere automatically. + The formula is about 1-3 seconds delay for each detection. Almost all + of these trigger a full compile-link cycle behind the scenes, slow + even today, both cross and native, mingw-w64 and apparently MSVC too. + Enabling .map files or other custom build features slows it down + further. (Similar is expected for autotools configure.) -- test587: add a slight delay after test + - stop detecting `idn2.h` if idn2 was deselected. + autotools does this. - This test is designed to connect to the server, then immediately send a - few bytes and disconnect. In some situations, such as on a loaded - server, this doesn't give the server enough time to write its lock file - before its existence is checked. The test harness then fails to find the - server's input log file (because it hasn't been written yet) and fails - the test. By adding a short delay after the test, the HTTP server has - enough time to write its lock file which gives itself more time to write - its remaining files. + - stop detecting `idn2.h` if idn2 was not found. + This deviates from autotools. Source code requires both header and + lib, so this is still correct, but faster. - Ref: #11328 + - limit `ADDRESS_FAMILY` detection to Windows. -- tests: stop overriding the lock timeout + - normalize `HAVE_WIN32_WINNT` value to lowercase `0x0a12` format. - These tests reduce the server lock wait timeout which can increase - flakiness on loaded machines. Since this is merely an optimization, - eliminate them in favour of reliability. + - pre-fill `HAVE_WIN32_WINNT`-dependent detection results. + Saving 4 (slow) feature-detections in most builds: `getaddrinfo`, + `freeaddrinfo`, `inet_ntop`, `inet_pton` - Ref: #11328 + - fix pre-filled `HAVE_SYS_TIME_H`, `HAVE_SYS_PARAM_H`, + `HAVE_GETTIMEOFDAY` for mingw-w64. + Luckily this do not change build results, as `WIN32` took + priority over `HAVE_GETTIMEOFDAY` with the current source + code. -- tests: add some --expect100-timeout to reduce timing dependencies + - limit `HAVE_CLOCK_GETTIME_MONOTONIC_RAW` and + `HAVE_CLOCK_GETTIME_MONOTONIC` detections to non-Windows. + We're not using these in the source code for Windows. - These tests can fail when the test machine is so slow that the test HTTP - server didn't get a chance to complete before the client's one second - 100-continue timeout triggered. Increase that 1 second to 999 seconds so - this situation doesn't happen. + - reduce compiler warning noise in CMake internal logs: + - fix to include `winsock2.h` before `windows.h`. + Apply it to autotools test snippets too. + - delete previous `-D_WINSOCKAPI_=` hack that aimed to fix the above. + - cleanup `CMake/CurlTests.c` to emit less warnings. - Ref: #11328 + - delete redundant `HAVE_MACRO_SIGSETJMP` feature check. + It was the same check as `HAVE_SIGSETJMP`. -- test661: return from test early in case of curl error + - delete 'experimental' marking from `CURL_USE_OPENSSL`. -- tests: add the timing-dependent keyword on several tests + - show CMake version via `CMakeLists.txt`. + Credit to the `zlib-ng` project for the idea: + https://github.com/zlib-ng/zlib-ng/blob/61e181c8ae93dbf56040336179c9954078b + d1399/CMakeLists.txt#L7 - These are ones likely to fail on heavily-loaded machines that alter the - normal test timing. Most of these tests already had the flaky keyword - since this condition makes them more likely to fail on CI. + - make `CMake/CurlTests.c` pass `checksrc`. -- test1592: greatly increase the maximum test timeout + - `CMake/WindowsCache.cmake` tidy-ups. - It was too short to be reliable on heavily loaded CI machines, and - as a fail-safe only, it didn't need to be short. + - replace `WIN32` guard with `_WIN32` in `CMake/CurlTests.c`. - Ref: #11328 + Closes #12044 -- test: minor test cleanups +Jay Satiro (24 Oct 2023) - Remove an obsolete block of code in tests 2032 & 576. - Add a comment in test 1474. +- page-footer: clarify exit code 25 -- tests: quadruple the %FTPTIME2 and %FTPTIME3 timeouts + - Clarify that curl tool exit code 25 means an upload failed to start. - This gives more of a margin for error when running on overloaded CI - servers. + Exit code 25 is equivalent to CURLE_UPLOAD_FAILED (25). Prior to this + change the documentation only mentioned the case of FTP STOR failing. - Ref: #11328 + Reported-by: Emanuele Torre -- tests: improve SLOWDOWN test reliability by reducing sent data + Ref: https://github.com/curl/curl/blob/curl-8_4_0/docs/libcurl/libcurl-errors + .3#L113-L115 - These tests are run in SLOWDOWN mode which adds a 10 msec delay after - each character output, which means it takes at least 1.6 seconds (and - 320 kernel calls) just to get through the long welcome banner. On an - overloaded system, this can end up taking much more than 1.6 seconds, - and even more than the 7 or 16 second curl timeout that the tests rely - on, causing them to fail. Reducing the size of the welcome banner drops - the total number of characters sent before the transfer starts by more - than half, which reduces the opportunity for test-breaking slowdowns by - the same amount. + Fixes https://github.com/curl/curl/issues/12189 + Closes https://github.com/curl/curl/pull/12190 - Ref: #11328 +Daniel Stenberg (24 Oct 2023) -- test650: fix an end tag typo +- scripts/cijobs.pl: adjust for appveyor -Jay Satiro (13 Sep 2023) + Follow-up to a1d73a6bb -- tool_cb_wrt: fix debug assertion +Alex Bozarth (24 Oct 2023) - - Fix off-by-one out-of-bounds array index in Windows debug assertion. +- OpenSSL: Include SIG and KEM algorithms in verbose - Bug: https://github.com/curl/curl/commit/af3f4e41#r127212213 - Reported-by: Gisle Vanem + Currently the verbose output does not include which algorithms are used + for the signature and key exchange when using OpenSSL. Including the + algorithms used will enable better debugging when working on using new + algorithm implementations. Know what algorithms are used has become more + important with the fast growing research into new quantum-safe + algorithms. -Daniel Stenberg (13 Sep 2023) + This implementation includes a build time check for the OpenSSL version + to use a new function that will be included in OpenSSL 3.2 that was + introduced in openssl/openssl@6866824 -- ctype: add ISUNRESERVED() + Based-on-patch-by: Martin Schmatz + Closes #12030 - ... and make Curl_isunreserved() use that macro instead of providing a - separate funtion for the purpose. +Daniel Stenberg (23 Oct 2023) - Closes #11840 +- http2: provide an error callback and failf the message -Version 8.3.0 (13 Sep 2023) + Getting nghttp2's error message helps users understand what's going + on. For example when the connection is brought down due a forbidden + header is used - as that header is then not displayed by curl itself. -Daniel Stenberg (13 Sep 2023) + Example: -- RELEASE-NOTES: syn ced + curl: (92) Invalid HTTP header field was received: frame type: 1, + stream: 1, name: [upgrade], value: [h2,h2c] - curl 8.3.0 release + Ref: #12172 + Closes #12179 -- THANKS: contributors from 8.3.0 +Turiiya (23 Oct 2023) -Thorsten Klein (12 Sep 2023) +- BINDINGS: add V binding -- cmake: set SIZEOF_LONG_LONG in curl_config.h + Closes #12182 - in order to support 32bit builds regarding wolfssl CTC_SETTINGS +Daniel Stenberg (22 Oct 2023) - Closes #11839 +- configure: check for the fseeko declaration too -Jay Satiro (12 Sep 2023) + ... and make the code require both symbol and declaration. -- curl_ngtcp2: fix error message + This is because for Android, the symbol is always present in the lib at + build-time even when not actually available in run-time. -- http_aws_sigv4: handle no-value user header entries + Assisted-by: Viktor Szakats + Reported-by: 12932 on github + Fixes #12086 + Closes #12158 - - Handle user headers in format 'name:' and 'name;' with no value. +Viktor Szakats (22 Oct 2023) - The former is used when the user wants to remove an internal libcurl - header and the latter is used when the user actually wants to send a - no-value header in the format 'name:' (note the semi-colon is converted - by libcurl to a colon). +- cmake: fix OpenSSL quic detection in quiche builds - Prior to this change the AWS header import code did not special case - either of those and the generated AWS SignedHeaders would be incorrect. + An orphan call to `CheckQuicSupportInOpenSSL()` remained after a recent + update when checking QUIC for quiche. Move back QUIC detection to + a function and fixup callers to use that. Also make sure that quiche + gets QUIC from BoringSSL, because it doesn't support other forks at this + time. - Reported-by: apparentorder@users.noreply.github.com + Regression from dee310d54261f9a8416e87d50bccfe2cbe404949 #11555 - Ref: https://curl.se/docs/manpage.html#-H + Reported-by: Casey Bodley + Fixes #12160 + Closes #12162 - Fixes https://github.com/curl/curl/issues/11664 - Closes https://github.com/curl/curl/pull/11668 +Daniel Stenberg (22 Oct 2023) -Dan Fandrich (11 Sep 2023) +- RELEASE-NOTES: synced -- CI: run pytest with the -v option + bump to 8.5.0 for pending release - This lists of the test cases being run so it can be tracked over time. +Dan Fandrich (21 Oct 2023) - Closes #11824 +- test3103: add missing quotes around a test tag attribute -Daniel Stenberg (11 Sep 2023) +Loïc Yhuel (21 Oct 2023) -- HTTP3: the msquic backend is not functional +- tool: fix --capath when proxy support is disabled - I ask that we do not submit bugs for this backend just yet as we know it - does not fully work. + After 95e8515ca0, --capath always sets CURLOPT_PROXY_CAPATH, which fails + with CURLE_UNKNOWN_OPTION when proxy support is disabled. - Closes #11831 - Closes #11819 + Closes #12089 -- aws_sigv4: the query canon code miscounted URL encoded input +Daniel Stenberg (21 Oct 2023) - Added some extra ampersands to test 439 to verify "blank" query parts +- openldap: move the alloc of ldapconninfo to *connect() - Follow-up to fc76a24c53b08cdf + Fixes a minor memory leak on LDAP connection reuse. - Closes #11829 + Doing the allocation already in *setup_connection() is wrong since that + connect struct might get discarded early when an existing connection is + reused instead. -vvb2060 (11 Sep 2023) + Closes #12166 -- quic: don't set SNI if hostname is an IP address +- openldap: set the callback argument in oldap_do - We already do this for TLS connections. + ... to make sure it has the current 'data' pointer and not a stale old + one. - RFC 6066 says: Literal IPv4 and IPv6 addresses are not permitted in - "HostName". + Reported-by: Dan Fandrich + Closes #12166 - Ref: https://www.rfc-editor.org/rfc/rfc6066#section-3 +- gnutls: support CURLSSLOPT_NATIVE_CA - Fixes https://github.com/curl/curl/issues/11827 - Closes https://github.com/curl/curl/pull/11828 + Remove the CURL_CA_FALLBACK logic. That build option was added to allow + primarily OpenSSL to use the default paths for loading the CA certs. For + GnuTLS it was instead made to load the "system certs", which is + different and not desirable. -Daniel Stenberg (10 Sep 2023) + The native CA store loading is now asked for with this option. -- RELEASE-NOTES: synced + Follow-up to 7b55279d1d856 -Benoit Pierre (10 Sep 2023) + Co-authored-by: Jay Satiro -- configure: fix `HAVE_TIME_T_UNSIGNED` check + Closes #12137 - The syntax was incorrect (need a proper main body), and the test - condition was wrong (resulting in a signed `time_t` detected as - unsigned). +Stefan Eissing (21 Oct 2023) - Closes #11825 +- RTSP: improved RTP parser -Daniel Stenberg (9 Sep 2023) + - fix HTTP header parsing to report incomplete + lines it buffers as consumed! + - re-implement the RTP parser for interleave RTP + messages for robustness. It is now keeping its + state at the connection + - RTSP protocol handler "readwrite" implementation + now tracks if the response is before/in/after + header parsing or "in" a bod by calling + "Curl_http_readwrite_headers()" itself. This + allows it to know when non-RTP bytes are "junk" + or HEADER or BODY. + - tested with #12035 and various small receive + sizes where current master fails -- THANKS-filter: pszlazak on github + Closes #12052 -pszlazak (9 Sep 2023) +- http2: header conversion tightening -- include.d: explain headers not printed with --fail before 7.75.0 + - fold the code to convert dynhds to the nghttp2 structs + into a dynhds internal method + - saves code duplication + - pacifies compiler analyzers - Prior to 7.75.0 response headers were not printed if -f/--fail was used - and an error was reported by server. This was fixed in ab525c0 - (precedes 7.75.0). + Closes #12097 - Closes #11822 +Daniel Stenberg (21 Oct 2023) -Daniel Stenberg (8 Sep 2023) +- curl_ntlm_wb: fix elif typo -- http_aws_sigv4: skip the op if the query pair is zero bytes + Reported-by: Manfred Schwarb + Follow-up to d4314cdf65ae + Bug: https://github.com/curl/curl/commit/d4314cdf65aee295db627016934bd9eb621a + b077#r130551295 - Follow-up to fc76a24c53b08cdf +Dan Fandrich (20 Oct 2023) - Spotted by OSS-Fuzz +- test1683: remove commented-out check alternatives - Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62175 - Closes #11823 + Python precheck/postcheck alternatives were included but commented out. + Since these are not used and perl is guaranteed to be available to run + the perl versions anyway, the Python ones are removed. -- cmdline-docs: use present tense, not future +Daniel Stenberg (20 Oct 2023) - + some smaller cleanups +- hostip: show the list of IPs when resolving is done - Closes #11821 + Getting 'curl.se' today then gets this verbose output which might help + debugging connectivity related matters. -- cmdline-docs: make sure to phrase it as "added in ...." + * Host curl.se:80 was resolved. + * IPv6: 2a04:4e42::347, 2a04:4e42:200::347, 2a04:4e42:400::347, + 2a04:4e42:600::347, 2a04:4e42:800::347, 2a04:4e42:a00::347, + 2a04:4e42:c00::347, 2a04:4e42:e00::347 + * IPv4: 151.101.193.91, 151.101.1.91, 151.101.65.91, 151.101.129.91 - References to things that were added or changed in a specific version - should be specified as "(added in [version]) for two reasons: + Co-authored-by: Jay Satiro + Closes #12145 - 1 - consistency +rilysh (20 Oct 2023) - 2 - to allow gen.pl to strip them out if deemed referring to too old - versions +- docs: fix function typo in curl_easy_option_next.3 - Closes #11821 + Closes #12170 -Jay Satiro (8 Sep 2023) +Daniel Stenberg (20 Oct 2023) -- docs: mark --ssl-revoke-best-effort as Schannel specific +- vssh: remove the #ifdef for Curl_ssh_init, use empty macro - Closes https://github.com/curl/curl/pull/11760 + In the same style as other init calls -Nathan Moinvaziri (8 Sep 2023) +- easy: remove duplicate wolfSSH init call -- schannel: fix ordering of cert chain info + It is already done in Curl_ssh_init() where it belongs. - - Use CERT_CONTEXT's pbCertEncoded to determine chain order. + Closes #12168 - CERT_CONTEXT from SECPKG_ATTR_REMOTE_CERT_CONTEXT contains - end-entity/server certificate in pbCertEncoded. We can use this pointer - to determine the order of certificates when enumerating hCertStore using - CertEnumCertificatesInStore. +- socks: make SOCKS5 use the CURLOPT_IPRESOLVE choice - This change is to help ensure that the ordering of the certificate chain - requested by the user via CURLINFO_CERTINFO has the same ordering on all - versions of Windows. + Fixes #11949 + Reported-by: Ammar Faizi + Closes #12163 - Prior to this change Schannel certificate order was reversed in 8986df80 - but that was later reverted in f540a39b when it was discovered that - Windows 11 22H2 does the reversal on its own. +- urldata: move the 'internal' boolean to the state struct - Ref: https://github.com/curl/curl/issues/9706 + ... where all the other state bits for the easy handles live. - Closes https://github.com/curl/curl/pull/11632 + Closes #12165 -Chris Talbot (8 Sep 2023) +- url: don't touch the multi handle when closing internal handles -- digest: Use hostname to generate spn instead of realm + Reported-by: Maksymilian Arciemowicz + Closes #12165 - In https://www.rfc-editor.org/rfc/rfc2831#section-2.1.2 +Faraz Fallahi (19 Oct 2023) - digest-uri-value should be serv-type "/" host , where host is: +- getenv: PlayStation doesn't have getenv() - The DNS host name or IP address for the service requested. The - DNS host name must be the fully-qualified canonical name of the - host. The DNS host name is the preferred form; see notes on server - processing of the digest-uri. + Closes #12140 - Realm may not be the host, so we must specify the host explicitly. +Daniel Stenberg (19 Oct 2023) - Note this change only affects the non-SSPI digest code. The digest code - used by SSPI builds already uses the hostname to generate the spn. +- transfer: only reset the FTP wildcard engine in CLEAR state - Ref: https://github.com/curl/curl/issues/11369 + To avoid the state machine to start over and redownload all the files + *again*. - Closes https://github.com/curl/curl/pull/11395 + Reported-by: lkordos on github + Regression from 843b3baa3e3cb228 (shipped in 8.1.0) + Bisect-by: Dan Fandrich + Fixes #11775 + Closes #12156 -Daniel Stenberg (7 Sep 2023) +Stefan Eissing (19 Oct 2023) -- docs: remove use of the word 'very' +- GHA: move mod_h2 version in CI to v2.0.25 - It is mostly superfluous. proselint would complain. + Closes #12157 - Closes #11818 +Daniel Stenberg (19 Oct 2023) -- curl_multi_remove_handle.3: clarify what happens with connection +- ntlm_wb: use pipe instead of socketpair when possible - Closes #11817 + Closes #12149 - RELEASE-NOTES: synced -- test439: verify query canonization for aws-sigv4 +- asyn-thread: use pipe instead of socketpair for IPC when available -- tool_operate: make aws-sigv4 not require TLS to be used + If pipe() is present. Less overhead. - Maybe not used too often, but we want it for testing and it should work. + Helped-by: Viktor Szakats + Closes #12146 -- http_aws_sigv4: canonicalize the query +Dan Fandrich (17 Oct 2023) - Percent encoding needs to be done using uppercase, and most - non-alphanumerical must be percent-encoded. +- tests: Fix Windows test helper tool search & use it for handle64 - Fixes #11794 - Reported-by: John Walker - Closes #11806 + The checkcmd() and checktestcmd() functions would not have worked on + Windows due to hard-coding the UNIX PATH separator character and not + adding .exe file extension. This meant that tools like stunnel, valgrind + and nghttpx would not have been found and used on Windows, and + inspection of previous test runs show none of those being found in pure + Windows CI builds. -Wyatt O'Day (7 Sep 2023) + With this fixed, they can be used to detect the handle64.exe program + before attempting to use it. When handle64.exe was called + unconditionally without it existing, it caused perl to abort the test + run with the error -- lib: add ability to disable auths individually + The running command stopped because the preference variable + "ErrorActionPreference" or common parameter is set to Stop: + sh: handle64.exe: command not found - Both with configure and cmake + Closes #12115 - Closes #11490 +Daniel Stenberg (17 Oct 2023) -Stefan Eissing (7 Sep 2023) +- multi: use pipe instead of socketpair to *wakeup() -- ngtcp2: fix handling of large requests + If pipe() is present. Less overhead. - - requests >64K are send in parts to the filter - - fix parsing of the request to assemble it correctly - from several sends - - open a QUIC stream only when the complete request has - been collected + Closes #12142 - Closes #11815 +Jay Satiro (17 Oct 2023) -- openssl: when CURLOPT_SSL_CTX_FUNCTION is registered, init x509 store before +- build: fix 'threadsafe' feature detection for older gcc - - we delay loading the x509 store to shorten the handshake time. - However an application callback installed via CURLOPT_SSL_CTX_FUNCTION - may need to have the store loaded and try to manipulate it. - - load the x509 store before invoking the app callback + - Add 'threadsafe' to the feature list shown during build if POSIX + threads are being used. - Fixes #11800 - Reported-by: guoxinvmware on github - Cloes #11805 + This is a follow-up to 5adb6000 which added support for building a + thread-safe libcurl with older versions of gcc where atomic is not + available but pthread is. -Daniel Stenberg (7 Sep 2023) + Reported-by: Dan Fandrich + Co-authored-by: Dan Fandrich -- krb5: fix "implicit conversion loses integer precision" warnings + Fixes https://github.com/curl/curl/issues/12125 + Closes https://github.com/curl/curl/pull/12127 - conversions to/from enum and unsigned chars +Daniel Stenberg (16 Oct 2023) - Closes #11814 +- test729: verify socks4a with excessive proxy user name length -Stefan Eissing (7 Sep 2023) +- socks: better buffer size checks for socks4a user and hostname -- pytest: improvements + Also limit the proxy user name to 255 bytes, which is the same limit as + in SOCKS5. - - set CURL_CI for pytest runs in CI environments - - exclude timing sensitive tests from CI runs - - for failed results, list only the log and stat of - the failed transfer + Reported-by: sd0 on hackerone + Closes #12139 - - fix type in http.c comment +- curl.h: on FreeBSD include sys/param.h instead of osreldate.h - Closes #11812 + Should things build on Playstation as well -- CI: move on to ngtcp2 v0.19.1 + Fixes #12107 + Reported-by: Faraz Fallahi + Closes #12123 - Closes #11809 +Marcin Rataj (16 Oct 2023) -Dan Fandrich (5 Sep 2023) +- tool_operate: fix links in ipfs errors -- CI: run Circle macOS builds on x86 for now + URL fragment links generated from headers in + https://curl.se/docs/ipfs.html are lowercase. - The ARM machines aren't ready for us and requesting them now causes - warnings e-mails to be sent to some PR pushers. + Closes #12133 - Ref: #11771 +Viktor Szakats (15 Oct 2023) -Viktor Szakats (5 Sep 2023) +- cmake: replace `check_library_exists_concat()` -- http3: adjust cast for ngtcp2 v0.19.0 + The idea of `check_library_exists_concat()` is that it detects an + optional component and adds it to the list of libs that we also use in + subsequent component checks. This caused problems when detecting + components with unnecessary dependencies that were not yet built. - ngtcp2 v0.19.0 made size of `ecn` member of `ngtcp2_pkt_info` - an `uint8_t` (was: `uint32_t`). Adjust our local cast accordingly. + CMake offers the `CMAKE_REQUIRED_LIBRARIES` variable to set libs used + for component checks, which we already use in most cases. That left 4 + uses of `check_library_exists_concat()`. Only one of these actually + needed the 'concat' feature (ldap/lber). - Fixes: - ``` - ./curl/lib/vquic/curl_ngtcp2.c:1912:12: warning: implicit conversion loses in - teger precision: 'uint32_t' (aka 'unsigned int') to 'uint8_t' (aka 'unsigned - char') [-Wimplicit-int-conversion] - pi.ecn = (uint32_t)ecn; - ~ ^~~~~~~~~~~~~ - ``` + Delete this function and replace it with standard + `check_library_exists()` and manual management of our `CURL_LIBS` + list we use when linking build targets. And special logic to handle the + ldap/lber case. - Also bump ngtcp2, nghttp3 and nghttp2 to their latest versions in our - docs and CI. + (We have a similar function for headers: `check_include_file_concat()`. + It works, but problematic for performance reasons and because it hides + the actual headers required in `check_symbol_exists()` calls.) - Ref: https://github.com/ngtcp2/ngtcp2/commit/80447281bbc94af53f8aa7a4cfc19175 - 782894a3 - Ref: https://github.com/ngtcp2/ngtcp2/pull/877 - Closes #11798 + Ref: #11537 #11558 + Fixes #11285 + Fixes #11648 + Closes #12070 -Stefan Eissing (5 Sep 2023) +LoRd_MuldeR (15 Oct 2023) -- http: fix sending of large requests +- tool_cb_wrt: fix write output for very old Windows versions - - refs #11342 where errors with git https interactions - were observed - - problem was caused by 1st sends of size larger than 64KB - which resulted in later retries of 64KB only - - limit sending of 1st block to 64KB - - adjust h2/h3 filters to cope with parsing the HTTP/1.1 - formatted request in chunks + - Pass missing parameter for 'lpNumberOfCharsWritten' to WriteConsoleW() + function. - - introducing Curl_nwrite() as companion to Curl_write() - for the many cases where the sockindex is already known + Apparently this parameter was *not* optional on older Windows versions. - Fixes #11342 (again) - Closes #11803 + Issue observed on Windows XP SP2. Issue not observed on Windows 7 SP1. + So at some point between those two Microsoft changed the behavior. -- pytest: fix check for slow_network skips to only apply when intended + Prior to this change, on those versions if parameter is NULL then the + function call fails with error ERROR_INVALID_ACCESS. - Closes #11801 + Regression since af3f4e41. -Daniel Stenberg (5 Sep 2023) + Ref: https://github.com/MicrosoftDocs/Console-Docs/issues/299 -- curl_url_get/set.3: add missing semicolon in SYNOPSIS + Fixes https://github.com/curl/curl/issues/12131 + Closes https://github.com/curl/curl/pull/12130 -- CURLOPT_URL.3: explain curl_url_set() uses the same parser +Jay Satiro (15 Oct 2023) -- CURLOPT_URL.3: add two URL API calls in the see-also section +- tool_urlglob: fix build for old gcc versions -Dan Fandrich (4 Sep 2023) + - Don't use __builtin_mul_overflow for GCC 4 and earlier. -- CI: add a 32-bit i686 Linux build + The function was added in GCC 5. - This is done by cross-compiling under regular x86_64 Linux. Since the - kernel offers backwards compatibility, the binaries can be tested as - normal. + Ref: https://gcc.gnu.org/gcc-5/changes.html - Closes #11799 + Reported-by: Dan Fandrich -- tests: fix a type warning on 32-bit x86 + Fixes https://github.com/curl/curl/issues/12124 + Closes https://github.com/curl/curl/pull/12128 -Viktor Szakats (4 Sep 2023) +Carlos Henrique Lima Melara (14 Oct 2023) -- tests: delete stray `.orig` file +- docs/libcurl: fix three minor man page format mistakes - Follow-up to 331b89a319d0067fa1e6441719307cfef9c7960f - Closes #11797 + Reported-by: Samuel Henrique -Daniel Stenberg (4 Sep 2023) + Closes https://github.com/curl/curl/pull/12126 -- RELEASE-NOTES: synced +Jay Satiro (14 Oct 2023) -Viktor Szakats (4 Sep 2023) +- tests/server: add more SOCKS5 handshake error checking -- lib: silence compiler warning in inet_ntop6 + - Add additional checking for missing and too-short SOCKS5 handshake + messages. - ``` - ./curl/lib/inet_ntop.c:121:21: warning: possible misuse of comma operator her - e [-Wcomma] - cur.base = i, cur.len = 1; - ^ - ./curl/lib/inet_ntop.c:121:9: note: cast expression to void to silence warnin - g - cur.base = i, cur.len = 1; - ^~~~~~~~~~~~ - (void)( ) - ``` + Prior to this change the SOCKS5 test server did not check that all parts + of the handshake were received successfully. If those parts were missing + or too short then the server would access uninitialized memory. - Closes #11790 + This issue was discovered in CI job 'memory-sanitizer' test results. + Test 2055 was failing due to the SOCKS5 test server not running. It was + not running because either it crashed or memory sanitizer aborted it + during Test 728. Test 728 connects to the SOCKS5 test server on a + redirect but does not send any data on purpose. The test server was not + prepared for that. -Daniel Stenberg (4 Sep 2023) + Reported-by: Dan Fandrich -- transfer: also stop the sending on closed connection + Fixes https://github.com/curl/curl/issues/12117 + Closes https://github.com/curl/curl/pull/12118 - Previously this cleared the receiving bit only but in some cases it is - also still sending (like a request-body) when disconnected and neither - direction can continue then. +Daniel Stenberg (14 Oct 2023) - Fixes #11769 - Reported-by: Oleg Jukovec - Closes #11795 +- RELEASE-NOTES: synced -John Bampton (4 Sep 2023) +Sohom Datta (14 Oct 2023) -- docs: change `sub-domain` to `subdomain` +- tool_getparam: limit --rate to be smaller than number of ms - https://en.wikipedia.org/wiki/Subdomain + Currently, curl allows users to specify absurd request rates that might + be higher than the number of milliseconds in the unit (ex: curl --rate + 3600050/h http://localhost:8080 does not error out despite there being + only 3600000ms in a hour). - Closes #11793 + This change adds a conditional check before the millisecond calculation + making sure that the number is not higher than the numerator (the unit) + If the number is higher, curl errors out with PARAM_NUMBER_TOO_LARGE -Stefan Eissing (4 Sep 2023) + Closes #12116 -- multi: more efficient pollfd count for poll +Daniel Stenberg (14 Oct 2023) - - do not use separate pollfds for sockets that have POLLIN+POLLOUT +- opts: fix two minor man page format mistakes - Closes #11792 +Jay Satiro (14 Oct 2023) -- http2: polish things around POST +- curl_trc: remove a bad assertion - - added test cases for various code paths - - fixed handling of blocked write when stream had - been closed inbetween attempts - - re-enabled DEBUGASSERT on send with smaller data size + - Remove DEBUGASSERT that an internal handle must not have user + private_data set before calling the user's debug callback. - - in debug builds, environment variables can be set to simulate a slow - network when sending data. cf-socket.c and vquic.c support - * CURL_DBG_SOCK_WBLOCK: percentage of send() calls that should be - answered with a EAGAIN. TCP/UNIX sockets. - This is chosen randomly. - * CURL_DBG_SOCK_WPARTIAL: percentage of data that shall be written - to the network. TCP/UNIX sockets. - Example: 80 means a send with 1000 bytes would only send 800 - This is applied to every send. - * CURL_DBG_QUIC_WBLOCK: percentage of send() calls that should be - answered with EAGAIN. QUIC only. - This is chosen randomly. + This is a follow-up to 0dc40b2a. The user can distinguish their easy + handle from an internal easy handle by setting CURLOPT_PRIVATE on their + easy handle. I had wrongly assumed that meant the user couldn't then + set CURLOPT_PRIVATE on an internal handle as well. - Closes #11756 + Bug: https://github.com/curl/curl/pull/12060#issuecomment-1754594697 + Reported-by: Daniel Stenberg -Daniel Stenberg (4 Sep 2023) + Closes https://github.com/curl/curl/pull/12104 -- docs: add curl_global_trace to some SEE ALSO sections +Dan Fandrich (13 Oct 2023) - Closes #11791 +- test613: stop showing an error on missing output file -- os400: fix checksrc nits + This test would show an error message if the output was missing during + the log post-processing step, but the message was not captured by the + test harness and wasn't useful since the normal golden log file + comparison would the problem more clearly. - Closes #11789 +Stefan Eissing (13 Oct 2023) -Nicholas Nethercote (3 Sep 2023) +- quic: manage connection idle timeouts -- hyper: remove `hyptransfer->endtask` + - configure a 120s idle timeout on our side of the connection + - track the timestamp when actual socket IO happens + - check IO timestamp to our *and* the peer's idle timeouts + in "is this connection alive" checks - `Curl_hyper_stream` needs to distinguish between two kinds of - `HYPER_TASK_EMPTY` tasks: (a) the `foreach` tasks it creates itself, and - (b) background tasks that hyper produces. It does this by recording the - address of any `foreach` task in `hyptransfer->endtask` before pushing - it into the executor, and then comparing that against the address of - tasks later polled out of the executor. + Reported-by: calvin2021y on github + Fixes #12064 + Closes #12077 - This works right now, but there is no guarantee from hyper that the - addresses are stable. `hyper_executor_push` says "The executor takes - ownership of the task, which should not be accessed again unless - returned back to the user with `hyper_executor_poll`". That wording is a - bit ambiguous but with my Rust programmer's hat on I read it as meaning - the task returned with `hyper_executor_poll` may be conceptually the - same as a task that was pushed, but that there are no other guarantees - and comparing addresses is a bad idea. +Dan Fandrich (13 Oct 2023) - This commit instead uses `hyper_task_set_userdata` to mark the `foreach` - task with a `USERDATA_RESP_BODY` value which can then be checked for, - removing the need for `hyptransfer->endtask`. This makes the code look - more like that hyper C API examples, which use userdata for every task - and never look at task addresses. +- CI: ignore test 286 on Appveyor gcc 9 build - Closes #11779 + This test fails sometimes with a super fast retry loop due to what may + just be a compiler bug. The test results are ignored on the one CI job + where it occurs because there seems to be nothing we can do to fix it. -Dave Cottlehuber (3 Sep 2023) + Fixes #12040 + Closes #12106 -- ws: fix spelling mistakes in examples and tests +Viktor Szakats (13 Oct 2023) - Closes #11784 +- lib: fix gcc warning in printf call -Daniel Stenberg (3 Sep 2023) + Do not pass NULL to printf %s. -- tool_filetime: make -z work with file dates before 1970 + Seen with gcc 13.2.0 on Debian: + ``` + .../curl/lib/connect.c:696:27: warning: '%s' directive argument is null [-Wfo + rmat-overflow=] + ``` + Ref: https://github.com/curl/curl-for-win/actions/runs/6476161689/job/1758442 + 6483#step:3:11104 - Fixes #11785 - Reported-by: Harry Sintonen - Closes #11786 + Ref: #10284 + Co-authored-by: Jay Satiro + Closes #12082 -Dan Fandrich (1 Sep 2023) +Alex Klyubin (13 Oct 2023) -- build: fix portability of mancheck and checksrc targets +- http2: safer invocation of populate_binsettings - At least FreeBSD preserves cwd across makefile lines, so rules - consisting of more than one "cd X; do_something" must be explicitly run - in a subshell to avoid this. This problem caused the Cirrus FreeBSD - build to fail when parallel make jobs were enabled. + populate_binsettings now returns a negative value on error, instead of a + huge positive value. Both places which call this function have been + updated to handle this change in its contract. -- CI: adjust labeler match patterns for new & obsolete files + The way populate_binsettings had been used prior to this change the huge + positive values -- due to signed->unsigned conversion of the potentially + negative result of nghttp2_pack_settings_payload which returns negative + values on error -- are not possible. But only because http2.c currently + always provides a large enough output buffer and provides H2 SETTINGS + IVs which pass the verification logic inside nghttp2. If the + verification logic were to change or if http2.c started passing in more + IVs without increasing the output buffer size, the overflow could become + reachable, and libcurl/curl might start leaking memory contents to + servers/proxies... -- configure: trust pkg-config when it's used for zlib + Closes #12101 - The library flags retrieved from pkg-config were later thrown out and - harded-coded, which negates the whole reason to use pkg-config. - Also, previously, the assumption was made that --libs-only-l and - --libs-only-L are the full decomposition of --libs, which is untrue and - would not allow linking against a static zlib. The new approach is - better in that it uses --libs, although only if --libs-only-l returns - nothing. +Daniel Stenberg (13 Oct 2023) - Bug: https://curl.se/mail/lib-2023-08/0081.html - Reported-by: Randall - Closes #11778 +- openssl: avoid BN_num_bits() NULL pointer derefs -Stefan Eissing (1 Sep 2023) + Reported-by: icy17 on github + Fixes #12099 + Closes #12100 -- CI/ngtcp2: clear wolfssl for when cache is ignored +- wolfssl: require WOLFSSL_SYS_CA_CERTS for loading system CA - Closes #11783 + This define is set in wolfssl's options.h file when this function and + feature is present. Handles both builds with the feature explicitly + disabled and wolfSSL versions before 5.5.2 - which introduced this API + call. -Daniel Stenberg (1 Sep 2023) + Closes #12108 -- RELEASE-NOTES: synced +- tool_urlglob: make multiply() bail out on negative values -Nicholas Nethercote (1 Sep 2023) + - Does not work correctly with negative values + - use __builtin_mul_overflow() on gcc -- hyper: fix a progress upload counter bug + Reported-by: Torben Dury + Closes #12102 - `Curl_pgrsSetUploadCounter` should be a passed a total count, not an - increment. +Loïc Yhuel (13 Oct 2023) - This changes the failing diff for test 579 with hyper from this: - ``` - Progress callback called with UL 0 out of 0[LF] - -Progress callback called with UL 8 out of 0[LF] - -Progress callback called with UL 16 out of 0[LF] - -Progress callback called with UL 26 out of 0[LF] - -Progress callback called with UL 61 out of 0[LF] - -Progress callback called with UL 66 out of 0[LF] - +Progress callback called with UL 29 out of 0[LF] - ``` - to this: - ``` - Progress callback called with UL 0 out of 0[LF] - -Progress callback called with UL 8 out of 0[LF] - -Progress callback called with UL 16 out of 0[LF] - -Progress callback called with UL 26 out of 0[LF] - -Progress callback called with UL 61 out of 0[LF] - -Progress callback called with UL 66 out of 0[LF] - +Progress callback called with UL 40 out of 0[LF] - ``` - Presumably a step in the right direction. +- cmake: fix CURL_DISABLE_GETOPTIONS - Closes #11780 + - Add CURL_DISABLE_GETOPTIONS to curl_config.h.cmake. -Daniel Stenberg (1 Sep 2023) + Prior to this change the option had no effect because it was missing + from that file. -- awssiv4: avoid freeing the date pointer on error + Closes https://github.com/curl/curl/pull/12091 - Since it was not allocated, don't free it even if it was wrong syntax +- easy_lock: add a pthread_mutex_t fallback - Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61908 + This allows to keep the init threadsafe with gcc < 4.9.0 (no C11 + atomics). - Follow-up to b137634ba3adb + Closes https://github.com/curl/curl/pull/12090 - Closes #11782 +Viktor Szakats (12 Oct 2023) -Stefan Eissing (1 Sep 2023) +- CI: add autotools, out-of-tree, debug build to distro check job -- CI: ngtcp2-linux: use separate caches for tls libraries + Add a job that builds curl from a generated source tarball sample, with + autotools, out-of-tree, in debug mode. - allow ever changing master for wolfssl + Ref: #12085 + Closes #12088 - Closes #11766 +Daniel Stenberg (12 Oct 2023) -- replace `master` as wolfssl-version with recent commit +- http: avoid Expect: 100-continue if Upgrade: is used -- wolfssl, use master again in CI + Reported-by: Daniel Jelinski + Fixes #12022 + Closes #12062 - - with the shared session update fix landed in master, it - is time to use that in our CI again +Jan Alexander Steffens (heftig) (12 Oct 2023) -Nicholas Nethercote (31 Aug 2023) +- docs: use SOURCE_DATE_EPOCH for generated manpages -- tests: fix formatting errors in `FILEFORMAT.md`. + This should make builds from Git reproducible. - Without the surrounding backticks, these tags get swallowed when the - markdown is rendered. + Closes #12092 - Closes #11777 +Daniel Stenberg (12 Oct 2023) -Viktor Szakats (31 Aug 2023) +- RELEASE-NOTES: synced -- cmake: add support for `CURL_DEFAULT_SSL_BACKEND` + Bumped to 8.4.1 - Allow overriding the default TLS backend via a CMake setting. +Viktor Szakats (12 Oct 2023) - E.g.: - `cmake [...] -DCURL_DEFAULT_SSL_BACKEND=mbedtls` +- cmake: fix `HAVE_H_ERRNO_ASSIGNABLE` detection - Accepted values: bearssl, gnutls, mbedtls, openssl, rustls, - schannel, secure-transport, wolfssl + Fix `HAVE_H_ERRNO_ASSIGNABLE` to not run, only compile its test snippet, + aligning this with autotools. This fixes an error when doing + cross-builds and also actually detects this feature. It affected systems + not allowlisted into this, e.g. SerenityOS. - The passed string is baked into the curl/libcurl binaries. - The value is case-insensitive. + We used this detection result to enable `HAVE_GETADDRINFO_THREADSAFE`. - We added a similar option to autotools in 2017 via - c7170e20d0a18ec8a514b4daa53bcdbb4dcb3a05. + Follow-up to 04a3a377d83fd72c4cf7a96c9cb6d44785e33264 #11979 + Ref: #12095 (closed in favour of this patch) + Ref: #11964 (effort to sync cmake detections with autotools) - TODO: Convert to lowercase to improve reproducibility. + Reported-by: Kartatz on Github + Assisted-by: Kartatz on Github + Fixes #12093 + Closes #12094 - Closes #11774 +- build: add `src/.checksrc` to source tarball -- sectransp: fix compiler warnings + Regression from e5bb88b8f824ed87620bd923552534c83c2a516e #11958 - https://github.com/curl/curl-for-win/actions/runs/6037489221/job/16381860220# - step:3:11046 - ``` - /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:2435:1 - 4: warning: unused variable 'success' [-Wunused-variable] - OSStatus success; - ^ - /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:3300:4 - 4: warning: unused parameter 'sha256len' [-Wunused-parameter] - size_t sha256len) - ^ - ``` + Bug: https://github.com/curl/curl/pull/11958#issuecomment-1757079071 + Reported-by: Romain Geissler + Fixes #12084 + Closes #12085 - Closes #11773 +Version 8.4.0 (11 Oct 2023) -- tidy-up: mostly whitespace nits +Daniel Stenberg (11 Oct 2023) - - delete completed TODO from `./CMakeLists.txt`. - - convert a C++ comment to C89 in `./CMake/CurlTests.c`. - - delete duplicate EOLs from EOF. - - add missing EOL at EOF. - - delete whitespace at EOL (except from expected test results). - - convert tabs to spaces. - - convert CRLF EOLs to LF in GHA yaml. - - text casing fixes in `./CMakeLists.txt`. - - fix a codespell typo in `packages/OS400/initscript.sh`. +- RELEASE-NOTES: synced - Closes #11772 +- THANKS: add contributors from 8.4.0 -Dan Fandrich (31 Aug 2023) +Jay Satiro (11 Oct 2023) -- CI: remove Windows builds from Cirrus, without replacement +- socks: return error if hostname too long for remote resolve - If we don't do this, all coverage on Cirrus will cease in a few days. By - removing the Windows builds, the FreeBSD one should still continue - as before. The Windows builds will need be moved to another service to - maintain test coverage. + Prior to this change the state machine attempted to change the remote + resolve to a local resolve if the hostname was longer than 255 + characters. Unfortunately that did not work as intended and caused a + security issue. - Closes #11771 + Bug: https://curl.se/docs/CVE-2023-38545.html -- CI: switch macOS ARM build from Cirrus to Circle CI +Stefan Eissing (10 Oct 2023) - Cirrus is drastically reducing their free tier on Sept. 1, so they will - no longer perform all these builds for us. All but one build has been - moved, with the LibreSSL one being dropped because of linking problems - on Circle. +- CI: remove slowed-network tests - One important note about this change is that Circle CI is currently - directing all these builds to x86_64 hardware, despite them requesting - ARM. This is because ARM nodes are scheduled to be available on the - free tier only in December. This reduces our architectural diversity - until then but it should automatically come back once those machines are - enabled. + - remove these tests as they are currently not reliable in our CI + setups. -- CI: use the right variable for BSD make + curl handles the test cases, but CI sometimes fails on these due to + additional conditions. Rather than mix them in, an additional CI job + will be added in the future that is specific to them. - BSD uses MAKEFLAGS instead of MAKE_FLAGS so it wasn't doing parallel - builds before. + Closes https://github.com/curl/curl/pull/12075 -- CI: drop the FreeBSD 12.X build +Jay Satiro (10 Oct 2023) - Cirrus' new free tier won't let us have many builds, so drop the - nonessential ones. The FreeBSD 13.X build will still give us the most - relevant FreeBSD coverage. +- libcurl-env-dbg.3: move debug variables from libcurl-env.3 -- CI: move the Alpine build from Cirrus to GHA + - Move documentation of libcurl environment variables used only in debug + builds from libcurl-env into a separate document libcurl-env-dbg. - Cirrus is reducing their free tier to next to nothing, so we must move - builds elsewhere. + - Document more debug environment variables. -Stefan Eissing (30 Aug 2023) + Previously undocumented or missing a description: -- test_07_upload.py: fix test_07_34 curl args + CURL_ALTSVC_HTTP, CURL_DBG_SOCK_WBLOCK, CURL_DBG_SOCK_WPARTIAL, + CURL_DBG_QUIC_WBLOCK, CURL_DEBUG, CURL_DEBUG_SIZE, CURL_GETHOSTNAME, + CURL_HSTS_HTTP, CURL_FORCETIME, CURL_SMALLREQSEND, CURL_SMALLSENDS, + CURL_TIME. - - Pass correct filename to --data-binary. + Closes https://github.com/curl/curl/pull/11811 - Prior to this change --data-binary was passed an incorrect filename due - to a missing separator in the arguments list. Since aacbeae7 curl will - error on incorrect filenames for POST. +Dan Fandrich (9 Oct 2023) - Fixes https://github.com/curl/curl/issues/11761 - Closes https://github.com/curl/curl/pull/11763 +- test670: increase the test timeout -Nicholas Nethercote (30 Aug 2023) + This should make it more immune to loaded servers. -- tests: document which tests fail due to hyper's lack of trailer support. + Ref: #11328 - Closes #11762 +Stefan Eissing (9 Oct 2023) -- docs: removing "pausing transfers" from HYPER.md. +- MQTT: improve receive of ACKs - It's a reference to #8600, which was fixed by #9070. + - add `mq->recvbuf` to provide buffering of incomplete + ACK responses + - continue ACK reading until sufficient bytes available + - fixes test failures on low network receives - Closes #11764 + Closes #12071 -Patrick Monnerat (30 Aug 2023) +Viktor Szakats (9 Oct 2023) -- os400: handle CURL_TEMP_PRINTF() while building bind source +- quic: fix BoringSSL build - Closes #11547 + Add guard around `SSL_CTX_set_ciphersuites()` use. -- os400: build test servers + Bug: https://github.com/curl/curl/pull/12065#issuecomment-1752171885 - Also fix a non-compliant main prototype in disabled.c. + Follow-up to aa9a6a177017e4b74d33cdf85a3594900f4a7f81 - Closes #11547 + Co-authored-by: Jay Satiro + Reviewed-by: Daniel Stenberg + Closes #12067 -- tests: fix compilation error for os400 +Stefan Eissing (9 Oct 2023) - OS400 uses BSD 4.3 setsockopt() prototype by default: this does not - define parameter as const, resulting in an error if actual parameter is - const. Remove the const keyword from the actual parameter cast: this - works in all conditions, even if the formal parameter uses it. +- test1540: improve reliability - Closes #11547 + - print that bytes have been received on pausing, but not how many -- os400: make programs and command name configurable + Closes #12069 - Closes #11547 +- test2302: improve reliability -- os400: move build configuration parameters to a separate script + - make result print collected write data, unless + change in meta flags is detected + - will show same result even when data arrives via + several writecb invocations - They can then easily be overriden in a script named "config400.override" - that is not part of the distribution. + Closes #12068 - Closes #11547 +Daniel Stenberg (9 Oct 2023) -- os400: implement CLI tool +- curl_easy_pause: set "in callback" true on exit if true - This is provided as a QADRT (ascii) program, a link to it in the IFS and - a minimal CL command. + Because it might have called another callback in the mean time that then + set the bit FALSE on exit. - Closes #11547 + Reported-by: Jay Satiro + Fixes #12059 + Closes #12061 -Matthias Gatto (30 Aug 2023) +Viktor Szakats (8 Oct 2023) -- lib: fix aws-sigv4 having date header twice in some cases +- h3: add support for ngtcp2 with AWS-LC builds - When the user was providing the header X-XXX-Date, the header was - re-added during signature computation, and we had it twice in the - request. + ``` + curl 8.4.0-DEV (x86_64-apple-darwin) libcurl/8.4.0-DEV (SecureTransport) AWS- + LC/1.15.0 nghttp2/1.56.0 ngtcp2/0.19.1 nghttp3/0.15.0 + Release-Date: [unreleased] + Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps + mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss + Features: alt-svc AsynchDNS HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile Multi + SSL NTLM SSL threadsafe UnixSockets + ``` - Reported-by: apparentorder@users.noreply.github.com + Also delete an obsolete GnuTLS TODO and update the header comment in + `FindNGTCP2.cmake`. - Signed-off-by: Matthias Gatto + Reviewed-by: Daniel Stenberg + Closes #12066 - Fixes: https://github.com/curl/curl/issues/11738 - Closes: https://github.com/curl/curl/pull/11754 +- build: do not publish `HAVE_BORINGSSL`, `HAVE_AWSLC` macros -Jay Satiro (30 Aug 2023) + Syncing this up with CMake. -- multi: remove 'processing: ' debug message + Source code uses the built-in `OPENSSL_IS_AWSLC` and + `OPENSSL_IS_BORINSSL` macros to detect BoringSSL and AWS-LC. No help is + necessary from the build tools. - - Remove debug message added by e024d566. + The one use of `HAVE_BORINGSSL` in the source turned out to be no longer + necessary for warning-free BoringSSL + Schannel builds. Ref: #1610 #2634 - Closes https://github.com/curl/curl/pull/11759 + autotools detects this anyway for display purposes. + CMake detects this to decide whether to use the BoringSSL-specific + crypto lib with ngtcp2. It detects AWS-LC, but doesn't use the detection + result just yet (planned in #12066). -- ftp: fix temp write of ipv6 address + Ref: #11964 - - During the check to differentiate between a port and IPv6 address - without brackets, write the binary IPv6 address to an in6_addr. + Reviewed-by: Daniel Stenberg + Reviewed-by: Jay Satiro + Closes #12065 - Prior to this change the binary IPv6 address was erroneously written to - a sockaddr_in6 'sa6' when it should have been written to its in6_addr - member 'sin6_addr'. There's no fallout because no members of 'sa6' are - accessed before it is later overwritten. +Marc Hoersken (8 Oct 2023) - Closes https://github.com/curl/curl/pull/11747 +- CI: move distcheck job from Azure Pipelines to GitHub Actions -- tool: change some fopen failures from warnings to errors + This will allow for more trigger excludes within Azure Pipelines. - - Error on missing input file for --data, --data-binary, - --data-urlencode, --header, --variable, --write-out. + Also fixes seemingly broken check with scripts/installcheck.sh. + Ref: 190374c74ec4e5247d9066544c86e8d095e1d7b5 - Prior to this change if a user of the curl tool specified an input file - for one of the above options and that file could not be opened then it - would be treated as zero length data instead of an error. For example, a - POST using `--data @filenametypo` would cause a zero length POST which - is probably not what the user intended. + Assisted-by: Philip Heiduck + Closes #9532 - Closes https://github.com/curl/curl/pull/11677 +Daniel Stenberg (8 Oct 2023) -- hostip: fix typo +- url: fall back to http/https proxy env-variable if ws/wss not set -Davide Masserut (29 Aug 2023) + Reported-by: Craig Andrews + Fixes #12031 + Closes #12058 -- tool: avoid including leading spaces in the Location hyperlink +Stefan Eissing (8 Oct 2023) - Co-authored-by: Dan Fandrich +- cf-socket: simulate slow/blocked receives in debug - Closes #11735 + add 2 env variables for non-UDP sockets: + 1. CURL_DBG_SOCK_RBLOCK: percentage of receive calls that randomly + should return EAGAIN + 2. CURL_DBG_SOCK_RMAX: max amount of bytes read from socket -Daniel Stenberg (29 Aug 2023) + Closes #12035 -- SECURITY-PROCESS.md: not a sec issue: Tricking user to run a cmdline +- http2: refused stream handling for retry - Closes #11757 + - answer HTTP/2 streams refused via a GOAWAY from the server to + respond with CURLE_RECV_ERROR in order to trigger a retry + on another connection -- connect: stop halving the remaining timeout when less than 600 ms left + Reported-by: black-desk on github + Ref #11859 + Closes #12054 - When curl wants to connect to a host, it always has a TIMEOUT. The - maximum time it is allowed to spend until a connect is confirmed. +Jay Satiro (8 Oct 2023) - curl will try to connect to each of the IP adresses returned for the - host. Two loops, one for each IP family. +- CURLOPT_DEBUGFUNCTION.3: warn about internal handles - During the connect loop, while curl has more than one IP address left to - try within a single address family, curl has traditionally allowed (time - left/2) for *this* connect attempt. This, to not get stuck on the - initial addresses in case the timeout but still allow later addresses to - get attempted. - - This has the downside that when users set a very short timeout and the - host has a large number of IP addresses, the effective result might be - that every attempt gets a little too short time. + - Warn that the user's debug callback may be called with the handle + parameter set to an internal handle. - This change stop doing the divided-by-two if the total time left is - below a threshold. This threshold is 600 milliseconds. + Without this warning the user may assume that the only handles their + debug callback receives are the easy handles on which they set + CURLOPT_DEBUGFUNCTION. - Closes #11693 + This is a follow-up to f8cee8cc which changed DoH handles to inherit + the debug callback function set in the user's easy handle. As a result + those handles are now passed to the user's debug callback function. -- asyn-ares: reduce timeout to 2000ms + Closes https://github.com/curl/curl/pull/12034 - When UDP packets get lost this makes for slightly faster retries. This - lower timeout is used by @c-ares itself by default starting next - release. +- url: fix typo - Closes #11753 +Daniel Stenberg (8 Oct 2023) -John Bampton (29 Aug 2023) +- test458: verify --expand-output, expanding a file name accepting option -- misc: remove duplicate words + Verifies the fix in #12055 (commit f2c8086ff15e6e995e1) - Closes #11740 +- tool_getparam: accept variable expansion on file names too -Daniel Stenberg (29 Aug 2023) + Reported-by: PBudmark on github + Fixes #12048 + Closes #12055 - RELEASE-NOTES: synced -- wolfSSL: avoid the OpenSSL compat API when not needed +- multi: do CURLM_CALL_MULTI_PERFORM at two more places - ... and instead call wolfSSL functions directly. + ... when it does a state transition but there is no particular socket or + timer activity. This was made apparent when commit b5bb84c removed a + superfluous timer expiry. - Closes #11752 + Reported-by: Dan Fandrich. + Fixes #12033 + Closes #12056 -Viktor Szakats (28 Aug 2023) +Viktor Szakats (7 Oct 2023) -- lib: fix null ptr derefs and uninitialized vars (h2/h3) +- GHA/linux: mbedtls 3.5.0 + minor dep bumps - Fixing compiler warnings with gcc 13.2.0 in unity builds. + Closes #12057 - Assisted-by: Jay Satiro - Assisted-by: Stefan Eissing - Closes #11739 +Dan Fandrich (7 Oct 2023) -Jay Satiro (28 Aug 2023) +- CI: bump OpenLDAP package version on FreeBSD -- secureserver.pl: fix stunnel version parsing + The old one is no longer available. - - Allow the stunnel minor-version version part to be zero. +Marc Hoersken (7 Oct 2023) - Prior to this change with the stunnel version scheme of . - if either part was 0 then version parsing would fail, causing - secureserver.pl to fail with error "No stunnel", causing tests that use - the SSL protocol to be skipped. As a practical matter this bug can only - be caused by a minor-version part of 0, since the major-version part is - always greater than 0. +- docs/libcurl/opts/Makefile.inc: add missing manpage files - Closes https://github.com/curl/curl/pull/11722 + Detected with #9532 -- secureserver.pl: fix stunnel path quoting +Dan Fandrich (7 Oct 2023) - - Store the stunnel path in the private variable $stunnel unquoted and - instead quote it in the command strings. +- tests: fix a race condition in ftp server disconnect - Prior to this change the quoted stunnel path was passed to perl's file - operators which cannot handle quoted paths. For example: + If a client disconnected and reconnected quickly, before the ftp server + had a chance to respond, the protocol message/ack (ping/pong) sequence + got out of sync, causing messages sent to the old client to be delivered + to the new. A disconnect must now be acknowledged and intermediate + requests thrown out until it is, which ensures that such synchronization + problems can't occur. This problem could affect ftp, pop3, imap and smtp + tests. - $stunnel = "\"/C/Program Files (x86)/stunnel/bin/tstunnel\""; - if(-x $stunnel or -x "$stunnel") - # false even if path exists and is executable + Fixes #12002 + Closes #12049 - Our other test scripts written in perl, unlike this one, use servers.pm - which has a global $stunnel variable with the path stored unquoted and - therefore those scripts don't have this problem. +Viktor Szakats (7 Oct 2023) - Closes https://github.com/curl/curl/pull/11721 +- appveyor: bump mingw-w64 job to gcc 13 (was: 8) -Daniel Stenberg (28 Aug 2023) + This sets gcc 6, 7, 9, 13 in our test mix (was: 6, 7, 8, 9). + Adding a modern gcc version to the tests. -- altsvc: accept and parse IPv6 addresses in response headers + (The gcc 8 job used to take around 50 minutes. The new image with gcc 13 + finished in 32, 35, 34 minutes in the 3 test runs so far.) - Store numerical IPv6 addresses in the alt-svc file with the brackets - present. + It also adds a modern CMake version and OS env to our mingw-w64 builds. - Verify with test 437 and 438 + Closes #12051 - Fixes #11737 - Reported-by: oliverpool on github - Closes #11743 +David Benjamin (6 Oct 2023) -- libtest: use curl_free() to free libcurl allocated data +- openssl: use X509_ALGOR_get0 instead of reaching into X509_ALGOR - In several test programs. These mistakes are not detected or a problem - as long as memdebug.h is included, as that provides the debug wrappers - for all memory functions in the same style libcurl internals do it, - which makes curl_free and free effectively the same call. + While the struct is still public in OpenSSL, there is a (somewhat + inconvenient) accessor. Use it to remain compatible if it becomes opaque + in the future. - Reported-by: Nicholas Nethercote - Closes #11746 + Closes #12038 -Jay Satiro (28 Aug 2023) +Daniel Stenberg (6 Oct 2023) -- disable.d: explain --disable not implemented prior to 7.50.0 +- curl_easy_pause.3: mention it works within callbacks - Option -q/--disable was added in 5.0 but only -q was actually - implemented. Later --disable was implemented in e200034 (precedes - 7.49.0), but incorrectly, and fixed in 6dbc23c (precedes 7.50.0). + Reported-by: Maxim Dzhura + Bug: https://curl.se/mail/lib-2023-10/0010.html + Closes #12046 - Reported-by: pszlazak@users.noreply.github.com +- curl_easy_pause.3: mention h2/h3 buffering - Fixes https://github.com/curl/curl/issues/11710 - Closes #11712 + Asked-by: Maxim Dzhura + Ref: https://curl.se/mail/lib-2023-10/0011.html -Nicholas Nethercote (28 Aug 2023) + Closes #12045 -- hyper: fix ownership problems +Viktor Szakats (6 Oct 2023) - Some of these changes come from comparing `Curl_http` and - `start_CONNECT`, which are similar, and adding things to them that are - present in one and missing in another. +- cmake: re-add missed C89 headers for specific detections - The most important changes: - - In `start_CONNECT`, add a missing `hyper_clientconn_free` call on the - happy path. - - In `start_CONNECT`, add a missing `hyper_request_free` on the error - path. - - In `bodysend`, add a missing `hyper_body_free` on an early-exit path. - - In `bodysend`, remove an unnecessary `hyper_body_free` on a different - error path that would cause a double-free. - https://docs.rs/hyper/latest/hyper/ffi/fn.hyper_request_set_body.html - says of `hyper_request_set_body`: "This takes ownership of the - hyper_body *, you must not use it or free it after setting it on the - request." This is true even if `hyper_request_set_body` returns an - error; I confirmed this by looking at the hyper source code. + We removed C89 `setjmp.h` and `signal.h` detections and excluded them + from the global header list we use when detecting functions [1]. Then + missed to re-add these headers to the specific functions which need + them to be detected [2]. Fix this omission in this patch. - Other changes are minor but make things slightly nicer. + [1] Follow-up to 3795fcde995d96db641ddbcc8a04f9f0f03bef9f #11951 + [2] Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 - Closes #11745 + Closes #12043 -Daniel Stenberg (28 Aug 2023) +Daniel Stenberg (6 Oct 2023) -- multi.h: the 'revents' field of curl_waitfd is supported +- multi: set CURLM_CALL_MULTI_PERFORM after switch to DOING_MORE - Since 6d30f8ebed34e7276 + Since there is nothing to wait for there. Avoids the test 1233 hang + reported in #12033. - Reported-by: Nicolás Ojeda Bär - Ref: #11748 - Closes #11749 + Reported-by: Dan Fandrich + Closes #12042 -Gerome Fournier (27 Aug 2023) +Dan Fandrich (5 Oct 2023) -- tool_paramhlp: improve str2num(): avoid unnecessary call to strlen() +- test1903: actually verify the cookies after the test - Closes #11742 + The test otherwise could do just about anything (except leak memory in + debug mode) and its bad behaviour wouldn't be detected. Now, check the + resulting cookie file to ensure the cookies are still there. -Daniel Stenberg (27 Aug 2023) + Closes #12041 -- docs: mention critical files in same directories as curl saves +- test: add missing s - ... cannot be fully protected. Don't do it. + The tests will otherwise fail if curl has them disabled. - Co-authored-by: Jay Satiro - Reported-by: Harry Sintonen - Fixes #11530 - Closes #11701 +- test1906: set a lower timeout since it's hit on Windows -John Hawthorn (26 Aug 2023) + msys2 builds actually hit the connect timeout in normal operation, so + lower the timeout from 5 minutes to 5 seconds to reduce test time. -- OpenSSL: clear error queue after SSL_shutdown + Ref: #11328 + Closes #12036 - We've seen errors left in the OpenSSL error queue (specifically, - "shutdown while in init") by adding some logging it revealed that the - source was this file. +Daniel Stenberg (5 Oct 2023) - Since we call SSL_read and SSL_shutdown here, but don't check the return - code for an error, we should clear the OpenSSL error queue in case one - was raised. +- RELEASE-NOTES: synced - This didn't affect curl because we call ERR_clear_error before every - write operation (a0dd9df9ab35528eb9eb669e741a5df4b1fb833c), but when - libcurl is used in a process with other OpenSSL users, they may detect - an OpenSSL error pushed by libcurl's SSL_shutdown as if it was their - own. +Jay Satiro (5 Oct 2023) - Co-authored-by: Satana de Sant'Ana +- idn: fix WinIDN null ptr deref on bad host - Closes #11736 + - Return CURLE_URL_MALFORMAT if IDN hostname cannot be converted from + UTF-8 to UTF-16. -Alexander Kanavin (25 Aug 2023) + Prior to this change a failed conversion erroneously returned CURLE_OK + which meant 'decoded' pointer (what would normally point to the + punycode) would not be written to, remain NULL and be dereferenced + causing an access violation. -- tests: update cookie expiry dates to far in the future + Closes https://github.com/curl/curl/pull/11983 - This allows testing Y2038 with system time set to after that, so that - actual Y2038 issues can be exposed, and not masked by expiry errors. +Dan Fandrich (4 Oct 2023) - Fixes #11576 - Closes #11610 +- tests: close the shell used to start sshd -John Bampton (25 Aug 2023) + This shell isn't needed once sshd starts, so use "exec" so it doesn't + stick around. -- misc: fix spelling + Closes #12032 - Closes #11733 +Daniel Stenberg (4 Oct 2023) -Daniel Stenberg (25 Aug 2023) +- base64: also build for curl -- cmdline-opts/page-header: clarify stronger that !opt == URL + Since the tool itself now uses the base64 code using the curlx way, it + needs to build also when the tool needs it. Starting now, the tool build + defines BULDING_CURL to allow lib-side code to use it. - Everything provided on the command line that is not an option (or an - argument to an option) is treated as a URL. + Follow-up to 2e160c9c6525 - Closes #11734 + Closes #12010 -- tests/runner: fix %else handling +Eduard Strehlau (4 Oct 2023) - Getting the show state proper for %else and %endif did not properly work - in nested cases. +- tests: Fix zombie processes left behind by FTP tests. - Follow-up to 3d089c41ea9 + ftpserver.pl correctly cleans up spawned server processes, + but forgets to wait for the shell used to spawn them. + This is barely noticeable during a normal testrun, + but causes process exhaustion and test failure + during a complete torture run of the FTP tests. - Closes #11731 + Fixes #12018 + Closes #12020 -Nicholas Nethercote (25 Aug 2023) +Dan Fandrich (4 Oct 2023) -- docs: Remove mention of #10803 from `KNOWN_BUGS`. +- github/labeler: improve labeler matches - Because the leaks have been fixed. +- test574: add a timeout to the test -- c-hyper: fix another memory leak in `Curl_http`. + This one hangs occasionally, so this will speed up a test run and allow + logs to be seen when it does. - There is a `hyper_clientconn_free` call on the happy path, but not one - on the error path. This commit adds one. + Closes #12025 - Fixes the second memory leak reported by Valgrind in #10803. +- tests: propagate errors in libtests - Fixes #10803 - Closes #11729 + Use the test macros to automatically propagate some errors, and check + and log others while running the tests. This can help in debugging + exactly why a test has failed. -- c-hyper: fix a memory leak in `Curl_http`. +- tests: set --expect100-timeout to improve test reliability - A request created with `hyper_request_new` must be consumed by either - `hyper_clientconn_send` or `hyper_request_free`. + On an overloaded server, the default 1 second timeout can go by without + the test server having a chance to respond with the expected headers, + causing tests to fail. Increase the 1 second timeout to 99 seconds so + this failure mode is no longer a problem on test 1129. Some other tests + already set a high value, but make them consistently 99 seconds so if + something goes wrong the test is stalled for less time. - This is not terrifically clear from the hyper docs -- - `hyper_request_free` is documented only with "Free an HTTP request if - not going to send it on a client" -- but a perusal of the hyper code - confirms it. + Ref: #11328 - This commit adds a `hyper_request_free` to the `error:` path in - `Curl_http` so that the request is consumed when an error occurs after - the request is created but before it is sent. +- CI: ignore the "flaky" and "timing-dependent" test results in CMake - Fixes the first memory leak reported by Valgrind in #10803. + This was already done for automake builds but CMake builds were missed. + Test 1086 actually causes the test harness to crash with: - Closes #11729 + Warning: unable to close filehandle DWRITE properly: Broken pipe at C:/projec + ts/curl/tests/ftpserver.pl line 527 -Daniel Stenberg (25 Aug 2023) + Rather than fix it now, this change leaves test 1086 entirely skipped on + those builds that show this problem. -- RELEASE-NOTES: synced + Follow-up to 589dca761 -John Bampton (25 Aug 2023) + Ref: #11865 -- misc: spellfixes +Viktor Szakats (4 Oct 2023) - Closes #11730 +- cmake: improve OpenLDAP builds -Daniel Stenberg (25 Aug 2023) + - cmake: detect OpenLDAP based on function `ldap_init_fd`. + autotools does this. autotools also publishes this detection result + in `HAVE_LDAP_INIT_FD`. We don't mimic that with CMake as the source + doesn't use this value. (it might need to be remove-listed in + `scripts/cmp-config.pl` for future OpenLDAP test builds.) + This also deletes existing self-declaration method via the + CMake-specific `CURL_USE_OPENLDAP` configuration. -- tests: add support for nested %if conditions + - cmake: define `LDAP_DEPRECATED=1` for OpenLDAP. + Like autotools does. This fixes a long list of these warnings: + ``` + /usr/local/opt/openldap/include/ldap.h:1049:5: warning: 'LDAP_DEPRECATED' i + s not defined, evaluates to 0 [-Wundef] + ``` - Provides more flexiblity to test cases. + - cmake: delete LDAP TODO comment no longer relevant. - Also warn and bail out if there is an '%else' or %endif' without a - preceeding '%if'. + Also: - Ref: #11610 - Closes #11728 + - autotools: replace domain name `dummy` with `0.0.0.0` in LDAP feature + detection functions. -- time-cond.d: mention what happens on a missing file + Ref: #11964 (effort to sync cmake detections with autotools) - Closes #11727 + Closes #12024 -Christian Hesse (24 Aug 2023) +- cmake: fix unity builds for more build combinations -- docs/cmdline-opts: match the current output + By using unique static function/variable names in source files + implementing these interfaces. - The release date has been added in output, reflect that in documentation. + - OpenLDAP combined with any SSH backend. - Closes #11723 + - MultiSSL with mbedTLS, OpenSSL, wolfSSL, SecureTransport. -Daniel Stenberg (24 Aug 2023) + Closes #12027 -- lib: minor comment corrections +Daniel Stenberg (4 Oct 2023) -- docs: rewrite to present tense +- tests: remove leading spaces from some tags - ... instead of using future tense. + The threee tags ``, `` and `` were frequently used + with a leading space that this removes. The reason this habbit is so + widespread in testcases is probably that they have been copy and pasted. - + numerous cleanups and improvements - + stick to "reuse" not "re-use" - + fewer contractions + Hence, fixing them all now might curb this practice from now on. - Closes #11713 + Closes #12028 -- urlapi: setting a blank URL ("") is not an ok URL +Viktor Szakats (4 Oct 2023) - Test it in 1560 - Fixes #11714 - Reported-by: ad0p on github - Closes #11715 +- GHA: bump actions/checkout -- spelling: use 'reuse' not 're-use' in code and elsewhere + Follow-up to 2e0fa50fc16b9339f51e0a7bfff0352829323acb #11964 + Follow-up to c39585d9b7ef3cbfc1380812dec60e7b275b6af3 #12000 - Unify the spelling as both versions were previously used intermittently + Closes #12023 - Closes #11717 +- spelling: fix codespell 2.2.6 typos -Michael Osipov (23 Aug 2023) + Closes #12019 -- system.h: add CURL_OFF_T definitions on HP-UX with HP aCC +Daniel Stenberg (3 Oct 2023) - HP-UX on IA64 provides two modes: 32 and 64 bit while 32 bit being the - default one. Use "long long" in 32 bit mode and just "long" in 64 bit - mode. +- GHA: add workflow to compare configure vs cmake outputs - Closes #11718 + Uses scripts/cmp-config.pl two compare two curl_config.h files, + presumbly generated with configure and cmake. It displays the + differences and filters out a lot of known lines we ignore. -Dan Fandrich (22 Aug 2023) + The script also shows the matches that were *not* used. Possibly + subjects for removal. -- tests: don't call HTTP errors OK in test cases + Closes #11964 - Some HTTP errors codes were accompanied by the text OK, which causes - some cognitive dissonance when reading them. +- appveyor: enable test 571 -- http: close the connection after a late 417 is received + Follow-up from 8a940fd55c175f7 / #12013 - In this situation, only part of the data has been sent before aborting - so the connection is no longer usable. + Closes #12017 - Assisted-by: Jay Satiro - Fixes #11678 - Closes #11679 +Viktor Szakats (3 Oct 2023) -- runtests: slightly increase the longest log file displayed +- build: alpha-sort source files for lib and src - The new limit provides enough space for a 64 KiB data block to be logged - in a trace file, plus a few lines at the start and end for context. This - happens to be the amount of data sent at a time in a PUT request. + Closes #12014 -- tests: add delay command to the HTTP server +- cmake: delete old `HAVE_LDAP_URL_PARSE` logic - This adds a delay after client connect. + Left there by accident after adding proper detection for this. -Daniel Stenberg (22 Aug 2023) + Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006 -- cirrus: install everthing with pkg, avoid pip + Ref: #11964 (effort to sync cmake detections with autotools) - Assisted-by: Sevan Janiyan + Closes #12015 - Closes #11711 +Stefan Eissing (3 Oct 2023) -- curl_url*.3: update function descriptions +- tests: increase lib571 timeout from 3s to 30s - - expand and clarify several descriptions - - avoid using future tense all over + - 3s is too short for our CI, making this test fail occasionally + - test usually experiences no delay run locally, so 30s wont hurt - Closes #11708 + Closes #12013 -- RELEASE-NOTES: synced +Viktor Szakats (3 Oct 2023) -Stefan Eissing (21 Aug 2023) +- cmake: fix unity with Windows Unicode + TrackMemory -- CI/cirrus: disable python install on FreeBSD + Found the root cause of the startup crash in unity builds with Unicode + and TrackMemory enabled at the same time. - - python cryptography package does not build build FreeBSD - - install just mentions "error" - - this gets the build and the main test suite going again + We must make sure that the `memdebug.h` header doesn't apply to + `lib/curl_multibyte.c` (as even noted in a comment there.) In unity + builds all headers apply to all sources, including `curl_multibyte.c`. + This probably resulted in an infinite loop on startup. - Closes #11705 + Exclude this source from unity compilation with TrackMemory enabled, + in both libcurl and curl tool. Enable unity mode for a debug Unicode + CI job to keep it tested. Also delete the earlier workaround that + fully disabled unity for affected builds. -- test2600: fix flakiness on low cpu + Follow-up to d82b080f6374433ce7c98241329189ad2d3976f8 #12005 + Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095 - - refs #11355 where failures to to low cpu resources in CI - are reported - - vastly extend CURLOPT_CONNECTTIMEOUT_MS and max durations - to test cases - - trigger Curl_expire() in test filter to allow re-checks before - the usual 1second interval + Closes #11928 - Closes #11690 +- cmake: disable unity mode with Windows Unicode + TrackMemory -Maksim Sciepanienka (20 Aug 2023) + "TrackMemory" is `ENABLE_DEBUG=ON` (aka `ENABLE_CURLDEBUG=ON`, + aka `-DCURLDEBUG`). -- tool_urlglob: use the correct format specifier for curl_off_t in msnprintf + There is an issue with memory tracking and Unicode when built in "unity" + mode, which results in the curl tool crashing right on startup, even + without any command-line option. Interestingly this doesn't happen under + WINE (at least on the system I tested this on), but consistenly happens + on real Windows machines. Crash is 0xC0000374 heap corruption. Both + shared and static curl executables are affected. - Closes #11698 + This limitation probably won't hit too many people, but it remains + a TODO to find and fix the root cause and drop this workaround. -Daniel Stenberg (20 Aug 2023) + Example builds and runs: + https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/17cptxhtpubd + 7iwj#L313 (static) + https://ci.appveyor.com/project/curlorg/curl/builds/48169111/job/76e1ge758tby + qu9c#L317 (shared) -- test687/688: two more basic --xattr tests + Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 #11095 - Closes #11697 + Ref: #11928 + Closes #12005 -- cmdline-opts/docs: mentioned the negative option part +- cmake: tidy-up `NOT_NEED_LBER_H` detection - ... for --no-alpn and --no-buffer in the same style done for other --no- - options: + Follow-up to 772f0d8edf1c3c2745543f42388ccec5a16ee2c0 #12006 - "Note that this is the negated option name documented." +- appveyor: rewrite batch in PowerShell + CI improvements - Closes #11695 + 1. Rewrite in PowerShell: -Emanuele Torre (19 Aug 2023) + - rewrite MS-DOS batch build script in PowerShell. + - move some bash operations into native PowerShell. + - fixups for PowerShell insisting on failure when a command outputs + something to stderr. + - fix to actually run `curl -V` after every build. + (and exclude ARM64 builds.) + - also say why we skipped `curl -V` if we had to skip. + - fix CMake warnings about unused configuration variables, by adapting + these dynamically for build cases. + - dedupe OpenSSL path into a variable. + - disable `test1451` failing with a warning anyway due to missing python + impacket. (after trying and failing to install impacket) + PowerShell promotes these warnings to errors by PowerShell. We can also + suppress they wholesale if they start causing issues in the future, + like we already to with `autoreconf` and `./configure`. -- tool/var: also error when expansion result starts with NUL + PowerShell is better than MS-DOS batches, so the hope is this makes it + easier to extend and maintain the AppVeyor build logic. POSIX/bash isn't + supported inline by AppVeyor on Windows build machines, but we are okay + to keep it in an external script, so it's also an option. - Expansions whose output starts with NUL were being expanded to the empty - string, and not being recognised as values that contain a NUL byte, and - should error. + 2. CI improvements: - Closes #11694 + - enable tests for a "unity" build job. + - speed-up CI initialization by using shallow clones of the curl repo. + - speed-up CMake MSVC jobs with `TrackFileAccess=false`. + - enable parallelism in `VisualStudioSolution` builds. + - display CMake version before builds. + - always show the CPU in job names. + - tell which jobs are build-only in job names. + - move `TESTING:` value next to `DISABLED_TESTS:` in two jobs. + - add `config.log` (autotools) to dumped logs (need to enable manually). -Daniel Stenberg (19 Aug 2023) + 3. Style: -- tests: add 'large-time' as a testable feature + - use single-quotes in YAML like we do in other CI YAML files. + It also allows to drop quoting characters and lighter to write/read. + (keep double quotes for PowerShell strings needing expansion.) - This allows test cases to require this feature to run and to be used in - %if conditions. + Closes #11999 - Large here means larger than 32 bits. Ie does not suffer from y2038. +- cmake: fix `HAVE_LDAP_SSL`, `HAVE_LDAP_URL_PARSE` on non-Windows - Closes #11696 + - set `HAVE_LDAP_URL_PARSE` if `ldap_url_parse` function exists. + Before this patch we set it based it on the presence of `stricmp`, + which correctly enabled it on e.g. Windows, but was inaccurate for + other platforms. -- tests/Makefile: add check-translatable-options.pl to tarball + - always set `HAVE_LDAP_SSL` if an LDAP backend is detected and + LDAPS is not explicitly disabled. This mimics autotools behaviour. + Previously we set it only for Windows LDAP. After this fix, LDAPS is + correctly enabled in default macOS builds. - Used in test 1544 + - enable LDAP[S] for a CMake macOS CI job. Target OS X 10.9 (Mavericks) + to avoid deprecation warnings for LDAP API. - Follow-up to ae806395abc8c + - always detect `HAVE_LDAP_SSL_H`, even with LDAPS explicitly disabled. + This doesn't make much sense, but let's do it to sync behaviour with + autotools. -- gen.pl: fix a long version generation mistake + - fix benign typo in variable name. - Too excessive escaping made the parsing not find the correct long names - later and instead add "wrong" links. + Ref: #11964 (effort to sync cmake detections with autotools) - Follow-up to 439ff2052e219 + Closes #12006 - Reported-by: Lukas Tribus - Fixes #11688 - Closes #11689 +- autotools: restore `HAVE_IOCTL_*` detections -- lib: move mimepost data from ->req.p.http to ->state + This restores `CURL_CHECK_FUNC_IOCTL` detection. I deleted it in + 4d73854462f30948acab12984b611e9e33ee41e6 and + c3456652a0c72d1845d08df9769667db7e159949 (2022-08), because the + `HAVE_IOCTL` result it generated was unused in the source. But, + I did miss the fact that this had two dependent checks: + `CURL_CHECK_FUNC_IOCTL_FIONBIO`, + `CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR` that we do actually need: + `HAVE_IOCTL_FIONBIO`, `HAVE_IOCTL_SIOCGIFADDR`. - When the legacy CURLOPT_HTTPPOST option is used, it gets converted into - the modem mimpost struct at first use. This data is (now) kept for the - entire transfer and not only per single HTTP request. This re-enables - rewind in the beginning of the second request instead of in end of the - first, as brought by 1b39731. + Regression from 4d73854462f30948acab12984b611e9e33ee41e6 - The request struct is per-request data only. + Ref: #11964 (effort to sync cmake detections with autotools) - Extend test 650 to verify. + Closes #12008 - Fixes #11680 - Reported-by: yushicheng7788 on github - Closes #11682 +Daniel Stenberg (2 Oct 2023) -Patrick Monnerat (17 Aug 2023) +- RELEASE-PROCEDURE.md: updated coming release dates -- os400: do not check translatable options at build time +- RELEASE-NOTES: synced - Now that there is a test for this, the build time check is not needed - anymore. +Viktor Szakats (1 Oct 2023) - Closes #11650 +- cmake: pre-cache `HAVE_POLL_FINE` on Windows -- test1554: check translatable string options in OS400 wrapper + Windows doesn't support `poll()`, so we can safely skip checking for + fine poll. - This test runs a perl script that checks all string options are properly - translated by the OS400 character code conversion wrapper. It also - verifies these options are listed in alphanumeric order in the wrapper - switch statement. + Closes #12003 - Closes #11650 +- gha: bump actions to latest versions -Daniel Stenberg (17 Aug 2023) + - actions@checkout@v4 (from v3 and v2) -- unit3200: skip testing if function is not present + - fsfe/reuse-action@v2 (from v1) - Fake a successful run since we have no easy mechanism to skip this test - for this advanced condition. + Closes #12000 -- unit2600: fix build warning if built without verbose messages +Stefan Eissing (30 Sep 2023) -- test1608: make it build and get skipped without shuffle DNS support +- h2: testcase and fix for pausing h2 streams -- lib: --disable-bindlocal builds curl without local binding support + - refs #11982 where it was noted that paused transfers may + close successfully without delivering the complete data + - made sample poc into tests/http/client/h2-pausing.c and + added test_02_27 to reproduce -- test1304: build and skip without netrc support + Closes #11989 + Fixes #11982 + Reported-by: Harry Sintonen -- lib: build fixups when built with most things disabled +Viktor Szakats (30 Sep 2023) - Closes #11687 +- cmake: validate `CURL_DEFAULT_SSL_BACKEND` config value -- workflows/macos.yml: disable zstd and alt-svc in the http-only build + Before this patch CMake builds accepted any value and it was used at + runtime as-is. This patch make sure that the selected default backend + is also enabled in the build. It also enforces a full lowercase value. - Closes #11683 + This improves reproducibility and brings CMake in sync with autotools + which already worked like described above. -Stefan Eissing (17 Aug 2023) + Follow-up to 26c7feb8b9d51a57fab3325571b4bbfa03b11af0 #11774 -- bearssl: handshake fix, provide proper get_select_socks() implementation + Closes #11998 - - bring bearssl handshake times down from +200ms down to other TLS backends - - vtls: improve generic get_select_socks() implementation - - tests: provide Apache with a suitable ssl session cache +- autotools: adjust `CURL_CA_PATH` value to CMake - Closes #11675 + autotools was using the same value as CMake, but with an ending + slash. Delete the ending slash to match configurations. -- tests: TLS session sharing test + Ref: #11964 (effort to sync cmake detections with autotools) - - test TLS session sharing with special test client - - expect failure with wolfSSL - - disable flaky wolfSSL test_02_07b + Closes #11997 - Closes #11675 +- cmake: detect `sys/wait.h` and `netinet/udp.h` -Daniel Stenberg (17 Aug 2023) + Ref: #11964 (effort to sync cmake detections with autotools) -- CURLOPT_*TIMEOUT*: extend and clarify + Closes #11996 - Closes #11686 +Daniel Stenberg (30 Sep 2023) -- urlapi: return CURLUE_BAD_HOSTNAME if puny2idn encoding fails +- lib: provide and use Curl_hexencode - And document it. Only return out of memory when it actually is a memory - problem. + Generates a lower case ASCII hex output from a binary input. - Pointed-out-by: Jacob Mealey - Closes #11674 + Closes #11990 -Mathew Benson (17 Aug 2023) +- configure: check for the capath by default -- cmake: add GnuTLS option + ... if the chosen TLS backend supports it: OpenSSL, GnuTLS, mbedTLS or wolfSS + L - - Option to use GNUTLS was missing. Hence was not able to use GNUTLS - with ngtcp2 for http3. + cmake: synced - Closes #11685 + Assisted-by: Viktor Szakats + Closes #11987 -Daniel Stenberg (16 Aug 2023) +- wolfssl: ignore errors in CA path -- RELEASE-NOTES: synced + The default wolfSSL_CTX_load_verify_locations() function is quite picky + with the certificates it loads and will for example return error if just + one of the certs has expired. -- http: remove the p_pragma struct field + With the *_ex() function and its WOLFSSL_LOAD_FLAG_IGNORE_ERR flag, it + behaves more similar to what OpenSSL does by default. - unused since 40e8b4e52 (2008) + Even the set of default certs on my Debian unstable has several expired + ones. - Closes #11681 + Assisted-by: Juliusz Sosinowicz + Assisted-by: Michael Osipov -Jay Satiro (16 Aug 2023) + Closes #11987 -- CURLINFO_CERTINFO.3: better explain curl_certinfo struct +- create-dirs.d: clarify it also uses --output-dirs - Closes https://github.com/curl/curl/pull/11666 + Reported-by: Robert Simpson + Fixes #11991 + Closes #11995 -- CURLINFO_TLS_SSL_PTR.3: clarify a recommendation +Viktor Szakats (30 Sep 2023) - - Remove the out-of-date SSL backend list supported by - CURLOPT_SSL_CTX_FUNCTION. +- appveyor: fix yamlint issues, indent - It makes more sense to just refer to that document instead of having - a separate list that has to be kept in sync. + Also: + - use double quotes in all batch if statements. - Closes https://github.com/curl/curl/pull/11665 + Closes #11994 -- write-out.d: clarify %{time_starttransfer} +- cmake: detect `HAVE_CLOCK_GETTIME_MONOTONIC_RAW` - sync it up with CURLINFO_STARTTRANSFER_TIME_T + Based on existing autotools logic. -Daniel Stenberg (15 Aug 2023) + Ref: #11964 (effort to sync cmake detections with autotools) -- transfer: don't set TIMER_STARTTRANSFER on first send + Closes #11981 - The time stamp is for measuring the first *received* byte +- cmake: detect `HAVE_GETADDRINFO_THREADSAFE` - Fixes #11669 - Reported-by: JazJas on github - Closes #11670 + Based on existing autotools logic. -trrui-huawei (15 Aug 2023) + autotools checks for old versions of the allowlisted target OSes and + disables this feature when seeing them. In CMake we assume we're running + on newer systems and enable regardless of OS version. -- quiche: enable quiche to handle timeout events + autotools always runs all 3 probes for non-fast-tracked systems and + enables this feature if any one of them was successful. To save + configuration time, CMake stops at the first successful check. - In parallel with ngtcp2, quiche also offers the `quiche_conn_on_timeout` - interface for the application to invoke upon timer - expiration. Therefore, invoking the `on_timeout` function of the - Connection is crucial to ensure seamless functionality of quiche with - timeout events. + OpenBSD is not fast-tracked and then gets blocklisted as a generic BSD + system. I haven't double-checked if this is correct, but looks odd. - Closes #11654 + Ref: #11964 (effort to sync cmake detections with autotools) -- quiche: adjust quiche `QUIC_IDLE_TIMEOUT` to 60s + Closes #11979 - Set the `QUIC_IDLE_TIMEOUT` parameter to match ngtcp2 for consistency. +- cmake: fix `HAVE_WRITABLE_ARGV` detection -Daniel Stenberg (15 Aug 2023) + Move detection before the creation of detection results in + `curl_config.h`. -- KNOWN_BUGS: LDAPS requests to ActiveDirectory server hang + Ref: #11964 (effort to sync cmake detections with autotools) - Closes #9580 + Closes #11978 -- imap: add a check for failing strdup() +- appveyor: minor improvements -- imap: remove the only sscanf() call in the IMAP code + - run `curl -V` after builds to see if they run and with what features. + Except for one job where a CRT DLL is missing. And ARM64 which should + fail, but is silently not launched instead. - Avoids the use of a stack buffer. + - copy libcurl DLL next to curl tool and tests binaries in shared mode. + This makes it possible to run the tests. (We don't run tests after + these builds yet.) - Closes #11673 + - list the DLLs and EXEs present after the builds. -- imap: use a dynbuf in imap_atom + - add `DEBUG` variable for CMake builds to allow disabling it, for + testing non-debug builds. (currently enabled for all) - Avoid a calculation + malloc. Build the output in a dynbuf. + - add commented lines that dump CMake configuration logs for debugging + build/auto-detection issues. - Closes #11672 + - add gcc version to jobs where missing. -Marin Hannache (14 Aug 2023) + - switch a job to the native MSYS2 mingw-w64 toolchain. This adds gcc 9 + to the build mix. -- http: do not require a user name when using CURLAUTH_NEGOTIATE + - make `SHARED=OFF` and `OPENSSL=OFF` defaults global. - In order to get Negotiate (SPNEGO) authentication to work in HTTP you - used to be required to provide a (fake) user name (this concerned both - curl and the lib) because the code wrongly only considered - authentication if there was a user name provided, as in: + - delete a duplicate backslash. - curl -u : --negotiate https://example.com/ + Closes #11976 - This commit leverages the `struct auth` want member to figure out if the - user enabled CURLAUTH_NEGOTIATE, effectively removing the requirement of - setting a user name both in curl and the lib. +- configure: replace adhoc domain with `localhost` in tests - Signed-off-by: Marin Hannache - Reported-by: Enrico Scholz - Fixes https://sourceforge.net/p/curl/bugs/440/ - Fixes #1161 - Closes #9047 + Reviewed-by: Daniel Stenberg + Closes #11988 -Viktor Szakats (13 Aug 2023) +- tidy-up: use more example domains -- build: streamline non-UWP wincrypt detections + Also make use of the example TLD: + https://en.wikipedia.org/wiki/.example - - with CMake, use the variable `WINDOWS_STORE` to detect an UWP build - and disable our non-UWP-compatible use the Windows crypto API. This - allows to drop two dynamic feature checks. + Reviewed-by: Daniel Stenberg + Closes #11992 - `WINDOWS_STORE` is true when invoking CMake with - `CMAKE_SYSTEM_NAME` == `WindowsStore`. Introduced in CMake v3.1. +Dan Fandrich (29 Sep 2023) - Ref: https://cmake.org/cmake/help/latest/variable/WINDOWS_STORE.html +- runtests: display the test status if tests appear hung - - with autotools, drop the separate feature check for `wincrypt.h`. On - one hand this header has been present for long (even Borland C 5.5 had - it from year 2000), on the other we used the check result solely to - enable another check for certain crypto functions. This fails anyway - with the header not present. We save one dynamic feature check at the - configure stage. + It sometimes happens that a test hangs during a test run and never + returns. The test harness will wait indefinitely for the results and on + CI servers the CI job will eventually be killed after an hour or two. + At the end of a test run, if results haven't come in within a couple of + minutes, display the status of all test runners and what tests they're + running to help in debugging the problem. - Reviewed-by: Marcel Raad - Closes #11657 + This feature is really only kick in with parallel testing enabled, which + is fine because without parallel testing it's usually easy to tell what + test has hung. -Nicholas Nethercote (13 Aug 2023) + Closes #11980 -- docs/HYPER.md: update hyper build instructions +- github/labeler: remove workaround for labeler - Nightly Rust and `-Z unstable-options` are not needed. + This was added due to what seemed to be a bug regarding the sync-labels: + config option, but it looks like it wasn't necessary. - The instructions here now match the hyper docs exactly: - https://github.com/hyperium/hyper/commit/bd7928f3dd6a8461f0f0fdf7ee0fd95c2f15 - 6f88 + Follow-up to b2b0534e7 - Closes #11662 +Viktor Szakats (29 Sep 2023) -Daniel Stenberg (13 Aug 2023) +- docs: upgrade an URL to HTTPS in `BINDINGS.md` [ci skip] -- RELEASE-NOTES: synced +Daniel Stenberg (29 Sep 2023) -- urlapi: CURLU_PUNY2IDN - convert from punycode to IDN name +- docs: replace made up domains with example.com - Asssisted-by: Jay Satiro - Closes #11655 + in FAQ and MANUAL.md -- spellcheck: adapt to backslashed minuses + - example.com was made for this purpose. - As the curl.1 has more backslashed minus, the cleanup sed lines xneed to - adapt. + - reduces the risk that one of those domains suddenly start hosting + something nasty and we provide links to them - Adjusted some docs slighly. + Closes #11986 - Follow-up to 439ff2052e +Michael Osipov (29 Sep 2023) - Closes #11663 +- acinclude.m4: Document proper system truststore on FreeBSD -- gen: escape more minus + The default system truststore on FreeBSD has been /etc/ssl/certs for many + years now. It is managed canonically through certctl(8) and contains hashed + symlinks for OpenSSL and other TLS providers. + The previous ones require security/ca_root_nss which might not be installed o + r + will not contain any custom CA certificates. - Detected since it was still hard to search for option names using dashes - in the middle in the man page. + Closes #11985 - Closes #11660 +Daniel Stenberg (29 Sep 2023) -- cookie-jar.d: enphasize that this option is ONLY writing cookies +- FAQ: How do I upgrade curl.exe in Windows? - Reported-by: Dan Jacobson - Tweaked-by: Jay Satiro - Ref: #11642 - Closes #11661 + This is a growing question, better answer it here to get somewhere to + point users to. -Nicholas Nethercote (11 Aug 2023) + Closes #11984 -- docs/HYPER.md: document a workaround for a link error +Viktor Szakats (28 Sep 2023) - Closes #11653 +- cmake: pre-cache `HAVE_BASENAME` for mingw-w64 and MSVC -Jay Satiro (11 Aug 2023) + `basename` is present in mingw-w64, missing from MSVC. Pre-cache + accordingly to make configure faster. -- schannel: verify hostname independent of verify cert + Notice that `basename` has a bug so we later disable it even with + mingw-w64: + https://github.com/curl/curl/blob/781242ffa44a9f9b95b6da5ac5a1bf6372ec6257/li + b/curl_setup.h#L820-L825 - Prior to this change when CURLOPT_SSL_VERIFYPEER (verifypeer) was off - and CURLOPT_SSL_VERIFYHOST (verifyhost) was on we did not verify the - hostname in schannel code. + Closes #11974 - This fixes KNOWN_BUG 2.8 "Schannel disable CURLOPT_SSL_VERIFYPEER and - verify hostname". We discussed a fix several years ago in #3285 but it - went stale. +Daniel Stenberg (28 Sep 2023) - Assisted-by: Daniel Stenberg +- cmake: add missing checks - Bug: https://curl.haxx.se/mail/lib-2018-10/0113.html - Reported-by: Martin Galvan + - check for arc4random. To make rand.c use it accordingly. + - check for fcntl + - fix fseek detection + - add SIZEOF_CURL_SOCKET_T + - fix USE_UNIX_SOCKETS + - define HAVE_SNPRINTF to 1 + - check for fnmatch + - check for sched_yield + - remove HAVE_GETPPID duplicate from curl_config.h + - add HAVE_SENDMSG - Ref: https://github.com/curl/curl/pull/3285 + Ref: #11964 - Fixes https://github.com/curl/curl/issues/3284 - Closes https://github.com/curl/curl/pull/10056 + Co-authored-by: Viktor Szakats + Closes #11973 -Daniel Stenberg (11 Aug 2023) +- configure: remove unused checks -- curl_quiche: remove superfluous NULL check + - for sys/uio.h + - for fork + - for connect - 'stream' is always non-NULL at this point + Ref: #11964 - Pointed out by Coverity + Closes #11973 - Closes #11656 +- lib: remove TIME_WITH_SYS_TIME -- curl/urlapi.h: tiny typo + It is not used in any code anywhere. -- github/labeler: make HYPER.md set Hyper and not TLS + Ref: #11964 + Closes #11975 -- docs/cmdline-opts/gen.pl: hide "added in" before 7.50.0 +- docs: update curl man page references - 7.50.0 shipped on Jul 21 2016, over seven years ago. We no longer need - to specify version changes for earlier releases in the generated output. + Detected by the manpage-syntax update - This ups the limit from the previous 7.30.0 (Apr 12 2013) + Closes #11963 - This hides roughly 35 "added in" mentions. +- manpage-syntax: verify curl man page references - Closes #11651 + 1. References to curl symbols are now checked that they indeed exist as + man pages. This for \f references as well as the names referenced in the + SEE ALSO section. -Jay Satiro (10 Aug 2023) + Allowlist curl.1 since it is not always built in builds -- bug_report: require reporters to specify curl and os versions + 2. References to curl symbols that lack section now causes warning, since tha + t + will prevent them from getting linked properly - - Change curl version and os sections from single-line input to - multi-line textarea. + 3. Check for "bare" references to curl functions and warn, they should be + references - - Require curl version and os sections to be filled out before report - can be submitted. + Closes #11963 - Closes https://github.com/curl/curl/pull/11636 +- cmake: add check for suseconds_t -Daniel Stenberg (9 Aug 2023) + And fix the HAVE_LONGLONG define -- gen.pl: replace all single quotes with aq + Ref: #11964 + Closes #11977 - - this prevents man from using a unicode sequence for them - - which then allows search to work properly +Viktor Szakats (28 Sep 2023) - Closes #11645 +- tidy-up: whitespace fixes -Viktor Szakats (9 Aug 2023) + Closes #11972 -- cmake: fix to use variable for the curl namespace +- cmake: detect TLS-SRP in OpenSSL/wolfSSL/GnuTLS - Replace (wrong) literal with a variable to specify the curl - namespace. + With new option `CURL_DISABLE_SRP=ON` to force-disable it. + To match existing option and detection logic in autotools. - Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30 #11505 + Also: + - fix detecting GnuTLS. + We assume `nettle` as a GnuTLS dependency. + - add CMake GnuTLS CI job. + - bump AppVeyor CMake OpenSSL MSVC job to OpenSSL 1.1.1 (from 1.0.2) + TLS-SRP fails to detect with 1.0.2 due to an OpenSSL header bug. + - fix compiler warning when building with GnuTLS and disabled TLS-SRP. + - fix comment typos, whitespace. - Reported-by: balikalina on Github - Fixes https://github.com/curl/curl/commit/1199308dbc902c52be67fc805c72dd25825 - 20d30#r123923098 - Closes #11629 + Ref: #11964 -- cmake: allow `SHARE_LIB_OBJECT=ON` on all platforms + Closes #11967 - 2ebc74c36a19a1700af394c16855ce144d9878e3 #11546 introduced sharing - libcurl objects for shared and static targets. +- tool: use our own stderr variable - The above automatically enabled for Windows builds, with an option to - disable with `SHARE_LIB_OBJECT=OFF`. + Earlier this year we changed our own stderr variable to use the standard + name `stderr` (to avoid bugs where someone is using `stderr` instead of + the curl-tool specific variable). This solution needed to override the + standard `stderr` symbol via the preprocessor. This in turn didn't play + well with unity builds and caused curl tool to crash or stay silent due + to an uninitialized stderr. This was a hard to find issue, fixed by + manually breaking out one file from the unity sources. - This patch extend this feature to all platforms as a manual option. - You can enable it by setting `SHARE_LIB_OBJECT=ON`. Then shared objects - are built in PIC mode, meaning the static lib will also have PIC code. + To avoid two these two tricks, this patch implements a different + solution: Restore using our own local variable for our stderr output and + leave `stderr` as-is. To avoid using `stderr` by mistake, add a + `checksrc` rule (based on logic we already used in lib for `strerror`) + that detects any `stderr` use in `src` and points to using our own + variable instead: `tool_stderr`. - [EXPERIMENTAL] + Follow-up to 06133d3e9b8aeb9e9ca0b3370c246bdfbfc8619e + Follow-up to 2f17a9b654121dd1ecf4fc043c6d08a9da3522db - Closes #11627 + Closes #11958 -- cmake: assume `wldap32` availability on Windows +Loïc Yhuel (28 Sep 2023) - This system library first shipped with Windows ME, available as an extra - install for some older releases (according to [1]). The import library - was present already in old MinGW 3.4.2 (year 2007). +- connect: only start the happy eyeballs timer when needed - Drop the feature check and its associated `HAVE_WLDAP32` variable. + The timeout is only used when there is a second address family, for the + delayed eyeballer. - To manually disable `wldap32`, you can use the `USE_WIN32_LDAP=OFF` - CMake option, like before. + Closes #11939 - [1]: https://dlcdn.apache.org/httpd/binaries/win32/LEGACY.html +Daniel Stenberg (28 Sep 2023) - Reviewed-by: Jay Satiro - Closes #11624 +- tool_operate: free 'gateway' correctly -Daniel Stenberg (9 Aug 2023) + Pointed out by Coverity. The fix in 93885cf3a8d4e was incomplete. -- page-header: move up a URL paragraph from GLOBBING to URL + Also removed repeated wording in IPFS related error messages. -- variable.d: output the function names table style + Closes #11969 - Also correct the url function name in the header +Stefan Eissing (28 Sep 2023) - Closes #11641 +- lib: move handling of `data->req.writer_stack` into Curl_client_write() -- haproxy-clientip.d: remove backticks + - move definitions from content_encoding.h to sendf.h + - move create/cleanup/add code into sendf.c + - installed content_encoding writers will always be called + on Curl_client_write(CLIENTWRITE_BODY) + - Curl_client_cleanup() frees writers and tempbuffers from + paused transfers, irregardless of protocol - This is not markdown + Closes #11908 - Follow-up to 0a75964d0d94a4 +Loïc Yhuel (28 Sep 2023) - Closes #11639 +- multi: round the timeout up to prevent early wakeups -- RELEASE-NOTES: synced + Curl_timediff rounds down to the millisecond, so curl_multi_perform can + be called too early, then we get a timeout of 0 and call it again. -- gen.pl: escape all dashes (ascii minus) to avoid unicode hyphens + The code already handled the case of timeouts which expired less than + 1ms in the future. By rounding up, we make sure we will never ask the + platform to wake up too early. - Reported-by: FC Stegerman - Fixes #11635 - Closes #11637 + Closes #11938 -- cmdline-opts/page-header: reorder, clean up +Daniel Stenberg (28 Sep 2023) - - removed some unnecessary blurb to focus - - moved up the more important URL details - - put "globbing" into its own subtitle and moved down a little - - mention the online man page in the version section +- RELEASE-NOTES: spell out that IPFS is via gateway - Closes #11638 +- RELEASE-NOTES: synced -- c-hyper: adjust the hyper to curlcode conversion +- tool_operate: avoid strlen() -1 on zero length content from file - Closes #11621 + Follow-up to 65b563a96a226649ba12cb1e -- test2306: make it use a persistent connection + Closes #11959 - + enable verbose already from the start +- tool_operate: fix memory mixups - Closes #11621 + Switch to plain getenv() from curl_getenv() to avoid the allocation and + having to keep track of which free() or curl_free() that need to be + used. -eppesuig (8 Aug 2023) + Coverity found issues and a memory leak. -- list-only.d: mention SFTP as supported protocol + Follow-up to 65b563a96a226649ba12cb1e - Closes #11628 + Closes #11959 -Daniel Stenberg (8 Aug 2023) +Viktor Szakats (27 Sep 2023) -- request.d: use .TP for protocol "labels" +- curl-functions.m4: fixup recent bad edits - To render the section nicer in man page. + Follow-up to 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 - Closes #11630 + Closes #11966 -- cf-haproxy: make CURLOPT_HAPROXY_CLIENT_IP set the *source* IP +Daniel Stenberg (27 Sep 2023) - ... as documented. +- curl-functions.m4: fix include line - Update test 3201 and 3202 accordingly. + This made the getaddrinfo detection fail, but we did not spot it in the + CI because it graciously falled back to using legacy functions instead! - Reported-by: Markus Sommer - Fixes #11619 - Closes #11626 + Follow-up to 96c29900bcec (#11940) -- page-footer: QLOGDIR works with ngtcp2 and quiche + Closes #11965 - It previously said "both" backends which is confusing as we currently - have three... +- inet_ntop: add typecast to silence Coverity - Closes #11631 + CID 1024653: Integer handling issues (SIGN_EXTENSION) -Stefan Eissing (8 Aug 2023) + Suspicious implicit sign extension: "src[i]" with type "unsigned char + const" (8 bits, unsigned) is promoted in "src[i] << (1 - i % 2 << 3)" to + type "int" (32 bits, signed), then sign-extended to type "unsigned long" + (64 bits, unsigned). If "src[i] << (1 - i % 2 << 3)" is greater than + 0x7FFFFFFF, the upper bits of the result will all be 1. -- http3: quiche, handshake optimization, trace cleanup + 111 words[i/2] |= (src[i] << ((1 - (i % 2)) << 3)); - - load x509 store after clienthello - - cleanup of tracing + The value will not be greater than 0x7FFFFFFF so this still cannot + happen. - Closes #11618 + Also, switch to ints here instead of longs. The values stored are 16 bit + so at least no need to use 64 bit variables. Also, longs are 32 bit on + some platforms so this logic still needs to work with 32 bits. -Daniel Stenberg (8 Aug 2023) + Closes #11960 -- ngtcp2: remove dead code +- docs: adapt SEE ALSO sections to new requirements - 'result' is always zero (CURLE_OK) at this point + To please manpage-syntax.pl used by test 1173 - Detected by Coverity + Closes #11957 - Closes #11622 +- manpage-syntax.pl: verify SEE ALSO syntax -Viktor Szakats (8 Aug 2023) + - Enforce a single reference per .BR line + - Skip the quotes around the section number for example (3) + - Insist on trailing commas on all lines except the last + - Error on comma on the last SEE ALSO entry -- openssl: auto-detect `SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED` + - List the entries alpha-sorted, not enforced just recommended - OpenSSL 1.1.1 defines this macro, but no ealier version, or any of the - popular forks (yet). Use the macro itself to detect its presence, - replacing the hard-wired fork-specific conditions. + Closes #11957 - This way the feature will enable automatically when forks implement it, - while also shorter and possibly requiring less future maintenance. +- connect: expire the timeout when trying next - Follow-up to 94241a9e78397a2aaf89a213e6ada61e7de7ee02 #6721 + ... so that it gets called again immediately and can continue trying + addresses to connect to. Otherwise it might unnecessarily wait for a + while there. - Reviewed-by: Jay Satiro - Closes #11617 + Fixes #11920 + Reported-by: Loïc Yhuel + Closes #11935 -- openssl: use `SSL_CTX_set_ciphersuites` with LibreSSL 3.4.1 +- http: remove wrong comment for http_should_fail - LibreSSL 3.4.1 (2021-10-14) added support for - `SSL_CTX_set_ciphersuites`. + Reported-by: Christian Schmitz + Ref: #11936 + Closes #11941 - Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.4.1-relnotes.txt +Dan Fandrich (26 Sep 2023) - Reviewed-by: Jay Satiro - Closes #11616 +- tool_setopt: remove unused function tool_setopt_flags -- openssl: use `SSL_CTX_set_keylog_callback` with LibreSSL 3.5.0 + This function is identical to tool_setopt_bitmask except that it treats + the argument as unsigned. - LibreSSL 3.5.0 (2022-02-24) added support for - `SSL_CTX_set_keylog_callback`. + Closes #11943 - Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.5.0-relnotes.txt +Viktor Szakats (26 Sep 2023) - Reviewed-by: Jay Satiro - Closes #11615 +- cmake: add feature checks for `memrchr` and `getifaddrs` -- cmake: drop `HAVE_LIBWINMM` and `HAVE_LIBWS2_32` feature checks + - `HAVE_MEMRCHR` for `memrchr`. + - `HAVE_GETIFADDRS` for `getifaddrs`. + This was present in `lib/curl_config.h.cmake` but missed the detection + logic. - - `HAVE_LIBWINMM` was detected but unused. The `winmm` system library is - also not used by curl, but it is by its optional dependency `librtmp`. - Change the logic to always add `winmm` when `USE_LIBRTMP` is set. This - library has been available since the early days of Windows. + To match existing autotools feature checks. - - `HAVE_LIBWS2_32` detected `ws2_32` lib on Windows. This lib is present - since Windows 95 OSR2 (AFAIR). Winsock1 already wasn't supported and - other existing logic already assumed this lib being present, so delete - the check and replace the detection variable with `WIN32` and always - add `ws2_32` on Windows. + Closes #11954 - Closes #11612 +- cmake: move global headers to specific checks -Daniel Gustafsson (8 Aug 2023) + Before this patch we added standard headers unconditionally to the + global list of headers used for feature checks. This is unnecessary + and also doesn't help CMake 'Generate' performance. This patch moves + these headers to each feature check where they are actually needed. + Stop using `stddef.h`, as it seems unnecessary. -- crypto: ensure crypto initialization works + I've used autotools' `m4/curl-functions.m4` to figure out these + dependencies. - Make sure that context initialization during hash setup works to avoid - going forward with the risk of a null pointer dereference. + Also delete checking for the C89 standard header `time.h`, that I + missed in the earlier commit. - Reported-by: Philippe Antoine on HackerOne - Assisted-by: Jay Satiro - Assisted-by: Daniel Stenberg + Ref: 96c29900bcec32dd6bc8e9857c8871ff4b8b8ed9 #11940 - Closes #11614 + Closes #11951 -Viktor Szakats (7 Aug 2023) +- src/mkhelp: make generated code pass `checksrc` -- openssl: switch to modern init for LibreSSL 2.7.0+ + Closes #11955 - LibreSSL 2.7.0 (2018-03-21) introduced automatic initialization, - `OPENSSL_init_ssl()` function and deprecated the old, manual init - method, as seen in OpenSSL 1.1.0. Switch to the modern method when - available. +- tests: show which curl tool `runtests.pl` is using - Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.0-relnotes.txt + To help debugging when there is issue finding or running it. - Reviewed-by: Daniel Stenberg - Closes #11611 - -Daniel Stenberg (7 Aug 2023) - -- gskit: remove - - We remove support for building curl with gskit. - - - This is a niche TLS library, only running on some IBM systems - - no regular curl contributors use this backend - - no CI builds use or verify this backend - - gskit, or the curl adaption for it, lacks many modern TLS features - making it an inferior solution - - build breakages in this code take weeks or more to get detected - - fixing gskit code is mostly done "flying blind" - - This removal has been advertized in DEPRECATED in Jan 2, 2023 and it has - been mentioned on the curl-library mailing list. + Closes #11953 - It could be brought back, this is not a ban. Given proper effort and - will, gskit support is welcome back into the curl TLS backend family. +- CI/azure: make `MAKEFLAGS` global to parallelize all jobs - Closes #11460 + https://dev.azure.com/daniel0244/curl/_build/results?buildId=17528 (before) + https://dev.azure.com/daniel0244/curl/_build/results?buildId=17545 (after, wi + th -j3) -- RELEASE-NOTES: synced + Closes #11952 -Dan Fandrich (7 Aug 2023) +- CI/azure: migrate old mingw MSYS1 jobs to MSYS2 -- THANKS-filter: add a name typo + Also delete an accidental variable reference. -Stefan Eissing (7 Aug 2023) + Follow-up to 38029101e2d78ba125732b3bab6ec267b80a0e72 -- http3/ngtcp2: shorten handshake, trace cleanup + Closes #11945 - - shorten handshake timing by delayed x509 store load (OpenSSL) - as we do for HTTP/2 - - cleanup of trace output, align with HTTP/2 output +Daniel Stenberg (26 Sep 2023) - Closes #11609 +- docs: add see also curl_multi_get_handles to some man pages -Daniel Stenberg (7 Aug 2023) + Assisted-by: Jay Satiro -- headers: accept leading whitespaces on first response header + Closes #11942 - This is a bad header fold but since the popular browsers accept this - violation, so does curl now. Unless built with hyper. +Viktor Szakats (26 Sep 2023) - Add test 1473 to verify and adjust test 2306. +- cmake: assume `_fseeki64` and no `fseeko` on Windows - Reported-by: junsik on github - Fixes #11605 - Closes #11607 + `_fseeki64` is present in mingw-w64 1.0 (2011-09-26) headers, and + at least Watcom C 1.9 (2010) headers and MSVS 2008 [1]. -- include/curl/mprintf.h: add __attribute__ for the prototypes + `fseeko` is not present in any of these. - - if gcc or clang is used - - if __STDC_VERSION__ >= 199901L, which means greater than C90 - - if not using mingw - - if CURL_NO_FMT_CHECKS is not defined + (mingw-w64 1.0 also offers `fseeko64`.) - Closes #11589 + [1] https://github.com/curl/curl/pull/11944#issuecomment-1734995004 -- tests: fix bad printf format flags in test code + Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 -- tests: fix header scan tools for attribute edits in mprintf.h + Closes #11950 -- cf-socket: log successful interface bind +- build: delete checks for C89 standard headers - When the setsockopt SO_BINDTODEVICE operation succeeds, output that in - the verbose output. + Delete checks and guards for standard C89 headers and assume these are + available: `stdio.h`, `string.h`, `time.h`, `setjmp.h`, `stdlib.h`, + `stddef.h`, `signal.h`. - Ref: #11599 - Closes #11608 + Some of these we already used unconditionally, some others we only used + for feature checks. -- CURLOPT_SSL_VERIFYPEER.3: mention it does not load CA certs when disabled + Follow-up to 9c7165e96a3a9a2d0b7059c87c699b5ca8cdae93 #11918 (for `stdio.h` i + n CMake) - Ref: #11457 - Closes #11606 + Closes #11940 -- CURLOPT_SSL_VERIFYPEER.3: add two more see also options +Stefan Eissing (26 Sep 2023) - CURLINFO_CAINFO and CURLINFO_CAPATH +- multiif.h: remove Curl_multi_dump declaration - Closes #11603 + Follow-up to d850eea2 which removed the Curl_multi_dump definition. -- KNOWN_BUGS: aws-sigv4 does not behave well with AWS VPC Lattice + Closes https://github.com/curl/curl/pull/11946 - Closes #11007 +Jay Satiro (26 Sep 2023) -Graham Campbell (6 Aug 2023) +- config-win32: define HAVE__FSEEKI64 -- CI: use openssl 3.0.10+quic, nghttp3 0.14.0, ngtcp2 0.18.0 + Follow-up to 9c7165e9 which added an fseeko wrapper to the lib that + calls _fseeki64 if it is available. - Closes #11585 + Closes https://github.com/curl/curl/pull/11944 -Daniel Stenberg (6 Aug 2023) +- docs: explain how PINNEDPUBLICKEY is independent of VERIFYPEER -- TODO: add *5* entries for aws-sigv4 + - Explain that peer verification via CURLOPT_PINNEDPUBLICKEY takes place + even if peer verification via CURLOPT_SSL_VERIFYPEER is turned off. - Closes #7559 - Closes #8107 - Closes #8810 - Closes #9717 - Closes #10129 + The behavior is verified by test2048. -- TODO: LDAP Certificate-Based Authentication + Bug: https://github.com/curl/curl/issues/2935#issuecomment-418371872 + Reported-by: claudiusaiz@users.noreply.github.com - Closes #9641 + Bug: https://github.com/curl/curl/discussions/11910 + Reported-by: Hakan Sunay Halil -Stefan Eissing (6 Aug 2023) + Closes https://github.com/curl/curl/pull/11930 -- http2: cleanup trace messages +Stefan Eissing (26 Sep 2023) - - more compact format with bracketed stream id - - all frames traced in and out +- openssl: improve ssl shutdown handling - Closes #11592 + - If SSL shutdown is not finished then make an additional call to + SSL_read to gather additional tracing. -Daniel Stenberg (6 Aug 2023) + - Fix http2 and h2-proxy filters to forward do_close() calls to the next + filter. -- tests/tftpd+mqttd: make variables static to silence picky warnings + For example h2 and SSL shutdown before and after this change: - Closes #11594 + Before: -- docs/cmdline: remove repeated working for negotiate + ntlm + Curl_conn_close -> cf_hc_close -> Curl_conn_cf_discard_chain -> + ssl_cf_destroy - The extra wording is added automatically by the gen.pl tool + After: - Closes #11597 + Curl_conn_close -> cf_hc_close -> cf_h2_close -> cf_setup_close -> + ssl_cf_close -- docs/cmdline: add small "warning" to verbose options + Note that currently the tracing does not show output on the connection + closure handle. Refer to discussion in #11878. - "Note that verbose output of curl activities and network traffic might - contain sensitive data, including user names, credentials or secret data - content. Be aware and be careful when sharing trace logs with others." + Ref: https://github.com/curl/curl/discussions/11878 - Closes #11596 + Closes https://github.com/curl/curl/pull/11858 -- RELEASE-NOTES: synced +Loïc Yhuel (26 Sep 2023) -- pingpong: don't use *bump_headersize +- multi: fix small timeouts - We use that for HTTP(S) only. + Since Curl_timediff rounds down to the millisecond, timeouts which + expire in less than 1ms are considered as outdated and removed from the + list. We can use Curl_timediff_us instead, big timeouts could saturate + but this is not an issue. - Follow-up to 3ee79c1674fd6 + Closes #11937 - Closes #11590 +Viktor Szakats (25 Sep 2023) -- urldata: remove spurious parenthesis to unbreak no-proxy build +- cmake: fix stderr initialization in unity builds - Follow-up to e12b39e13382 + Before this patch, in certain build configurations the curl tool may + not have displayed anything (debug, macOS), or crashed at startup + (debug, Windows). - Closes #11591 + Follow-up to 3f8fc25720900b14b7432f4bd93407ca15311719 + Necessary after 2f17a9b654121dd1ecf4fc043c6d08a9da3522db -- easy: don't call Curl_trc_opt() in disabled-verbose builds + Closes #11929 - Follow-up to e12b39e133822c6a0 +- cmake: fix missing `zlib.h` when compiling `libcurltool` - Closes #11588 + Came up while testing debug/testing build for Windows. I'm not sure why + it didn't come up in earlier tests with similar config. + `tool_hugehelp.c` might indeed require `zlib.h` and without linking + `CURL_LIBS` to the `curltool` target, CMake doesn't seem to add detected + dependency headers to the compiler command. -- http: use %u for printfing int + ``` + [ 25%] Building C object src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj + cd .../curl/bld-cmake-llvm-x64/src && /usr/local/opt/llvm/bin/clang + --target=x86_64-w64-mingw32 --sysroot=/usr/local/opt/mingw-w64/toolchain-x8 + 6_64 + -DCURLDEBUG -DCURL_STATICLIB -DHAVE_CONFIG_H -DUNICODE -DUNITTESTS -D_UNICO + DE + -I.../curl/include -I.../curl/lib -I.../curl/bld-cmake-llvm-x64/lib + -I.../curl/bld-cmake-llvm-x64/include -I.../curl/src -Wno-unused-command-li + ne-argument + -D_UCRT -DDEBUGBUILD -DHAS_ALPN -DUSE_MANUAL=1 -fuse-ld=lld -Wl,-s -static + -libgcc + -lucrt [...] -O3 -DNDEBUG -municode -MD + -MT src/CMakeFiles/curltool.dir/tool_hugehelp.c.obj + -MF CMakeFiles/curltool.dir/tool_hugehelp.c.obj.d + -o CMakeFiles/curltool.dir/tool_hugehelp.c.obj -c .../curl/bld-cmake-llvm-x + 64/src/tool_hugehelp.c + .../curl/bld-cmake-llvm-x64/src/tool_hugehelp.c:6:10: fatal error: 'zlib.h' f + ile not found + 6 | #include + | ^~~~~~~~ + ``` - Follow-up to 3ee79c1674fd6f99e8efca5 + Follow-up to 39e7c22bb459c2e818f079984989a26a09741860 - Closes #11587 + Closes #11927 -Goro FUJI (3 Aug 2023) +- cmake: fix duplicate symbols when linking tests -- vquic: show stringified messages for errno + The linker resolves this automatically in non-unity builds. In unity + builds the linker cannot drop a single object with the duplicates, + resulting in these errors. The root issue is that we started including + certain objects both via both libcurlu and libcurltool libs. - Closes #11584 + Regression from 39e7c22bb459c2e818f079984989a26a09741860 -Stefan Eissing (3 Aug 2023) + Windows errors: + ``` + [ 3%] Linking C executable unit1303.exe + [ 3%] Building C object tests/server/CMakeFiles/rtspd.dir/__/__/lib/curl_mul + tibyte.c.obj + ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_UTF8_to_wch + ar': + C:/projects/curl/lib/curl_multibyte.c:44: multiple definition of `curlx_conve + rt_UTF8_to_wchar' + ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. + c:44: first defined here + ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_convert_wchar_to_UT + F8': + C:/projects/curl/lib/curl_multibyte.c:66: multiple definition of `curlx_conve + rt_wchar_to_UTF8' + ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. + c:66: first defined here + ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_open': + C:/projects/curl/lib/curl_multibyte.c:92: multiple definition of `curlx_win32 + _open' + ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. + c:92: first defined here + ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_fopen': + C:/projects/curl/lib/curl_multibyte.c:120: multiple definition of `curlx_win3 + 2_fopen' + ../../src/libcurltool-d.a(unity_0.c.obj):C:/projects/curl/lib/curl_multibyte. + c:120: first defined here + ../../lib/libcurlu-d.a(unity_0.c.obj): In function `curlx_win32_stat': + [...] + ``` + Ref: https://ci.appveyor.com/project/curlorg/curl/builds/48110107/job/nvlhpt9 + aa4ehny5q#L247 -- trace: make tracing available in non-debug builds + macOS errors: + ``` + [ 56%] Linking C executable unit1302 + duplicate symbol '_curlx_sotouz' in: + ../../lib/libcurlu.a(unity_0_c.c.o) + ../../src/libcurltool.a(unity_0_c.c.o) + duplicate symbol '_curlx_sitouz' in: + ../../lib/libcurlu.a(unity_0_c.c.o) + ../../src/libcurltool.a(unity_0_c.c.o) + duplicate symbol '_curlx_uztosz' in: + ../../lib/libcurlu.a(unity_0_c.c.o) + ../../src/libcurltool.a(unity_0_c.c.o) + [...] + ``` + with config: + ``` + -DCMAKE_UNITY_BUILD=ON \ + -DENABLE_DEBUG=ON -DBUILD_TESTING=ON -DCMAKE_C_FLAGS=-DDEBUGBUILD \ + -DBUILD_SHARED_LIBS=ON \ + -DBUILD_STATIC_LIBS=OFF + ``` - Add --trace-config to curl + Closes #11926 - Add curl_global_trace() to libcurl +- cmake: lib `CURL_STATICLIB` fixes (Windows) - Closes #11421 + - always define `CURL_STATICLIB` when building libcurl for Windows. -Daniel Stenberg (3 Aug 2023) + This disables `__declspec(dllexport)` for exported libcurl symbols. + In normal mode (hide symbols) these exported symbols are specified + via `libcurl.def`. When not hiding symbols, all symbols are exported + by default. -- TODO: remove "Support intermediate & root pinning for PINNEDPUBLICKEY" + Regression from 1199308dbc902c52be67fc805c72dd2582520d30 - See also https://github.com/curl/curl/pull/7507 + Fixes #11844 -- TODO: add "WebSocket read callback" + - fix to omit `libcurl.def` when not hiding private symbols. - remove "Upgrade to websockets" as we already have this + Regression from 2ebc74c36a19a1700af394c16855ce144d9878e3 - Closes #11402 + - fix `ENABLED_DEBUG=ON` + shared curl tool Windows builds by also + omitting `libcurl.def` in this case, and exporting all symbols + instead. This ensures that a shared curl tool can access all debug + functions which are not normally exported from libcurl DLL. -- test497: verify rejecting too large incoming headers + - delete `INTERFACE_COMPILE_DEFINITIONS "CURL_STATICLIB"` for "objects" + target. -- http: return error when receiving too large header set + Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3 - To avoid abuse. The limit is set to 300 KB for the accumulated size of - all received HTTP headers for a single response. Incomplete research - suggests that Chrome uses a 256-300 KB limit, while Firefox allows up to - 1MB. + - delete duplicate `BUILDING_LIBCURL` definitions. - Closes #11582 + - fix `HIDES_CURL_PRIVATE_SYMBOLS` to not overwrite earlier build settings. -Stefan Eissing (3 Aug 2023) + Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30 -- http2: upgrade tests and add fix for non-existing stream + Closes #11914 - - check in h2 filter recv that stream actually exists - and return error if not - - add test for parallel, extreme h2 upgrades that fail if - connections get reused before fully switched - - add h2 upgrade upload test just for completeness +Daniel Stenberg (25 Sep 2023) - Closes #11563 +- RELEASE-NOTES: synced -Viktor Szakats (3 Aug 2023) +Dan Fandrich (25 Sep 2023) -- tests: ensure `libcurl.def` contains all exports +- tests: fix log directory path in IPFS tests - Add `test1279` to verify that `libcurl.def` lists all exported API - functions found in libcurl headers. + Hard-coding the log directory name fails with parallel tests. - Also: + Follow-up to 65b563a96 - - extend test suite XML `stdout` tag with the `loadfile` attribute. + Ref: #8805 - - fix `tests/extern-scan.pl` and `test1135` to include websocket API. +Daniel Stenberg (25 Sep 2023) - - use all headers (sorted) in `test1135` instead of a manual list. +- curl_multi_get_handles: get easy handles from a multi handle - - add options `--sort`, `--heading=` to `tests/extern-scan.pl`. + Closes #11750 - - add `libcurl.def` to the auto-labeler GHA task. +Stefan Eissing (25 Sep 2023) - Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3 +- http: h1/h2 proxy unification - Closes #11570 + - use shared code for setting up the CONNECT request + when tunneling, used in HTTP/1.x and HTTP/2 proxying + - eliminate use of Curl_buffer_send() and other manipulations + of `data->req` or `data->state.ulbuf` -Daniel Stenberg (2 Aug 2023) + Closes #11808 -- url: change default value for CURLOPT_MAXREDIRS to 30 +Natanael Copa (25 Sep 2023) - It was previously unlimited by default, but that's not a sensible - default. While changing this has a remote risk of breaking an existing - use case, I figure it is more likely to actually save users from loops. +- lib: use wrapper for curl_mime_data fseek callback - Closes #11581 + fseek uses long offset which does not match with curl_off_t. This leads + to undefined behavior when calling the callback and caused failure on + arm 32 bit. -- lib: fix a few *printf() flag mistakes + Use a wrapper to solve this and use fseeko which uses off_t instead of + long. - Reported-by: Gisle Vanem - Ref: #11574 - Closes #11579 + Thanks to the nice people at Libera IRC #musl for helping finding this + out. -Samuel Chiang (2 Aug 2023) + Fixes #11882 + Fixes #11900 + Closes #11918 -- openssl: make aws-lc version support OCSP +- configure: sort AC_CHECK_FUNCS - And bump version in CI + No functional changes. - Closes #11568 +Daniel Stenberg (25 Sep 2023) -Daniel Stenberg (2 Aug 2023) +- warnless: remove unused functions -- tool: make the length argument an int for printf()-.* flags + Previously put there for use with the intel compiler - Closes #11578 + Closes #11932 -- tool_operate: fix memory leak when SSL_CERT_DIR is used +- GHA/linux: run singleuse to detect single-use global functions - Detected by Coverity + Use --unit for configure --enable-debug builds - Follow-up to 29bce9857a12b6cfa726a5 + Closes #11932 - Closes #11577 +- singleuse: add scan for use in other source codes -- tool/var: free memory on OOM + This should reduce false-positive to almost zero. Checks for presence in + unit tests if --unit is specified, which is intended for debug builds + where unit testing is enabled. - Coverity detected this memory leak in OOM situation + Closes #11932 - Follow-up to 2e160c9c652504e +- multi: remove Curl_multi_dump - Closes #11575 + A debug-only function that is basically never used. Removed to ease the + use of the singleuse script to detect non-static functions not used + outside the file where it is defined. -Viktor Szakats (2 Aug 2023) + Closes #11931 -- gha: bump libressl and mbedtls versions +Viktor Szakats (24 Sep 2023) - Closes #11573 +- tests: fix compiler warnings -Jay Satiro (2 Aug 2023) + Seen with llvm 17 on Windows x64. -- schannel: fix user-set legacy algorithms in Windows 10 & 11 + ``` + .../curl/tests/server/rtspd.c:136:13: warning: no previous extern declaration + for non-static variable 'logdir' [-Wmissing-variable-declarations] + 136 | const char *logdir = "log"; + | ^ + .../curl/tests/server/rtspd.c:136:7: note: declare 'static' if the variable i + s not intended to be used outside of this translation unit + 136 | const char *logdir = "log"; + | ^ + .../curl/tests/server/rtspd.c:137:6: warning: no previous extern declaration + for non-static variable 'loglockfile' [-Wmissing-variable-declarations] + 137 | char loglockfile[256]; + | ^ + .../curl/tests/server/rtspd.c:137:1: note: declare 'static' if the variable i + s not intended to be used outside of this translation unit + 137 | char loglockfile[256]; + | ^ + .../curl/tests/server/fake_ntlm.c:43:13: warning: no previous extern declarat + ion for non-static variable 'logdir' [-Wmissing-variable-declarations] + 43 | const char *logdir = "log"; + | ^ + .../curl/tests/server/fake_ntlm.c:43:7: note: declare 'static' if the variabl + e is not intended to be used outside of this translation unit + 43 | const char *logdir = "log"; + | ^ + .../curl/src/tool_doswin.c:350:8: warning: possible misuse of comma operator + here [-Wcomma] + 350 | ++d, ++s; + | ^ + .../curl/src/tool_doswin.c:350:5: note: cast expression to void to silence wa + rning + 350 | ++d, ++s; + | ^~~ + | (void)( ) + ``` - - If the user set a legacy algorithm list (CURLOPT_SSL_CIPHER_LIST) then - use the SCHANNEL_CRED legacy structure to pass the list to Schannel. + ``` + .../curl/tests/libtest/lib540.c:146:27: warning: result of comparison 'long' + > 2147483647 is always false [-Wtautological-type-limit-compare] + 146 | int itimeout = (L > (long)INT_MAX) ? INT_MAX : (int)L; + | ~ ^ ~~~~~~~~~~~~~ + 1 warning generated. - - If the user set both a legacy algorithm list and a TLS 1.3 cipher list - then abort. + .../curl/tests/libtest/libntlmconnect.c:195:31: warning: result of comparison + 'long' > 2147483647 is always false [-Wtautological-type-limit-compare] + 195 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo + ut; + | ~~~~~~~ ^ ~~~~~~~~~~~~~ + 1 warning generated. - Although MS doesn't document it, Schannel will not negotiate TLS 1.3 - when SCHANNEL_CRED is used. That means setting a legacy algorithm list - limits the user to earlier versions of TLS. + .../curl/tests/libtest/lib591.c:117:31: warning: result of comparison 'long' + > 2147483647 is always false [-Wtautological-type-limit-compare] + 117 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo + ut; + | ~~~~~~~ ^ ~~~~~~~~~~~~~ + 1 warning generated. + .../curl/tests/libtest/lib597.c:99:31: warning: result of comparison 'long' > + 2147483647 is always false [-Wtautological-type-limit-compare] + 99 | int itimeout = (timeout > (long)INT_MAX) ? INT_MAX : (int)timeo + ut; + | ~~~~~~~ ^ ~~~~~~~~~~~~~ + 1 warning generated. + ``` - Prior to this change, since 8beff435 (precedes 7.85.0), libcurl would - ignore legacy algorithms in Windows 10 1809 and later. + Seen on macOS Intel: + ``` + .../curl/tests/server/sws.c:440:64: warning: field precision should have type + 'int', but argument has type 'size_t' (aka 'unsigned long') [-Wformat] + msnprintf(logbuf, sizeof(logbuf), "Got request: %s %.*s HTTP/%d.%d" + , + ~~^~ + 1 warning generated. + ``` - Reported-by: zhihaoy@users.noreply.github.com + Closes #11925 - Fixes https://github.com/curl/curl/pull/10741 - Closes https://github.com/curl/curl/pull/10746 +Jay Satiro (24 Sep 2023) -Daniel Stenberg (2 Aug 2023) +- url: fix netrc info message -- variable.d: setting a variable again overwrites it + - Fix netrc info message to use the generic ".netrc" filename if the + user did not specify a netrc location. - Reported-by: Niall McGee - Bug: https://twitter.com/niallmcgee/status/1686523075423322113 - Closes #11571 + - Update --netrc doc to add that recent versions of curl on Windows + prefer .netrc over _netrc. -Jay Satiro (2 Aug 2023) + Before: + * Couldn't find host google.com in the (nil) file; using defaults -- CURLOPT_PROXY_SSL_OPTIONS.3: sync formatting - - - Re-wrap CURLSSLOPT_ALLOW_BEAST description. + After: + * Couldn't find host google.com in the .netrc file; using defaults -Daniel Stenberg (2 Aug 2023) + Closes https://github.com/curl/curl/pull/11904 -- RELEASE-NOTES: synced +Dan Fandrich (23 Sep 2023) -- resolve: use PF_INET6 family lookups when CURL_IPRESOLVE_V6 is set +- wolfssh: do cleanup in Curl_ssh_cleanup - Previously it would always do PF_UNSPEC if CURL_IPRESOLVE_V4 is not - used, thus unnecessarily asking for addresses that will not be used. + Closes: #11921 - Reported-by: Joseph Tharayil - Fixes #11564 - Closes #11565 +Daniel Stenberg (24 Sep 2023) -- docs: link to the website versions instead of markdowns +- tool_listhelp: regenerated - ... to make the links work when the markdown is converted to webpages on - https://curl.se + Polished the --ipfs-gateway description - Reported-by: Maurício Meneghini Fauth - Fixes https://github.com/curl/curl-www/issues/272 - Closes #11569 + Fixed the --trace-config description -Viktor Szakats (1 Aug 2023) + The script also fixed some other small mistakes -- cmake: cache more config and delete unused ones + Closes #11923 - - cache more Windows config results for faster initialization. +Viktor Szakats (23 Sep 2023) - - delete unused config macros `HAVE_SYS_UTSNAME_H`, `HAVE_SSL_H`. +- Makefile.mk: always set `CURL_STATICLIB` for lib (Windows) - - delete dead references to `sys/utsname.h`. + Also fix to export all symbols in Windows debug builds, making + `-debug-dyn` builds work with `-DCURL_STATICLIB` set. - Closes #11551 + Ref: https://github.com/curl/curl/pull/11914 (same for CMake) -- egd: delete feature detection and related source code + Closes #11924 - EGD is Entropy Gathering Daemon, a socket-based entropy source supported - by pre-OpenSSL v1.1 versions and now deprecated. curl also deprecated it - a while ago. +Daniel Stenberg (23 Sep 2023) - Its detection in CMake was broken all along because OpenSSL libs were - not linked at the point of feature check. +- quic: set ciphers/curves the same way regular TLS does - Delete detection from both cmake and autotools, along with the related - source snippet, and the `--with-egd-socket=` `./configure` option. + for OpenSSL/BoringSSL - Closes #11556 + Fixes #11796 + Reported-by: Karthikdasari0423 on github + Assisted-by: Jay Satiro + Closes #11836 -Stefan Eissing (1 Aug 2023) +- test457: verify --max-filesize with chunked encoding -- tests: fix h3 server check and parallel instances +- lib: let the max filesize option stop too big transfers too - - fix check for availability of nghttpx server - - add `tcp` frontend config for same port as quic, as - without this, port 3000 is bound which clashes for parallel - testing + Previously it would only stop them from getting started if the size is + known to be too big then. - Closes #11553 + Update the libcurl and curl docs accordingly. -Daniel Stenberg (1 Aug 2023) + Fixes #11810 + Reported-by: Elliot Killick + Assisted-by: Jay Satiro + Closes #11820 -- docs/cmdline-opts: spellfixes, typos and polish +Viktor Szakats (23 Sep 2023) - To make them accepted by the spell checker +- mingw: delete support for legacy mingw.org toolchain - Closes #11562 + Drop support for "old" / "legacy" / "classic" / "v1" / "mingw32" MinGW: + https://en.wikipedia.org/wiki/MinGW, https://osdn.net/projects/mingw/ + Its homepage used to be http://mingw.org/ [no HTTPS], and broken now. + It supported the x86 CPU only and used a old Windows API header and + implib set, often causing issues. It also misses most modern Windows + features, offering old versions of both binutils and gcc (no llvm/clang + support). It was last updated 2 years ago. -- CI/spellcheck: build curl.1 and spellcheck it + curl now relies on toolchains based on the mingw-w64 project: + https://www.mingw-w64.org/ https://sourceforge.net/projects/mingw-w64/ + https://www.msys2.org/ https://github.com/msys2/msys2 + https://github.com/mstorsjo/llvm-mingw + (Also available via Linux and macOS package managers.) - Added acceptable words + Closes #11625 - Closes #11562 +Mark Gaiser (23 Sep 2023) -Alexander Jaeger (1 Aug 2023) +- curl: add support for the IPFS protocols: -- misc: fix various typos + - ipfs:// + - ipns:// - Closes #11561 + This allows you tu use ipfs in curl like: + curl ipfs:// + and + curl ipns:// -Daniel Stenberg (1 Aug 2023) + For more information consult the readme at: + https://curl.se/docs/ipfs.html -- http2: avoid too early connection re-use/multiplexing + Closes #8805 - HTTP/1 connections that are upgraded to HTTP/2 should not be picked up - for reuse and multiplexing by other handles until the 101 switching - process is completed. +Daniel Stenberg (23 Sep 2023) - Lots-of-debgging-by: Stefan Eissing - Reported-by: Richard W.M. Jones - Bug: https://curl.se/mail/lib-2023-07/0045.html - Closes #11557 +- bufq: remove Curl_bufq_skip_and_shift (unused) -- Revert "KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14" + Closes #11915 - This reverts commit 2e8a3d7cb73c85a9aa151e263315f8a496dbb9d4. +- scripts/singleuse.pl: add curl_global_trace - It's a user error for supplying incomplete information to the build system. +Viktor Szakats (22 Sep 2023) - Reported-by: Ryan Schmidt - Ref: https://github.com/curl/curl/issues/11215#issuecomment-1658729367 +- cmake: fix unity symbol collisions in h2 builds -Viktor Szakats (1 Aug 2023) + Regression from 331b89a319d0067fa1e6441719307cfef9c7960f -- cmake: add support for single libcurl compilation pass + Reviewed-by: Daniel Stenberg + Reviewed-by: Jay Satiro + Closes #11912 - Before this patch CMake builds used two separate compilation passes to - build the shared and static libcurl respectively. This patch allows to - reduce that to a single pass if the target platform and build settings - allow it. +Daniel Stenberg (22 Sep 2023) - This reduces CMake build times when building both static and shared - libcurl at the same time, making these dual builds an almost zero-cost - option. +- RELEASE-NOTES: synced - Enable this feature for Windows builds, where the difference between the - two passes was the use of `__declspec(dllexport)` attribute for exported - API functions for the shared builds. This patch replaces this method - with the use of `libcurl.def` at DLL link time. +Dan Fandrich (21 Sep 2023) - Also update `Makefile.mk` to use `libcurl.def` to export libcurl API - symbols on Windows. This simplifies (or fixes) this build method (e.g. - in curl-for-win, which generated a `libcurl.def` from `.h` files using - an elaborate set of transformations). +- github/labeler: improve the match patterns - `libcurl.def` has the maintenance cost of keeping the list of public - libcurl API symbols up-to-date. This list seldom changes, so the cost - is low. + This includes new rules for setting the appleOS and logging labels and + matches on some example files. Also, enable dot mode for wildcard + matches in the .github directory. - Closes #11546 +Daniel Stenberg (21 Sep 2023) -- cmake: detect `SSL_set0_wbio` in OpenSSL +- upload-file.d: describe the file name slash/backslash handling - Present in OpenSSL 1.1.0 and BoringSSL. - Missing from LibreSSL 3.8.0. + Closes #11911 - Follow-up to f39472ea9f4f4e12cfbc0500c4580a8d52ce4a59 +Jakub Jelen (21 Sep 2023) - While here, also fix `RAND_egd()` detection which was broken, likely all - along. This feature is probably broken with CMake builds and also - requires a sufficiently obsolete OpenSSL version, so this part of the - update was not tested. +- libssh: cap SFTP packet size sent - Closes #11555 + Due to libssh limitations -- cmake: fixup H2 duplicate symbols for unity builds + Signed-off-by: Jakub Jelen - Closes #11550 + Closes #11804 -Pablo Busse (1 Aug 2023) +Daniel Stenberg (21 Sep 2023) -- openssl: Support async cert verify callback +- curl.h: mark CURLSSLBACKEND_NSS as deprecated since 8.3.0 - - Update the OpenSSL connect state machine to handle - SSL_ERROR_WANT_RETRY_VERIFY. + Closes #11905 - This allows libcurl users that are using custom certificate validation - to suspend processing while waiting for external I/O during certificate - validation. +- mailmap: unify Michael Osipov under a single email - Closes https://github.com/curl/curl/pull/11499 +Ted Lyngmo (21 Sep 2023) -Jay Satiro (1 Aug 2023) +- docs: use CURLSSLBACKEND_NONE -- tool_cb_wrt: fix invalid unicode for windows console + [ssl] use CURLSSLBACKEND_NONE instead of (curl_sslbackend)-1 in + documentation and examples. - - Suppress an incomplete UTF-8 sequence at the end of the buffer. + Signed-off-by: Ted Lyngmo - - Attempt to reconstruct incomplete UTF-8 sequence from prior call(s) - in current call. + Closes #11909 - Prior to this change, in Windows console UTF-8 sequences split between - two or more calls to the write callback would cause invalid "replacement - characters" U+FFFD to be printed instead of the actual Unicode - character. This is because in Windows only UTF-16 encoded characters are - printed to the console, therefore we convert the UTF-8 contents to - UTF-16, which cannot be done with partial UTF-8 sequences. +Dan Fandrich (21 Sep 2023) - Reported-by: Maksim Arhipov +- github/labeler: give the sync-labels config item a default value - Fixes https://github.com/curl/curl/issues/9841 - Closes https://github.com/curl/curl/pull/10890 + This shouldn't be necessary and is likely a bug with this beta version + of the labeller. -Daniel Stenberg (1 Aug 2023) + Also, fix the negative matches for the documentation label. -- sectransp: prevent CFRelease() of NULL + Follow-up to dd12b452a + Closes #11907 - When SecCertificateCopyCommonName() returns NULL, the common_name - pointer remains set to NULL which apparently when calling CFRelease() on - (sometimes?) crashes. +- github/labeler: fix up more the labeler config format - Reported-by: Guillaume Algis - Fixes #9194 - Closes #11554 + The new version didn't like the workaround we had for a bug in the + previous labeler version, and it should no longer be needed. -Jay Satiro (1 Aug 2023) + Follow-up to dd12b452a + Closes #11906 -- vtls: clarify "ALPN: offers" message +- github/labeler: fix indenting to try to appease labeller - Before: - * ALPN: offers h2,http/1.1 + Follow-up to dd12b452a - After: - * ALPN: curl offers h2,http/1.1 +Jay Satiro (21 Sep 2023) - Bug: https://curl.se/mail/lib-2023-07/0041.html - Reported-by: Richard W.M. Jones - Closes #11544 +- libssh2: fix error message on failed pubkey-from-file -Daniel Stenberg (1 Aug 2023) + - If libssh2_userauth_publickey_fromfile_ex returns -1 then show error + message "SSH public key authentication failed: Reason unknown (-1)". -- urlapi: make sure zoneid is also duplicated in curl_url_dup + When libssh2_userauth_publickey_fromfile_ex returns -1 it does so as a + generic error and therefore doesn't set an error message. AFAICT that is + not documented behavior. - Add several curl_url_dup() tests to the general lib1560 test. + Prior to this change libcurl retrieved the last set error message which + would be from a previous function failing. That resulted in misleading + auth failed error messages in verbose mode. - Reported-by: Rutger Broekhoff - Bug: https://curl.se/mail/lib-2023-07/0047.html - Closes #11549 + Bug: https://github.com/curl/curl/issues/11837#issue-1891827355 + Reported-by: consulion@users.noreply.github.com -Sergey (1 Aug 2023) + Closes https://github.com/curl/curl/pull/11881 -- urlapi: fix heap buffer overflow +Stefan Eissing (21 Sep 2023) - `u->path = Curl_memdup(path, pathlen + 1);` accesses bytes after the null-ter - minator. +- pytest: exclude test_03_goaway in CI runs due to timing dependency - ``` - ==2676==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x04d48c75 a - t pc 0x0112708a bp 0x006fb7e0 sp 0x006fb3c4 - READ of size 78 at 0x04d48c75 thread T0 - #0 0x1127089 in __asan_wrap_memcpy D:\a\_work\1\s\src\vctools\asan\llvm\c - ompiler-rt\lib\sanitizer_common\sanitizer_common_interceptors.inc:840 - #1 0x1891a0e in Curl_memdup C:\actions-runner\_work\client\client\third_p - arty\curl\lib\strdup.c:97 - #2 0x18db4b0 in parseurl C:\actions-runner\_work\client\client\third_part - y\curl\lib\urlapi.c:1297 - #3 0x18db819 in parseurl_and_replace C:\actions-runner\_work\client\clien - t\third_party\curl\lib\urlapi.c:1342 - #4 0x18d6e39 in curl_url_set C:\actions-runner\_work\client\client\third_ - party\curl\lib\urlapi.c:1790 - #5 0x1877d3e in parseurlandfillconn C:\actions-runner\_work\client\client - \third_party\curl\lib\url.c:1768 - #6 0x1871acf in create_conn C:\actions-runner\_work\client\client\third_p - arty\curl\lib\url.c:3403 - #7 0x186d8dc in Curl_connect C:\actions-runner\_work\client\client\third_ - party\curl\lib\url.c:3888 - #8 0x1856b78 in multi_runsingle C:\actions-runner\_work\client\client\thi - rd_party\curl\lib\multi.c:1982 - #9 0x18531e3 in curl_multi_perform C:\actions-runner\_work\client\client\ - third_party\curl\lib\multi.c:2756 - ``` + Closes #11860 - Closes #11560 +- lib: disambiguate Curl_client_write flag semantics -Daniel Stenberg (31 Jul 2023) + - use CLIENTWRITE_BODY *only* when data is actually body data + - add CLIENTWRITE_INFO for meta data that is *not* a HEADER + - debug assertions that BODY/INFO/HEADER is not used mixed + - move `data->set.include_header` check into Curl_client_write + so protocol handlers no longer have to care + - add special in FTP for `data->set.include_header` for historic, + backward compatible reasons + - move unpausing of client writes from easy.c to sendf.c, so that + code is in one place and can forward flags correctly -- curl: make %output{} in -w specify a file to write to + Closes #11885 - It can be used multiple times. Use %output{>>name} to append. +Patrick Monnerat (21 Sep 2023) - Add docs. Test 990 and 991 verify. +- tftpd: always use curl's own tftp.h - Idea: #11400 - Suggested-by: ed0d2b2ce19451f2 - Closes #11416 + Using the system's provided arpa/tftp.h and optimizing, GCC 12 detects + and reports a stringop-overread warning: + + tftpd.c: In function ‘write_behind.isra’: + tftpd.c:485:12: warning: ‘write’ reading between 1 and 2147483647 bytes f + rom a region of size 0 [-Wstringop-overread] + 485 | return write(test->ofile, writebuf, count); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + In file included from tftpd.c:71: + /usr/include/arpa/tftp.h:58:30: note: source object ‘tu_data’ of size 0 + 58 | char tu_data[0]; /* data or error stri + ng */ + | ^~~~~~~ + + This occurs because writebuf points to this field and the latter + cannot be considered as being of dynamic length because it is not + the last field in the structure. Thus it is bound to its declared + size. + + This commit always uses curl's own version of tftp.h where the + target field is last in its structure, effectively avoiding the + warning. + + As HAVE_ARPA_TFTP_H is not used anymore, cmake/configure checks for + arpa/tftp.h are removed. + + Closes #11897 + +Dan Fandrich (20 Sep 2023) + +- test1474: make precheck more robust on non-Solaris systems + + If uname -r returns something odd, perl could return an error code and + the test would be erroneously skipped. The qx// syntax avoid this. + + Followup to 08f9b2148 + +- github/labeler: switch to the 5 beta version + + This version adds an important feature that will allow more PRs to be + labelled. Rather than being limited to labeling PRs with files that + match a single glob, it can now label them if multiple changed files + match any one of a number of globs. + +Daniel Stenberg (20 Sep 2023) + +- lib: enable hmac for digest as well + + Previously a build that disabled NTLM and aws-sigv4 would fail to build + since the hmac was disabled, but it is also needed for digest auth. + + Follow-up to e92edfbef64448ef + + Fixes #11890 + Reported-by: Aleksander Mazur + Closes #11896 + +- idn: if idn2_check_version returns NULL, return error + + ... this avoids a NULL dereference for this unusual case. + + Reported-by: s0urc3_ on hackerone + Closes #11898 + +- http: fix CURL_DISABLE_BEARER_AUTH breakage + + When bearer auth was disabled, the if/else logic got wrong and caused + problems. + + Follow-up to e92edfbef64448ef461 + Fixes #11892 + Reported-by: Aleksander Mazur + Closes #11895 + +Michael Osipov (20 Sep 2023) + +- wolfssl: allow capath with CURLOPT_CAINFO_BLOB + + Remain consistent with OpenSSL. While CAfile is nulled as documented + with CURLOPT_CAINFO_BLOB, CApath remains intact. + + Closes #11886 + +- wolfssl: use ssl_cafile/ssl_capath variables consistent with openssl.c + + Closes #11886 + +Dan Fandrich (19 Sep 2023) + +- test1474: disable test on NetBSD, OpenBSD and Solaris 10 + + These kernels only send a fraction of the requested amount of the first + large block, invalidating the assumptions of the test and causing it to + fail. + + Assisted-by: Christian Weisgerber + Ref: https://curl.se/mail/lib-2023-09/0021.html + Closes #11888 + +Ryan Schmidt (20 Sep 2023) + +- cmake, configure: also link with CoreServices + + When linking with CoreFoundation, also link with CoreServices which is + apparently required to avoid an NSInvalidArgumentException in software + linking with libcurl on macOS Sonoma 14 and later. + + Fixes #11893 + Closes #11894 + +Marc Hoersken (19 Sep 2023) + +- CI/azure: remove pip, wheel, cryptography, pyopenssl and impacket + + These dependencies are now already included in the Docker image. + + Ref: https://github.com/mback2k/curl-docker-winbuildenv/commit/2607a31bcab544 + b41d15606e97f38cf312c1ce56 + + Closes #11889 + +Daniel Stenberg (19 Sep 2023) + +- wolfssl: if CURLOPT_CAINFO_BLOB is set, ignore the CA files + + Ref: #11883 + Reported-by: Michael Osipov + Closes #11884 - RELEASE-NOTES: synced -- tool: add "variable" support +- test3103: CURLOPT_COOKIELIST test - Add support for command line variables. Set variables with --variable - name=content or --variable name@file (where "file" can be stdin if set - to a single dash (-)). +- cookie: set ->running in cookie_init even if data is NULL - Variable content is expanded in option parameters using "{{name}}" - (without the quotes) if the option name is prefixed with - "--expand-". This gets the contents of the variable "name" inserted, or - a blank if the name does not exist as a variable. Insert "{{" verbatim - in the string by prefixing it with a backslash, like "\\{{". + This is a regression introduced in b1b326ec500 (shipped in curl 8.1.0) - Import an environment variable with --variable %name. It makes curl exit - with an error if the environment variable is not set. It can also rather - get a default value if the variable does not exist, using =content or - @file like shown above. + Test 3103 verifies. - Example: get the USER environment variable into the URL: + Fixes #11875 + Reported-by: wangp on github + Closes #11876 - --variable %USER - --expand-url = "https://example.com/api/{{USER}}/method" +- test498: total header size for all redirects is larger than accepted - When expanding variables, curl supports a set of functions that can make - the variable contents more convenient to use. It can trim leading and - trailing white space with "trim", output the contents as a JSON quoted - string with "json", URL encode it with "url" and base 64 encode it with - "b64". To apply functions to a variable expansion, add them colon - separated to the right side of the variable. They are then performed in - a left to right order. +- http: use per-request counter to check too large headers - Example: get the contents of a file called $HOME/.secret into a variable - called "fix". Make sure that the content is trimmed and percent-encoded - sent as POST data: + Not the counter that accumulates all headers over all redirects. - --variable %HOME=/home/default - --expand-variable fix@{{HOME}}/.secret - --expand-data "{{fix:trim:url}}" - https://example.com/ + Follow-up to 3ee79c1674fd6 - Documented. Many new test cases. + Do a second check for 20 times the limit for the accumulated size for + all headers. + + Fixes #11871 + Reported-by: Joshix-1 on github + Closes #11872 + +Jay Satiro (18 Sep 2023) + +- THANKS: add Eric Murphy + + He reported #11850 (quiche build error) but I forgot to add a + 'reported-by' entry in the fix 267e14f1. + +Daniel Stenberg (18 Sep 2023) + +- h2-proxy: remove left-over mistake in drain_tunnel() + + Left-over from 331b89a319 + + Reported-by: 南宫雪珊 + + Closes https://github.com/curl/curl/pull/11877 + +vvb2060 (18 Sep 2023) + +- lib: failf/infof compiler warnings + + Closes #11874 + +Daniel Stenberg (17 Sep 2023) + +- rand: fix 'alnum': array is too small to include a terminating null character + + It was that small on purpose, but this change now adds the null byte to + avoid the error. + + Follow-up to 3aa3cc9b052353b1 + + Reported-by: Dan Fandrich + Ref: #11838 + Closes #11870 + +Mathias Fuchs (16 Sep 2023) + +- cmake: fix the help text to the static build option in CMakeLists.txt + + Closes #11843 + +John Haugabook (16 Sep 2023) + +- MANUAL.md: change domain to example.com + + Closes #11866 + +Daniel Stenberg (16 Sep 2023) + +- doh: inherit DEBUGFUNCTION/DATA + + When creating new transfers for doing DoH, they now inherit the debug + settings from the initiating transfer, so that the application can + redirect and handle the verbose output correctly even for the DoH + transfers. + + Reported-by: calvin2021y on github + Fixes #11864 + Closes #11869 + +Dan Fandrich (16 Sep 2023) + +- http_aws_sigv4: fix sorting with empty parts + + When comparing with an empty part, the non-empty one is always + considered greater-than. Previously, the two would be considered equal + which would randomly place empty parts amongst non-empty ones. This + showed as a test 439 failure on Solaris as it uses a different + implementation of qsort() that compares parts differently. + + Fixes #11855 + Closes #11868 + +- CI: ignore the "flaky" and "timing-dependent" test results + + CI builds will now run these tests, but will ignore the results if they + fail. The relevant tests are ones that are sensitive to timing or + have edge conditions that make them more likely to fail on CI servers, + which are often heavily overloaded and slow. + + This change only adds two additional tests to be ignored, since the + others already had the flaky keyword. + + Closes #11865 + +- runtests: eliminate a warning on old perl versions + + The warning "Use of implicit split to @_ is deprecated" showed between + perl versions about 5.8 through 5.11. + +- tests: log the test result code after each libtest + + This makes it easier to determine the test status. Also, capitalize + FAILURE and ABORT messages in log lines to make them easier to spot. + +Harry Sintonen (16 Sep 2023) + +- misc: better random strings + + Generate alphanumerical random strings. + + Prior this change curl used to create random hex strings. This was + mostly okay, but having alphanumerical random strings is better: The + strings have more entropy in the same space. + + The MIME multipart boundary used to be mere 64-bits of randomness due + to being 16 hex chars. With these changes the boundary is 22 + alphanumerical chars, or little over 130 bits of randomness. + + Closes #11838 + +Daniel Stenberg (15 Sep 2023) + +- cookie: reduce variable scope, add const + +- cookie: do not store the expire or max-age strings + + Convert it to an expire time at once and save memory. + + Closes #11862 + +- cookie: remove unnecessary struct fields + + Plus: reduce the hash table size from 256 to 63. It seems unlikely to + make much of a speed difference for most use cases but saves 1.5KB of + data per instance. + + Closes #11862 + +- RELEASE-NOTES: synced + + Bumped to 8.4.0, the next presumed version + +Dan Fandrich (14 Sep 2023) + +- test2600: remove special case handling for USE_ALARM_TIMEOUT + + This was originally added to handle platforms that supported only 1 + second granularity in connect timeouts, but after some recent changes + the test currently permafails on several Windows platforms. + + The need for this special-case was removed in commit 8627416, which + increased the connect timeout in all cases to well above 1 second. + + Fixes #11767 + Closes #11849 + +Daniel Stenberg (14 Sep 2023) + +- SECURITY-PROCESS.md. call it vulnerability disclosure policy + + SECURITY-PROCESS.md -> VULN-DISCLOSURE-POLICY.md + + This a name commonly used for a document like this. This name helps + users find it. + + Closes #11852 + +Junho Choi (14 Sep 2023) + +- quiche: fix build error with --with-ca-fallback + + - Fix build error when curl is built with --with-quiche + and --with-ca-fallback. + + - Add --with-ca-fallback to the quiche CI job. + + Fixes https://github.com/curl/curl/issues/11850 + Closes https://github.com/curl/curl/pull/11847 + +Jay Satiro (14 Sep 2023) + +- escape: replace Curl_isunreserved with ISUNRESERVED + + - Use the ALLCAPS version of the macro so that it is clear a macro is + being called that evaluates the variable multiple times. + + - Also capitalize macro isurlpuntcs => ISURLPUNTCS since it evaluates + a variable multiple times. + + This is a follow-up to 291d225a which changed Curl_isunreserved into an + alias macro for ISUNRESERVED. The problem is the former is not easily + identified as a macro by the caller, which could lead to a bug. + + For example, ISUNRESERVED(*foo++) is easily identifiable as wrong but + Curl_isunreserved(*foo++) is not even though they both are the same. + + Closes https://github.com/curl/curl/pull/11846 + +Dan Fandrich (13 Sep 2023) + +- tests: increase the default server logs lock timeout + + This timeout is used to wait for the server to finish writing its logs + before checking them against the expected values. An overloaded machine + could take more than the two seconds previously allocated, so increase + the timeout to 5 seconds. + + Ref: #11328 + Closes #11834 + +- tests: increase TEST_HANG_TIMEOUT in two tests + + These tests had a 5 second timeout compared to 60 seconds for all other + tests. Make these consistent with the others for more reliability on + heavily-loaded machines. + + Ref: #11328 + +- test1056: disable on Windows + + This test relies on the IPv6 scope field being ignored when connecting to + ipv6-localhost (i.e. [::1%259999] is treated as [::1]). Maybe this is a bit + dodgy, but it works on all our test platforms except Windows. This + test was disabled manually on all Windows CI builds already, so instead + add an incompatible feature and precheck so it's skipped on Windows + everywhere automatically. + +- test587: add a slight delay after test + + This test is designed to connect to the server, then immediately send a + few bytes and disconnect. In some situations, such as on a loaded + server, this doesn't give the server enough time to write its lock file + before its existence is checked. The test harness then fails to find the + server's input log file (because it hasn't been written yet) and fails + the test. By adding a short delay after the test, the HTTP server has + enough time to write its lock file which gives itself more time to write + its remaining files. + + Ref: #11328 + +- tests: stop overriding the lock timeout + + These tests reduce the server lock wait timeout which can increase + flakiness on loaded machines. Since this is merely an optimization, + eliminate them in favour of reliability. + + Ref: #11328 + +- tests: add some --expect100-timeout to reduce timing dependencies + + These tests can fail when the test machine is so slow that the test HTTP + server didn't get a chance to complete before the client's one second + 100-continue timeout triggered. Increase that 1 second to 999 seconds so + this situation doesn't happen. + + Ref: #11328 + +- test661: return from test early in case of curl error + +- tests: add the timing-dependent keyword on several tests + + These are ones likely to fail on heavily-loaded machines that alter the + normal test timing. Most of these tests already had the flaky keyword + since this condition makes them more likely to fail on CI. + +- test1592: greatly increase the maximum test timeout + + It was too short to be reliable on heavily loaded CI machines, and + as a fail-safe only, it didn't need to be short. + + Ref: #11328 + +- test: minor test cleanups + + Remove an obsolete block of code in tests 2032 & 576. + Add a comment in test 1474. + +- tests: quadruple the %FTPTIME2 and %FTPTIME3 timeouts + + This gives more of a margin for error when running on overloaded CI + servers. + + Ref: #11328 + +- tests: improve SLOWDOWN test reliability by reducing sent data + + These tests are run in SLOWDOWN mode which adds a 10 msec delay after + each character output, which means it takes at least 1.6 seconds (and + 320 kernel calls) just to get through the long welcome banner. On an + overloaded system, this can end up taking much more than 1.6 seconds, + and even more than the 7 or 16 second curl timeout that the tests rely + on, causing them to fail. Reducing the size of the welcome banner drops + the total number of characters sent before the transfer starts by more + than half, which reduces the opportunity for test-breaking slowdowns by + the same amount. + + Ref: #11328 + +- test650: fix an end tag typo + +Jay Satiro (13 Sep 2023) + +- tool_cb_wrt: fix debug assertion + + - Fix off-by-one out-of-bounds array index in Windows debug assertion. + + Bug: https://github.com/curl/curl/commit/af3f4e41#r127212213 + Reported-by: Gisle Vanem + +Daniel Stenberg (13 Sep 2023) + +- ctype: add ISUNRESERVED() + + ... and make Curl_isunreserved() use that macro instead of providing a + separate funtion for the purpose. + + Closes #11840 + +Version 8.3.0 (13 Sep 2023) + +Daniel Stenberg (13 Sep 2023) + +- RELEASE-NOTES: syn ced + + curl 8.3.0 release - Co-brainstormed-by: Emanuele Torre - Assisted-by: Jat Satiro - Closes #11346 +- THANKS: contributors from 8.3.0 -- KNOWN_BUGS: cygwin: make install installs curl-config.1 twice +Thorsten Klein (12 Sep 2023) - Closes #8839 +- cmake: set SIZEOF_LONG_LONG in curl_config.h -- KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14 + in order to support 32bit builds regarding wolfssl CTC_SETTINGS - Closes #11215 + Closes #11839 -- KNOWN_BUGS: cmake outputs: no version information available +Jay Satiro (12 Sep 2023) - Closes #11158 +- curl_ngtcp2: fix error message -- KNOWN_BUGS: APOP authentication fails on POP3 +- http_aws_sigv4: handle no-value user header entries - Closes #10073 + - Handle user headers in format 'name:' and 'name;' with no value. -- KNOWN_BUGS: hyper is slow + The former is used when the user wants to remove an internal libcurl + header and the latter is used when the user actually wants to send a + no-value header in the format 'name:' (note the semi-colon is converted + by libcurl to a colon). - Closes #11203 + Prior to this change the AWS header import code did not special case + either of those and the generated AWS SignedHeaders would be incorrect. -Patrick Monnerat (31 Jul 2023) + Reported-by: apparentorder@users.noreply.github.com -- configure, cmake, lib: more form api deprecation + Ref: https://curl.se/docs/manpage.html#-H - Introduce a --enable-form-api configure option to control its inclusion - in builds. The condition name defined for it is CURL_DISABLE_FORM_API. + Fixes https://github.com/curl/curl/issues/11664 + Closes https://github.com/curl/curl/pull/11668 - Form api code is dependent of MIME: configure and CMake handle this - dependency automatically: CMake by making it a dependent option - explicitly, configure by inheriting the MIME value by default and - rejecting explicit incompatible values. +Dan Fandrich (11 Sep 2023) - "form-api" is now a new hidden test feature. +- CI: run pytest with the -v option - Update libcurl modules to respect this option and adjust tests - accordingly. + This lists of the test cases being run so it can be tracked over time. - Closes #9621 + Closes #11824 -Daniel Stenberg (31 Jul 2023) +Daniel Stenberg (11 Sep 2023) -- mailmap: add Derzsi Dániel +- HTTP3: the msquic backend is not functional -Derzsi Dániel (31 Jul 2023) + I ask that we do not submit bugs for this backend just yet as we know it + does not fully work. -- wolfssl: support loading system CA certificates + Closes #11831 + Closes #11819 - Closes #11452 +- aws_sigv4: the query canon code miscounted URL encoded input -Viktor Szakats (30 Jul 2023) + Added some extra ampersands to test 439 to verify "blank" query parts -- nss: delete more NSS references + Follow-up to fc76a24c53b08cdf - Fix the distcheck CI failure and delete more NSS references. + Closes #11829 - Follow-up to 7c8bae0d9c9b2dfeeb008b9a316117d7b9675175 +vvb2060 (11 Sep 2023) - Reviewed-by: Marcel Raad - Reviewed-by: Daniel Stenberg - Closes #11548 +- quic: don't set SNI if hostname is an IP address -Daniel Stenberg (29 Jul 2023) + We already do this for TLS connections. -- nss: remove support for this TLS library + RFC 6066 says: Literal IPv4 and IPv6 addresses are not permitted in + "HostName". - Closes #11459 + Ref: https://www.rfc-editor.org/rfc/rfc6066#section-3 -Ryan Schmidt (29 Jul 2023) + Fixes https://github.com/curl/curl/issues/11827 + Closes https://github.com/curl/curl/pull/11828 -- macOS: fix target detection more +Daniel Stenberg (10 Sep 2023) - Now SCDynamicStoreCopyProxies is called (and the required frameworks are - linked in) on all versions of macOS and only on macOS. Fixes crash due - to undefined symbol when built with the macOS 10.11 SDK or earlier. +- RELEASE-NOTES: synced - CURL_OSX_CALL_COPYPROXIES is renamed to CURL_MACOS_CALL_COPYPROXIES and - is now only defined when SCDynamicStoreCopyProxies will actually be - called. Previously, it was defined when ENABLE_IPV6 was not defined but - SCDynamicStoreCopyProxies is not called in that case. +Benoit Pierre (10 Sep 2023) - TARGET_OS_OSX is only defined in the macOS 10.12 SDK and later and only - when dynamic targets are enabled. TARGET_OS_MAC is always defined but - means any Mac OS or derivative including macOS, iOS, tvOS, and watchOS. - TARGET_OS_IPHONE means any Darwin OS other than macOS. +- configure: fix `HAVE_TIME_T_UNSIGNED` check - Follow-up to c73b2f82 + The syntax was incorrect (need a proper main body), and the test + condition was wrong (resulting in a signed `time_t` detected as + unsigned). - Fixes #11502 - Closes #11516 + Closes #11825 -Daniel Stenberg (29 Jul 2023) +Daniel Stenberg (9 Sep 2023) -- tool_operate: allow SSL_CERT_FILE and SSL_CERT_DIR +- THANKS-filter: pszlazak on github - ... used at once. +pszlazak (9 Sep 2023) - Reported-by: Gabriel Corona - Fixes #11325 - Closes #11531 +- include.d: explain headers not printed with --fail before 7.75.0 -Thomas M. DuBuisson (29 Jul 2023) + Prior to 7.75.0 response headers were not printed if -f/--fail was used + and an error was reported by server. This was fixed in ab525c0 + (precedes 7.75.0). -- CI: remove Lift's configuration + Closes #11822 - The Lift tool is being retired. Their site reads: +Daniel Stenberg (8 Sep 2023) - "Sonatype Lift will be retiring on Sep 12, 2023, with its analysis - stopping on Aug 12, 2023." +- http_aws_sigv4: skip the op if the query pair is zero bytes - Closes #11541 + Follow-up to fc76a24c53b08cdf -Nathan Moinvaziri (29 Jul 2023) + Spotted by OSS-Fuzz -- Revert "schannel: reverse the order of certinfo insertions" + Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62175 + Closes #11823 - This reverts commit 8986df802db9b5338d9d50a54232ebae4dbcf6dd. +- cmdline-docs: use present tense, not future - Windows does not guarantee a particular certificate ordering, even - though TLS may have its own ordering/relationship guarantees. Recent - versions of Windows 11 reversed the ordering of ceritifcates returned by - CertEnumCertificatesInStore, therefore this commit no longer works as - initially intended. libcurl makes no guarantees about certificate - ordering if the operating system can't. + + some smaller cleanups - Ref: https://github.com/curl/curl/issues/9706 + Closes #11821 - Closes https://github.com/curl/curl/pull/11536 +- cmdline-docs: make sure to phrase it as "added in ...." -wangzhikun (29 Jul 2023) + References to things that were added or changed in a specific version + should be specified as "(added in [version]) for two reasons: -- winbuild: improve check for static zlib + 1 - consistency - - Check for zlib static library name zlibstatic.lib. + 2 - to allow gen.pl to strip them out if deemed referring to too old + versions - zlib's static library has a different name depending on how it was - built. zlibstatic.lib is output by cmake. zlibstat.lib is output by - their pre-generated Visual Studio project files (in the contrib - directory) and defines ZLIB_WINAPI (ie it's meant to use stdcall - instead of cdecl if you end up exporting the zlib functions). + Closes #11821 - Prior to this change the makefile only checked for the latter. +Jay Satiro (8 Sep 2023) - Closes https://github.com/curl/curl/pull/11521 +- docs: mark --ssl-revoke-best-effort as Schannel specific -Daniel Stenberg (29 Jul 2023) + Closes https://github.com/curl/curl/pull/11760 -- configure: use the pkg-config --libs-only-l flag for libssh2 +Nathan Moinvaziri (8 Sep 2023) - ... instead of --libs, as that one also returns -L flags. +- schannel: fix ordering of cert chain info - Reported-by: Wilhelm von Thiele - Fixes #11538 - Closes #11539 + - Use CERT_CONTEXT's pbCertEncoded to determine chain order. -Viktor Szakats (29 Jul 2023) + CERT_CONTEXT from SECPKG_ATTR_REMOTE_CERT_CONTEXT contains + end-entity/server certificate in pbCertEncoded. We can use this pointer + to determine the order of certificates when enumerating hCertStore using + CertEnumCertificatesInStore. -- cmake: support building static and shared libcurl in one go + This change is to help ensure that the ordering of the certificate chain + requested by the user via CURLINFO_CERTINFO has the same ordering on all + versions of Windows. - This patch adds the ability to build a static and shared libcurl library - in a single build session. It also adds an option to select which one to - use when building the curl executable. + Prior to this change Schannel certificate order was reversed in 8986df80 + but that was later reverted in f540a39b when it was discovered that + Windows 11 22H2 does the reversal on its own. - New build options: - - `BUILD_STATIC_LIBS`. Default: `OFF`. - Enabled automatically if `BUILD_SHARED_LIBS` is `OFF`. - - `BUILD_STATIC_CURL`. Default: `OFF`. - Requires `BUILD_STATIC_LIBS` enabled. - Enabled automatically if building static libcurl only. - - `STATIC_LIB_SUFFIX`. Default: empty. - - `IMPORT_LIB_SUFFIX`. Default: `_imp` if implib filename would collide - with static lib name (typically with MSVC) in Windows builds. - Otherwise empty. + Ref: https://github.com/curl/curl/issues/9706 - Also: + Closes https://github.com/curl/curl/pull/11632 - - Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass - it directly to the compiler. This also allows to delete a condition - from `tests/server/CMakeLists.txt`. +Chris Talbot (8 Sep 2023) - - Complete a TODO by following the logic used in autotools (also for - `LIBCURL_NO_SHARED`), and set `-DCURL_STATICLIB` in `Cflags:` of - `libcurl.pc` for _static-only_ curl builds. +- digest: Use hostname to generate spn instead of realm - - Convert an existing CI test to build both shared and static libcurl. + In https://www.rfc-editor.org/rfc/rfc2831#section-2.1.2 - Closes #11505 + digest-uri-value should be serv-type "/" host , where host is: -Stefan Eissing (28 Jul 2023) + The DNS host name or IP address for the service requested. The + DNS host name must be the fully-qualified canonical name of the + host. The DNS host name is the preferred form; see notes on server + processing of the digest-uri. -- CI/awslc: add cache for build awslc library + Realm may not be the host, so we must specify the host explicitly. - Closes #11535 + Note this change only affects the non-SSPI digest code. The digest code + used by SSPI builds already uses the hostname to generate the spn. -- GHA/linux.yml: add caching + Ref: https://github.com/curl/curl/issues/11369 - Closes #11532 + Closes https://github.com/curl/curl/pull/11395 -Daniel Stenberg (27 Jul 2023) +Daniel Stenberg (7 Sep 2023) -- RELEASE-NOTES: synced +- docs: remove use of the word 'very' - Bump working version to 8.3.0 + It is mostly superfluous. proselint would complain. -- url: remove infof() output for "still name resolving" + Closes #11818 - The message does not help and might get spewed a lot during times. +- curl_multi_remove_handle.3: clarify what happens with connection - Reported-by: yushicheng7788 on github - Fixes #11394 - Closes #11529 + Closes #11817 -- KNOWN_BUGS: cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!" +- RELEASE-NOTES: synced - Closes #11244 +- test439: verify query canonization for aws-sigv4 -Stefan Eissing (27 Jul 2023) +- tool_operate: make aws-sigv4 not require TLS to be used -- CI: quiche updates + Maybe not used too often, but we want it for testing and it should work. - - remove quiche from standard `linux` workflow - - add mod_h2 caching to quiche workflow - - rename quiche to quiche-linux - - move version definitions into env section +- http_aws_sigv4: canonicalize the query - Closes #11528 + Percent encoding needs to be done using uppercase, and most + non-alphanumerical must be percent-encoded. -- http2: disable asssertion blocking OSSFuzz testing + Fixes #11794 + Reported-by: John Walker + Closes #11806 - - not clear how this triggers and it blocks OSSFuzz testing other - things. Since we handle the case with an error return, disabling the - assertion for now seems the best way forward. +Wyatt O'Day (7 Sep 2023) - Fixes #11500 - Closes #11519 +- lib: add ability to disable auths individually -- http2: fix in h2 proxy tunnel: progress in ingress on sending + Both with configure and cmake - - depending on what is tunneled, the proxy may never get invoked for - receiving data explicitly. Not progressing ingress may lead to stalls - due to missed WINDOW_UPDATEs. + Closes #11490 - CI: - - add a chache for building mod_h2 +Stefan Eissing (7 Sep 2023) - Closes #11527 +- ngtcp2: fix handling of large requests -- CI ngtcp2+quictls: use nghttpx cache as in quiche build + - requests >64K are send in parts to the filter + - fix parsing of the request to assemble it correctly + from several sends + - open a QUIC stream only when the complete request has + been collected -Jay Satiro (27 Jul 2023) + Closes #11815 -- bearssl: don't load CA certs when peer verification is disabled +- openssl: when CURLOPT_SSL_CTX_FUNCTION is registered, init x509 store before - We already do this for other SSL backends. + - we delay loading the x509 store to shorten the handshake time. + However an application callback installed via CURLOPT_SSL_CTX_FUNCTION + may need to have the store loaded and try to manipulate it. + - load the x509 store before invoking the app callback - Bug: https://github.com/curl/curl/pull/11457#issuecomment-1644587473 - Reported-by: kyled-dell@users.noreply.github.com + Fixes #11800 + Reported-by: guoxinvmware on github + Cloes #11805 - Closes https://github.com/curl/curl/pull/11497 +Daniel Stenberg (7 Sep 2023) -Daniel Stenberg (26 Jul 2023) +- krb5: fix "implicit conversion loses integer precision" warnings -- easy: remove #ifdefs to make code easier on the eye + conversions to/from enum and unsigned chars - Closes #11525 + Closes #11814 -Stefan Eissing (26 Jul 2023) +Stefan Eissing (7 Sep 2023) -- GHA: adding quiche workflow +- pytest: improvements - - adding separate quiche workflow to also build nghttpx server for testing + - set CURL_CI for pytest runs in CI environments + - exclude timing sensitive tests from CI runs + - for failed results, list only the log and stat of + the failed transfer - Closes #11517 + - fix type in http.c comment -Version 8.2.1 (26 Jul 2023) + Closes #11812 -Daniel Stenberg (26 Jul 2023) +- CI: move on to ngtcp2 v0.19.1 -- RELEASE-NOTES: synced + Closes #11809 - curl 8.2.1 release +Dan Fandrich (5 Sep 2023) -- THANKS: add contributors from 8.2.1 +- CI: run Circle macOS builds on x86 for now -- docs: provide more see also for cipher options + The ARM machines aren't ready for us and requesting them now causes + warnings e-mails to be sent to some PR pushers. - More cross references. Hide nroff errors. + Ref: #11771 - Closes #11513 +Viktor Szakats (5 Sep 2023) -- docs: mark two TLS options for TLS, not SSL +- http3: adjust cast for ngtcp2 v0.19.0 - Closes #11514 + ngtcp2 v0.19.0 made size of `ecn` member of `ngtcp2_pkt_info` + an `uint8_t` (was: `uint32_t`). Adjust our local cast accordingly. -Brad Harder (25 Jul 2023) + Fixes: + ``` + ./curl/lib/vquic/curl_ngtcp2.c:1912:12: warning: implicit conversion loses in + teger precision: 'uint32_t' (aka 'unsigned int') to 'uint8_t' (aka 'unsigned + char') [-Wimplicit-int-conversion] + pi.ecn = (uint32_t)ecn; + ~ ^~~~~~~~~~~~~ + ``` -- curl_multi_wait.3: fix arg quoting to doc macro .BR + Also bump ngtcp2, nghttp3 and nghttp2 to their latest versions in our + docs and CI. - Closes #11511 + Ref: https://github.com/ngtcp2/ngtcp2/commit/80447281bbc94af53f8aa7a4cfc19175 + 782894a3 + Ref: https://github.com/ngtcp2/ngtcp2/pull/877 + Closes #11798 -Daniel Stenberg (24 Jul 2023) +Stefan Eissing (5 Sep 2023) -- RELEASE-NOTES: synced +- http: fix sending of large requests -Viktor Szakats (24 Jul 2023) + - refs #11342 where errors with git https interactions + were observed + - problem was caused by 1st sends of size larger than 64KB + which resulted in later retries of 64KB only + - limit sending of 1st block to 64KB + - adjust h2/h3 filters to cope with parsing the HTTP/1.1 + formatted request in chunks -- cmake: update ngtcp2 detection + - introducing Curl_nwrite() as companion to Curl_write() + for the many cases where the sockindex is already known - Replace `OpenSSL` with `quictls` to follow the same change - in the v0.17.0 ngtcp2 release. + Fixes #11342 (again) + Closes #11803 - Follow-up to e0093b4b732f6495b0fb1cd6747cbfedcdcf63ed +- pytest: fix check for slow_network skips to only apply when intended - Closes #11508 + Closes #11801 -Stefan Eissing (24 Jul 2023) +Daniel Stenberg (5 Sep 2023) -- http: VLH, very large header test and fixes +- curl_url_get/set.3: add missing semicolon in SYNOPSIS - - adding tests using very large passwords in auth - - fixes general http sending to treat h3 like h2, and - not like http1.1 - - eliminate H2_HEADER max definitions and use the commmon - DYN_HTTP_REQUEST everywhere, different limits do not help - - fix http2 handling of requests denied by nghttp2 on send - to immediately report the refused stream +- CURLOPT_URL.3: explain curl_url_set() uses the same parser - Closes #11509 +- CURLOPT_URL.3: add two URL API calls in the see-also section -Andrei Rybak (23 Jul 2023) +Dan Fandrich (4 Sep 2023) -- CONTRIBUTE: drop mention of copyright year ranges +- CI: add a 32-bit i686 Linux build - Year ranges in copyrights were dropped in commits [1] and [2]. - Verification of year ranges in copyrights was dropped from script - 'scripts/copyright.pl' in commit [3]. However, the corresponding - passages in file 'docs/CONTRIBUTE.md' weren't updated. + This is done by cross-compiling under regular x86_64 Linux. Since the + kernel offers backwards compatibility, the binaries can be tested as + normal. - Drop mentions of copyright year ranges from 'docs/CONTRIBUTE.md'. + Closes #11799 - [1] 2bc1d775f (copyright: update all copyright lines and remove year - ranges, 2023-01-02) - [2] c46761bd8 (tests/http: remove year ranges from copyrights, - 2023-03-14) - [3] 0e293bacb (copyright.pl: cease doing year verifications, 2023-01-28) +- tests: fix a type warning on 32-bit x86 - Closes #11504 +Viktor Szakats (4 Sep 2023) -- CONTRIBUTE: fix syntax in commit message description +- tests: delete stray `.orig` file - File 'docs/CONTRIBUTE.md' includes a description of how one should write - commit messages in the curl project. Different possible parts of the - message are enclosed in square brackets. One exception is the section - describing how the curl project doesn't use "Signed-off-by" commit - trailers [1], which is enclosed in an opening curly brace paired with a - closing square bracket. + Follow-up to 331b89a319d0067fa1e6441719307cfef9c7960f + Closes #11797 - Fix the enclosing square brackets in description of "Signed-off-by" - trailers in commit messages in file 'docs/CONTRIBUTE.md'. +Daniel Stenberg (4 Sep 2023) - [1] See description of option '--signoff' in Git documentation: - https://git-scm.com/docs/git-commit +- RELEASE-NOTES: synced - Closes #11504 +Viktor Szakats (4 Sep 2023) -Daniel Stenberg (23 Jul 2023) +- lib: silence compiler warning in inet_ntop6 -- src/mkhelp: strip off escape sequences + ``` + ./curl/lib/inet_ntop.c:121:21: warning: possible misuse of comma operator her + e [-Wcomma] + cur.base = i, cur.len = 1; + ^ + ./curl/lib/inet_ntop.c:121:9: note: cast expression to void to silence warnin + g + cur.base = i, cur.len = 1; + ^~~~~~~~~~~~ + (void)( ) + ``` - At some point the nroff command stopped stripping off escape sequences, - so then this script needs to do the job instead. + Closes #11790 - Reported-by: VictorVG on github - Fixes #11501 - Closes #11503 +Daniel Stenberg (4 Sep 2023) -- KNOWN_BUGS: building for old macOS fails with gcc +- transfer: also stop the sending on closed connection - Closes #11441 + Previously this cleared the receiving bit only but in some cases it is + also still sending (like a request-body) when disconnected and neither + direction can continue then. -Jacob Hoffman-Andrews (22 Jul 2023) + Fixes #11769 + Reported-by: Oleg Jukovec + Closes #11795 -- rustls: update rustls-ffi 0.10.0 +John Bampton (4 Sep 2023) - This brings in version 0.21.0 of the upstream rustls implementation, - which notable includes support for IP address certificates. +- docs: change `sub-domain` to `subdomain` - Closes #10865 + https://en.wikipedia.org/wiki/Subdomain -Brad Harder (22 Jul 2023) + Closes #11793 -- websocket: rename arguments/variables to match docs +Stefan Eissing (4 Sep 2023) - Pedantry/semantic-alignment between functions, docs, comments with - respect to websocket protocol code; No functional change intended. +- multi: more efficient pollfd count for poll - * "totalsize", "framesize" becomes "fragsize" (we deal in frame fragments). + - do not use separate pollfds for sockets that have POLLIN+POLLOUT - * "sendflags" becomes "flags" + Closes #11792 - * use canonical CURL *handle +- http2: polish things around POST - Closes #11493 + - added test cases for various code paths + - fixed handling of blocked write when stream had + been closed inbetween attempts + - re-enabled DEBUGASSERT on send with smaller data size -Jan Macku (21 Jul 2023) + - in debug builds, environment variables can be set to simulate a slow + network when sending data. cf-socket.c and vquic.c support + * CURL_DBG_SOCK_WBLOCK: percentage of send() calls that should be + answered with a EAGAIN. TCP/UNIX sockets. + This is chosen randomly. + * CURL_DBG_SOCK_WPARTIAL: percentage of data that shall be written + to the network. TCP/UNIX sockets. + Example: 80 means a send with 1000 bytes would only send 800 + This is applied to every send. + * CURL_DBG_QUIC_WBLOCK: percentage of send() calls that should be + answered with EAGAIN. QUIC only. + This is chosen randomly. -- bug_report: use issue forms instead of markdown template + Closes #11756 - Issue forms allow you to define web-like input forms using YAML - syntax. It allows you to guide the reporter to get the required - information. +Daniel Stenberg (4 Sep 2023) - Signed-off-by: Jan Macku - Closes #11474 +- docs: add curl_global_trace to some SEE ALSO sections -Daniel Stenberg (21 Jul 2023) + Closes #11791 -- TODO: Obey Retry-After in redirects +- os400: fix checksrc nits - (remove "Set custom client ip when using haproxy protocol" which was - shipped in 8.2.0) + Closes #11789 - Mentioned-by: Yair Lenga - Closes #11447 +Nicholas Nethercote (3 Sep 2023) -- RELEASE-NOTES: synced +- hyper: remove `hyptransfer->endtask` -Oliver Roberts (21 Jul 2023) + `Curl_hyper_stream` needs to distinguish between two kinds of + `HYPER_TASK_EMPTY` tasks: (a) the `foreach` tasks it creates itself, and + (b) background tasks that hyper produces. It does this by recording the + address of any `foreach` task in `hyptransfer->endtask` before pushing + it into the executor, and then comparing that against the address of + tasks later polled out of the executor. -- amissl: fix AmiSSL v5 detection + This works right now, but there is no guarantee from hyper that the + addresses are stable. `hyper_executor_push` says "The executor takes + ownership of the task, which should not be accessed again unless + returned back to the user with `hyper_executor_poll`". That wording is a + bit ambiguous but with my Rust programmer's hat on I read it as meaning + the task returned with `hyper_executor_poll` may be conceptually the + same as a task that was pushed, but that there are no other guarantees + and comparing addresses is a bad idea. - Due to changes in the AmiSSL SDK, the detection needed adjusting. + This commit instead uses `hyper_task_set_userdata` to mark the `foreach` + task with a `USERDATA_RESP_BODY` value which can then be checked for, + removing the need for `hyptransfer->endtask`. This makes the code look + more like that hyper C API examples, which use userdata for every task + and never look at task addresses. - Closes #11477 + Closes #11779 -Alois Klink (21 Jul 2023) +Dave Cottlehuber (3 Sep 2023) -- unittest/makefile: remove unneeded unit1621_LDADD +- ws: fix spelling mistakes in examples and tests - The `unit1621_LDADD` variable has the exact same value as the `LDADD` - flag in `Makefile.am`, except without `@LDFLAGS@ @LIBCURL_LIBS@`. + Closes #11784 - This was originally added by [98e6629][], but I can't see any reason - why it exists, so we should remove it to clean things up. +Daniel Stenberg (3 Sep 2023) - [98e6629]: https://github.com/curl/curl/commit/98e6629154044e4ab1ee7cff8351c7 - ebcb131e88 +- tool_filetime: make -z work with file dates before 1970 - Closes #11494 + Fixes #11785 + Reported-by: Harry Sintonen + Closes #11786 -- unittest/makefile: remove unneeded unit1394_LDADD +Dan Fandrich (1 Sep 2023) - These custom `unit1394_LDADD` and similar automake overrides are no - longer neded. They were originally added by added by [8dac7be][] for - metalink support, but are no longer after [265b14d][] removed metalink. +- build: fix portability of mancheck and checksrc targets - [8dac7be]: https://github.com/curl/curl/commit/8dac7be438512a8725d3c71e9139bd - fdcac1ed8c - [265b14d]: https://github.com/curl/curl/commit/265b14d6b37c4298bd5556fabcbc37 - d36f911693 + At least FreeBSD preserves cwd across makefile lines, so rules + consisting of more than one "cd X; do_something" must be explicitly run + in a subshell to avoid this. This problem caused the Cirrus FreeBSD + build to fail when parallel make jobs were enabled. - Closes #11494 +- CI: adjust labeler match patterns for new & obsolete files -- cmake: add `libcurlu`/`libcurltool` for unit tests +- configure: trust pkg-config when it's used for zlib - Add a `libcurlu`/`libcurltool` static library that is compiled only for - unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not - built by default, they're only built if unit tests are built. + The library flags retrieved from pkg-config were later thrown out and + harded-coded, which negates the whole reason to use pkg-config. + Also, previously, the assumption was made that --libs-only-l and + --libs-only-L are the full decomposition of --libs, which is untrue and + would not allow linking against a static zlib. The new approach is + better in that it uses --libs, although only if --libs-only-l returns + nothing. - These libraries allow us to compile every unit test with CMake. + Bug: https://curl.se/mail/lib-2023-08/0081.html + Reported-by: Randall + Closes #11778 - Closes #11446 +Stefan Eissing (1 Sep 2023) -Daniel Stenberg (21 Jul 2023) +- CI/ngtcp2: clear wolfssl for when cache is ignored -- test979: test -u with redirect to (the same) absolute host + Closes #11783 - Verifies #11492 +Daniel Stenberg (1 Sep 2023) -- transfer: do not clear the credentials on redirect to absolute URL +- RELEASE-NOTES: synced - Makes test 979 work. Regression shipped in 8.2.0 from commit - dd4d1a26959f63a2c +Nicholas Nethercote (1 Sep 2023) - Fixes #11486 - Reported-by: Cloudogu Siebels - Closes #11492 +- hyper: fix a progress upload counter bug -Jon Rumsey (20 Jul 2023) + `Curl_pgrsSetUploadCounter` should be a passed a total count, not an + increment. -- os400: correct EXPECTED_STRING_LASTZEROTERMINATED + This changes the failing diff for test 579 with hyper from this: + ``` + Progress callback called with UL 0 out of 0[LF] + -Progress callback called with UL 8 out of 0[LF] + -Progress callback called with UL 16 out of 0[LF] + -Progress callback called with UL 26 out of 0[LF] + -Progress callback called with UL 61 out of 0[LF] + -Progress callback called with UL 66 out of 0[LF] + +Progress callback called with UL 29 out of 0[LF] + ``` + to this: + ``` + Progress callback called with UL 0 out of 0[LF] + -Progress callback called with UL 8 out of 0[LF] + -Progress callback called with UL 16 out of 0[LF] + -Progress callback called with UL 26 out of 0[LF] + -Progress callback called with UL 61 out of 0[LF] + -Progress callback called with UL 66 out of 0[LF] + +Progress callback called with UL 40 out of 0[LF] + ``` + Presumably a step in the right direction. - Correct EXPECTED_STRING_LASTZEROTERMINATED to account for - CURLOPT_HAPROXY_CLIENT_IP which requires EBCDIC to ASCII conversion when - passed into curl_easy_setopt(). + Closes #11780 - Closes #11476 +Daniel Stenberg (1 Sep 2023) -Oliver Roberts (20 Jul 2023) +- awssiv4: avoid freeing the date pointer on error -- amissl: add missing signal.h include + Since it was not allocated, don't free it even if it was wrong syntax - In some environments, signal.h is already included, but not in others - which cause compilation to fail, so explictly include it. + Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61908 - Closes #11478 + Follow-up to b137634ba3adb -- amigaos: fix sys/mbuf.h m_len macro clash + Closes #11782 - The updated Curl_http_req_make and Curl_http_req_make2 functions spawned - a parameter called m_len. The AmigaOS networking headers, derived from - NetBSD, contain "#define m_len m_hdr.mh_len" which clashes with - this. Since we do not actually use mbuf, force the include file to be - ignored, removing the clash. +Stefan Eissing (1 Sep 2023) - Closes #11479 +- CI: ngtcp2-linux: use separate caches for tls libraries -Daniel Stenberg (20 Jul 2023) + allow ever changing master for wolfssl -- socks: print ipv6 address within brackets + Closes #11766 - Fixes #11483 - Closes #11484 +- replace `master` as wolfssl-version with recent commit -Christian Schmitz (20 Jul 2023) +- wolfssl, use master again in CI -- libcurl-errors.3: add CURLUE_OK + - with the shared session update fix landed in master, it + is time to use that in our CI again - Closes #11488 +Nicholas Nethercote (31 Aug 2023) -Oliver Roberts (20 Jul 2023) +- tests: fix formatting errors in `FILEFORMAT.md`. -- cfilters: rename close/connect functions to avoid clashes + Without the surrounding backticks, these tags get swallowed when the + markdown is rendered. - Rename `close` and `connect` in `struct Curl_cftype` for - consistency and to avoid clashes with macros of the same name - (the standard AmigaOS networking connect() function is implemented - via a macro). + Closes #11777 - Closes #11491 +Viktor Szakats (31 Aug 2023) -Stefan Eissing (20 Jul 2023) +- cmake: add support for `CURL_DEFAULT_SSL_BACKEND` -- http2: fix regression on upload EOF handling + Allow overriding the default TLS backend via a CMake setting. - - a regression introduced by c9ec85121110d7cbbbed2990024222c8f5b8afe5 - where optimization of small POST bodies leads to a new code path - for such uploads that did not trigger the "done sending" event - - add triggering this event for early "upload_done" situations + E.g.: + `cmake [...] -DCURL_DEFAULT_SSL_BACKEND=mbedtls` - Fixes #11485 - Closes #11487 - Reported-by: Aleksander Mazur + Accepted values: bearssl, gnutls, mbedtls, openssl, rustls, + schannel, secure-transport, wolfssl -Daniel Stenberg (19 Jul 2023) + The passed string is baked into the curl/libcurl binaries. + The value is case-insensitive. -- configure: check for nghttp2_session_get_stream_local_window_size + We added a similar option to autotools in 2017 via + c7170e20d0a18ec8a514b4daa53bcdbb4dcb3a05. - The http2 code uses it now. Introduced in nghttp2 1.15.0 (Sep 2016) + TODO: Convert to lowercase to improve reproducibility. - Fixes #11470 - Reported-by: Paul Howarth - Closes #11473 + Closes #11774 -Stefan Eissing (19 Jul 2023) +- sectransp: fix compiler warnings -- quiche: fix segfault and other things + https://github.com/curl/curl-for-win/actions/runs/6037489221/job/16381860220# + step:3:11046 + ``` + /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:2435:1 + 4: warning: unused variable 'success' [-Wunused-variable] + OSStatus success; + ^ + /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vtls/sectransp.c:3300:4 + 4: warning: unused parameter 'sha256len' [-Wunused-parameter] + size_t sha256len) + ^ + ``` - - refs #11449 where a segfault is reported when IP Eyeballing did - not immediately connect but made several attempts - - The transfer initiating the eyeballing was initialized too early, - leadding to references to the filter instance that was then - replaced in the subsequent eyeball attempts. That led to a use - after free in the buffer handling for the transfer - - transfers are initiated now more lazy (like in the ngtcp2 filter), - when the stream is actually opened - - suppress reporting on quiche event errors for "other" transfers - than the current one to not fail a transfer due to faults in - another one. - - revert recent return value handling for quiche_h3_recv_body() - to not indicate an error but an EAGAIN situation. We wish quiche - would document what functions return. + Closes #11773 - Fixes #11449 - Closes #11469 - Reported-by: ウさん +- tidy-up: mostly whitespace nits -Daniel Stenberg (19 Jul 2023) + - delete completed TODO from `./CMakeLists.txt`. + - convert a C++ comment to C89 in `./CMake/CurlTests.c`. + - delete duplicate EOLs from EOF. + - add missing EOL at EOF. + - delete whitespace at EOL (except from expected test results). + - convert tabs to spaces. + - convert CRLF EOLs to LF in GHA yaml. + - text casing fixes in `./CMakeLists.txt`. + - fix a codespell typo in `packages/OS400/initscript.sh`. -- hostip: return IPv6 first for localhost resolves + Closes #11772 - Fixes #11465 - Reported-by: Chilledheart on github - Closes #11466 +Dan Fandrich (31 Aug 2023) + +- CI: remove Windows builds from Cirrus, without replacement -Harry Sintonen (19 Jul 2023) + If we don't do this, all coverage on Cirrus will cease in a few days. By + removing the Windows builds, the FreeBSD one should still continue + as before. The Windows builds will need be moved to another service to + maintain test coverage. -- tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T + Closes #11771 - - a variable was renamed, and some use of it wasn't. this fixes the - build. +- CI: switch macOS ARM build from Cirrus to Circle CI - Closes #11468 + Cirrus is drastically reducing their free tier on Sept. 1, so they will + no longer perform all these builds for us. All but one build has been + moved, with the LibreSSL one being dropped because of linking problems + on Circle. -Stefan Eissing (19 Jul 2023) + One important note about this change is that Circle CI is currently + directing all these builds to x86_64 hardware, despite them requesting + ARM. This is because ARM nodes are scheduled to be available on the + free tier only in December. This reduces our architectural diversity + until then but it should automatically come back once those machines are + enabled. -- quiche: fix lookup of transfer at multi +- CI: use the right variable for BSD make - - refs #11449 where weirdness in quiche multi connection tranfers was - observed - - fixes lookup of transfer for a quiche event to take the connection - into account - - formerly, a transfer with the same stream_id, but on another connection - could be found + BSD uses MAKEFLAGS instead of MAKE_FLAGS so it wasn't doing parallel + builds before. - Closes #11462 +- CI: drop the FreeBSD 12.X build -Daniel Stenberg (19 Jul 2023) + Cirrus' new free tier won't let us have many builds, so drop the + nonessential ones. The FreeBSD 13.X build will still give us the most + relevant FreeBSD coverage. -- RELEASE-NOTES: synced +- CI: move the Alpine build from Cirrus to GHA - bump to 8.2.1 + Cirrus is reducing their free tier to next to nothing, so we must move + builds elsewhere. -John Haugabook (19 Jul 2023) +Stefan Eissing (30 Aug 2023) -- ciphers.d: put URL in first column +- test_07_upload.py: fix test_07_34 curl args - This makes the URL turn into a link properly when "webified". + - Pass correct filename to --data-binary. - Fixes https://github.com/curl/curl-www/issues/270 - Closes #11464 + Prior to this change --data-binary was passed an incorrect filename due + to a missing separator in the arguments list. Since aacbeae7 curl will + error on incorrect filenames for POST. -Version 8.2.0 (19 Jul 2023) + Fixes https://github.com/curl/curl/issues/11761 + Closes https://github.com/curl/curl/pull/11763 -Daniel Stenberg (19 Jul 2023) +Nicholas Nethercote (30 Aug 2023) -- RELEASE-NOTES: synced +- tests: document which tests fail due to hyper's lack of trailer support. - 8.2.0 release + Closes #11762 -- THANKS-filter: strip out "GitHub" +- docs: removing "pausing transfers" from HYPER.md. -- THANKS: add contributors from 8.2.0 + It's a reference to #8600, which was fixed by #9070. -- RELEASE-PROCEDURE.md: adjust the release dates + Closes #11764 -Stefan Eissing (17 Jul 2023) +Patrick Monnerat (30 Aug 2023) -- quiche: fix defects found in latest coverity report +- os400: handle CURL_TEMP_PRINTF() while building bind source - Closes #11455 + Closes #11547 -Daniel Stenberg (17 Jul 2023) +- os400: build test servers -- quiche: avoid NULL deref in debug logging + Also fix a non-compliant main prototype in disabled.c. - Coverity reported "Dereference after null check" + Closes #11547 - If stream is NULL and the function exits, the logging must not deref it. +- tests: fix compilation error for os400 - Closes #11454 + OS400 uses BSD 4.3 setsockopt() prototype by default: this does not + define parameter as const, resulting in an error if actual parameter is + const. Remove the const keyword from the actual parameter cast: this + works in all conditions, even if the formal parameter uses it. -Stefan Eissing (17 Jul 2023) + Closes #11547 -- http2: treat initial SETTINGS as a WINDOW_UPDATE +- os400: make programs and command name configurable - - refs #11426 where spurious stalls on large POST requests - are reported - - the issue seems to involve the following - * first stream on connection adds up to 64KB of POST - data, which is the max default HTTP/2 stream window size - transfer is set to HOLD - * initial SETTINGS from server arrive, enlarging the stream - window. But no WINDOW_UPDATE is received. - * curl stalls - - the fix un-HOLDs a stream on receiving SETTINGS, not - relying on a WINDOW_UPDATE from lazy servers + Closes #11547 - Closes #11450 +- os400: move build configuration parameters to a separate script -Daniel Stenberg (17 Jul 2023) + They can then easily be overriden in a script named "config400.override" + that is not part of the distribution. -- ngtcp2: assigning timeout, but value is overwritten before used + Closes #11547 - Reported by Coverity +- os400: implement CLI tool - Closes #11453 + This is provided as a QADRT (ascii) program, a link to it in the IFS and + a minimal CL command. -- krb5: add typecast to please Coverity + Closes #11547 -Derzsi Dániel (16 Jul 2023) +Matthias Gatto (30 Aug 2023) -- wolfssl: support setting CA certificates as blob +- lib: fix aws-sigv4 having date header twice in some cases - Closes #11445 + When the user was providing the header X-XXX-Date, the header was + re-added during signature computation, and we had it twice in the + request. -- wolfssl: detect when TLS 1.2 support is not built into wolfssl + Reported-by: apparentorder@users.noreply.github.com - Closes #11444 + Signed-off-by: Matthias Gatto -Graham Campbell (15 Jul 2023) + Fixes: https://github.com/curl/curl/issues/11738 + Closes: https://github.com/curl/curl/pull/11754 -- CI: bump nghttp2 from 1.55.0 to 1.55.1 +Jay Satiro (30 Aug 2023) - Closes #11442 +- multi: remove 'processing: ' debug message -Daniel Stenberg (15 Jul 2023) + - Remove debug message added by e024d566. -- curl: return error when asked to use an unsupported HTTP version + Closes https://github.com/curl/curl/pull/11759 - When one of the following options are used but the libcurl in use does - not support it: +- ftp: fix temp write of ipv6 address - --http2 - --http2-prior-knowledge - --proxy-http2 + - During the check to differentiate between a port and IPv6 address + without brackets, write the binary IPv6 address to an in6_addr. - Closes #11440 + Prior to this change the binary IPv6 address was erroneously written to + a sockaddr_in6 'sa6' when it should have been written to its in6_addr + member 'sin6_addr'. There's no fallout because no members of 'sa6' are + accessed before it is later overwritten. -Chris Paulson-Ellis (14 Jul 2023) + Closes https://github.com/curl/curl/pull/11747 -- cf-socket: don't bypass fclosesocket callback if cancelled before connect +- tool: change some fopen failures from warnings to errors - After upgrading to 8.1.2 from 7.84.0, I found that sockets were being - closed without calling the fclosesocket callback if a request was - cancelled after the associated socket was created, but before the socket - was connected. This lead to an imbalance of fopensocket & fclosesocket - callbacks, causing problems with a custom event loop integration using - the multi-API. + - Error on missing input file for --data, --data-binary, + --data-urlencode, --header, --variable, --write-out. - This was caused by cf_socket_close() calling sclose() directly instead - of calling socket_close() if the socket was not active. For regular TCP - client connections, the socket is activated by cf_socket_active(), which - is only called when the socket completes the connect. + Prior to this change if a user of the curl tool specified an input file + for one of the above options and that file could not be opened then it + would be treated as zero length data instead of an error. For example, a + POST using `--data @filenametypo` would cause a zero length POST which + is probably not what the user intended. - As far as I can tell, this issue has existed since 7.88.0. That is, - since the code in question was introduced by: - commit 71b7e0161032927cdfb4e75ea40f65b8898b3956 - Author: Stefan Eissing - Date: Fri Dec 30 09:14:55 2022 +0100 + Closes https://github.com/curl/curl/pull/11677 - lib: connect/h2/h3 refactor +- hostip: fix typo - Closes #11439 +Davide Masserut (29 Aug 2023) -Daniel Stenberg (13 Jul 2023) +- tool: avoid including leading spaces in the Location hyperlink -- tool_parsecfg: accept line lengths up to 10M + Co-authored-by: Dan Fandrich - Bumped from 100K set in 47dd957daff9 + Closes #11735 - Reported-by: Antoine du Hamel - Fixes #11431 - Closes #11435 +Daniel Stenberg (29 Aug 2023) -Stefan Eissing (13 Jul 2023) +- SECURITY-PROCESS.md: not a sec issue: Tricking user to run a cmdline -- CI: brew fix for openssl in default path + Closes #11757 - If brew install/update links openssl into /usr/local, it will be found - before anything we add with `-isystem path` to CPP/LDLFAGS. Get rid of - that by unlinking the keg. +- connect: stop halving the remaining timeout when less than 600 ms left - Fixes #11413 - Closes #11436 + When curl wants to connect to a host, it always has a TIMEOUT. The + maximum time it is allowed to spend until a connect is confirmed. -Daniel Stenberg (13 Jul 2023) + curl will try to connect to each of the IP adresses returned for the + host. Two loops, one for each IP family. -- RELEASE-NOTES: synced + During the connect loop, while curl has more than one IP address left to + try within a single address family, curl has traditionally allowed (time + left/2) for *this* connect attempt. This, to not get stuck on the + initial addresses in case the timeout but still allow later addresses to + get attempted. -Ondřej Koláček (13 Jul 2023) + This has the downside that when users set a very short timeout and the + host has a large number of IP addresses, the effective result might be + that every attempt gets a little too short time. -- sectransp: fix EOF handling + This change stop doing the divided-by-two if the total time left is + below a threshold. This threshold is 600 milliseconds. - Regression since the large refactor from 2022 + Closes #11693 - Closes #11427 +- asyn-ares: reduce timeout to 2000ms -Daniel Stenberg (13 Jul 2023) + When UDP packets get lost this makes for slightly faster retries. This + lower timeout is used by @c-ares itself by default starting next + release. -- checksrc: quote the file name to work with "funny" letters + Closes #11753 - Closes #11437 +John Bampton (29 Aug 2023) -Karthikdasari0423 (13 Jul 2023) +- misc: remove duplicate words -- HTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0 + Closes #11740 - Follow-up to e0093b4b732f6 +Daniel Stenberg (29 Aug 2023) - Closes #11433 +- RELEASE-NOTES: synced -Daniel Stenberg (13 Jul 2023) +- wolfSSL: avoid the OpenSSL compat API when not needed -- CURLOPT_MIMEPOST.3: clarify what setting to NULL means + ... and instead call wolfSSL functions directly. - Follow-up to e08382a208d4e480 + Closes #11752 - Closes #11430 +Viktor Szakats (28 Aug 2023) -Tatsuhiro Tsujikawa (12 Jul 2023) +- lib: fix null ptr derefs and uninitialized vars (h2/h3) -- ngtcp2: build with 0.17.0 and nghttp3 0.13.0 + Fixing compiler warnings with gcc 13.2.0 in unity builds. - - ngtcp2_crypto_openssl was renamed to ngtcp2_crypto_quictls. + Assisted-by: Jay Satiro + Assisted-by: Stefan Eissing + Closes #11739 - Closes #11428 +Jay Satiro (28 Aug 2023) -- CI: Bump ngtcp2, nghttp3, and nghttp2 +- secureserver.pl: fix stunnel version parsing - Closes #11428 + - Allow the stunnel minor-version version part to be zero. -James Fuller (11 Jul 2023) + Prior to this change with the stunnel version scheme of . + if either part was 0 then version parsing would fail, causing + secureserver.pl to fail with error "No stunnel", causing tests that use + the SSL protocol to be skipped. As a practical matter this bug can only + be caused by a minor-version part of 0, since the major-version part is + always greater than 0. -- example/maxconnects: set maxconnect example + Closes https://github.com/curl/curl/pull/11722 - Closes #11343 +- secureserver.pl: fix stunnel path quoting -Pontakorn Prasertsuk (11 Jul 2023) + - Store the stunnel path in the private variable $stunnel unquoted and + instead quote it in the command strings. -- http2: send HEADER & DATA together if possible + Prior to this change the quoted stunnel path was passed to perl's file + operators which cannot handle quoted paths. For example: - Closes #11420 + $stunnel = "\"/C/Program Files (x86)/stunnel/bin/tstunnel\""; + if(-x $stunnel or -x "$stunnel") + # false even if path exists and is executable -Daniel Stenberg (11 Jul 2023) + Our other test scripts written in perl, unlike this one, use servers.pm + which has a global $stunnel variable with the path stored unquoted and + therefore those scripts don't have this problem. -- CI: use wolfSSL 5.6.3 in builds + Closes https://github.com/curl/curl/pull/11721 - No using master anymore +Daniel Stenberg (28 Aug 2023) - Closes #11424 +- altsvc: accept and parse IPv6 addresses in response headers -SaltyMilk (11 Jul 2023) + Store numerical IPv6 addresses in the alt-svc file with the brackets + present. -- fopen: optimize + Verify with test 437 and 438 - Closes #11419 + Fixes #11737 + Reported-by: oliverpool on github + Closes #11743 -Daniel Stenberg (11 Jul 2023) +- libtest: use curl_free() to free libcurl allocated data -- cmake: make use of snprintf + In several test programs. These mistakes are not detected or a problem + as long as memdebug.h is included, as that provides the debug wrappers + for all memory functions in the same style libcurl internals do it, + which makes curl_free and free effectively the same call. - Follow-up to 935b1bd4544a23a91d68 + Reported-by: Nicholas Nethercote + Closes #11746 - Closes #11423 +Jay Satiro (28 Aug 2023) -Stefan Eissing (11 Jul 2023) +- disable.d: explain --disable not implemented prior to 7.50.0 -- macOS: fix taget detection + Option -q/--disable was added in 5.0 but only -q was actually + implemented. Later --disable was implemented in e200034 (precedes + 7.49.0), but incorrectly, and fixed in 6dbc23c (precedes 7.50.0). - - TARGET_OS_OSX is not always defined on macOS - - this leads to missing symbol Curl_macos_init() - - TargetConditionals.h seems to define these only when - dynamic targets are enabled (somewhere?) - - this PR fixes that on my macOS 13.4.1 - - I have no clue why CI builds worked without it + Reported-by: pszlazak@users.noreply.github.com - Follow-up to c7308592fb8ba213fc2c1 - Closes #11417 + Fixes https://github.com/curl/curl/issues/11710 + Closes #11712 -Stan Hu (9 Jul 2023) +Nicholas Nethercote (28 Aug 2023) -- hostip.c: Move macOS-specific calls into global init call +- hyper: fix ownership problems - https://github.com/curl/curl/pull/7121 introduced a macOS system call - to `SCDynamicStoreCopyProxies`, which is invoked every time an IP - address needs to be resolved. + Some of these changes come from comparing `Curl_http` and + `start_CONNECT`, which are similar, and adding things to them that are + present in one and missing in another. - However, this system call is not thread-safe, and macOS will kill the - process if the system call is run first in a fork. To make it possible - for the parent process to call this once and prevent the crash, only - invoke this system call in the global initialization routine. + The most important changes: + - In `start_CONNECT`, add a missing `hyper_clientconn_free` call on the + happy path. + - In `start_CONNECT`, add a missing `hyper_request_free` on the error + path. + - In `bodysend`, add a missing `hyper_body_free` on an early-exit path. + - In `bodysend`, remove an unnecessary `hyper_body_free` on a different + error path that would cause a double-free. + https://docs.rs/hyper/latest/hyper/ffi/fn.hyper_request_set_body.html + says of `hyper_request_set_body`: "This takes ownership of the + hyper_body *, you must not use it or free it after setting it on the + request." This is true even if `hyper_request_set_body` returns an + error; I confirmed this by looking at the hyper source code. - In addition, this change is beneficial because it: + Other changes are minor but make things slightly nicer. - 1. Avoids extra macOS system calls for every IP lookup. - 2. Consolidates macOS-specific initialization in a separate file. + Closes #11745 - Fixes #11252 - Closes #11254 +Daniel Stenberg (28 Aug 2023) -Daniel Stenberg (9 Jul 2023) +- multi.h: the 'revents' field of curl_waitfd is supported -- docs: use a space after RFC when spelling out RFC numbers + Since 6d30f8ebed34e7276 - Closes #11382 + Reported-by: Nicolás Ojeda Bär + Ref: #11748 + Closes #11749 -Margu (9 Jul 2023) +Gerome Fournier (27 Aug 2023) -- imap-append.c: update to make it more likely to work +- tool_paramhlp: improve str2num(): avoid unnecessary call to strlen() - Fixes #10300 - Closes #11397 + Closes #11742 -Emanuele Torre (9 Jul 2023) +Daniel Stenberg (27 Aug 2023) -- tool_writeout_json: fix encoding of control characters +- docs: mention critical files in same directories as curl saves - Control characters without a special escape sequence e.g. %00 or %06 - were being encoded as "u0006" instead of "\u0006". + ... cannot be fully protected. Don't do it. - Ref: https://github.com/curl/trurl/pull/214#discussion_r1257487858 - Closes #11414 + Co-authored-by: Jay Satiro + Reported-by: Harry Sintonen + Fixes #11530 + Closes #11701 -Stefan Eissing (9 Jul 2023) +John Hawthorn (26 Aug 2023) -- http3/ngtcp2: upload EAGAIN handling +- OpenSSL: clear error queue after SSL_shutdown - - refs #11389 where IDLE timeouts on upload are reported - - reword ngtcp2 expiry handling to apply to both send+recv - calls into the filter - - EAGAIN uploads similar to the recent changes in HTTP/2, e.g. - report success only when send data was ACKed. - - HOLD sending of EAGAINed uploads to avoid cpu busy loops - - rename internal function for consistency with HTTP/2 - implementation + We've seen errors left in the OpenSSL error queue (specifically, + "shutdown while in init") by adding some logging it revealed that the + source was this file. - Fixes #11389 - Closes #11390 + Since we call SSL_read and SSL_shutdown here, but don't check the return + code for an error, we should clear the OpenSSL error queue in case one + was raised. -Brian Nixon (9 Jul 2023) + This didn't affect curl because we call ERR_clear_error before every + write operation (a0dd9df9ab35528eb9eb669e741a5df4b1fb833c), but when + libcurl is used in a process with other OpenSSL users, they may detect + an OpenSSL error pushed by libcurl's SSL_shutdown as if it was their + own. -- tool_easysrc.h: correct `easysrc_perform` for `CURL_DISABLE_LIBCURL_OPTION` + Co-authored-by: Satana de Sant'Ana - Closes #11398 + Closes #11736 -Daniel Stenberg (9 Jul 2023) +Alexander Kanavin (25 Aug 2023) -- RELEASE-NOTES: synced +- tests: update cookie expiry dates to far in the future -- transfer: clear credentials when redirecting to absolute URL + This allows testing Y2038 with system time set to after that, so that + actual Y2038 issues can be exposed, and not masked by expiry errors. - Make sure the user and password for the second request is taken from the - redirected-to URL. + Fixes #11576 + Closes #11610 - Add test case 899 to verify. +John Bampton (25 Aug 2023) - Reported-by: James Lucas - Fixes #11410 - Closes #11412 +- misc: fix spelling -Stefan Eissing (8 Jul 2023) + Closes #11733 -- hyper: fix EOF handling on input +Daniel Stenberg (25 Aug 2023) - We ran out of disc space due to an infinite loop with debug logging +- cmdline-opts/page-header: clarify stronger that !opt == URL - Fixes #11377 - Closes #11385 - Reported-by: Dan Fandrich + Everything provided on the command line that is not an option (or an + argument to an option) is treated as a URL. -- http2: raise header limitations above and beyond + Closes #11734 - - not quite to infinity - - rewrote the implementation of our internal HTTP/1.x request - parsing to work with very large lines using dynbufs. - - new default limit is `DYN_HTTP_REQUEST`, aka 1MB, which - is also the limit of curl's general HTTP request processing. +- tests/runner: fix %else handling - Fixes #11405 - Closes #11407 + Getting the show state proper for %else and %endif did not properly work + in nested cases. -Juan Cruz Viotti (8 Jul 2023) + Follow-up to 3d089c41ea9 -- curl_easy_nextheader.3: add missing open parenthesis examples + Closes #11731 - Closes #11409 - Signed-off-by: Juan Cruz Viotti +Nicholas Nethercote (25 Aug 2023) -Dan Fandrich (7 Jul 2023) +- docs: Remove mention of #10803 from `KNOWN_BUGS`. -- CI: enable verbose test output on pytest + Because the leaks have been fixed. - This shows individual pass/fail status on tests and makes this output - consistent with other jobs' pytest invocations. +- c-hyper: fix another memory leak in `Curl_http`. -Stefan Eissing (28 Jun 2023) + There is a `hyper_clientconn_free` call on the happy path, but not one + on the error path. This commit adds one. -- http2: fix crash in handling stream weights + Fixes the second memory leak reported by Valgrind in #10803. - - Delay the priority handling until the stream has been opened. + Fixes #10803 + Closes #11729 - - Add test2404 to reproduce and verify. +- c-hyper: fix a memory leak in `Curl_http`. - Weights may change "on the run", which is why there are checks in - general egress handling. These must not trigger when the stream has not - been opened yet. + A request created with `hyper_request_new` must be consumed by either + `hyper_clientconn_send` or `hyper_request_free`. - Reported-by: jbgoog@users.noreply.github.com + This is not terrifically clear from the hyper docs -- + `hyper_request_free` is documented only with "Free an HTTP request if + not going to send it on a client" -- but a perusal of the hyper code + confirms it. - Fixes https://github.com/curl/curl/issues/11379 - Closes https://github.com/curl/curl/pull/11384 + This commit adds a `hyper_request_free` to the `error:` path in + `Curl_http` so that the request is consumed when an error occurs after + the request is created but before it is sent. -- tests/http: Add mod_h2 directive `H2ProxyRequests` + Fixes the first memory leak reported by Valgrind in #10803. - master of mod_h2 now requires H2ProxyRequests directives for forward - proxying with HTTP/2 to work. + Closes #11729 - Ref: https://github.com/icing/mod_h2/commit/3897a7086 +Daniel Stenberg (25 Aug 2023) - Closes https://github.com/curl/curl/pull/11392 +- RELEASE-NOTES: synced -Dan Fandrich (28 Jun 2023) +John Bampton (25 Aug 2023) -- CI: make Appveyor job names unique +- misc: spellfixes - Two otherwise identical mingw-w64 jobs now have their differing compiler - versions mentioned in their names. + Closes #11730 -Sheshadri.V (25 Jun 2023) +Daniel Stenberg (25 Aug 2023) -- curl.h: include for vxworks +- tests: add support for nested %if conditions - Closes #11356 + Provides more flexiblity to test cases. -Dan Fandrich (24 Jun 2023) + Also warn and bail out if there is an '%else' or %endif' without a + preceeding '%if'. -- CI: enable parallel make in more builds + Ref: #11610 + Closes #11728 - Most CI services provide at least two cores, so enable parallel make - jobs to take advantage of that for builds. Some dependencies aren't safe - to build in parallel so leave those as-is. Also, rename a few - workflows to eliminate duplicate names and provide a better idea what - they're about. +- time-cond.d: mention what happens on a missing file -- CI: don't install impacket if tests are not run + Closes #11727 - It just wastes time and bandwidth and isn't even used. +Christian Hesse (24 Aug 2023) -divinity76 (24 Jun 2023) +- docs/cmdline-opts: match the current output -- configure: the --without forms of the options are also gone + The release date has been added in output, reflect that in documentation. - --without-darwin-ssl and --without-metalink + Closes #11723 - Closes #11378 +Daniel Stenberg (24 Aug 2023) -Daniel Stenberg (23 Jun 2023) +- lib: minor comment corrections -- configure: add check for ldap_init_fd +- docs: rewrite to present tense - ... as otherwise the configure script will say it is OpenLDAP in the - summary, but not set the USE_OPENLDAP define, therefor not using the - intended OpenLDAP code paths. + ... instead of using future tense. - Regression since 4d7385446 (7.85.0) - Fixes #11372 - Closes #11374 - Reported-by: vlkl-sap on github + + numerous cleanups and improvements + + stick to "reuse" not "re-use" + + fewer contractions -Michał Petryka (23 Jun 2023) + Closes #11713 -- cmake: stop CMake from quietly ignoring missing Brotli +- urlapi: setting a blank URL ("") is not an ok URL - The CMake project was set to `QUIET` for Brotli instead of - `REQUIRED`. This makes builds unexpectedly ignore missing Brotli even - when `CURL_BROTLI` is enabled. + Test it in 1560 + Fixes #11714 + Reported-by: ad0p on github + Closes #11715 - Closes #11376 +- spelling: use 'reuse' not 're-use' in code and elsewhere -Emanuele Torre (22 Jun 2023) + Unify the spelling as both versions were previously used intermittently -- docs: add more .IP after .RE to fix indentation of generate paragraphs + Closes #11717 - follow-up from 099f41e097c030077b8ec078f2c2d4038d31353b +Michael Osipov (23 Aug 2023) - I just thought of checking all the other files with .RE, and I found 6 - other files that were missing .IP at the end. +- system.h: add CURL_OFF_T definitions on HP-UX with HP aCC - Closes #11375 + HP-UX on IA64 provides two modes: 32 and 64 bit while 32 bit being the + default one. Use "long long" in 32 bit mode and just "long" in 64 bit + mode. -Stefan Eissing (22 Jun 2023) + Closes #11718 -- http2: h2 and h2-PROXY connection alive check fixes +Dan Fandrich (22 Aug 2023) - - fix HTTP/2 check to not declare a connection dead when - the read attempt results in EAGAIN - - add H2-PROXY alive check as for HTTP/2 that was missing - and is needed - - add attach/detach around Curl_conn_is_alive() and remove - these in filter methods - - add checks for number of connections used in some test_10 - proxy tunneling tests +- tests: don't call HTTP errors OK in test cases - Closes #11368 + Some HTTP errors codes were accompanied by the text OK, which causes + some cognitive dissonance when reading them. -- http2: error stream resets with code CURLE_HTTP2_STREAM +- http: close the connection after a late 417 is received - - refs #11357, where it was reported that HTTP/1.1 downgrades - no longer works - - fixed with suggested change - - added test_05_03 and a new handler in the curltest module - to reproduce that downgrades work + In this situation, only part of the data has been sent before aborting + so the connection is no longer usable. - Fixes #11357 - Closes #11362 - Reported-by: Jay Satiro + Assisted-by: Jay Satiro + Fixes #11678 + Closes #11679 -Daniel Stenberg (22 Jun 2023) +- runtests: slightly increase the longest log file displayed -- connect-timeout.d: mention that the DNS lookup is included + The new limit provides enough space for a 64 KiB data block to be logged + in a trace file, plus a few lines at the start and end for context. This + happens to be the amount of data sent at a time in a PUT request. - Closes #11370 +- tests: add delay command to the HTTP server -Emanuele Torre (22 Jun 2023) + This adds a delay after client connect. -- quote.d: fix indentation of generated paragraphs +Daniel Stenberg (22 Aug 2023) - quote.d was missing a .IP at the end which caused the paragraphs - generated for See-also, Multi, and Example to not be indented correctly. +- cirrus: install everthing with pkg, avoid pip - I also remove a redundant "This option can be used multiple times.", and - replaced .IP "item" with .TP .B "item" to make more clear which lines - are part of the list of commands and which aren't. + Assisted-by: Sevan Janiyan - Closes #11371 + Closes #11711 -Paul Wise (22 Jun 2023) +- curl_url*.3: update function descriptions -- checksrc: modernise perl file open + - expand and clarify several descriptions + - avoid using future tense all over - Use regular variables and separate file open modes from filenames. + Closes #11708 - Suggested by perlcritic +- RELEASE-NOTES: synced - Copied from https://github.com/curl/trurl/commit/f2784a9240f47ee28a845 +Stefan Eissing (21 Aug 2023) - Closes #11358 +- CI/cirrus: disable python install on FreeBSD -Dan Fandrich (21 Jun 2023) + - python cryptography package does not build build FreeBSD + - install just mentions "error" + - this gets the build and the main test suite going again -- runtests: work around a perl without SIGUSR1 + Closes #11705 - At least msys2 perl v5.32.1 doesn't seem to define this signal. Since - this signal is only used for debugging, just ignore if setting it fails. +- test2600: fix flakiness on low cpu - Reported-by: Marcel Raad - Fixes #11350 - Closes #11366 + - refs #11355 where failures to to low cpu resources in CI + are reported + - vastly extend CURLOPT_CONNECTTIMEOUT_MS and max durations + to test cases + - trigger Curl_expire() in test filter to allow re-checks before + the usual 1second interval -- runtests: include missing valgrind package + Closes #11690 - use valgrind was missing which caused torture tests with valgrind - enabled to fail. +Maksim Sciepanienka (20 Aug 2023) - Reported-by: Daniel Stenberg - Fixes #11364 - Closes #11365 +- tool_urlglob: use the correct format specifier for curl_off_t in msnprintf -- runtests: use more consistent failure lines + Closes #11698 - After a test failure log a consistent log message to make it easier to - parse the log file. Also, log a consistent message with "ignored" for - failures that cause the test to be not considered at all. These should - perhaps be counted in the skipped category, but this commit does not - change that behaviour. +Daniel Stenberg (20 Aug 2023) -- runtests: consistently write the test check summary block +- test687/688: two more basic --xattr tests - The memory check character was erroneously omitted if the memory - checking file was not available for some reason, making the block of - characters an inconsistent length. + Closes #11697 -- test2600: fix the description +- cmdline-opts/docs: mentioned the negative option part - It looks like it was cut-and-pasted. + ... for --no-alpn and --no-buffer in the same style done for other --no- + options: - Closes #11354 + "Note that this is the negated option name documented." -Daniel Stenberg (21 Jun 2023) + Closes #11695 -- TODO: "Support HTTP/2 for HTTP(S) proxies" *done* +Emanuele Torre (19 Aug 2023) -humbleacolyte (21 Jun 2023) +- tool/var: also error when expansion result starts with NUL -- cf-socket: move ctx declaration under HAVE_GETPEERNAME + Expansions whose output starts with NUL were being expanded to the empty + string, and not being recognised as values that contain a NUL byte, and + should error. - Closes #11352 + Closes #11694 -Daniel Stenberg (20 Jun 2023) +Daniel Stenberg (19 Aug 2023) -- RELEASE-NOTES: synced +- tests: add 'large-time' as a testable feature -- example/connect-to: show CURLOPT_CONNECT_TO + This allows test cases to require this feature to run and to be used in + %if conditions. - Closes #11340 + Large here means larger than 32 bits. Ie does not suffer from y2038. -Stefan Eissing (20 Jun 2023) + Closes #11696 -- hyper: unslow +- tests/Makefile: add check-translatable-options.pl to tarball - - refs #11203 where hyper was reported as being slow - - fixes hyper_executor_poll to loop until it is out of - tasks as advised by @seanmonstar in https://github.com/hyperium/hyper/issue - s/3237 - - added a fix in hyper io handling for detecting EAGAIN - - added some debug logs to see IO results - - pytest http/1.1 test cases pass - - pytest h2 test cases fail on connection reuse. HTTP/2 - connection reuse does not seem to work. Hyper submits - a request on a reused connection, curl's IO works and - thereafter hyper declares `Hyper: [1] operation was canceled: connection cl - osed` - on stderr without any error being logged before. + Used in test 1544 - Fixes #11203 - Reported-by: Gisle Vanem - Advised-by: Sean McArthur - Closes #11344 + Follow-up to ae806395abc8c -- HTTP/2: upload handling fixes +- gen.pl: fix a long version generation mistake - - fixes #11242 where 100% CPU on uploads was reported - - fixes possible stalls on last part of a request body when - that information could not be fully send on the connection - due to an EAGAIN - - applies the same EGAIN handling to HTTP/2 proxying + Too excessive escaping made the parsing not find the correct long names + later and instead add "wrong" links. - Reported-by: Sergey Alirzaev - Fixed #11242 - Closes #11342 + Follow-up to 439ff2052e219 -Daniel Stenberg (20 Jun 2023) + Reported-by: Lukas Tribus + Fixes #11688 + Closes #11689 -- example/opensslthreadlock: remove +- lib: move mimepost data from ->req.p.http to ->state - This shows how to setup OpenSSL mutex callbacks, but this is not - necessary since OpenSSL 1.1.0 - meaning that no currently supported - OpenSSL version requires this anymore + When the legacy CURLOPT_HTTPPOST option is used, it gets converted into + the modem mimpost struct at first use. This data is (now) kept for the + entire transfer and not only per single HTTP request. This re-enables + rewind in the beginning of the second request instead of in end of the + first, as brought by 1b39731. - Closes #11341 + The request struct is per-request data only. -Dan Fandrich (19 Jun 2023) + Extend test 650 to verify. -- libtest: display the times after a test timeout error + Fixes #11680 + Reported-by: yushicheng7788 on github + Closes #11682 - This is to help with test failure debugging. +Patrick Monnerat (17 Aug 2023) - Ref: #11328 - Closes #11329 +- os400: do not check translatable options at build time -- test2600: bump a test timeout + Now that there is a test for this, the build time check is not needed + anymore. - Case 1 failed at least once on GHA by going 30 msec too long. + Closes #11650 - Ref: #11328 +- test1554: check translatable string options in OS400 wrapper -- runtests: better detect and handle pipe errors in the controller + This test runs a perl script that checks all string options are properly + translated by the OS400 character code conversion wrapper. It also + verifies these options are listed in alphanumeric order in the wrapper + switch statement. - Errors reading and writing to the pipes are now better detected and - propagated up to the main test loop so it can be cleanly shut down. Such - errors are usually due to a runner dying so it doesn't make much sense - to try to continue the test run. + Closes #11650 -- runtests: cleanly abort the runner if the controller dies +Daniel Stenberg (17 Aug 2023) - If the controller dies unexpectedly, have the runner stop its servers - and exit cleanly. Otherwise, the orphaned servers will stay running in - the background. +- unit3200: skip testing if function is not present -- runtests: improve error logging + Fake a successful run since we have no easy mechanism to skip this test + for this advanced condition. - Give more information about test harness error conditions to help figure - out what might be wrong. Print some internal test state when SIGUSR1 is - sent to runtests.pl. +- unit2600: fix build warning if built without verbose messages - Ref: #11328 +- test1608: make it build and get skipped without shuffle DNS support -- runtests: better handle ^C during slow tests +- lib: --disable-bindlocal builds curl without local binding support - Since the SIGINT handler now just sets a flag that must be checked in the - main controller loop, make sure that runs periodically. Rather than - blocking on a response from a test runner near the end of the test run, - add a short timeout to allow it. +- test1304: build and skip without netrc support -- runtests: rename server command file +- lib: build fixups when built with most things disabled - The name ftpserver.cmd was historical and has been used for more than - ftp for many years now. Rename it to plain server.cmd to reduce - confusion. + Closes #11687 -- tests: improve reliability of TFTP tests +- workflows/macos.yml: disable zstd and alt-svc in the http-only build - Stop checking the timeout used by the client under test (for most - tests). The timeout will change if the TFTP test server is slow (such as - happens on an overprovisioned CI server) because the client will retry - and reduce its timeout, and the actual value is not important for most - tests. + Closes #11683 - test285 is changed a different way, by increasing the connect timeout. - This improves test coverage by allowing the changed timeout value to be - checked, but improves reliability with a carefully-chosen timeout that - not only allows twice the time to respond as before, but also allows - several retries before the client will change its timeout value. +Stefan Eissing (17 Aug 2023) - Ref: #11328 +- bearssl: handshake fix, provide proper get_select_socks() implementation -Daniel Stenberg (19 Jun 2023) + - bring bearssl handshake times down from +200ms down to other TLS backends + - vtls: improve generic get_select_socks() implementation + - tests: provide Apache with a suitable ssl session cache -- cf-socket: skip getpeername()/getsockname for TFTP + Closes #11675 - Since the socket is not connected then the call fails. When the call - fails, failf() is called to write an error message that is then - surviving and is returned when the *real* error occurs later. The - earlier, incorrect, error therefore hides the actual error message. +- tests: TLS session sharing test - This could be seen in stderr for test 1007 + - test TLS session sharing with special test client + - expect failure with wolfSSL + - disable flaky wolfSSL test_02_07b - Test 1007 has now been extended to verify the stderr message. + Closes #11675 - Closes #11332 +Daniel Stenberg (17 Aug 2023) -- example/crawler: make it use a few more options +- CURLOPT_*TIMEOUT*: extend and clarify - For show, but reasonable + Closes #11686 -- libcurl-ws.3: mention raw mode +- urlapi: return CURLUE_BAD_HOSTNAME if puny2idn encoding fails - Closes #11339 + And document it. Only return out of memory when it actually is a memory + problem. -- example/default-scheme: set the default scheme for schemeless URLs + Pointed-out-by: Jacob Mealey + Closes #11674 - Closes #11338 +Mathew Benson (17 Aug 2023) -- example/hsts-preload: show one way to HSTS preload +- cmake: add GnuTLS option - Closes #11337 + - Option to use GNUTLS was missing. Hence was not able to use GNUTLS + with ngtcp2 for http3. -- examples/http-options: show how to send "OPTIONS *" + Closes #11685 - With CURLOPT_REQUEST_TARGET. +Daniel Stenberg (16 Aug 2023) - Also add use of CURLOPT_QUICK_EXIT to show. +- RELEASE-NOTES: synced - Closes #11333 +- http: remove the p_pragma struct field -- examples: make use of CURLOPT_(REDIR_|)PROTOCOLS_STR + unused since 40e8b4e52 (2008) - To show how to use them + Closes #11681 - Closes #11334 +Jay Satiro (16 Aug 2023) -- examples/smtp-mime: use CURLOPT_MAIL_RCPT_ALLOWFAILS +- CURLINFO_CERTINFO.3: better explain curl_certinfo struct - For show + Closes https://github.com/curl/curl/pull/11666 - Closes #11335 +- CURLINFO_TLS_SSL_PTR.3: clarify a recommendation -- http: rectify the outgoing Cookie: header field size check + - Remove the out-of-date SSL backend list supported by + CURLOPT_SSL_CTX_FUNCTION. - Previously it would count the size of the entire outgoing request and - not just the size of only the Cookie: header field - which was the - intention. + It makes more sense to just refer to that document instead of having + a separate list that has to be kept in sync. - This could make the check be off by several hundred bytes in some cases. + Closes https://github.com/curl/curl/pull/11665 - Closes #11331 +- write-out.d: clarify %{time_starttransfer} -Jay Satiro (17 Jun 2023) + sync it up with CURLINFO_STARTTRANSFER_TIME_T -- lib: fix some format specifiers +Daniel Stenberg (15 Aug 2023) - - Use CURL_FORMAT_CURL_OFF_T where %zd was erroneously used for some - curl_off_t variables. +- transfer: don't set TIMER_STARTTRANSFER on first send - - Use %zu where %zd was erroneously used for some size_t variables. + The time stamp is for measuring the first *received* byte - Prior to this change some of the Windows CI tests were failing because - in Windows 32-bit targets have a 32-bit size_t and a 64-bit curl_off_t. - When %zd was used for some curl_off_t variables then only the lower - 32-bits was read and the upper 32-bits would be read for part or all of - the next specifier. + Fixes #11669 + Reported-by: JazJas on github + Closes #11670 - Fixes https://github.com/curl/curl/issues/11327 - Closes https://github.com/curl/curl/pull/11321 +trrui-huawei (15 Aug 2023) -Marcel Raad (16 Jun 2023) +- quiche: enable quiche to handle timeout events -- test427: add `cookies` feature and keyword + In parallel with ngtcp2, quiche also offers the `quiche_conn_on_timeout` + interface for the application to invoke upon timer + expiration. Therefore, invoking the `on_timeout` function of the + Connection is crucial to ensure seamless functionality of quiche with + timeout events. - This test doesn't work with `--disable-cookies`. + Closes #11654 - Closes https://github.com/curl/curl/pull/11320 +- quiche: adjust quiche `QUIC_IDLE_TIMEOUT` to 60s -Chris Talbot (15 Jun 2023) + Set the `QUIC_IDLE_TIMEOUT` parameter to match ngtcp2 for consistency. -- imap: Provide method to disable SASL if it is advertised +Daniel Stenberg (15 Aug 2023) - - Implement AUTH=+LOGIN for CURLOPT_LOGIN_OPTIONS to prefer plaintext - LOGIN over SASL auth. +- KNOWN_BUGS: LDAPS requests to ActiveDirectory server hang - Prior to this change there was no method to be able to fall back to - LOGIN if an IMAP server advertises SASL capabilities. However, this may - be desirable for e.g. a misconfigured server. + Closes #9580 - Per: https://www.ietf.org/rfc/rfc5092.html#section-3.2 +- imap: add a check for failing strdup() - ";AUTH=" looks to be the correct way to specify what - authenication method to use, regardless of SASL or not. +- imap: remove the only sscanf() call in the IMAP code - Closes https://github.com/curl/curl/pull/10041 + Avoids the use of a stack buffer. -Daniel Stenberg (15 Jun 2023) + Closes #11673 -- RELEASE-NOTES: synced +- imap: use a dynbuf in imap_atom -- examples/multi-debugcallback.c: avoid the bool typedef + Avoid a calculation + malloc. Build the output in a dynbuf. - Apparently this cannot be done in c23 + Closes #11672 - Reported-by: Cristian Rodríguez - Fixes #11299 - Closes #11319 +Marin Hannache (14 Aug 2023) -- docs/libcurl/libcurl.3: cleanups and improvements +- http: do not require a user name when using CURLAUTH_NEGOTIATE - Closes #11317 + In order to get Negotiate (SPNEGO) authentication to work in HTTP you + used to be required to provide a (fake) user name (this concerned both + curl and the lib) because the code wrongly only considered + authentication if there was a user name provided, as in: -- libcurl-ws.3: fix typo + curl -u : --negotiate https://example.com/ -- curl_ws_*.3: enhance + This commit leverages the `struct auth` want member to figure out if the + user enabled CURLAUTH_NEGOTIATE, effectively removing the requirement of + setting a user name both in curl and the lib. - - all: SEE ALSO the libcurl-ws man page - - send: add example and return value information - - meta: mention that the returned data is read-only + Signed-off-by: Marin Hannache + Reported-by: Enrico Scholz + Fixes https://sourceforge.net/p/curl/bugs/440/ + Fixes #1161 + Closes #9047 - Closes #11318 +Viktor Szakats (13 Aug 2023) -- docs/libcurl/libcurl-ws.3: see also CURLOPT_WS_OPTIONS +- build: streamline non-UWP wincrypt detections -- docs/libcurl/libcurl-ws.3: minor polish + - with CMake, use the variable `WINDOWS_STORE` to detect an UWP build + and disable our non-UWP-compatible use the Windows crypto API. This + allows to drop two dynamic feature checks. -- libcurl-ws.3. WebSocket API overview + `WINDOWS_STORE` is true when invoking CMake with + `CMAKE_SYSTEM_NAME` == `WindowsStore`. Introduced in CMake v3.1. - Closes #11314 + Ref: https://cmake.org/cmake/help/latest/variable/WINDOWS_STORE.html -- libcurl-url.3: also mention CURLUPART_ZONEID + - with autotools, drop the separate feature check for `wincrypt.h`. On + one hand this header has been present for long (even Borland C 5.5 had + it from year 2000), on the other we used the check result solely to + enable another check for certain crypto functions. This fails anyway + with the header not present. We save one dynamic feature check at the + configure stage. - ... and sort the two part-using lists alphabetically + Reviewed-by: Marcel Raad + Closes #11657 -Marcel Raad (14 Jun 2023) +Nicholas Nethercote (13 Aug 2023) -- fopen: fix conversion warning on 32-bit Android +- docs/HYPER.md: update hyper build instructions - When building for 32-bit ARM or x86 Android, `st_mode` is defined as - `unsigned int` instead of `mode_t`, resulting in a - -Wimplicit-int-conversion clang warning because `mode_t` is - `unsigned short`. Add a cast to silence the warning. + Nightly Rust and `-Z unstable-options` are not needed. - Ref: https://android.googlesource.com/platform/bionic/+/refs/tags/ndk-r25c/li - bc/include/sys/stat.h#86 - Closes https://github.com/curl/curl/pull/11313 + The instructions here now match the hyper docs exactly: + https://github.com/hyperium/hyper/commit/bd7928f3dd6a8461f0f0fdf7ee0fd95c2f15 + 6f88 -- http2: fix variable type + Closes #11662 - `max_recv_speed` is `curl_off_t`, so using `size_t` might result in - -Wconversion GCC warnings for 32-bit `size_t`. Visible in the NetBSD - ARM autobuilds. +Daniel Stenberg (13 Aug 2023) - Closes https://github.com/curl/curl/pull/11312 +- RELEASE-NOTES: synced -Daniel Stenberg (13 Jun 2023) +- urlapi: CURLU_PUNY2IDN - convert from punycode to IDN name -- vtls: fix potentially uninitialized local variable warnings + Asssisted-by: Jay Satiro + Closes #11655 - Follow-up from a4a5e438ae533c +- spellcheck: adapt to backslashed minuses - Closes #11310 + As the curl.1 has more backslashed minus, the cleanup sed lines xneed to + adapt. -- timeval: use CLOCK_MONOTONIC_RAW if available + Adjusted some docs slighly. - Reported-by: Harry Sintonen - Ref: #11288 - Closes #11291 + Follow-up to 439ff2052e -Stefan Eissing (12 Jun 2023) + Closes #11663 -- tool: add curl command line option `--trace-ids` +- gen: escape more minus - - added and documented --trace-ids to prepend (after the timestamp) - the transfer and connection identifiers to each verbose log line - - format is [n-m] with `n` being the transfer id and `m` being the - connection id. In case there is not valid connection id, print 'x'. - - Log calls with a handle that has no transfer id yet, are written - without any ids. + Detected since it was still hard to search for option names using dashes + in the middle in the man page. - Closes #11185 + Closes #11660 -- lib: add CURLINFO_CONN_ID and CURLINFO_XFER_ID +- cookie-jar.d: enphasize that this option is ONLY writing cookies - - add an `id` long to Curl_easy, -1 on init - - once added to a multi (or its own multi), it gets - a non-negative number assigned by the connection cache - - `id` is unique among all transfers using the same - cache until reaching LONG_MAX where it will wrap - around. So, not unique eternally. - - CURLINFO_CONN_ID returns the connection id attached to - data or, if none present, data->state.lastconnect_id - - variables and type declared in tool for write out + Reported-by: Dan Jacobson + Tweaked-by: Jay Satiro + Ref: #11642 + Closes #11661 - Closes #11185 +Nicholas Nethercote (11 Aug 2023) -Daniel Stenberg (12 Jun 2023) +- docs/HYPER.md: document a workaround for a link error -- CURLOPT_INFILESIZE.3: mention -1 triggers chunked + Closes #11653 - Ref: #11300 - Closes #11304 +Jay Satiro (11 Aug 2023) -Philip Heiduck (12 Jun 2023) +- schannel: verify hostname independent of verify cert -- CI: openssl-3.0.9+quic + Prior to this change when CURLOPT_SSL_VERIFYPEER (verifypeer) was off + and CURLOPT_SSL_VERIFYHOST (verifyhost) was on we did not verify the + hostname in schannel code. - Closes #11296 + This fixes KNOWN_BUG 2.8 "Schannel disable CURLOPT_SSL_VERIFYPEER and + verify hostname". We discussed a fix several years ago in #3285 but it + went stale. -Karthikdasari0423 (12 Jun 2023) + Assisted-by: Daniel Stenberg -- HTTP3.md: update openssl version + Bug: https://curl.haxx.se/mail/lib-2018-10/0113.html + Reported-by: Martin Galvan - Closes #11297 + Ref: https://github.com/curl/curl/pull/3285 -Daniel Stenberg (12 Jun 2023) + Fixes https://github.com/curl/curl/issues/3284 + Closes https://github.com/curl/curl/pull/10056 -- vtls: avoid memory leak if sha256 call fails +Daniel Stenberg (11 Aug 2023) - ... in the pinned public key handling function. +- curl_quiche: remove superfluous NULL check - Reported-by: lizhuang0630 on github - Fixes #11306 - Closes #11307 + 'stream' is always non-NULL at this point -- examples/ipv6: disable on win32 + Pointed out by Coverity - I can't make if_nametoindex() work there + Closes #11656 - Follow-up to c23dc42f3997acf23 +- curl/urlapi.h: tiny typo - Closes #11305 +- github/labeler: make HYPER.md set Hyper and not TLS -- tool_operate: allow cookie lines up to 8200 bytes +- docs/cmdline-opts/gen.pl: hide "added in" before 7.50.0 - Since this option might set multiple cookies in the same line, it does - not make total sense to cap this at 4096 bytes, which is the limit for a - single cookie name or value. + 7.50.0 shipped on Jul 21 2016, over seven years ago. We no longer need + to specify version changes for earlier releases in the generated output. - Closes #11303 + This ups the limit from the previous 7.30.0 (Apr 12 2013) -- test427: verify sending more cookies than fit in a 8190 bytes line + This hides roughly 35 "added in" mentions. - curl will then only populate the header with cookies that fit, dropping - ones that otherwise would have been sent + Closes #11651 - Ref: https://curl.se/mail/lib-2023-06/0020.html +Jay Satiro (10 Aug 2023) - Closes #11303 +- bug_report: require reporters to specify curl and os versions -- testutil: allow multiple %-operators on the same line + - Change curl version and os sections from single-line input to + multi-line textarea. - Closes #11303 + - Require curl version and os sections to be filled out before report + can be submitted. -Oleg Jukovec (12 Jun 2023) + Closes https://github.com/curl/curl/pull/11636 -- docs: update CURLOPT_UPLOAD.3 +Daniel Stenberg (9 Aug 2023) - The behavior of CURLOPT_UPLOAD differs from what is described in the - documentation. The option automatically adds the 'Transfer-Encoding: - chunked' header if the upload size is unknown. +- gen.pl: replace all single quotes with aq - Closes #11300 + - this prevents man from using a unicode sequence for them + - which then allows search to work properly -Daniel Stenberg (12 Jun 2023) + Closes #11645 -- RELEASE-NOTES: synced +Viktor Szakats (9 Aug 2023) -- CURLOPT_AWS_SIGV4.3: remove unused variable from example +- cmake: fix to use variable for the curl namespace - Closes #11302 + Replace (wrong) literal with a variable to specify the curl + namespace. -- examples/https.c: use CURLOPT_CA_CACHE_TIMEOUT + Follow-up to 1199308dbc902c52be67fc805c72dd2582520d30 #11505 - for demonstration purposes + Reported-by: balikalina on Github + Fixes https://github.com/curl/curl/commit/1199308dbc902c52be67fc805c72dd25825 + 20d30#r123923098 + Closes #11629 - Closes #11290 +- cmake: allow `SHARE_LIB_OBJECT=ON` on all platforms -- example/ipv6: feature CURLOPT_ADDRESS_SCOPE in use + 2ebc74c36a19a1700af394c16855ce144d9878e3 #11546 introduced sharing + libcurl objects for shared and static targets. - Closes #11282 + The above automatically enabled for Windows builds, with an option to + disable with `SHARE_LIB_OBJECT=OFF`. -Karthikdasari0423 (10 Jun 2023) + This patch extend this feature to all platforms as a manual option. + You can enable it by setting `SHARE_LIB_OBJECT=ON`. Then shared objects + are built in PIC mode, meaning the static lib will also have PIC code. -- docs: Update HTTP3.md for newer ngtcp2 and nghttp3 + [EXPERIMENTAL] - Follow-up to fb9b9b58 + Closes #11627 - Ref: #11184 - Closes #11295 +- cmake: assume `wldap32` availability on Windows -Dan Fandrich (10 Jun 2023) + This system library first shipped with Windows ME, available as an extra + install for some older releases (according to [1]). The import library + was present already in old MinGW 3.4.2 (year 2007). -- docs: update the supported ngtcp2 and nghttp3 versions + Drop the feature check and its associated `HAVE_WLDAP32` variable. - Follow-up to cae9d10b + To manually disable `wldap32`, you can use the `USE_WIN32_LDAP=OFF` + CMake option, like before. - Ref: #11184 - Closes #11294 + [1]: https://dlcdn.apache.org/httpd/binaries/win32/LEGACY.html -- tests: fix error messages & handling around sockets + Reviewed-by: Jay Satiro + Closes #11624 - The wrong error code was checked on Windows on UNIX socket failures, - which could have caused all UNIX sockets to be reported as having - errored and the tests therefore skipped. Also, a useless error message - was displayed on socket errors in many test servers on Windows because - strerror() doesn't work on WinSock error codes; perror() is overridden - there to work on all errors and is used instead. +Daniel Stenberg (9 Aug 2023) - Ref #11258 - Closes #11265 +- page-header: move up a URL paragraph from GLOBBING to URL -Daniel Stenberg (9 Jun 2023) +- variable.d: output the function names table style -- CURLOPT_SSH_PRIVATE_KEYFILE.3: expand on the file search + Also correct the url function name in the header - Reported-by: atjg on github - Ref: #11287 - Closes #11289 + Closes #11641 -Stefan Eissing (9 Jun 2023) +- haproxy-clientip.d: remove backticks -- ngtcp2: use ever increasing timestamp in io + This is not markdown - - ngtcp2 v0.16.0 asserts that timestamps passed to its function - will only ever increase. - - Use a context shared between ingress/egress operations that - uses a shared timestamp, regularly updated during calls. + Follow-up to 0a75964d0d94a4 - Closes #11288 + Closes #11639 -Daniel Stenberg (9 Jun 2023) +- RELEASE-NOTES: synced -- GHA: use nghttp2 1.54.0 for the ngtcp2 jobs +- gen.pl: escape all dashes (ascii minus) to avoid unicode hyphens -Philip Heiduck (9 Jun 2023) + Reported-by: FC Stegerman + Fixes #11635 + Closes #11637 -- GHA: ngtcp2: use 0.16.0 and nghttp3 0.12.0 +- cmdline-opts/page-header: reorder, clean up -Daniel Stenberg (9 Jun 2023) + - removed some unnecessary blurb to focus + - moved up the more important URL details + - put "globbing" into its own subtitle and moved down a little + - mention the online man page in the version section -- ngtcp2: build with 0.16.0 and nghttp3 0.12.0 + Closes #11638 - - moved to qlog_write - - crypto => encryption - - CRYPTO => ENCRYPTION - - removed "_is_" - - ngtcp2_conn_shutdown_stream_read and - ngtcp2_conn_shutdown_stream_write got flag arguments - - the nghttp3_callbacks struct got a recv_settings callback +- c-hyper: adjust the hyper to curlcode conversion - Closes #11184 + Closes #11621 -- example/http2-download: set CURLOPT_BUFFERSIZE +- test2306: make it use a persistent connection - Primarily because no other example sets it, and remove the disabling of - the certificate check because we should not recommend that. + + enable verbose already from the start - Closes #11284 + Closes #11621 -- example/crawler: also set CURLOPT_AUTOREFERER +eppesuig (8 Aug 2023) - Could make sense, and it was not used in any example before. +- list-only.d: mention SFTP as supported protocol - Closes #11283 + Closes #11628 -Wyatt OʼDay (9 Jun 2023) +Daniel Stenberg (8 Aug 2023) -- tls13-ciphers.d: include Schannel +- request.d: use .TP for protocol "labels" - Closes #11271 + To render the section nicer in man page. -Daniel Stenberg (9 Jun 2023) + Closes #11630 -- curl_pushheader_byname/bynum.3: document in their own man pages +- cf-haproxy: make CURLOPT_HAPROXY_CLIENT_IP set the *source* IP - These two functions were added in 7.44.0 when CURLMOPT_PUSHFUNCTION was - introduced but always lived a life in the shadows, embedded in the - CURLMOPT_PUSHFUNCTION man page. Until now. + ... as documented. - It makes better sense and gives more visibility to document them in - their own stand-alone man pages. + Update test 3201 and 3202 accordingly. - Closes #11286 + Reported-by: Markus Sommer + Fixes #11619 + Closes #11626 -- curl_mprintf.3: minor fix of the example +- page-footer: QLOGDIR works with ngtcp2 and quiche -- curl_url_set: enforce the max string length check for all parts + It previously said "both" backends which is confusing as we currently + have three... - Update the docs and test 1559 accordingly + Closes #11631 - Closes #11273 +Stefan Eissing (8 Aug 2023) -- examples/ftpuploadresume.c: add use of CURLOPT_ACCEPTTIMEOUT_MS +- http3: quiche, handshake optimization, trace cleanup - For show + - load x509 store after clienthello + - cleanup of tracing - Closes #11277 + Closes #11618 -- examples/unixsocket.c: example using CURLOPT_UNIX_SOCKET_PATH +Daniel Stenberg (8 Aug 2023) - and alternatively CURLOPT_ABSTRACT_UNIX_SOCKET +- ngtcp2: remove dead code - Closes #11276 + 'result' is always zero (CURLE_OK) at this point -Anssi Kolehmainen (8 Jun 2023) + Detected by Coverity -- docs: fix missing parameter names in examples + Closes #11622 - Closes #11278 +Viktor Szakats (8 Aug 2023) -Daniel Stenberg (8 Jun 2023) +- openssl: auto-detect `SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED` -- urlapi: have *set(PATH) prepend a slash if one is missing + OpenSSL 1.1.1 defines this macro, but no ealier version, or any of the + popular forks (yet). Use the macro itself to detect its presence, + replacing the hard-wired fork-specific conditions. - Previously the code would just do that for the path when extracting the - full URL, which made a subsequent curl_url_get() of the path to - (unexpectedly) still return it without the leading path. + This way the feature will enable automatically when forks implement it, + while also shorter and possibly requiring less future maintenance. - Amend lib1560 to verify this. Clarify the curl_url_set() docs about it. + Follow-up to 94241a9e78397a2aaf89a213e6ada61e7de7ee02 #6721 - Bug: https://curl.se/mail/lib-2023-06/0015.html - Closes #11272 - Reported-by: Pedro Henrique + Reviewed-by: Jay Satiro + Closes #11617 -Dan Fandrich (7 Jun 2023) +- openssl: use `SSL_CTX_set_ciphersuites` with LibreSSL 3.4.1 -- runtests; give each server a unique log lock file + LibreSSL 3.4.1 (2021-10-14) added support for + `SSL_CTX_set_ciphersuites`. - Logs are written by several servers and all of them must be finished - writing before the test results can be determined. This means each - server must have its own lock file rather than sharing a single one, - which is how it was done up to now. Previously, the first server to - complete a test would clear the lock before the other server was done, - which caused flaky tests. + Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.4.1-relnotes.txt - Lock files are now all found in their own directory, so counting locks - equals counting the files in that directory. The result is that the - proxy logs are now reliably written which actually changes the expected - output for two tests. + Reviewed-by: Jay Satiro + Closes #11616 - Fixes #11231 - Closes #11259 +- openssl: use `SSL_CTX_set_keylog_callback` with LibreSSL 3.5.0 -- runtests: make test file directories in log/N + LibreSSL 3.5.0 (2022-02-24) added support for + `SSL_CTX_set_keylog_callback`. - Test files in subdirectories were not created after parallel test log - directories were moved down a level due to a now-bad comparison. + Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.5.0-relnotes.txt - Follow-up to 92d7dd39 + Reviewed-by: Jay Satiro + Closes #11615 - Ref #11264 - Closes #11267 +- cmake: drop `HAVE_LIBWINMM` and `HAVE_LIBWS2_32` feature checks -Daniel Stenberg (7 Jun 2023) + - `HAVE_LIBWINMM` was detected but unused. The `winmm` system library is + also not used by curl, but it is by its optional dependency `librtmp`. + Change the logic to always add `winmm` when `USE_LIBRTMP` is set. This + library has been available since the early days of Windows. -- ws: make the curl_ws_meta() return pointer a const + - `HAVE_LIBWS2_32` detected `ws2_32` lib on Windows. This lib is present + since Windows 95 OSR2 (AFAIR). Winsock1 already wasn't supported and + other existing logic already assumed this lib being present, so delete + the check and replace the detection variable with `WIN32` and always + add `ws2_32` on Windows. - The returned info is read-only for the user. + Closes #11612 - Closes #11261 +Daniel Gustafsson (8 Aug 2023) -- RELEASE-NOTES: synced +- crypto: ensure crypto initialization works -- runtests: move parallel log dirs from logN to log/N + Make sure that context initialization during hash setup works to avoid + going forward with the risk of a null pointer dereference. - Having several hundreds of them in there gets annoying. + Reported-by: Philippe Antoine on HackerOne + Assisted-by: Jay Satiro + Assisted-by: Daniel Stenberg - Closes #11264 + Closes #11614 -Dan Fandrich (7 Jun 2023) +Viktor Szakats (7 Aug 2023) -- test447: move the test file into %LOGDIR +- openssl: switch to modern init for LibreSSL 2.7.0+ -Viktor Szakats (7 Jun 2023) + LibreSSL 2.7.0 (2018-03-21) introduced automatic initialization, + `OPENSSL_init_ssl()` function and deprecated the old, manual init + method, as seen in OpenSSL 1.1.0. Switch to the modern method when + available. -- cmake: add support for "unity" builds + Ref: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.0-relnotes.txt - Aka "jumbo" or "amalgamation" builds. It means to compile all sources - per target as a single C source. This is experimental. + Reviewed-by: Daniel Stenberg + Closes #11611 - You can enable it by passing `-DCMAKE_UNITY_BUILD=ON` to cmake. - It requires CMake 3.16 or newer. +Daniel Stenberg (7 Aug 2023) - It makes builds (much) faster, allows for better optimizations and tends - to promote less ambiguous code. +- gskit: remove - Also add a new AppVeyor CI job and convert an existing one to use - "unity" mode (one MSVC, one MinGW), and enable it for one macOS CI job. + We remove support for building curl with gskit. - Fix related issues: - - add missing include guard to `easy_lock.h`. - - rename static variables and functions (and a macro) with names reused - across sources, or shadowed by local variables. - - add an `#undef` after use. - - add a missing `#undef` before use. - - move internal definitions from `ftp.h` to `ftp.c`. - - `curl_memory.h` fixes to make it work when included repeatedly. - - stop building/linking curlx bits twice for a static-mode curl tool. - These caused doubly defined symbols in unity builds. - - silence missing extern declarations compiler warning for ` _CRT_glob`. - - fix extern declarations for `tool_freq` and `tool_isVistaOrGreater`. - - fix colliding static symbols in debug mode: `debugtime()` and - `statename`. - - rename `ssl_backend_data` structure to unique names for each - TLS-backend, along with the `ssl_connect_data` struct member - referencing them. This required adding casts for each access. - - add workaround for missing `[P]UNICODE_STRING` types in certain Windows - builds when compiling `lib/ldap.c`. To support "unity" builds, we had - to enable `SCHANNEL_USE_BLACKLISTS` for Schannel (a Windows - `schannel.h` option) _globally_. This caused an indirect inclusion of - Windows `schannel.h` from `ldap.c` via `winldap.h` to have it enabled - as well. This requires `[P]UNICODE_STRING` types, which is apperantly - not defined automatically (as seen with both MSVS and mingw-w64). - This patch includes `` to fix it. - Ref: https://github.com/curl/curl/runs/13987772013 - Ref: https://dev.azure.com/daniel0244/curl/_build/results?buildId=15827&vie - w=logs&jobId=2c9f582d-e278-56b6-4354-f38a4d851906&j=2c9f582d-e278-56b6-4354-f - 38a4d851906&t=90509b00-34fa-5a81-35d7-5ed9569d331c - - tweak unity builds to compile `lib/memdebug.c` separately in memory - trace builds to avoid PP confusion. - - force-disable unity for test programs. - - do not compile and link libcurl sources to libtests _twice_ when libcurl - is built in static mode. + - This is a niche TLS library, only running on some IBM systems + - no regular curl contributors use this backend + - no CI builds use or verify this backend + - gskit, or the curl adaption for it, lacks many modern TLS features + making it an inferior solution + - build breakages in this code take weeks or more to get detected + - fixing gskit code is mostly done "flying blind" - KNOWN ISSUES: - - running tests with unity builds may fail in cases. - - some build configurations/env may not compile in unity mode. E.g.: - https://ci.appveyor.com/project/curlorg/curl/builds/47230972/job/51wfesgnfu - auwl8q#L250 + This removal has been advertized in DEPRECATED in Jan 2, 2023 and it has + been mentioned on the curl-library mailing list. - Ref: https://github.com/libssh2/libssh2/issues/1034 - Ref: https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html - Ref: https://en.wikipedia.org/wiki/Unity_build + It could be brought back, this is not a ban. Given proper effort and + will, gskit support is welcome back into the curl TLS backend family. - Closes #11095 + Closes #11460 -Daniel Stenberg (7 Jun 2023) +- RELEASE-NOTES: synced -- examples/websocket.c: websocket example using CONNECT_ONLY +Dan Fandrich (7 Aug 2023) - Closes #11262 +- THANKS-filter: add a name typo -- websocket-cb: example doing WebSocket download using callback +Stefan Eissing (7 Aug 2023) - Very basic +- http3/ngtcp2: shorten handshake, trace cleanup - Closes #11260 + - shorten handshake timing by delayed x509 store load (OpenSSL) + as we do for HTTP/2 + - cleanup of trace output, align with HTTP/2 output -- test/.gitignore: ignore log* + Closes #11609 -Dan Fandrich (5 Jun 2023) +Daniel Stenberg (7 Aug 2023) -- runtests: document the -j parallel testing option +- headers: accept leading whitespaces on first response header - Reported-by: Daniel Stenberg - Ref: #10818 - Closes #11255 + This is a bad header fold but since the popular browsers accept this + violation, so does curl now. Unless built with hyper. -- runtests: create multiple test runners when requested + Add test 1473 to verify and adjust test 2306. - Parallel testing is enabled by using a nonzero value for the -j option - to runtests.pl. Performant values seem to be about 7*num CPU cores, or - 1.3*num CPU cores if Valgrind is in use. + Reported-by: junsik on github + Fixes #11605 + Closes #11607 - Flaky tests due to improper log locking (bug #11231) are exacerbated - while parallel testing, so it is not enabled by default yet. +- include/curl/mprintf.h: add __attribute__ for the prototypes - Fixes #10818 - Closes #11246 + - if gcc or clang is used + - if __STDC_VERSION__ >= 199901L, which means greater than C90 + - if not using mingw + - if CURL_NO_FMT_CHECKS is not defined -- runtests: handle repeating tests in multiprocess mode + Closes #11589 - Such as what happens with the --repeat option. Some functions are - changed to pass the runner ID instead of relying on the non-unique test - number. +- tests: fix bad printf format flags in test code - Ref: #10818 +- tests: fix header scan tools for attribute edits in mprintf.h -- runtests: buffer logmsg while running singletest() +- cf-socket: log successful interface bind - This allows all messages relating to a single test case to be displayed - together at the end of the test. + When the setsockopt SO_BINDTODEVICE operation succeeds, output that in + the verbose output. - Ref: #10818 + Ref: #11599 + Closes #11608 -- runtests: call initserverconfig() in the runner +- CURLOPT_SSL_VERIFYPEER.3: mention it does not load CA certs when disabled - This must be done so variables pick up the runner's unique $LOGDIR. + Ref: #11457 + Closes #11606 - Ref: #10818 +- CURLOPT_SSL_VERIFYPEER.3: add two more see also options -- runtests: use a per-runner random seed + CURLINFO_CAINFO and CURLINFO_CAPATH - Each runner needs a unique random seed to reduce the chance of port - number collisions. The new scheme uses a consistent per-runner source of - randomness which results in deterministic behaviour, as it did before. + Closes #11603 - Ref: #10818 +- KNOWN_BUGS: aws-sigv4 does not behave well with AWS VPC Lattice -- runtests: complete main test loop refactor for multiple runners + Closes #11007 - The main test loop is now able to handle multiple runners, or no - additional runner processes at all. At most one process is still - created, however. +Graham Campbell (6 Aug 2023) - Ref: #10818 +- CI: use openssl 3.0.10+quic, nghttp3 0.14.0, ngtcp2 0.18.0 -- runtests: prepare main test loop for multiple runners + Closes #11585 - Some variables are expanded to arrays and hashes so that multiple - runners can be used for running tests. +Daniel Stenberg (6 Aug 2023) - Ref: #10818 +- TODO: add *5* entries for aws-sigv4 -Stefan Eissing (5 Jun 2023) + Closes #7559 + Closes #8107 + Closes #8810 + Closes #9717 + Closes #10129 -- bufq: make write/pass methods more robust +- TODO: LDAP Certificate-Based Authentication - - related to #11242 where curl enters busy loop when - sending http2 data to the server + Closes #9641 - Closes #11247 +Stefan Eissing (6 Aug 2023) -Boris Verkhovskiy (5 Jun 2023) +- http2: cleanup trace messages -- tool_getparam: fix comment + - more compact format with bracketed stream id + - all frames traced in and out - Closes #11253 + Closes #11592 -Raito Bezarius (5 Jun 2023) +Daniel Stenberg (6 Aug 2023) -- haproxy: add --haproxy-clientip flag to spoof client IPs +- tests/tftpd+mqttd: make variables static to silence picky warnings - CURLOPT_HAPROXY_CLIENT_IP in the library + Closes #11594 - Closes #10779 +- docs/cmdline: remove repeated working for negotiate + ntlm -Daniel Stenberg (5 Jun 2023) + The extra wording is added automatically by the gen.pl tool -- curl: add --ca-native and --proxy-ca-native + Closes #11597 - These are two boolean options to ask curl to use the native OS's CA - store when verifying TLS servers. For peers and for proxies - respectively. +- docs/cmdline: add small "warning" to verbose options - They currently only have an effect for curl on Windows when built to use - OpenSSL for TLS. + "Note that verbose output of curl activities and network traffic might + contain sensitive data, including user names, credentials or secret data + content. Be aware and be careful when sharing trace logs with others." - Closes #11049 + Closes #11596 -Viktor Szakats (5 Jun 2023) +- RELEASE-NOTES: synced -- build: drop unused/redundant `HAVE_WINLDAP_H` +- pingpong: don't use *bump_headersize - Sources did not use it. Autotools used it when checking for the - `winldap` library, which is redundant. + We use that for HTTP(S) only. - With CMake, detection was broken: - ``` - Run Build Command(s):/usr/local/Cellar/cmake/3.26.3/bin/cmake -E env VERBOSE= - 1 /usr/bin/make -f Makefile cmTC_2d8fe/fast && /Library/Developer/CommandLine - Tools/usr/bin/make -f CMakeFiles/cmTC_2d8fe.dir/build.make CMakeFiles/cmTC_2 - d8fe.dir/build - Building C object CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj - /usr/local/opt/llvm/bin/clang --target=x86_64-w64-mingw32 --sysroot=/usr/loca - l/opt/mingw-w64/toolchain-x86_64 -D_WINSOCKAPI_="" -I/my/quictls/x64-ucrt/usr - /include -I/my/zlib/x64-ucrt/usr/include -I/my/brotli/x64-ucrt/usr/include -W - no-unused-command-line-argument -D_UCRT -DCURL_HIDDEN_SYMBOLS -DHAVE_SSL_SE - T0_WBIO -DHAS_ALPN -DNGHTTP2_STATICLIB -DNGHTTP3_STATICLIB -DNGTCP2_STATICLIB - -DUSE_MANUAL=1 -fuse-ld=lld -Wl,-s -static-libgcc -lucrt -Wextra -Wall -p - edantic -Wbad-function-cast -Wconversion -Winline -Wmissing-declarations -Wmi - ssing-prototypes -Wnested-externs -Wno-long-long -Wno-multichar -Wpointer-ari - th -Wshadow -Wsign-compare -Wundef -Wunused -Wwrite-strings -Wcast-align -Wde - claration-after-statement -Wempty-body -Wendif-labels -Wfloat-equal -Wignored - -qualifiers -Wno-format-nonliteral -Wno-sign-conversion -Wno-system-headers - - Wstrict-prototypes -Wtype-limits -Wvla -Wshift-sign-overflow -Wshorten-64-to- - 32 -Wdouble-promotion -Wenum-conversion -Wunused-const-variable -Wcomma -Wmis - sing-variable-declarations -Wassign-enum -Wextra-semi-stmt -MD -MT CMakeFile - s/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -MF CMakeFiles/cmTC_2d8fe.dir/HAVE_WINL - DAP_H.c.obj.d -o CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -c /my/curl/b - ld-cmake-llvm-x64-shared/CMakeFiles/CMakeScratch/TryCompile-3JP6dR/HAVE_WINLD - AP_H.c - In file included from /my/curl/bld-cmake-llvm-x64-shared/CMakeFiles/CMakeScra - tch/TryCompile-3JP6dR/HAVE_WINLDAP_H.c:2: - In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi - ngw32/include/winldap.h:17: - In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi - ngw32/include/schnlsp.h:9: - In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi - ngw32/include/schannel.h:10: - /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt - .h:5041:254: error: unknown type name 'PSYSTEMTIME' - WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_ - NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, - DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER - pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT - ENSIONS pExtensions); - - - - ^ - /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt - .h:5041:278: error: unknown type name 'PSYSTEMTIME' - WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_ - NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, - DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER - pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT - ENSIONS pExtensions); - - - - ^ - 2 errors generated. - make[1]: *** [CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj] Error 1 - make: *** [cmTC_2d8fe/fast] Error 2 - exitCode: 2 - ``` + Follow-up to 3ee79c1674fd6 - Cherry-picked from #11095 88e4a21ff70ccef391cf99c8165281ff81374503 - Reviewed-by: Daniel Stenberg - Closes #11245 + Closes #11590 -Daniel Stenberg (5 Jun 2023) +- urldata: remove spurious parenthesis to unbreak no-proxy build -- urlapi: scheme starts with alpha + Follow-up to e12b39e13382 - Add multiple tests to lib1560 to verify + Closes #11591 - Fixes #11249 - Reported-by: ad0p on github - Closes #11250 +- easy: don't call Curl_trc_opt() in disabled-verbose builds -- RELEASE-NOTES: synced + Follow-up to e12b39e133822c6a0 -- CURLOPT_MAIL_RCPT_ALLOWFAILS: replace CURLOPT_MAIL_RCPT_ALLLOWFAILS + Closes #11588 - Deprecate the name using three Ls and prefer the name with two. +- http: use %u for printfing int - Replaces #10047 - Closes #11218 + Follow-up to 3ee79c1674fd6f99e8efca5 -- tests/servers: generate temp names in /tmp for unix domain sockets + Closes #11587 - ... instead of putting them in the regular pid directories because - systems generally have strict length requirements for the path name to - be shorter than 107 bytes and we easily hit that boundary otherwise. +Goro FUJI (3 Aug 2023) - The new concept generates two random names: one for the socks daemon and - one for http. +- vquic: show stringified messages for errno - Reported-by: Andy Fiddaman - Fixes #11152 - Closes #11166 + Closes #11584 -Stefan Eissing (2 Jun 2023) +Stefan Eissing (3 Aug 2023) -- http2: better support for --limit-rate +- trace: make tracing available in non-debug builds - - leave transfer loop when --limit-rate is in effect and has - been received - - adjust stream window size to --limit-rate plus some slack - to make the server observe the pacing we want - - add test case to confirm behaviour + Add --trace-config to curl - Closes #11115 + Add curl_global_trace() to libcurl -- curl_log: evaluate log statement only when transfer is verbose + Closes #11421 - Closes #11238 +Daniel Stenberg (3 Aug 2023) -Daniel Stenberg (2 Jun 2023) +- TODO: remove "Support intermediate & root pinning for PINNEDPUBLICKEY" -- libssh2: provide error message when setting host key type fails + See also https://github.com/curl/curl/pull/7507 - Ref: https://curl.se/mail/archive-2023-06/0001.html +- TODO: add "WebSocket read callback" - Closes #11240 + remove "Upgrade to websockets" as we already have this -Igor Todorovski (2 Jun 2023) + Closes #11402 -- system.h: remove __IBMC__/__IBMCPP__ guards and apply to all z/OS compiles +- test497: verify rejecting too large incoming headers - Closes #11241 +- http: return error when receiving too large header set -Daniel Stenberg (2 Jun 2023) + To avoid abuse. The limit is set to 300 KB for the accumulated size of + all received HTTP headers for a single response. Incomplete research + suggests that Chrome uses a 256-300 KB limit, while Firefox allows up to + 1MB. -- docs/SECURITY-PROCESS.md: link to example of previous critical flaw + Closes #11582 -Mark Seuffert (2 Jun 2023) +Stefan Eissing (3 Aug 2023) -- README.md: updated link to opencollective +- http2: upgrade tests and add fix for non-existing stream - Closes #11232 + - check in h2 filter recv that stream actually exists + and return error if not + - add test for parallel, extreme h2 upgrades that fail if + connections get reused before fully switched + - add h2 upgrade upload test just for completeness -Daniel Stenberg (1 Jun 2023) + Closes #11563 -- libssh2: use custom memory functions +Viktor Szakats (3 Aug 2023) - Because of how libssh2_userauth_keyboard_interactive_ex() works: the - libcurl callback allocates memory that is later free()d by libssh2, we - must set the custom memory functions. +- tests: ensure `libcurl.def` contains all exports + + Add `test1279` to verify that `libcurl.def` lists all exported API + functions found in libcurl headers. - Reverts 8b5f100db388ee60118c08aa28 + Also: - Ref: https://github.com/libssh2/libssh2/issues/1078 - Closes #11235 + - extend test suite XML `stdout` tag with the `loadfile` attribute. -- test447: test PUTting a file that grows + - fix `tests/extern-scan.pl` and `test1135` to include websocket API. - ... and have curl trim the end when it reaches the expected total amount - of bytes instead of over-sending. + - use all headers (sorted) in `test1135` instead of a manual list. - Reported-by: JustAnotherArchivist on github - Closes #11223 + - add options `--sort`, `--heading=` to `tests/extern-scan.pl`. -- curl: count uploaded data to stop at the originally given size + - add `libcurl.def` to the auto-labeler GHA task. - Closes #11223 - Fixes #11222 - Reported-by: JustAnotherArchivist on github + Follow-up to 2ebc74c36a19a1700af394c16855ce144d9878e3 -- tool: remove exclamation marks from error/warning messages + Closes #11570 -- tool: use errorf() for error output +Daniel Stenberg (2 Aug 2023) - Convert a number of fprintf() calls. +- url: change default value for CURLOPT_MAXREDIRS to 30 -- tool: remove newlines from all helpf/notef/warnf/errorf calls + It was previously unlimited by default, but that's not a sensible + default. While changing this has a remote risk of breaking an existing + use case, I figure it is more likely to actually save users from loops. - Make voutf() always add one. + Closes #11581 - Closes #11226 +- lib: fix a few *printf() flag mistakes -- tests/servers.pm: pick unused port number with a server socket + Reported-by: Gisle Vanem + Ref: #11574 + Closes #11579 - This change replaces the previous method of picking a port number at - random to try to start servers on, then retrying up to ten times with - new random numbers each time, with a function that creates a server - socket on port zero, thereby getting a suitable random port set by the - kernel. That server socket is then closed and that port number is used - to setup the actual test server on. +Samuel Chiang (2 Aug 2023) - There is a risk that *another* server can be started on the machine in - the time gap, but the server verification feature will detect that. +- openssl: make aws-lc version support OCSP - Closes #11220 + And bump version in CI -- RELEASE-NOTES: synced + Closes #11568 - bump to 8.2.0 +Daniel Stenberg (2 Aug 2023) -Alejandro R. Sedeño (31 May 2023) +- tool: make the length argument an int for printf()-.* flags -- configure: fix run-compiler for old /bin/sh + Closes #11578 - If you try to assign and export on the same line on some older /bin/sh - implementations, it complains: +- tool_operate: fix memory leak when SSL_CERT_DIR is used - ``` - $ export "NAME=value" - NAME=value: is not an identifier - ``` + Detected by Coverity - This commit rewrites run-compiler's assignments and exports to work with - old /bin/sh, splitting assignment and export into two separate - statements, and only quote the value. So now we have: + Follow-up to 29bce9857a12b6cfa726a5 - ``` - NAME="value" - export NAME - ``` + Closes #11577 - While we're here, make the same change to the two supporting - assign+export lines preceeding the script to be consistent with how - exports work throughout the rest of configure.ac. +- tool/var: free memory on OOM - Closes #11228 + Coverity detected this memory leak in OOM situation -Philip Heiduck (31 May 2023) + Follow-up to 2e160c9c652504e -- circleci: install impacket & wolfssl 5.6.0 + Closes #11575 - Closes #11221 +Viktor Szakats (2 Aug 2023) -Daniel Stenberg (31 May 2023) +- gha: bump libressl and mbedtls versions -- tool_urlglob: use curl_off_t instead of longs + Closes #11573 - To handle more globs better (especially on Windows) +Jay Satiro (2 Aug 2023) - Closes #11224 +- schannel: fix user-set legacy algorithms in Windows 10 & 11 -Dan Fandrich (30 May 2023) + - If the user set a legacy algorithm list (CURLOPT_SSL_CIPHER_LIST) then + use the SCHANNEL_CRED legacy structure to pass the list to Schannel. -- scripts: Fix GHA matrix job detection in cijobs.pl + - If the user set both a legacy algorithm list and a TLS 1.3 cipher list + then abort. - The parsing is pretty brittle and it broke detecting some jobs at some - point. Also, detect if Windows is used in GHA. + Although MS doesn't document it, Schannel will not negotiate TLS 1.3 + when SCHANNEL_CRED is used. That means setting a legacy algorithm list + limits the user to earlier versions of TLS. -- runtests: abort test run after failure without -a + Prior to this change, since 8beff435 (precedes 7.85.0), libcurl would + ignore legacy algorithms in Windows 10 1809 and later. - This was broken in a recent refactor and test runs would not stop. + Reported-by: zhihaoy@users.noreply.github.com - Follow-up to d4a1b5b6 + Fixes https://github.com/curl/curl/pull/10741 + Closes https://github.com/curl/curl/pull/10746 - Reported-by: Daniel Stenberg - Fixes #11225 - Closes #11227 +Daniel Stenberg (2 Aug 2023) -Version 8.1.2 (30 May 2023) +- variable.d: setting a variable again overwrites it -Daniel Stenberg (30 May 2023) + Reported-by: Niall McGee + Bug: https://twitter.com/niallmcgee/status/1686523075423322113 + Closes #11571 -- RELEASE-NOTES: synced +Jay Satiro (2 Aug 2023) - 8.1.2 release +- CURLOPT_PROXY_SSL_OPTIONS.3: sync formatting -- THANKS: contributors from 8.1.2 + - Re-wrap CURLSSLOPT_ALLOW_BEAST description. -- lib1560: verify more scheme guessing +Daniel Stenberg (2 Aug 2023) - - on 2nd level domains - - on names without dots +- RELEASE-NOTES: synced - As mentioned in #11161, "imap.com" will be guessed IMAP +- resolve: use PF_INET6 family lookups when CURL_IPRESOLVE_V6 is set - Closes #11219 + Previously it would always do PF_UNSPEC if CURL_IPRESOLVE_V4 is not + used, thus unnecessarily asking for addresses that will not be used. -- page-header: minor wording polish in the URL segment + Reported-by: Joseph Tharayil + Fixes #11564 + Closes #11565 - Closes #11217 +- docs: link to the website versions instead of markdowns -- page-header: mention curl version and how to figure out current release + ... to make the links work when the markdown is converted to webpages on + https://curl.se - Closes #11216 + Reported-by: Maurício Meneghini Fauth + Fixes https://github.com/curl/curl-www/issues/272 + Closes #11569 -- RELEASE-NOTES: synced +Viktor Szakats (1 Aug 2023) -- configure: without pkg-config and no custom path, use -lnghttp2 +- cmake: cache more config and delete unused ones - Reported-by: correctmost on github - Fixes #11186 - Closes #11210 + - cache more Windows config results for faster initialization. -Stefan Eissing (28 May 2023) + - delete unused config macros `HAVE_SYS_UTSNAME_H`, `HAVE_SSL_H`. -- curl: cache the --trace-time value for a second + - delete dead references to `sys/utsname.h`. - - caches HH:MM:SS computed and reuses it for logging during - the same second. - - common function for plain log line start formatting + Closes #11551 - Closes #11211 +- egd: delete feature detection and related source code -Kev Jackson (28 May 2023) + EGD is Entropy Gathering Daemon, a socket-based entropy source supported + by pre-OpenSSL v1.1 versions and now deprecated. curl also deprecated it + a while ago. -- libcurl.m4: remove trailing 'dnl' that causes this to break autoconf + Its detection in CMake was broken all along because OpenSSL libs were + not linked at the point of feature check. - Closes #11212 + Delete detection from both cmake and autotools, along with the related + source snippet, and the `--with-egd-socket=` `./configure` option. -Stefan Eissing (26 May 2023) + Closes #11556 -- http3: send EOF indicator early as possible +Stefan Eissing (1 Aug 2023) - - ngtcp2 and quiche implementations relied on the DONE_SEND event - to forward the EOF for uploads to the libraries. This often - result in a last 0 length EOF data. Tracking the amount of - data left to upload allows EOF indication earlier. - - refs #11205 where CloudFlare DoH servers did not like to - receive the initial upload DATA without EOF and returned - a 400 Bad Request +- tests: fix h3 server check and parallel instances - Reported-by: Sergey Fionov - Fixes #11205 - Closes #11207 + - fix check for availability of nghttpx server + - add `tcp` frontend config for same port as quic, as + without this, port 3000 is bound which clashes for parallel + testing -Daniel Stenberg (26 May 2023) + Closes #11553 -- scripts/contri*sh: no longer grep -v ' ' +Daniel Stenberg (1 Aug 2023) - Originally these scripts filtered out names that have no space so that - they better avoid nick names not intended for credits. Such names are - not too commonly used, plus we now give credit even to those. +- docs/cmdline-opts: spellfixes, typos and polish - Additionally: non-latin names, like Asian, don't have spaces at all so - they were also filtered out and had to be manually added which made it - an error-prone operation where Asian names eventually easily fell off by - mistake. + To make them accepted by the spell checker - Closes #11206 + Closes #11562 -- cf-socket: restore Curl_sock_assign_addr() +- CI/spellcheck: build curl.1 and spellcheck it - Regression since it was not private. Also used by msh3.c + Added acceptable words - Follow-up to 8e85764b7bd7f05f5 - Reported-by: Gisle Vanem - Fixes #11202 - Closes #11204 + Closes #11562 -- RELEASE-NOTES: synced +Alexander Jaeger (1 Aug 2023) - Taken down to 8.1.2 now for pending patch release +- misc: fix various typos -- libssh: when keyboard-interactive auth fails, try password + Closes #11561 - The state machine had a mistake in that it would not carry on to that - next step. +Daniel Stenberg (1 Aug 2023) - This also adds a verbose output what methods that are available from the - server and renames the macros that change to the next auth methods to - try. +- http2: avoid too early connection re-use/multiplexing - Reported-by: 左潇峰 - Fixes #11196 - Closes #11197 + HTTP/1 connections that are upgraded to HTTP/2 should not be picked up + for reuse and multiplexing by other handles until the 101 switching + process is completed. -Emanuele Torre (25 May 2023) + Lots-of-debgging-by: Stefan Eissing + Reported-by: Richard W.M. Jones + Bug: https://curl.se/mail/lib-2023-07/0045.html + Closes #11557 -- configure: fix build with arbitrary CC and LD_LIBRARY_PATH +- Revert "KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14" - Since ./configure and processes that inherit its environment variables - are the only callers of the run-compiler script, we can just save the - current value of the LD_LIBRARY_PATH and CC variables to another pair of - environment variables, and make run-compiler a static script that - simply restores CC and LD_LIBRARY_PATH to the saved value, and before - running the compiler. + This reverts commit 2e8a3d7cb73c85a9aa151e263315f8a496dbb9d4. - This avoids having to inject the values of the variables in the script, - possibly causing problems if they contains spaces, quotes, and other - special characters. + It's a user error for supplying incomplete information to the build system. - Also add exports in the script just in case LD_LIBRARY_PATH and CC are - not already in the environment. + Reported-by: Ryan Schmidt + Ref: https://github.com/curl/curl/issues/11215#issuecomment-1658729367 - follow-up from 471dab2 +Viktor Szakats (1 Aug 2023) - Closes #11182 +- cmake: add support for single libcurl compilation pass -Daniel Stenberg (25 May 2023) + Before this patch CMake builds used two separate compilation passes to + build the shared and static libcurl respectively. This patch allows to + reduce that to a single pass if the target platform and build settings + allow it. -- urlapi: remove superfluous host name check + This reduces CMake build times when building both static and shared + libcurl at the same time, making these dual builds an almost zero-cost + option. - ... as it is checked later more proper. + Enable this feature for Windows builds, where the difference between the + two passes was the use of `__declspec(dllexport)` attribute for exported + API functions for the shared builds. This patch replaces this method + with the use of `libcurl.def` at DLL link time. - Closes #11195 + Also update `Makefile.mk` to use `libcurl.def` to export libcurl API + symbols on Windows. This simplifies (or fixes) this build method (e.g. + in curl-for-win, which generated a `libcurl.def` from `.h` files using + an elaborate set of transformations). -Stefan Eissing (25 May 2023) + `libcurl.def` has the maintenance cost of keeping the list of public + libcurl API symbols up-to-date. This list seldom changes, so the cost + is low. -- http2: fix EOF handling on uploads with auth negotiation + Closes #11546 - - doing a POST with `--digest` does an override on the initial request - with `Content-Length: 0`, but the http2 filter was unaware of that - and expected the originally request body. It did therefore not - send a final DATA frame with EOF flag to the server. - - The fix overrides any initial notion of post size when the `done_send` - event is triggered by the transfer loop, leading to the EOF that - is necessary. - - refs #11194. The fault did not happen in testing, as Apache httpd - never tries to read the request body of the initial request, - sends the 401 reply and closes the stream. The server used in the - reported issue however tried to read the EOF and timed out on the - request. +- cmake: detect `SSL_set0_wbio` in OpenSSL - Reported-by: Aleksander Mazur - Fixes #11194 - Cloes #11200 + Present in OpenSSL 1.1.0 and BoringSSL. + Missing from LibreSSL 3.8.0. -Daniel Stenberg (23 May 2023) + Follow-up to f39472ea9f4f4e12cfbc0500c4580a8d52ce4a59 -- RELEASE-NOTES: synced + While here, also fix `RAND_egd()` detection which was broken, likely all + along. This feature is probably broken with CMake builds and also + requires a sufficiently obsolete OpenSSL version, so this part of the + update was not tested. - bump to 8.2.0 + Closes #11555 -- lib: remove unused functions, make single-use static +- cmake: fixup H2 duplicate symbols for unity builds - Closes #11174 + Closes #11550 -- scripts/singleuse.pl: add more API calls +Pablo Busse (1 Aug 2023) -Christian Hesse (23 May 2023) +- openssl: Support async cert verify callback -- configure: quote the assignments for run-compiler + - Update the OpenSSL connect state machine to handle + SSL_ERROR_WANT_RETRY_VERIFY. - Building for multilib failed, as the compiler command contains an - extra argument. That needs quoting. + This allows libcurl users that are using custom certificate validation + to suspend processing while waiting for external I/O during certificate + validation. - Regression from b78ca50cb3dda361f9c1 + Closes https://github.com/curl/curl/pull/11499 - Fixes #11179 - Closes #11180 +Jay Satiro (1 Aug 2023) -Daniel Stenberg (23 May 2023) +- tool_cb_wrt: fix invalid unicode for windows console -- misc: fix spelling mistakes + - Suppress an incomplete UTF-8 sequence at the end of the buffer. - Reported-by: musvaage on github - Fixes #11171 - Closes #11172 + - Attempt to reconstruct incomplete UTF-8 sequence from prior call(s) + in current call. -Version 8.1.1 (23 May 2023) + Prior to this change, in Windows console UTF-8 sequences split between + two or more calls to the write callback would cause invalid "replacement + characters" U+FFFD to be printed instead of the actual Unicode + character. This is because in Windows only UTF-16 encoded characters are + printed to the console, therefore we convert the UTF-8 contents to + UTF-16, which cannot be done with partial UTF-8 sequences. -Daniel Stenberg (23 May 2023) + Reported-by: Maksim Arhipov -- RELEASE-NOTES: synced + Fixes https://github.com/curl/curl/issues/9841 + Closes https://github.com/curl/curl/pull/10890 - curl 8.1.1 +Daniel Stenberg (1 Aug 2023) -- THANKS: contributors from the 8.1.1 release +- sectransp: prevent CFRelease() of NULL -Dan Fandrich (22 May 2023) + When SecCertificateCopyCommonName() returns NULL, the common_name + pointer remains set to NULL which apparently when calling CFRelease() on + (sometimes?) crashes. -- docs: fix fuzzing documentation link + Reported-by: Guillaume Algis + Fixes #9194 + Closes #11554 - Follow-up to 4c712a1b +Jay Satiro (1 Aug 2023) -- CI: add an Alpine build with MUSL +- vtls: clarify "ALPN: offers" message - MUSL is another libc implementation which has its own unique issues - worth testing. + Before: + * ALPN: offers h2,http/1.1 - Ref: #11140 - Closes #11178 + After: + * ALPN: curl offers h2,http/1.1 -- runtests: add a missing \n at the end of a log message + Bug: https://curl.se/mail/lib-2023-07/0041.html + Reported-by: Richard W.M. Jones + Closes #11544 -correctmost on github (22 May 2023) +Daniel Stenberg (1 Aug 2023) -- SECURITY-PROCESS.md: link security advisory doc and fix typo +- urlapi: make sure zoneid is also duplicated in curl_url_dup - Closes #11177 + Add several curl_url_dup() tests to the general lib1560 test. -Daniel Stenberg (22 May 2023) + Reported-by: Rutger Broekhoff + Bug: https://curl.se/mail/lib-2023-07/0047.html + Closes #11549 -- TODO: build curl with Windows Unicode support +Sergey (1 Aug 2023) - Closes #7229 +- urlapi: fix heap buffer overflow -- KNOWN_BUGS: hyper memory-leaks + `u->path = Curl_memdup(path, pathlen + 1);` accesses bytes after the null-ter + minator. - Closes #10803 + ``` + ==2676==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x04d48c75 a + t pc 0x0112708a bp 0x006fb7e0 sp 0x006fb3c4 + READ of size 78 at 0x04d48c75 thread T0 + #0 0x1127089 in __asan_wrap_memcpy D:\a\_work\1\s\src\vctools\asan\llvm\c + ompiler-rt\lib\sanitizer_common\sanitizer_common_interceptors.inc:840 + #1 0x1891a0e in Curl_memdup C:\actions-runner\_work\client\client\third_p + arty\curl\lib\strdup.c:97 + #2 0x18db4b0 in parseurl C:\actions-runner\_work\client\client\third_part + y\curl\lib\urlapi.c:1297 + #3 0x18db819 in parseurl_and_replace C:\actions-runner\_work\client\clien + t\third_party\curl\lib\urlapi.c:1342 + #4 0x18d6e39 in curl_url_set C:\actions-runner\_work\client\client\third_ + party\curl\lib\urlapi.c:1790 + #5 0x1877d3e in parseurlandfillconn C:\actions-runner\_work\client\client + \third_party\curl\lib\url.c:1768 + #6 0x1871acf in create_conn C:\actions-runner\_work\client\client\third_p + arty\curl\lib\url.c:3403 + #7 0x186d8dc in Curl_connect C:\actions-runner\_work\client\client\third_ + party\curl\lib\url.c:3888 + #8 0x1856b78 in multi_runsingle C:\actions-runner\_work\client\client\thi + rd_party\curl\lib\multi.c:1982 + #9 0x18531e3 in curl_multi_perform C:\actions-runner\_work\client\client\ + third_party\curl\lib\multi.c:2756 + ``` -Stefan Eissing (22 May 2023) + Closes #11560 -- http/2: unstick uploads +Daniel Stenberg (31 Jul 2023) - - refs #11157 and #11175 where uploads get stuck or lead to RST streams - - fixes our h2 send behaviour to continue sending in the nghttp2 session - as long as it wants to. This will empty our send buffer as long as - the remote stream/connection window allows. - - in case the window is exhausted, the data remaining in the send buffer - will wait for a WINDOW_UPDATE from the server. Which is a socket event - that engages our transfer loop again - - the problem in the issue was that we did not exhaust the window, but - left data in the sendbuffer and no further socket events did happen. - The server was just waiting for us to send more. - - relatedly, there was an issue fixed that closing a stream with KEEP_HOLD - set kept the transfer from shutting down - as it should have - leading - to a timeout. +- curl: make %output{} in -w specify a file to write to - Closes #11176 + It can be used multiple times. Use %output{>>name} to append. -Daniel Stenberg (21 May 2023) + Add docs. Test 990 and 991 verify. -- workflows/macos: add a job using gcc + debug + secure transport + Idea: #11400 + Suggested-by: ed0d2b2ce19451f2 + Closes #11416 -Jay Satiro (21 May 2023) +- RELEASE-NOTES: synced -- lib: fix conversion warnings with gcc on macOS +- tool: add "variable" support -Daniel Stenberg (21 May 2023) + Add support for command line variables. Set variables with --variable + name=content or --variable name@file (where "file" can be stdin if set + to a single dash (-)). -- sectransp.c: make the code c89 compatible + Variable content is expanded in option parameters using "{{name}}" + (without the quotes) if the option name is prefixed with + "--expand-". This gets the contents of the variable "name" inserted, or + a blank if the name does not exist as a variable. Insert "{{" verbatim + in the string by prefixing it with a backslash, like "\\{{". - Follow-up to dd2bb485521c2ec713001b3a + Import an environment variable with --variable %name. It makes curl exit + with an error if the environment variable is not set. It can also rather + get a default value if the variable does not exist, using =content or + @file like shown above. - Reported-by: FeignClaims on github - Fixes #11155 - Closes #11159 + Example: get the USER environment variable into the URL: -Emanuele Torre (21 May 2023) + --variable %USER + --expand-url = "https://example.com/api/{{USER}}/method" -- Revert "urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirect - s" + When expanding variables, curl supports a set of functions that can make + the variable contents more convenient to use. It can trim leading and + trailing white space with "trim", output the contents as a JSON quoted + string with "json", URL encode it with "url" and base 64 encode it with + "b64". To apply functions to a variable expansion, add them colon + separated to the right side of the variable. They are then performed in + a left to right order. - This reverts commit df6c2f7b544f1f35f2a3e0be11f345affeb6fe9c. - (It only keep the test case that checks redirection to an absolute URL - without hostname and CURLU_NO_AUTHORITY). + Example: get the contents of a file called $HOME/.secret into a variable + called "fix". Make sure that the content is trimmed and percent-encoded + sent as POST data: - I originally wanted to make CURLU_ALLOW_SPACE accept spaces in the - hostname only because I thought - curl_url_set(CURLUPART_URL, CURLU_ALLOW_SPACE) was already accepting - them, and they were only not being accepted in the hostname when - curl_url_set(CURLUPART_URL) was used for a redirection. + --variable %HOME=/home/default + --expand-variable fix@{{HOME}}/.secret + --expand-data "{{fix:trim:url}}" + https://example.com/ - That is not actually the case, urlapi never accepted hostnames with - spaces, and a hostname with a space in it never makes sense. - I probably misread the output of my original test when I they were - normally accepted when using CURLU_ALLOW_SPACE, and not redirecting. + Documented. Many new test cases. - Some other URL parsers seems to allow space in the host part of the URL, - e.g. both python3's urllib.parse module, and Chromium's javascript URL - object allow spaces (chromium percent escapes the spaces with %20), - (they also both ignore TABs, and other whitespace characters), but those - URLs with spaces in the hostname are useless, neither python3's requests - module nor Chromium's window.location can actually use them. + Co-brainstormed-by: Emanuele Torre + Assisted-by: Jat Satiro + Closes #11346 - There is no reason to add support for URLs with spaces in the host, - since it was not a inconsistency bug; let's revert that patch before it - makes it into release. Sorry about that. +- KNOWN_BUGS: cygwin: make install installs curl-config.1 twice - I also reverted the extra check for CURLU_NO_AUTHORITY since that does - not seem to be necessary, CURLU_NO_AUTHORITY already worked for - redirects. + Closes #8839 - Closes #11169 +- KNOWN_BUGS: build for iOS simulator on macOS 13.2 with Xcode 14 -Dan Fandrich (20 May 2023) + Closes #11215 -- runtests: use the correct fd after select +- KNOWN_BUGS: cmake outputs: no version information available - The code was using the wrong fd when determining which runner was ready - with a response. + Closes #11158 - Ref: #10818 - Closes #11160 +- KNOWN_BUGS: APOP authentication fails on POP3 -- test425: fix the log directory for the upload + Closes #10073 - This must be %LOGDIR to let it work with parallel tests. +- KNOWN_BUGS: hyper is slow - Ref: #10969 + Closes #11203 -- runtests: handle interrupted reads from IPC pipes +Patrick Monnerat (31 Jul 2023) - These can be interrupted by signals, especially SIGINT to shut down, and - must be restarted so the IPC call arrives correctly. If the read just - returns an error instead, the IPC calling state will go out of sync and - a proper shutdown won't happen. +- configure, cmake, lib: more form api deprecation - Ref: #10818 + Introduce a --enable-form-api configure option to control its inclusion + in builds. The condition name defined for it is CURL_DISABLE_FORM_API. -Stefan Eissing (20 May 2023) + Form api code is dependent of MIME: configure and CMake handle this + dependency automatically: CMake by making it a dependent option + explicitly, configure by inheriting the MIME value by default and + rejecting explicit incompatible values. -- http2: upload improvements + "form-api" is now a new hidden test feature. - Make send buffer smaller to have progress and "upload done" reporting - closer to reality. Fix handling of send "drain" condition to no longer - trigger once the transfer loop reports it is done sending. Also do not - trigger the send "drain" on RST streams. + Update libcurl modules to respect this option and adjust tests + accordingly. - Background: - - a upload stall was reported in #11157 that timed out - - test_07_33a reproduces a problem with such a stall if the - server 404s the request and RSTs the stream. - - test_07_33b verifies a successful PUT, using the parameters - from #11157 and checks success + Closes #9621 - Ref: #11157 - Closes #11165 +Daniel Stenberg (31 Jul 2023) -- http2: increase stream window size to 10 MB +- mailmap: add Derzsi Dániel - Reported-by: pandada8 on github +Derzsi Dániel (31 Jul 2023) - Fixes #11162 - Closes #11167 +- wolfssl: support loading system CA certificates -Daniel Stenberg (20 May 2023) + Closes #11452 -- lib: rename struct 'http_req' to 'httpreq' +Viktor Szakats (30 Jul 2023) - Because FreeBSD 14 kidnapped the name. - Ref: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271526 +- nss: delete more NSS references - Fixes #11163 - Closes #11164 + Fix the distcheck CI failure and delete more NSS references. -Viktor Szakats (20 May 2023) + Follow-up to 7c8bae0d9c9b2dfeeb008b9a316117d7b9675175 -- cmake: avoid `list(PREPEND)` for compatibility + Reviewed-by: Marcel Raad + Reviewed-by: Daniel Stenberg + Closes #11548 - `list(PREPEND)` requires CMake v3.15, our minimum is v3.7. +Daniel Stenberg (29 Jul 2023) - Ref: https://cmake.org/cmake/help/latest/command/list.html#prepend +- nss: remove support for this TLS library - Regression from 1e3319a167d2f32d295603167486e9e88af9bb4e + Closes #11459 - Reported-by: Keitagit-kun on Github - Fixes #11141 - Closes #11144 +Ryan Schmidt (29 Jul 2023) -Daniel Stenberg (19 May 2023) +- macOS: fix target detection more -- RELEASE-NOTES: synced + Now SCDynamicStoreCopyProxies is called (and the required frameworks are + linked in) on all versions of macOS and only on macOS. Fixes crash due + to undefined symbol when built with the macOS 10.11 SDK or earlier. -Stefan Eissing (19 May 2023) + CURL_OSX_CALL_COPYPROXIES is renamed to CURL_MACOS_CALL_COPYPROXIES and + is now only defined when SCDynamicStoreCopyProxies will actually be + called. Previously, it was defined when ENABLE_IPV6 was not defined but + SCDynamicStoreCopyProxies is not called in that case. -- ngtcp2: proper handling of uint64_t when adjusting send buffer + TARGET_OS_OSX is only defined in the macOS 10.12 SDK and later and only + when dynamic targets are enabled. TARGET_OS_MAC is always defined but + means any Mac OS or derivative including macOS, iOS, tvOS, and watchOS. + TARGET_OS_IPHONE means any Darwin OS other than macOS. - Fixes #11149 - Closes #11153 + Follow-up to c73b2f82 -- ngtcp2: fix compiler warning about possible null-deref + Fixes #11502 + Closes #11516 - - compiler analyzer did not include the call context for this - static function where the condition had already been checked. - - eleminating the problem by making stream a call parameter +Daniel Stenberg (29 Jul 2023) - Fixes #11147 - Closes #11151 +- tool_operate: allow SSL_CERT_FILE and SSL_CERT_DIR -Emanuele Torre (19 May 2023) + ... used at once. -- docs: document that curl_url_cleanup(NULL) is a safe no-op + Reported-by: Gabriel Corona + Fixes #11325 + Closes #11531 - This has always been the case, but it was not documented. +Thomas M. DuBuisson (29 Jul 2023) - The paragraph was copied verbatim from curl_easy_cleanup.3 +- CI: remove Lift's configuration - Closes #11150 + The Lift tool is being retired. Their site reads: -Antoine Pitrou (19 May 2023) + "Sonatype Lift will be retiring on Sep 12, 2023, with its analysis + stopping on Aug 12, 2023." -- select: avoid returning an error on EINTR from select() or poll() + Closes #11541 - This was already done for the poll() and select() calls - made directly from Curl_poll(), but was missed in - Curl_wait_ms(), which is called when there are no fds - to wait on. +Nathan Moinvaziri (29 Jul 2023) - Fixes #11135 - Closes #11143 +- Revert "schannel: reverse the order of certinfo insertions" -Daniel Stenberg (19 May 2023) + This reverts commit 8986df802db9b5338d9d50a54232ebae4dbcf6dd. -- vquic.c: make recvfrom_packets static, avoid compiler warning + Windows does not guarantee a particular certificate ordering, even + though TLS may have its own ordering/relationship guarantees. Recent + versions of Windows 11 reversed the ordering of ceritifcates returned by + CertEnumCertificatesInStore, therefore this commit no longer works as + initially intended. libcurl makes no guarantees about certificate + ordering if the operating system can't. - warning: no previous prototype for 'recvfrom_packets' + Ref: https://github.com/curl/curl/issues/9706 - Reported-by: Keitagit-kun on github - Fixes #11146 - Closes #11148 + Closes https://github.com/curl/curl/pull/11536 -- urlapi: allow numerical parts in the host name +wangzhikun (29 Jul 2023) - It can only be an IPv4 address if all parts are all digits and no more than - four parts, otherwise it is a host name. Even slightly wrong IPv4 will now be - passed through as a host name. +- winbuild: improve check for static zlib - Regression from 17a15d88467 shipped in 8.1.0 + - Check for zlib static library name zlibstatic.lib. - Extended test 1560 accordingly. + zlib's static library has a different name depending on how it was + built. zlibstatic.lib is output by cmake. zlibstat.lib is output by + their pre-generated Visual Studio project files (in the contrib + directory) and defines ZLIB_WINAPI (ie it's meant to use stdcall + instead of cdecl if you end up exporting the zlib functions). - Reported-by: Pavel Kalyugin - Fixes #11129 - Closes #11131 + Prior to this change the makefile only checked for the latter. -Emilio Cobos Álvarez (19 May 2023) + Closes https://github.com/curl/curl/pull/11521 -- http2: double http request parser max line length +Daniel Stenberg (29 Jul 2023) - This works around #11138, by doubling the limit, and should be a - relatively safe fix. +- configure: use the pkg-config --libs-only-l flag for libssh2 - Ideally the buffer would grow as needed and there would be no need for a - limit? But that might be follow-up material. + ... instead of --libs, as that one also returns -L flags. - Fixes #11138 - Closes #11139 + Reported-by: Wilhelm von Thiele + Fixes #11538 + Closes #11539 -Emanuele Torre (18 May 2023) +Viktor Szakats (29 Jul 2023) -- configure: fix --help alignment +- cmake: support building static and shared libcurl in one go - AC_ARG_ENABLE seems to only trim off whitespace from the start and end - of its help-string argument, while prepending two spaces of indentation - to all lines. + This patch adds the ability to build a static and shared libcurl library + in a single build session. It also adds an option to select which one to + use when building the curl executable. - This means that the two spaces of indentation between the --enable-rtsp - and the --disable-rtsp line were not removed causing ./configure --help - to print: + New build options: + - `BUILD_STATIC_LIBS`. Default: `OFF`. + Enabled automatically if `BUILD_SHARED_LIBS` is `OFF`. + - `BUILD_STATIC_CURL`. Default: `OFF`. + Requires `BUILD_STATIC_LIBS` enabled. + Enabled automatically if building static libcurl only. + - `STATIC_LIB_SUFFIX`. Default: empty. + - `IMPORT_LIB_SUFFIX`. Default: `_imp` if implib filename would collide + with static lib name (typically with MSVC) in Windows builds. + Otherwise empty. - Optional Features: - [...] - --enable-rtsp Enable RTSP support - --disable-rtsp Disable RTSP support + Also: - I removed the indentation to fix the issue, now it prints: + - Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass + it directly to the compiler. This also allows to delete a condition + from `tests/server/CMakeLists.txt`. - Optional Features: - [...] - --enable-rtsp Enable RTSP support - --disable-rtsp Disable RTSP support + - Complete a TODO by following the logic used in autotools (also for + `LIBCURL_NO_SHARED`), and set `-DCURL_STATICLIB` in `Cflags:` of + `libcurl.pc` for _static-only_ curl builds. - The --enable-hsts and --disable-hsts lines had the same problems, and - have been fixed too. + - Convert an existing CI test to build both shared and static libcurl. - Closes #11142 + Closes #11505 -Deal(一线灵) (18 May 2023) +Stefan Eissing (28 Jul 2023) -- cmake: repair cross compiling +- CI/awslc: add cache for build awslc library - It cannot *run* code for testing purposes when cross-compiling. + Closes #11535 - Closes #11130 +- GHA/linux.yml: add caching -Daniel Stenberg (18 May 2023) + Closes #11532 -- configure: generate a script to run the compiler +Daniel Stenberg (27 Jul 2023) - in the CURL_RUN_IFELSE macro, with LD_LIBRARY_PATH set to the value of - the configure invoke, and not the value that might be used later, - intended for the execution of the output the compiler ouputs. +- RELEASE-NOTES: synced - For example when the compiler uses the same library (like libz) that - configure checks for. + Bump working version to 8.3.0 - Reported-by: Jonas Bülow - Fixes #11114 - Closes #11120 +- url: remove infof() output for "still name resolving" -Stefan Eissing (18 May 2023) + The message does not help and might get spewed a lot during times. -- cf-socket: completely remove the disabled USE_RECV_BEFORE_SEND_WORKAROUND + Reported-by: yushicheng7788 on github + Fixes #11394 + Closes #11529 - Closes #11118 +- KNOWN_BUGS: cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!" -Emanuele Torre (18 May 2023) + Closes #11244 -- urlapi: respect CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY for redirects +Stefan Eissing (27 Jul 2023) - curl_url_set(uh, CURLUPART_URL, redirurl, flags) was not respecing - CURLU_ALLOW_SPACE and CURLU_NO_AUTHORITY in the host part of redirurl - when redirecting to an absolute URL. +- CI: quiche updates - Closes #11136 + - remove quiche from standard `linux` workflow + - add mod_h2 caching to quiche workflow + - rename quiche to quiche-linux + - move version definitions into env section -Colin Cross (18 May 2023) + Closes #11528 -- hostip: move easy_lock.h include above curl_memory.h +- http2: disable asssertion blocking OSSFuzz testing - Similar to #9561, move easy_lock.h above curl_memory.h to fix building - against musl libc. + - not clear how this triggers and it blocks OSSFuzz testing other + things. Since we handle the case with an error return, disabling the + assertion for now seems the best way forward. - Closes #11140 + Fixes #11500 + Closes #11519 -Hind Montassif (18 May 2023) +- http2: fix in h2 proxy tunnel: progress in ingress on sending -- curl_easy_getinfo: clarify on return data types + - depending on what is tunneled, the proxy may never get invoked for + receiving data explicitly. Not progressing ingress may lead to stalls + due to missed WINDOW_UPDATEs. - Closes #11126 + CI: + - add a chache for building mod_h2 -Emanuele Torre (18 May 2023) + Closes #11527 -- checksrc: disallow spaces before labels +- CI ngtcp2+quictls: use nghttpx cache as in quiche build - Out of 415 labels throughout the code base, 86 of those labels were - not at the start of the line. Which means labels always at the start of - the line is the favoured style overall with 329 instances. +Jay Satiro (27 Jul 2023) - Out of the 86 labels not at the start of the line: - * 75 were indented with the same indentation level of the following line - * 8 were indented with exactly one space - * 2 were indented with one fewer indentation level then the following - line - * 1 was indented with the indentation level of the following line minus - three space (probably unintentional) +- bearssl: don't load CA certs when peer verification is disabled - Co-Authored-By: Viktor Szakats + We already do this for other SSL backends. - Closes #11134 + Bug: https://github.com/curl/curl/pull/11457#issuecomment-1644587473 + Reported-by: kyled-dell@users.noreply.github.com -Daniel Stenberg (18 May 2023) + Closes https://github.com/curl/curl/pull/11497 -- cookie: update the comment on cookie length and size limits +Daniel Stenberg (26 Jul 2023) - To refer to the proper cookie RFC and the upcoming RFC refresh. +- easy: remove #ifdefs to make code easier on the eye - Closes #11127 + Closes #11525 -- url: provide better error message when URLs fail to parse +Stefan Eissing (26 Jul 2023) - By providing the URL API error message into the error message. +- GHA: adding quiche workflow - Ref: #11129 - Closes #11137 + - adding separate quiche workflow to also build nghttpx server for testing -- RELEASE-NOTES: synced + Closes #11517 - bumped to 8.1.1 +Version 8.2.1 (26 Jul 2023) -Jon Rumsey (18 May 2023) +Daniel Stenberg (26 Jul 2023) -- os400: update chkstrings.c +- RELEASE-NOTES: synced - Compensate changes for recent changes to urldata.h to reclassify - STRING_AWS_SIGV4. + curl 8.2.1 release - Fixes #11132 - Closes #11133 +- THANKS: add contributors from 8.2.1 -Version 8.1.0 (17 May 2023) +- docs: provide more see also for cipher options -Daniel Stenberg (17 May 2023) + More cross references. Hide nroff errors. -- RELEASE-NOTES: synced + Closes #11513 -- THANKS: contributors from the 8.1.0 release +- docs: mark two TLS options for TLS, not SSL -- hostip: include easy_lock.h before using GLOBAL_INIT_IS_THREADSAFE + Closes #11514 - Since that header file is the only place that define can be defined. +Brad Harder (25 Jul 2023) - Reported-by: Marc Deslauriers +- curl_multi_wait.3: fix arg quoting to doc macro .BR - Follow-up to 13718030ad4b3209 + Closes #11511 - Closes #11121 +Daniel Stenberg (24 Jul 2023) -Thomas Taylor (16 May 2023) +- RELEASE-NOTES: synced -- aws-sigv4.d: fix region identifier in example +Viktor Szakats (24 Jul 2023) - Closes #11117 +- cmake: update ngtcp2 detection -Philip Heiduck (15 May 2023) + Replace `OpenSSL` with `quictls` to follow the same change + in the v0.17.0 ngtcp2 release. -- mlc_config.json: remove this linkcheck CI job config file + Follow-up to e0093b4b732f6495b0fb1cd6747cbfedcdcf63ed - Closes #11113 + Closes #11508 -Daniel Silverstone (15 May 2023) +Stefan Eissing (24 Jul 2023) -- ssh: Add support for libssh2 read timeout +- http: VLH, very large header test and fixes - Hook the new (1.11.0 or newer) libssh2 support for setting a read timeout - into the SERVER_RESPONSE_TIMEOUT option. With this done, clients can use - the standard curl response timeout setting to also control the time that - libssh2 will wait for packets from a slow server. This is necessary to - enable use of very slow SFTP servers. + - adding tests using very large passwords in auth + - fixes general http sending to treat h3 like h2, and + not like http1.1 + - eliminate H2_HEADER max definitions and use the commmon + DYN_HTTP_REQUEST everywhere, different limits do not help + - fix http2 handling of requests denied by nghttp2 on send + to immediately report the refused stream - Signed-off-by: Daniel Silverstone + Closes #11509 - Closes #10965 +Andrei Rybak (23 Jul 2023) -Osama Albahrani (14 May 2023) +- CONTRIBUTE: drop mention of copyright year ranges -- GIT-INFO: add --with-openssl + Year ranges in copyrights were dropped in commits [1] and [2]. + Verification of year ranges in copyrights was dropped from script + 'scripts/copyright.pl' in commit [3]. However, the corresponding + passages in file 'docs/CONTRIBUTE.md' weren't updated. - Closes #11110 + Drop mentions of copyright year ranges from 'docs/CONTRIBUTE.md'. -Daniel Stenberg (13 May 2023) + [1] 2bc1d775f (copyright: update all copyright lines and remove year + ranges, 2023-01-02) + [2] c46761bd8 (tests/http: remove year ranges from copyrights, + 2023-03-14) + [3] 0e293bacb (copyright.pl: cease doing year verifications, 2023-01-28) -- RELEASE-NOTES: synced + Closes #11504 -Marcel Raad (13 May 2023) +- CONTRIBUTE: fix syntax in commit message description -- md(4|5): don't use deprecated iOS functions + File 'docs/CONTRIBUTE.md' includes a description of how one should write + commit messages in the curl project. Different possible parts of the + message are enclosed in square brackets. One exception is the section + describing how the curl project doesn't use "Signed-off-by" commit + trailers [1], which is enclosed in an opening curly brace paired with a + closing square bracket. - They are marked as deprecated in iOS 13.0, which might result in - warnings-as-errors. + Fix the enclosing square brackets in description of "Signed-off-by" + trailers in commit messages in file 'docs/CONTRIBUTE.md'. - Also, use `*_MIN_REQUIRED` instead of `*_MIN_ALLOWED`, which seems to - be what's currently used. + [1] See description of option '--signoff' in Git documentation: + https://git-scm.com/docs/git-commit - Bug: https://github.com/curl/curl/issues/11098 - Closes https://github.com/curl/curl/pull/11102 + Closes #11504 -- md4: only build when used +Daniel Stenberg (23 Jul 2023) - Its only usage in curl_ntlm_core.c is guarded by `USE_CURL_NTLM_CORE`, - so let's use this here too. +- src/mkhelp: strip off escape sequences - Ref: https://github.com/curl/curl/issues/11098 - Closes https://github.com/curl/curl/pull/11102 + At some point the nroff command stopped stripping off escape sequences, + so then this script needs to do the job instead. -Vítor Galvão (12 May 2023) + Reported-by: VictorVG on github + Fixes #11501 + Closes #11503 -- write-out.d: Use response_code in example +- KNOWN_BUGS: building for old macOS fails with gcc - Closes #11107 + Closes #11441 -Shohei Maeda (12 May 2023) +Jacob Hoffman-Andrews (22 Jul 2023) -- url: fix null dispname for --connect-to option +- rustls: update rustls-ffi 0.10.0 - Closes #11106 + This brings in version 0.21.0 of the upstream rustls implementation, + which notable includes support for IP address certificates. -Daniel Stenberg (12 May 2023) + Closes #10865 -- test2306: verify getting a second response with folded headers +Brad Harder (22 Jul 2023) - Reproduces the isue #11101 and verifies the fix. +- websocket: rename arguments/variables to match docs - Verifies a17b2a503f + Pedantry/semantic-alignment between functions, docs, comments with + respect to websocket protocol code; No functional change intended. -- headers: clear (possibly) lingering pointer in init + * "totalsize", "framesize" becomes "fragsize" (we deal in frame fragments). - The "prevhead" pointer is used for the headers storage but was not - cleared correctly in init, which made it possible to act up when a - handle is reused. + * "sendflags" becomes "flags" - Reported-by: Steve Herrell - Fixes #11101 - Closes #11103 + * use canonical CURL *handle -- RELEASE-NOTES: synced + Closes #11493 -- ngtcp2: use 0.15.0 +Jan Macku (21 Jul 2023) - - nghttp3 0.11.0 - - nghttp2 1.53.0 +- bug_report: use issue forms instead of markdown template - Adapt to new API calls + Issue forms allow you to define web-like input forms using YAML + syntax. It allows you to guide the reporter to get the required + information. - Closes #11031 + Signed-off-by: Jan Macku + Closes #11474 -Jay Satiro (10 May 2023) +Daniel Stenberg (21 Jul 2023) -- openssl: fix indent +- TODO: Obey Retry-After in redirects -Daniel Stenberg (10 May 2023) + (remove "Set custom client ip when using haproxy protocol" which was + shipped in 8.2.0) -- CURLOPT_DNS_CACHE_TIMEOUT.3: fix spelling + Mentioned-by: Yair Lenga + Closes #11447 - Follow-up to 9ed7d56e044f5aa1b29 +- RELEASE-NOTES: synced - Closes #11096 +Oliver Roberts (21 Jul 2023) -- hostip: use time_t for storing oldest DNS entry +- amissl: fix AmiSSL v5 detection - Theoretically, the oldest time could overflow an int. In practice that - won't happen, but let's do this to please analyzers. + Due to changes in the AmiSSL SDK, the detection needed adjusting. - Follow-up to 9ed7d56e044f5aa1b2928ccde6245d0 + Closes #11477 - Pointed out by Coverity. - Closes #11094 +Alois Klink (21 Jul 2023) -- http: free the url before storing a new copy +- unittest/makefile: remove unneeded unit1621_LDADD - To avoid a memory-leak. + The `unit1621_LDADD` variable has the exact same value as the `LDADD` + flag in `Makefile.am`, except without `@LDFLAGS@ @LIBCURL_LIBS@`. - Reported-by: Hiroki Kurosawa + This was originally added by [98e6629][], but I can't see any reason + why it exists, so we should remove it to clean things up. - Closes #11093 + [98e6629]: https://github.com/curl/curl/commit/98e6629154044e4ab1ee7cff8351c7 + ebcb131e88 -- compressed.d: clarify the words on "not notifying headers" + Closes #11494 - Reported-by: Dylan Anthony - Fixes #11091 - Closes #11092 +- unittest/makefile: remove unneeded unit1394_LDADD -- libssh2: free fingerprint better + These custom `unit1394_LDADD` and similar automake overrides are no + longer neded. They were originally added by added by [8dac7be][] for + metalink support, but are no longer after [265b14d][] removed metalink. - Reported-by: Wei Chong Tan - Closes #11088 + [8dac7be]: https://github.com/curl/curl/commit/8dac7be438512a8725d3c71e9139bd + fdcac1ed8c + [265b14d]: https://github.com/curl/curl/commit/265b14d6b37c4298bd5556fabcbc37 + d36f911693 -- CURLOPT_IPRESOLVE.3: clarify that this for host names, not IP addresses + Closes #11494 - Reported-by: Harry Sintonen - Closes #11087 +- cmake: add `libcurlu`/`libcurltool` for unit tests -- hostip: enforce a maximum DNS cache size independent of timeout value + Add a `libcurlu`/`libcurltool` static library that is compiled only for + unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not + built by default, they're only built if unit tests are built. - To reduce the damage an application can cause if using -1 or other - ridiculous timeout values and letting the cache live long times. + These libraries allow us to compile every unit test with CMake. - The maximum number of entries in the DNS cache is now totally - arbitrarily and hard-coded set to 29999. + Closes #11446 - Closes #11084 +Daniel Stenberg (21 Jul 2023) -- hostip: store dns timeout as 'int' +- test979: test -u with redirect to (the same) absolute host - ... because it set and held as an 'int' elsewhere and can never be - larger. + Verifies #11492 -- RELEASE-NOTES: synced +- transfer: do not clear the credentials on redirect to absolute URL -- tool_operate: refuse (--data or --form) and --continue-at combo + Makes test 979 work. Regression shipped in 8.2.0 from commit + dd4d1a26959f63a2c - libcurl assumes that a --continue-at resumption is done to continue an - upload using the read callback and neither --data nor --form use - that and thus won't do what the user wants. Whatever the user wants - with this strange combination. + Fixes #11486 + Reported-by: Cloudogu Siebels + Closes #11492 - Add test 426 to verify. +Jon Rumsey (20 Jul 2023) - Reported-by: Smackd0wn on github - Fixes #11081 - Closes #11083 +- os400: correct EXPECTED_STRING_LASTZEROTERMINATED -- transfer: refuse POSTFIELDS + RESUME_FROM combo + Correct EXPECTED_STRING_LASTZEROTERMINATED to account for + CURLOPT_HAPROXY_CLIENT_IP which requires EBCDIC to ASCII conversion when + passed into curl_easy_setopt(). - The code assumes that such a resume is wanting to continue an upload - using the read callback, and since POSTFIELDS is done without callback - libcurl will just misbehave. + Closes #11476 - This combo will make the transfer fail with CURLE_BAD_FUNCTION_ARGUMENT - with an explanation in the error message. +Oliver Roberts (20 Jul 2023) - Reported-by: Smackd0wn on github - Fixes #11081 - Closes #11083 +- amissl: add missing signal.h include -- ipv4.d/ipv6.d: they are "mutex", not "boolean" + In some environments, signal.h is already included, but not in others + which cause compilation to fail, so explictly include it. - ... which for example means they do not have --no-* versions. + Closes #11478 - Reported-by: Harry Sintonen - Fixes #11085 - Closes #11086 +- amigaos: fix sys/mbuf.h m_len macro clash -- docs/SECURITY-ADVISORY.md: how to write a curl security advisory + The updated Curl_http_req_make and Curl_http_req_make2 functions spawned + a parameter called m_len. The AmigaOS networking headers, derived from + NetBSD, contain "#define m_len m_hdr.mh_len" which clashes with + this. Since we do not actually use mbuf, force the include file to be + ignored, removing the clash. - Closes #11080 + Closes #11479 -nobedee on github (5 May 2023) +Daniel Stenberg (20 Jul 2023) -- MANUAL.md: add dict example for looking up a single definition +- socks: print ipv6 address within brackets - Closes #11077 + Fixes #11483 + Closes #11484 -Dan Fandrich (5 May 2023) +Christian Schmitz (20 Jul 2023) -- runtests: fix -c option when run with valgrind +- libcurl-errors.3: add CURLUE_OK - The curl binary argument wasn't being quoted properly. This seems to - have broken at some point after quoting was added in commit 606b29fe. + Closes #11488 - Reported-by: Daniel Stenberg - Ref: #11073 - Fixes #11074 - Closes #11076 +Oliver Roberts (20 Jul 2023) -- runtests: support creating more than one runner process +- cfilters: rename close/connect functions to avoid clashes - The controller currently only creates and uses one, but more are now - possible. + Rename `close` and `connect` in `struct Curl_cftype` for + consistency and to avoid clashes with macros of the same name + (the standard AmigaOS networking connect() function is implemented + via a macro). - Ref: #10818 + Closes #11491 -- runtests: spawn a new process for the test runner +Stefan Eissing (20 Jul 2023) - When the -j option is given, a new process is spawned in which the test - programs are run and from which test servers are started. Only one - process can be started at once, but this is sufficient to test that the - infrastructure can isolate those functions in a new task. There should - be no visible difference between the two modes at the moment. +- http2: fix regression on upload EOF handling - Ref: #10818 - Closes #11064 + - a regression introduced by c9ec85121110d7cbbbed2990024222c8f5b8afe5 + where optimization of small POST bodies leads to a new code path + for such uploads that did not trigger the "done sending" event + - add triggering this event for early "upload_done" situations -- runtests: turn singletest() into a state machine + Fixes #11485 + Closes #11487 + Reported-by: Aleksander Mazur - This allows it to run in a non-blocking manner. +Daniel Stenberg (19 Jul 2023) - Ref: #10818 +- configure: check for nghttp2_session_get_stream_local_window_size -- runtests: change runner interface to be asynchronous + The http2 code uses it now. Introduced in nghttp2 1.15.0 (Sep 2016) - Program arguments are marshalled and then written to the end of a pipe - which is later read from and the arguments unmarshalled before the - desired function is called normally. The function return values are - then marshalled and written into another pipe when is later read from - and unmarshalled before being returned to the caller. + Fixes #11470 + Reported-by: Paul Howarth + Closes #11473 - The implementation is currently blocking but can be made non-blocking - without any changes to the API. This allows calling multiple runners - without blocking in the future. +Stefan Eissing (19 Jul 2023) - Ref: #10818 +- quiche: fix segfault and other things -- runtests: call citest_finishtest in singletest + - refs #11449 where a segfault is reported when IP Eyeballing did + not immediately connect but made several attempts + - The transfer initiating the eyeballing was initialized too early, + leadding to references to the filter instance that was then + replaced in the subsequent eyeball attempts. That led to a use + after free in the buffer handling for the transfer + - transfers are initiated now more lazy (like in the ngtcp2 filter), + when the stream is actually opened + - suppress reporting on quiche event errors for "other" transfers + than the current one to not fail a transfer due to faults in + another one. + - revert recent return value handling for quiche_h3_recv_body() + to not indicate an error but an EAGAIN situation. We wish quiche + would document what functions return. - This is where citest_starttest is called. + Fixes #11449 + Closes #11469 + Reported-by: ウさん - Ref: #10818 +Daniel Stenberg (19 Jul 2023) -- runtests: add a runner initialization function +- hostip: return IPv6 first for localhost resolves - This sets up the runner environment to start running tests. + Fixes #11465 + Reported-by: Chilledheart on github + Closes #11466 - Ref: #10818 +Harry Sintonen (19 Jul 2023) -- runtests: remove directory from server filename variables +- tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T - There will soon be multiple log directories so the paths will no longer - be static in runtests.pl. Also, get rid of $SERVER2IN which was not - used. + - a variable was renamed, and some use of it wasn't. this fixes the + build. - Ref: #10818 + Closes #11468 -- runtests: reduce package exports after refactoring +Stefan Eissing (19 Jul 2023) - Some recent refactoring made these export no longer necessary. Also, - stop displaying the Unix socket paths at startup since there will soon - be many of them and they're not that interesting. +- quiche: fix lookup of transfer at multi - Ref: #10818 + - refs #11449 where weirdness in quiche multi connection tranfers was + observed + - fixes lookup of transfer for a quiche event to take the connection + into account + - formerly, a transfer with the same stream_id, but on another connection + could be found -- runtests: use a function to obtain $LOGDIR for a test + Closes #11462 - This will no longer be static soon. +Daniel Stenberg (19 Jul 2023) - Ref: #10818 +- RELEASE-NOTES: synced -Jay Satiro (5 May 2023) + bump to 8.2.1 -- tool_cb_hdr: Fix 'Location:' formatting for early VTE terminals +John Haugabook (19 Jul 2023) - - Disable hyperlink formatting for the 'Location:' header value in VTE - 0.48.1 and earlier, since it is buggy in some of those versions. +- ciphers.d: put URL in first column - Prior to this change those terminals may show the location header value - as gibberish or show it twice. + This makes the URL turn into a link properly when "webified". - Ref: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda#backw - ard-compatibility + Fixes https://github.com/curl/curl-www/issues/270 + Closes #11464 - Fixes https://github.com/curl/curl/issues/10428 - Closes https://github.com/curl/curl/pull/11071 +Version 8.2.0 (19 Jul 2023) -François Michel (3 May 2023) +Daniel Stenberg (19 Jul 2023) -- quiche: disable pacing while pacing is not actually performed +- RELEASE-NOTES: synced - Closes #11068 + 8.2.0 release -Daniel Stenberg (2 May 2023) +- THANKS-filter: strip out "GitHub" -- easy_cleanup: require a "good" handle to act +- THANKS: add contributors from 8.2.0 - By insisting that the passed in handle is "good" (the magic number is - intact), this can limit the potential damage if a bad pointer is passed - in. Like when this function is called twice on the same handle pointer. +- RELEASE-PROCEDURE.md: adjust the release dates - Ref: #10964 - Closes #11061 +Stefan Eissing (17 Jul 2023) -Andreas Falkenhahn (1 May 2023) +- quiche: fix defects found in latest coverity report -- amiga: Fix CA certificate paths for AmiSSL and MorphOS + Closes #11455 - AmiSSL stores certificates in `AmiSSL:Certs` and MorphOS stores them in - `MOSSYS:Data/SSL/curl-ca-bundle.crt`. +Daniel Stenberg (17 Jul 2023) - Closes https://github.com/curl/curl/pull/11059 +- quiche: avoid NULL deref in debug logging -Daniel Stenberg (30 Apr 2023) + Coverity reported "Dereference after null check" -- http2: (void)-mark when we explicitly ignore the return code + If stream is NULL and the function exits, the logging must not deref it. - When h2_progress_egress() is called. Pointed out by Coverity. + Closes #11454 - Closes #11057 +Stefan Eissing (17 Jul 2023) -- checksrc: find bad indentation in conditions without open brace +- http2: treat initial SETTINGS as a WINDOW_UPDATE - If the previous line starts with if/while/for AND ends with a closed - parenthesis and there's an equal number of open and closed parentheses - on that line, verify that this line is indented $indent more steps, if - not a cpp line. + - refs #11426 where spurious stalls on large POST requests + are reported + - the issue seems to involve the following + * first stream on connection adds up to 64KB of POST + data, which is the max default HTTP/2 stream window size + transfer is set to HOLD + * initial SETTINGS from server arrive, enlarging the stream + window. But no WINDOW_UPDATE is received. + * curl stalls + - the fix un-HOLDs a stream on receiving SETTINGS, not + relying on a WINDOW_UPDATE from lazy servers - Also adjust the fall-out from this fix. + Closes #11450 - Closes #11054 +Daniel Stenberg (17 Jul 2023) -Diogo Teles Sant'Anna (28 Apr 2023) +- ngtcp2: assigning timeout, but value is overwritten before used -- CI: Set minimal permissions on workflow ngtcp2-quictls.yml + Reported by Coverity - Signed-off-by: Diogo Teles Sant'Anna + Closes #11453 - Closes #11055 +- krb5: add typecast to please Coverity -Dan Fandrich (28 Apr 2023) +Derzsi Dániel (16 Jul 2023) -- CI: use another glob syntax for matching files on Appveyor +- wolfssl: support setting CA certificates as blob - The previous globbing syntax was not matching files recursively in - directories, so try appending a /* to more closely match the examples at - https://www.appveyor.com/docs/how-to/filtering-commits/ + Closes #11445 -Daniel Stenberg (28 Apr 2023) +- wolfssl: detect when TLS 1.2 support is not built into wolfssl -- multi: add multi-ignore logic to multi_socket_action + Closes #11444 - The multi-ignore logic that was previously applied to - curl_multi_perform() (#10750) is here applied to the loop within - curl_multi_socket_action() to make it use the same optimization: most - handles have the same signal-ignore option state so this drastically - reduces the number of ignore/unignore calls per libcurl function invoke. +Graham Campbell (15 Jul 2023) - Follow-up to bc90308328afb8 +- CI: bump nghttp2 from 1.55.0 to 1.55.1 - Closes #11045 + Closes #11442 -Stefan Eissing (28 Apr 2023) +Daniel Stenberg (15 Jul 2023) -- http2: do flow window accounting for cancelled streams +- curl: return error when asked to use an unsupported HTTP version - - nghttp2 does not free connection level window flow for - aborted streams - - when closing transfers, make sure that any buffered - response data is "given back" to the flow control window - - add tests test_02_22 and test_02_23 to reproduce + When one of the following options are used but the libcurl in use does + not support it: - Closes #11052 + --http2 + --http2-prior-knowledge + --proxy-http2 -- pingpong: fix compiler warning "assigning an enum to unsigned char" + Closes #11440 - Closes #11050 +Chris Paulson-Ellis (14 Jul 2023) -Daniel Stenberg (28 Apr 2023) +- cf-socket: don't bypass fclosesocket callback if cancelled before connect -- configure: fix detection of apxs (for httpd) + After upgrading to 8.1.2 from 7.84.0, I found that sockets were being + closed without calling the fclosesocket callback if a request was + cancelled after the associated socket was created, but before the socket + was connected. This lead to an imbalance of fopensocket & fclosesocket + callbacks, causing problems with a custom event loop integration using + the multi-API. - The condition check was turned the wrong way around! + This was caused by cf_socket_close() calling sclose() directly instead + of calling socket_close() if the socket was not active. For regular TCP + client connections, the socket is activated by cf_socket_active(), which + is only called when the socket completes the connect. - Closes #11051 + As far as I can tell, this issue has existed since 7.88.0. That is, + since the code in question was introduced by: + commit 71b7e0161032927cdfb4e75ea40f65b8898b3956 + Author: Stefan Eissing + Date: Fri Dec 30 09:14:55 2022 +0100 -Viktor Szakats (28 Apr 2023) + lib: connect/h2/h3 refactor -- ci: `-Wno-vla` no longer necessary + Closes #11439 - We handle this issue in the source now. +Daniel Stenberg (13 Jul 2023) - Follow-up to b725fe1944b45406676ea3aff333ae3085a848d9 +- tool_parsecfg: accept line lengths up to 10M - Reviewed-by: Marcel Raad - Reviewed-by: Daniel Stenberg - Closes #11048 + Bumped from 100K set in 47dd957daff9 -Marcel Raad (28 Apr 2023) + Reported-by: Antoine du Hamel + Fixes #11431 + Closes #11435 -- tests/http: make curl_setup.h the first include +Stefan Eissing (13 Jul 2023) - This is required for the macros there to take effect for system - libraries. Specifically, including the system libraries first led to - warnings about `_FILE_OFFSET_BITS` being redefined in curl_config.h on - the Solaris autobuilds for ws-data.c and ws-pingpong.c. - Also make the curl includes come first for the other source files here - for consistency. +- CI: brew fix for openssl in default path - Closes https://github.com/curl/curl/pull/11046 + If brew install/update links openssl into /usr/local, it will be found + before anything we add with `-isystem path` to CPP/LDLFAGS. Get rid of + that by unlinking the keg. -Emanuele Torre (27 Apr 2023) + Fixes #11413 + Closes #11436 -- checksrc: check for spaces before the colon of switch labels +Daniel Stenberg (13 Jul 2023) - Closes #11047 +- RELEASE-NOTES: synced -Daniel Stenberg (27 Apr 2023) +Ondřej Koláček (13 Jul 2023) -- RELEASE-NOTES: synced +- sectransp: fix EOF handling -- libssh: tell it to use SFTP non-blocking + Regression since the large refactor from 2022 - Reported-by: Andreas Huebner - Fixes #11020 - Closes #11039 + Closes #11427 -Stefan Eissing (27 Apr 2023) +Daniel Stenberg (13 Jul 2023) -- http2: enlarge the connection window +- checksrc: quote the file name to work with "funny" letters - - fixes stalled connections + Closes #11437 - - Make the connection window large enough, so that there is - some room left should 99/100 streams be PAUSED by the application +Karthikdasari0423 (13 Jul 2023) - Reported-by: Paweł Wegner - Fixes #10988 - Closes #11043 +- HTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0 -Daniel Stenberg (27 Apr 2023) + Follow-up to e0093b4b732f6 -- checksrc: fix SPACEBEFOREPAREN for conditions starting with "*" + Closes #11433 - The open paren check wants to warn for spaces before open parenthesis - for if/while/for but also for any function call. In order to avoid - catching function pointer declarations, the logic allows a space if the - first character after the open parenthesis is an asterisk. +Daniel Stenberg (13 Jul 2023) - I also spotted what we did not include "switch" in the check but we should. +- CURLOPT_MIMEPOST.3: clarify what setting to NULL means - This check is a little lame, but we reduce this problem by not allowing - that space for if/while/for/switch. + Follow-up to e08382a208d4e480 - Reported-by: Emanuele Torre - Closes #11044 + Closes #11430 -- docs: minor polish +Tatsuhiro Tsujikawa (12 Jul 2023) - - "an HTTP*" (not "a") - - remove a few contractions - - remove a spurious "a" - - reduce use of "I" in texts +- ngtcp2: build with 0.17.0 and nghttp3 0.13.0 - Closes #11040 + - ngtcp2_crypto_openssl was renamed to ngtcp2_crypto_quictls. -- ws: fix CONT opcode check + Closes #11428 - Detected by Coverity. Follow-up to 930c00c259 +- CI: Bump ngtcp2, nghttp3, and nghttp2 - Closes #11037 + Closes #11428 -Dan Fandrich (27 Apr 2023) +James Fuller (11 Jul 2023) -- CI: switch the awslc builds to build out-of-tree +- example/maxconnects: set maxconnect example - This is a common configuration that should be tested to avoid - regressions. The awsls cmake build was already out-of-tree so the - automake build now joins it. + Closes #11343 - Ref: #11006 +Pontakorn Prasertsuk (11 Jul 2023) -- tests/http: fix out-of-tree builds +- http2: send HEADER & DATA together if possible - Add both lib/ directories (src & build) to the search path so - curl_setup.h and its dependencies can be found. + Closes #11420 - Followup-to acd82c8b +Daniel Stenberg (11 Jul 2023) - Ref: #11006 - Closes #11036 +- CI: use wolfSSL 5.6.3 in builds -Daniel Stenberg (27 Apr 2023) + No using master anymore -- urlapi: make internal function start with Curl_ + Closes #11424 - Curl_url_set_authority() it is. +SaltyMilk (11 Jul 2023) - Follow-up to acd82c8bfd +- fopen: optimize - Closes #11035 + Closes #11419 -YX Hao (26 Apr 2023) +Daniel Stenberg (11 Jul 2023) -- cf-socket: turn off IPV6_V6ONLY on Windows if it is supported +- cmake: make use of snprintf - IPV6_V6ONLY refs: - https://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses - https://github.com/golang/go/blob/master/src/net/ipsock_posix.go - https://en.wikipedia.org/wiki/Unix-like - https://learn.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-o - ptions + Follow-up to 935b1bd4544a23a91d68 - default value refs: - https://datatracker.ietf.org/doc/html/rfc3493#section-5.3 - https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html#proc-sys-net - -ipv6-variables + Closes #11423 - Closes #10975 +Stefan Eissing (11 Jul 2023) -Daniel Stenberg (26 Apr 2023) +- macOS: fix taget detection -- urldata: shrink *select_bits int => unsigned char + - TARGET_OS_OSX is not always defined on macOS + - this leads to missing symbol Curl_macos_init() + - TargetConditionals.h seems to define these only when + dynamic targets are enabled (somewhere?) + - this PR fixes that on my macOS 13.4.1 + - I have no clue why CI builds worked without it - - dselect_bits - - cselect_bits + Follow-up to c7308592fb8ba213fc2c1 + Closes #11417 - ... are using less than 8 bits. Changed types and moved them towards - the end of the structs to fit better. +Stan Hu (9 Jul 2023) - Closes #11025 +- hostip.c: Move macOS-specific calls into global init call -Stefan Eissing (26 Apr 2023) + https://github.com/curl/curl/pull/7121 introduced a macOS system call + to `SCDynamicStoreCopyProxies`, which is invoked every time an IP + address needs to be resolved. -- tests/http: more tests with specific clients + However, this system call is not thread-safe, and macOS will kill the + process if the system call is run first in a fork. To make it possible + for the parent process to call this once and prevent the crash, only + invoke this system call in the global initialization routine. - - Makefile support for building test specific clients in tests/http/clients - - auto-make of clients when invoking pytest - - added test_09_02 for server PUSH_PROMISEs using clients/h2-serverpush - - added test_02_21 for lib based downloads and pausing/unpausing transfers + In addition, this change is beneficial because it: - curl url parser: - - added internal method `curl_url_set_authority()` for setting the - authority part of a url (used for PUSH_PROMISE) + 1. Avoids extra macOS system calls for every IP lookup. + 2. Consolidates macOS-specific initialization in a separate file. - http2: - - made logging of PUSH_PROMISE handling nicer + Fixes #11252 + Closes #11254 - Placing python test requirements in requirements.txt files - - separate files to base test suite and http tests since use - and module lists differ - - using the files in the gh workflows +Daniel Stenberg (9 Jul 2023) - websocket test cases, fixes for we and bufq - - bufq: account for spare chunks in space calculation - - bufq: reset chunks that are skipped empty - - ws: correctly encode frames with 126 bytes payload - - ws: update frame meta information on first call of collect - callback that fills user buffer - - test client ws-data: some test/reporting improvements +- docs: use a space after RFC when spelling out RFC numbers - Closes #11006 + Closes #11382 -Jay Satiro (26 Apr 2023) +Margu (9 Jul 2023) -- libssh2: fix crash in keyboard callback +- imap-append.c: update to make it more likely to work - - Always set the libssh2 'abstract' user-pointer to the libcurl easy - handle associated with the ssh session, so it is always passed to the - ssh keyboard callback. + Fixes #10300 + Closes #11397 - Prior to this change and since 8b5f100 (precedes curl 8.0.0), if libcurl - was built without CURL_DEBUG then it could crash during the ssh auth - phase due to a null dereference in the ssh keyboard callback. +Emanuele Torre (9 Jul 2023) - Reported-by: Andreas Falkenhahn +- tool_writeout_json: fix encoding of control characters - Fixes https://github.com/curl/curl/pull/11024 - Closes https://github.com/curl/curl/pull/11026 + Control characters without a special escape sequence e.g. %00 or %06 + were being encoded as "u0006" instead of "\u0006". -Daniel Stenberg (26 Apr 2023) + Ref: https://github.com/curl/trurl/pull/214#discussion_r1257487858 + Closes #11414 -- docs: clarify that more backends have HTTPS proxy support +Stefan Eissing (9 Jul 2023) - Closes #11033 +- http3/ngtcp2: upload EAGAIN handling -- KNOWN_BUGS: remove two not-bugs + - refs #11389 where IDLE timeouts on upload are reported + - reword ngtcp2 expiry handling to apply to both send+recv + calls into the filter + - EAGAIN uploads similar to the recent changes in HTTP/2, e.g. + report success only when send data was ACKed. + - HOLD sending of EAGAINed uploads to avoid cpu busy loops + - rename internal function for consistency with HTTP/2 + implementation - - 11.7 signal-based resolver timeouts + Fixes #11389 + Closes #11390 - Not considered a bug anymore but just implementation details. People - should avoid using timeouts with the synchronous name resolver. +Brian Nixon (9 Jul 2023) - - 11.16 libcurl uses renames instead of locking for atomic operations +- tool_easysrc.h: correct `easysrc_perform` for `CURL_DISABLE_LIBCURL_OPTION` - Not a bug, just a description of how it works + Closes #11398 - Closes #11032 +Daniel Stenberg (9 Jul 2023) -Harry Sintonen (26 Apr 2023) +- RELEASE-NOTES: synced -- hostip: add locks around use of global buffer for alarm() +- transfer: clear credentials when redirecting to absolute URL - When building with the sync name resolver and timeout ability we now - require thread-safety to be present to enable it. + Make sure the user and password for the second request is taken from the + redirected-to URL. - Closes #11030 + Add test case 899 to verify. -Daniel Stenberg (26 Apr 2023) + Reported-by: James Lucas + Fixes #11410 + Closes #11412 -- curl_path: bring back support for SFTP path ending in /~ +Stefan Eissing (8 Jul 2023) - libcurl used to do a directory listing for this case (even though the - documentation says a URL needs to end in a slash for this), but - 4e2b52b5f7a3 modified the behavior. +- hyper: fix EOF handling on input - This change brings back a directory listing for SFTP paths that are - specified exactly as /~ in the URL. + We ran out of disc space due to an infinite loop with debug logging - Reported-by: Pavel Mayorov - Fixes #11001 - Closes #11023 + Fixes #11377 + Closes #11385 + Reported-by: Dan Fandrich -Emanuele Torre (26 Apr 2023) +- http2: raise header limitations above and beyond -- docs/libcurl/curl_*escape.3: rename "url" argument to "input"/"string" + - not quite to infinity + - rewrote the implementation of our internal HTTP/1.x request + parsing to work with very large lines using dynbufs. + - new default limit is `DYN_HTTP_REQUEST`, aka 1MB, which + is also the limit of curl's general HTTP request processing. - Also reword the DESCRIPTION section to mention "input"/"string" argument - in bold. + Fixes #11405 + Closes #11407 - Closes #11027 +Juan Cruz Viotti (8 Jul 2023) -- docs/libcurl: minor cleanups +- curl_easy_nextheader.3: add missing open parenthesis examples - I was reading curl_unescape(3) and I noticed that there was an extra - space after the open parenthesis in the SYNOPSIS; I removed the extra - space. + Closes #11409 + Signed-off-by: Juan Cruz Viotti - I also ran a few grep -r commands to find and remove extra spaces - after '(' in other files, and to find and replace uses of `T*' instead - of `T *'. Some of the instances of `T*` where unnecessary casts that I - removed. +Dan Fandrich (7 Jul 2023) - I also fixed a comment that was misaligned in CURLMOPT_SOCKETFUNCTION.3. +- CI: enable verbose test output on pytest - And I fixed some formatting inconsistencies: in curl_unescape(3), all - function parameter were mentioned with bold text except length, that was - mentioned as 'length'; and, in curl_easy_unescape(3), all parameters - were mentioned in bold text except url that was italicised. Now they are - all mentioned in bold. - Documentation is not very consistent in how function parameter are - formatted: many pages italicise them, and others display them in bold - text; but I think it makes sense to at least be consistent with - formatting within the same page. + This shows individual pass/fail status on tests and makes this output + consistent with other jobs' pytest invocations. - Closes #11027 +Stefan Eissing (28 Jun 2023) -Daniel Stenberg (26 Apr 2023) +- http2: fix crash in handling stream weights -- man pages: simplify the .TH sections + - Delay the priority handling until the stream has been opened. - - remove the version numbers - - simplify the texts + - Add test2404 to reproduce and verify. - The date and version number will be put there for releases when maketgz - runs the updatemanpages.pl script. + Weights may change "on the run", which is why there are checks in + general egress handling. These must not trigger when the stream has not + been opened yet. - Closes #11029 + Reported-by: jbgoog@users.noreply.github.com -- hostcheck: fix host name wildcard checking + Fixes https://github.com/curl/curl/issues/11379 + Closes https://github.com/curl/curl/pull/11384 - The leftmost "label" of the host name can now only match against single - '*'. Like the browsers have worked for a long time. +- tests/http: Add mod_h2 directive `H2ProxyRequests` - - extended unit test 1397 for this - - move some SOURCE variables from unit/Makefile.am to unit/Makefile.inc + master of mod_h2 now requires H2ProxyRequests directives for forward + proxying with HTTP/2 to work. - Reported-by: Hiroki Kurosawa - Closes #11018 + Ref: https://github.com/icing/mod_h2/commit/3897a7086 -Dan Fandrich (25 Apr 2023) + Closes https://github.com/curl/curl/pull/11392 -- smbserver: remove temporary files before exit +Dan Fandrich (28 Jun 2023) - Each execution of test 1451 would leave a file in /tmp before. Since - Windows can't delete a file while it's open, all the temporary file - names are stored and deleted on exit. +- CI: make Appveyor job names unique - Closes #10990 + Two otherwise identical mingw-w64 jobs now have their differing compiler + versions mentioned in their names. -Stefan Eissing (25 Apr 2023) +Sheshadri.V (25 Jun 2023) -- Websocket en-/decoding +- curl.h: include for vxworks - - state is fully kept at connection, since curl_ws_send() and - curl_ws_rec() have lifetime beyond usual transfers - - no more limit on frame sizes + Closes #11356 - Reported-by: simplerobot on github - Fixes #10962 - Closes #10999 +Dan Fandrich (24 Jun 2023) -Patrick Monnerat (25 Apr 2023) +- CI: enable parallel make in more builds -- urldata: copy CURLOPT_AWS_SIGV4 value on handle duplication + Most CI services provide at least two cores, so enable parallel make + jobs to take advantage of that for builds. Some dependencies aren't safe + to build in parallel so leave those as-is. Also, rename a few + workflows to eliminate duplicate names and provide a better idea what + they're about. - Prior to this change STRING_AWS_SIGV4 (CURLOPT_AWS_SIGV4) was wrongly - marked as binary data that could not be duplicated. +- CI: don't install impacket if tests are not run - Without this fix, this option's value is not copied upon calling - curl_easy_duphandle(). + It just wastes time and bandwidth and isn't even used. - Closes https://github.com/curl/curl/pull/11021 +divinity76 (24 Jun 2023) -Stefan Eissing (25 Apr 2023) +- configure: the --without forms of the options are also gone -- http3: expire unpaused transfers in all HTTP/3 backends + --without-darwin-ssl and --without-metalink - Closes #11005 + Closes #11378 -- http2: always EXPIRE_RUN_NOW unpaused http/2 transfers +Daniel Stenberg (23 Jun 2023) - - just increasing the http/2 flow window does not necessarily - make a server send new data. It may already have exhausted - the window before +- configure: add check for ldap_init_fd - Closes #11005 + ... as otherwise the configure script will say it is OpenLDAP in the + summary, but not set the USE_OPENLDAP define, therefor not using the + intended OpenLDAP code paths. -- http2: pass `stream` to http2_handle_stream_close to avoid NULL checks + Regression since 4d7385446 (7.85.0) + Fixes #11372 + Closes #11374 + Reported-by: vlkl-sap on github - Closes #11005 +Michał Petryka (23 Jun 2023) -- h2/h3: replace `state.drain` counter with `state.dselect_bits` +- cmake: stop CMake from quietly ignoring missing Brotli - - `drain` was used by http/2 and http/3 implementations to indicate - that the transfer requires send/recv independant from its socket - poll state. Intended as a counter, it was used as bool flag only. - - a similar mechanism exists on `connectdata->cselect_bits` where - specific protocols can indicate something similar, only for the - whole connection. - - `cselect_bits` are cleard in transfer.c on use and, importantly, - also set when the transfer loop expended its `maxloops` tries. - `drain` was not cleared by transfer and the http2/3 implementations - had to take care of that. - - `dselect_bits` is cleared *and* set by the transfer loop. http2/3 - does no longer clear it, only set when new events happen. + The CMake project was set to `QUIET` for Brotli instead of + `REQUIRED`. This makes builds unexpectedly ignore missing Brotli even + when `CURL_BROTLI` is enabled. - This change unifies the handling of socket poll overrides, extending - `cselect_bits` by a easy handle specific value and a common treatment in - transfers. + Closes #11376 - Closes #11005 +Emanuele Torre (22 Jun 2023) -Daniel Stenberg (25 Apr 2023) +- docs: add more .IP after .RE to fix indentation of generate paragraphs -- socketpair: verify with a random value + follow-up from 099f41e097c030077b8ec078f2c2d4038d31353b - ... instead of using the curl time struct, since it would use a few - uninitialized bytes and the sanitizers would complain. This is a neater - approach I think. + I just thought of checking all the other files with .RE, and I found 6 + other files that were missing .IP at the end. - Reported-by: Boris Kuschel - Fixes #10993 - Closes #11015 + Closes #11375 -Stefan Eissing (25 Apr 2023) +Stefan Eissing (22 Jun 2023) -- HTTP3: document the ngtcp2/nghttp3 versions to use for building curl +- http2: h2 and h2-PROXY connection alive check fixes - - refs #11011 to clarify this for people building curl themselves + - fix HTTP/2 check to not declare a connection dead when + the read attempt results in EAGAIN + - add H2-PROXY alive check as for HTTP/2 that was missing + and is needed + - add attach/detach around Curl_conn_is_alive() and remove + these in filter methods + - add checks for number of connections used in some test_10 + proxy tunneling tests - Closes #11019 + Closes #11368 -Daniel Stenberg (25 Apr 2023) +- http2: error stream resets with code CURLE_HTTP2_STREAM -- lib: unify the upload/method handling + - refs #11357, where it was reported that HTTP/1.1 downgrades + no longer works + - fixed with suggested change + - added test_05_03 and a new handler in the curltest module + to reproduce that downgrades work - By making sure we set state.upload based on the set.method value and not - independently as set.upload, we reduce confusion and mixup risks, both - internally and externally. + Fixes #11357 + Closes #11362 + Reported-by: Jay Satiro - Closes #11017 +Daniel Stenberg (22 Jun 2023) -- RELEASE-NOTES: synced +- connect-timeout.d: mention that the DNS lookup is included -Dan Fandrich (24 Apr 2023) + Closes #11370 -- CI: don't run CI jobs if only another CI was changed +Emanuele Torre (22 Jun 2023) - A few paths were missed in the last commit, as well as a job added since - then. +- quote.d: fix indentation of generated paragraphs - Followup-to 395b9175 + quote.d was missing a .IP at the end which caused the paragraphs + generated for See-also, Multi, and Example to not be indented correctly. -- CI: adjust labeler match patterns + I also remove a redundant "This option can be used multiple times.", and + replaced .IP "item" with .TP .B "item" to make more clear which lines + are part of the list of commands and which aren't. -- runtests: support buffering log messages in runner & servers + Closes #11371 - Log messages generated with logmsg can now be buffered and returned from - the runner as a return value. This will be needed with parallel testing - to allow all messages for one test to be displayed together instead of - interspersed with messages of multiple tests. Buffering can be disabled - by setting a logging callback function with setlogfunc, which is - currently being done to preserve existing logging behaviour for now. +Paul Wise (22 Jun 2023) - Some additional output is generated in verbose and debugprotocol modes, - which don't always use logmsg. These modes also impact some servers - which generate extra messages. No attempt is made to buffer everything - if these modes are enabled. +- checksrc: modernise perl file open - Ref: #10818 - Closes #11016 + Use regular variables and separate file open modes from filenames. -- runtests: more consistently use logmsg in server control code + Suggested by perlcritic - Also, display an error when sshversioninfo returns one. + Copied from https://github.com/curl/trurl/commit/f2784a9240f47ee28a845 - Ref: #10818 + Closes #11358 -- runtests: create runner functions for clearlocks and stopservers +Dan Fandrich (21 Jun 2023) - runtests.pl now uses runner for all server actions beyond the initial - variable configuration. +- runtests: work around a perl without SIGUSR1 - Ref: #10818 + At least msys2 perl v5.32.1 doesn't seem to define this signal. Since + this signal is only used for debugging, just ignore if setting it fails. -- runtests: tightened servers package exports + Reported-by: Marcel Raad + Fixes #11350 + Closes #11366 - The defaults are intended for runtests.pl, whereas runner.pm needs to - explicitly specify them. +- runtests: include missing valgrind package -- runtests: display logs on server failure in singletest() + use valgrind was missing which caused torture tests with valgrind + enabled to fail. - This is closer to the place where logs are displayed on test failure. - Also, only display these logs if -p is given, which is the same flag - that controls display of test failure logs. Some server log files - need to be deleted later so that they stay around long enough to be - displayed on failure. + Reported-by: Daniel Stenberg + Fixes #11364 + Closes #11365 - Ref: #10818 +- runtests: use more consistent failure lines -- runtests: turn a print into a logmsg + After a test failure log a consistent log message to make it easier to + parse the log file. Also, log a consistent message with "ignored" for + failures that cause the test to be not considered at all. These should + perhaps be counted in the skipped category, but this commit does not + change that behaviour. - Also enable another couple of useful messages in verbose mode. +- runtests: consistently write the test check summary block - Ref: #10818 + The memory check character was erroneously omitted if the memory + checking file was not available for some reason, making the block of + characters an inconsistent length. -Daniel Stenberg (24 Apr 2023) +- test2600: fix the description -- http: store the password in the correct variable + It looks like it was cut-and-pasted. - Typo from fc2f1e547a4a, detected by Coverity (because there's dead code - due to this). + Closes #11354 - Closes #11002 +Daniel Stenberg (21 Jun 2023) -Stefan Eissing (24 Apr 2023) +- TODO: "Support HTTP/2 for HTTP(S) proxies" *done* -- HTTP3/quiche: terminate h1 response header when no body is sent +humbleacolyte (21 Jun 2023) - - fixes a failure in test2501 where a response without body was missing - the final empty line +- cf-socket: move ctx declaration under HAVE_GETPEERNAME - Closes #11003 + Closes #11352 -Dan Fandrich (22 Apr 2023) +Daniel Stenberg (20 Jun 2023) -- runtests: move showdiff into runtests.pl +- RELEASE-NOTES: synced - It's not used anywhere else. +- example/connect-to: show CURLOPT_CONNECT_TO -- devtest: add a new script for testing the test harness + Closes #11340 - This is currently useful for starting a test server on its own without - an associated test, which can be used for interactive curl testing or - for validating parts of the test harness itself. More commands can be - added to perform additional functions in the future. +Stefan Eissing (20 Jun 2023) - Ref: #10818 - Closes #11008 +- hyper: unslow -- runtests: refactor the main test loop into two + - refs #11203 where hyper was reported as being slow + - fixes hyper_executor_poll to loop until it is out of + tasks as advised by @seanmonstar in https://github.com/hyperium/hyper/issue + s/3237 + - added a fix in hyper io handling for detecting EAGAIN + - added some debug logs to see IO results + - pytest http/1.1 test cases pass + - pytest h2 test cases fail on connection reuse. HTTP/2 + connection reuse does not seem to work. Hyper submits + a request on a reused connection, curl's IO works and + thereafter hyper declares `Hyper: [1] operation was canceled: connection cl + osed` + on stderr without any error being logged before. - The test loop now has an initial loop that first runs through all - possible tests to build a set of those to attempt on this run based on - features and keywords and only then goes through that new list to run - them. This actually makes it three loops through all tests cases, as - there is an existing loop that gathers possible test numbers from the - test files on disk. + Fixes #11203 + Reported-by: Gisle Vanem + Advised-by: Sean McArthur + Closes #11344 - This has two minor effects on the output: all the tests that will be - skipped are displayed at the start (instead of being interspersed with - other tests) and the -l option no longer shows a count of tests at the - end or a (misleading) statement that tests have run successfully. The - skipped tests are also omitted from the test results sent to AppVeyor - and Azure in CI builds. +- HTTP/2: upload handling fixes - Another effect is a reduction in the amount of work considered part of - the "Test definition reading and preparation time" reported with -r - making those figures slightly lower than before. + - fixes #11242 where 100% CPU on uploads was reported + - fixes possible stalls on last part of a request body when + that information could not be fully send on the connection + due to an EAGAIN + - applies the same EGAIN handling to HTTP/2 proxying - Ref: #10818 + Reported-by: Sergey Alirzaev + Fixed #11242 + Closes #11342 -- runtests: track only the current test timings in runner.pm +Daniel Stenberg (20 Jun 2023) - This avoids passing these data through through global variables, which - soon won't be possible. +- example/opensslthreadlock: remove - Ref: #10818 + This shows how to setup OpenSSL mutex callbacks, but this is not + necessary since OpenSSL 1.1.0 - meaning that no currently supported + OpenSSL version requires this anymore -- runtests: skip test preprocessing when doing -l + Closes #11341 - This speeds up the output tremendously by avoiding unnecessary work. +Dan Fandrich (19 Jun 2023) -- runtests: simplify value returned regarding use of valgrind +- libtest: display the times after a test timeout error - As a side effect this will now also show in verbose mode that valgrind - is being skipped on tests that explicitly disable it, such as 600. + This is to help with test failure debugging. - Ref: #10818 + Ref: #11328 + Closes #11329 -- runtests: fix quoting in Appveyor and Azure test integration +- test2600: bump a test timeout - Test 1442's name was not quoted correctly so wasn't registered in - Appveyor and it had the wrong name in Azure. The JSON string quotes were - also invalid, even though both servers happened to accept it regardless. + Case 1 failed at least once on GHA by going 30 msec too long. - Closes #11010 + Ref: #11328 -Daniel Stenberg (19 Apr 2023) +- runtests: better detect and handle pipe errors in the controller -- RELEASE-NOTES: synced + Errors reading and writing to the pipes are now better detected and + propagated up to the main test loop so it can be cleanly shut down. Such + errors are usually due to a runner dying so it doesn't make much sense + to try to continue the test run. -Dan Fandrich (18 Apr 2023) +- runtests: cleanly abort the runner if the controller dies -- runtests: spread out the port numbers used by servers + If the controller dies unexpectedly, have the runner stop its servers + and exit cleanly. Otherwise, the orphaned servers will stay running in + the background. - The server ports are chosen randomly for each server, but the random - ranges chosen were inconsistently-sized and overlapping. Now, they are - spread out more so at least the first random port chosen for each server - is guaranteed to not also be chosen by another server. The starting port - numbers are also raised to put them in the Ephemeral Port range—not the - range defined by RFC 6335 but the one used by Linux, which starts lower - and gives us more room to work with. +- runtests: improve error logging - Reported-by: Daniel Stenberg + Give more information about test harness error conditions to help figure + out what might be wrong. Print some internal test state when SIGUSR1 is + sent to runtests.pl. -- runtests: fix problems on failure + Ref: #11328 - The verify time must be set in this case, like all cases. An error - message needs to be displayed as well. +- runtests: better handle ^C during slow tests -- runtests: fix perl warning when is wrong + Since the SIGINT handler now just sets a flag that must be checked in the + main controller loop, make sure that runs periodically. Rather than + blocking on a response from a test runner near the end of the test run, + add a short timeout to allow it. -- runtests: don't try to stop stunnel before trying again +- runtests: rename server command file - Calling stopserver() before retrying stunnel due to an error would stop - the dependent server (such as HTTP) meaning stunnel would have nothing - to talk to when it came up. Don't try to force a stop when it didn't - actually start. Also, don't mark the server as bad for future use when - it starts up on a retry. + The name ftpserver.cmd was historical and has been used for more than + ftp for many years now. Rename it to plain server.cmd to reduce + confusion. - Reported-by: eaglegai at github - Tested-by: eaglegai at github - Fixes #10976 +- tests: improve reliability of TFTP tests -- runtests: don't accidentally randomly choose the same port + Stop checking the timeout used by the client under test (for most + tests). The timeout will change if the TFTP test server is slow (such as + happens on an overprovisioned CI server) because the client will retry + and reduce its timeout, and the actual value is not important for most + tests. - If a server couldn't be started on a port, a new one is randomly chosen - and the server is tried again. Avoid accidentally using a - randomly-chosen 0 port offset by adding 1 to the random number. + test285 is changed a different way, by increasing the connect timeout. + This improves test coverage by allowing the changed timeout value to be + checked, but improves reliability with a carefully-chosen timeout that + not only allows twice the time to respond as before, but also allows + several retries before the client will change its timeout value. - Found-by: Daniel Stenberg + Ref: #11328 -- runtests: don't attempt to use a port we know is in use +Daniel Stenberg (19 Jun 2023) - This reduces the startup time when there is a known conflict on the - random port chosen for a server. This was already done for stunnel, but - now it's done for all servers. +- cf-socket: skip getpeername()/getsockname for TFTP -- http-server: fix server name in a log message + Since the socket is not connected then the call fails. When the call + fails, failf() is called to write an error message that is then + surviving and is returned when the *real* error occurs later. The + earlier, incorrect, error therefore hides the actual error message. - This changed when the file was renamed in commit cbf57176 + This could be seen in stderr for test 1007 -- runtests: refactor into more packages + Test 1007 has now been extended to verify the stderr message. - testutil.pm now contains a few miscellaneous functions that are used in - several places but have no better place to live. subvariables moves to - servers.pm since most variables that it substitutes relate to servers, - so this is the most appropriate place. Rename a few functions for better - naming consistency. + Closes #11332 - Ref: #10818 - Closes #10995 +- example/crawler: make it use a few more options -- runtests: call timestampskippedevents() in singletest + For show, but reasonable - ..rather than by the runner +- libcurl-ws.3: mention raw mode -- runtests: assume a newer Valgrind by default + Closes #11339 - The tests for an older Valgrind version should probably just be deleted, - given that they're testing for an 18-year-old version. +- example/default-scheme: set the default scheme for schemeless URLs -- runtests: refactor test runner code into runner.pm + Closes #11338 - This is code that is directly responsible for running a single test. - This will eventually run in a separate process as part of the parallel - testing project. +- example/hsts-preload: show one way to HSTS preload - Ref: #10818 + Closes #11337 -- runtests: skip unneeded work if test won't be running +- examples/http-options: show how to send "OPTIONS *" - This speeds up tests by avoiding unnecessary processing. + With CURLOPT_REQUEST_TARGET. - Ref: #10818 + Also add use of CURLOPT_QUICK_EXIT to show. -- runtests: factor out singletest_postcheck + Closes #11333 - This will eventually need to be part of the test runner. +- examples: make use of CURLOPT_(REDIR_|)PROTOCOLS_STR - Ref: #10818 + To show how to use them -- test303: kill server after test + Closes #11334 - Otherwise, an HTTP test closely following this one with a tight time - constraint (e.g. 672) could fail because the test server stays sitting - with the wait command for a while. +- examples/smtp-mime: use CURLOPT_MAIL_RCPT_ALLOWFAILS -Patrick Monnerat (18 Apr 2023) + For show -- OS400: provide ILE/RPG usage examples + Closes #11335 - Closes https://github.com/curl/curl/pull/10994 +- http: rectify the outgoing Cookie: header field size check -- OS400: improve vararg emulation + Previously it would count the size of the entire outgoing request and + not just the size of only the Cookie: header field - which was the + intention. - - Use V7R4 RPG procedure overloading to improve vararg emulation. + This could make the check be off by several hundred bytes in some cases. - From OS400 V7R4 and above, ILE/RPG implements a limited procedure - overloading feature that can be used to improve curl's typed - implementation of varargs procedures. This commit applies it to - curl_easy_setopt(), curl_multi_setopt(), curl_share_setopt() and - curl_easy_getinfo(). + Closes #11331 - Closes https://github.com/curl/curl/pull/10994 +Jay Satiro (17 Jun 2023) -- OS400: fix and complete ILE/RPG binding +- lib: fix some format specifiers - - Fix wrong definitions of CURL_ZERO_TERNINATED, curl_mime_data() and - curl_mime_data_ccsid(). + - Use CURL_FORMAT_CURL_OFF_T where %zd was erroneously used for some + curl_off_t variables. - - Add recent definitions, in particular blob, header API and WebSockets - API. + - Use %zu where %zd was erroneously used for some size_t variables. - - Support for CURLVERSION_ELEVENTH. + Prior to this change some of the Windows CI tests were failing because + in Windows 32-bit targets have a 32-bit size_t and a 64-bit curl_off_t. + When %zd was used for some curl_off_t variables then only the lower + 32-bits was read and the upper 32-bits would be read for part or all of + the next specifier. - - New functions for EBCDIC support. + Fixes https://github.com/curl/curl/issues/11327 + Closes https://github.com/curl/curl/pull/11321 - Reflect these changes in README.OS400. +Marcel Raad (16 Jun 2023) - Closes https://github.com/curl/curl/pull/10994 +- test427: add `cookies` feature and keyword -- OS400: implement EBCDIC support for recent features + This test doesn't work with `--disable-cookies`. - - Support CURLVERSION_ELEVENTH. + Closes https://github.com/curl/curl/pull/11320 - - New function curl_url_strerror_ccsid(). +Chris Talbot (15 Jun 2023) - - curl_easy_setopt_ccsid() supports blobs and 3 recent string options. +- imap: Provide method to disable SASL if it is advertised - - New function curl_easy_header_ccsid(). + - Implement AUTH=+LOGIN for CURLOPT_LOGIN_OPTIONS to prefer plaintext + LOGIN over SASL auth. - - New generic latin1<-->ccsid conversion functions curl_from_ccsid() and - curl_to_ccsid() for user convenience. + Prior to this change there was no method to be able to fall back to + LOGIN if an IMAP server advertises SASL capabilities. However, this may + be desirable for e.g. a misconfigured server. - - README.OS400 updated accordingly. + Per: https://www.ietf.org/rfc/rfc5092.html#section-3.2 - - Removed a leftover QsoSSL support identifier. + ";AUTH=" looks to be the correct way to specify what + authenication method to use, regardless of SASL or not. - Closes https://github.com/curl/curl/pull/10994 + Closes https://github.com/curl/curl/pull/10041 -- OS400: rework build scripts +Daniel Stenberg (15 Jun 2023) - - Rename shell function "system" to "CLcommand" to avoid confusion with - built-in command. +- RELEASE-NOTES: synced - - Reformat scripts. Fix some indentations. Avoid lines > 80 characters - where possible. +- examples/multi-debugcallback.c: avoid the bool typedef - - Support ASCII runtime development files in a user-defined directory - path. + Apparently this cannot be done in c23 - - FIX SONAME detection. + Reported-by: Cristian Rodríguez + Fixes #11299 + Closes #11319 - - Drop form API test program compilation (does not exist anymore). +- docs/libcurl/libcurl.3: cleanups and improvements - Closes https://github.com/curl/curl/pull/10994 + Closes #11317 -Sevan Janiyan (18 Apr 2023) +- libcurl-ws.3: fix typo -- tests/sshserver.pl: Define AddressFamily earlier +- curl_ws_*.3: enhance - As the comment states "Address family must be specified before ListenAddress" - , otherwise the tests fail to run - `"failed starting SSH server" 52 times (582, 583, 600, 601, 602, 603, 604, 60 - 5, 606 and 43 more)` + - all: SEE ALSO the libcurl-ws man page + - send: add example and return value information + - meta: mention that the returned data is read-only - Closes #10983 + Closes #11318 -Stefan Eissing (18 Apr 2023) +- docs/libcurl/libcurl-ws.3: see also CURLOPT_WS_OPTIONS -- quiche: Enable IDLE egress handling +- docs/libcurl/libcurl-ws.3: minor polish - Follow-up to 544abeea which added the handling but wrongly left it - commented out. +- libcurl-ws.3. WebSocket API overview - Closes https://github.com/curl/curl/pull/11000 + Closes #11314 -Daniel Stenberg (18 Apr 2023) +- libcurl-url.3: also mention CURLUPART_ZONEID -- docs/examples/protofeats.c: Outputs all protocols and features + ... and sort the two part-using lists alphabetically - Showing off one way to get to char pointer arrays of info returned by - curl_version_info() +Marcel Raad (14 Jun 2023) - Closes #10991 +- fopen: fix conversion warning on 32-bit Android -- tests/keywords.pl: remove + When building for 32-bit ARM or x86 Android, `st_mode` is defined as + `unsigned int` instead of `mode_t`, resulting in a + -Wimplicit-int-conversion clang warning because `mode_t` is + `unsigned short`. Add a cast to silence the warning. - This script does not work since the introduction of the test - preprocessing. If we need this functionality, it probably needs to be - moved into the runtests tool or similar. + Ref: https://android.googlesource.com/platform/bionic/+/refs/tags/ndk-r25c/li + bc/include/sys/stat.h#86 + Closes https://github.com/curl/curl/pull/11313 - Reported-by: Dan Fandrich - Fixes #10895 - Closes #10987 +- http2: fix variable type -Stefan Eissing (17 Apr 2023) + `max_recv_speed` is `curl_off_t`, so using `size_t` might result in + -Wconversion GCC warnings for 32-bit `size_t`. Visible in the NetBSD + ARM autobuilds. -- http2: support HTTP/2 to forward proxies, non-tunneling + Closes https://github.com/curl/curl/pull/11312 - - with `--proxy-http2` allow h2 ALPN negotiation to - forward proxies - - applies to http: requests against a https: proxy only, - as https: requests will auto-tunnel - - adding a HTTP/1 request parser in http1.c - - removed h2h3.c - - using new request parser in nghttp2 and all h3 backends - - adding test 2603 for request parser - - adding h2 proxy test cases to test_10_* +Daniel Stenberg (13 Jun 2023) - scorecard.py: request scoring accidentally always run curl - with '-v'. Removed that, expect double numbers. +- vtls: fix potentially uninitialized local variable warnings - labeller: added http1.* and h2-proxy sources to detection + Follow-up from a4a5e438ae533c - Closes #10967 + Closes #11310 -Daniel Stenberg (17 Apr 2023) +- timeval: use CLOCK_MONOTONIC_RAW if available -- curl_easy_unescape.3: rename the argument + Reported-by: Harry Sintonen + Ref: #11288 + Closes #11291 - and highlight it appropriately in the text. +Stefan Eissing (12 Jun 2023) - Closes #10979 +- tool: add curl command line option `--trace-ids` -Viktor Szakats (17 Apr 2023) + - added and documented --trace-ids to prepend (after the timestamp) + the transfer and connection identifiers to each verbose log line + - format is [n-m] with `n` being the transfer id and `m` being the + connection id. In case there is not valid connection id, print 'x'. + - Log calls with a handle that has no transfer id yet, are written + without any ids. -- autotools: sync up clang picky warnings with cmake + Closes #11185 - Bringing missing options over from CMake. +- lib: add CURLINFO_CONN_ID and CURLINFO_XFER_ID - Move around existing `-Wno-pointer-bool-conversion` option to come - _after_ `-Wconversion`. + - add an `id` long to Curl_easy, -1 on init + - once added to a multi (or its own multi), it gets + a non-negative number assigned by the connection cache + - `id` is unique among all transfers using the same + cache until reaching LONG_MAX where it will wrap + around. So, not unique eternally. + - CURLINFO_CONN_ID returns the connection id attached to + data or, if none present, data->state.lastconnect_id + - variables and type declared in tool for write out - Reviewed-by: Marcel Raad - Closes #10974 + Closes #11185 -Daniel Stenberg (17 Apr 2023) +Daniel Stenberg (12 Jun 2023) -- tests/libtest/lib1900.c: remove +- CURLOPT_INFILESIZE.3: mention -1 triggers chunked - This file was left behind when the rest of the test was previously removed. + Ref: #11300 + Closes #11304 - Follow-up to e50a877df74f +Philip Heiduck (12 Jun 2023) -- src/tool_operhlp.c: fix value stored to 'uerr' is never read +- CI: openssl-3.0.9+quic - Ref: https://github.com/curl/curl/pull/10974#issuecomment-1510461343 - Reported-by: Viktor Szakats - Closes #10982 + Closes #11296 -Viktor Szakats (16 Apr 2023) +Karthikdasari0423 (12 Jun 2023) -- cmake: speed up and extend picky clang/gcc options +- HTTP3.md: update openssl version - Extend existing picky compiler options with ones missing compared to - autotools builds. Also sync options between clang and gcc. + Closes #11297 - Redesign the way we enable these options to avoid the slow option - detection almost completely. +Daniel Stenberg (12 Jun 2023) - This reduces the number of detections from 35 to zero for clang and - 3 for gcc, even after adding a bunch of new options. +- vtls: avoid memory leak if sha256 call fails - clang 3.0 (2011-11-29) and gcc 2.95 (1999-07-31) now required. + ... in the pinned public key handling function. - Also show enabled picky options. + Reported-by: lizhuang0630 on github + Fixes #11306 + Closes #11307 - Ref: https://github.com/libssh2/libssh2/pull/952 +- examples/ipv6: disable on win32 - Reviewed-by: Daniel Stenberg - Closes #10973 + I can't make if_nametoindex() work there -Andreas Falkenhahn (16 Apr 2023) + Follow-up to c23dc42f3997acf23 -- nbtlm: use semicolons instead of commas for (void) args + Closes #11305 - Closes #10978 +- tool_operate: allow cookie lines up to 8200 bytes -Daniel Stenberg (15 Apr 2023) + Since this option might set multiple cookies in the same line, it does + not make total sense to cap this at 4096 bytes, which is the limit for a + single cookie name or value. -- multi: free up more data earleier in DONE + Closes #11303 - Before checking for more users of the connection and possibly bailing - out. +- test427: verify sending more cookies than fit in a 8190 bytes line - Fixes #10971 - Reported-by: Paweł Wegner - Closes #10972 + curl will then only populate the header with cookies that fit, dropping + ones that otherwise would have been sent -- RELEASE-NOTES: synced + Ref: https://curl.se/mail/lib-2023-06/0020.html -- curl: do NOT append file name to path for upload when there's a query + Closes #11303 - Added test 425 to verify. +- testutil: allow multiple %-operators on the same line - Reported-by: Dirk Rosenkranz - Bug: https://curl.se/mail/archive-2023-04/0008.html - Closes #10969 + Closes #11303 -- libcurl-thread.3: improved name resolver wording +Oleg Jukovec (12 Jun 2023) - And make better .SH sections +- docs: update CURLOPT_UPLOAD.3 - Closes #10966 + The behavior of CURLOPT_UPLOAD differs from what is described in the + documentation. The option automatically adds the 'Transfer-Encoding: + chunked' header if the upload size is unknown. -Colman Mbuya (14 Apr 2023) + Closes #11300 -- CURLOPT_PROXY_SSL_VERIFYPEER.3: fix minor grammar mistake +Daniel Stenberg (12 Jun 2023) - Closes #10968 +- RELEASE-NOTES: synced -Daniel Stenberg (14 Apr 2023) +- CURLOPT_AWS_SIGV4.3: remove unused variable from example -- curl: add --proxy-http2 + Closes #11302 - For trying HTTP/2 with an HTTPS proxy. +- examples/https.c: use CURLOPT_CA_CACHE_TIMEOUT - Closes #10926 + for demonstration purposes -- KNOWN_BUGS: remove fixed or outdated issues, move non-bugs + Closes #11290 - - remove h3 issues believed to be fixed +- example/ipv6: feature CURLOPT_ADDRESS_SCOPE in use - - make the flaky CI issue be generic and not Windows specific + Closes #11282 - - "TLS session cache does not work with TFO" now documented +Karthikdasari0423 (10 Jun 2023) - This is now a documented restriction and not a bug. TFO in general is - rarely used and has other problems, making it a low-priotity thing to - work on. +- docs: Update HTTP3.md for newer ngtcp2 and nghttp3 - - remove "Renegotiate from server may cause hang for OpenSSL backend" + Follow-up to fb9b9b58 - This is an OpenSSL issue, not a curl one. Even if it taints curl. + Ref: #11184 + Closes #11295 - - rm "make distclean loops forever" +Dan Fandrich (10 Jun 2023) - - rm "configure finding libs in wrong directory" +- docs: update the supported ngtcp2 and nghttp3 versions - Added a section to docs/INSTALL.md about it. + Follow-up to cae9d10b - - "A shared connection cache is not thread-safe" + Ref: #11184 + Closes #11294 - Moved over to TODO and expanded for other sharing improvements we - could do +- tests: fix error messages & handling around sockets - - rm "CURLOPT_OPENSOCKETPAIRFUNCTION is missing" + The wrong error code was checked on Windows on UNIX socket failures, + which could have caused all UNIX sockets to be reported as having + errored and the tests therefore skipped. Also, a useless error message + was displayed on socket errors in many test servers on Windows because + strerror() doesn't work on WinSock error codes; perror() is overridden + there to work on all errors and is used instead. - - rm "Blocking socket operations in non-blocking API" + Ref #11258 + Closes #11265 - Already listed as a TODO +Daniel Stenberg (9 Jun 2023) - - rm "curl compiled on OSX 10.13 failed to run on OSX 10.10" +- CURLOPT_SSH_PRIVATE_KEYFILE.3: expand on the file search - Water under the bridge. No one cares about this anymore. + Reported-by: atjg on github + Ref: #11287 + Closes #11289 - - rm "build on Linux links libcurl to libdl" +Stefan Eissing (9 Jun 2023) - Verified to not be true (anymore). +- ngtcp2: use ever increasing timestamp in io - - rm "libpsl is not supported" + - ngtcp2 v0.16.0 asserts that timestamps passed to its function + will only ever increase. + - Use a context shared between ingress/egress operations that + uses a shared timestamp, regularly updated during calls. - The cmake build supports it since cafb356e19cda22 + Closes #11288 - Closes #10963 +Daniel Stenberg (9 Jun 2023) -- url: fix PVS nits +- GHA: use nghttp2 1.54.0 for the ngtcp2 jobs - - expression 'hostptr' is always true - - a part of conditional expression is always true: proxypasswd - - expression 'proxyuser' is always true - - avoid multiple Curl_now() calls in allocate_conn +Philip Heiduck (9 Jun 2023) - Ref: #10929 - Closes #10959 +- GHA: ngtcp2: use 0.16.0 and nghttp3 0.12.0 -- bufq: simplify since expression is always true +Daniel Stenberg (9 Jun 2023) - The check for 'len' is already done so it will remain true until - updated. Pointed out by PVS. +- ngtcp2: build with 0.16.0 and nghttp3 0.12.0 - Ref: #10929 - Closes #10958 + - moved to qlog_write + - crypto => encryption + - CRYPTO => ENCRYPTION + - removed "_is_" + - ngtcp2_conn_shutdown_stream_read and + ngtcp2_conn_shutdown_stream_write got flag arguments + - the nghttp3_callbacks struct got a recv_settings callback -- hash: fix assigning same value + Closes #11184 - Pointed out by PVS +- example/http2-download: set CURLOPT_BUFFERSIZE - Ref: #10929 - Closes #10956 + Primarily because no other example sets it, and remove the disabling of + the certificate check because we should not recommend that. -- cookie: address PVS nits + Closes #11284 - - avoid assigning the same value again - - remove superfluous check of co->domain - - reduce variable scope for namep/valuep +- example/crawler: also set CURLOPT_AUTOREFERER - Ref: #10929 - Closes #10954 + Could make sense, and it was not used in any example before. -Stefan Eissing (14 Apr 2023) + Closes #11283 -- cf-socket: Disable socket receive buffer by default +Wyatt OʼDay (9 Jun 2023) - - Disable socket receive buffer unless USE_RECV_BEFORE_SEND_WORKAROUND - is in place. +- tls13-ciphers.d: include Schannel - While we would like to use the receive buffer, we have stalls in - parallel transfers where not all buffered data is consumed and no socket - events happen. + Closes #11271 - Note USE_RECV_BEFORE_SEND_WORKAROUND is a Windows sockets workaround - that has been disabled by default since b4b6e4f1, due to other bugs. +Daniel Stenberg (9 Jun 2023) - Closes https://github.com/curl/curl/pull/10961 +- curl_pushheader_byname/bynum.3: document in their own man pages -- cf-h2-proxy: fix processing ingress to stop too early + These two functions were added in 7.44.0 when CURLMOPT_PUSHFUNCTION was + introduced but always lived a life in the shadows, embedded in the + CURLMOPT_PUSHFUNCTION man page. Until now. - - progress ingress stopped too early, causing data - from the underlying filters to not be processed and - report that no tunnel data was available - - this lead to "hangers" where no socket activity was - seen but data rested in buffers + It makes better sense and gives more visibility to document them in + their own stand-alone man pages. - Closes #10952 + Closes #11286 -- http3: check stream_ctx more thoroughly in all backends +- curl_mprintf.3: minor fix of the example - - callbacks and filter methods might be invoked at unexpected - times, e.g. when the transfer's stream_ctx has not been initialized - yet or, more likely, has already been taken down. - - check for existance of stream_ctx in such places and return - an error or silently succeed the call. +- curl_url_set: enforce the max string length check for all parts - Closes #10951 + Update the docs and test 1559 accordingly -Daniel Stenberg (13 Apr 2023) + Closes #11273 -- ftp: fix 'portsock' variable was assigned the same value +- examples/ftpuploadresume.c: add use of CURLOPT_ACCEPTTIMEOUT_MS - Pointed out by PVS + For show - Ref: #10929 - Closes #10955 + Closes #11277 -- ftp: remove dead code +- examples/unixsocket.c: example using CURLOPT_UNIX_SOCKET_PATH - This condition can never be true here since it is handled already 28 - lines above. + and alternatively CURLOPT_ABSTRACT_UNIX_SOCKET - Pointed out by PVS. + Closes #11276 - Ref: #10929 - Closes #10957 +Anssi Kolehmainen (8 Jun 2023) -- cf-h1-proxy: skip an extra NULL assign +- docs: fix missing parameter names in examples - and use Curl_safefree() once to save another NULL assign. Found by PVS. + Closes #11278 - Ref. #10929 - Closes #10953 +Daniel Stenberg (8 Jun 2023) -Philip Heiduck (13 Apr 2023) +- urlapi: have *set(PATH) prepend a slash if one is missing -- GHA: suppress git clone output + Previously the code would just do that for the path when extracting the + full URL, which made a subsequent curl_url_get() of the path to + (unexpectedly) still return it without the leading path. - Follow-up: https://github.com/curl/curl/commit/8203aa6ed405ec832d2c62f18dfda2 - 93f89a23f9 + Amend lib1560 to verify this. Clarify the curl_url_set() docs about it. - Closes #10949 + Bug: https://curl.se/mail/lib-2023-06/0015.html + Closes #11272 + Reported-by: Pedro Henrique -Stefan Eissing (13 Apr 2023) +Dan Fandrich (7 Jun 2023) -- cf-socket: remove dead code discovered by PVS +- runtests; give each server a unique log lock file - Closes #10960 + Logs are written by several servers and all of them must be finished + writing before the test results can be determined. This means each + server must have its own lock file rather than sharing a single one, + which is how it was done up to now. Previously, the first server to + complete a test would clear the lock before the other server was done, + which caused flaky tests. -Daniel Stenberg (13 Apr 2023) + Lock files are now all found in their own directory, so counting locks + equals counting the files in that directory. The result is that the + proxy logs are now reliably written which actually changes the expected + output for two tests. -- http: skip a double NULL assign + Fixes #11231 + Closes #11259 - and also use a local variable to shorten the long names and increase - readability in the function. Pointed out by PVS. +- runtests: make test file directories in log/N - Ref: #10929 - Closes #10950 + Test files in subdirectories were not created after parallel test log + directories were moved down a level due to a now-bad comparison. -- mime: skip NULL assigns after Curl_safefree() + Follow-up to 92d7dd39 - Pointed out by PVS. + Ref #11264 + Closes #11267 - Ref: #10929 - Closes #10947 +Daniel Stenberg (7 Jun 2023) -- rtsp: skip NULL assigns after Curl_safefree() +- ws: make the curl_ws_meta() return pointer a const - ... since this is a macro that assigns NULL itself. Pointed out by PVS. + The returned info is read-only for the user. - Ref: #10929 - Closes #10946 + Closes #11261 -- smb: remove double assign +- RELEASE-NOTES: synced - The same value is assigned the same value already a few lines above. - Pointed out by PVS. +- runtests: move parallel log dirs from logN to log/N - Ref: #10929 - Closes #10945 + Having several hundreds of them in there gets annoying. -- transfer: skip extra assign + Closes #11264 - The 'result' variable already contains CURLE_OK at this point, no use in - setting it again. Pointed out by PVS. +Dan Fandrich (7 Jun 2023) - Ref: #10929 - Closes #10944 +- test447: move the test file into %LOGDIR -- urlapi: skip a pointless assign +Viktor Szakats (7 Jun 2023) - It stores a null byte after already having confirmed there is a null - byte there. Detected by PVS. +- cmake: add support for "unity" builds - Ref: #10929 - Closes #10943 + Aka "jumbo" or "amalgamation" builds. It means to compile all sources + per target as a single C source. This is experimental. -Philip Heiduck (13 Apr 2023) + You can enable it by passing `-DCMAKE_UNITY_BUILD=ON` to cmake. + It requires CMake 3.16 or newer. -- GHA: suppress git clone output + It makes builds (much) faster, allows for better optimizations and tends + to promote less ambiguous code. - Closes #10939 + Also add a new AppVeyor CI job and convert an existing one to use + "unity" mode (one MSVC, one MinGW), and enable it for one macOS CI job. -Stefan Eissing (13 Apr 2023) + Fix related issues: + - add missing include guard to `easy_lock.h`. + - rename static variables and functions (and a macro) with names reused + across sources, or shadowed by local variables. + - add an `#undef` after use. + - add a missing `#undef` before use. + - move internal definitions from `ftp.h` to `ftp.c`. + - `curl_memory.h` fixes to make it work when included repeatedly. + - stop building/linking curlx bits twice for a static-mode curl tool. + These caused doubly defined symbols in unity builds. + - silence missing extern declarations compiler warning for ` _CRT_glob`. + - fix extern declarations for `tool_freq` and `tool_isVistaOrGreater`. + - fix colliding static symbols in debug mode: `debugtime()` and + `statename`. + - rename `ssl_backend_data` structure to unique names for each + TLS-backend, along with the `ssl_connect_data` struct member + referencing them. This required adding casts for each access. + - add workaround for missing `[P]UNICODE_STRING` types in certain Windows + builds when compiling `lib/ldap.c`. To support "unity" builds, we had + to enable `SCHANNEL_USE_BLACKLISTS` for Schannel (a Windows + `schannel.h` option) _globally_. This caused an indirect inclusion of + Windows `schannel.h` from `ldap.c` via `winldap.h` to have it enabled + as well. This requires `[P]UNICODE_STRING` types, which is apperantly + not defined automatically (as seen with both MSVS and mingw-w64). + This patch includes `` to fix it. + Ref: https://github.com/curl/curl/runs/13987772013 + Ref: https://dev.azure.com/daniel0244/curl/_build/results?buildId=15827&vie + w=logs&jobId=2c9f582d-e278-56b6-4354-f38a4d851906&j=2c9f582d-e278-56b6-4354-f + 38a4d851906&t=90509b00-34fa-5a81-35d7-5ed9569d331c + - tweak unity builds to compile `lib/memdebug.c` separately in memory + trace builds to avoid PP confusion. + - force-disable unity for test programs. + - do not compile and link libcurl sources to libtests _twice_ when libcurl + is built in static mode. -- tests: make test_12_01 a bit more forgiving on connection counts + KNOWN ISSUES: + - running tests with unity builds may fail in cases. + - some build configurations/env may not compile in unity mode. E.g.: + https://ci.appveyor.com/project/curlorg/curl/builds/47230972/job/51wfesgnfu + auwl8q#L250 -- cf-socket: add socket recv buffering for most tcp cases + Ref: https://github.com/libssh2/libssh2/issues/1034 + Ref: https://cmake.org/cmake/help/latest/prop_tgt/UNITY_BUILD.html + Ref: https://en.wikipedia.org/wiki/Unity_build - - use bufq as recv buffer, also for Windows pre-receive handling - - catch small reads followed by larger ones in a single socket - call. A common pattern on TLS connections. + Closes #11095 - Closes #10787 +Daniel Stenberg (7 Jun 2023) -Daniel Stenberg (13 Apr 2023) +- examples/websocket.c: websocket example using CONNECT_ONLY -- urlapi: cleanups + Closes #11262 - - move host checks together - - simplify the scheme parser loop and the end of host name parser - - avoid itermediate buffer storing in multiple places - - reduce scope for several variables - - skip the Curl_dyn_tail() call for speed - - detect IPv6 earlier and skip extra checks for such hosts - - normalize directly in dynbuf instead of itermediate buffer - - split out the IPv6 parser into its own funciton - - call the IPv6 parser directly for ipv6 addresses - - remove (unused) special treatment of % in host names - - junkscan() once in the beginning instead of scattered - - make junkscan return error code - - remove unused query management from dedotdotify() - - make Curl_parse_login_details use memchr - - more use of memchr() instead of strchr() and less strlen() calls - - make junkscan check and return the URL length +- websocket-cb: example doing WebSocket download using callback - An optimized build runs one of my benchmark URL parsing programs ~41% - faster using this branch. (compared against the shipped 7.88.1 library - in Debian) + Very basic - Closes #10935 + Closes #11260 -Josh McCullough (13 Apr 2023) +- test/.gitignore: ignore log* -- http2: fix typo in infof() call +Dan Fandrich (5 Jun 2023) - Closes #10940 +- runtests: document the -j parallel testing option -Daniel Stenberg (12 Apr 2023) + Reported-by: Daniel Stenberg + Ref: #10818 + Closes #11255 -- noproxy: pointer to local array 'hostip' is stored outside scope +- runtests: create multiple test runners when requested - Ref: #10929 - Closes #10933 + Parallel testing is enabled by using a nonzero value for the -j option + to runtests.pl. Performant values seem to be about 7*num CPU cores, or + 1.3*num CPU cores if Valgrind is in use. -Stefan Eissing (12 Apr 2023) + Flaky tests due to improper log locking (bug #11231) are exacerbated + while parallel testing, so it is not enabled by default yet. -- connect: fix https connection setup to treat ssl_mode correctly + Fixes #10818 + Closes #11246 - - for HTTPS protocol, a disabled ssl should never be acceptables. +- runtests: handle repeating tests in multiprocess mode - Closes #10934 + Such as what happens with the --repeat option. Some functions are + changed to pass the runner ID instead of relying on the non-unique test + number. -Douglas R. Reno (12 Apr 2023) + Ref: #10818 -- CMakeLists.txt: fix typo for Haiku detection +- runtests: buffer logmsg while running singletest() - Closes #10937 + This allows all messages relating to a single test case to be displayed + together at the end of the test. -Dan Fandrich (11 Apr 2023) + Ref: #10818 -- pathhelp: use the cached $use_cygpath when available +- runtests: call initserverconfig() in the runner -- runtests: eliminate unneeded variable + This must be done so variables pick up the runner's unique $LOGDIR. -- runtests: make the # of server start attempts a constant + Ref: #10818 -- runtests: on startup failure call displaylogs only in serverfortest +- runtests: use a per-runner random seed - This reduces the number of calls spread throughout the code. + Each runner needs a unique random seed to reduce the chance of port + number collisions. The new scheme uses a consistent per-runner source of + randomness which results in deterministic behaviour, as it did before. Ref: #10818 - Closes #10919 -- runtests: return an error code with startservers() +- runtests: complete main test loop refactor for multiple runners - The code indicates the kind of failure encountered in starting a server, - which can be used by the caller to tailor the user experience. + The main test loop is now able to handle multiple runners, or no + additional runner processes at all. At most one process is still + created, however. Ref: #10818 -- runtests: abort early if runpingpongserver is given a bad server type +- runtests: prepare main test loop for multiple runners -- runtests: don't use the SMB server verification time as reference + Some variables are expanded to arrays and hashes so that multiple + runners can be used for running tests. - %FTPTIME2 and %FTPTIME3 should be set by the FTP server only, for - consistency. + Ref: #10818 -- tests: factor out the test server management code +Stefan Eissing (5 Jun 2023) - This now lives in servers.pm with some configuration variables moved to - globalconfig.pm +- bufq: make write/pass methods more robust - Ref: #10818 + - related to #11242 where curl enters busy loop when + sending http2 data to the server -- runtests: remove an inappropriate use of runclientoutput + Closes #11247 - This function is intended for running client code, not servers. +Boris Verkhovskiy (5 Jun 2023) -- runtests: only add $LIBDIR to the path for checktestcmd +- tool_getparam: fix comment - Since checkcmd is for finding servers, there will never be anything in - this directory of interest to them. + Closes #11253 - Ref: #10818 +Raito Bezarius (5 Jun 2023) -- tests: log sshserver.pl messages to a file +- haproxy: add --haproxy-clientip flag to spoof client IPs - The logmsg messages were thrown away before, so they are now available - for debugging. + CURLOPT_HAPROXY_CLIENT_IP in the library -- runtests: also show DISABLED tests with -l + Closes #10779 - Other reasons for skipping tests are ignored for -l, so being explicitly - disabled should be too. +Daniel Stenberg (5 Jun 2023) -- runtests: move the UNIX sockets into $PIDDIR +- curl: add --ca-native and --proxy-ca-native - These were missed when the other server files were moved there. + These are two boolean options to ask curl to use the native OS's CA + store when verifying TLS servers. For peers and for proxies + respectively. - Follow-up to 70d2fca2 + They currently only have an effect for curl on Windows when built to use + OpenSSL for TLS. - Ref: #10818 + Closes #11049 -- tests: tighten up perl exports +Viktor Szakats (5 Jun 2023) - This reduces namespace pollution a little. +- build: drop unused/redundant `HAVE_WINLDAP_H` - Ref: #10818 + Sources did not use it. Autotools used it when checking for the + `winldap` library, which is redundant. -- tests: turn perl modules into full packages + With CMake, detection was broken: + ``` + Run Build Command(s):/usr/local/Cellar/cmake/3.26.3/bin/cmake -E env VERBOSE= + 1 /usr/bin/make -f Makefile cmTC_2d8fe/fast && /Library/Developer/CommandLine + Tools/usr/bin/make -f CMakeFiles/cmTC_2d8fe.dir/build.make CMakeFiles/cmTC_2 + d8fe.dir/build + Building C object CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj + /usr/local/opt/llvm/bin/clang --target=x86_64-w64-mingw32 --sysroot=/usr/loca + l/opt/mingw-w64/toolchain-x86_64 -D_WINSOCKAPI_="" -I/my/quictls/x64-ucrt/usr + /include -I/my/zlib/x64-ucrt/usr/include -I/my/brotli/x64-ucrt/usr/include -W + no-unused-command-line-argument -D_UCRT -DCURL_HIDDEN_SYMBOLS -DHAVE_SSL_SE + T0_WBIO -DHAS_ALPN -DNGHTTP2_STATICLIB -DNGHTTP3_STATICLIB -DNGTCP2_STATICLIB + -DUSE_MANUAL=1 -fuse-ld=lld -Wl,-s -static-libgcc -lucrt -Wextra -Wall -p + edantic -Wbad-function-cast -Wconversion -Winline -Wmissing-declarations -Wmi + ssing-prototypes -Wnested-externs -Wno-long-long -Wno-multichar -Wpointer-ari + th -Wshadow -Wsign-compare -Wundef -Wunused -Wwrite-strings -Wcast-align -Wde + claration-after-statement -Wempty-body -Wendif-labels -Wfloat-equal -Wignored + -qualifiers -Wno-format-nonliteral -Wno-sign-conversion -Wno-system-headers - + Wstrict-prototypes -Wtype-limits -Wvla -Wshift-sign-overflow -Wshorten-64-to- + 32 -Wdouble-promotion -Wenum-conversion -Wunused-const-variable -Wcomma -Wmis + sing-variable-declarations -Wassign-enum -Wextra-semi-stmt -MD -MT CMakeFile + s/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -MF CMakeFiles/cmTC_2d8fe.dir/HAVE_WINL + DAP_H.c.obj.d -o CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj -c /my/curl/b + ld-cmake-llvm-x64-shared/CMakeFiles/CMakeScratch/TryCompile-3JP6dR/HAVE_WINLD + AP_H.c + In file included from /my/curl/bld-cmake-llvm-x64-shared/CMakeFiles/CMakeScra + tch/TryCompile-3JP6dR/HAVE_WINLDAP_H.c:2: + In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi + ngw32/include/winldap.h:17: + In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi + ngw32/include/schnlsp.h:9: + In file included from /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mi + ngw32/include/schannel.h:10: + /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt + .h:5041:254: error: unknown type name 'PSYSTEMTIME' + WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_ + NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, + DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER + pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT + ENSIONS pExtensions); + + + + ^ + /usr/local/opt/mingw-w64/toolchain-x86_64/x86_64-w64-mingw32/include/wincrypt + .h:5041:278: error: unknown type name 'PSYSTEMTIME' + WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate (HCRYPTPROV_OR_ + NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, + DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER + pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXT + ENSIONS pExtensions); + + + + ^ + 2 errors generated. + make[1]: *** [CMakeFiles/cmTC_2d8fe.dir/HAVE_WINLDAP_H.c.obj] Error 1 + make: *** [cmTC_2d8fe/fast] Error 2 + exitCode: 2 + ``` - This helps enforce more modularization and encapsulation. Enable and fix - warnings on a few packages. Also, rename ftp.pm to processhelp.pm since - there's really nothing ftp-specific in it. + Cherry-picked from #11095 88e4a21ff70ccef391cf99c8165281ff81374503 + Reviewed-by: Daniel Stenberg + Closes #11245 - Ref: #10818 +Daniel Stenberg (5 Jun 2023) -Daniel Stenberg (11 Apr 2023) +- urlapi: scheme starts with alpha -- multi: remove a few superfluous assigns + Add multiple tests to lib1560 to verify - PVS found these "The 'rc' variable was assigned the same value." cases. + Fixes #11249 + Reported-by: ad0p on github + Closes #11250 - Ref: #10929 - Closes #10932 +- RELEASE-NOTES: synced -- schannel: add clarifying comment +- CURLOPT_MAIL_RCPT_ALLOWFAILS: replace CURLOPT_MAIL_RCPT_ALLLOWFAILS - Explaining how the PVS warning in #10929 is wrong: Dereferencing of the - null pointer 'backend->cred' might take place. + Deprecate the name using three Ls and prefer the name with two. - Closes #10931 + Replaces #10047 + Closes #11218 -- cookie: clarify that init with data set to NULL reads no file +- tests/servers: generate temp names in /tmp for unix domain sockets - ... and make Curl_cookie_add() require 'data' being set proper with an - assert. + ... instead of putting them in the regular pid directories because + systems generally have strict length requirements for the path name to + be shorter than 107 bytes and we easily hit that boundary otherwise. - The function has not worked with a NULL data for quite some time so this - just corrects the code and comment. + The new concept generates two random names: one for the socks daemon and + one for http. - This is a different take than the proposed fixed in #10927 + Reported-by: Andy Fiddaman + Fixes #11152 + Closes #11166 - Reported-by: Kvarec Lezki - Ref: #10929 - Closes #10930 +Stefan Eissing (2 Jun 2023) -Kvarec Lezki (11 Apr 2023) +- http2: better support for --limit-rate -- vtls: remove int typecast for sizeof() + - leave transfer loop when --limit-rate is in effect and has + been received + - adjust stream window size to --limit-rate plus some slack + to make the server observe the pacing we want + - add test case to confirm behaviour - V220 Suspicious sequence of types castings: memsize -> 32-bit integer -> - memsize. The value being cast: 'sizeof - (buf->data)'. curl\lib\vtls\vtls.c 2025 + Closes #11115 - https://pvs-studio.com/en/docs/warnings/v220/ +- curl_log: evaluate log statement only when transfer is verbose - Closes #10928 + Closes #11238 -Stefan Eissing (11 Apr 2023) +Daniel Stenberg (2 Jun 2023) -- http2: fix copynpaste error reported by coverity +- libssh2: provide error message when setting host key type fails - - move all code handling HTTP/2 frames for a particular - stream into a separate function to keep from confusing - the call `data` with the stream `data`. + Ref: https://curl.se/mail/archive-2023-06/0001.html - Closes #10924 + Closes #11240 -Dan Fandrich (11 Apr 2023) +Igor Todorovski (2 Jun 2023) -- tests: log a too-long Unix socket path in sws and socksd +- system.h: remove __IBMC__/__IBMCPP__ guards and apply to all z/OS compiles - Ref: #10919 + Closes #11241 -Daniel Stenberg (11 Apr 2023) +Daniel Stenberg (2 Jun 2023) -- gen.pl: error on duplicated See-Also fields +- docs/SECURITY-PROCESS.md: link to example of previous critical flaw - Updated http2.d accordingly. +Mark Seuffert (2 Jun 2023) - Closes #10925 +- README.md: updated link to opencollective -- http2: avoid possible null pointer dereference + Closes #11232 - Reported-by: Dan Fandrich - Fixes #10920 - Closes #10923 +Daniel Stenberg (1 Jun 2023) -- lib1560: verify that more bad host names are rejected +- libssh2: use custom memory functions - when setting the hostname component of a URL + Because of how libssh2_userauth_keyboard_interactive_ex() works: the + libcurl callback allocates memory that is later free()d by libssh2, we + must set the custom memory functions. - Closes #10922 + Reverts 8b5f100db388ee60118c08aa28 -- curl_url_set.3: mention that users can set content rather freely + Ref: https://github.com/libssh2/libssh2/issues/1078 + Closes #11235 - ... which then might render bad URLs if you extract a URL later. +- test447: test PUTting a file that grows - Closes #10921 + ... and have curl trim the end when it reaches the expected total amount + of bytes instead of over-sending. -Dan Fandrich (10 Apr 2023) + Reported-by: JustAnotherArchivist on github + Closes #11223 -- CI: retry failed downloads of aws-lc +- curl: count uploaded data to stop at the originally given size - Don't fail the build in case of a temporary server problem. + Closes #11223 + Fixes #11222 + Reported-by: JustAnotherArchivist on github -- test1169: fix so it works properly everywhere +- tool: remove exclamation marks from error/warning messages - - Use an absolute path for the -L option since the module isn't in the - perl path - - Create the needed test file in a section; isn't - intended for this - - Fix the test number in the file name, which was wrong +- tool: use errorf() for error output - Follow-up to f754990a + Convert a number of fprintf() calls. - Ref: #10818 - Fixes #10889 - Closes #10917 +- tool: remove newlines from all helpf/notef/warnf/errorf calls -- tests: stop using strndup(), which isn't portable + Make voutf() always add one. - It's not available on Solaris 10, for example. Since this is just test - code that doesn't need to use an optimized system version, replace it - with the implementation copied from tool_cb_hdr.c. + Closes #11226 -- runtests: fix an incorrect comment about the ld_preload feature +- tests/servers.pm: pick unused port number with a server socket - Follow-up to 1f631864 + This change replaces the previous method of picking a port number at + random to try to start servers on, then retrying up to ten times with + new random numbers each time, with a function that creates a server + socket on port zero, thereby getting a suitable random port set by the + kernel. That server socket is then closed and that port number is used + to setup the actual test server on. - Ref: #10818 + There is a risk that *another* server can be started on the machine in + the time gap, but the server verification feature will detect that. -Daniel Stenberg (9 Apr 2023) + Closes #11220 -- urlapi: prevent setting invalid schemes with *url_set() +- RELEASE-NOTES: synced - A typical mistake would be to try to set "https://" - including the - separator - this is now rejected as that would then lead to - url_get(... URL...) would get an invalid URL extracted. + bump to 8.2.0 - Extended test 1560 to verify. +Alejandro R. Sedeño (31 May 2023) - Closes #10911 +- configure: fix run-compiler for old /bin/sh -Biswapriyo Nath (9 Apr 2023) + If you try to assign and export on the same line on some older /bin/sh + implementations, it complains: -- http2: remove unused Curl_http2_strerror function declaration + ``` + $ export "NAME=value" + NAME=value: is not an identifier + ``` - Curl_http2_strerror was renamed to http2_strerror in - 05b100aee247bb9bec8e9a1b0 and then http2_strerror was removed in - 5808a0d0f5ea0399d4a2a2 + This commit rewrites run-compiler's assignments and exports to work with + old /bin/sh, splitting assignment and export into two separate + statements, and only quote the value. So now we have: - This also fixes the following compiler error + ``` + NAME="value" + export NAME + ``` - lib/http2.h:41:33: error: unknown type name 'uint32_t' - lib/http2.h:1:1: note: 'uint32_t' is defined in header '' + While we're here, make the same change to the two supporting + assign+export lines preceeding the script to be consistent with how + exports work throughout the rest of configure.ac. - Closes #10912 + Closes #11228 -Daniel Stenberg (8 Apr 2023) +Philip Heiduck (31 May 2023) -- RELEASE-NOTES: synced +- circleci: install impacket & wolfssl 5.6.0 -SuperIlu on github (8 Apr 2023) + Closes #11221 -- config-dos.h: fix SIZEOF_CURL_OFF_T for MS-DOS/DJGPP +Daniel Stenberg (31 May 2023) - Fixes #10905 - Closes #10910 +- tool_urlglob: use curl_off_t instead of longs -Daniel Stenberg (8 Apr 2023) + To handle more globs better (especially on Windows) -- lib: remove CURLX_NO_MEMORY_CALLBACKS + Closes #11224 - The only user of this define was 'chkdecimalpoint' - a special purpose - test tool that was built but not used anymore (since 17c18fbc3 - Apr - 2020). +Dan Fandrich (30 May 2023) - Closes #10908 +- scripts: Fix GHA matrix job detection in cijobs.pl -- CURLPROXY_HTTPS2: for HTTPS proxy that may speak HTTP/2 + The parsing is pretty brittle and it broke detecting some jobs at some + point. Also, detect if Windows is used in GHA. - Setting this proxy type allows curl to negotiate and use HTTP/2 with - HTTPS proxies. +- runtests: abort test run after failure without -a - Closes #10900 + This was broken in a recent refactor and test runs would not stop. -Ali Khodkar (8 Apr 2023) + Follow-up to d4a1b5b6 -- write-out.d: add missing periods + Reported-by: Daniel Stenberg + Fixes #11225 + Closes #11227 - Closes #10897 +Version 8.1.2 (30 May 2023) -Daniel Stenberg (7 Apr 2023) +Daniel Stenberg (30 May 2023) -- http2: remove check for !data after it was already dereferenced +- RELEASE-NOTES: synced - Pointed out by Coverity + 8.1.2 release - Closes #10906 +- THANKS: contributors from 8.1.2 diff --git a/external/curl/CMake/CurlTests.c b/external/curl/CMake/CurlTests.c index ea80ec89a..e54628626 100644 --- a/external/curl/CMake/CurlTests.c +++ b/external/curl/CMake/CurlTests.c @@ -23,7 +23,6 @@ ***************************************************************************/ #ifdef HAVE_FCNTL_O_NONBLOCK - /* headers for FCNTL_O_NONBLOCK test */ #include #include @@ -45,14 +44,13 @@ #error "O_NONBLOCK does not work on this platform" #endif -int -main () +int main(void) { - /* O_NONBLOCK source test */ - int flags = 0; - if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK)) - return 1; - return 0; + /* O_NONBLOCK source test */ + int flags = 0; + if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK)) + return 1; + return 0; } #endif @@ -108,36 +106,16 @@ int main(void) } #endif -#ifdef HAVE_SOCKLEN_T -#ifdef _WIN32 -#include -#else -#include -#include -#endif -int -main () -{ -if ((socklen_t *) 0) - return 0; -if (sizeof (socklen_t)) - return 0; - ; - return 0; -} -#endif #ifdef HAVE_IN_ADDR_T #include #include #include - -int -main () +int main(void) { -if ((in_addr_t *) 0) - return 0; -if (sizeof (in_addr_t)) - return 0; + if((in_addr_t *) 0) + return 0; + if(sizeof(in_addr_t)) + return 0; ; return 0; } @@ -150,11 +128,10 @@ if (sizeof (in_addr_t)) #ifdef HAVE_STDBOOL_H #include #endif -int -main () +int main(void) { -if (sizeof (bool *) ) - return 0; + if(sizeof(bool *)) + return 0; ; return 0; } @@ -165,8 +142,9 @@ if (sizeof (bool *) ) #include #include #include -int main() { return 0; } +int main(void) { return 0; } #endif + #ifdef HAVE_FILE_OFFSET_BITS #ifdef _FILE_OFFSET_BITS #undef _FILE_OFFSET_BITS @@ -181,104 +159,95 @@ int main() { return 0; } int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; -int main () { ; return 0; } +int main(void) { ; return 0; } #endif + #ifdef HAVE_IOCTLSOCKET /* includes start */ #ifdef HAVE_WINDOWS_H # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # endif +# include #endif - -int -main () +int main(void) { - -/* ioctlsocket source code */ - int socket; - unsigned long flags = ioctlsocket(socket, FIONBIO, &flags); - + /* ioctlsocket source code */ + int socket; + unsigned long flags = ioctlsocket(socket, FIONBIO, &flags); ; return 0; } #endif + #ifdef HAVE_IOCTLSOCKET_CAMEL /* includes start */ #ifdef HAVE_WINDOWS_H # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # endif +# include #endif - -int -main () +int main(void) { - -/* IoctlSocket source code */ - if(0 != IoctlSocket(0, 0, 0)) - return 1; + /* IoctlSocket source code */ + if(0 != IoctlSocket(0, 0, 0)) + return 1; ; return 0; } #endif + #ifdef HAVE_IOCTLSOCKET_CAMEL_FIONBIO /* includes start */ #ifdef HAVE_WINDOWS_H # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # endif +# include #endif - -int -main () +int main(void) { - -/* IoctlSocket source code */ - long flags = 0; - if(0 != IoctlSocket(0, FIONBIO, &flags)) - return 1; + /* IoctlSocket source code */ + long flags = 0; + if(0 != IoctlSocket(0, FIONBIO, &flags)) + return 1; ; return 0; } #endif + #ifdef HAVE_IOCTLSOCKET_FIONBIO /* includes start */ #ifdef HAVE_WINDOWS_H # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # endif +# include #endif - -int -main () +int main(void) { - - int flags = 0; - if(0 != ioctlsocket(0, FIONBIO, &flags)) - return 1; - + int flags = 0; + if(0 != ioctlsocket(0, FIONBIO, &flags)) + return 1; ; return 0; } #endif + #ifdef HAVE_IOCTL_FIONBIO /* headers for FIONBIO test */ /* includes start */ @@ -297,19 +266,16 @@ main () #ifdef HAVE_STROPTS_H # include #endif - -int -main () +int main(void) { - - int flags = 0; - if(0 != ioctl(0, FIONBIO, &flags)) - return 1; - + int flags = 0; + if(0 != ioctl(0, FIONBIO, &flags)) + return 1; ; return 0; } #endif + #ifdef HAVE_IOCTL_SIOCGIFADDR /* headers for FIONBIO test */ /* includes start */ @@ -329,28 +295,26 @@ main () # include #endif #include - -int -main () +int main(void) { - struct ifreq ifr; - if(0 != ioctl(0, SIOCGIFADDR, &ifr)) - return 1; - + struct ifreq ifr; + if(0 != ioctl(0, SIOCGIFADDR, &ifr)) + return 1; ; return 0; } #endif + #ifdef HAVE_SETSOCKOPT_SO_NONBLOCK /* includes start */ #ifdef HAVE_WINDOWS_H # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # endif +# include #endif /* includes start */ #ifdef HAVE_SYS_TYPES_H @@ -360,30 +324,30 @@ main () # include #endif /* includes end */ - -int -main () +int main(void) { - if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0)) - return 1; + if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0)) + return 1; ; return 0; } #endif + #ifdef HAVE_GLIBC_STRERROR_R #include #include void check(char c) {} -int -main () { +int main(void) +{ char buffer[1024]; /* This will not compile if strerror_r does not return a char* */ check(strerror_r(EACCES, buffer, sizeof(buffer))[0]); return 0; } #endif + #ifdef HAVE_POSIX_STRERROR_R #include #include @@ -391,92 +355,51 @@ main () { /* float, because a pointer can't be implicitly cast to float */ void check(float f) {} -int -main () { +int main(void) +{ char buffer[1024]; /* This will not compile if strerror_r does not return an int */ check(strerror_r(EACCES, buffer, sizeof(buffer))); return 0; } #endif + #ifdef HAVE_FSETXATTR_6 #include /* header from libc, not from libattr */ -int -main() { +int main(void) +{ fsetxattr(0, 0, 0, 0, 0, 0); return 0; } #endif + #ifdef HAVE_FSETXATTR_5 #include /* header from libc, not from libattr */ -int -main() { +int main(void) +{ fsetxattr(0, 0, 0, 0, 0); return 0; } #endif + #ifdef HAVE_CLOCK_GETTIME_MONOTONIC #include -int -main() { +int main(void) +{ struct timespec ts = {0, 0}; clock_gettime(CLOCK_MONOTONIC, &ts); return 0; } #endif + #ifdef HAVE_BUILTIN_AVAILABLE -int -main() { +int main(void) +{ if(__builtin_available(macOS 10.12, *)) {} return 0; } #endif -#ifdef HAVE_VARIADIC_MACROS_C99 -#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) -#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) -int fun3(int arg1, int arg2, int arg3); -int fun2(int arg1, int arg2); - -int fun3(int arg1, int arg2, int arg3) { - return arg1 + arg2 + arg3; -} -int fun2(int arg1, int arg2) { - return arg1 + arg2; -} - -int -main() { - int res3 = c99_vmacro3(1, 2, 3); - int res2 = c99_vmacro2(1, 2); - (void)res3; - (void)res2; - return 0; -} -#endif -#ifdef HAVE_VARIADIC_MACROS_GCC -#define gcc_vmacro3(first, args...) fun3(first, args) -#define gcc_vmacro2(first, args...) fun2(first, args) - -int fun3(int arg1, int arg2, int arg3); -int fun2(int arg1, int arg2); - -int fun3(int arg1, int arg2, int arg3) { - return arg1 + arg2 + arg3; -} -int fun2(int arg1, int arg2) { - return arg1 + arg2; -} - -int -main() { - int res3 = gcc_vmacro3(1, 2, 3); - int res2 = gcc_vmacro2(1, 2); - (void)res3; - (void)res2; - return 0; -} -#endif #ifdef HAVE_ATOMIC /* includes start */ #ifdef HAVE_SYS_TYPES_H @@ -490,17 +413,24 @@ main() { #endif /* includes end */ -int -main() { +int main(void) +{ _Atomic int i = 1; i = 0; /* Force an atomic-write operation. */ return i; } #endif + #ifdef HAVE_WIN32_WINNT /* includes start */ -#ifdef WIN32 -# include "../lib/setup-win32.h" +#ifdef _WIN32 +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif +# ifndef NOGDI +# define NOGDI +# endif +# include #endif /* includes end */ @@ -508,8 +438,8 @@ main() { #define expand(x) enquote(x) #pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT)) -int -main() { +int main(void) +{ return 0; } #endif diff --git a/external/curl/CMake/FindZstd.cmake b/external/curl/CMake/FindZstd.cmake index 973e6ad4a..0ea9e0c87 100644 --- a/external/curl/CMake/FindZstd.cmake +++ b/external/curl/CMake/FindZstd.cmake @@ -56,11 +56,18 @@ find_library(Zstd_LIBRARY NAMES zstd ${PC_Zstd_LIBRARY_DIRS} ) +if(Zstd_INCLUDE_DIR) + file(READ "${Zstd_INCLUDE_DIR}/zstd.h" _zstd_header) + string(REGEX MATCH ".*define ZSTD_VERSION_MAJOR *([0-9]+).*define ZSTD_VERSION_MINOR *([0-9]+).*define ZSTD_VERSION_RELEASE *([0-9]+)" _zstd_ver "${_zstd_header}") + set(Zstd_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}") +endif() + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Zstd REQUIRED_VARS Zstd_LIBRARY Zstd_INCLUDE_DIR + VERSION_VAR Zstd_VERSION ) if(Zstd_FOUND) diff --git a/external/curl/CMake/Macros.cmake b/external/curl/CMake/Macros.cmake index e12bf303f..7ad2f5c40 100644 --- a/external/curl/CMake/Macros.cmake +++ b/external/curl/CMake/Macros.cmake @@ -23,19 +23,6 @@ ########################################################################### #File defines convenience macros for available feature testing -# This macro checks if the symbol exists in the library and if it -# does, it prepends library to the list. It is intended to be called -# multiple times with a sequence of possibly dependent libraries in -# order of least-to-most-dependent. Some libraries depend on others -# to link correctly. -macro(check_library_exists_concat LIBRARY SYMBOL VARIABLE) - check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}" - ${VARIABLE}) - if(${VARIABLE}) - set(CURL_LIBS ${LIBRARY} ${CURL_LIBS}) - endif() -endmacro() - # Check if header file exists and add it to the list. # This macro is intended to be called multiple times with a sequence of # possibly dependent header files. Some headers depend on others to be diff --git a/external/curl/CMake/OtherTests.cmake b/external/curl/CMake/OtherTests.cmake index d67a9059b..a613f6ecd 100644 --- a/external/curl/CMake/OtherTests.cmake +++ b/external/curl/CMake/OtherTests.cmake @@ -35,13 +35,13 @@ endmacro() set(signature_call_conv) if(HAVE_WINDOWS_H) - add_header_include(HAVE_WINSOCK2_H "winsock2.h") - add_header_include(HAVE_WINDOWS_H "windows.h") set(_source_epilogue "${_source_epilogue}\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif") + add_header_include(HAVE_WINSOCK2_H "winsock2.h") + add_header_include(HAVE_WINDOWS_H "windows.h") set(signature_call_conv "PASCAL") if(WIN32) - set(CMAKE_REQUIRED_LIBRARIES ws2_32) + set(CMAKE_REQUIRED_LIBRARIES "ws2_32") endif() else() add_header_include(HAVE_SYS_TYPES_H "sys/types.h") @@ -71,11 +71,11 @@ int main(void) { }" HAVE_STRUCT_TIMEVAL) if(HAVE_WINDOWS_H) - set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h) + set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h") else() set(CMAKE_EXTRA_INCLUDE_FILES) if(HAVE_SYS_SOCKET_H) - set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h) + set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h") endif() endif() @@ -172,7 +172,7 @@ if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE) }" HAVE_H_ERRNO) if(NOT HAVE_H_ERRNO) - check_c_source_runs("${_source_epilogue} + check_c_source_compiles("${_source_epilogue} int main(void) { h_errno = 2; @@ -201,7 +201,7 @@ if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE) set(_source_epilogue "${_save_epilogue}") endif() -if(NOT DEFINED HAVE_CLOCK_GETTIME_MONOTONIC_RAW) +if(NOT WIN32 AND NOT DEFINED HAVE_CLOCK_GETTIME_MONOTONIC_RAW) set(_save_epilogue "${_source_epilogue}") set(_source_epilogue "#undef inline") diff --git a/external/curl/CMake/PickyWarnings.cmake b/external/curl/CMake/PickyWarnings.cmake index 1310cb4fb..5a0d15604 100644 --- a/external/curl/CMake/PickyWarnings.cmake +++ b/external/curl/CMake/PickyWarnings.cmake @@ -52,8 +52,8 @@ if(PICKY_COMPILER) # Assume these options always exist with both clang and gcc. # Require clang 3.0 / gcc 2.95 or later. list(APPEND WPICKY_ENABLE - -Wbad-function-cast # clang 3.0 gcc 2.95 - -Wconversion # clang 3.0 gcc 2.95 + -Wbad-function-cast # clang 2.7 gcc 2.95 + -Wconversion # clang 2.7 gcc 2.95 -Winline # clang 1.0 gcc 1.0 -Wmissing-declarations # clang 1.0 gcc 2.7 -Wmissing-prototypes # clang 1.0 gcc 1.0 @@ -70,23 +70,37 @@ if(PICKY_COMPILER) # Always enable with clang, version dependent with gcc set(WPICKY_COMMON_OLD + -Waddress # clang 2.7 gcc 4.3 + -Wattributes # clang 2.7 gcc 4.1 -Wcast-align # clang 1.0 gcc 4.2 -Wdeclaration-after-statement # clang 1.0 gcc 3.4 - -Wempty-body # clang 3.0 gcc 4.3 + -Wdiv-by-zero # clang 2.7 gcc 4.1 + -Wempty-body # clang 2.7 gcc 4.3 -Wendif-labels # clang 1.0 gcc 3.3 -Wfloat-equal # clang 1.0 gcc 2.96 (3.0) - -Wignored-qualifiers # clang 3.0 gcc 4.3 + -Wformat-security # clang 2.7 gcc 4.1 + -Wignored-qualifiers # clang 2.8 gcc 4.3 + -Wmissing-field-initializers # clang 2.7 gcc 4.1 + -Wmissing-noreturn # clang 2.7 gcc 4.1 -Wno-format-nonliteral # clang 1.0 gcc 2.96 (3.0) - -Wno-sign-conversion # clang 3.0 gcc 4.3 + -Wno-sign-conversion # clang 2.9 gcc 4.3 -Wno-system-headers # clang 1.0 gcc 3.0 + # -Wpadded # clang 2.9 gcc 4.1 # Not used because we cannot change public structs + -Wredundant-decls # clang 2.7 gcc 4.1 + -Wold-style-definition # clang 2.7 gcc 3.4 -Wstrict-prototypes # clang 1.0 gcc 3.3 - -Wtype-limits # clang 3.0 gcc 4.3 + # -Wswitch-enum # clang 2.7 gcc 4.1 # Not used because this basically disallows default case + -Wtype-limits # clang 2.7 gcc 4.3 + -Wunreachable-code # clang 2.7 gcc 4.1 + # -Wunused-macros # clang 2.7 gcc 4.1 # Not practical + -Wunused-parameter # clang 2.7 gcc 4.1 -Wvla # clang 2.8 gcc 4.3 ) set(WPICKY_COMMON -Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3 -Wenum-conversion # clang 3.2 gcc 10.0 appleclang 4.6 g++ 11.0 + -Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0 -Wunused-const-variable # clang 3.4 gcc 6.0 appleclang 5.1 ) @@ -95,12 +109,16 @@ if(PICKY_COMPILER) ${WPICKY_COMMON_OLD} -Wshift-sign-overflow # clang 2.9 -Wshorten-64-to-32 # clang 1.0 + -Wlanguage-extension-token # clang 3.0 ) # Enable based on compiler version if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6) OR (CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.3)) list(APPEND WPICKY_ENABLE ${WPICKY_COMMON} + -Wunreachable-code-break # clang 3.5 appleclang 6.0 + -Wheader-guard # clang 3.4 appleclang 5.1 + -Wsometimes-uninitialized # clang 3.2 appleclang 4.6 ) endif() if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.9) OR @@ -125,6 +143,7 @@ if(PICKY_COMPILER) if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.3) list(APPEND WPICKY_ENABLE ${WPICKY_COMMON_OLD} + -Wclobbered # gcc 4.3 -Wmissing-parameter-type # gcc 4.3 -Wold-style-declaration # gcc 4.3 -Wstrict-aliasing=3 # gcc 4.0 @@ -159,7 +178,7 @@ if(PICKY_COMPILER) -Walloc-zero # gcc 7.0 -Wduplicated-branches # gcc 7.0 -Wformat-overflow=2 # gcc 7.0 - -Wformat-truncation=1 # gcc 7.0 + -Wformat-truncation=2 # gcc 7.0 -Wrestrict # gcc 7.0 ) endif() @@ -174,11 +193,11 @@ if(PICKY_COMPILER) unset(WPICKY) - foreach(_CCOPT ${WPICKY_ENABLE}) + foreach(_CCOPT IN LISTS WPICKY_ENABLE) set(WPICKY "${WPICKY} ${_CCOPT}") endforeach() - foreach(_CCOPT ${WPICKY_DETECT}) + foreach(_CCOPT IN LISTS WPICKY_DETECT) # surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new # test result in. string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname) diff --git a/external/curl/CMake/Platforms/WindowsCache.cmake b/external/curl/CMake/Platforms/WindowsCache.cmake index 5daec0e1e..ec09fd4bd 100644 --- a/external/curl/CMake/Platforms/WindowsCache.cmake +++ b/external/curl/CMake/Platforms/WindowsCache.cmake @@ -21,113 +21,167 @@ # SPDX-License-Identifier: curl # ########################################################################### -if(NOT UNIX) - if(WIN32) +if(NOT WIN32) + message(FATAL_ERROR "This file should be included on Windows platform only") +endif() - set(HAVE_WINDOWS_H 1) - set(HAVE_WS2TCPIP_H 1) - set(HAVE_WINSOCK2_H 1) +set(HAVE_LOCALE_H 1) - if(MINGW) - set(HAVE_SNPRINTF 1) - set(HAVE_UNISTD_H 1) - set(HAVE_INTTYPES_H 1) +if(MINGW) + set(HAVE_SNPRINTF 1) + set(HAVE_UNISTD_H 1) + set(HAVE_LIBGEN_H 1) + set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size() + set(HAVE_STDBOOL_H 1) + set(HAVE_BOOL_T "${HAVE_STDBOOL_H}") + set(HAVE_STRTOLL 1) + set(HAVE_BASENAME 1) + set(HAVE_STRCASECMP 1) + set(HAVE_FTRUNCATE 1) + set(HAVE_SYS_PARAM_H 1) + set(HAVE_SYS_TIME_H 1) + set(HAVE_GETTIMEOFDAY 1) +else() + set(HAVE_LIBGEN_H 0) + set(HAVE_STRCASECMP 0) + set(HAVE_FTRUNCATE 0) + set(HAVE_SYS_PARAM_H 0) + set(HAVE_SYS_TIME_H 0) + set(HAVE_GETTIMEOFDAY 0) + if(MSVC) + set(HAVE_UNISTD_H 0) + set(HAVE_LOCALE_H 1) + set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size() + set(HAVE_STDATOMIC_H 0) + if(NOT MSVC_VERSION LESS 1800) + set(HAVE_STDBOOL_H 1) set(HAVE_STRTOLL 1) - set(HAVE_BASENAME 1) - elseif(MSVC) - if(NOT MSVC_VERSION LESS 1800) - set(HAVE_INTTYPES_H 1) - set(HAVE_STRTOLL 1) - else() - set(HAVE_INTTYPES_H 0) - set(HAVE_STRTOLL 0) - endif() - if(NOT MSVC_VERSION LESS 1900) - set(HAVE_SNPRINTF 1) - else() - set(HAVE_SNPRINTF 0) - endif() - set(HAVE_BASENAME 0) + else() + set(HAVE_STDBOOL_H 0) + set(HAVE_STRTOLL 0) endif() + set(HAVE_BOOL_T "${HAVE_STDBOOL_H}") + if(NOT MSVC_VERSION LESS 1900) + set(HAVE_SNPRINTF 1) + else() + set(HAVE_SNPRINTF 0) + endif() + set(HAVE_BASENAME 0) + set(HAVE_STRTOK_R 0) + set(HAVE_FILE_OFFSET_BITS 0) + set(HAVE_ATOMIC 0) + endif() +endif() - set(HAVE_LIBSOCKET 0) - set(HAVE_GETHOSTNAME 1) - set(HAVE_LIBZ 0) +# Available in Windows XP and newer +set(HAVE_GETADDRINFO 1) +set(HAVE_FREEADDRINFO 1) - set(HAVE_ARC4RANDOM 0) - set(HAVE_FNMATCH 0) - set(HAVE_SCHED_YIELD 0) - set(HAVE_ARPA_INET_H 0) - set(HAVE_FCNTL_H 1) - set(HAVE_IFADDRS_H 0) - set(HAVE_IO_H 1) - set(HAVE_NETDB_H 0) - set(HAVE_NETINET_IN_H 0) - set(HAVE_NETINET_TCP_H 0) - set(HAVE_NETINET_UDP_H 0) - set(HAVE_NET_IF_H 0) - set(HAVE_IOCTL_SIOCGIFADDR 0) - set(HAVE_POLL_H 0) - set(HAVE_POLL_FINE 0) - set(HAVE_PWD_H 0) - set(HAVE_STRINGS_H 0) - set(HAVE_SYS_FILIO_H 0) - set(HAVE_SYS_WAIT_H 0) - set(HAVE_SYS_IOCTL_H 0) - set(HAVE_SYS_PARAM_H 0) - set(HAVE_SYS_POLL_H 0) - set(HAVE_SYS_RESOURCE_H 0) - set(HAVE_SYS_SELECT_H 0) - set(HAVE_SYS_SOCKET_H 0) - set(HAVE_SYS_SOCKIO_H 0) - set(HAVE_SYS_STAT_H 1) - set(HAVE_SYS_TIME_H 0) - set(HAVE_SYS_TYPES_H 1) - set(HAVE_SYS_UN_H 0) - set(HAVE_SYS_UTIME_H 1) - set(HAVE_TERMIOS_H 0) - set(HAVE_TERMIO_H 0) - set(HAVE_UTIME_H 0) +set(HAVE_FCHMOD 0) +set(HAVE_SOCKETPAIR 0) +set(HAVE_SENDMSG 0) +set(HAVE_ALARM 0) +set(HAVE_FCNTL 0) +set(HAVE_GETPPID 0) +set(HAVE_UTIMES 0) +set(HAVE_GETPWUID_R 0) +set(HAVE_STRERROR_R 0) +set(HAVE_SIGINTERRUPT 0) +set(HAVE_PIPE 0) +set(HAVE_IF_NAMETOINDEX 0) +set(HAVE_GETRLIMIT 0) +set(HAVE_SETRLIMIT 0) +set(HAVE_FSETXATTR 0) +set(HAVE_LIBSOCKET 0) +set(HAVE_SETLOCALE 1) +set(HAVE_SETMODE 1) +set(HAVE_GETPEERNAME 1) +set(HAVE_GETSOCKNAME 1) +set(HAVE_GETHOSTNAME 1) +set(HAVE_LIBZ 0) - set(HAVE_FSEEKO 0) - set(HAVE__FSEEKI64 1) - set(HAVE_SOCKET 1) - set(HAVE_SELECT 1) - set(HAVE_STRDUP 1) - set(HAVE_STRICMP 1) - set(HAVE_STRCMPI 1) - set(HAVE_MEMRCHR 0) - set(HAVE_GETTIMEOFDAY 0) - set(HAVE_CLOSESOCKET 1) - set(HAVE_SIGSETJMP 0) - set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1) - set(HAVE_GETPASS_R 0) - set(HAVE_GETPWUID 0) - set(HAVE_GETEUID 0) - set(HAVE_UTIME 1) - set(HAVE_GMTIME_R 0) - set(HAVE_CLOCK_GETTIME_MONOTONIC_RAW 0) - set(HAVE_GETHOSTBYNAME_R 0) - set(HAVE_SIGNAL 1) - set(HAVE_LINUX_TCP_H 0) - set(HAVE_GLIBC_STRERROR_R 0) - set(HAVE_MACH_ABSOLUTE_TIME 0) - set(HAVE_GETIFADDRS 0) +set(HAVE_RECV 1) +set(HAVE_SEND 1) +set(HAVE_STROPTS_H 0) +set(HAVE_SYS_XATTR_H 0) +set(HAVE_ARC4RANDOM 0) +set(HAVE_FNMATCH 0) +set(HAVE_SCHED_YIELD 0) +set(HAVE_ARPA_INET_H 0) +set(HAVE_FCNTL_H 1) +set(HAVE_IFADDRS_H 0) +set(HAVE_IO_H 1) +set(HAVE_NETDB_H 0) +set(HAVE_NETINET_IN_H 0) +set(HAVE_NETINET_TCP_H 0) +set(HAVE_NETINET_UDP_H 0) +set(HAVE_NET_IF_H 0) +set(HAVE_IOCTL_SIOCGIFADDR 0) +set(HAVE_POLL_H 0) +set(HAVE_POLL_FINE 0) +set(HAVE_PWD_H 0) +set(HAVE_STRINGS_H 0) # mingw-w64 has it (wrapper to string.h) +set(HAVE_SYS_FILIO_H 0) +set(HAVE_SYS_WAIT_H 0) +set(HAVE_SYS_IOCTL_H 0) +set(HAVE_SYS_POLL_H 0) +set(HAVE_SYS_RESOURCE_H 0) +set(HAVE_SYS_SELECT_H 0) +set(HAVE_SYS_SOCKET_H 0) +set(HAVE_SYS_SOCKIO_H 0) +set(HAVE_SYS_STAT_H 1) +set(HAVE_SYS_TYPES_H 1) +set(HAVE_SYS_UN_H 0) +set(HAVE_SYS_UTIME_H 1) +set(HAVE_TERMIOS_H 0) +set(HAVE_TERMIO_H 0) +set(HAVE_UTIME_H 0) # mingw-w64 has it (wrapper to sys/utime.h) - set(HAVE_GETHOSTBYNAME_R_3 0) - set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0) - set(HAVE_GETHOSTBYNAME_R_5 0) - set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0) - set(HAVE_GETHOSTBYNAME_R_6 0) - set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0) +set(HAVE_FSEEKO 0) +set(HAVE__FSEEKI64 1) +set(HAVE_SOCKET 1) +set(HAVE_SELECT 1) +set(HAVE_STRDUP 1) +set(HAVE_STRICMP 1) +set(HAVE_STRCMPI 1) +set(HAVE_MEMRCHR 0) +set(HAVE_CLOSESOCKET 1) +set(HAVE_SIGSETJMP 0) +set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1) +set(HAVE_GETPASS_R 0) +set(HAVE_GETPWUID 0) +set(HAVE_GETEUID 0) +set(HAVE_UTIME 1) +set(HAVE_GMTIME_R 0) +set(HAVE_GETHOSTBYNAME_R 0) +set(HAVE_SIGNAL 1) +set(HAVE_SIGACTION 0) +set(HAVE_LINUX_TCP_H 0) +set(HAVE_GLIBC_STRERROR_R 0) +set(HAVE_MACH_ABSOLUTE_TIME 0) +set(HAVE_GETIFADDRS 0) +set(HAVE_FCNTL_O_NONBLOCK 0) +set(HAVE_IOCTLSOCKET 1) +set(HAVE_IOCTLSOCKET_CAMEL 0) +set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 0) +set(HAVE_IOCTLSOCKET_FIONBIO 1) +set(HAVE_IOCTL_FIONBIO 0) +set(HAVE_SETSOCKOPT_SO_NONBLOCK 0) +set(HAVE_POSIX_STRERROR_R 0) +set(HAVE_BUILTIN_AVAILABLE 0) +set(HAVE_MSG_NOSIGNAL 0) +set(HAVE_STRUCT_TIMEVAL 1) - set(HAVE_O_NONBLOCK 0) - set(HAVE_IN_ADDR_T 0) - set(STDC_HEADERS 1) +set(HAVE_GETHOSTBYNAME_R_3 0) +set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0) +set(HAVE_GETHOSTBYNAME_R_5 0) +set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0) +set(HAVE_GETHOSTBYNAME_R_6 0) +set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0) - set(HAVE_SIGACTION 0) - set(HAVE_MACRO_SIGSETJMP 0) - else() - message("This file should be included on Windows platform only") - endif() -endif() +set(HAVE_O_NONBLOCK 0) +set(HAVE_IN_ADDR_T 0) +set(STDC_HEADERS 1) + +set(HAVE_SIZEOF_SUSECONDS_T 0) +set(HAVE_SIZEOF_SA_FAMILY_T 0) diff --git a/external/curl/CMake/curl-config.cmake.in b/external/curl/CMake/curl-config.cmake.in index 056907c4f..9adb96e0a 100644 --- a/external/curl/CMake/curl-config.cmake.in +++ b/external/curl/CMake/curl-config.cmake.in @@ -35,4 +35,6 @@ include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") check_required_components("@PROJECT_NAME@") # Alias for either shared or static library -add_library(@PROJECT_NAME@::libcurl ALIAS @PROJECT_NAME@::@LIB_SELECTED@) +if(NOT TARGET @PROJECT_NAME@::libcurl) + add_library(@PROJECT_NAME@::libcurl ALIAS @PROJECT_NAME@::@LIB_SELECTED@) +endif() diff --git a/external/curl/CMakeLists.txt b/external/curl/CMakeLists.txt index 1b19c681d..a54c2fff9 100644 --- a/external/curl/CMakeLists.txt +++ b/external/curl/CMakeLists.txt @@ -54,13 +54,13 @@ # HAVE_GNUTLS_SRP: `gnutls_srp_verifier` present in GnuTLS # HAVE_SSL_CTX_SET_QUIC_METHOD: `SSL_CTX_set_quic_method` present in OpenSSL/wolfSSL # HAVE_QUICHE_CONN_SET_QLOG_FD: `quiche_conn_set_qlog_fd` present in QUICHE -# HAVE_ZSTD_CREATEDSTREAM: `ZSTD_createDStream` present in Zstd # # For each of the above variables, if the variable is DEFINED (either # to ON or OFF), the symbol detection will be skipped. If the # variable is NOT DEFINED, the symbol detection will be performed. cmake_minimum_required(VERSION 3.7...3.16 FATAL_ERROR) +message(STATUS "Using CMake version ${CMAKE_VERSION}") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}") include(Utilities) @@ -105,6 +105,8 @@ option(BUILD_SHARED_LIBS "Build shared libraries" ON) option(BUILD_STATIC_LIBS "Build static libraries" OFF) option(BUILD_STATIC_CURL "Build curl executable with static libcurl" OFF) option(ENABLE_ARES "Set to ON to enable c-ares support" OFF) +option(CURL_DISABLE_INSTALL "Set to ON to disable instalation targets" OFF) + if(WIN32) option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF) option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF) @@ -220,6 +222,8 @@ option(CURL_DISABLE_GETOPTIONS "disables curl_easy_options API for existing opti mark_as_advanced(CURL_DISABLE_GETOPTIONS) option(CURL_DISABLE_GOPHER "disables Gopher" OFF) mark_as_advanced(CURL_DISABLE_GOPHER) +option(CURL_DISABLE_HEADERS_API "disables headers-api support" OFF) +mark_as_advanced(CURL_DISABLE_HEADERS_API) option(CURL_DISABLE_HSTS "disables HSTS support" OFF) mark_as_advanced(CURL_DISABLE_HSTS) option(CURL_DISABLE_HTTP "disables HTTP" OFF) @@ -237,6 +241,8 @@ mark_as_advanced(CURL_DISABLE_LIBCURL_OPTION) option(CURL_DISABLE_MIME "disables MIME support" OFF) mark_as_advanced(CURL_DISABLE_MIME) option(CURL_DISABLE_MQTT "disables MQTT" OFF) +mark_as_advanced(CURL_DISABLE_BINDLOCAL) +option(CURL_DISABLE_BINDLOCAL "disables local binding support" OFF) mark_as_advanced(CURL_DISABLE_MQTT) option(CURL_DISABLE_NETRC "disables netrc parser" OFF) mark_as_advanced(CURL_DISABLE_NETRC) @@ -362,28 +368,33 @@ include(CheckCSourceCompiles) # On windows preload settings if(WIN32) - list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_WINSOCKAPI_=) + set(HAVE_WINDOWS_H 1) + set(HAVE_WS2TCPIP_H 1) + set(HAVE_WINSOCK2_H 1) include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake) endif() if(ENABLE_THREADED_RESOLVER) - find_package(Threads REQUIRED) if(WIN32) set(USE_THREADS_WIN32 ON) else() + find_package(Threads REQUIRED) set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT}) set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT}) + set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) endif() - set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) endif() # Check for all needed libraries -check_library_exists_concat("socket" connect HAVE_LIBSOCKET) +check_library_exists("socket" "connect" "" HAVE_LIBSOCKET) +if(HAVE_LIBSOCKET) + set(CURL_LIBS "socket;${CURL_LIBS}") +endif() check_function_exists(gethostname HAVE_GETHOSTNAME) if(WIN32) - list(APPEND CURL_LIBS "ws2_32") + list(APPEND CURL_LIBS "ws2_32" "bcrypt") if(USE_LIBRTMP) list(APPEND CURL_LIBS "winmm") endif() @@ -413,7 +424,7 @@ set(openssl_default ON) if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_WOLFSSL) set(openssl_default OFF) endif() -cmake_dependent_option(CURL_USE_OPENSSL "Use OpenSSL code. Experimental" ${openssl_default} CURL_ENABLE_SSL OFF) +cmake_dependent_option(CURL_USE_OPENSSL "Enable OpenSSL for SSL/TLS" ${openssl_default} CURL_ENABLE_SSL OFF) option(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG "Disable automatic loading of OpenSSL configuration" OFF) count_true(enabled_ssl_options_count @@ -487,11 +498,6 @@ if(CURL_USE_OPENSSL) include_directories(${OPENSSL_INCLUDE_DIR}) endif() - if(WIN32) - list(APPEND CURL_LIBS "ws2_32") - list(APPEND CURL_LIBS "bcrypt") # for OpenSSL/LibreSSL - endif() - if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "openssl") set(valid_default_ssl_backend TRUE) endif() @@ -604,17 +610,12 @@ option(CURL_ZSTD "Set to ON to enable building curl with zstd support." OFF) set(HAVE_ZSTD OFF) if(CURL_ZSTD) find_package(Zstd REQUIRED) - if(NOT DEFINED HAVE_ZSTD_CREATEDSTREAM) - cmake_push_check_state() - set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES}) - check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM) - cmake_pop_check_state() - endif() - if(Zstd_FOUND AND HAVE_ZSTD_CREATEDSTREAM) + if(Zstd_FOUND AND NOT Zstd_VERSION VERSION_LESS "1.0.0") set(HAVE_ZSTD ON) list(APPEND CURL_LIBS ${Zstd_LIBRARIES}) include_directories(${Zstd_INCLUDE_DIRS}) + else() + message(WARNING "zstd v1.0.0 or newer is required, disabling zstd support.") endif() endif() @@ -647,6 +648,20 @@ macro(openssl_check_symbol_exists SYMBOL FILES VARIABLE) cmake_pop_check_state() endmacro() +# Ensure that the OpenSSL fork actually supports QUIC. +macro(openssl_check_quic) + if(NOT DEFINED HAVE_SSL_CTX_SET_QUIC_METHOD) + if(USE_OPENSSL) + openssl_check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD) + elseif(USE_WOLFSSL) + openssl_check_symbol_exists(wolfSSL_set_quic_method "wolfssl/options.h;wolfssl/openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD) + endif() + endif() + if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD) + message(FATAL_ERROR "QUIC support is missing in OpenSSL fork. Try setting -DOPENSSL_ROOT_DIR") + endif() +endmacro() + if(USE_OPENSSL OR USE_WOLFSSL) if(NOT DEFINED HAVE_SSL_SET0_WBIO) openssl_check_symbol_exists(SSL_set0_wbio "openssl/ssl.h" HAVE_SSL_SET0_WBIO) @@ -673,18 +688,7 @@ if(USE_NGTCP2) else() find_package(NGTCP2 REQUIRED quictls) endif() - - # Be sure that the OpenSSL/wolfSSL library actually supports QUIC. - if(NOT DEFINED HAVE_SSL_CTX_SET_QUIC_METHOD) - if(USE_OPENSSL) - openssl_check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD) - elseif(USE_WOLFSSL) - openssl_check_symbol_exists(wolfSSL_set_quic_method "wolfssl/options.h;wolfssl/openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD) - endif() - endif() - if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD) - message(FATAL_ERROR "QUIC support is missing in OpenSSL/LibreSSL/BoringSSL/wolfSSL. Try setting -DOPENSSL_ROOT_DIR") - endif() + openssl_check_quic() elseif(USE_GNUTLS) find_package(NGTCP2 REQUIRED GnuTLS) else() @@ -706,7 +710,10 @@ if(USE_QUICHE) message(FATAL_ERROR "Only one HTTP/3 backend can be selected!") endif() find_package(QUICHE REQUIRED) - CheckQuicSupportInOpenSSL() + if(NOT HAVE_BORINGSSL) + message(FATAL_ERROR "quiche requires BoringSSL") + endif() + openssl_check_quic() set(USE_QUICHE ON) include_directories(${QUICHE_INCLUDE_DIRS}) list(APPEND CURL_LIBS ${QUICHE_LIBRARIES}) @@ -751,8 +758,12 @@ if(NOT CURL_DISABLE_LDAP) if(NOT USE_WIN32_LDAP) # Check for LDAP set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES}) - check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP) - check_library_exists_concat(${CMAKE_LBER_LIB} ber_init HAVE_LIBLBER) + check_library_exists("${CMAKE_LDAP_LIB}" "ldap_init" "" HAVE_LIBLDAP) + if(HAVE_LIBLDAP) + check_library_exists("${CMAKE_LDAP_LIB};${CMAKE_LBER_LIB}" "ber_init" "" HAVE_LIBLBER) + else() + check_library_exists("${CMAKE_LBER_LIB}" "ber_init" "" HAVE_LIBLBER) + endif() set(CMAKE_REQUIRED_INCLUDES_BAK ${CMAKE_REQUIRED_INCLUDES}) set(CMAKE_LDAP_INCLUDE_DIR "" CACHE STRING "Path to LDAP include directory") @@ -791,8 +802,10 @@ if(NOT CURL_DISABLE_LDAP) list(APPEND CMAKE_REQUIRED_DEFINITIONS -DLDAP_DEPRECATED=1) list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB}) + set(CURL_LIBS "${CMAKE_LDAP_LIB};${CURL_LIBS}") if(HAVE_LIBLBER) list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB}) + set(CURL_LIBS "${CMAKE_LBER_LIB};${CURL_LIBS}") endif() check_c_source_compiles(" @@ -839,7 +852,11 @@ endif() # Check for idn2 option(USE_LIBIDN2 "Use libidn2 for IDN support" ON) if(USE_LIBIDN2) - check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2) + check_library_exists("idn2" "idn2_lookup_ul" "" HAVE_LIBIDN2) + if(HAVE_LIBIDN2) + set(CURL_LIBS "idn2;${CURL_LIBS}") + check_include_file_concat("idn2.h" HAVE_IDN2_H) + endif() else() set(HAVE_LIBIDN2 OFF) endif() @@ -1052,13 +1069,46 @@ if(CURL_CA_PATH_SET AND endif() # Check for header files -if(NOT UNIX) - check_include_file_concat("windows.h" HAVE_WINDOWS_H) - check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H) +if(WIN32) check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H) + check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H) + check_include_file_concat("windows.h" HAVE_WINDOWS_H) +endif() + +if(WIN32) + # detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT + curl_internal_test(HAVE_WIN32_WINNT) + if(HAVE_WIN32_WINNT) + string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" OUTPUT "${OUTPUT}") + string(REGEX REPLACE ".*_WIN32_WINNT=" "" OUTPUT "${OUTPUT}") + string(REGEX REPLACE "0x([0-9a-f][0-9a-f][0-9a-f])$" "0x0\\1" OUTPUT "${OUTPUT}") # pad to 4 digits + string(TOLOWER "${OUTPUT}" HAVE_WIN32_WINNT) + message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}") + endif() + # avoid storing HAVE_WIN32_WINNT in CMake cache + unset(HAVE_WIN32_WINNT CACHE) + + if(HAVE_WIN32_WINNT) + if(HAVE_WIN32_WINNT STRLESS "0x0501") + # Windows XP is required for freeaddrinfo, getaddrinfo + message(FATAL_ERROR "Building for Windows XP or newer is required.") + endif() + + # pre-fill detection results based on target OS version + if(MINGW OR MSVC) + if(HAVE_WIN32_WINNT STRLESS "0x0600") + set(HAVE_INET_NTOP 0) + set(HAVE_INET_PTON 0) + else() # Windows Vista or newer + set(HAVE_INET_NTOP 1) + set(HAVE_INET_PTON 1) + endif() + unset(HAVE_INET_NTOP CACHE) + unset(HAVE_INET_PTON CACHE) + endif() + endif() endif() -check_include_file_concat("inttypes.h" HAVE_INTTYPES_H) check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H) check_include_file_concat("sys/wait.h" HAVE_SYS_WAIT_H) check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H) @@ -1076,7 +1126,6 @@ check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H) check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H) check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H) check_include_file_concat("fcntl.h" HAVE_FCNTL_H) -check_include_file_concat("idn2.h" HAVE_IDN2_H) check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H) check_include_file_concat("io.h" HAVE_IO_H) check_include_file_concat("libgen.h" HAVE_LIBGEN_H) @@ -1092,7 +1141,6 @@ check_include_file_concat("poll.h" HAVE_POLL_H) check_include_file_concat("pwd.h" HAVE_PWD_H) check_include_file_concat("stdatomic.h" HAVE_STDATOMIC_H) check_include_file_concat("stdbool.h" HAVE_STDBOOL_H) -check_include_file_concat("stdint.h" HAVE_STDINT_H) check_include_file_concat("strings.h" HAVE_STRINGS_H) check_include_file_concat("stropts.h" HAVE_STROPTS_H) check_include_file_concat("termio.h" HAVE_TERMIO_H) @@ -1137,7 +1185,6 @@ elseif(HAVE_LIBSOCKET) set(CMAKE_REQUIRED_LIBRARIES socket) endif() -check_symbol_exists(fchmod "${CURL_INCLUDES}" HAVE_FCHMOD) check_symbol_exists(fnmatch "${CURL_INCLUDES};fnmatch.h" HAVE_FNMATCH) check_symbol_exists(basename "${CURL_INCLUDES};string.h" HAVE_BASENAME) check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET) @@ -1174,6 +1221,7 @@ check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R) check_symbol_exists(signal "${CURL_INCLUDES};signal.h" HAVE_SIGNAL) check_symbol_exists(strtoll "${CURL_INCLUDES};stdlib.h" HAVE_STRTOLL) check_symbol_exists(strerror_r "${CURL_INCLUDES};stdlib.h;string.h" HAVE_STRERROR_R) +check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION) check_symbol_exists(siginterrupt "${CURL_INCLUDES};signal.h" HAVE_SIGINTERRUPT) check_symbol_exists(getaddrinfo "${CURL_INCLUDES};stdlib.h;string.h" HAVE_GETADDRINFO) check_symbol_exists(getifaddrs "${CURL_INCLUDES};stdlib.h" HAVE_GETIFADDRS) @@ -1190,6 +1238,10 @@ check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE) check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE) check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT) +if(HAVE_FSEEKO) + set(HAVE_DECL_FSEEKO 1) +endif() + if(NOT MSVC OR (MSVC_VERSION GREATER_EQUAL 1900)) # earlier MSVC compilers had faulty snprintf implementations check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF) @@ -1213,20 +1265,11 @@ check_type_size("sa_family_t" SIZEOF_SA_FAMILY_T) set(HAVE_SA_FAMILY_T ${HAVE_SIZEOF_SA_FAMILY_T}) set(CMAKE_EXTRA_INCLUDE_FILES "") -set(CMAKE_EXTRA_INCLUDE_FILES "ws2def.h") -check_type_size("ADDRESS_FAMILY" SIZEOF_ADDRESS_FAMILY) -set(HAVE_ADDRESS_FAMILY ${HAVE_SIZEOF_ADDRESS_FAMILY}) -set(CMAKE_EXTRA_INCLUDE_FILES "") - -# sigaction and sigsetjmp are special. Use special mechanism for -# detecting those, but only if previous attempt failed. -check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION) - -if(NOT HAVE_SIGSETJMP) - check_symbol_exists(sigsetjmp "setjmp.h" HAVE_MACRO_SIGSETJMP) - if(HAVE_MACRO_SIGSETJMP) - set(HAVE_SIGSETJMP 1) - endif() +if(WIN32) + set(CMAKE_EXTRA_INCLUDE_FILES "ws2def.h") + check_type_size("ADDRESS_FAMILY" SIZEOF_ADDRESS_FAMILY) + set(HAVE_ADDRESS_FAMILY ${HAVE_SIZEOF_ADDRESS_FAMILY}) + set(CMAKE_EXTRA_INCLUDE_FILES "") endif() # Do curl specific tests @@ -1250,8 +1293,6 @@ foreach(CURL_TEST HAVE_BOOL_T STDC_HEADERS HAVE_FILE_OFFSET_BITS - HAVE_VARIADIC_MACROS_C99 - HAVE_VARIADIC_MACROS_GCC HAVE_ATOMIC ) curl_internal_test(${CURL_TEST}) @@ -1271,18 +1312,6 @@ set(CMAKE_EXTRA_INCLUDE_FILES "curl/curl.h") check_type_size("curl_socket_t" SIZEOF_CURL_SOCKET_T) set(CMAKE_EXTRA_INCLUDE_FILES "") -if(WIN32) - # detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT - curl_internal_test(HAVE_WIN32_WINNT) - if(HAVE_WIN32_WINNT) - string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" OUTPUT "${OUTPUT}") - string(REGEX REPLACE ".*_WIN32_WINNT=" "" HAVE_WIN32_WINNT "${OUTPUT}") - message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}") - endif() - # avoid storing HAVE_WIN32_WINNT in CMake cache - unset(HAVE_WIN32_WINNT CACHE) -endif() - if(NOT WIN32 AND NOT CMAKE_CROSSCOMPILING) # on not-Windows and not-crosscompiling, check for writable argv[] include(CheckCSourceRuns) @@ -1338,8 +1367,10 @@ if(NEED_REENTRANT) endforeach() endif() -# Check clock_gettime(CLOCK_MONOTONIC, x) support -curl_internal_test(HAVE_CLOCK_GETTIME_MONOTONIC) +if(NOT WIN32) + # Check clock_gettime(CLOCK_MONOTONIC, x) support + curl_internal_test(HAVE_CLOCK_GETTIME_MONOTONIC) +endif() # Check compiler support of __builtin_available() curl_internal_test(HAVE_BUILTIN_AVAILABLE) @@ -1404,8 +1435,6 @@ if(WIN32) if(USE_WIN32_CRYPTO OR USE_SCHANNEL) list(APPEND CURL_LIBS "advapi32" "crypt32") endif() - - list(APPEND CURL_LIBS "bcrypt") endif() if(MSVC) @@ -1492,258 +1521,262 @@ if(BUILD_TESTING) add_subdirectory(tests) endif() -# Helper to populate a list (_items) with a label when conditions (the remaining -# args) are satisfied -macro(_add_if label) - # needs to be a macro to allow this indirection - if(${ARGN}) - set(_items ${_items} "${label}") +if(NOT CURL_DISABLE_INSTALL) + + # Helper to populate a list (_items) with a label when conditions (the remaining + # args) are satisfied + macro(_add_if label) + # needs to be a macro to allow this indirection + if(${ARGN}) + set(_items ${_items} "${label}") + endif() + endmacro() + + # NTLM support requires crypto function adaptions from various SSL libs + # TODO alternative SSL libs tests for SSP1, GnuTLS, NSS + if(NOT (CURL_DISABLE_NTLM) AND + (USE_OPENSSL OR USE_MBEDTLS OR USE_DARWINSSL OR USE_WIN32_CRYPTO OR USE_GNUTLS)) + set(use_curl_ntlm_core ON) endif() -endmacro() -# NTLM support requires crypto function adaptions from various SSL libs -# TODO alternative SSL libs tests for SSP1, GnuTLS, NSS -if(NOT (CURL_DISABLE_NTLM) AND - (USE_OPENSSL OR USE_MBEDTLS OR USE_DARWINSSL OR USE_WIN32_CRYPTO OR USE_GNUTLS)) - set(use_curl_ntlm_core ON) -endif() - -# Clear list and try to detect available features -set(_items) -_add_if("SSL" SSL_ENABLED) -_add_if("IPv6" ENABLE_IPV6) -_add_if("unixsockets" USE_UNIX_SOCKETS) -_add_if("libz" HAVE_LIBZ) -_add_if("brotli" HAVE_BROTLI) -_add_if("zstd" HAVE_ZSTD) -_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32) -_add_if("IDN" HAVE_LIBIDN2 OR USE_WIN32_IDN) -_add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND - ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES)) -# TODO SSP1 (Schannel) check is missing -_add_if("SSPI" USE_WINDOWS_SSPI) -_add_if("GSS-API" HAVE_GSSAPI) -_add_if("alt-svc" NOT CURL_DISABLE_ALTSVC) -_add_if("HSTS" NOT CURL_DISABLE_HSTS) -# TODO SSP1 missing for SPNEGO -_add_if("SPNEGO" NOT CURL_DISABLE_NEGOTIATE_AUTH AND - (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) -_add_if("Kerberos" NOT CURL_DISABLE_KERBEROS_AUTH AND - (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) -# NTLM support requires crypto function adaptions from various SSL libs -# TODO alternative SSL libs tests for SSP1, GnuTLS, NSS -_add_if("NTLM" NOT (CURL_DISABLE_NTLM) AND - (use_curl_ntlm_core OR USE_WINDOWS_SSPI)) -# TODO missing option (autoconf: --enable-ntlm-wb) -_add_if("NTLM_WB" NOT (CURL_DISABLE_NTLM) AND - (use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND - NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED) -_add_if("TLS-SRP" USE_TLS_SRP) -# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header -_add_if("HTTP2" USE_NGHTTP2) -_add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE) -_add_if("MultiSSL" CURL_WITH_MULTI_SSL) -# TODO wolfSSL only support this from v5.0.0 onwards -_add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS - OR USE_SCHANNEL OR USE_RUSTLS OR USE_BEARSSL OR - USE_MBEDTLS OR USE_SECTRANSP)) -_add_if("unicode" ENABLE_UNICODE) -_add_if("threadsafe" HAVE_ATOMIC OR (WIN32 AND - HAVE_WIN32_WINNT GREATER_EQUAL 0x600)) -_add_if("PSL" USE_LIBPSL) -string(REPLACE ";" " " SUPPORT_FEATURES "${_items}") -message(STATUS "Enabled features: ${SUPPORT_FEATURES}") - -# Clear list and try to detect available protocols -set(_items) -_add_if("HTTP" NOT CURL_DISABLE_HTTP) -_add_if("HTTPS" NOT CURL_DISABLE_HTTP AND SSL_ENABLED) -_add_if("FTP" NOT CURL_DISABLE_FTP) -_add_if("FTPS" NOT CURL_DISABLE_FTP AND SSL_ENABLED) -_add_if("FILE" NOT CURL_DISABLE_FILE) -_add_if("TELNET" NOT CURL_DISABLE_TELNET) -_add_if("LDAP" NOT CURL_DISABLE_LDAP) -# CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS -_add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND - ((USE_OPENLDAP AND SSL_ENABLED) OR - (NOT USE_OPENLDAP AND HAVE_LDAP_SSL))) -_add_if("DICT" NOT CURL_DISABLE_DICT) -_add_if("TFTP" NOT CURL_DISABLE_TFTP) -_add_if("GOPHER" NOT CURL_DISABLE_GOPHER) -_add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND SSL_ENABLED) -_add_if("POP3" NOT CURL_DISABLE_POP3) -_add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED) -_add_if("IMAP" NOT CURL_DISABLE_IMAP) -_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED) -_add_if("SMB" NOT CURL_DISABLE_SMB AND - use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) -_add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND - use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) -_add_if("SMTP" NOT CURL_DISABLE_SMTP) -_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED) -_add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH) -_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH) -_add_if("RTSP" NOT CURL_DISABLE_RTSP) -_add_if("RTMP" USE_LIBRTMP) -_add_if("MQTT" NOT CURL_DISABLE_MQTT) -_add_if("WS" USE_WEBSOCKETS) -_add_if("WSS" USE_WEBSOCKETS) -if(_items) - list(SORT _items) -endif() -string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}") -message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}") - -# Clear list and collect SSL backends -set(_items) -_add_if("Schannel" SSL_ENABLED AND USE_SCHANNEL) -_add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL) -_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP) -_add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS) -_add_if("BearSSL" SSL_ENABLED AND USE_BEARSSL) -_add_if("wolfSSL" SSL_ENABLED AND USE_WOLFSSL) -_add_if("GnuTLS" SSL_ENABLED AND USE_GNUTLS) - -if(_items) - list(SORT _items) -endif() -string(REPLACE ";" " " SSL_BACKENDS "${_items}") -message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}") -if(CURL_DEFAULT_SSL_BACKEND) - message(STATUS "Default SSL backend: ${CURL_DEFAULT_SSL_BACKEND}") -endif() - -# curl-config needs the following options to be set. -set(CC "${CMAKE_C_COMPILER}") -# TODO probably put a -D... options here? -set(CONFIGURE_OPTIONS "") -set(CURLVERSION "${CURL_VERSION}") -set(exec_prefix "\${prefix}") -set(includedir "\${prefix}/include") -set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}") -set(LIBCURL_LIBS "") -set(libdir "${CMAKE_INSTALL_PREFIX}/lib") -foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS}) - if(TARGET "${_lib}") - set(_libname "${_lib}") - get_target_property(_imported "${_libname}" IMPORTED) - if(NOT _imported) - # Reading the LOCATION property on non-imported target will error out. - # Assume the user won't need this information in the .pc file. - continue() + # Clear list and try to detect available features + set(_items) + _add_if("SSL" SSL_ENABLED) + _add_if("IPv6" ENABLE_IPV6) + _add_if("UnixSockets" USE_UNIX_SOCKETS) + _add_if("libz" HAVE_LIBZ) + _add_if("brotli" HAVE_BROTLI) + _add_if("zstd" HAVE_ZSTD) + _add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32) + _add_if("IDN" HAVE_LIBIDN2 OR USE_WIN32_IDN) + _add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND + ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES)) + # TODO SSP1 (Schannel) check is missing + _add_if("SSPI" USE_WINDOWS_SSPI) + _add_if("GSS-API" HAVE_GSSAPI) + _add_if("alt-svc" NOT CURL_DISABLE_ALTSVC) + _add_if("HSTS" NOT CURL_DISABLE_HSTS) + # TODO SSP1 missing for SPNEGO + _add_if("SPNEGO" NOT CURL_DISABLE_NEGOTIATE_AUTH AND + (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) + _add_if("Kerberos" NOT CURL_DISABLE_KERBEROS_AUTH AND + (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) + # NTLM support requires crypto function adaptions from various SSL libs + # TODO alternative SSL libs tests for SSP1, GnuTLS, NSS + _add_if("NTLM" NOT (CURL_DISABLE_NTLM) AND + (use_curl_ntlm_core OR USE_WINDOWS_SSPI)) + # TODO missing option (autoconf: --enable-ntlm-wb) + _add_if("NTLM_WB" NOT (CURL_DISABLE_NTLM) AND + (use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND + NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED) + _add_if("TLS-SRP" USE_TLS_SRP) + # TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header + _add_if("HTTP2" USE_NGHTTP2) + _add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE) + _add_if("MultiSSL" CURL_WITH_MULTI_SSL) + # TODO wolfSSL only support this from v5.0.0 onwards + _add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS + OR USE_SCHANNEL OR USE_RUSTLS OR USE_BEARSSL OR + USE_MBEDTLS OR USE_SECTRANSP)) + _add_if("unicode" ENABLE_UNICODE) + _add_if("threadsafe" HAVE_ATOMIC OR + (USE_THREADS_POSIX AND HAVE_PTHREAD_H) OR + (WIN32 AND HAVE_WIN32_WINNT GREATER_EQUAL 0x600)) + _add_if("PSL" USE_LIBPSL) + string(REPLACE ";" " " SUPPORT_FEATURES "${_items}") + message(STATUS "Enabled features: ${SUPPORT_FEATURES}") + + # Clear list and try to detect available protocols + set(_items) + _add_if("HTTP" NOT CURL_DISABLE_HTTP) + _add_if("HTTPS" NOT CURL_DISABLE_HTTP AND SSL_ENABLED) + _add_if("FTP" NOT CURL_DISABLE_FTP) + _add_if("FTPS" NOT CURL_DISABLE_FTP AND SSL_ENABLED) + _add_if("FILE" NOT CURL_DISABLE_FILE) + _add_if("TELNET" NOT CURL_DISABLE_TELNET) + _add_if("LDAP" NOT CURL_DISABLE_LDAP) + # CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS + _add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND + ((USE_OPENLDAP AND SSL_ENABLED) OR + (NOT USE_OPENLDAP AND HAVE_LDAP_SSL))) + _add_if("DICT" NOT CURL_DISABLE_DICT) + _add_if("TFTP" NOT CURL_DISABLE_TFTP) + _add_if("GOPHER" NOT CURL_DISABLE_GOPHER) + _add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND SSL_ENABLED) + _add_if("POP3" NOT CURL_DISABLE_POP3) + _add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED) + _add_if("IMAP" NOT CURL_DISABLE_IMAP) + _add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED) + _add_if("SMB" NOT CURL_DISABLE_SMB AND + use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) + _add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND + use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) + _add_if("SMTP" NOT CURL_DISABLE_SMTP) + _add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED) + _add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH) + _add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH) + _add_if("RTSP" NOT CURL_DISABLE_RTSP) + _add_if("RTMP" USE_LIBRTMP) + _add_if("MQTT" NOT CURL_DISABLE_MQTT) + _add_if("WS" USE_WEBSOCKETS) + _add_if("WSS" USE_WEBSOCKETS) + if(_items) + list(SORT _items) + endif() + string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}") + message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}") + + # Clear list and collect SSL backends + set(_items) + _add_if("Schannel" SSL_ENABLED AND USE_SCHANNEL) + _add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL) + _add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP) + _add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS) + _add_if("BearSSL" SSL_ENABLED AND USE_BEARSSL) + _add_if("wolfSSL" SSL_ENABLED AND USE_WOLFSSL) + _add_if("GnuTLS" SSL_ENABLED AND USE_GNUTLS) + + if(_items) + list(SORT _items) + endif() + string(REPLACE ";" " " SSL_BACKENDS "${_items}") + message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}") + if(CURL_DEFAULT_SSL_BACKEND) + message(STATUS "Default SSL backend: ${CURL_DEFAULT_SSL_BACKEND}") + endif() + + # curl-config needs the following options to be set. + set(CC "${CMAKE_C_COMPILER}") + # TODO probably put a -D... options here? + set(CONFIGURE_OPTIONS "") + set(CURLVERSION "${CURL_VERSION}") + set(exec_prefix "\${prefix}") + set(includedir "\${prefix}/include") + set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}") + set(LIBCURL_LIBS "") + set(libdir "${CMAKE_INSTALL_PREFIX}/lib") + foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS}) + if(TARGET "${_lib}") + set(_libname "${_lib}") + get_target_property(_imported "${_libname}" IMPORTED) + if(NOT _imported) + # Reading the LOCATION property on non-imported target will error out. + # Assume the user won't need this information in the .pc file. + continue() + endif() + get_target_property(_lib "${_libname}" LOCATION) + if(NOT _lib) + message(WARNING "Bad lib in library list: ${_libname}") + continue() + endif() endif() - get_target_property(_lib "${_libname}" LOCATION) - if(NOT _lib) - message(WARNING "Bad lib in library list: ${_libname}") - continue() + if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-") + set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}") + else() + set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}") endif() + endforeach() + if(BUILD_SHARED_LIBS) + set(ENABLE_SHARED "yes") + set(LIBCURL_NO_SHARED "") + set(CPPFLAG_CURL_STATICLIB "") + else() + set(ENABLE_SHARED "no") + set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}") + set(CPPFLAG_CURL_STATICLIB "-DCURL_STATICLIB") endif() - if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-") - set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}") + if(BUILD_STATIC_LIBS) + set(ENABLE_STATIC "yes") else() - set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}") + set(ENABLE_STATIC "no") endif() -endforeach() -if(BUILD_SHARED_LIBS) - set(ENABLE_SHARED "yes") - set(LIBCURL_NO_SHARED "") - set(CPPFLAG_CURL_STATICLIB "") -else() - set(ENABLE_SHARED "no") - set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}") - set(CPPFLAG_CURL_STATICLIB "-DCURL_STATICLIB") -endif() -if(BUILD_STATIC_LIBS) - set(ENABLE_STATIC "yes") -else() - set(ENABLE_STATIC "no") -endif() -# "a" (Linux) or "lib" (Windows) -string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}") -set(prefix "${CMAKE_INSTALL_PREFIX}") -# Set this to "yes" to append all libraries on which -lcurl is dependent -set(REQUIRE_LIB_DEPS "no") -# SUPPORT_FEATURES -# SUPPORT_PROTOCOLS -set(VERSIONNUM "${CURL_VERSION_NUM}") - -# Finally generate a "curl-config" matching this config -# Use: -# * ENABLE_SHARED -# * ENABLE_STATIC -configure_file("${CURL_SOURCE_DIR}/curl-config.in" - "${CURL_BINARY_DIR}/curl-config" @ONLY) -install(FILES "${CURL_BINARY_DIR}/curl-config" - DESTINATION ${CMAKE_INSTALL_BINDIR} - PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE) - -# Finally generate a pkg-config file matching this config -configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in" - "${CURL_BINARY_DIR}/libcurl.pc" @ONLY) -install(FILES "${CURL_BINARY_DIR}/libcurl.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - -# install headers -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl" - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - FILES_MATCHING PATTERN "*.h") - -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - "${version_config}" - VERSION ${CURL_VERSION} - COMPATIBILITY SameMajorVersion -) -file(READ "${version_config}" generated_version_config) -file(WRITE "${version_config}" -"if(NOT PACKAGE_FIND_VERSION_RANGE AND PACKAGE_FIND_VERSION_MAJOR STREQUAL \"7\") - # Version 8 satisfies version 7... requirements - set(PACKAGE_FIND_VERSION_MAJOR 8) - set(PACKAGE_FIND_VERSION_COUNT 1) -endif() -${generated_version_config}" -) + # "a" (Linux) or "lib" (Windows) + string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(prefix "${CMAKE_INSTALL_PREFIX}") + # Set this to "yes" to append all libraries on which -lcurl is dependent + set(REQUIRE_LIB_DEPS "no") + # SUPPORT_FEATURES + # SUPPORT_PROTOCOLS + set(VERSIONNUM "${CURL_VERSION_NUM}") + + # Finally generate a "curl-config" matching this config + # Use: + # * ENABLE_SHARED + # * ENABLE_STATIC + configure_file("${CURL_SOURCE_DIR}/curl-config.in" + "${CURL_BINARY_DIR}/curl-config" @ONLY) + install(FILES "${CURL_BINARY_DIR}/curl-config" + DESTINATION ${CMAKE_INSTALL_BINDIR} + PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + + # Finally generate a pkg-config file matching this config + configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in" + "${CURL_BINARY_DIR}/libcurl.pc" @ONLY) + install(FILES "${CURL_BINARY_DIR}/libcurl.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + + # install headers + install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING PATTERN "*.h") + + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + "${version_config}" + VERSION ${CURL_VERSION} + COMPATIBILITY SameMajorVersion + ) + file(READ "${version_config}" generated_version_config) + file(WRITE "${version_config}" + "if(NOT PACKAGE_FIND_VERSION_RANGE AND PACKAGE_FIND_VERSION_MAJOR STREQUAL \"7\") + # Version 8 satisfies version 7... requirements + set(PACKAGE_FIND_VERSION_MAJOR 8) + set(PACKAGE_FIND_VERSION_COUNT 1) + endif() + ${generated_version_config}" + ) -# Use: -# * TARGETS_EXPORT_NAME -# * PROJECT_NAME -configure_package_config_file(CMake/curl-config.cmake.in - "${project_config}" - INSTALL_DESTINATION ${CURL_INSTALL_CMAKE_DIR} -) + # Use: + # * TARGETS_EXPORT_NAME + # * PROJECT_NAME + configure_package_config_file(CMake/curl-config.cmake.in + "${project_config}" + INSTALL_DESTINATION ${CURL_INSTALL_CMAKE_DIR} + ) + + if(CURL_ENABLE_EXPORT_TARGET) + install( + EXPORT "${TARGETS_EXPORT_NAME}" + NAMESPACE "${PROJECT_NAME}::" + DESTINATION ${CURL_INSTALL_CMAKE_DIR} + ) + endif() -if(CURL_ENABLE_EXPORT_TARGET) install( - EXPORT "${TARGETS_EXPORT_NAME}" - NAMESPACE "${PROJECT_NAME}::" + FILES ${version_config} ${project_config} DESTINATION ${CURL_INSTALL_CMAKE_DIR} ) -endif() - -install( - FILES ${version_config} ${project_config} - DESTINATION ${CURL_INSTALL_CMAKE_DIR} -) -# Workaround for MSVS10 to avoid the Dialog Hell -# FIXME: This could be removed with future version of CMake. -if(MSVC_VERSION EQUAL 1600) - set(CURL_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CURL.sln") - if(EXISTS "${CURL_SLN_FILENAME}") - file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n") + # Workaround for MSVS10 to avoid the Dialog Hell + # FIXME: This could be removed with future version of CMake. + if(MSVC_VERSION EQUAL 1600) + set(CURL_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CURL.sln") + if(EXISTS "${CURL_SLN_FILENAME}") + file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n") + endif() endif() -endif() -if(NOT TARGET curl_uninstall) - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake - IMMEDIATE @ONLY) + if(NOT TARGET curl_uninstall) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake + IMMEDIATE @ONLY) - add_custom_target(curl_uninstall - COMMAND ${CMAKE_COMMAND} -P - ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake) + add_custom_target(curl_uninstall + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake) + endif() endif() diff --git a/external/curl/Makefile.am b/external/curl/Makefile.am index 6c780a849..c8afcb505 100644 --- a/external/curl/Makefile.am +++ b/external/curl/Makefile.am @@ -53,27 +53,6 @@ CMAKE_DIST = \ CMake/Utilities.cmake \ CMakeLists.txt -VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl -VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist -VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc -VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl -VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist -VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc - -VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl -VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist -VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc -VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl -VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist -VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc - -VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl -VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist -VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc -VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl -VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist -VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc - VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc @@ -88,6 +67,13 @@ VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc +VC14_20_LIBTMPL = projects/Windows/VC14.20/lib/libcurl.tmpl +VC14_20_LIBVCXPROJ = projects/Windows/VC14.20/lib/libcurl.vcxproj.dist +VC14_20_LIBVCXPROJ_DEPS = $(VC14_20_LIBTMPL) Makefile.am lib/Makefile.inc +VC14_20_SRCTMPL = projects/Windows/VC14.20/src/curl.tmpl +VC14_20_SRCVCXPROJ = projects/Windows/VC14.20/src/curl.vcxproj.dist +VC14_20_SRCVCXPROJ_DEPS = $(VC14_20_SRCTMPL) Makefile.am src/Makefile.inc + VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc @@ -99,21 +85,6 @@ VC_DIST = projects/README.md \ projects/build-openssl.bat \ projects/build-wolfssl.bat \ projects/checksrc.bat \ - projects/Windows/VC10/curl-all.sln \ - projects/Windows/VC10/lib/libcurl.sln \ - projects/Windows/VC10/lib/libcurl.vcxproj.filters \ - projects/Windows/VC10/src/curl.sln \ - projects/Windows/VC10/src/curl.vcxproj.filters \ - projects/Windows/VC11/curl-all.sln \ - projects/Windows/VC11/lib/libcurl.sln \ - projects/Windows/VC11/lib/libcurl.vcxproj.filters \ - projects/Windows/VC11/src/curl.sln \ - projects/Windows/VC11/src/curl.vcxproj.filters \ - projects/Windows/VC12/curl-all.sln \ - projects/Windows/VC12/lib/libcurl.sln \ - projects/Windows/VC12/lib/libcurl.vcxproj.filters \ - projects/Windows/VC12/src/curl.sln \ - projects/Windows/VC12/src/curl.vcxproj.filters \ projects/Windows/VC14/curl-all.sln \ projects/Windows/VC14/lib/libcurl.sln \ projects/Windows/VC14/lib/libcurl.vcxproj.filters \ @@ -124,6 +95,11 @@ VC_DIST = projects/README.md \ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \ projects/Windows/VC14.10/src/curl.sln \ projects/Windows/VC14.10/src/curl.vcxproj.filters \ + projects/Windows/VC14.20/curl-all.sln \ + projects/Windows/VC14.20/lib/libcurl.sln \ + projects/Windows/VC14.20/lib/libcurl.vcxproj.filters \ + projects/Windows/VC14.20/src/curl.sln \ + projects/Windows/VC14.20/src/curl.vcxproj.filters \ projects/Windows/VC14.30/curl-all.sln \ projects/Windows/VC14.30/lib/libcurl.sln \ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \ @@ -151,8 +127,7 @@ EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat \ libcurl.def -CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \ - $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \ +CLEANFILES = $(VC14_LIBVCXPROJ) \ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ) @@ -300,10 +275,9 @@ checksrc: .PHONY: vc-ide -vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \ - $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \ - $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \ - $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \ +vc-ide: $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \ + $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \ + $(VC14_20_LIBVCXPROJ_DEPS) $(VC14_20_SRCVCXPROJ_DEPS) \ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS) @(win32_lib_srcs='$(LIB_CFILES)'; \ win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \ @@ -465,55 +439,7 @@ function gen_element(type, dir, file)\ printf("%s\r\n", $$0);\ }';\ \ - echo "generating '$(VC10_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC10_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC12_LIBVCXPROJ)'"; \ + echo "generating '$(VC14_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ -v lib_hdrs="$$sorted_lib_hdrs" \ @@ -526,18 +452,18 @@ function gen_element(type, dir, file)\ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC12_SRCVCXPROJ)'"; \ + echo "generating '$(VC14_SRCVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v src_srcs="$$sorted_src_srcs" \ -v src_hdrs="$$sorted_src_hdrs" \ -v src_rc="$$win32_src_rc" \ -v src_x_srcs="$$sorted_src_x_srcs" \ -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_LIBVCXPROJ)'"; \ + echo "generating '$(VC14_10_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ -v lib_hdrs="$$sorted_lib_hdrs" \ @@ -550,18 +476,18 @@ function gen_element(type, dir, file)\ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_SRCVCXPROJ)'"; \ + echo "generating '$(VC14_10_SRCVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v src_srcs="$$sorted_src_srcs" \ -v src_hdrs="$$sorted_src_hdrs" \ -v src_rc="$$win32_src_rc" \ -v src_x_srcs="$$sorted_src_x_srcs" \ -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_10_LIBVCXPROJ)'"; \ + echo "generating '$(VC14_20_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ -v lib_hdrs="$$sorted_lib_hdrs" \ @@ -574,17 +500,16 @@ function gen_element(type, dir, file)\ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_20_LIBTMPL) > $(VC14_20_LIBVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_10_SRCVCXPROJ)'"; \ + echo "generating '$(VC14_20_SRCVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v src_srcs="$$sorted_src_srcs" \ -v src_hdrs="$$sorted_src_hdrs" \ -v src_rc="$$win32_src_rc" \ -v src_x_srcs="$$sorted_src_x_srcs" \ -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \ - \ + "$$awk_code" $(srcdir)/$(VC14_20_SRCTMPL) > $(VC14_20_SRCVCXPROJ) || { exit 1; };) \ echo "generating '$(VC14_30_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ diff --git a/external/curl/Makefile.in b/external/curl/Makefile.in index 4d84af5f7..59519f7b2 100644 --- a/external/curl/Makefile.in +++ b/external/curl/Makefile.in @@ -585,24 +585,6 @@ CMAKE_DIST = \ CMake/Utilities.cmake \ CMakeLists.txt -VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl -VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist -VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc -VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl -VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist -VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc -VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl -VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist -VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc -VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl -VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist -VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc -VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl -VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist -VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc -VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl -VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist -VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc @@ -615,6 +597,12 @@ VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc +VC14_20_LIBTMPL = projects/Windows/VC14.20/lib/libcurl.tmpl +VC14_20_LIBVCXPROJ = projects/Windows/VC14.20/lib/libcurl.vcxproj.dist +VC14_20_LIBVCXPROJ_DEPS = $(VC14_20_LIBTMPL) Makefile.am lib/Makefile.inc +VC14_20_SRCTMPL = projects/Windows/VC14.20/src/curl.tmpl +VC14_20_SRCVCXPROJ = projects/Windows/VC14.20/src/curl.vcxproj.dist +VC14_20_SRCVCXPROJ_DEPS = $(VC14_20_SRCTMPL) Makefile.am src/Makefile.inc VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc @@ -625,21 +613,6 @@ VC_DIST = projects/README.md \ projects/build-openssl.bat \ projects/build-wolfssl.bat \ projects/checksrc.bat \ - projects/Windows/VC10/curl-all.sln \ - projects/Windows/VC10/lib/libcurl.sln \ - projects/Windows/VC10/lib/libcurl.vcxproj.filters \ - projects/Windows/VC10/src/curl.sln \ - projects/Windows/VC10/src/curl.vcxproj.filters \ - projects/Windows/VC11/curl-all.sln \ - projects/Windows/VC11/lib/libcurl.sln \ - projects/Windows/VC11/lib/libcurl.vcxproj.filters \ - projects/Windows/VC11/src/curl.sln \ - projects/Windows/VC11/src/curl.vcxproj.filters \ - projects/Windows/VC12/curl-all.sln \ - projects/Windows/VC12/lib/libcurl.sln \ - projects/Windows/VC12/lib/libcurl.vcxproj.filters \ - projects/Windows/VC12/src/curl.sln \ - projects/Windows/VC12/src/curl.vcxproj.filters \ projects/Windows/VC14/curl-all.sln \ projects/Windows/VC14/lib/libcurl.sln \ projects/Windows/VC14/lib/libcurl.vcxproj.filters \ @@ -650,6 +623,11 @@ VC_DIST = projects/README.md \ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \ projects/Windows/VC14.10/src/curl.sln \ projects/Windows/VC14.10/src/curl.vcxproj.filters \ + projects/Windows/VC14.20/curl-all.sln \ + projects/Windows/VC14.20/lib/libcurl.sln \ + projects/Windows/VC14.20/lib/libcurl.vcxproj.filters \ + projects/Windows/VC14.20/src/curl.sln \ + projects/Windows/VC14.20/src/curl.vcxproj.filters \ projects/Windows/VC14.30/curl-all.sln \ projects/Windows/VC14.30/lib/libcurl.sln \ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \ @@ -677,8 +655,7 @@ EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat \ libcurl.def -CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \ - $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \ +CLEANFILES = $(VC14_LIBVCXPROJ) \ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ) @@ -1086,6 +1063,7 @@ CURL_CFILES = \ tool_help.c \ tool_helpers.c \ tool_hugehelp.c \ + tool_ipfs.c \ tool_libinfo.c \ tool_listhelp.c \ tool_main.c \ @@ -1129,6 +1107,7 @@ CURL_HFILES = \ tool_help.h \ tool_helpers.h \ tool_hugehelp.h \ + tool_ipfs.h \ tool_libinfo.h \ tool_main.h \ tool_msgs.h \ @@ -1829,10 +1808,9 @@ checksrc: .PHONY: vc-ide -vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \ - $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \ - $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \ - $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \ +vc-ide: $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \ + $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \ + $(VC14_20_LIBVCXPROJ_DEPS) $(VC14_20_SRCVCXPROJ_DEPS) \ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS) @(win32_lib_srcs='$(LIB_CFILES)'; \ win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \ @@ -1994,55 +1972,7 @@ function gen_element(type, dir, file)\ printf("%s\r\n", $$0);\ }';\ \ - echo "generating '$(VC10_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC10_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC12_LIBVCXPROJ)'"; \ + echo "generating '$(VC14_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ -v lib_hdrs="$$sorted_lib_hdrs" \ @@ -2055,18 +1985,18 @@ function gen_element(type, dir, file)\ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC12_SRCVCXPROJ)'"; \ + echo "generating '$(VC14_SRCVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v src_srcs="$$sorted_src_srcs" \ -v src_hdrs="$$sorted_src_hdrs" \ -v src_rc="$$win32_src_rc" \ -v src_x_srcs="$$sorted_src_x_srcs" \ -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_LIBVCXPROJ)'"; \ + echo "generating '$(VC14_10_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ -v lib_hdrs="$$sorted_lib_hdrs" \ @@ -2079,18 +2009,18 @@ function gen_element(type, dir, file)\ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_SRCVCXPROJ)'"; \ + echo "generating '$(VC14_10_SRCVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v src_srcs="$$sorted_src_srcs" \ -v src_hdrs="$$sorted_src_hdrs" \ -v src_rc="$$win32_src_rc" \ -v src_x_srcs="$$sorted_src_x_srcs" \ -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_10_LIBVCXPROJ)'"; \ + echo "generating '$(VC14_20_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ -v lib_hdrs="$$sorted_lib_hdrs" \ @@ -2103,17 +2033,16 @@ function gen_element(type, dir, file)\ -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \ + "$$awk_code" $(srcdir)/$(VC14_20_LIBTMPL) > $(VC14_20_LIBVCXPROJ) || { exit 1; }; \ \ - echo "generating '$(VC14_10_SRCVCXPROJ)'"; \ + echo "generating '$(VC14_20_SRCVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v src_srcs="$$sorted_src_srcs" \ -v src_hdrs="$$sorted_src_hdrs" \ -v src_rc="$$win32_src_rc" \ -v src_x_srcs="$$sorted_src_x_srcs" \ -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \ - \ + "$$awk_code" $(srcdir)/$(VC14_20_SRCTMPL) > $(VC14_20_SRCVCXPROJ) || { exit 1; };) \ echo "generating '$(VC14_30_LIBVCXPROJ)'"; \ awk -v proj_type=vcxproj \ -v lib_srcs="$$sorted_lib_srcs" \ diff --git a/external/curl/RELEASE-NOTES b/external/curl/RELEASE-NOTES index 0b331a484..3f7dc99f6 100644 --- a/external/curl/RELEASE-NOTES +++ b/external/curl/RELEASE-NOTES @@ -1,155 +1,206 @@ -curl and libcurl 8.4.0 +curl and libcurl 8.5.0 - Public curl releases: 252 + Public curl releases: 253 Command line options: 258 curl_easy_setopt() options: 303 Public functions in libcurl: 93 - Contributors: 2995 + Contributors: 3039 This release includes the following changes: - o curl: add support for the IPFS protocols via HTTP gateway [46] - o curl_multi_get_handles: get easy handles from a multi handle [20] - o mingw: delete support for legacy mingw.org toolchain [45] + o gnutls: support CURLSSLOPT_NATIVE_CA [31] + o HTTP3: ngtcp2 builds are no longer experimental [77] This release includes the following bugfixes: - o acinclude.m4: Document proper system truststore on FreeBSD [83] - o appveyor: fix yamlint issues, indent [67] - o appveyor: rewrite batch in PowerShell + CI improvements [109] - o autotools: adjust `CURL_CA_PATH` value to CMake [53] - o autotools: restore `HAVE_IOCTL_*` detections [111] - o base64: also build for curl [78] - o bufq: remove Curl_bufq_skip_and_shift (unused) [47] - o build: delete checks for C89 standard headers [65] - o build: do not publish `HAVE_BORINGSSL`, `HAVE_AWSLC` macros [114] - o cf-socket: simulate slow/blocked receives in debug [120] - o cmake, configure: also link with CoreServices [32] - o cmake: add check for suseconds_t [91] - o cmake: add feature checks for `memrchr` and `getifaddrs` [57] - o cmake: add missing checks [86] - o cmake: delete old `HAVE_LDAP_URL_PARSE` logic [105] - o cmake: detect `HAVE_CLOCK_GETTIME_MONOTONIC_RAW` [75] - o cmake: detect `HAVE_GETADDRINFO_THREADSAFE` [76] - o cmake: detect `sys/wait.h` and `netinet/udp.h` [61] - o cmake: detect TLS-SRP in OpenSSL/wolfSSL/GnuTLS [93] - o cmake: disable unity mode with Windows Unicode + TrackMemory [108] - o cmake: fix `HAVE_LDAP_SSL`, `HAVE_LDAP_URL_PARSE` on non-Windows [110] - o cmake: fix `HAVE_WRITABLE_ARGV` detection [77] - o cmake: fix duplicate symbols when linking tests [73] - o cmake: fix missing `zlib.h` when compiling `libcurltool` [72] - o cmake: fix stderr initialization in unity builds [71] - o cmake: fix the help text to the static build option in CMakeLists.txt [10] - o cmake: fix unity builds for more build combinations [96] - o cmake: fix unity symbol collisions in h2 builds [48] - o cmake: fix unity with Windows Unicode + TrackMemory [107] - o cmake: improve OpenLDAP builds [92] - o cmake: lib `CURL_STATICLIB` fixes (Windows) [74] - o cmake: move global headers to specific checks [58] - o cmake: pre-cache `HAVE_BASENAME` for mingw-w64 and MSVC [85] - o cmake: pre-cache `HAVE_POLL_FINE` on Windows [36] - o cmake: tidy-up `NOT_NEED_LBER_H` detection - o cmake: validate `CURL_DEFAULT_SSL_BACKEND` config value [50] - o configure: check for the capath by default [63] - o configure: remove unused checks [87] - o configure: replace adhoc domain with `localhost` in tests [79] - o configure: sort AC_CHECK_FUNCS - o connect: expire the timeout when trying next [54] - o connect: only start the happy eyeballs timer when needed [95] - o cookie: do not store the expire or max-age strings [16] - o cookie: remove unnecessary struct fields [17] - o cookie: set ->running in cookie_init even if data is NULL [5] - o create-dirs.d: clarify it also uses --output-dirs [66] - o curl.h: mark CURLSSLBACKEND_NSS as deprecated since 8.3.0 [18] - o curl_easy_pause.3: mention h2/h3 buffering [113] - o curl_easy_pause.3: mention it works within callbacks [112] - o curl_easy_pause: set "in callback" true on exit if true [100] - o CURLOPT_DEBUGFUNCTION.3: warn about internal handles [122] - o docs/libcurl/opts/Makefile.inc: add missing manpage files - o docs: adapt SEE ALSO sections to new requirements [52] - o docs: explain how PINNEDPUBLICKEY is independent of VERIFYPEER [68] - o docs: replace made up domains with example.com [82] - o docs: update curl man page references [89] - o docs: use CURLSSLBACKEND_NONE [19] - o doh: inherit DEBUGFUNCTION/DATA [12] - o escape: replace Curl_isunreserved with ISUNRESERVED [2] - o FAQ: How do I upgrade curl.exe in Windows? [84] - o GHA/linux: run singleuse to detect single-use global functions [35] - o GHA: add workflow to compare configure vs cmake outputs [102] - o h2-proxy: remove left-over mistake in drain_tunnel() [7] - o h2: testcase and fix for pausing h2 streams [49] - o h3: add support for ngtcp2 with AWS-LC builds [103] - o http2: refused stream handling for retry [121] - o http: fix CURL_DISABLE_BEARER_AUTH breakage [28] - o http: h1/h2 proxy unification [21] - o http: remove wrong comment for http_should_fail [55] - o http: use per-request counter to check too large headers [6] - o http_aws_sigv4: fix sorting with empty parts [13] - o idn: fix WinIDN null ptr deref on bad host [90] - o idn: if idn2_check_version returns NULL, return error [27] - o inet_ntop: add typecast to silence Coverity [51] - o lib: disambiguate Curl_client_write flag semantics [24] - o lib: enable hmac for digest as well [26] - o lib: failf/infof compiler warnings [8] - o lib: let the max filesize option stop too big transfers too [44] - o lib: move handling of `data->req.writer_stack` into Curl_client_write() [97] - o lib: provide and use Curl_hexencode [62] - o lib: remove TIME_WITH_SYS_TIME [88] - o lib: use wrapper for curl_mime_data fseek callback [30] - o libssh2: fix error message on failed pubkey-from-file [22] - o libssh: cap SFTP packet size sent [14] - o Makefile.mk: always set `CURL_STATICLIB` for lib (Windows) [42] - o MANUAL.md: change domain to example.com [11] - o misc: better random strings [15] - o MQTT: improve receive of ACKs [125] - o multi: do CURLM_CALL_MULTI_PERFORM at two more places [99] - o multi: fix small timeouts [70] - o multi: remove Curl_multi_dump [37] - o multi: round the timeout up to prevent early wakeups [98] - o multi: set CURLM_CALL_MULTI_PERFORM after switch to DOING_MORE [115] - o openssl: improve ssl shutdown handling [69] - o openssl: use X509_ALGOR_get0 instead of reaching into X509_ALGOR [104] - o pytest: exclude test_03_goaway in CI runs due to timing dependency [23] - o quic: set ciphers/curves the same way regular TLS does [43] - o quiche: fix build error with --with-ca-fallback [1] - o RELEASE-PROCEDURE.md: updated coming release dates - o runtests: display the test status if tests appear hung [81] - o runtests: eliminate a warning on old perl versions - o socks: return error if hostname too long for remote resolve [118] - o src/mkhelp: make generated code pass `checksrc` [59] - o test1056: disable on Windows - o test1474: disable test on NetBSD, OpenBSD and Solaris 10 [31] - o test1592: greatly increase the maximum test timeout - o test1903: actually verify the cookies after the test [116] - o test1906: set a lower timeout since it's hit on Windows [117] - o test2600: remove special case handling for USE_ALARM_TIMEOUT [3] - o test650: fix an end tag typo - o test661: return from test early in case of curl error - o test: add missing s - o tests: close the shell used to start sshd [41] - o tests: fix a race condition in ftp server disconnect [101] - o tests: fix compiler warnings [38] - o tests: Fix zombie processes left behind by FTP tests. [80] - o tests: improve SLOWDOWN test reliability by reducing sent data - o tests: increase lib571 timeout from 3s to 30s [106] - o tests: log the test result code after each libtest - o tests: propagate errors in libtests - o tests: set --expect100-timeout to improve test reliability - o tests: show which curl tool `runtests.pl` is using [60] - o tests: stop overriding the lock timeout - o tftpd: always use curl's own tftp.h [25] - o tool: use our own stderr variable [94] - o tool_cb_wrt: fix debug assertion [4] - o tool_getparam: accept variable expansion on file names too [123] - o tool_setopt: remove unused function tool_setopt_flags [56] - o upload-file.d: describe the file name slash/backslash handling [9] - o url: fall back to http/https proxy env-variable if ws/wss not set [119] - o url: fix netrc info message [39] - o warnless: remove unused functions [33] - o wolfssh: do cleanup in Curl_ssh_cleanup [40] - o wolfssl: allow capath with CURLOPT_CAINFO_BLOB [29] - o wolfssl: if CURLOPT_CAINFO_BLOB is set, ignore the CA files [34] - o wolfssl: ignore errors in CA path [64] + o appveyor: make VS2008-built curl tool runnable [93] + o asyn-thread: use pipe instead of socketpair for IPC when available [4] + o autotools: accept linker flags via `CURL_LDFLAGS_{LIB,BIN}` [128] + o autotools: avoid passing `LDFLAGS` twice to libcurl [127] + o autotools: delete LCC compiler support bits [137] + o autotools: fix/improve gcc and Apple clang version detection [136] + o autotools: stop setting `-std=gnu89` with `--enable-warnings` [135] + o autotools: update references to deleted `crypt-auth` option [46] + o BINDINGS: add V binding [54] + o build: add `src/.checksrc` to source tarball [1] + o build: add more picky warnings and fix them [172] + o build: always revert `#pragma GCC diagnostic` after use [143] + o build: delete `HAVE_STDINT_H` and `HAVE_INTTYPES_H` [107] + o build: delete support bits for obsolete Windows compilers [106] + o build: fix 'threadsafe' feature detection for older gcc [19] + o build: fix builds that disable protocols but not digest auth [174] + o build: fix compiler warning with auths disabled [85] + o build: fix libssh2 + `CURL_DISABLE_DIGEST_AUTH` + `CURL_DISABLE_AWS` [120] + o build: picky warning updates [125] + o build: require Windows XP or newer [86] + o cfilter: provide call to tell connection to forget a socket [65] + o checksrc.pl: support #line instructions + o CI: add autotools, out-of-tree, debug build to distro check job [14] + o CI: ignore test 286 on Appveyor gcc 9 build [6] + o cmake: add `CURL_DISABLE_BINDLOCAL` option [146] + o cmake: add test for `DISABLE` options, add `CURL_DISABLE_HEADERS_API` [138] + o cmake: dedupe Windows system libs [114] + o cmake: fix `HAVE_H_ERRNO_ASSIGNABLE` detection [2] + o cmake: fix CURL_DISABLE_GETOPTIONS [12] + o cmake: fix multiple include of CURL package [96] + o cmake: fix OpenSSL quic detection in quiche builds [56] + o cmake: option to disable install & drop `curlu` target when unused [72] + o cmake: pre-fill rest of detection values for Windows [50] + o cmake: replace `check_library_exists_concat()` [23] + o cmake: speed up threads setup for Windows [68] + o cmake: speed up zstd detection [69] + o config-win32: set `HAVE_SNPRINTF` for mingw-w64 [123] + o configure: better --disable-http [80] + o configure: check for the fseeko declaration too [55] + o conncache: use the closure handle when disconnecting surplus connections [173] + o content_encoding: make Curl_all_content_encodings allocless [101] + o cookie: lowercase the domain names before PSL checks [160] + o curl.h: delete Symbian OS references [162] + o curl.h: on FreeBSD include sys/param.h instead of osreldate.h [21] + o curl.rc: switch out the copyright symbol for plain ASCII [167] + o curl: improved IPFS and IPNS URL support [87] + o curl_easy_duphandle.3: clarify how HSTS and alt-svc are duped [99] + o Curl_http_body: cleanup properly when Curl_getformdata errors [152] + o curl_setup: disallow Windows IPv6 builds missing getaddrinfo [57] + o curl_sspi: support more revocation error names in error messages [95] + o CURLINFO_PRETRANSFER_TIME_T.3: fix time explanation [181] + o CURLMOPT_MAX_CONCURRENT_STREAMS: make sure the set value is within range [165] + o CURLOPT_CAINFO_BLOB.3: explain what CURL_BLOB_COPY does [113] + o CURLOPT_WRITEFUNCTION.3: clarify libcurl returns for CURL_WRITEFUNC_ERROR [45] + o CURPOST_POSTFIELDS.3: add CURLOPT_COPYPOSTFIELDS in SEE ALSO + o docs/example/keepalive.c: show TCP keep-alive options [73] + o docs/example/localport.c: show off CURLOPT_LOCALPORT [83] + o docs/examples/interface.c: show CURLOPT_INTERFACE use [84] + o docs/libcurl: fix three minor man page format mistakes [26] + o docs/libcurl: SYNSOPSIS cleanup [150] + o docs: add supported version for the json write-out [92] + o docs: clarify that curl passes on input unfiltered [47] + o docs: fix function typo in curl_easy_option_next.3 [36] + o docs: KNOWN_BUGS cleanup + o docs: make all examples in all libcurl man pages compile [175] + o docs: preserve the modification date when copying the prebuilt man page [89] + o docs: remove bold from some man page SYNOPSIS sections [90] + o docs: use SOURCE_DATE_EPOCH for generated manpages [16] + o doh: provide better return code for responses w/o addresses [133] + o doh: use PIPEWAIT when HTTP/2 is attempted [63] + o duphandle: also free 'outcurl->cookies' in error path [122] + o duphandle: make dupset() not return with pointers to old alloced data [109] + o duphandle: use strdup to clone *COPYPOSTFIELDS if size is not set [132] + o easy: in duphandle, init the cookies for the new handle [131] + o easy: remove duplicate wolfSSH init call [37] + o easy_lock: add a pthread_mutex_t fallback [13] + o examples/rtsp-options.c: add [157] + o fopen: create new file using old file's mode [153] + o fopen: create short(er) temporary file name [155] + o getenv: PlayStation doesn't have getenv() [41] + o GHA: move mod_h2 version in CI to v2.0.25 [43] + o hostip: show the list of IPs when resolving is done [35] + o hostip: silence compiler warning `-Wparentheses-equality` [62] + o hsts: skip single-dot hostname [67] + o HTTP/2, HTTP/3: handle detach of onoing transfers [134] + o http2: header conversion tightening [33] + o http2: provide an error callback and failf the message [53] + o http2: safer invocation of populate_binsettings [8] + o http: allow longer HTTP/2 request method names [112] + o http: avoid Expect: 100-continue if Upgrade: is used [15] + o http: consider resume with CURLOPT_FAILONERRROR and 416 to be fine [81] + o http: fix `-Wunused-parameter` with no auth and no proxy [149] + o http: fix `-Wunused-variable` compiler warning [115] + o http: fix empty-body warning [76] + o http_aws_sigv4: canonicalise valueless query params [88] + o hyper: temporarily remove HTTP/2 support [139] + o INSTALL: update list of ports and CPU archs + o IPFS: fix IPFS_PATH and file parsing [119] + o keylog: disable if unused [145] + o lib: add and use Curl_strndup() [97] + o lib: apache style infof and trace macros/functions [71] + o lib: fix gcc warning in printf call [7] + o libcurl-errors.3: sync with current public headers [156] + o libcurl-thread.3: simplify the TLS section [79] + o Makefile.am: drop vc10, vc11 and vc12 projects from dist [103] + o Makefile.mk: fix `-rtmp` option for non-Windows + o mime: store "form escape" as a single bit [170] + o misc: fix -Walloc-size warnings [118] + o msh3: error when built with CURL_DISABLE_SOCKETPAIR set [61] + o multi: during ratelimit multi_getsock should return no sockets [182] + o multi: use pipe instead of socketpair to *wakeup() [18] + o ngtcp2: fix races in stream handling [178] + o ngtcp2: ignore errors on unknown streams [158] + o ntlm_wb: use pipe instead of socketpair when possible [44] + o openldap: move the alloc of ldapconninfo to *connect() [29] + o openldap: set the callback argument in oldap_do [30] + o openssl: avoid BN_num_bits() NULL pointer derefs [9] + o openssl: fix building with v3 `no-deprecated` + add CI test [161] + o openssl: fix infof() to avoid compiler warning for %s with null [70] + o openssl: identify the "quictls" backend correctly [82] + o openssl: include SIG and KEM algorithms in verbose [52] + o openssl: make CURLSSLOPT_NATIVE_CA import Windows intermediate CAs [58] + o openssl: two multi pointer checks should probably rather be asserts [91] + o openssl: when a session-ID is reused, skip OCSP stapling [142] + o page-footer: clarify exit code 25 [51] + o projects: add VC14.20 project files [104] + o pytest: use lower count in repeat tests [98] + o quic: make eyeballers connect retries stop at weird replies [140] + o quic: manage connection idle timeouts [5] + o quiche: use quiche_conn_peer_transport_params() [116] + o rand: fix build error with autotools + LibreSSL [111] + o resolve.d: drop a multi use-sentence [100] + o RTSP: improved RTP parser [32] + o rustls: implement connect_blocking [154] + o sasl: fix `-Wunused-function` compiler warning [124] + o schannel: add CA cache support for files and memory blobs [121] + o setopt: check CURLOPT_TFTP_BLKSIZE range on set [171] + o setopt: remove outdated cookie comment [64] + o setopt: remove superfluous use of ternary expressions [169] + o socks: better buffer size checks for socks4a user and hostname [20] + o socks: make SOCKS5 use the CURLOPT_IPRESOLVE choice [38] + o symbols-in-versions: the CLOSEPOLICY options are deprecated + o test1683: remove commented-out check alternatives + o test3103: add missing quotes around a test tag attribute + o test613: stop showing an error on missing output file + o tests/README: SOCKS tests are not using OpenSSH, it has its own server [48] + o tests/server: add more SOCKS5 handshake error checking [27] + o tests: Fix Windows test helper tool search & use it for handle64 [17] + o tidy-up: casing typos, delete unused Windows version aliases [144] + o tool: fix --capath when proxy support is disabled [28] + o tool: support bold headers in Windows [117] + o tool_cb_hdr: add an additional parsing check [129] + o tool_cb_prg: make the carriage return fit for wide progress bars [159] + o tool_cb_wrt: fix write output for very old Windows versions [24] + o tool_getparam: limit --rate to be smaller than number of ms [3] + o tool_operate: do not mix memory models [108] + o tool_operate: fix links in ipfs errors [22] + o tool_parsecfg: make warning output propose double-quoting [164] + o tool_urlglob: fix build for old gcc versions [25] + o tool_urlglob: make multiply() bail out on negative values [11] + o tool_writeout_json: fix JSON encoding of non-ascii bytes [179] + o transfer: abort pause send when connection is marked for closing [183] + o transfer: avoid calling the read callback again after EOF [130] + o transfer: only reset the FTP wildcard engine in CLEAR state [42] + o url: don't touch the multi handle when closing internal handles [40] + o url: find scheme with a "perfect hash" [141] + o url: fix `-Wzero-length-array` with no protocols [147] + o url: fix builds with `CURL_DISABLE_HTTP` [148] + o url: protocol handler lookup tidy-up [66] + o url: proxy ssl connection reuse fix [94] + o urlapi: avoid null deref if setting blank host to url encode [75] + o urlapi: skip appending NULL pointer query [74] + o urlapi: when URL encoding the fragment, pass in the right length [59] + o urldata: make maxconnects a 32 bit value [166] + o urldata: move async resolver state from easy handle to connectdata [34] + o urldata: move cookielist from UserDefined to UrlState [126] + o urldata: move hstslist from 'set' to 'state' [105] + o urldata: move the 'internal' boolean to the state struct [39] + o vssh: remove the #ifdef for Curl_ssh_init, use empty macro + o vtls: cleanup SSL config management [78] + o vtls: consistently use typedef names for OpenSSL structs [176] + o vtls: late clone of connection ssl config [60] + o vtls: use ALPN "http/1.1" for HTTP/1.x, including HTTP/1.0 [102] + o VULN-DISCLOSURE-POLICY: escape sequences are not a security flaw [110] + o windows: use built-in `_WIN32` macro to detect Windows [163] + o wolfssh: remove redundant static prototypes [168] + o wolfssl: add default case for wolfssl_connect_step1 switch [49] + o wolfssl: require WOLFSSL_SYS_CA_CERTS for loading system CA [10] This release includes the following known bugs: @@ -164,143 +215,204 @@ Planned upcoming removals include: This release would not have looked like this without help, code, reports and advice from friends like these: - Aleksander Mazur, black-desk on github, calvin2021y on github, - Christian Schmitz, Christian Weisgerber, claudiusaiz on github, - consulion on github, Craig Andrews, Dan Fandrich, Daniel Stenberg, - David Benjamin, Douglas R. Reno, Eduard Strehlau, Elliot Killick, - Gisle Vanem, Hakan Sunay Halil, Harry Sintonen, Jakub Jelen, John Haugabook, - Joshix-1 on github, Juliusz Sosinowicz, Junho Choi, - Karthikdasari0423 on github, Lars Francke, Loïc Yhuel, Marc Hörsken, - Mark Gaiser, Mathias Fuchs, Maxim Dzhura, Michael Osipov, Natanael Copa, - Patrick Monnerat, PBudmark on github, Peter Wang, Philip Heiduck, Ray Satiro, - Robert Simpson, Ryan Schmidt, s0urc3_ on hackerone, Samuel Henrique, - Stefan Eissing, Ted Lyngmo, Viktor Szakats, vvb2060, w0x42 on hackerone, - 南宫雪珊 - (46 contributors) + 12932 on github, Alex Bozarth, Alexey Larikov, Alex Klyubin, Ammar Faizi, + Andrew Kurushin, Anubhav Rai, boilingoden, calvin2021y on github, + Carlos Henrique Lima Melara, Casey Bodley, Charlie C, Dan Fandrich, + Daniel Jeliński, Daniel Stenberg, David Benjamin, David Suter, Dmitry Karpov, + eeverettrbx on github, Emanuele Torre, Enno Boland, enWILLYado on github, + Faraz Fallahi, Gisle Vanem, Goro FUJI, Graham Campbell, Harry Mallon, + Harry Sintonen, iconoclasthero, icy17 on github, Jacob Hoffman-Andrews, + Jan Alexander Steffens, Jeroen Ooms, Jiehong on github, Jiri Hruska, + Junho Choi, Kai Pastor, Kareem, Kartatz on Github, kirbyn17 on hackerone, + Lau, lkordos on github, Loïc Yhuel, LoRd_MuldeR, lRoccoon on github, + Maksymilian Arciemowicz, Manfred Schwarb, Marcel Raad, Marcin Rataj, + Mark Gaiser, Martin Schmatz, Michael Kaufmann, Michał Antoniak, Nico Rieck, + Niracler Li, ohyeaah on github, Ophir Lojkine, Paweł Wegner, Philip Heiduck, + Ray Satiro, rilysh, Robert Southee, Romain Geissler, Sam James, + Samuel Henrique, sd0 on hackerone, Smackd0wn, Sohom Datta, Stefan Eissing, + Steven Allen, Tim Hill, Torben Dury, Turiiya, Viktor Szakats, + yushicheng7788 on github, z2_, zhengqwe on github, 積丹尼 Dan Jacobson + (78 contributors) References to bug reports and discussions on issues: - [1] = https://curl.se/bug/?i=11850 - [2] = https://curl.se/bug/?i=11846 - [3] = https://curl.se/bug/?i=11767 - [4] = https://github.com/curl/curl/commit/af3f4e41#r127212213 - [5] = https://curl.se/bug/?i=11875 - [6] = https://curl.se/bug/?i=11871 - [7] = https://curl.se/bug/?i=11877 - [8] = https://curl.se/bug/?i=11874 - [9] = https://curl.se/bug/?i=11911 - [10] = https://curl.se/bug/?i=11843 - [11] = https://curl.se/bug/?i=11866 - [12] = https://curl.se/bug/?i=11864 - [13] = https://curl.se/bug/?i=11855 - [14] = https://curl.se/bug/?i=11804 - [15] = https://curl.se/bug/?i=11838 - [16] = https://curl.se/bug/?i=11862 - [17] = https://curl.se/bug/?i=11862 - [18] = https://curl.se/bug/?i=11905 - [19] = https://curl.se/bug/?i=11909 - [20] = https://curl.se/bug/?i=11750 - [21] = https://curl.se/bug/?i=11808 - [22] = https://curl.se/bug/?i=11837 - [23] = https://curl.se/bug/?i=11860 - [24] = https://curl.se/bug/?i=11885 - [25] = https://curl.se/bug/?i=11897 - [26] = https://curl.se/bug/?i=11890 - [27] = https://curl.se/bug/?i=11898 - [28] = https://curl.se/bug/?i=11892 - [29] = https://curl.se/bug/?i=11886 - [30] = https://curl.se/bug/?i=11882 - [31] = https://curl.se/bug/?i=11888 - [32] = https://curl.se/bug/?i=11893 - [33] = https://curl.se/bug/?i=11932 - [34] = https://curl.se/bug/?i=11884 - [35] = https://curl.se/bug/?i=11932 - [36] = https://curl.se/bug/?i=12003 - [37] = https://curl.se/bug/?i=11931 - [38] = https://curl.se/bug/?i=11925 - [39] = https://curl.se/bug/?i=11904 - [40] = https://curl.se/bug/?i=11921 - [41] = https://curl.se/bug/?i=12032 - [42] = https://curl.se/bug/?i=11924 - [43] = https://curl.se/bug/?i=11796 - [44] = https://curl.se/bug/?i=11810 - [45] = https://curl.se/bug/?i=11625 - [46] = https://curl.se/bug/?i=8805 - [47] = https://curl.se/bug/?i=11915 - [48] = https://curl.se/bug/?i=11912 - [49] = https://curl.se/bug/?i=11982 - [50] = https://curl.se/bug/?i=11998 - [51] = https://curl.se/bug/?i=11960 - [52] = https://curl.se/bug/?i=11957 - [53] = https://curl.se/bug/?i=11997 - [54] = https://curl.se/bug/?i=11920 - [55] = https://curl.se/bug/?i=11941 - [56] = https://curl.se/bug/?i=11943 - [57] = https://curl.se/bug/?i=11954 - [58] = https://curl.se/bug/?i=11951 - [59] = https://curl.se/bug/?i=11955 - [60] = https://curl.se/bug/?i=11953 - [61] = https://curl.se/bug/?i=11996 - [62] = https://curl.se/bug/?i=11990 - [63] = https://curl.se/bug/?i=11987 - [64] = https://curl.se/bug/?i=11987 - [65] = https://curl.se/bug/?i=11940 - [66] = https://curl.se/bug/?i=11991 - [67] = https://curl.se/bug/?i=11994 - [68] = https://curl.se/bug/?i=2935 - [69] = https://curl.se/bug/?i=11858 - [70] = https://curl.se/bug/?i=11937 - [71] = https://curl.se/bug/?i=11929 - [72] = https://curl.se/bug/?i=11927 - [73] = https://curl.se/bug/?i=11926 - [74] = https://curl.se/bug/?i=11914 - [75] = https://curl.se/bug/?i=11981 - [76] = https://curl.se/bug/?i=11979 - [77] = https://curl.se/bug/?i=11978 - [78] = https://curl.se/bug/?i=12010 - [79] = https://curl.se/bug/?i=11988 - [80] = https://curl.se/bug/?i=12018 - [81] = https://curl.se/bug/?i=11980 - [82] = https://curl.se/bug/?i=11986 - [83] = https://curl.se/bug/?i=11985 - [84] = https://curl.se/bug/?i=11984 - [85] = https://curl.se/bug/?i=11974 - [86] = https://curl.se/bug/?i=11973 - [87] = https://curl.se/bug/?i=11973 - [88] = https://curl.se/bug/?i=11975 - [89] = https://curl.se/bug/?i=11963 - [90] = https://curl.se/bug/?i=11983 - [91] = https://curl.se/bug/?i=11977 - [92] = https://curl.se/bug/?i=12024 - [93] = https://curl.se/bug/?i=11967 - [94] = https://curl.se/bug/?i=11958 - [95] = https://curl.se/bug/?i=11939 - [96] = https://curl.se/bug/?i=12027 - [97] = https://curl.se/bug/?i=11908 - [98] = https://curl.se/bug/?i=11938 - [99] = https://curl.se/bug/?i=12033 - [100] = https://curl.se/bug/?i=12059 - [101] = https://curl.se/bug/?i=12002 - [102] = https://curl.se/bug/?i=11964 - [103] = https://curl.se/bug/?i=12066 - [104] = https://curl.se/bug/?i=12038 - [105] = https://curl.se/bug/?i=12015 - [106] = https://curl.se/bug/?i=12013 - [107] = https://curl.se/bug/?i=11928 - [108] = https://curl.se/bug/?i=12005 - [109] = https://curl.se/bug/?i=11999 - [110] = https://curl.se/bug/?i=12006 - [111] = https://curl.se/bug/?i=12008 - [112] = https://curl.se/mail/lib-2023-10/0010.html - [113] = https://curl.se/bug/?i=12045 - [114] = https://curl.se/bug/?i=12065 - [115] = https://curl.se/bug/?i=12042 - [116] = https://curl.se/bug/?i=12041 - [117] = https://curl.se/bug/?i=12036 - [118] = https://curl.se/docs/CVE-2023-38545.html - [119] = https://curl.se/bug/?i=12031 - [120] = https://curl.se/bug/?i=12035 - [121] = https://curl.se/bug/?i=12054 - [122] = https://curl.se/bug/?i=12034 - [123] = https://curl.se/bug/?i=12048 - [125] = https://curl.se/bug/?i=12071 + [1] = https://curl.se/bug/?i=12084 + [2] = https://curl.se/bug/?i=12093 + [3] = https://curl.se/bug/?i=12116 + [4] = https://curl.se/bug/?i=12146 + [5] = https://curl.se/bug/?i=12064 + [6] = https://curl.se/bug/?i=12040 + [7] = https://curl.se/bug/?i=12082 + [8] = https://curl.se/bug/?i=12101 + [9] = https://curl.se/bug/?i=12099 + [10] = https://curl.se/bug/?i=12108 + [11] = https://curl.se/bug/?i=12102 + [12] = https://curl.se/bug/?i=12091 + [13] = https://curl.se/bug/?i=12090 + [14] = https://curl.se/bug/?i=12088 + [15] = https://curl.se/bug/?i=12022 + [16] = https://curl.se/bug/?i=12092 + [17] = https://curl.se/bug/?i=12115 + [18] = https://curl.se/bug/?i=12142 + [19] = https://curl.se/bug/?i=12125 + [20] = https://curl.se/bug/?i=12139 + [21] = https://curl.se/bug/?i=12107 + [22] = https://curl.se/bug/?i=12133 + [23] = https://curl.se/bug/?i=11285 + [24] = https://curl.se/bug/?i=12131 + [25] = https://curl.se/bug/?i=12124 + [26] = https://curl.se/bug/?i=12126 + [27] = https://curl.se/bug/?i=12117 + [28] = https://curl.se/bug/?i=12089 + [29] = https://curl.se/bug/?i=12166 + [30] = https://curl.se/bug/?i=12166 + [31] = https://curl.se/bug/?i=12137 + [32] = https://curl.se/bug/?i=12052 + [33] = https://curl.se/bug/?i=12097 + [34] = https://curl.se/bug/?i=12198 + [35] = https://curl.se/bug/?i=12145 + [36] = https://curl.se/bug/?i=12170 + [37] = https://curl.se/bug/?i=12168 + [38] = https://curl.se/bug/?i=11949 + [39] = https://curl.se/bug/?i=12165 + [40] = https://curl.se/bug/?i=12165 + [41] = https://curl.se/bug/?i=12140 + [42] = https://curl.se/bug/?i=11775 + [43] = https://curl.se/bug/?i=12157 + [44] = https://curl.se/bug/?i=12149 + [45] = https://curl.se/bug/?i=12201 + [46] = https://curl.se/bug/?i=12194 + [47] = https://curl.se/bug/?i=12249 + [48] = https://curl.se/bug/?i=12195 + [49] = https://curl.se/bug/?i=12218 + [50] = https://curl.se/bug/?i=12044 + [51] = https://curl.se/bug/?i=12189 + [52] = https://curl.se/bug/?i=12030 + [53] = https://curl.se/bug/?i=12179 + [54] = https://curl.se/bug/?i=12182 + [55] = https://curl.se/bug/?i=12086 + [56] = https://curl.se/bug/?i=12160 + [57] = https://curl.se/bug/?i=12221 + [58] = https://curl.se/bug/?i=12155 + [59] = https://curl.se/bug/?i=12250 + [60] = https://curl.se/bug/?i=12237 + [61] = https://curl.se/bug/?i=12213 + [62] = https://curl.se/bug/?i=12215 + [63] = https://curl.se/bug/?i=12214 + [64] = https://curl.se/bug/?i=12206 + [65] = https://curl.se/bug/?i=12207 + [66] = https://curl.se/bug/?i=12216 + [67] = https://curl.se/bug/?i=12247 + [68] = https://curl.se/bug/?i=12202 + [69] = https://curl.se/bug/?i=12200 + [70] = https://curl.se/bug/?i=12196 + [71] = https://curl.se/bug/?i=12083 + [72] = https://curl.se/bug/?i=12287 + [73] = https://curl.se/bug/?i=12242 + [74] = https://curl.se/bug/?i=12240 + [75] = https://curl.se/bug/?i=12240 + [76] = https://curl.se/bug/?i=12262 + [77] = https://curl.se/bug/?i=12235 + [78] = https://curl.se/bug/?i=12204 + [79] = https://curl.se/bug/?i=12233 + [80] = https://curl.se/bug/?i=12223 + [81] = https://curl.se/bug/?i=10521 + [82] = https://curl.se/bug/?i=12270 + [83] = https://curl.se/bug/?i=12230 + [84] = https://curl.se/bug/?i=12229 + [85] = https://curl.se/bug/?i=12227 + [86] = https://curl.se/bug/?i=12225 + [87] = https://curl.se/bug/?i=12148 + [88] = https://curl.se/bug/?i=8107 + [89] = https://curl.se/bug/?i=12199 + [90] = https://curl.se/bug/?i=12267 + [91] = https://curl.se/bug/?i=12264 + [92] = https://curl.se/bug/?i=12266 + [93] = https://curl.se/bug/?i=12263 + [94] = https://curl.se/bug/?i=12255 + [95] = https://curl.se/bug/?i=12239 + [96] = https://curl.se/bug/?i=11913 + [97] = https://curl.se/bug/?i=12251 + [98] = https://curl.se/bug/?i=12248 + [99] = https://curl.se/bug/?i=12315 + [100] = https://curl.se/bug/?i=12294 + [101] = https://curl.se/bug/?i=12289 + [102] = https://curl.se/bug/?i=12259 + [103] = https://curl.se/bug/?i=12288 + [104] = https://curl.se/bug/?i=12282 + [105] = https://curl.se/bug/?i=12315 + [106] = https://curl.se/bug/?i=12222 + [107] = https://curl.se/bug/?i=12275 + [108] = https://curl.se/bug/?i=12280 + [109] = https://curl.se/bug/?i=12337 + [110] = https://curl.se/bug/?i=12278 + [111] = https://curl.se/bug/?i=12257 + [112] = https://curl.se/bug/?i=12311 + [113] = https://curl.se/bug/?i=12277 + [114] = https://curl.se/bug/?i=12307 + [115] = https://curl.se/bug/?i=12228 + [116] = https://curl.se/bug/?i=12180 + [117] = https://curl.se/bug/?i=12321 + [118] = https://curl.se/bug/?i=12292 + [119] = https://curl.se/bug/?i=12152 + [120] = https://curl.se/bug/?i=12273 + [121] = https://curl.se/bug/?i=12261 + [122] = https://curl.se/bug/?i=12329 + [123] = https://curl.se/bug/?i=12325 + [124] = https://curl.se/bug/?i=12326 + [125] = https://curl.se/bug/?i=12324 + [126] = https://curl.se/bug/?i=12323 + [127] = https://curl.se/bug/?i=12310 + [128] = https://curl.se/bug/?i=12312 + [129] = https://curl.se/bug/?i=12320 + [130] = https://curl.se/mail/lib-2023-11/0017.html + [131] = https://curl.se/bug/?i=12318 + [132] = https://curl.se/bug/?i=12317 + [133] = https://curl.se/bug/?i=12365 + [134] = https://curl.se/bug/?i=12356 + [135] = https://curl.se/bug/?i=12346 + [136] = https://curl.se/bug/?i=12362 + [137] = https://curl.se/bug/?i=12357 + [138] = https://curl.se/bug/?i=12353 + [139] = https://curl.se/bug/?i=12191 + [140] = https://curl.se/bug/?i=12400 + [141] = https://curl.se/bug/?i=12347 + [142] = https://curl.se/bug/?i=12399 + [143] = https://curl.se/bug/?i=12352 + [144] = https://curl.se/bug/?i=12351 + [145] = https://curl.se/bug/?i=12350 + [146] = https://curl.se/bug/?i=12345 + [147] = https://curl.se/bug/?i=12344 + [148] = https://curl.se/bug/?i=12343 + [149] = https://curl.se/bug/?i=12338 + [150] = https://curl.se/bug/?i=12402 + [152] = https://curl.se/bug/?i=12410 + [153] = https://curl.se/bug/?i=12299 + [154] = https://curl.se/bug/?i=11647 + [155] = https://curl.se/bug/?i=12388 + [156] = https://curl.se/bug/?i=12424 + [157] = https://curl.se/bug/?i=12452 + [158] = https://curl.se/bug/?i=12449 + [159] = https://curl.se/bug/?i=12407 + [160] = https://curl.se/bug/?i=12387 + [161] = https://curl.se/bug/?i=12384 + [162] = https://curl.se/bug/?i=12378 + [163] = https://curl.se/bug/?i=12376 + [164] = https://curl.se/bug/?i=12409 + [165] = https://curl.se/bug/?i=12382 + [166] = https://curl.se/bug/?i=12375 + [167] = https://curl.se/bug/?i=12403 + [168] = https://curl.se/bug/?i=12381 + [169] = https://curl.se/bug/?i=12374 + [170] = https://curl.se/bug/?i=12374 + [171] = https://curl.se/bug/?i=12374 + [172] = https://curl.se/bug/?i=12331 + [173] = https://curl.se/bug/?i=12367 + [174] = https://curl.se/bug/?i=12440 + [175] = https://curl.se/bug/?i=12448 + [176] = https://curl.se/bug/?i=12439 + [178] = https://curl.se/bug/?i=12435 + [179] = https://curl.se/bug/?i=12434 + [181] = https://curl.se/bug/?i=12431 + [182] = https://curl.se/bug/?i=12430 + [183] = https://curl.se/bug/?i=12428 diff --git a/external/curl/acinclude.m4 b/external/curl/acinclude.m4 index 5fdd51e52..ac026e39d 100644 --- a/external/curl/acinclude.m4 +++ b/external/curl/acinclude.m4 @@ -705,10 +705,10 @@ AC_DEFUN([TYPE_SOCKADDR_STORAGE], #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -743,10 +743,10 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H @@ -794,10 +794,10 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H @@ -841,10 +841,10 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -886,10 +886,10 @@ AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #endif #ifdef HAVE_SYS_TYPES_H #include @@ -941,10 +941,10 @@ AC_DEFUN([TYPE_IN_ADDR_T], [ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -983,10 +983,10 @@ AC_DEFUN([TYPE_IN_ADDR_T], [ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -1298,10 +1298,10 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #endif #ifdef HAVE_SYS_TYPES_H #include @@ -1374,70 +1374,6 @@ int main() ]) -dnl CURL_CHECK_VARIADIC_MACROS -dnl ------------------------------------------------- -dnl Check compiler support of variadic macros - -AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [ - AC_CACHE_CHECK([for compiler support of C99 variadic macro style], - [curl_cv_variadic_macros_c99], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) -#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - ]],[[ - int res3 = c99_vmacro3(1, 2, 3); - int res2 = c99_vmacro2(1, 2); - ]]) - ],[ - curl_cv_variadic_macros_c99="yes" - ],[ - curl_cv_variadic_macros_c99="no" - ]) - ]) - case "$curl_cv_variadic_macros_c99" in - yes) - AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_C99, 1, - [Define to 1 if compiler supports C99 variadic macro style.]) - ;; - esac - AC_CACHE_CHECK([for compiler support of old gcc variadic macro style], - [curl_cv_variadic_macros_gcc], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#define gcc_vmacro3(first, args...) fun3(first, args) -#define gcc_vmacro2(first, args...) fun2(first, args) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - ]],[[ - int res3 = gcc_vmacro3(1, 2, 3); - int res2 = gcc_vmacro2(1, 2); - ]]) - ],[ - curl_cv_variadic_macros_gcc="yes" - ],[ - curl_cv_variadic_macros_gcc="no" - ]) - ]) - case "$curl_cv_variadic_macros_gcc" in - yes) - AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_GCC, 1, - [Define to 1 if compiler supports old gcc variadic macro style.]) - ;; - esac -]) - - dnl CURL_CHECK_CA_BUNDLE dnl ------------------------------------------------- dnl Check if a default ca-bundle should be used diff --git a/external/curl/configure b/external/curl/configure index 04d1de146..2bd4ff283 100755 --- a/external/curl/configure +++ b/external/curl/configure @@ -6677,7 +6677,7 @@ curl_headers_msg="enabled (--disable-headers-api)" curl_ws_msg="no (--enable-websockets)" ssl_backends= curl_h1_msg="enabled (internal)" - curl_h2_msg="no (--with-nghttp2, --with-hyper)" + curl_h2_msg="no (--with-nghttp2)" curl_h3_msg="no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-msh3)" enable_altsvc="yes" @@ -17684,7 +17684,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler version" >&5 +printf %s "checking compiler version... " >&6; } compiler_num="$curl_cv_def___INTEL_COMPILER" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Intel C '$compiler_num'" >&5 +printf "%s\n" "Intel C '$compiler_num'" >&6; } OLDCPPFLAGS=$CPPFLAGS # CPPPFLAG comes from CURL_CPP_P @@ -17855,18 +17859,41 @@ printf "%s\n" "yes" >&6; } printf "%s\n" "no" >&6; } compiler_id="CLANG" fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler version" >&5 +printf %s "checking compiler version... " >&6; } fullclangver=`$CC -v 2>&1 | grep version` + if echo $fullclangver | grep 'Apple' >/dev/null; then + appleclang=1 + else + appleclang=0 + fi clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \([0-9]*\.[0-9]*\).*)/\1/'` if test -z "$clangver"; then - if echo $fullclangver | grep "Apple LLVM version " >/dev/null; then - clangver="3.7" - else - clangver=`echo $fullclangver | "$SED" 's/.*version \([0-9]*\.[0-9]*\).*/\1/'` - fi + clangver=`echo $fullclangver | "$SED" 's/.*version \([0-9]*\.[0-9]*\).*/\1/'` + oldapple=0 + else + oldapple=1 fi clangvhi=`echo $clangver | cut -d . -f1` clangvlo=`echo $clangver | cut -d . -f2` compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null` + if test "$appleclang" = '1' && test "$oldapple" = '0'; then + if test "$compiler_num" -ge '1300'; then compiler_num='1200' + elif test "$compiler_num" -ge '1205'; then compiler_num='1101' + elif test "$compiler_num" -ge '1204'; then compiler_num='1000' + elif test "$compiler_num" -ge '1107'; then compiler_num='900' + elif test "$compiler_num" -ge '1103'; then compiler_num='800' + elif test "$compiler_num" -ge '1003'; then compiler_num='700' + elif test "$compiler_num" -ge '1001'; then compiler_num='600' + elif test "$compiler_num" -ge '904'; then compiler_num='500' + elif test "$compiler_num" -ge '902'; then compiler_num='400' + elif test "$compiler_num" -ge '803'; then compiler_num='309' + elif test "$compiler_num" -ge '703'; then compiler_num='308' + else compiler_num='307' + fi + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: clang '$compiler_num' (raw: '$fullclangver' / '$clangver')" >&5 +printf "%s\n" "clang '$compiler_num' (raw: '$fullclangver' / '$clangver')" >&6; } flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4" flags_opt_yes="-O2" @@ -17929,10 +17956,19 @@ rm -f conftest.err conftest.i conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } compiler_id="GNU_C" - gccver=`$CC -dumpversion` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler version" >&5 +printf %s "checking compiler version... " >&6; } + # strip '-suffix' parts, e.g. Ubuntu Windows cross-gcc returns '10-win32' + gccver=`$CC -dumpversion | sed -E 's/-.+$//'` gccvhi=`echo $gccver | cut -d . -f1` - gccvlo=`echo $gccver | cut -d . -f2` + if echo $gccver | grep -F '.' >/dev/null; then + gccvlo=`echo $gccver | cut -d . -f2` + else + gccvlo="0" + fi compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gcc '$compiler_num' (raw: '$gccver')" >&5 +printf "%s\n" "gcc '$compiler_num' (raw: '$gccver')" >&6; } flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -O3 -Os -Og -Ofast" flags_opt_yes="-O2" @@ -17988,67 +18024,6 @@ printf "%s\n" "no" >&6; } fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is LCC" >&5 -printf %s "checking if compiler is LCC... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __LCC__ -CURL_DEF_TOKEN __LCC__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__LCC__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___LCC__=no - - else - curl_cv_have_def___LCC__=yes - curl_cv_def___LCC__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___LCC__" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="LCC" - flags_dbg_yes="-g" - flags_opt_all="" - flags_opt_yes="" - flags_opt_off="" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is SGI MIPSpro C" >&5 printf %s "checking if compiler is SGI MIPSpro C... " >&6; } @@ -18519,11 +18494,6 @@ squeeze() { tmp_CFLAGS="$tmp_CFLAGS" ;; # - LCC) - # - tmp_CFLAGS="$tmp_CFLAGS -n" - ;; - # SGI_MIPS_C) # tmp_CFLAGS="$tmp_CFLAGS" @@ -19233,7 +19203,7 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} ac_var_added_warnings="" - for warning in no-multichar sign-compare; do + for warning in sign-compare; do ac_var_match_word="no" for word1 in $CFLAGS; do @@ -19251,6 +19221,7 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS + tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar" ac_var_added_warnings="" for warning in undef; do @@ -19377,10 +19348,10 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} fi # - if test "$compiler_num" -ge "208"; then + if test "$compiler_num" -ge "207"; then ac_var_added_warnings="" - for warning in vla; do + for warning in address; do ac_var_match_word="no" for word1 in $CFLAGS; do @@ -19398,12 +19369,9 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS - fi - # - if test "$compiler_num" -ge "209"; then ac_var_added_warnings="" - for warning in shift-sign-overflow; do + for warning in attributes; do ac_var_match_word="no" for word1 in $CFLAGS; do @@ -19421,9 +19389,6 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS - fi - # - if test "$compiler_num" -ge "300"; then ac_var_added_warnings="" for warning in bad-function-cast; do @@ -19448,6 +19413,26 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} ac_var_added_warnings="" for warning in conversion; do + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in div-by-zero format-security; do + ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do @@ -19486,7 +19471,47 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} ac_var_added_warnings="" - for warning in ignored-qualifiers; do + for warning in missing-field-initializers; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in missing-noreturn; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in old-style-definition; do ac_var_match_word="no" for word1 in $CFLAGS; do @@ -19505,6 +19530,27 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} squeeze tmp_CFLAGS + ac_var_added_warnings="" + for warning in redundant-decls; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case + ac_var_added_warnings="" for warning in type-limits; do @@ -19524,9 +19570,101 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" squeeze tmp_CFLAGS + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros]) # Not practical + + ac_var_added_warnings="" + for warning in unreachable-code unused-parameter; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + fi + # + if test "$compiler_num" -ge "208"; then + + ac_var_added_warnings="" + for warning in ignored-qualifiers; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in vla; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + fi + # + if test "$compiler_num" -ge "209"; then + tmp_CFLAGS="$tmp_CFLAGS -Wno-sign-conversion" ac_var_added_warnings="" - for warning in no-sign-conversion; do + for warning in shift-sign-overflow; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs + fi + # + if test "$compiler_num" -ge "300"; then + + ac_var_added_warnings="" + for warning in language-extension-token; do ac_var_match_word="no" for word1 in $CFLAGS; do @@ -19551,6 +19689,26 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} ac_var_added_warnings="" for warning in enum-conversion; do + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in sometimes-uninitialized; do + ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do @@ -19597,9 +19755,72 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} # if test "$compiler_num" -ge "304"; then + ac_var_added_warnings="" + for warning in header-guard; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + ac_var_added_warnings="" for warning in unused-const-variable; do + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + fi + # + if test "$compiler_num" -ge "305"; then + + ac_var_added_warnings="" + for warning in pragmas; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in unreachable-code-break; do + ac_var_match_word="no" for word1 in $CFLAGS; do for word2 in -Wno-$warning -W$warning; do @@ -19724,7 +19945,6 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} GNU_C) # if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -std=gnu89" # if test "x$cross_compiling" != "xyes" || test "$compiler_num" -ge "300"; then @@ -20030,6 +20250,158 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} if test "$compiler_num" -ge "400"; then tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3" fi + # + if test "$compiler_num" -ge "401"; then + + ac_var_added_warnings="" + for warning in attributes; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in div-by-zero format-security; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in missing-field-initializers; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + case $host in + *-*-msys*) + ;; + *) + + ac_var_added_warnings="" + for warning in missing-noreturn; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + # Seen to clash with libtool-generated stub code + ;; + esac + + ac_var_added_warnings="" + for warning in unreachable-code unused-parameter; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs + + ac_var_added_warnings="" + for warning in pragmas; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + + ac_var_added_warnings="" + for warning in redundant-decls; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros]) # Not practical + fi # if test "$compiler_num" -ge "402"; then @@ -20056,6 +20428,26 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} # if test "$compiler_num" -ge "403"; then + ac_var_added_warnings="" + for warning in address; do + + ac_var_match_word="no" + for word1 in $CFLAGS; do + for word2 in -Wno-$warning -W$warning; do + if test "$word1" = "$word2"; then + ac_var_match_word="yes" + fi + done + done + + if test "$ac_var_match_word" = "no"; then + ac_var_added_warnings="$ac_var_added_warnings -W$warning" + fi + done + tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" + squeeze tmp_CFLAGS + + ac_var_added_warnings="" for warning in type-limits old-style-declaration; do @@ -20448,13 +20840,6 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} tmp_CFLAGS="$tmp_CFLAGS" ;; # - LCC) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS" - fi - ;; - # SGI_MIPS_C) # if test "$want_warnings" = "yes"; then @@ -22065,7 +22450,6 @@ then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Hyper support is experimental" >&5 printf "%s\n" "$as_me: Hyper support is experimental" >&6;} curl_h1_msg="enabled (Hyper)" - curl_h2_msg=$curl_h1_msg HYPER_ENABLED=1 printf "%s\n" "#define USE_HYPER 1" >>confdefs.h @@ -22711,10 +23095,10 @@ printf %s "checking for gethostbyname in $winsock_LIB... " >&6; } #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #endif int main (void) @@ -22930,10 +23314,10 @@ curl_includes_winsock2="\ # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # endif +# include #endif /* includes end */" @@ -26090,7 +26474,7 @@ int main (void) { #if defined(AMISSL_CURRENT_VERSION) && defined(AMISSL_V3xx) && \ - defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \ + (OPENSSL_VERSION_NUMBER >= 0x30000000L) && \ defined(PROTO_AMISSL_H) return 0; #else @@ -26918,7 +27302,7 @@ printf %s "checking for OpenSSL >= v3... " >&6; } int main (void) { - #if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) + #if (OPENSSL_VERSION_NUMBER >= 0x30000000L) return 0; #else #error older than 3 @@ -31910,7 +32294,6 @@ printf "%s\n" "#define USE_NGHTTP3 1" >>confdefs.h export CURL_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&5 printf "%s\n" "$as_me: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&6;} - experimental="$experimental HTTP3" fi @@ -33771,114 +34154,6 @@ printf "%s\n" "#define const /**/" >>confdefs.h fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler support of C99 variadic macro style" >&5 -printf %s "checking for compiler support of C99 variadic macro style... " >&6; } -if test ${curl_cv_variadic_macros_c99+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) -#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - -int main (void) -{ - - int res3 = c99_vmacro3(1, 2, 3); - int res2 = c99_vmacro2(1, 2); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_variadic_macros_c99="yes" - -else $as_nop - - curl_cv_variadic_macros_c99="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_variadic_macros_c99" >&5 -printf "%s\n" "$curl_cv_variadic_macros_c99" >&6; } - case "$curl_cv_variadic_macros_c99" in - yes) - -printf "%s\n" "#define HAVE_VARIADIC_MACROS_C99 1" >>confdefs.h - - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler support of old gcc variadic macro style" >&5 -printf %s "checking for compiler support of old gcc variadic macro style... " >&6; } -if test ${curl_cv_variadic_macros_gcc+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define gcc_vmacro3(first, args...) fun3(first, args) -#define gcc_vmacro2(first, args...) fun2(first, args) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - -int main (void) -{ - - int res3 = gcc_vmacro3(1, 2, 3); - int res2 = gcc_vmacro2(1, 2); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_variadic_macros_gcc="yes" - -else $as_nop - - curl_cv_variadic_macros_gcc="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_variadic_macros_gcc" >&5 -printf "%s\n" "$curl_cv_variadic_macros_gcc" >&6; } - case "$curl_cv_variadic_macros_gcc" in - yes) - -printf "%s\n" "#define HAVE_VARIADIC_MACROS_GCC 1" >>confdefs.h - - ;; - esac - ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : @@ -33926,10 +34201,10 @@ else $as_nop #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #endif #ifdef HAVE_SYS_TYPES_H #include @@ -34694,10 +34969,10 @@ _EOF #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -34738,10 +35013,10 @@ else $as_nop #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -34803,10 +35078,10 @@ fi #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -34858,10 +35133,10 @@ printf %s "checking for select... " >&6; } #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #endif #ifdef HAVE_SYS_TYPES_H #include @@ -34943,10 +35218,10 @@ printf %s "checking for recv... " >&6; } #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H @@ -35019,10 +35294,10 @@ printf %s "checking for send... " >&6; } #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else $curl_includes_bsdsocket #ifdef HAVE_SYS_TYPES_H @@ -35099,10 +35374,10 @@ else $as_nop #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #else #ifdef HAVE_SYS_TYPES_H #include @@ -36139,13 +36414,13 @@ curl_includes_ws2tcpip="\ # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # ifdef HAVE_WS2TCPIP_H # include # endif # endif +# include #endif /* includes end */" @@ -43538,8 +43813,7 @@ fi - - for ac_func in _fseeki64 arc4random fchmod fnmatch fseeko geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe sched_yield sendmsg setlocale setmode setrlimit snprintf utime utimes + for ac_func in _fseeki64 arc4random fnmatch fseeko geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe sched_yield sendmsg setlocale setmode setrlimit snprintf utime utimes do : as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -43598,6 +43872,15 @@ fi done +ac_fn_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_fseeko" = xyes +then : + +printf "%s\n" "#define HAVE_DECL_FSEEKO 1" >>confdefs.h + +fi + # tst_method="unknown" @@ -45417,7 +45700,7 @@ if test "x$USE_TLS_SRP" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" fi -if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then +if test "x$USE_NGHTTP2" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" fi @@ -45430,19 +45713,36 @@ if test "x$CURL_WITH_MULTI_SSL" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL" fi -if test "x$https_proxy" != "xno"; then - if test "x$OPENSSL_ENABLED" = "x1" \ - -o "x$GNUTLS_ENABLED" = "x1" \ - -o "x$SECURETRANSPORT_ENABLED" = "x1" \ - -o "x$RUSTLS_ENABLED" = "x1" \ - -o "x$BEARSSL_ENABLED" = "x1" \ - -o "x$SCHANNEL_ENABLED" = "x1" \ - -o "x$GNUTLS_ENABLED" = "x1" \ - -o "x$MBEDTLS_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" - elif test "x$WOLFSSL_ENABLED" = "x1" -a "x$WOLFSSL_FULL_BIO" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if this build supports HTTPS-proxy" >&5 +printf %s "checking if this build supports HTTPS-proxy... " >&6; } +if test "x$CURL_DISABLE_HTTP" != "x1"; then + if test "x$https_proxy" != "xno"; then + if test "x$OPENSSL_ENABLED" = "x1" \ + -o "x$GNUTLS_ENABLED" = "x1" \ + -o "x$SECURETRANSPORT_ENABLED" = "x1" \ + -o "x$RUSTLS_ENABLED" = "x1" \ + -o "x$BEARSSL_ENABLED" = "x1" \ + -o "x$SCHANNEL_ENABLED" = "x1" \ + -o "x$GNUTLS_ENABLED" = "x1" \ + -o "x$MBEDTLS_ENABLED" = "x1"; then + SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + elif test "x$WOLFSSL_ENABLED" = "x1" -a "x$WOLFSSL_FULL_BIO" = "x1"; then + SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ECH_ENABLED" = "x1"; then @@ -45458,6 +45758,9 @@ fi if test "$tst_atomic" = "yes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" +elif test "x$USE_THREADS_POSIX" = "x1" -a \ + "x$ac_cv_header_pthread_h" = "xyes"; then + SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ diff --git a/external/curl/configure.ac b/external/curl/configure.ac index 2d71c838f..d9b396376 100644 --- a/external/curl/configure.ac +++ b/external/curl/configure.ac @@ -174,7 +174,7 @@ curl_headers_msg="enabled (--disable-headers-api)" curl_ws_msg="no (--enable-websockets)" ssl_backends= curl_h1_msg="enabled (internal)" - curl_h2_msg="no (--with-nghttp2, --with-hyper)" + curl_h2_msg="no (--with-nghttp2)" curl_h3_msg="no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-msh3)" enable_altsvc="yes" @@ -803,7 +803,6 @@ if test X"$want_hyper" != Xno; then experimental="$experimental Hyper" AC_MSG_NOTICE([Hyper support is experimental]) curl_h1_msg="enabled (Hyper)" - curl_h2_msg=$curl_h1_msg HYPER_ENABLED=1 AC_DEFINE(USE_HYPER, 1, [if hyper is in use]) AC_SUBST(USE_HYPER, [1]) @@ -1145,10 +1144,10 @@ then #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif -#include #ifdef HAVE_WINSOCK2_H #include #endif +#include #endif ]],[[ gethostbyname("localhost"); @@ -3099,7 +3098,6 @@ if test X"$want_nghttp3" != Xno; then 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 @@ -3418,7 +3416,6 @@ dnl default includes dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST -CURL_CHECK_VARIADIC_MACROS AC_TYPE_SIZE_T CURL_CHECK_STRUCT_TIMEVAL @@ -3581,11 +3578,9 @@ AC_CHECK_DECLS([getpwuid_r], [], [AC_DEFINE(HAVE_DECL_GETPWUID_R_MISSING, 1, "Se [[#include #include ]]) - AC_CHECK_FUNCS([\ _fseeki64 \ arc4random \ - fchmod \ fnmatch \ fseeko \ geteuid \ @@ -3628,6 +3623,15 @@ AC_CHECK_FUNCS([\ fi ]) +dnl On Android, the only way to know if fseeko can be used is to see if it is +dnl declared or not (for this API level), as the symbol always exists in the +dnl lib. +AC_CHECK_DECL([fseeko], + [AC_DEFINE([HAVE_DECL_FSEEKO], [1], + [Define to 1 if you have the fseeko declaration])], + [], + [[#include ]]) + CURL_CHECK_NONBLOCKING_SOCKET dnl ************************************************************ @@ -4570,7 +4574,7 @@ if test "x$USE_TLS_SRP" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" fi -if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then +if test "x$USE_NGHTTP2" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" fi @@ -4583,20 +4587,31 @@ if test "x$CURL_WITH_MULTI_SSL" = "x1"; then SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL" fi +AC_MSG_CHECKING([if this build supports HTTPS-proxy]) dnl if not explicitly turned off, HTTPS-proxy comes with some TLS backends -if test "x$https_proxy" != "xno"; then - if test "x$OPENSSL_ENABLED" = "x1" \ - -o "x$GNUTLS_ENABLED" = "x1" \ - -o "x$SECURETRANSPORT_ENABLED" = "x1" \ - -o "x$RUSTLS_ENABLED" = "x1" \ - -o "x$BEARSSL_ENABLED" = "x1" \ - -o "x$SCHANNEL_ENABLED" = "x1" \ - -o "x$GNUTLS_ENABLED" = "x1" \ - -o "x$MBEDTLS_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" - elif test "x$WOLFSSL_ENABLED" = "x1" -a "x$WOLFSSL_FULL_BIO" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" +if test "x$CURL_DISABLE_HTTP" != "x1"; then + if test "x$https_proxy" != "xno"; then + if test "x$OPENSSL_ENABLED" = "x1" \ + -o "x$GNUTLS_ENABLED" = "x1" \ + -o "x$SECURETRANSPORT_ENABLED" = "x1" \ + -o "x$RUSTLS_ENABLED" = "x1" \ + -o "x$BEARSSL_ENABLED" = "x1" \ + -o "x$SCHANNEL_ENABLED" = "x1" \ + -o "x$GNUTLS_ENABLED" = "x1" \ + -o "x$MBEDTLS_ENABLED" = "x1"; then + SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" + AC_MSG_RESULT([yes]) + elif test "x$WOLFSSL_ENABLED" = "x1" -a "x$WOLFSSL_FULL_BIO" = "x1"; then + SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + else + AC_MSG_RESULT([no]) fi +else + AC_MSG_RESULT([no]) fi if test "x$ECH_ENABLED" = "x1"; then @@ -4612,6 +4627,9 @@ fi if test "$tst_atomic" = "yes"; then SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" +elif test "x$USE_THREADS_POSIX" = "x1" -a \ + "x$ac_cv_header_pthread_h" = "xyes"; then + SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" else AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ diff --git a/external/curl/docs/BINDINGS.md b/external/curl/docs/BINDINGS.md index 57f87a5f8..7f5da4219 100644 --- a/external/curl/docs/BINDINGS.md +++ b/external/curl/docs/BINDINGS.md @@ -125,6 +125,8 @@ Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford, [Tcl](https://web.archive.org/web/20160826011806/mirror.yellow5.com/tclcurl/) Tclcurl by Andrés García +[Vibe](https://github.com/ttytm/vibe) HTTP requests through libcurl in V + [Visual Basic](https://sourceforge.net/projects/libcurl-vb/) libcurl-vb by Jeffrey Phillips [Visual Foxpro](https://web.archive.org/web/20130730181523/www.ctl32.com.ar/libcurl.asp) by Carlos Alloatti diff --git a/external/curl/docs/DEPRECATE.md b/external/curl/docs/DEPRECATE.md index c932fadbc..4cd5a22ce 100644 --- a/external/curl/docs/DEPRECATE.md +++ b/external/curl/docs/DEPRECATE.md @@ -6,6 +6,17 @@ email the as soon as possible and explain to us why this is a problem for you and how your use case cannot be satisfied properly using a workaround. +## NTLM_WB auth + +This NTLM authentication method is powered by a separate tool, +`ntlm_auth`. Barely anyone uses this method. It was always a quirky +implementation (including fork + exec), it has limited portability and we +don't test it in the test suite and CI. + +We keep the native NTLM implementation. + +curl will remove the support for NTLM_WB auth in June 2024. + ## space-separated `NOPROXY` patterns When specifying patterns/domain names for curl that should *not* go through a diff --git a/external/curl/docs/EXPERIMENTAL.md b/external/curl/docs/EXPERIMENTAL.md index 6b7145df6..de694013d 100644 --- a/external/curl/docs/EXPERIMENTAL.md +++ b/external/curl/docs/EXPERIMENTAL.md @@ -19,6 +19,6 @@ Experimental support in curl means: ## Experimental features right now - The Hyper HTTP backend - - HTTP/3 support and options + - HTTP/3 support (using the quiche or msh3 backends) - The rustls backend - WebSocket diff --git a/external/curl/docs/FEATURES.md b/external/curl/docs/FEATURES.md index 9f763d3a7..05364aaf3 100644 --- a/external/curl/docs/FEATURES.md +++ b/external/curl/docs/FEATURES.md @@ -12,7 +12,7 @@ ## libcurl - - full URL syntax with no length limit + - URL RFC 3986 syntax - custom maximum download time - custom least download speed acceptable - custom output result after completion diff --git a/external/curl/docs/HTTP3.md b/external/curl/docs/HTTP3.md index 41d757f05..7f2f08ada 100644 --- a/external/curl/docs/HTTP3.md +++ b/external/curl/docs/HTTP3.md @@ -9,18 +9,19 @@ book describing the protocols involved. ## QUIC libraries -QUIC libraries we are experimenting with: +QUIC libraries we are using: [ngtcp2](https://github.com/ngtcp2/ngtcp2) -[quiche](https://github.com/cloudflare/quiche) +[quiche](https://github.com/cloudflare/quiche) - **EXPERIMENTAL** -[msh3](https://github.com/nibanks/msh3) (with [msquic](https://github.com/microsoft/msquic)) +[msh3](https://github.com/nibanks/msh3) (with [msquic](https://github.com/microsoft/msquic)) - **EXPERIMENTAL** ## Experimental -HTTP/3 and QUIC support in curl is considered **EXPERIMENTAL** until further -notice. It needs to be enabled at build-time. +HTTP/3 support in curl is considered **EXPERIMENTAL** until further notice +when built to use *quiche* or *msh3*. Only the *ngtcp2* backend is not +experimental. Further development and tweaking of the HTTP/3 support in curl will happen in the master branch using pull-requests, just like ordinary changes. @@ -34,16 +35,17 @@ To fix before we remove the experimental label: Building curl with ngtcp2 involves 3 components: `ngtcp2` itself, `nghttp3` and a QUIC supporting TLS library. The supported TLS libraries are covered below. -For now, `ngtcp2` and `nghttp3` are still *experimental* which means their evolution bring breaking changes. Therefore, the proper version of both libraries need to be used when building curl. These are + * `ngtcp2`: v1.1.0 + * `nghttp3`: v1.1.0 - * `ngtcp2`: v0.19.1 - * `nghttp3`: v0.15.0 +## Build with quictls -## Build with OpenSSL +OpenSSL does not offer the required APIs for building a QUIC client. You need +to use a TLS library that has such APIs and that works with *ngtcp2*. -Build (patched) OpenSSL +Build quictls - % git clone --depth 1 -b openssl-3.0.10+quic https://github.com/quictls/openssl + % git clone --depth 1 -b openssl-3.1.4+quic https://github.com/quictls/openssl % cd openssl % ./config enable-tls1_3 --prefix= % make @@ -52,7 +54,7 @@ Build (patched) OpenSSL Build nghttp3 % cd .. - % git clone -b v0.15.0 https://github.com/ngtcp2/nghttp3 + % git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3 % cd nghttp3 % autoreconf -fi % ./configure --prefix= --enable-lib-only @@ -62,7 +64,7 @@ Build nghttp3 Build ngtcp2 % cd .. - % git clone -b v0.19.1 https://github.com/ngtcp2/ngtcp2 + % git clone -b v1.1.0 https://github.com/ngtcp2/ngtcp2 % cd ngtcp2 % autoreconf -fi % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only @@ -95,7 +97,7 @@ Build GnuTLS Build nghttp3 % cd .. - % git clone -b v0.15.0 https://github.com/ngtcp2/nghttp3 + % git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3 % cd nghttp3 % autoreconf -fi % ./configure --prefix= --enable-lib-only @@ -105,7 +107,7 @@ Build nghttp3 Build ngtcp2 % cd .. - % git clone -b v0.19.1 https://github.com/ngtcp2/ngtcp2 + % git clone -b v1.1.0 https://github.com/ngtcp2/ngtcp2 % cd ngtcp2 % autoreconf -fi % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only --with-gnutls @@ -136,7 +138,7 @@ Build wolfSSL Build nghttp3 % cd .. - % git clone -b v0.15.0 https://github.com/ngtcp2/nghttp3 + % git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3 % cd nghttp3 % autoreconf -fi % ./configure --prefix= --enable-lib-only @@ -146,7 +148,7 @@ Build nghttp3 Build ngtcp2 % cd .. - % git clone -b v0.19.1 https://github.com/ngtcp2/ngtcp2 + % git clone -b v1.1.0 https://github.com/ngtcp2/ngtcp2 % cd ngtcp2 % autoreconf -fi % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only --with-wolfssl @@ -165,6 +167,8 @@ Build curl # quiche version +quiche support is **EXPERIMENTAL** + Since the quiche build manages its dependencies, curl can be built against the latest version. You are *probably* able to build against their main branch, but in case of problems, we recommend their latest release tag. ## build @@ -195,6 +199,8 @@ Build curl: one as of September 2023. Feel free to help us test it and improve it, but there is no point in filing bugs about it just yet. +msh3 support is **EXPERIMENTAL** + ## Build Linux (with quictls fork of OpenSSL) Build msh3: diff --git a/external/curl/docs/HYPER.md b/external/curl/docs/HYPER.md index 1c3b0dded..9932c1bbf 100644 --- a/external/curl/docs/HYPER.md +++ b/external/curl/docs/HYPER.md @@ -57,6 +57,10 @@ The hyper backend does not support - leading whitespace in first HTTP/1 response header - HTTP/0.9 - HTTP/2 upgrade using HTTP:// URLs. Aka 'h2c' +- HTTP/2 in general. Hyper has support for HTTP/2 but the curl side + needs changes so that a `hyper_clientconn` can last for the duration + of a connection. Probably this means turning the Hyper HTTP/2 backend + into a connection filter. ## Remaining issues diff --git a/external/curl/docs/INSTALL.md b/external/curl/docs/INSTALL.md index 7e3a2698d..a6780b45d 100644 --- a/external/curl/docs/INSTALL.md +++ b/external/curl/docs/INSTALL.md @@ -162,6 +162,8 @@ library check. # Windows +Building for Windows XP is required as a minimum. + ## Building Windows DLLs and C runtime (CRT) linkage issues As a general rule, building a DLL with static CRT linkage is highly @@ -524,7 +526,12 @@ disabling support for some feature: - `--disable-alt-svc` (HTTP Alt-Svc) - `--disable-ares` (the C-ARES DNS library) - `--disable-cookies` (HTTP cookies) - - `--disable-crypto-auth` (cryptographic authentication) + - `--disable-basic-auth` (cryptographic authentication) + - `--disable-bearer-auth` (cryptographic authentication) + - `--disable-digest-auth` (cryptographic authentication) + - `--disable-kerberos-auth` (cryptographic authentication) + - `--disable-negotiate-auth` (cryptographic authentication) + - `--disable-aws` (cryptographic authentication) - `--disable-dateparse` (date parsing for time conditionals) - `--disable-dnsshuffle` (internal server load spreading) - `--disable-doh` (DNS-over-HTTP) @@ -589,29 +596,29 @@ that are not automatically detected: - `--disable-libcurl-option` !`--libcurl` - `--disable-verbose` !verbose\ logs -# PORTS +# Ports This is a probably incomplete list of known CPU architectures and operating systems that curl has been compiled for. If you know a system curl compiles and runs on, that is not listed, please let us know! -## 92 Operating Systems +## 101 Operating Systems - AIX, AmigaOS, Android, Aros, BeOS, Blackberry 10, Blackberry Tablet OS, - Cell OS, Chrome OS, Cisco IOS, Cygwin, DG/UX, Dragonfly BSD, DR DOS, eCOS, - FreeBSD, FreeDOS, FreeRTOS, Fuchsia, Garmin OS, Genode, Haiku, HardenedBSD, - HP-UX, Hurd, Illumos, Integrity, iOS, ipadOS, IRIX, Linux, Lua RTOS, - Mac OS 9, macOS, Mbed, Micrium, MINIX, MorphOS, MPE/iX, MS-DOS, NCR MP-RAS, - NetBSD, Netware, Nintendo Switch, NonStop OS, NuttX, Omni OS, OpenBSD, - OpenStep, Orbis OS, OS/2, OS/400, OS21, Plan 9, PlayStation Portable, QNX, - Qubes OS, ReactOS, Redox, RICS OS, RTEMS, Sailfish OS, SCO Unix, Serenity, - SINIX-Z, Solaris, SunOS, Syllable OS, Symbian, Tizen, TPF, Tru64, tvOS, - ucLinux, Ultrix, UNICOS, UnixWare, VMS, vxWorks, watchOS, WebOS, - Wii system software, Windows, Windows CE, Xbox System, Xenix, Zephyr, - z/OS, z/TPF, z/VM, z/VSE + AIX, AmigaOS, Android, ArcoOS, Aros, Atari FreeMiNT, BeOS, Blackberry 10, + Blackberry Tablet OS, Cell OS, CheriBSD, Chrome OS, Cisco IOS, DG/UX, + Dragonfly BSD, DR DOS, eCOS, FreeBSD, FreeDOS, FreeRTOS, Fuchsia, Garmin OS, + Genode, Haiku, HardenedBSD, HP-UX, Hurd, Illumos, Integrity, iOS, ipadOS, IRIX, + Linux, Lua RTOS, Mac OS 9, macOS, Mbed, Meego, Micrium, MINIX, Moblin, MorphOS, + MPE/iX, MS-DOS, NCR MP-RAS, NetBSD, Netware, NextStep, Nintendo Switch, + NonStop OS, NuttX, OpenBSD, OpenStep, Orbis OS, OS/2, OS/400, OS21, Plan 9, + PlayStation Portable, QNX, Qubes OS, ReactOS, Redox, RICS OS, ROS, RTEMS, + Sailfish OS, SCO Unix, Serenity, SINIX-Z, SkyOS, Solaris, Sortix, SunOS, + Syllable OS, Symbian, Tizen, TPF, Tru64, tvOS, ucLinux, Ultrix, UNICOS, + UnixWare, VMS, vxWorks, watchOS, Wear OS, WebOS, Wii system software, Wii U, + Windows, Windows CE, Xbox System, Xenix, Zephyr, z/OS, z/TPF, z/VM, z/VSE -## 26 CPU Architectures +## 28 CPU Architectures - Alpha, ARC, ARM, AVR32, CompactRISC, Elbrus, ETRAX, HP-PA, Itanium, + Alpha, ARC, ARM, AVR32, C-SKY, CompactRISC, Elbrus, ETRAX, HP-PA, Itanium, LoongArch, m68k, m88k, MicroBlaze, MIPS, Nios, OpenRISC, POWER, PowerPC, - RISC-V, s390, SH4, SPARC, Tilera, VAX, x86, Xtensa + RISC-V, s390, SH4, SPARC, Tilera, VAX, x86, Xtensa, z/arch diff --git a/external/curl/docs/KNOWN_BUGS b/external/curl/docs/KNOWN_BUGS index 395426b4d..e52774a15 100644 --- a/external/curl/docs/KNOWN_BUGS +++ b/external/curl/docs/KNOWN_BUGS @@ -12,7 +12,6 @@ check the changelog of the current development status, as one or more of these problems may have been fixed or changed somewhat since this was written. 1. HTTP - 1.1 hyper memory-leaks 1.2 hyper is slow 1.5 Expect-100 meets 417 @@ -102,10 +101,6 @@ problems may have been fixed or changed somewhat since this was written. 16. aws-sigv4 16.1 aws-sigv4 does not sign requests with * correctly - 16.2 aws-sigv4 does not sign requests with valueless queries correctly - 16.3 aws-sigv4 is missing the amz-content-sha256 header - 16.4 aws-sigv4 does not sort query string parameters before signing - 16.5 aws-sigv4 does not sign requests with empty URL query correctly 16.6 aws-sigv4 does not behave well with AWS VPC Lattice 17. HTTP/2 @@ -579,22 +574,6 @@ problems may have been fixed or changed somewhat since this was written. https://github.com/curl/curl/issues/7559 -16.2 aws-sigv4 does not sign requests with valueless queries correctly - - https://github.com/curl/curl/issues/8107 - -16.3 aws-sigv4 is missing the amz-content-sha256 header - - https://github.com/curl/curl/issues/8810 - -16.4 aws-sigv4 does not sort query string parameters before signing - - https://github.com/curl/curl/issues/9717 - -16.5 aws-sigv4 does not sign requests with empty URL query correctly - - https://github.com/curl/curl/issues/10129 - 16.6 aws-sigv4 does not behave well with AWS VPC Lattice https://github.com/curl/curl/issues/11007 diff --git a/external/curl/docs/Makefile.am b/external/curl/docs/Makefile.am index 5454e8330..9190b4411 100644 --- a/external/curl/docs/Makefile.am +++ b/external/curl/docs/Makefile.am @@ -111,7 +111,8 @@ SUFFIXES = .1 .html .pdf # have changed. $(abs_builddir)/curl.1: if test "$(top_builddir)x" != "$(top_srcdir)x" -a -e "$(srcdir)/curl.1"; then \ - $(INSTALL_DATA) "$(srcdir)/curl.1" $@; fi + $(INSTALL_DATA) "$(srcdir)/curl.1" $@ \ + && touch -r "$(srcdir)/curl.1" $@; fi cd cmdline-opts && $(MAKE) html: $(HTMLPAGES) diff --git a/external/curl/docs/Makefile.in b/external/curl/docs/Makefile.in index bbd080cbc..78be3afd7 100644 --- a/external/curl/docs/Makefile.in +++ b/external/curl/docs/Makefile.in @@ -921,7 +921,8 @@ uninstall-man: uninstall-man1 # have changed. $(abs_builddir)/curl.1: if test "$(top_builddir)x" != "$(top_srcdir)x" -a -e "$(srcdir)/curl.1"; then \ - $(INSTALL_DATA) "$(srcdir)/curl.1" $@; fi + $(INSTALL_DATA) "$(srcdir)/curl.1" $@ \ + && touch -r "$(srcdir)/curl.1" $@; fi cd cmdline-opts && $(MAKE) html: $(HTMLPAGES) diff --git a/external/curl/docs/THANKS b/external/curl/docs/THANKS index 0bf9474a4..88d924f63 100644 --- a/external/curl/docs/THANKS +++ b/external/curl/docs/THANKS @@ -71,6 +71,7 @@ Alessandro Vesely Alex aka WindEagle Alex Baines Alex Bligh +Alex Bozarth Alex Chan Alex Crichton Alex Fishman @@ -78,6 +79,7 @@ Alex Gaynor Alex Grebenschikov Alex Gruz Alex Kiernan +Alex Klyubin Alex Konev Alex Malinovich Alex Mayorga @@ -111,6 +113,7 @@ Alexandre Ferrieux Alexandre Pion Alexey Borzov Alexey Eremikhin +Alexey Larikov Alexey Melnichuk Alexey Pesternikov Alexey Savchuk @@ -130,6 +133,7 @@ Alona Rossen Amaury Denoyelle amishmm on github Amit Katyal +Ammar Faizi Amol Pattekar Amr Shahin Anatol Belski @@ -227,6 +231,7 @@ Antoni Villalonga Antonio Larrosa Antony74 on github Antti Hätälä +Anubhav Rai apparentorder on github April King arainchik on github @@ -349,6 +354,7 @@ Bob Schader bobmitchell1956 on github Bodo Bergmann Bogdan Nicula +boilingoden Boris Kuschel Boris Okunskiy Boris Rasin @@ -422,6 +428,7 @@ Carlo Cannas Carlo Marcelo Arenas Belón Carlo Teubner Carlo Wood +Carlos Henrique Lima Melara Carlos ORyan Carsten Lange Casey Bodley @@ -437,6 +444,7 @@ Chandrakant Bagul Charles Cazabon Charles Kerr Charles Romestant +Charlie C Chen Prog Cherish98 on github Chester Liu @@ -649,6 +657,7 @@ David Sanderson David Schweikert David Shaw David Strauss +David Suter David Tarendash David Thiel David Walser @@ -780,6 +789,7 @@ Edward Sheldrake Edward Thomson Eelco Dolstra Eetu Ojanen +eeverettrbx on github Egon Eckert Egor Pugin Ehren Bendler @@ -806,8 +816,10 @@ Emiliano Ida Emilio Cobos Álvarez Emilio López Emmanuel Tychon +Enno Boland Enrico Scholz Enrik Berkhan +enWILLYado on github eppesuig Eramoto Masaya Eric Cooper @@ -868,6 +880,7 @@ Fabrice Fontaine Fabrizio Ammollo Fahim Chandurwala Faizur Rahman +Faraz Fallahi Farzin on github Fata Nugraha Fawad Mirza @@ -1048,6 +1061,7 @@ Hao Wu Hardeep Singh Haris Okanovic Harold Stuart +Harry Mallon Harry Sarson Harry Sintonen Harshal Pradhan @@ -1103,6 +1117,8 @@ Ian Lynagh Ian Spence Ian Turner Ian Wilkes +iconoclasthero +icy17 on github Ignacio Vazquez-Abrams Igor Franchuk Igor Khristophorov @@ -1279,6 +1295,7 @@ Jesse Tan jethrogb on github jhoyla on github Jie He +Jiehong on github Jilayne Lovejoy Jim Beveridge Jim Drash @@ -1467,10 +1484,12 @@ Kane York Kang Lin Kang-Jin Lee Kantanat Wannapaka +Kareem Kari Pahula Karl Chen Karl Moerder Karol Pietrzak +Kartatz on Github Karthikdasari0423 Karthikdasari0423 on github Kartik Mahajan @@ -1512,6 +1531,7 @@ Kim Minjoong Kim Rinnewitz Kim Vandry Kimmo Kinnunen +kirbyn17 on hackerone Kirill Efimov Kirill Marchuk Kjell Ericson @@ -1570,6 +1590,7 @@ Lars J. Aas Lars Johannesen Lars Nilsson Lars Torben Wilson +Lau Laurent Bonnans Laurent Dufresne Laurent Rabret @@ -1615,15 +1636,18 @@ Litter White Liviu Chircu Liza Alenchery lizhuang0630 on github +lkordos on github lllaffer on github Lloyd Fournier Lluís Batlle i Rossell locpyl-tidnyd on github Loganaden Velvindron Loic Dachary +LoRd_MuldeR Loren Kirkby Lorenzo Miniero Loïc Yhuel +lRoccoon on github Luan Cestari Luca Altea Luca Boccassi @@ -1667,6 +1691,7 @@ Maksim Arhipov Maksim Kuzevanov Maksim Sciepanienka Maksim Stsepanenka +Maksymilian Arciemowicz Malik Idrees Hasan Khan Mamoru Tasaka Mamta Upadhyay @@ -1693,6 +1718,7 @@ Marcelo Juchem Marcin Adamski Marcin Gryszkalis Marcin Konicki +Marcin Rataj Marco Deckel Marco G. Salvagno Marco Kamner @@ -1756,6 +1782,7 @@ Martin Jansen Martin Kammerhofer Martin Kepplinger Martin Lemke +Martin Schmatz Martin Skinner Martin Staael Martin Storsjö @@ -1995,6 +2022,7 @@ Nick Zitzmann nick-telia on github Nicklas Avén Nico Baggus +Nico Rieck nico-abram on github Nicolas Berloquin Nicolas Croiset @@ -2018,6 +2046,7 @@ nimaje on github niner on github Ning Dong Nir Soffer +Niracler Li Niranjan Hasabnis Nis Jorgensen nk @@ -2037,6 +2066,7 @@ Nuru on github Octavio Schroeder odek86 on github Ofer +ohyeaah on github Okhin Vasilij Ola Mork Olaf Flebbe @@ -2063,6 +2093,7 @@ omau on github Ondřej Koláček opensignature on github opensslonzos-github on github +Ophir Lojkine Orange Tsai Oren Souroujon Oren Tirosh @@ -2346,6 +2377,7 @@ Ricky-Tigg on github Rider Linden RiderALT on github Rikard Falkeborn +rilysh rl1987 on github Rob Boeckermann Rob Cotrone @@ -2373,6 +2405,7 @@ Robert Prag Robert Ronto Robert Schumann Robert Simpson +Robert Southee Robert Weaver Robert Wruck Robin A. Meade @@ -2448,6 +2481,7 @@ Salvador Dávila Salvatore Sorrentino Sam Deane Sam Hurst +Sam James Sam Roth Sam Schanken Samanta Navarro @@ -2482,6 +2516,7 @@ Scott Barrett Scott Cantor Scott Davis Scott McCreary +sd0 on hackerone Sean Boudreau Sean Burford Sean MacLennan @@ -2559,10 +2594,12 @@ Simon Warta simplerobot on github Siva Sivaraman SLDiggie on github +Smackd0wn Smackd0wn on github smuellerDD on github sn on hackerone sofaboss on github +Sohom Datta Somnath Kundu Song Ma Sonia Subramanian @@ -2629,6 +2666,7 @@ Steve Marx Steve Oliphant Steve Roskowski Steve Walch +Steven Allen Steven Bazyl Steven G. Johnson Steven Gu @@ -2714,6 +2752,7 @@ Tim Chen Tim Costello Tim Harder Tim Heckman +Tim Hill Tim Mcdonough Tim Newsome Tim Rühsen @@ -2793,6 +2832,7 @@ tonystz on Github Toon Verwaest Tor Arntsen Torben Dannhauer +Torben Dury Torsten Foertsch Toshio Kuratomi Toshiyuki Maezawa @@ -2809,6 +2849,7 @@ Tseng Jun Tuomas Siipola Tuomo Rinne Tupone Alfredo +Turiiya Tyler Hall Török Edwin u20221022 on github @@ -2976,6 +3017,7 @@ Zhang Xiuhua zhanghu on xiaomi Zhao Yisha Zhaoyang Wu +zhengqwe on github Zhibiao Wu zhihaoy on github Zhouyihai Ding diff --git a/external/curl/docs/TODO b/external/curl/docs/TODO index f487f88aa..06162c8bb 100644 --- a/external/curl/docs/TODO +++ b/external/curl/docs/TODO @@ -122,6 +122,7 @@ 13.8 Support DANE 13.9 TLS record padding 13.10 Support Authority Information Access certificate extension (AIA) + 13.11 Some TLS options are not offered for HTTPS proxies 13.12 Reduce CA certificate bundle reparsing 13.13 Make sure we forbid TLS 1.3 post-handshake authentication 13.14 Support the clienthello extension @@ -884,6 +885,14 @@ See https://github.com/curl/curl/issues/2793 +13.11 Some TLS options are not offered for HTTPS proxies + + Some TLS related options to the command line tool and libcurl are only + provided for the server and not for HTTPS proxies. --proxy-tls-max, + --proxy-tlsv1.3, --proxy-curves and a few more.a + + https://github.com/curl/curl/issues/12286 + 13.12 Reduce CA certificate bundle reparsing When using the OpenSSL backend, curl will load and reparse the CA bundle at diff --git a/external/curl/docs/VULN-DISCLOSURE-POLICY.md b/external/curl/docs/VULN-DISCLOSURE-POLICY.md index 3ce220329..650599348 100644 --- a/external/curl/docs/VULN-DISCLOSURE-POLICY.md +++ b/external/curl/docs/VULN-DISCLOSURE-POLICY.md @@ -59,8 +59,7 @@ announcement. [SECURITY-ADVISORY](https://curl.se/dev/advisory.html) for help on creating the advisory. -- Request a CVE number from - [HackerOne](https://docs.hackerone.com/programs/cve-requests.html) +- Request a CVE number from HackerOne - Update the "security advisory" with the CVE number. @@ -283,3 +282,12 @@ and if an attacker can trick the user to run a specifically crafted curl command line, all bets are off. Such an attacker can just as well have the user run a much worse command that can do something fatal (like `sudo rm -rf /`). + +## Terminal output and escape sequences + +Content that is transferred from a server and gets displayed in a terminal by +curl may contain escape sequences or use other tricks to fool the user. This +is curl working as designed and is not a curl security problem. Escape +sequences, moving cursor, changing color etc, is also frequently used for +good. To reduce the risk of getting fooled, save files and browse them after +download using a display method that minimizes risks. diff --git a/external/curl/docs/cmdline-opts/gen.pl b/external/curl/docs/cmdline-opts/gen.pl index 8b9b98bb2..edf90622b 100755 --- a/external/curl/docs/cmdline-opts/gen.pl +++ b/external/curl/docs/cmdline-opts/gen.pl @@ -48,8 +48,14 @@ my %catlong; use POSIX qw(strftime); -my $date = strftime "%B %d %Y", localtime; -my $year = strftime "%Y", localtime; +my @ts; +if (defined($ENV{SOURCE_DATE_EPOCH})) { + @ts = localtime($ENV{SOURCE_DATE_EPOCH}); +} else { + @ts = localtime; +} +my $date = strftime "%B %d %Y", @ts; +my $year = strftime "%Y", @ts; my $version = "unknown"; my $globals; diff --git a/external/curl/docs/cmdline-opts/header.d b/external/curl/docs/cmdline-opts/header.d index f5b768552..95c1565e8 100644 --- a/external/curl/docs/cmdline-opts/header.d +++ b/external/curl/docs/cmdline-opts/header.d @@ -34,7 +34,8 @@ with no-value then its header must be terminated with a semicolon, such as \-H curl makes sure that each header you add/replace is sent with the proper end-of-line marker, you should thus **not** add that as a part of the header content: do not add newlines or carriage returns, they only mess things up for -you. +you. curl passes on the verbatim string you give it without any filter or +other safe guards. That includes white space and control characters. This option can take an argument in @filename style, which then adds a header for each line in the input file. Using @- makes curl read the header file from diff --git a/external/curl/docs/cmdline-opts/ipfs-gateway.d b/external/curl/docs/cmdline-opts/ipfs-gateway.d index 5d5f8b2d4..e6845b327 100644 --- a/external/curl/docs/cmdline-opts/ipfs-gateway.d +++ b/external/curl/docs/cmdline-opts/ipfs-gateway.d @@ -9,36 +9,24 @@ Category: ipfs Example: --ipfs-gateway $URL ipfs:// Multi: single --- -Specifies which gateway to use for IPFS and IPNS URLs. -Not specifying this argument will let cURL try to automatically -check if IPFS_GATEWAY environment variable is set, -or if ~/.ipfs/gateway plain text file exists. +Specify which gateway to use for IPFS and IPNS URLs. Not specifying this will +instead make curl check if the IPFS_GATEWAY environment variable is set, or if +a ~/.ipfs/gateway file holding the gateway URL exists. -If you run a local IPFS node, this gateway is by default -available under http://localhost:8080. A full example URL would -look like: +If you run a local IPFS node, this gateway is by default available under +http://localhost:8080. A full example URL would look like: curl --ipfs-gateway http://localhost:8080 ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi - -You can also specify publicly available gateways. One such -gateway is https://ipfs.io. A full example url would look like: - - curl --ipfs-gateway https://ipfs.io ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi - - -There are many public IPFS gateways. As a starting point to find -one that works for your case, consult this page: +There are many public IPFS gateways. See for example: https://ipfs.github.io/public-gateway-checker/ - -A word of caution! When you opt to go for a remote gateway you should -be aware that you completely trust the gateway. This is fine in local gateways -as you host it yourself. With remote gateways there could potentially be -a malicious actor returning you data that does not match the request you made, -inspect or even interfere with the request. You won't notice this when using cURL. -A mitigation could be to go for a "trustless" gateway. This means you -locally verify that the data. Consult the docs page on trusted vs trustless: +WARNING: If you opt to go for a remote gateway you should be aware that you +completely trust the gateway. This is fine in local gateways as you host it +yourself. With remote gateways there could potentially be a malicious actor +returning you data that does not match the request you made, inspect or even +interfere with the request. You will not notice this when using curl. A +mitigation could be to go for a "trustless" gateway. This means you locally +verify that the data. Consult the docs page on trusted vs trustless: https://docs.ipfs.tech/reference/http/gateway/#trusted-vs-trustless - diff --git a/external/curl/docs/cmdline-opts/page-footer b/external/curl/docs/cmdline-opts/page-footer index beae49ac1..af41c9482 100644 --- a/external/curl/docs/cmdline-opts/page-footer +++ b/external/curl/docs/cmdline-opts/page-footer @@ -173,8 +173,8 @@ appears if --fail is used. .IP 23 Write error. Curl could not write data to a local filesystem or similar. .IP 25 -FTP could not STOR file. The server denied the STOR operation, used for FTP -uploading. +Failed starting the upload. For FTP, the server typically denied the STOR +command. .IP 26 Read error. Various reading problems. .IP 27 diff --git a/external/curl/docs/cmdline-opts/request-target.d b/external/curl/docs/cmdline-opts/request-target.d index 61ead5f2b..be53c658c 100644 --- a/external/curl/docs/cmdline-opts/request-target.d +++ b/external/curl/docs/cmdline-opts/request-target.d @@ -14,3 +14,6 @@ Tells curl to use an alternative "target" (path) instead of using the path as provided in the URL. Particularly useful when wanting to issue HTTP requests without leading slash or other data that does not follow the regular URL pattern, like "OPTIONS *". + +curl passes on the verbatim string you give it its the request without any +filter or other safe guards. That includes white space and control characters. diff --git a/external/curl/docs/cmdline-opts/request.d b/external/curl/docs/cmdline-opts/request.d index 0020babf9..6afd53564 100644 --- a/external/curl/docs/cmdline-opts/request.d +++ b/external/curl/docs/cmdline-opts/request.d @@ -12,6 +12,9 @@ See-also: request-target Multi: single --- Change the method to use when starting the transfer. + +curl passes on the verbatim string you give it its the request without any +filter or other safe guards. That includes white space and control characters. .RS .TP 15 **HTTP** diff --git a/external/curl/docs/cmdline-opts/resolve.d b/external/curl/docs/cmdline-opts/resolve.d index 31dd099a2..badb54e45 100644 --- a/external/curl/docs/cmdline-opts/resolve.d +++ b/external/curl/docs/cmdline-opts/resolve.d @@ -37,5 +37,3 @@ Support for providing multiple IP addresses per entry was added in 7.59.0. Support for resolving with wildcard was added in 7.64.0. Support for the '+' prefix was was added in 7.75.0. - -This option can be used many times to add many host names to resolve. diff --git a/external/curl/docs/cmdline-opts/write-out.d b/external/curl/docs/cmdline-opts/write-out.d index b2ac2ec06..e069afcf1 100644 --- a/external/curl/docs/cmdline-opts/write-out.d +++ b/external/curl/docs/cmdline-opts/write-out.d @@ -91,7 +91,7 @@ curl CONNECT request. (Added in 7.12.4) The http version that was effectively used. (Added in 7.50.0) .TP **json** -A JSON object with all available keys. +A JSON object with all available keys. (Added in 7.70.0) .TP **local_ip** The IP address of the local end of the most recently done connection - can be diff --git a/external/curl/docs/curl-config.1 b/external/curl/docs/curl-config.1 index a0dbe02e7..7c1144851 100644 --- a/external/curl/docs/curl-config.1 +++ b/external/curl/docs/curl-config.1 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl-config 1 "April 26, 2023" "url-config 8.4.0" curl-config +.TH curl-config 1 "April 26, 2023" "url-config 8.5.0" curl-config .SH NAME curl-config \- Get information about a libcurl installation diff --git a/external/curl/docs/curl.1 b/external/curl/docs/curl.1 index 6b192a791..15042dc07 100644 --- a/external/curl/docs/curl.1 +++ b/external/curl/docs/curl.1 @@ -24,7 +24,7 @@ .\" .\" DO NOT EDIT. Generated by the curl project gen.pl man page generator. .\" -.TH curl 1 "October 05 2023" "curl 8.4.0" "curl Manual" +.TH curl 1 "December 05 2023" "curl 8.5.0" "curl Manual" .SH NAME curl \- transfer a URL .SH SYNOPSIS @@ -240,7 +240,7 @@ If you prefer a progress "bar" instead of the regular meter, \fI\-#, \-\-progres your friend. You can also disable the progress meter completely with the \fI\-s, \-\-silent\fP option. .SH VERSION -This man page describes curl 8.4.0. If you use a later version, chances are +This man page describes curl 8.5.0. If you use a later version, chances are this man page does not fully document it. If you use an earlier version, this document tries to include version information about which specific version that introduced changes. @@ -1916,7 +1916,8 @@ with no\-value then its header must be terminated with a semicolon, such as \-H curl makes sure that each header you add/replace is sent with the proper end\-of\-line marker, you should thus \fBnot\fP add that as a part of the header content: do not add newlines or carriage returns, they only mess things up for -you. +you. curl passes on the verbatim string you give it without any filter or +other safe guards. That includes white space and control characters. This option can take an argument in @filename style, which then adds a header for each line in the input file. Using @\- makes curl read the header file from @@ -2233,46 +2234,32 @@ Example: See also \fI\-\-dns\-interface\fP. .IP "\-\-ipfs\-gateway " -Specifies which gateway to use for IPFS and IPNS URLs. -Not specifying this argument will let cURL try to automatically -check if IPFS_GATEWAY environment variable is set, -or if ~/.ipfs/gateway plain text file exists. +Specify which gateway to use for IPFS and IPNS URLs. Not specifying this will +instead make curl check if the IPFS_GATEWAY environment variable is set, or if +a ~/.ipfs/gateway file holding the gateway URL exists. -If you run a local IPFS node, this gateway is by default -available under http://localhost:8080. A full example URL would -look like: +If you run a local IPFS node, this gateway is by default available under +http://localhost:8080. A full example URL would look like: .nf curl \--ipfs\-gateway http://localhost:8080 ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi .fi - -You can also specify publicly available gateways. One such -gateway is https://ipfs.io. A full example url would look like: - -.nf - curl \--ipfs\-gateway https://ipfs.io ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi -.fi - - -There are many public IPFS gateways. As a starting point to find -one that works for your case, consult this page: +There are many public IPFS gateways. See for example: .nf https://ipfs.github.io/public\-gateway\-checker/ .fi - -A word of caution! When you opt to go for a remote gateway you should -be aware that you completely trust the gateway. This is fine in local gateways -as you host it yourself. With remote gateways there could potentially be -a malicious actor returning you data that does not match the request you made, -inspect or even interfere with the request. You won\(aqt notice this when using cURL. -A mitigation could be to go for a "trustless" gateway. This means you -locally verify that the data. Consult the docs page on trusted vs trustless: +WARNING: If you opt to go for a remote gateway you should be aware that you +completely trust the gateway. This is fine in local gateways as you host it +yourself. With remote gateways there could potentially be a malicious actor +returning you data that does not match the request you made, inspect or even +interfere with the request. You will not notice this when using curl. A +mitigation could be to go for a "trustless" gateway. This means you locally +verify that the data. Consult the docs page on trusted vs trustless: https://docs.ipfs.tech/reference/http/gateway/#trusted\-vs\-trustless - If \fI\-\-ipfs\-gateway\fP is provided several times, the last set value is used. Example: @@ -4200,6 +4187,9 @@ provided in the URL. Particularly useful when wanting to issue HTTP requests without leading slash or other data that does not follow the regular URL pattern, like "OPTIONS *". +curl passes on the verbatim string you give it its the request without any +filter or other safe guards. That includes white space and control characters. + If \fI\-\-request\-target\fP is provided several times, the last set value is used. Example: @@ -4210,6 +4200,9 @@ Example: See also \fI-X, \-\-request\fP. Added in 7.55.0. .IP "\-X, \-\-request " Change the method to use when starting the transfer. + +curl passes on the verbatim string you give it its the request without any +filter or other safe guards. That includes white space and control characters. .RS .TP 15 \fBHTTP\fP @@ -4287,8 +4280,6 @@ Support for resolving with wildcard was added in 7.64.0. Support for the \(aq+\(aq prefix was was added in 7.75.0. -This option can be used many times to add many host names to resolve. - \fI\-\-resolve\fP can be used several times in a command line Example: @@ -5640,7 +5631,7 @@ curl CONNECT request. The http version that was effectively used. (Added in 7.50.0) .TP \fBjson\fP -A JSON object with all available keys. +A JSON object with all available keys. (Added in 7.70.0) .TP \fBlocal_ip\fP The IP address of the local end of the most recently done connection \- can be @@ -6039,8 +6030,8 @@ appears if \fI\-f, \-\-fail\fP is used. .IP 23 Write error. Curl could not write data to a local filesystem or similar. .IP 25 -FTP could not STOR file. The server denied the STOR operation, used for FTP -uploading. +Failed starting the upload. For FTP, the server typically denied the STOR +command. .IP 26 Read error. Various reading problems. .IP 27 diff --git a/external/curl/docs/examples/10-at-a-time.c b/external/curl/docs/examples/10-at-a-time.c index b54a4410c..607775058 100644 --- a/external/curl/docs/examples/10-at-a-time.c +++ b/external/curl/docs/examples/10-at-a-time.c @@ -29,7 +29,7 @@ #include #include #include -#ifndef WIN32 +#ifndef _WIN32 # include #endif #include diff --git a/external/curl/docs/examples/Makefile.in b/external/curl/docs/examples/Makefile.in index 4ac0f81b0..9286442ab 100644 --- a/external/curl/docs/examples/Makefile.in +++ b/external/curl/docs/examples/Makefile.in @@ -155,7 +155,8 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \ imap-examine$(EXEEXT) imap-fetch$(EXEEXT) imap-list$(EXEEXT) \ imap-lsub$(EXEEXT) imap-multi$(EXEEXT) imap-noop$(EXEEXT) \ imap-search$(EXEEXT) imap-ssl$(EXEEXT) imap-store$(EXEEXT) \ - imap-tls$(EXEEXT) ipv6$(EXEEXT) maxconnects$(EXEEXT) \ + imap-tls$(EXEEXT) interface$(EXEEXT) ipv6$(EXEEXT) \ + keepalive$(EXEEXT) localport$(EXEEXT) maxconnects$(EXEEXT) \ multi-app$(EXEEXT) multi-debugcallback$(EXEEXT) \ multi-double$(EXEEXT) multi-formadd$(EXEEXT) \ multi-legacy$(EXEEXT) multi-post$(EXEEXT) \ @@ -166,15 +167,15 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \ pop3-top$(EXEEXT) pop3-uidl$(EXEEXT) post-callback$(EXEEXT) \ postinmemory$(EXEEXT) postit2$(EXEEXT) \ postit2-formadd$(EXEEXT) progressfunc$(EXEEXT) \ - protofeats$(EXEEXT) resolve$(EXEEXT) sendrecv$(EXEEXT) \ - sepheaders$(EXEEXT) sftpget$(EXEEXT) sftpuploadresume$(EXEEXT) \ - shared-connection-cache$(EXEEXT) simple$(EXEEXT) \ - simplepost$(EXEEXT) simplessl$(EXEEXT) smtp-authzid$(EXEEXT) \ - smtp-expn$(EXEEXT) smtp-mail$(EXEEXT) smtp-mime$(EXEEXT) \ - smtp-multi$(EXEEXT) smtp-ssl$(EXEEXT) smtp-tls$(EXEEXT) \ - smtp-vrfy$(EXEEXT) sslbackend$(EXEEXT) unixsocket$(EXEEXT) \ - url2file$(EXEEXT) urlapi$(EXEEXT) websocket$(EXEEXT) \ - websocket-cb$(EXEEXT) + protofeats$(EXEEXT) resolve$(EXEEXT) rtsp-options$(EXEEXT) \ + sendrecv$(EXEEXT) sepheaders$(EXEEXT) sftpget$(EXEEXT) \ + sftpuploadresume$(EXEEXT) shared-connection-cache$(EXEEXT) \ + simple$(EXEEXT) simplepost$(EXEEXT) simplessl$(EXEEXT) \ + smtp-authzid$(EXEEXT) smtp-expn$(EXEEXT) smtp-mail$(EXEEXT) \ + smtp-mime$(EXEEXT) smtp-multi$(EXEEXT) smtp-ssl$(EXEEXT) \ + smtp-tls$(EXEEXT) smtp-vrfy$(EXEEXT) sslbackend$(EXEEXT) \ + unixsocket$(EXEEXT) url2file$(EXEEXT) urlapi$(EXEEXT) \ + websocket$(EXEEXT) websocket-cb$(EXEEXT) subdir = docs/examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \ @@ -575,11 +576,32 @@ imap_tls_LDADD = $(LDADD) @USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la @USE_EXPLICIT_LIB_DEPS_TRUE@imap_tls_DEPENDENCIES = \ @USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la +interface_SOURCES = interface.c +interface_OBJECTS = interface.$(OBJEXT) +interface_LDADD = $(LDADD) +@USE_EXPLICIT_LIB_DEPS_FALSE@interface_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la +@USE_EXPLICIT_LIB_DEPS_TRUE@interface_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la ipv6_SOURCES = ipv6.c ipv6_OBJECTS = ipv6.$(OBJEXT) ipv6_LDADD = $(LDADD) @USE_EXPLICIT_LIB_DEPS_FALSE@ipv6_DEPENDENCIES = $(LIBDIR)/libcurl.la @USE_EXPLICIT_LIB_DEPS_TRUE@ipv6_DEPENDENCIES = $(LIBDIR)/libcurl.la +keepalive_SOURCES = keepalive.c +keepalive_OBJECTS = keepalive.$(OBJEXT) +keepalive_LDADD = $(LDADD) +@USE_EXPLICIT_LIB_DEPS_FALSE@keepalive_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la +@USE_EXPLICIT_LIB_DEPS_TRUE@keepalive_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la +localport_SOURCES = localport.c +localport_OBJECTS = localport.$(OBJEXT) +localport_LDADD = $(LDADD) +@USE_EXPLICIT_LIB_DEPS_FALSE@localport_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la +@USE_EXPLICIT_LIB_DEPS_TRUE@localport_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la maxconnects_SOURCES = maxconnects.c maxconnects_OBJECTS = maxconnects.$(OBJEXT) maxconnects_LDADD = $(LDADD) @@ -776,6 +798,13 @@ resolve_LDADD = $(LDADD) @USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la @USE_EXPLICIT_LIB_DEPS_TRUE@resolve_DEPENDENCIES = \ @USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la +rtsp_options_SOURCES = rtsp-options.c +rtsp_options_OBJECTS = rtsp-options.$(OBJEXT) +rtsp_options_LDADD = $(LDADD) +@USE_EXPLICIT_LIB_DEPS_FALSE@rtsp_options_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_FALSE@ $(LIBDIR)/libcurl.la +@USE_EXPLICIT_LIB_DEPS_TRUE@rtsp_options_DEPENDENCIES = \ +@USE_EXPLICIT_LIB_DEPS_TRUE@ $(LIBDIR)/libcurl.la sendrecv_SOURCES = sendrecv.c sendrecv_OBJECTS = sendrecv.$(OBJEXT) sendrecv_LDADD = $(LDADD) @@ -973,21 +1002,23 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.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)/ipv6.Po ./$(DEPDIR)/maxconnects.Po \ - ./$(DEPDIR)/multi-app.Po ./$(DEPDIR)/multi-debugcallback.Po \ - ./$(DEPDIR)/multi-double.Po ./$(DEPDIR)/multi-formadd.Po \ - ./$(DEPDIR)/multi-legacy.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 ./$(DEPDIR)/pop3-tls.Po \ - ./$(DEPDIR)/pop3-top.Po ./$(DEPDIR)/pop3-uidl.Po \ - ./$(DEPDIR)/post-callback.Po ./$(DEPDIR)/postinmemory.Po \ - ./$(DEPDIR)/postit2-formadd.Po ./$(DEPDIR)/postit2.Po \ - ./$(DEPDIR)/progressfunc.Po ./$(DEPDIR)/protofeats.Po \ - ./$(DEPDIR)/resolve.Po ./$(DEPDIR)/sendrecv.Po \ + ./$(DEPDIR)/interface.Po ./$(DEPDIR)/ipv6.Po \ + ./$(DEPDIR)/keepalive.Po ./$(DEPDIR)/localport.Po \ + ./$(DEPDIR)/maxconnects.Po ./$(DEPDIR)/multi-app.Po \ + ./$(DEPDIR)/multi-debugcallback.Po ./$(DEPDIR)/multi-double.Po \ + ./$(DEPDIR)/multi-formadd.Po ./$(DEPDIR)/multi-legacy.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 \ + ./$(DEPDIR)/pop3-tls.Po ./$(DEPDIR)/pop3-top.Po \ + ./$(DEPDIR)/pop3-uidl.Po ./$(DEPDIR)/post-callback.Po \ + ./$(DEPDIR)/postinmemory.Po ./$(DEPDIR)/postit2-formadd.Po \ + ./$(DEPDIR)/postit2.Po ./$(DEPDIR)/progressfunc.Po \ + ./$(DEPDIR)/protofeats.Po ./$(DEPDIR)/resolve.Po \ + ./$(DEPDIR)/rtsp-options.Po ./$(DEPDIR)/sendrecv.Po \ ./$(DEPDIR)/sepheaders.Po ./$(DEPDIR)/sftpget.Po \ ./$(DEPDIR)/sftpuploadresume.Po \ ./$(DEPDIR)/shared-connection-cache.Po ./$(DEPDIR)/simple.Po \ @@ -1030,16 +1061,17 @@ SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c chkspeed.c \ httpput-postfields.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 ipv6.c \ - maxconnects.c multi-app.c multi-debugcallback.c multi-double.c \ - multi-formadd.c multi-legacy.c multi-post.c multi-single.c \ - parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \ + imap-search.c imap-ssl.c imap-store.c imap-tls.c interface.c \ + ipv6.c keepalive.c localport.c maxconnects.c multi-app.c \ + multi-debugcallback.c multi-double.c multi-formadd.c \ + multi-legacy.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 \ - protofeats.c resolve.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 \ + protofeats.c resolve.c rtsp-options.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 unixsocket.c url2file.c urlapi.c \ websocket.c websocket-cb.c @@ -1055,16 +1087,17 @@ DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \ httpput-postfields.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 ipv6.c \ - maxconnects.c multi-app.c multi-debugcallback.c multi-double.c \ - multi-formadd.c multi-legacy.c multi-post.c multi-single.c \ - parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c \ + imap-search.c imap-ssl.c imap-store.c imap-tls.c interface.c \ + ipv6.c keepalive.c localport.c maxconnects.c multi-app.c \ + multi-debugcallback.c multi-double.c multi-formadd.c \ + multi-legacy.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 \ - protofeats.c resolve.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 \ + protofeats.c resolve.c rtsp-options.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 unixsocket.c url2file.c urlapi.c \ websocket.c websocket-cb.c @@ -1617,10 +1650,22 @@ imap-tls$(EXEEXT): $(imap_tls_OBJECTS) $(imap_tls_DEPENDENCIES) $(EXTRA_imap_tls @rm -f imap-tls$(EXEEXT) $(AM_V_CCLD)$(LINK) $(imap_tls_OBJECTS) $(imap_tls_LDADD) $(LIBS) +interface$(EXEEXT): $(interface_OBJECTS) $(interface_DEPENDENCIES) $(EXTRA_interface_DEPENDENCIES) + @rm -f interface$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(interface_OBJECTS) $(interface_LDADD) $(LIBS) + ipv6$(EXEEXT): $(ipv6_OBJECTS) $(ipv6_DEPENDENCIES) $(EXTRA_ipv6_DEPENDENCIES) @rm -f ipv6$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ipv6_OBJECTS) $(ipv6_LDADD) $(LIBS) +keepalive$(EXEEXT): $(keepalive_OBJECTS) $(keepalive_DEPENDENCIES) $(EXTRA_keepalive_DEPENDENCIES) + @rm -f keepalive$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(keepalive_OBJECTS) $(keepalive_LDADD) $(LIBS) + +localport$(EXEEXT): $(localport_OBJECTS) $(localport_DEPENDENCIES) $(EXTRA_localport_DEPENDENCIES) + @rm -f localport$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(localport_OBJECTS) $(localport_LDADD) $(LIBS) + maxconnects$(EXEEXT): $(maxconnects_OBJECTS) $(maxconnects_DEPENDENCIES) $(EXTRA_maxconnects_DEPENDENCIES) @rm -f maxconnects$(EXEEXT) $(AM_V_CCLD)$(LINK) $(maxconnects_OBJECTS) $(maxconnects_LDADD) $(LIBS) @@ -1733,6 +1778,10 @@ resolve$(EXEEXT): $(resolve_OBJECTS) $(resolve_DEPENDENCIES) $(EXTRA_resolve_DEP @rm -f resolve$(EXEEXT) $(AM_V_CCLD)$(LINK) $(resolve_OBJECTS) $(resolve_LDADD) $(LIBS) +rtsp-options$(EXEEXT): $(rtsp_options_OBJECTS) $(rtsp_options_DEPENDENCIES) $(EXTRA_rtsp_options_DEPENDENCIES) + @rm -f rtsp-options$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rtsp_options_OBJECTS) $(rtsp_options_LDADD) $(LIBS) + sendrecv$(EXEEXT): $(sendrecv_OBJECTS) $(sendrecv_DEPENDENCIES) $(EXTRA_sendrecv_DEPENDENCIES) @rm -f sendrecv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sendrecv_OBJECTS) $(sendrecv_LDADD) $(LIBS) @@ -1879,7 +1928,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-ssl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-store.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imap-tls.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipv6.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keepalive.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localport.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maxconnects.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-app.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multi-debugcallback.Po@am__quote@ # am--include-marker @@ -1908,6 +1960,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressfunc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protofeats.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtsp-options.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sepheaders.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sftpget.Po@am__quote@ # am--include-marker @@ -2144,7 +2197,10 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/imap-ssl.Po -rm -f ./$(DEPDIR)/imap-store.Po -rm -f ./$(DEPDIR)/imap-tls.Po + -rm -f ./$(DEPDIR)/interface.Po -rm -f ./$(DEPDIR)/ipv6.Po + -rm -f ./$(DEPDIR)/keepalive.Po + -rm -f ./$(DEPDIR)/localport.Po -rm -f ./$(DEPDIR)/maxconnects.Po -rm -f ./$(DEPDIR)/multi-app.Po -rm -f ./$(DEPDIR)/multi-debugcallback.Po @@ -2173,6 +2229,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/progressfunc.Po -rm -f ./$(DEPDIR)/protofeats.Po -rm -f ./$(DEPDIR)/resolve.Po + -rm -f ./$(DEPDIR)/rtsp-options.Po -rm -f ./$(DEPDIR)/sendrecv.Po -rm -f ./$(DEPDIR)/sepheaders.Po -rm -f ./$(DEPDIR)/sftpget.Po @@ -2292,7 +2349,10 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/imap-ssl.Po -rm -f ./$(DEPDIR)/imap-store.Po -rm -f ./$(DEPDIR)/imap-tls.Po + -rm -f ./$(DEPDIR)/interface.Po -rm -f ./$(DEPDIR)/ipv6.Po + -rm -f ./$(DEPDIR)/keepalive.Po + -rm -f ./$(DEPDIR)/localport.Po -rm -f ./$(DEPDIR)/maxconnects.Po -rm -f ./$(DEPDIR)/multi-app.Po -rm -f ./$(DEPDIR)/multi-debugcallback.Po @@ -2321,6 +2381,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/progressfunc.Po -rm -f ./$(DEPDIR)/protofeats.Po -rm -f ./$(DEPDIR)/resolve.Po + -rm -f ./$(DEPDIR)/rtsp-options.Po -rm -f ./$(DEPDIR)/sendrecv.Po -rm -f ./$(DEPDIR)/sepheaders.Po -rm -f ./$(DEPDIR)/sftpget.Po diff --git a/external/curl/docs/examples/Makefile.inc b/external/curl/docs/examples/Makefile.inc index 60a006ca9..1f1996c37 100644 --- a/external/curl/docs/examples/Makefile.inc +++ b/external/curl/docs/examples/Makefile.inc @@ -76,7 +76,10 @@ check_PROGRAMS = \ imap-ssl \ imap-store \ imap-tls \ + interface \ ipv6 \ + keepalive \ + localport \ maxconnects \ multi-app \ multi-debugcallback \ @@ -105,6 +108,7 @@ check_PROGRAMS = \ progressfunc \ protofeats \ resolve \ + rtsp-options \ sendrecv \ sepheaders \ sftpget \ diff --git a/external/curl/docs/examples/anyauthput.c b/external/curl/docs/examples/anyauthput.c index 8b979515a..1f4340f4d 100644 --- a/external/curl/docs/examples/anyauthput.c +++ b/external/curl/docs/examples/anyauthput.c @@ -33,7 +33,7 @@ #include -#ifdef WIN32 +#ifdef _WIN32 # define FILENO(fp) _fileno(fp) #else # define FILENO(fp) fileno(fp) diff --git a/external/curl/docs/examples/cookie_interface.c b/external/curl/docs/examples/cookie_interface.c index 557b57dc2..120049830 100644 --- a/external/curl/docs/examples/cookie_interface.c +++ b/external/curl/docs/examples/cookie_interface.c @@ -91,7 +91,7 @@ main(void) printf("-----------------------------------------------\n" "Setting a cookie \"PREF\" via cookie interface:\n"); -#ifdef WIN32 +#ifdef _WIN32 #define snprintf _snprintf #endif /* Netscape format cookie */ diff --git a/external/curl/docs/examples/externalsocket.c b/external/curl/docs/examples/externalsocket.c index 1c78c3db4..270a31996 100644 --- a/external/curl/docs/examples/externalsocket.c +++ b/external/curl/docs/examples/externalsocket.c @@ -30,7 +30,7 @@ #include #include -#ifdef WIN32 +#ifdef _WIN32 #include #include #include @@ -96,7 +96,7 @@ int main(void) struct sockaddr_in servaddr; /* socket address structure */ curl_socket_t sockfd; -#ifdef WIN32 +#ifdef _WIN32 WSADATA wsaData; int initwsa = WSAStartup(MAKEWORD(2, 2), &wsaData); if(initwsa) { @@ -168,7 +168,7 @@ int main(void) } } -#ifdef WIN32 +#ifdef _WIN32 WSACleanup(); #endif return 0; diff --git a/external/curl/docs/examples/ftpupload.c b/external/curl/docs/examples/ftpupload.c index 00de126ea..92bb0b8a0 100644 --- a/external/curl/docs/examples/ftpupload.c +++ b/external/curl/docs/examples/ftpupload.c @@ -29,7 +29,7 @@ #include #include #include -#ifdef WIN32 +#ifdef _WIN32 #include #else #include diff --git a/external/curl/docs/examples/interface.c b/external/curl/docs/examples/interface.c new file mode 100644 index 000000000..f1a2016ce --- /dev/null +++ b/external/curl/docs/examples/interface.c @@ -0,0 +1,52 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +/* + * Use CURLOPT_INTERFACE to bind the outgoing socket to an interface + * + */ +#include +#include + +int main(void) +{ + CURL *curl; + CURLcode res = CURLE_OK; + + curl = curl_easy_init(); + if(curl) { + /* The interface needs to be a local existing interface over which you can + connect to the host in the URL. It can also specify an IP address, but + that address needs to be assigned one of the local network + interfaces. */ + curl_easy_setopt(curl, CURLOPT_INTERFACE, "enp3s0"); + curl_easy_setopt(curl, CURLOPT_URL, "https://curl.se/"); + + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + + return (int)res; +} diff --git a/external/curl/docs/examples/ipv6.c b/external/curl/docs/examples/ipv6.c index 49a44fa7a..dc305a072 100644 --- a/external/curl/docs/examples/ipv6.c +++ b/external/curl/docs/examples/ipv6.c @@ -28,13 +28,13 @@ #include #include -#ifndef WIN32 +#ifndef _WIN32 #include #endif int main(void) { -#ifndef WIN32 +#ifndef _WIN32 /* Windows users need to find how to use if_nametoindex() */ CURL *curl; CURLcode res; diff --git a/external/curl/docs/examples/keepalive.c b/external/curl/docs/examples/keepalive.c new file mode 100644 index 000000000..1c876bb1f --- /dev/null +++ b/external/curl/docs/examples/keepalive.c @@ -0,0 +1,55 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +/* + * Use the TCP keep-alive options + * + */ +#include +#include + +int main(void) +{ + CURL *curl; + CURLcode res = CURLE_OK; + + curl = curl_easy_init(); + if(curl) { + /* enable TCP keep-alive for this transfer */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); + + /* keep-alive idle time to 120 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L); + + /* interval time between keep-alive probes: 60 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L); + + curl_easy_setopt(curl, CURLOPT_URL, "https://curl.se/"); + + res = curl_easy_perform(curl); + + curl_easy_cleanup(curl); + } + + return (int)res; +} diff --git a/external/curl/docs/examples/localport.c b/external/curl/docs/examples/localport.c new file mode 100644 index 000000000..56e0b62cf --- /dev/null +++ b/external/curl/docs/examples/localport.c @@ -0,0 +1,53 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +/* + * Use CURLOPT_LOCALPORT to control local port number + * + */ +#include +#include + +int main(void) +{ + CURL *curl; + CURLcode res = CURLE_OK; + + curl = curl_easy_init(); + if(curl) { + /* Try to use a local port number between 20000-20009 */ + curl_easy_setopt(curl, CURLOPT_LOCALPORT, 20000L); + /* 10 means number of attempts, which starts with the number set in + CURLOPT_LOCALPORT. The lowe value set, the smaller the change it will + work. */ + curl_easy_setopt(curl, CURLOPT_LOCALPORTRANGE, 10L); + curl_easy_setopt(curl, CURLOPT_URL, "https://curl.se/"); + + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + + return (int)res; +} diff --git a/external/curl/docs/examples/rtsp-options.c b/external/curl/docs/examples/rtsp-options.c new file mode 100644 index 000000000..e4a623048 --- /dev/null +++ b/external/curl/docs/examples/rtsp-options.c @@ -0,0 +1,55 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +/* + * Very simple RTSP request sending OPTIONS. + * + */ +#include +#include + +int main(void) +{ + CURL *curl; + CURLcode res; + + curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); + + curl_easy_setopt(curl, CURLOPT_RTSP_SESSION_ID, "12345"); + + curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_OPTIONS); + + /* 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/external/curl/docs/libcurl/curl_easy_cleanup.3 b/external/curl/docs/libcurl/curl_easy_cleanup.3 index b0dc7175f..11d90dbb7 100644 --- a/external/curl/docs/libcurl/curl_easy_cleanup.3 +++ b/external/curl/docs/libcurl/curl_easy_cleanup.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_cleanup 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_cleanup 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_cleanup - End a libcurl easy handle @@ -58,12 +58,17 @@ Passing in a NULL pointer in \fIhandle\fP makes this function return immediately with no action. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res) + printf("error: %s\\n", curl_easy_strerror(res)); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_duphandle.3 b/external/curl/docs/libcurl/curl_easy_duphandle.3 index 30dfa8ab9..b3dcf68da 100644 --- a/external/curl/docs/libcurl/curl_easy_duphandle.3 +++ b/external/curl/docs/libcurl/curl_easy_duphandle.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_duphandle 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_duphandle 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_duphandle - Clone a libcurl session handle @@ -46,19 +46,25 @@ The new handle does \fBnot\fP inherit any state information, no connections, no SSL sessions and no cookies. It also does not inherit any share object states or options (created as if \fICURLOPT_SHARE(3)\fP was set to NULL). +If the source handle has HSTS or alt-svc enabled, the duplicate gets data read +data from the main file name to populate the cache. + In multi-threaded programs, this function must be called in a synchronous way, the input handle may not be in use when cloned. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -CURL *nother; -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - nother = curl_easy_duphandle(curl); - res = curl_easy_perform(nother); - curl_easy_cleanup(nother); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + CURL *nother; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + nother = curl_easy_duphandle(curl); + res = curl_easy_perform(nother); + curl_easy_cleanup(nother); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_escape.3 b/external/curl/docs/libcurl/curl_easy_escape.3 index ea4b5401b..e5d5ee1f8 100644 --- a/external/curl/docs/libcurl/curl_easy_escape.3 +++ b/external/curl/docs/libcurl/curl_easy_escape.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_escape 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_escape 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_escape - URL encodes the given string @@ -58,14 +58,17 @@ The caller of \fIcurl_easy_escape(3)\fP must make sure that the data passed in to the function is encoded correctly. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - char *output = curl_easy_escape(curl, "data to convert", 15); - if(output) { - printf("Encoded: %s\\n", output); - curl_free(output); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + char *output = curl_easy_escape(curl, "data to convert", 15); + if(output) { + printf("Encoded: %s\\n", output); + curl_free(output); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_getinfo.3 b/external/curl/docs/libcurl/curl_easy_getinfo.3 index c73ce0c4b..d397aee2e 100644 --- a/external/curl/docs/libcurl/curl_easy_getinfo.3 +++ b/external/curl/docs/libcurl/curl_easy_getinfo.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_getinfo 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_getinfo 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_getinfo - extract information from a curl handle @@ -299,8 +299,11 @@ pretransfer and transfer before final transaction was started. So, this is zero if no redirection took place. .SH EXAMPLE .nf - curl = curl_easy_init(); +int main(void) +{ + CURL *curl = curl_easy_init(); if(curl) { + CURLcode res; curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/"); res = curl_easy_perform(curl); @@ -316,6 +319,7 @@ zero if no redirection took place. /* always cleanup */ curl_easy_cleanup(curl); } +} .fi .SH AVAILABILITY Added in 7.4.1 diff --git a/external/curl/docs/libcurl/curl_easy_header.3 b/external/curl/docs/libcurl/curl_easy_header.3 index a7766b308..46a2293ca 100644 --- a/external/curl/docs/libcurl/curl_easy_header.3 +++ b/external/curl/docs/libcurl/curl_easy_header.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_header 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_header 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_header - get an HTTP header @@ -35,6 +35,7 @@ CURLHcode curl_easy_header(CURL *easy, unsigned int origin, int request, struct curl_header **hout); +.fi .SH DESCRIPTION \fIcurl_easy_header(3)\fP returns a pointer to a "curl_header" struct in \fBhout\fP with data for the HTTP response header \fIname\fP. The case @@ -127,9 +128,18 @@ response that might happen before the "real" response. The header is an HTTP/2 or HTTP/3 pseudo header .SH EXAMPLE .nf -struct curl_header *type; -CURLHcode h = - curl_easy_header(easy, "Content-Type", 0, CURLH_HEADER, -1, &type); +int main(void) +{ + struct curl_header *type; + CURL *curl = curl_easy_init(); + if(curl) { + CURLHcode h; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_perform(curl); + h = curl_easy_header(curl, "Content-Type", 0, CURLH_HEADER, -1, &type); + curl_easy_cleanup(curl); + } +} .fi .SH AVAILABILITY Added in 7.83.0. Officially supported since 7.84.0. diff --git a/external/curl/docs/libcurl/curl_easy_init.3 b/external/curl/docs/libcurl/curl_easy_init.3 index 24679b078..777420bc6 100644 --- a/external/curl/docs/libcurl/curl_easy_init.3 +++ b/external/curl/docs/libcurl/curl_easy_init.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_init 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_init 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_init - Start a libcurl easy session @@ -58,12 +58,15 @@ this function. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_nextheader.3 b/external/curl/docs/libcurl/curl_easy_nextheader.3 index 31a5e9548..b1fdf7525 100644 --- a/external/curl/docs/libcurl/curl_easy_nextheader.3 +++ b/external/curl/docs/libcurl/curl_easy_nextheader.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_nextheader 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_nextheader 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_nextheader - get the next HTTP header @@ -69,20 +69,29 @@ is associated with the easy handle. Applications must copy the data if they want it to survive subsequent API calls or the life-time of the easy handle. .SH EXAMPLE .nf -struct curl_header *prev = NULL; -struct curl_header *h; +int main(void) +{ + struct curl_header *prev = NULL; + struct curl_header *h; -/* extract the normal headers from the first request */ -while((h = curl_easy_nextheader(easy, CURLH_HEADER, 0, prev))) { - printf("%s: %s\\n", h->name, h->value); - prev = h; -} + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_perform(curl); + + /* extract the normal headers from the first request */ + while((h = curl_easy_nextheader(curl, CURLH_HEADER, 0, prev))) { + printf("%s: %s\\n", h->name, h->value); + prev = h; + } -/* extract the normal headers + 1xx + trailers from the last request */ -unsigned int origin = CURLH_HEADER| CURLH_1XX | CURLH_TRAILER; -while((h = curl_easy_nextheader(easy, origin, -1, prev))) { - printf("%s: %s\\n", h->name, h->value); - prev = h; + /* extract the normal headers + 1xx + trailers from the last request */ + unsigned int origin = CURLH_HEADER| CURLH_1XX | CURLH_TRAILER; + while((h = curl_easy_nextheader(curl, origin, -1, prev))) { + printf("%s: %s\\n", h->name, h->value); + prev = h; + } + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_option_by_id.3 b/external/curl/docs/libcurl/curl_easy_option_by_id.3 index 4de25fb58..70f503c42 100644 --- a/external/curl/docs/libcurl/curl_easy_option_by_id.3 +++ b/external/curl/docs/libcurl/curl_easy_option_by_id.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_option_by_id 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_option_by_id 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_option_by_id - find an easy setopt option by id @@ -42,9 +42,12 @@ well. If libcurl has no option with the given id, this function returns NULL. .SH EXAMPLE .nf -const struct curl_easyoption *opt = curl_easy_option_by_id(CURLOPT_URL); -if(opt) { - printf("This option wants type %x\\n", opt->type); +int main(void) +{ + const struct curl_easyoption *opt = curl_easy_option_by_id(CURLOPT_URL); + if(opt) { + printf("This option wants type %x\\n", opt->type); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_option_by_name.3 b/external/curl/docs/libcurl/curl_easy_option_by_name.3 index 6e2a89582..3c65503b5 100644 --- a/external/curl/docs/libcurl/curl_easy_option_by_name.3 +++ b/external/curl/docs/libcurl/curl_easy_option_by_name.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_option_by_name 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_option_by_name 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_option_by_name - find an easy setopt option by name @@ -41,9 +41,12 @@ insensitive. If libcurl has no option with the given name, this function returns NULL. .SH EXAMPLE .nf -const struct curl_easyoption *opt = curl_easy_option_by_name("URL"); -if(opt) { - printf("This option wants CURLoption %x\\n", (int)opt->id); +int main(void) +{ + const struct curl_easyoption *opt = curl_easy_option_by_name("URL"); + if(opt) { + printf("This option wants CURLoption %x\\n", (int)opt->id); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_option_next.3 b/external/curl/docs/libcurl/curl_easy_option_next.3 index c753e75d4..0318854d7 100644 --- a/external/curl/docs/libcurl/curl_easy_option_next.3 +++ b/external/curl/docs/libcurl/curl_easy_option_next.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_option_next 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_option_next 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_option_next - iterate over easy setopt options @@ -29,6 +29,25 @@ curl_easy_option_next - iterate over easy setopt options .nf #include +const struct curl_easyoption * +curl_easy_option_next(const struct curl_easyoption *prev); +.fi +.SH DESCRIPTION +This function returns a pointer to the first or the next \fIcurl_easyoption\fP +struct, providing an ability to iterate over all known options for +\fIcurl_easy_setopt(3)\fP in this instance of libcurl. + +Pass a \fBNULL\fP argument as \fBprev\fP to get the first option returned, or +pass in the current option to get the next one returned. If there is no more +option to return, \fIcurl_easy_option_next(3)\fP returns NULL. + +The options returned by this functions are the ones known to this libcurl and +information about what argument type they want. + +If the \fBCURLOT_FLAG_ALIAS\fP bit is set in the flags field, it means the +name is provided for backwards compatibility as an alias. +.SH struct +.nf typedef enum { CURLOT_LONG, /* long (a range of values) */ CURLOT_VALUES, /* (a defined set or bitmask) */ @@ -49,32 +68,18 @@ struct curl_easyoption { curl_easytype type; unsigned int flags; }; - -const struct curl_easyoption * -curl_easy_option_next(const struct curl_easyoption *prev); .fi -.SH DESCRIPTION -This function returns a pointer to the first or the next \fIcurl_easyoption\fP -struct, providing an ability to iterate over all known options for -\fIcurl_easy_setopt(3)\fP in this instance of libcurl. - -Pass a \fBNULL\fP argument as \fBprev\fP to get the first option returned, or -pass in the current option to get the next one returned. If there is no more -option to return, \fIcurl_easy_option_next(3)\fP returns NULL. - -The options returned by this functions are the ones known to this libcurl and -information about what argument type they want. - -If the \fBCURLOT_FLAG_ALIAS\fP bit is set in the flags field, it means the -name is provided for backwards compatibility as an alias. .SH EXAMPLE .nf -/* iterate over all available options */ -const struct curl_easyoption *opt; -opt = curl_easy_option_by_next(NULL); -while(opt) { - printf("Name: %s\\n", opt->name); - opt = curl_easy_option_by_next(opt); +int main(void) +{ + /* iterate over all available options */ + const struct curl_easyoption *opt; + opt = curl_easy_option_next(NULL); + while(opt) { + printf("Name: %s\\n", opt->name); + opt = curl_easy_option_next(opt); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_pause.3 b/external/curl/docs/libcurl/curl_easy_pause.3 index 5371855c7..a876f2d1c 100644 --- a/external/curl/docs/libcurl/curl_easy_pause.3 +++ b/external/curl/docs/libcurl/curl_easy_pause.3 @@ -21,15 +21,15 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_pause 3 "October 06, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_pause 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_pause - pause and unpause a connection .SH SYNOPSIS .nf -.B #include +#include -.BI "CURLcode curl_easy_pause(CURL *"handle ", int "bitmask ");" +CURLcode curl_easy_pause(CURL *handle, int bitmask ); .fi .SH DESCRIPTION Using this function, you can explicitly mark a running connection to get @@ -93,8 +93,15 @@ When such a paused stream is unpaused again, any buffered data is delivered first. .SH EXAMPLE .nf -/* pause a transfer in both directions */ -curl_easy_pause(curl, CURL_READFUNC_PAUSE | CURL_WRITEFUNC_PAUSE); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* pause a transfer in both directions */ + curl_easy_pause(curl, CURL_READFUNC_PAUSE | CURL_WRITEFUNC_PAUSE); + + } +} .fi .SH "MEMORY USE" When pausing a download transfer by returning the magic return code from a diff --git a/external/curl/docs/libcurl/curl_easy_perform.3 b/external/curl/docs/libcurl/curl_easy_perform.3 index b15464239..dea11e6b5 100644 --- a/external/curl/docs/libcurl/curl_easy_perform.3 +++ b/external/curl/docs/libcurl/curl_easy_perform.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_perform 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_perform 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_perform - perform a blocking file transfer @@ -64,12 +64,15 @@ While the \fBeasy_handle\fP is added to a multi handle, it cannot be used by \fIcurl_easy_perform(3)\fP. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_recv.3 b/external/curl/docs/libcurl/curl_easy_recv.3 index 99a39eb98..7fc022b62 100644 --- a/external/curl/docs/libcurl/curl_easy_recv.3 +++ b/external/curl/docs/libcurl/curl_easy_recv.3 @@ -22,13 +22,13 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_recv 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_recv 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_recv - receives raw data on an "easy" connection .SH SYNOPSIS .nf -#include +#include CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen, size_t *n); .fi @@ -64,18 +64,29 @@ Furthermore if you wait on the socket and it tells you there is data to read, read was for internal SSL processing, and no other data is available. .SH EXAMPLE .nf - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Do not do the transfer - only connect to host */ - curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); - res = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + /* Do not do the transfer - only connect to host */ + curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); + res = curl_easy_perform(curl); - if(res == CURLE_OK) { - /* Extract the socket from the curl handle - we need it for waiting. */ - res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd); + if(res == CURLE_OK) { + char buf[256]; + size_t nread; + long sockfd; - /* read data */ - res = curl_easy_recv(curl, buf, sizeof(buf), &nread); - } + /* Extract the socket from the curl handle - we need it for waiting. */ + res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd); + + /* read data */ + res = curl_easy_recv(curl, buf, sizeof(buf), &nread); + } + } +} .fi .SH AVAILABILITY Added in 7.18.2. diff --git a/external/curl/docs/libcurl/curl_easy_reset.3 b/external/curl/docs/libcurl/curl_easy_reset.3 index d8a07af4d..9bd880bbe 100644 --- a/external/curl/docs/libcurl/curl_easy_reset.3 +++ b/external/curl/docs/libcurl/curl_easy_reset.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_reset 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_reset 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_reset - reset all options of a libcurl session handle @@ -41,11 +41,15 @@ connections, the Session ID cache, the DNS cache, the cookies, the shares or the alt-svc cache. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { -/* ... the handle is used and options are set ... */ - -curl_easy_reset(curl); + /* ... the handle is used and options are set ... */ + curl_easy_reset(curl); + } +} .fi .SH AVAILABILITY This function was added in libcurl 7.12.1 diff --git a/external/curl/docs/libcurl/curl_easy_send.3 b/external/curl/docs/libcurl/curl_easy_send.3 index 7afece803..a02fb30db 100644 --- a/external/curl/docs/libcurl/curl_easy_send.3 +++ b/external/curl/docs/libcurl/curl_easy_send.3 @@ -22,13 +22,13 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_send 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_send 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_send - sends raw data over an "easy" connection .SH SYNOPSIS .nf -#include +#include CURLcode curl_easy_send(CURL *curl, const void *buffer, size_t buflen, size_t *n); @@ -59,18 +59,27 @@ Furthermore if you wait on the socket and it tells you it's writable, sent was for internal SSL processing, and no other data could be sent. .SH EXAMPLE .nf - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Do not do the transfer - only connect to host */ - curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); - res = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + /* Do not do the transfer - only connect to host */ + curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); + res = curl_easy_perform(curl); - if(res == CURLE_OK) { - /* Extract the socket from the curl handle - we need it for waiting. */ - res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd); + if(res == CURLE_OK) { + long sockfd; + size_t sent; + /* Extract the socket from the curl handle - we need it for waiting. */ + res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd); - /* send data */ - res = curl_easy_send(curl, "hello", 5, &sent); - } + /* send data */ + res = curl_easy_send(curl, "hello", 5, &sent); + } + } +} .fi .SH AVAILABILITY Added in 7.18.2. diff --git a/external/curl/docs/libcurl/curl_easy_setopt.3 b/external/curl/docs/libcurl/curl_easy_setopt.3 index e8329d38e..c462a2d0c 100644 --- a/external/curl/docs/libcurl/curl_easy_setopt.3 +++ b/external/curl/docs/libcurl/curl_easy_setopt.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_setopt 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_setopt 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_setopt \- set options for a curl easy handle @@ -710,12 +710,15 @@ To be set by toplevel tools like "curl" to skip lengthy cleanups when they are a TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_strerror.3 b/external/curl/docs/libcurl/curl_easy_strerror.3 index 67755a285..5affd5c61 100644 --- a/external/curl/docs/libcurl/curl_easy_strerror.3 +++ b/external/curl/docs/libcurl/curl_easy_strerror.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_easy_strerror 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_strerror 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_strerror - return string describing error code @@ -39,12 +39,20 @@ Typically applications also appreciate \fICURLOPT_ERRORBUFFER(3)\fP for more specific error descriptions generated at runtime. .SH EXAMPLE .nf - /* Perform the entire transfer */ - res = curl_easy_perform(curl); - /* Check for errors */ - if(res != CURLE_OK) - fprintf(stderr, "curl_easy_perform() failed: %s\\n", - curl_easy_strerror(res)); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + /* set options */ + /* Perform the entire transfer */ + res = curl_easy_perform(curl); + /* Check for errors */ + if(res != CURLE_OK) + fprintf(stderr, "curl_easy_perform() failed: %s\\n", + curl_easy_strerror(res)); + } +} .fi .SH AVAILABILITY This function was added in libcurl 7.12.0 diff --git a/external/curl/docs/libcurl/curl_easy_unescape.3 b/external/curl/docs/libcurl/curl_easy_unescape.3 index ebbd1d79f..1e679fa71 100644 --- a/external/curl/docs/libcurl/curl_easy_unescape.3 +++ b/external/curl/docs/libcurl/curl_easy_unescape.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_unescape 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_unescape 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_unescape - URL decodes the given string @@ -55,17 +55,20 @@ TPF, but it was otherwise ignored. You must \fIcurl_free(3)\fP the returned string when you are done with it. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - int decodelen; - char *decoded = curl_easy_unescape(curl, "%63%75%72%6c", 12, &decodelen); - if(decoded) { - /* do not assume printf() works on the decoded data! */ - printf("Decoded: "); - /* ... */ - curl_free(decoded); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + int decodelen; + char *decoded = curl_easy_unescape(curl, "%63%75%72%6c", 12, &decodelen); + if(decoded) { + /* do not assume printf() works on the decoded data! */ + printf("Decoded: "); + /* ... */ + curl_free(decoded); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_easy_upkeep.3 b/external/curl/docs/libcurl/curl_easy_upkeep.3 index 6b35c6a86..fb5607548 100644 --- a/external/curl/docs/libcurl/curl_easy_upkeep.3 +++ b/external/curl/docs/libcurl/curl_easy_upkeep.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_easy_upkeep 3 "April 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_easy_upkeep 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_easy_upkeep - Perform any connection upkeep checks. @@ -48,27 +48,30 @@ The connection upkeep interval is set with \fICURLOPT_UPKEEP_INTERVAL_MS(3)\fP. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - /* Make a connection to an HTTP/2 server. */ - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* Make a connection to an HTTP/2 server. */ + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Set the interval to 30000ms / 30s */ - curl_easy_setopt(curl, CURLOPT_UPKEEP_INTERVAL_MS, 30000L); + /* Set the interval to 30000ms / 30s */ + curl_easy_setopt(curl, CURLOPT_UPKEEP_INTERVAL_MS, 30000L); - curl_easy_perform(curl); + curl_easy_perform(curl); - /* Perform more work here. */ + /* Perform more work here. */ - /* While the connection is being held open, curl_easy_upkeep() can be - called. If curl_easy_upkeep() is called and the time since the last - upkeep exceeds the interval, then an HTTP/2 PING is sent. */ - curl_easy_upkeep(curl); + /* While the connection is being held open, curl_easy_upkeep() can be + called. If curl_easy_upkeep() is called and the time since the last + upkeep exceeds the interval, then an HTTP/2 PING is sent. */ + curl_easy_upkeep(curl); - /* Perform more work here. */ + /* Perform more work here. */ - /* always cleanup */ - curl_easy_cleanup(curl); + /* always cleanup */ + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_escape.3 b/external/curl/docs/libcurl/curl_escape.3 index ef8b08315..dcf88c6eb 100644 --- a/external/curl/docs/libcurl/curl_escape.3 +++ b/external/curl/docs/libcurl/curl_escape.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_escape 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_escape 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_escape - URL encodes the given string @@ -45,10 +45,13 @@ on \fBstring\fP to find out the size. You must \fIcurl_free(3)\fP the returned string when you are done with it. .SH EXAMPLE .nf -char *output = curl_escape("data to convert", 15); -if(output) { - printf("Encoded: %s\\n", output); - curl_free(output); +int main(void) +{ + char *output = curl_escape("data to convert", 15); + if(output) { + printf("Encoded: %s\\n", output); + curl_free(output); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_formadd.3 b/external/curl/docs/libcurl/curl_formadd.3 index 114458e11..4bf636d6a 100644 --- a/external/curl/docs/libcurl/curl_formadd.3 +++ b/external/curl/docs/libcurl/curl_formadd.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_formadd 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_formadd 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_formadd - add a section to a multipart form POST @@ -176,82 +176,99 @@ for the curl handle. See example below. .SH EXAMPLE .nf - struct curl_httppost *post = NULL; - struct curl_httppost *last = NULL; - char namebuffer[] = "name buffer"; - long namelength = strlen(namebuffer); - char buffer[] = "test buffer"; - char htmlbuffer[] = "test buffer"; - long htmlbufferlength = strlen(htmlbuffer); - struct curl_forms forms[3]; - char file1[] = "my-face.jpg"; - char file2[] = "your-face.jpg"; - /* add null character into htmlbuffer, to demonstrate that - transfers of buffers containing null characters actually work - */ - htmlbuffer[8] = '\\0'; - - /* Add simple name/content section */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "name", - CURLFORM_COPYCONTENTS, "content", CURLFORM_END); - - /* Add simple name/content/contenttype section */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode", - CURLFORM_COPYCONTENTS, "", - CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END); - - /* Add name/ptrcontent section */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent", - CURLFORM_PTRCONTENTS, buffer, CURLFORM_END); - - /* Add ptrname/ptrcontent section */ - curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer, - CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH, - namelength, CURLFORM_END); - - /* Add name/ptrcontent/contenttype section */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole", - CURLFORM_PTRCONTENTS, htmlbuffer, - CURLFORM_CONTENTSLENGTH, htmlbufferlength, - CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END); - - /* Add simple file section */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture", - CURLFORM_FILE, "my-face.jpg", CURLFORM_END); - - /* Add file/contenttype section */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture", - CURLFORM_FILE, "my-face.jpg", - CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END); - - /* Add two file section */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures", - CURLFORM_FILE, "my-face.jpg", - CURLFORM_FILE, "your-face.jpg", CURLFORM_END); - - /* Add two file section using CURLFORM_ARRAY */ - forms[0].option = CURLFORM_FILE; - forms[0].value = file1; - forms[1].option = CURLFORM_FILE; - forms[1].value = file2; - forms[2].option = CURLFORM_END; - - /* Add a buffer to upload */ - curl_formadd(&post, &last, - CURLFORM_COPYNAME, "name", - CURLFORM_BUFFER, "data", - CURLFORM_BUFFERPTR, record, - CURLFORM_BUFFERLENGTH, record_length, - CURLFORM_END); - - /* no option needed for the end marker */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures", - CURLFORM_ARRAY, forms, CURLFORM_END); - /* Add the content of a file as a normal post text value */ - curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent", - CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END); - /* Set the form info */ - curl_easy_setopt(curl, CURLOPT_HTTPPOST, post); +#include /* for strlen */ + +static const char record[]="data in a buffer"; + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct curl_httppost *post = NULL; + struct curl_httppost *last = NULL; + char namebuffer[] = "name buffer"; + long namelength = strlen(namebuffer); + char buffer[] = "test buffer"; + char htmlbuffer[] = "test buffer"; + long htmlbufferlength = strlen(htmlbuffer); + struct curl_forms forms[3]; + char file1[] = "my-face.jpg"; + char file2[] = "your-face.jpg"; + /* add null character into htmlbuffer, to demonstrate that + transfers of buffers containing null characters actually work + */ + htmlbuffer[8] = '\\0'; + + /* Add simple name/content section */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "name", + CURLFORM_COPYCONTENTS, "content", CURLFORM_END); + + /* Add simple name/content/contenttype section */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "htmlcode", + CURLFORM_COPYCONTENTS, "", + CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END); + + /* Add name/ptrcontent section */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "name_for_ptrcontent", + CURLFORM_PTRCONTENTS, buffer, CURLFORM_END); + + /* Add ptrname/ptrcontent section */ + curl_formadd(&post, &last, CURLFORM_PTRNAME, namebuffer, + CURLFORM_PTRCONTENTS, buffer, CURLFORM_NAMELENGTH, + namelength, CURLFORM_END); + + /* Add name/ptrcontent/contenttype section */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "html_code_with_hole", + CURLFORM_PTRCONTENTS, htmlbuffer, + CURLFORM_CONTENTSLENGTH, htmlbufferlength, + CURLFORM_CONTENTTYPE, "text/html", CURLFORM_END); + + /* Add simple file section */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture", + CURLFORM_FILE, "my-face.jpg", CURLFORM_END); + + /* Add file/contenttype section */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "picture", + CURLFORM_FILE, "my-face.jpg", + CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END); + + /* Add two file section */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures", + CURLFORM_FILE, "my-face.jpg", + CURLFORM_FILE, "your-face.jpg", CURLFORM_END); + + /* Add two file section using CURLFORM_ARRAY */ + forms[0].option = CURLFORM_FILE; + forms[0].value = file1; + forms[1].option = CURLFORM_FILE; + forms[1].value = file2; + forms[2].option = CURLFORM_END; + + /* Add a buffer to upload */ + curl_formadd(&post, &last, + CURLFORM_COPYNAME, "name", + CURLFORM_BUFFER, "data", + CURLFORM_BUFFERPTR, record, + CURLFORM_BUFFERLENGTH, sizeof(record), + CURLFORM_END); + + /* no option needed for the end marker */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "pictures", + CURLFORM_ARRAY, forms, CURLFORM_END); + /* Add the content of a file as a normal post text value */ + curl_formadd(&post, &last, CURLFORM_COPYNAME, "filecontent", + CURLFORM_FILECONTENT, ".bashrc", CURLFORM_END); + /* Set the form info */ + curl_easy_setopt(curl, CURLOPT_HTTPPOST, post); + + curl_easy_perform(curl); + + curl_easy_cleanup(curl); + + curl_formfree(post); + } +} +.fi .SH AVAILABILITY Deprecated in 7.56.0. Before this release, field names were allowed to contain zero-valued bytes. The pseudo-filename "-" to read stdin is diff --git a/external/curl/docs/libcurl/curl_formfree.3 b/external/curl/docs/libcurl/curl_formfree.3 index 57dc590c2..39a7a2a02 100644 --- a/external/curl/docs/libcurl/curl_formfree.3 +++ b/external/curl/docs/libcurl/curl_formfree.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_formfree 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_formfree 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_formfree - free a previously build multipart form post chain @@ -49,19 +49,28 @@ Passing in a NULL pointer in \fIform\fP makes this function return immediately with no action. .SH EXAMPLE .nf - /* Fill in a file upload field */ - curl_formadd(&formpost, - &lastptr, - CURLFORM_COPYNAME, "file", - CURLFORM_FILE, "nice-image.jpg", - CURLFORM_END); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct curl_httppost *formpost; + struct curl_httppost *lastptr; - curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); + /* Fill in a file upload field */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "file", + CURLFORM_FILE, "nice-image.jpg", + CURLFORM_END); - curl_easy_perform(curl); + curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); - /* then cleanup the formpost chain */ - curl_formfree(formpost); + curl_easy_perform(curl); + + /* then cleanup the formpost chain */ + curl_formfree(formpost); + } +} .fi .SH AVAILABILITY Deprecated in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_formget.3 b/external/curl/docs/libcurl/curl_formget.3 index 3f3f1c315..e46f697e6 100644 --- a/external/curl/docs/libcurl/curl_formget.3 +++ b/external/curl/docs/libcurl/curl_formget.3 @@ -21,16 +21,17 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_formget 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_formget 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_formget - serialize a previously built multipart form POST chain .SH SYNOPSIS .nf -.B #include +#include int curl_formget(struct curl_httppost * form, void *userp, - curl_formget_callback append ); + curl_formget_callback append); +.fi .SH DESCRIPTION curl_formget() is used to serialize data previously built/appended with \fIcurl_formadd(3)\fP. Accepts a void pointer as second argument named @@ -50,21 +51,22 @@ request. This, because first then does libcurl known which actual read callback to use! .SH EXAMPLE .nf - size_t print_httppost_callback(void *arg, const char *buf, size_t len) - { - fwrite(buf, len, 1, stdout); - (*(size_t *) arg) += len; - return len; - } +size_t print_httppost_callback(void *arg, const char *buf, size_t len) +{ + fwrite(buf, len, 1, stdout); + (*(size_t *) arg) += len; + return len; +} - size_t print_httppost(struct curl_httppost *post) - { - size_t total_size = 0; - if(curl_formget(post, &total_size, print_httppost_callback)) { - return (size_t) -1; - } - return total_size; - } +size_t print_httppost(struct curl_httppost *post) +{ + size_t total_size = 0; + if(curl_formget(post, &total_size, print_httppost_callback)) { + return (size_t) -1; + } + return total_size; +} +.fi .SH AVAILABILITY This function was added in libcurl 7.15.5. The form API is deprecated in libcurl 7.56.0. diff --git a/external/curl/docs/libcurl/curl_free.3 b/external/curl/docs/libcurl/curl_free.3 index 27639e731..d178915b5 100644 --- a/external/curl/docs/libcurl/curl_free.3 +++ b/external/curl/docs/libcurl/curl_free.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_free 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_free 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_free - reclaim memory that has been obtained through a libcurl call @@ -40,11 +40,14 @@ Passing in a NULL pointer in \fIptr\fP makes this function return immediately with no action. .SH EXAMPLE .nf +int main(void) +{ char *width = curl_getenv("COLUMNS"); if(width) { /* it was set! */ curl_free(width); } +} .fi .SH AVAILABILITY Always diff --git a/external/curl/docs/libcurl/curl_getdate.3 b/external/curl/docs/libcurl/curl_getdate.3 index 2f88fdb99..66384adeb 100644 --- a/external/curl/docs/libcurl/curl_getdate.3 +++ b/external/curl/docs/libcurl/curl_getdate.3 @@ -21,14 +21,15 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -a.TH curl_getdate 3 "12 Aug 2005" "libcurl" "libcurl" +.TH curl_getdate 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" + .SH NAME curl_getdate - Convert a date string to number of seconds .SH SYNOPSIS .nf #include -time_t curl_getdate(char *datestring, time_t *now); +time_t curl_getdate(const char *datestring, const time_t *now); .fi .SH DESCRIPTION \fIcurl_getdate(3)\fP returns the number of seconds since the Epoch, January @@ -70,29 +71,32 @@ year, MM as the month number and DD as the day of the month, for the specified calendar date. .SH EXAMPLE .nf - time_t t; - t = curl_getdate("Sun, 06 Nov 1994 08:49:37 GMT", NULL); - t = curl_getdate("Sunday, 06-Nov-94 08:49:37 GMT", NULL); - t = curl_getdate("Sun Nov 6 08:49:37 1994", NULL); - t = curl_getdate("06 Nov 1994 08:49:37 GMT", NULL); - t = curl_getdate("06-Nov-94 08:49:37 GMT", NULL); - t = curl_getdate("Nov 6 08:49:37 1994", NULL); - t = curl_getdate("06 Nov 1994 08:49:37", NULL); - t = curl_getdate("06-Nov-94 08:49:37", NULL); - t = curl_getdate("1994 Nov 6 08:49:37", NULL); - t = curl_getdate("GMT 08:49:37 06-Nov-94 Sunday", NULL); - t = curl_getdate("94 6 Nov 08:49:37", NULL); - t = curl_getdate("1994 Nov 6", NULL); - t = curl_getdate("06-Nov-94", NULL); - t = curl_getdate("Sun Nov 6 94", NULL); - t = curl_getdate("1994.Nov.6", NULL); - t = curl_getdate("Sun/Nov/6/94/GMT", NULL); - t = curl_getdate("Sun, 06 Nov 1994 08:49:37 CET", NULL); - t = curl_getdate("06 Nov 1994 08:49:37 EST", NULL); - t = curl_getdate("Sun, 12 Sep 2004 15:05:58 -0700", NULL); - t = curl_getdate("Sat, 11 Sep 2004 21:32:11 +0200", NULL); - t = curl_getdate("20040912 15:05:58 -0700", NULL); - t = curl_getdate("20040911 +0200", NULL); +int main(void) +{ + time_t t; + t = curl_getdate("Sun, 06 Nov 1994 08:49:37 GMT", NULL); + t = curl_getdate("Sunday, 06-Nov-94 08:49:37 GMT", NULL); + t = curl_getdate("Sun Nov 6 08:49:37 1994", NULL); + t = curl_getdate("06 Nov 1994 08:49:37 GMT", NULL); + t = curl_getdate("06-Nov-94 08:49:37 GMT", NULL); + t = curl_getdate("Nov 6 08:49:37 1994", NULL); + t = curl_getdate("06 Nov 1994 08:49:37", NULL); + t = curl_getdate("06-Nov-94 08:49:37", NULL); + t = curl_getdate("1994 Nov 6 08:49:37", NULL); + t = curl_getdate("GMT 08:49:37 06-Nov-94 Sunday", NULL); + t = curl_getdate("94 6 Nov 08:49:37", NULL); + t = curl_getdate("1994 Nov 6", NULL); + t = curl_getdate("06-Nov-94", NULL); + t = curl_getdate("Sun Nov 6 94", NULL); + t = curl_getdate("1994.Nov.6", NULL); + t = curl_getdate("Sun/Nov/6/94/GMT", NULL); + t = curl_getdate("Sun, 06 Nov 1994 08:49:37 CET", NULL); + t = curl_getdate("06 Nov 1994 08:49:37 EST", NULL); + t = curl_getdate("Sun, 12 Sep 2004 15:05:58 -0700", NULL); + t = curl_getdate("Sat, 11 Sep 2004 21:32:11 +0200", NULL); + t = curl_getdate("20040912 15:05:58 -0700", NULL); + t = curl_getdate("20040911 +0200", NULL); +} .fi .SH STANDARDS This parser handles date formats specified in RFC 822 (including the update in diff --git a/external/curl/docs/libcurl/curl_getenv.3 b/external/curl/docs/libcurl/curl_getenv.3 index b01e87aaf..f9485431a 100644 --- a/external/curl/docs/libcurl/curl_getenv.3 +++ b/external/curl/docs/libcurl/curl_getenv.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_getenv 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_getenv 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_getenv - return value for environment name @@ -39,11 +39,14 @@ systems libcurl builds on (including win32). You must \fIcurl_free(3)\fP the returned string when you are done with it. .SH EXAMPLE .nf +int main(void) +{ char *width = curl_getenv("COLUMNS"); if(width) { /* it was set! */ curl_free(width); } +} .fi .SH AVAILABILITY Always diff --git a/external/curl/docs/libcurl/curl_global_cleanup.3 b/external/curl/docs/libcurl/curl_global_cleanup.3 index a5336ac7c..53d1da385 100644 --- a/external/curl/docs/libcurl/curl_global_cleanup.3 +++ b/external/curl/docs/libcurl/curl_global_cleanup.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_global_cleanup 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_global_cleanup 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_global_cleanup - global libcurl cleanup @@ -59,11 +59,14 @@ recommend you do not run libcurl from any module that may be unloaded dynamically. This behavior may be addressed in the future. .SH EXAMPLE .nf - curl_global_init(CURL_GLOBAL_DEFAULT); +int main(void) +{ + curl_global_init(CURL_GLOBAL_DEFAULT); - /* use libcurl, then before exiting... */ + /* use libcurl, then before exiting... */ - curl_global_cleanup(); + curl_global_cleanup(); +} .fi .SH AVAILABILITY Added in 7.8 diff --git a/external/curl/docs/libcurl/curl_global_init.3 b/external/curl/docs/libcurl/curl_global_init.3 index 3034614f8..d60639009 100644 --- a/external/curl/docs/libcurl/curl_global_init.3 +++ b/external/curl/docs/libcurl/curl_global_init.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_global_init 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_global_init 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_global_init - Global libcurl initialization @@ -102,11 +102,14 @@ connecting or when waiting for data. Otherwise, curl waits until full timeout elapses. (Added in 7.30.0) .SH EXAMPLE .nf - curl_global_init(CURL_GLOBAL_DEFAULT); +int main(void) +{ + curl_global_init(CURL_GLOBAL_DEFAULT); - /* use libcurl, then before exiting... */ + /* use libcurl, then before exiting... */ - curl_global_cleanup(); + curl_global_cleanup(); +} .fi .SH AVAILABILITY Added in 7.8 diff --git a/external/curl/docs/libcurl/curl_global_init_mem.3 b/external/curl/docs/libcurl/curl_global_init_mem.3 index 9b144721a..97a8a53e3 100644 --- a/external/curl/docs/libcurl/curl_global_init_mem.3 +++ b/external/curl/docs/libcurl/curl_global_init_mem.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_global_init_mem 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_global_init_mem 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_global_init_mem - Global libcurl initialization with memory callbacks @@ -66,9 +66,18 @@ Manipulating these gives considerable powers to the application to severely screw things up for libcurl. Take care! .SH EXAMPLE .nf - curl_global_init_mem(CURL_GLOBAL_DEFAULT, curl_malloc_cb, - curl_free_cb, curl_realloc_cb, - curl_strdup_cb, curl_calloc_cb); +extern void *malloc_cb(size_t); +extern void free_cb(void *); +extern void *realloc_cb(void *, size_t); +extern char *strdup_cb(const char *); +extern void *calloc_cb(size_t, size_t); + +int main(void) +{ + curl_global_init_mem(CURL_GLOBAL_DEFAULT, malloc_cb, + free_cb, realloc_cb, + strdup_cb, calloc_cb); +} .fi .SH AVAILABILITY Added in 7.12.0 diff --git a/external/curl/docs/libcurl/curl_global_sslset.3 b/external/curl/docs/libcurl/curl_global_sslset.3 index e6916d21e..cb20cefe4 100644 --- a/external/curl/docs/libcurl/curl_global_sslset.3 +++ b/external/curl/docs/libcurl/curl_global_sslset.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_global_sslset 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_global_sslset 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_global_sslset - Select SSL backend to use with libcurl @@ -29,31 +29,9 @@ curl_global_sslset - Select SSL backend to use with libcurl .nf #include -typedef struct { - curl_sslbackend id; - const char *name; -} curl_ssl_backend; - -typedef enum { - CURLSSLBACKEND_NONE = 0, - CURLSSLBACKEND_OPENSSL = 1, /* or one of its forks */ - CURLSSLBACKEND_GNUTLS = 2, - CURLSSLBACKEND_NSS = 3, - CURLSSLBACKEND_GSKIT = 5, /* deprecated */ - CURLSSLBACKEND_POLARSSL = 6, /* deprecated */ - CURLSSLBACKEND_WOLFSSL = 7, - CURLSSLBACKEND_SCHANNEL = 8, - CURLSSLBACKEND_SECURETRANSPORT = 9, - CURLSSLBACKEND_AXTLS = 10, /* deprecated */ - CURLSSLBACKEND_MBEDTLS = 11, - CURLSSLBACKEND_MESALINK = 12, /* deprecated */ - CURLSSLBACKEND_BEARSSL = 13, - CURLSSLBACKEND_RUSTLS = 14 -} curl_sslbackend; - CURLsslset curl_global_sslset(curl_sslbackend id, const char *name, - curl_ssl_backend ***avail); + const curl_ssl_backend ***avail); .fi .SH DESCRIPTION This function configures at runtime which SSL backend to use with @@ -100,8 +78,35 @@ provide the same API. \fIcurl_version_info(3)\fP can return more specific info about the exact OpenSSL flavor and version number is use. +.SH struct +.nf +typedef struct { + curl_sslbackend id; + const char *name; +} curl_ssl_backend; + +typedef enum { + CURLSSLBACKEND_NONE = 0, + CURLSSLBACKEND_OPENSSL = 1, /* or one of its forks */ + CURLSSLBACKEND_GNUTLS = 2, + CURLSSLBACKEND_NSS = 3, + CURLSSLBACKEND_GSKIT = 5, /* deprecated */ + CURLSSLBACKEND_POLARSSL = 6, /* deprecated */ + CURLSSLBACKEND_WOLFSSL = 7, + CURLSSLBACKEND_SCHANNEL = 8, + CURLSSLBACKEND_SECURETRANSPORT = 9, + CURLSSLBACKEND_AXTLS = 10, /* deprecated */ + CURLSSLBACKEND_MBEDTLS = 11, + CURLSSLBACKEND_MESALINK = 12, /* deprecated */ + CURLSSLBACKEND_BEARSSL = 13, + CURLSSLBACKEND_RUSTLS = 14 +} curl_sslbackend; +.fi .SH EXAMPLE .nf +int main(void) +{ + int i; /* choose a specific backend */ curl_global_sslset(CURLSSLBACKEND_WOLFSSL, NULL, NULL); @@ -112,6 +117,7 @@ OpenSSL flavor and version number is use. for(i = 0; list[i]; i++) printf("SSL backend #%d: '%s' (ID: %d)\\n", i, list[i]->name, list[i]->id); +} .fi .SH AVAILABILITY This function was added in libcurl 7.56.0. Before this version, there was no diff --git a/external/curl/docs/libcurl/curl_global_trace.3 b/external/curl/docs/libcurl/curl_global_trace.3 index 57cf662e3..010f8470c 100644 --- a/external/curl/docs/libcurl/curl_global_trace.3 +++ b/external/curl/docs/libcurl/curl_global_trace.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_global_trace 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_global_trace 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_global_trace - Global libcurl logging configuration @@ -92,21 +92,24 @@ trace. .SH EXAMPLE .nf - /* log details of HTTP/2 and SSL handling */ - curl_global_trace("http/2,ssl"); - - /* log all details, except SSL handling */ - curl_global_trace("all,-ssl"); +int main(void) +{ + /* log details of HTTP/2 and SSL handling */ + curl_global_trace("http/2,ssl"); + + /* log all details, except SSL handling */ + curl_global_trace("all,-ssl"); +} .fi Below is a trace sample where "http/2" was configured. The trace output of an enabled component appears at the beginning in brackets. .nf * [HTTP/2] [h2sid=1] cf_send(len=96) submit https://example.com/ -... +\&... * [HTTP/2] [h2sid=1] FRAME[HEADERS] * [HTTP/2] [h2sid=1] 249 header bytes -... +\&... .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_mime_addpart.3 b/external/curl/docs/libcurl/curl_mime_addpart.3 index 35e761072..91f1c9f43 100644 --- a/external/curl/docs/libcurl/curl_mime_addpart.3 +++ b/external/curl/docs/libcurl/curl_mime_addpart.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_addpart 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_addpart 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_addpart - append a new empty part to a mime structure @@ -40,18 +40,24 @@ subsequently be populated using functions from the mime API. appended. .SH EXAMPLE .nf - curl_mime *mime; - curl_mimepart *part; +int main(void) +{ + curl_mime *mime; + curl_mimepart *part; - /* create a mime handle */ - mime = curl_mime_init(easy); + CURL *curl = curl_easy_init(); + if(curl) { + /* create a mime handle */ + mime = curl_mime_init(curl); - /* add a part */ - part = curl_mime_addpart(mime); + /* add a part */ + part = curl_mime_addpart(mime); - /* continue and set name + data to the part */ - curl_mime_data(part, "This is the field data", CURL_ZERO_TERMINATED); - curl_mime_name(part, "data"); + /* continue and set name + data to the part */ + curl_mime_data(part, "This is the field data", CURL_ZERO_TERMINATED); + curl_mime_name(part, "data"); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_data.3 b/external/curl/docs/libcurl/curl_mime_data.3 index 8c84e7f39..3bf5e2433 100644 --- a/external/curl/docs/libcurl/curl_mime_data.3 +++ b/external/curl/docs/libcurl/curl_mime_data.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_data 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_data 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_data - set a mime part's body data from memory @@ -53,17 +53,23 @@ Setting large data is memory consuming: one might consider using \fIcurl_mime_data_cb(3)\fP in such a case. .SH EXAMPLE .nf - curl_mime *mime; - curl_mimepart *part; +int main(void) +{ + curl_mime *mime; + curl_mimepart *part; - /* create a mime handle */ - mime = curl_mime_init(easy); + CURL *curl = curl_easy_init(); + if(curl) { + /* create a mime handle */ + mime = curl_mime_init(curl); - /* add a part */ - part = curl_mime_addpart(mime); + /* add a part */ + part = curl_mime_addpart(mime); - /* add data to the part */ - curl_mime_data(part, "raw contents to send", CURL_ZERO_TERMINATED); + /* add data to the part */ + curl_mime_data(part, "raw contents to send", CURL_ZERO_TERMINATED); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_data_cb.3 b/external/curl/docs/libcurl/curl_mime_data_cb.3 index 29eadd729..a8efcd9f0 100644 --- a/external/curl/docs/libcurl/curl_mime_data_cb.3 +++ b/external/curl/docs/libcurl/curl_mime_data_cb.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_data_cb 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_data_cb 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_data_cb - set a callback-based data source for a mime part's body @@ -105,7 +105,7 @@ to avoid overhead resources consumption, one might want to use a callback source to avoid data duplication. In this case, original data must be retained until after the transfer terminates. .nf - +#include /* for memcpy */ char hugedata[512000]; struct ctl { @@ -147,17 +147,22 @@ int seek_callback(void *arg, curl_off_t offset, int origin) return CURL_SEEKFUNC_OK; } - CURL *easy = curl_easy_init(); - curl_mime *mime = curl_mime_init(easy); - curl_mimepart *part = curl_mime_addpart(mime); - struct ctl hugectl; - - hugectl.buffer = hugedata; - hugectl.size = sizeof hugedata; - hugectl.position = 0; - curl_mime_data_cb(part, hugectl.size, read_callback, seek_callback, NULL, - &hugectl); - +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_mime *mime = curl_mime_init(curl); + curl_mimepart *part = curl_mime_addpart(mime); + struct ctl hugectl; + + hugectl.buffer = hugedata; + hugectl.size = sizeof(hugedata); + hugectl.position = 0; + curl_mime_data_cb(part, hugectl.size, read_callback, seek_callback, NULL, + &hugectl); + } +} +.fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. .SH RETURN VALUE diff --git a/external/curl/docs/libcurl/curl_mime_encoder.3 b/external/curl/docs/libcurl/curl_mime_encoder.3 index 7d94818cb..86b7455cf 100644 --- a/external/curl/docs/libcurl/curl_mime_encoder.3 +++ b/external/curl/docs/libcurl/curl_mime_encoder.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_encoder 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_encoder 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_encoder - set a mime part's encoder and content transfer encoding @@ -75,20 +75,26 @@ a part with content set with \fIcurl_mime_subparts(3)\fP is strongly discouraged. .SH EXAMPLE .nf - curl_mime *mime; - curl_mimepart *part; +int main(void) +{ + curl_mime *mime; + curl_mimepart *part; - /* create a mime handle */ - mime = curl_mime_init(easy); + CURL *curl = curl_easy_init(); + if(curl) { + /* create a mime handle */ + mime = curl_mime_init(curl); - /* add a part */ - part = curl_mime_addpart(mime); + /* add a part */ + part = curl_mime_addpart(mime); - /* send a file */ - curl_mime_filedata(part, "image.png"); + /* send a file */ + curl_mime_filedata(part, "image.png"); - /* encode file data in base64 for transfer */ - curl_mime_encoder(part, "base64"); + /* encode file data in base64 for transfer */ + curl_mime_encoder(part, "base64"); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_filedata.3 b/external/curl/docs/libcurl/curl_mime_filedata.3 index f3c7d3798..4cb85ac96 100644 --- a/external/curl/docs/libcurl/curl_mime_filedata.3 +++ b/external/curl/docs/libcurl/curl_mime_filedata.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_filedata 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_filedata 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_filedata - set a mime part's body data from a file contents @@ -59,20 +59,26 @@ Setting a part's contents multiple times is valid: only the value set by the last call is retained. .SH EXAMPLE .nf - curl_mime *mime; - curl_mimepart *part; +int main(void) +{ + curl_mime *mime; + curl_mimepart *part; - /* create a mime handle */ - mime = curl_mime_init(easy); + CURL *curl = curl_easy_init(); + if(curl) { + /* create a mime handle */ + mime = curl_mime_init(curl); - /* add a part */ - part = curl_mime_addpart(mime); + /* add a part */ + part = curl_mime_addpart(mime); - /* send data from this file */ - curl_mime_filedata(part, "image.png"); + /* send data from this file */ + curl_mime_filedata(part, "image.png"); - /* set name */ - curl_mime_name(part, "data"); + /* set name */ + curl_mime_name(part, "data"); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_filename.3 b/external/curl/docs/libcurl/curl_mime_filename.3 index d59378615..621f3b445 100644 --- a/external/curl/docs/libcurl/curl_mime_filename.3 +++ b/external/curl/docs/libcurl/curl_mime_filename.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_filename 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_filename 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_filename - set a mime part's remote file name @@ -48,23 +48,32 @@ storage may safely be released or reused after call. Setting a part's file name multiple times is valid: only the value set by the last call is retained. .SH EXAMPLE .nf - curl_mime *mime; - curl_mimepart *part; - /* create a mime handle */ - mime = curl_mime_init(easy); +static char imagebuf[]="imagedata"; - /* add a part */ - part = curl_mime_addpart(mime); +int main(void) +{ + curl_mime *mime; + curl_mimepart *part; - /* send image data from memory */ - curl_mime_data(part, imagebuf, imagebuf_len); + CURL *curl = curl_easy_init(); + if(curl) { + /* create a mime handle */ + mime = curl_mime_init(curl); - /* set a file name to make it look like a file upload */ - curl_mime_filename(part, "image.png"); + /* add a part */ + part = curl_mime_addpart(mime); - /* set name */ - curl_mime_name(part, "data"); + /* send image data from memory */ + curl_mime_data(part, imagebuf, sizeof(imagebuf)); + + /* set a file name to make it look like a file upload */ + curl_mime_filename(part, "image.png"); + + /* set name */ + curl_mime_name(part, "data"); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_free.3 b/external/curl/docs/libcurl/curl_mime_free.3 index 146b3f723..e55d4b637 100644 --- a/external/curl/docs/libcurl/curl_mime_free.3 +++ b/external/curl/docs/libcurl/curl_mime_free.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_free 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_free 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_free - free a previously built mime structure @@ -48,13 +48,19 @@ Passing in a NULL pointer in \fImime\fP makes this function return immediately with no action. .SH EXAMPLE .nf - /* Build the mime message. */ - mime = curl_mime_init(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* Build the mime message. */ + curl_mime *mime = curl_mime_init(curl); - /* ... */ + /* send off the transfer */ - /* Free multipart message. */ - curl_mime_free(mime); + /* Free multipart message. */ + curl_mime_free(mime); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_headers.3 b/external/curl/docs/libcurl/curl_mime_headers.3 index 486ea3e98..c136d50dd 100644 --- a/external/curl/docs/libcurl/curl_mime_headers.3 +++ b/external/curl/docs/libcurl/curl_mime_headers.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_headers 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_headers 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_headers - set a mime part's custom headers @@ -48,18 +48,32 @@ Setting a part's custom headers list multiple times is valid: only the value set by the last call is retained. .SH EXAMPLE .nf - struct curl_slist *headers = NULL; +int main(void) +{ + struct curl_slist *headers = NULL; + CURL *easy = curl_easy_init(); + curl_mime *mime; + curl_mimepart *part; - headers = curl_slist_append(headers, "Custom-Header: mooo"); + headers = curl_slist_append(headers, "Custom-Header: mooo"); - /* use these headers, please take ownership */ - curl_mime_headers(part, headers, TRUE); + mime = curl_mime_init(easy); + part = curl_mime_addpart(mime); - /* pass on this data */ - curl_mime_data(part, "12345679", CURL_ZERO_TERMINATED); + /* use these headers in the part, takes ownership */ + curl_mime_headers(part, headers, 1); - /* set name */ - curl_mime_name(part, "numbers"); + /* pass on this data */ + curl_mime_data(part, "12345679", CURL_ZERO_TERMINATED); + + /* set name */ + curl_mime_name(part, "numbers"); + + /* Post and send it. */ + curl_easy_setopt(easy, CURLOPT_MIMEPOST, mime); + curl_easy_setopt(easy, CURLOPT_URL, "https://example.com"); + curl_easy_perform(easy); +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_init.3 b/external/curl/docs/libcurl/curl_mime_init.3 index eb427d50a..fc1a39005 100644 --- a/external/curl/docs/libcurl/curl_mime_init.3 +++ b/external/curl/docs/libcurl/curl_mime_init.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_init 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_init 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_init - create a mime handle @@ -45,24 +45,28 @@ Using a mime handle is the recommended way to post an HTTP form, format and send a multi-part email with SMTP or upload such an email to an IMAP server. .SH EXAMPLE .nf - CURL *easy = curl_easy_init(); - curl_mime *mime; - curl_mimepart *part; +int main(void) +{ + CURL *easy = curl_easy_init(); + curl_mime *mime; + curl_mimepart *part; - /* Build an HTTP form with a single field named "data", */ - mime = curl_mime_init(easy); - part = curl_mime_addpart(mime); - curl_mime_data(part, "This is the field data", CURL_ZERO_TERMINATED); - curl_mime_name(part, "data"); + /* Build an HTTP form with a single field named "data", */ + mime = curl_mime_init(easy); + part = curl_mime_addpart(mime); + curl_mime_data(part, "This is the field data", CURL_ZERO_TERMINATED); + curl_mime_name(part, "data"); - /* Post and send it. */ - curl_easy_setopt(easy, CURLOPT_MIMEPOST, mime); - curl_easy_setopt(easy, CURLOPT_URL, "https://example.com"); - curl_easy_perform(easy); + /* Post and send it. */ + curl_easy_setopt(easy, CURLOPT_MIMEPOST, mime); + curl_easy_setopt(easy, CURLOPT_URL, "https://example.com"); + curl_easy_perform(easy); - /* Clean-up. */ - curl_easy_cleanup(easy); - curl_mime_free(mime); + /* Clean-up. */ + curl_easy_cleanup(easy); + curl_mime_free(mime); +} +.fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. .SH RETURN VALUE diff --git a/external/curl/docs/libcurl/curl_mime_name.3 b/external/curl/docs/libcurl/curl_mime_name.3 index 5dae9ee94..fa0c5e8bb 100644 --- a/external/curl/docs/libcurl/curl_mime_name.3 +++ b/external/curl/docs/libcurl/curl_mime_name.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_name 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_name 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_name - set a mime part's name @@ -45,17 +45,23 @@ is valid: only the value set by the last call is retained. It is possible to reset the name of a part by setting \fIname\fP to NULL. .SH EXAMPLE .nf - curl_mime *mime; - curl_mimepart *part; +int main(void) +{ + curl_mime *mime; + curl_mimepart *part; - /* create a mime handle */ - mime = curl_mime_init(easy); + CURL *curl = curl_easy_init(); + if(curl) { + /* create a mime handle */ + mime = curl_mime_init(curl); - /* add a part */ - part = curl_mime_addpart(mime); + /* add a part */ + part = curl_mime_addpart(mime); - /* give the part a name */ - curl_mime_name(part, "shoe_size"); + /* give the part a name */ + curl_mime_name(part, "shoe_size"); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_subparts.3 b/external/curl/docs/libcurl/curl_mime_subparts.3 index ba3c87376..963270def 100644 --- a/external/curl/docs/libcurl/curl_mime_subparts.3 +++ b/external/curl/docs/libcurl/curl_mime_subparts.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_subparts 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_subparts 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_subparts - set sub-parts of a multipart mime part @@ -47,25 +47,38 @@ last call is retained. It is possible to unassign previous part's contents by setting \fIsubparts\fP to NULL. .SH EXAMPLE .nf - /* The inline part is an alternative proposing the html and the text - versions of the email. */ - alt = curl_mime_init(curl); - /* HTML message. */ - part = curl_mime_addpart(alt); - curl_mime_data(part, inline_html, CURL_ZERO_TERMINATED); - curl_mime_type(part, "text/html"); +static char *inline_html = "example"; +static char *inline_text = "once upon the time"; - /* Text message. */ - part = curl_mime_addpart(alt); - curl_mime_data(part, inline_text, CURL_ZERO_TERMINATED); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct curl_slist *slist; - /* Create the inline part. */ - part = curl_mime_addpart(mime); - curl_mime_subparts(part, alt); - curl_mime_type(part, "multipart/alternative"); - slist = curl_slist_append(NULL, "Content-Disposition: inline"); - curl_mime_headers(part, slist, 1); + /* The inline part is an alternative proposing the html and the text + versions of the email. */ + curl_mime *alt = curl_mime_init(curl); + curl_mimepart *part; + + /* HTML message. */ + part = curl_mime_addpart(alt); + curl_mime_data(part, inline_html, CURL_ZERO_TERMINATED); + curl_mime_type(part, "text/html"); + + /* Text message. */ + part = curl_mime_addpart(alt); + curl_mime_data(part, inline_text, CURL_ZERO_TERMINATED); + + /* Create the inline part. */ + part = curl_mime_addpart(alt); + curl_mime_subparts(part, alt); + curl_mime_type(part, "multipart/alternative"); + slist = curl_slist_append(NULL, "Content-Disposition: inline"); + curl_mime_headers(part, slist, 1); + } +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mime_type.3 b/external/curl/docs/libcurl/curl_mime_type.3 index 698e6e561..2539be76f 100644 --- a/external/curl/docs/libcurl/curl_mime_type.3 +++ b/external/curl/docs/libcurl/curl_mime_type.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_mime_type 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_mime_type 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_mime_type - set a mime part's content type @@ -58,23 +58,29 @@ extension, or application/octet-stream by default. - text/plain in other cases. .SH EXAMPLE .nf - curl_mime *mime; - curl_mimepart *part; +int main(void) +{ + curl_mime *mime; + curl_mimepart *part; - /* create a mime handle */ - mime = curl_mime_init(easy); + CURL *curl = curl_easy_init(); + if(curl) { + /* create a mime handle */ + mime = curl_mime_init(curl); - /* add a part */ - part = curl_mime_addpart(mime); + /* add a part */ + part = curl_mime_addpart(mime); - /* get data from this file */ - curl_mime_filedata(part, "image.png"); + /* get data from this file */ + curl_mime_filedata(part, "image.png"); - /* content-type for this part */ - curl_mime_type(part, "image/png"); + /* content-type for this part */ + curl_mime_type(part, "image/png"); - /* set name */ - curl_mime_name(part, "image"); + /* set name */ + curl_mime_name(part, "image"); +} +} .fi .SH AVAILABILITY As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0. diff --git a/external/curl/docs/libcurl/curl_mprintf.3 b/external/curl/docs/libcurl/curl_mprintf.3 index 6b1e5198b..d63c52608 100644 --- a/external/curl/docs/libcurl/curl_mprintf.3 +++ b/external/curl/docs/libcurl/curl_mprintf.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_printf 3 "August 22, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_printf 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf @@ -238,8 +238,13 @@ by the corresponding argument. A '%' is written. No argument is converted. .SH EXAMPLE .nf +const char *name = "John"; + +int main(void) +{ curl_mprintf("My name is %s\\n", name); - curl_mprintf("Pi is almost %f\\n", 25/8); + curl_mprintf("Pi is almost %f\\n", (double)25.0/8); +} .fi .SH AVAILABILITY These functions might be removed from the public libcurl API in the future. Do diff --git a/external/curl/docs/libcurl/curl_multi_add_handle.3 b/external/curl/docs/libcurl/curl_multi_add_handle.3 index 92564c883..18c3c277d 100644 --- a/external/curl/docs/libcurl/curl_multi_add_handle.3 +++ b/external/curl/docs/libcurl/curl_multi_add_handle.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_add_handle 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_add_handle 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_add_handle - add an easy handle to a multi session @@ -68,12 +68,19 @@ first the easy handle and then the multi handle: 3 - \fIcurl_multi_cleanup(3)\fP .SH EXAMPLE .nf +int main(void) +{ /* init a multi stack */ - multi_handle = curl_multi_init(); + CURLM *multi = curl_multi_init(); + + /* create two easy handles */ + CURL *http_handle = curl_easy_init(); + CURL *http_handle2 = curl_easy_init(); /* add individual transfers */ - curl_multi_add_handle(multi_handle, http_handle); - curl_multi_add_handle(multi_handle, http_handle2); + curl_multi_add_handle(multi, http_handle); + curl_multi_add_handle(multi, http_handle2); +} .fi .SH AVAILABILITY Added in 7.9.6 diff --git a/external/curl/docs/libcurl/curl_multi_assign.3 b/external/curl/docs/libcurl/curl_multi_assign.3 index 4fb3eb6e1..c2250cc01 100644 --- a/external/curl/docs/libcurl/curl_multi_assign.3 +++ b/external/curl/docs/libcurl/curl_multi_assign.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_assign 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_assign 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_assign \- set data to associate with an internal socket @@ -55,8 +55,17 @@ functionality. It is acceptable to call this function from your multi callback functions. .SH EXAMPLE .nf - /* make our struct pointer associated with socket fd */ - mc = curl_multi_assign(multi_handle, fd, ourstructp); +int main(void) +{ + CURLM *multi = curl_multi_init(); + void *ourstructp; /* pointer to our data */ + curl_socket_t fd; /* file descriptor to associate our data with */ + + /* make our struct pointer associated with socket fd */ + CURLMcode mc = curl_multi_assign(multi, fd, ourstructp); + if(mc) + printf("error: %s\\n", curl_multi_strerror(mc)); +} .fi .SH AVAILABILITY Added in 7.15.5 diff --git a/external/curl/docs/libcurl/curl_multi_cleanup.3 b/external/curl/docs/libcurl/curl_multi_cleanup.3 index e441d6fc5..512f53dd9 100644 --- a/external/curl/docs/libcurl/curl_multi_cleanup.3 +++ b/external/curl/docs/libcurl/curl_multi_cleanup.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_cleanup 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_cleanup 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_cleanup - close down a multi session @@ -49,10 +49,15 @@ Passing in a NULL pointer in \fImulti_handle\fP makes this function return CURLM_BAD_HANDLE immediately with no other action. .SH EXAMPLE .nf - /* when the multi transfer is done ... */ +int main(void) +{ + CURLM *multi = curl_multi_init(); - /* remove all easy handles, then: */ - curl_multi_cleanup(multi_handle); + /* when the multi transfer is done ... */ + + /* remove all easy handles, then: */ + curl_multi_cleanup(multi); +} .fi .SH AVAILABILITY Added in 7.9.6 diff --git a/external/curl/docs/libcurl/curl_multi_fdset.3 b/external/curl/docs/libcurl/curl_multi_fdset.3 index a02df3d3e..839fdbcb3 100644 --- a/external/curl/docs/libcurl/curl_multi_fdset.3 +++ b/external/curl/docs/libcurl/curl_multi_fdset.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_fdset 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_fdset 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_fdset - extracts file descriptor information from a multi handle @@ -34,7 +34,7 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd); -.ad +.fi .SH DESCRIPTION This function extracts file descriptor information from a given multi_handle. libcurl returns its \fIfd_set\fP sets. The application can use these to @@ -81,16 +81,35 @@ save you from the crash, but makes your program NOT wait for sockets it should wait for... .SH EXAMPLE .nf - /* get file descriptors from the transfers */ - mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); +int main(void) +{ + fd_set fdread; + fd_set fdwrite; + fd_set fdexcep; + int maxfd; + int rc; + CURLMcode mc; + struct timeval timeout = {1, 0}; + + CURLM *multi = curl_multi_init(); + + do { + + /* call curl_multi_perform() */ + + /* get file descriptors from the transfers */ + mc = curl_multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd); + + if(mc != CURLM_OK) { + fprintf(stderr, "curl_multi_fdset() failed, code %d.\\n", mc); + break; + } - if(mc != CURLM_OK) { - fprintf(stderr, "curl_multi_fdset() failed, code %d.\\n", mc); - break; - } + /* wait for activity on one of the sockets */ + rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout); - /* wait for activity on one of the sockets */ - rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout); + } while(!mc); +} .fi .SH AVAILABILITY Added in 7.9.6 diff --git a/external/curl/docs/libcurl/curl_multi_get_handles.3 b/external/curl/docs/libcurl/curl_multi_get_handles.3 index 209762dc6..7dea15d14 100644 --- a/external/curl/docs/libcurl/curl_multi_get_handles.3 +++ b/external/curl/docs/libcurl/curl_multi_get_handles.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_get_handles 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_get_handles 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_get_handles - returns all added easy handles @@ -48,22 +48,29 @@ The order of the easy handles within the array is not guaranteed. The returned array must be freed with a call to \fIcurl_free(3)\fP after use. .SH EXAMPLE .nf +int main(void) +{ /* init a multi stack */ - multi_handle = curl_multi_init(); + CURLM *multi = curl_multi_init(); + CURL *curl = curl_easy_init(); - /* add a transfer */ - curl_multi_add_handle(multi_handle, http_handle); + if(curl) { + /* add the transfer */ + curl_multi_add_handle(multi, curl); - /* extract all added handles */ - CURL **list = curl_multi_get_handles(multi_handle); + /* extract all added handles */ + CURL **list = curl_multi_get_handles(multi); - if(list) { - /* remove all added handles */ - for(i = 0; list[i]; i++) { - curl_multi_remove_handle(multi_handle, list[i]); + if(list) { + int i; + /* remove all added handles */ + for(i = 0; list[i]; i++) { + curl_multi_remove_handle(multi, list[i]); + } + curl_free(list); } - curl_free(list); } +} .fi .SH AVAILABILITY Added in 8.4.0 diff --git a/external/curl/docs/libcurl/curl_multi_info_read.3 b/external/curl/docs/libcurl/curl_multi_info_read.3 index 092dc5a84..4cef6e94b 100644 --- a/external/curl/docs/libcurl/curl_multi_info_read.3 +++ b/external/curl/docs/libcurl/curl_multi_info_read.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_info_read 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_info_read 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_info_read - read multi stack information @@ -73,21 +73,28 @@ that just completed. At this point, there are no other \fBmsg\fP types defined. .SH EXAMPLE .nf -struct CURLMsg *m; +int main(void) +{ + CURLM *multi = curl_multi_init(); + CURL *curl = curl_easy_init(); + if(curl) { + struct CURLMsg *m; -/* call curl_multi_perform or curl_multi_socket_action first, then loop - through and check if there are any transfers that have completed */ + /* call curl_multi_perform or curl_multi_socket_action first, then loop + through and check if there are any transfers that have completed */ -do { - int msgq = 0; - m = curl_multi_info_read(multi_handle, &msgq); - if(m && (m->msg == CURLMSG_DONE)) { - CURL *e = m->easy_handle; - transfers--; - curl_multi_remove_handle(multi_handle, e); - curl_easy_cleanup(e); + do { + int msgq = 0; + m = curl_multi_info_read(multi, &msgq); + if(m && (m->msg == CURLMSG_DONE)) { + CURL *e = m->easy_handle; + /* m->data.result holds the error code for the transfer */ + curl_multi_remove_handle(multi, e); + curl_easy_cleanup(e); + } + } while(m); } -} while(m); +} .fi .SH AVAILABILITY Added in 7.9.6 diff --git a/external/curl/docs/libcurl/curl_multi_init.3 b/external/curl/docs/libcurl/curl_multi_init.3 index cf698b565..87ed6c1e7 100644 --- a/external/curl/docs/libcurl/curl_multi_init.3 +++ b/external/curl/docs/libcurl/curl_multi_init.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_init 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_init 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_init - create a multi handle @@ -38,12 +38,17 @@ places in the documentation. This init call MUST have a corresponding call to \fIcurl_multi_cleanup(3)\fP when the operation is complete. .SH EXAMPLE .nf -/* init a multi stack */ -multi_handle = curl_multi_init(); +int main(void) +{ + /* init a multi stack */ + CURLM *multi = curl_multi_init(); + CURL *curl = curl_easy_init(); + CURL *curl2 = curl_easy_init(); -/* add individual transfers */ -curl_multi_add_handle(multi_handle, http_handle); -curl_multi_add_handle(multi_handle, http_handle2); + /* add individual transfers */ + curl_multi_add_handle(multi, curl); + curl_multi_add_handle(multi, curl2); +} .fi .SH AVAILABILITY Added in 7.9.6 diff --git a/external/curl/docs/libcurl/curl_multi_perform.3 b/external/curl/docs/libcurl/curl_multi_perform.3 index 07642340a..e501d645f 100644 --- a/external/curl/docs/libcurl/curl_multi_perform.3 +++ b/external/curl/docs/libcurl/curl_multi_perform.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_perform 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_perform 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_perform - reads/writes available data from easy handles @@ -63,21 +63,29 @@ again on the same multi handle after an error has been returned, unless first removing all the handles and adding new ones. .SH EXAMPLE .nf -int still_running; -do { - CURLMcode mc = curl_multi_perform(multi_handle, &still_running); +int main(void) +{ + int still_running; + CURL *multi = curl_multi_init(); + CURL *curl = curl_easy_init(); + if(curl) { + curl_multi_add_handle(multi, curl); + do { + CURLMcode mc = curl_multi_perform(multi, &still_running); - if(!mc && still_running) - /* wait for activity, timeout or "nothing" */ - mc = curl_multi_poll(multi_handle, NULL, 0, 1000, NULL); + if(!mc && still_running) + /* wait for activity, timeout or "nothing" */ + mc = curl_multi_poll(multi, NULL, 0, 1000, NULL); - if(mc) { - fprintf(stderr, "curl_multi_poll() failed, code %d.\\n", (int)mc); - break; - } + if(mc) { + fprintf(stderr, "curl_multi_poll() failed, code %d.\\n", (int)mc); + break; + } -/* if there are still transfers, loop! */ -} while(still_running); + /* if there are still transfers, loop! */ + } while(still_running); + } +} .fi .SH AVAILABILITY Added in 7.9.6 diff --git a/external/curl/docs/libcurl/curl_multi_poll.3 b/external/curl/docs/libcurl/curl_multi_poll.3 index 26a9fd6b1..bad6f338e 100644 --- a/external/curl/docs/libcurl/curl_multi_poll.3 +++ b/external/curl/docs/libcurl/curl_multi_poll.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_poll 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_poll 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_poll - polls on all easy handles in a multi handle @@ -34,7 +34,7 @@ CURLMcode curl_multi_poll(CURLM *multi_handle, unsigned int extra_nfds, int timeout_ms, int *numfds); -.ad +.fi .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 blocks until activity is @@ -84,31 +84,35 @@ 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; +int main(void) +{ + CURL *easy_handle; + CURLM *multi_handle; + int still_running = 0; -/* add the individual easy handle */ -curl_multi_add_handle(multi_handle, easy_handle); + /* add the individual easy handle */ + curl_multi_add_handle(multi_handle, easy_handle); -do { - CURLMcode mc; - int numfds; + do { + CURLMcode mc; + int numfds; - mc = curl_multi_perform(multi_handle, &still_running); + 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) { + /* 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; - } + if(mc != CURLM_OK) { + fprintf(stderr, "curl_multi failed, code %d.\\n", mc); + break; + } -} while(still_running); + } while(still_running); -curl_multi_remove_handle(multi_handle, easy_handle); + curl_multi_remove_handle(multi_handle, easy_handle); +} .fi .SH AVAILABILITY Added in 7.66.0. diff --git a/external/curl/docs/libcurl/curl_multi_remove_handle.3 b/external/curl/docs/libcurl/curl_multi_remove_handle.3 index bfa112b86..383d6e65a 100644 --- a/external/curl/docs/libcurl/curl_multi_remove_handle.3 +++ b/external/curl/docs/libcurl/curl_multi_remove_handle.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_remove_handle 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_remove_handle 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_remove_handle - remove an easy handle from a multi session @@ -53,13 +53,19 @@ multi handle, ready to get reused for a future transfer using this multi handle. .SH EXAMPLE .nf -/* when an easy handle has completed, remove it */ -msg = curl_multi_info_read(multi_handle, &queued); -if(msg) { - if(msg->msg == CURLMSG_DONE) { - /* a transfer ended */ - fprintf(stderr, "Transfer completed\\n"); - curl_multi_remove_handle(multi_handle, msg->easy_handle); +int main(void) +{ + CURLM *multi = curl_multi_init(); + int queued = 0; + + /* when an easy handle has completed, remove it */ + CURLMsg *msg = curl_multi_info_read(multi, &queued); + if(msg) { + if(msg->msg == CURLMSG_DONE) { + /* a transfer ended */ + fprintf(stderr, "Transfer completed\\n"); + curl_multi_remove_handle(multi, msg->easy_handle); + } } } .fi diff --git a/external/curl/docs/libcurl/curl_multi_setopt.3 b/external/curl/docs/libcurl/curl_multi_setopt.3 index 4ddfb1344..2306f8b8e 100644 --- a/external/curl/docs/libcurl/curl_multi_setopt.3 +++ b/external/curl/docs/libcurl/curl_multi_setopt.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_setopt 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_setopt 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_setopt \- set options for a curl multi handle @@ -29,17 +29,17 @@ curl_multi_setopt \- set options for a curl multi handle .nf #include -CURLMcode curl_multi_setopt(CURLM *multi_handle, CURLMoption option, param); +CURLMcode curl_multi_setopt(CURLM *multi_handle, CURLMoption option, parameter); .fi .SH DESCRIPTION \fIcurl_multi_setopt(3)\fP is used to tell a libcurl multi handle how to behave. By using the appropriate options to \fIcurl_multi_setopt(3)\fP, you can change libcurl's behavior when using that multi handle. All options are -set with the \fIoption\fP followed by the parameter \fIparam\fP. That -parameter can be a \fBlong\fP, a \fBfunction pointer\fP, an \fBobject -pointer\fP or a \fBcurl_off_t\fP type, depending on what the specific option -expects. Read this manual carefully as bad input values may cause libcurl to -behave badly. You can only set one option in each function call. +set with the \fIoption\fP followed by the \fIparameter\fP. That parameter can +be a \fBlong\fP, a \fBfunction pointer\fP, an \fBobject pointer\fP or a +\fBcurl_off_t\fP type, depending on what the specific option expects. Read +this manual carefully as bad input values may cause libcurl to behave +badly. You can only set one option in each function call. .SH OPTIONS .IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE @@ -75,10 +75,17 @@ See \fICURLMOPT_TIMERDATA(3)\fP .IP CURLMOPT_MAX_CONCURRENT_STREAMS See \fICURLMOPT_MAX_CONCURRENT_STREAMS(3)\fP .SH EXAMPLE -.fi - /* Limit the amount of simultaneous connections curl should allow: */ - curl_multi_setopt(handle, CURLMOPT_MAXCONNECTS, (long)MAX_PARALLEL); .nf + +#define MAX_PARALLEL 45 + +int main(void) +{ + CURLM *multi; + /* Limit the amount of simultaneous connections curl should allow: */ + curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, (long)MAX_PARALLEL); +} +.fi .SH AVAILABILITY Added in 7.15.4 .SH RETURN VALUE diff --git a/external/curl/docs/libcurl/curl_multi_socket.3 b/external/curl/docs/libcurl/curl_multi_socket.3 index 061be3a6e..e511689b8 100644 --- a/external/curl/docs/libcurl/curl_multi_socket.3 +++ b/external/curl/docs/libcurl/curl_multi_socket.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_socket 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_socket 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_socket \- reads/writes available data @@ -71,10 +71,16 @@ just a single one by calling \fIcurl_multi_socket_all(3)\fP. Note that there should not be any reason to use this function. .SH EXAMPLE .nf -/* the event-library gets told when there activity on the socket 'fd', - which we translate to a call to curl_multi_socket_action() */ -int running; -rc = curl_multi_socket(multi_handle, fd, &running); +int main(void) +{ + /* the event-library gets told when there activity on the socket 'fd', + which we translate to a call to curl_multi_socket_action() */ + int running; + int rc; + int fd; + CURLM *multi; + rc = curl_multi_socket(multi, fd, &running); +} .fi .SH AVAILABILITY This function was added in libcurl 7.15.4, and is deemed stable since diff --git a/external/curl/docs/libcurl/curl_multi_socket_action.3 b/external/curl/docs/libcurl/curl_multi_socket_action.3 index 34d37a0cc..d81e3ca86 100644 --- a/external/curl/docs/libcurl/curl_multi_socket_action.3 +++ b/external/curl/docs/libcurl/curl_multi_socket_action.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_socket_action 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_socket_action 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_socket_action \- reads/writes available data given an action @@ -98,11 +98,18 @@ socket(s) that got action. If no activity is detected and the timeout expires, call \fIcurl_multi_socket_action(3)\fP with \fICURL_SOCKET_TIMEOUT\fP. .SH EXAMPLE .nf -/* the event-library gets told when there activity on the socket 'fd', - which we translate to a call to curl_multi_socket_action() */ -int running; -rc = curl_multi_socket_action(multi_handle, fd, EVENT, - &running); +int main(void) +{ + /* the event-library gets told when there activity on the socket 'fd', + which we translate to a call to curl_multi_socket_action() */ + int running; + CURLM *multi; /* the stack we work with */ + int fd; /* the descriptor that had action */ + int bitmask; /* what activity that happened */ + CURLMcode mc = curl_multi_socket_action(multi, fd, bitmask, &running); + if(mc) + printf("error: %s\\n", curl_multi_strerror(mc)); +} .fi .SH AVAILABILITY This function was added in libcurl 7.15.4, and is deemed stable since 7.16.0. diff --git a/external/curl/docs/libcurl/curl_multi_strerror.3 b/external/curl/docs/libcurl/curl_multi_strerror.3 index 136856a53..6f67b4f2d 100644 --- a/external/curl/docs/libcurl/curl_multi_strerror.3 +++ b/external/curl/docs/libcurl/curl_multi_strerror.3 @@ -21,24 +21,30 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_strerror 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_strerror 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_strerror - return string describing error code .SH SYNOPSIS .nf -.B #include -.BI "const char *curl_multi_strerror(CURLMcode " errornum ");" +#include + +const char *curl_multi_strerror(CURLMcode errornum); +.fi .SH DESCRIPTION This function returns a string describing the \fICURLMcode\fP error code passed in the argument \fIerrornum\fP. .SH EXAMPLE .nf -int still_running; +int main(void) +{ + int still_running; + CURLM *multi = curl_multi_init(); -CURLMcode mc = curl_multi_perform(multi_handle, &still_running); -if(mc) - printf("error: %s\\n", curl_multi_strerror(mc)); + CURLMcode mc = curl_multi_perform(multi, &still_running); + if(mc) + printf("error: %s\\n", curl_multi_strerror(mc)); +} .fi .SH AVAILABILITY This function was added in libcurl 7.12.0 diff --git a/external/curl/docs/libcurl/curl_multi_timeout.3 b/external/curl/docs/libcurl/curl_multi_timeout.3 index 83dfb59f6..f3a2d94d3 100644 --- a/external/curl/docs/libcurl/curl_multi_timeout.3 +++ b/external/curl/docs/libcurl/curl_multi_timeout.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_timeout 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_timeout 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_timeout \- how long to wait for action before proceeding @@ -55,19 +55,27 @@ currently has no stored timeout value. You must not wait too long (more than a few seconds perhaps) before you call \fIcurl_multi_perform(3)\fP again. .SH EXAMPLE .nf -struct timeval timeout; -long timeo; +int main(void) +{ + struct timeval timeout; + long timeo; + fd_set fdread; + fd_set fdwrite; + fd_set fdexcep; + int maxfd; + CURLM *multi = curl_multi_init(); -curl_multi_timeout(multi_handle, &timeo); -if(timeo < 0) - /* no set timeout, use a default */ - timeo = 980; + curl_multi_timeout(multi, &timeo); + if(timeo < 0) + /* no set timeout, use a default */ + timeo = 980; -timeout.tv_sec = timeo / 1000; -timeout.tv_usec = (timeo % 1000) * 1000; + timeout.tv_sec = timeo / 1000; + timeout.tv_usec = (timeo % 1000) * 1000; -/* wait for activities no longer than the set timeout */ -select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + /* wait for activities no longer than the set timeout */ + select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout); +} .fi .SH TYPICAL USAGE Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. Figure diff --git a/external/curl/docs/libcurl/curl_multi_wait.3 b/external/curl/docs/libcurl/curl_multi_wait.3 index bea7365c5..15f2ba717 100644 --- a/external/curl/docs/libcurl/curl_multi_wait.3 +++ b/external/curl/docs/libcurl/curl_multi_wait.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_wait 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_wait 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_wait - polls on all easy handles in a multi handle @@ -34,7 +34,7 @@ CURLMcode curl_multi_wait(CURLM *multi_handle, unsigned int extra_nfds, int timeout_ms, int *numfds); -.ad +.fi .SH DESCRIPTION \fIcurl_multi_wait(3)\fP polls all file descriptors used by the curl easy handles contained in the given multi handle set. It blocks until activity is @@ -78,45 +78,35 @@ Bit flag to \fIcurl_waitfd.events\fP 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); +int main(void) +{ + CURL *easy; + CURLM *multi = curl_multi_init(); + int still_running; -do { - CURLMcode mc; - int numfds; + /* add the individual easy handle */ + curl_multi_add_handle(multi, easy); - mc = curl_multi_perform(multi_handle, &still_running); + do { + CURLMcode mc; + int numfds; - if(mc == CURLM_OK ) { - /* wait for activity, timeout or "nothing" */ - mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds); - } + mc = curl_multi_perform(multi, &still_running); - if(mc != CURLM_OK) { - fprintf(stderr, "curl_multi failed, code %d.\\n", mc); - break; - } - - /* 'numfds' being zero means either a timeout or no file descriptors to - wait for. Try timeout on first occurrence, then assume no file - descriptors and no file descriptors to wait for means wait for 100 - milliseconds. */ + if(mc == CURLM_OK) { + /* wait for activity, timeout or "nothing" */ + mc = curl_multi_wait(multi, NULL, 0, 1000, &numfds); + } - if(!numfds) { - repeats++; /* count number of repeated zero numfds */ - if(repeats > 1) { - WAITMS(100); /* sleep 100 milliseconds */ + if(mc != CURLM_OK) { + fprintf(stderr, "curl_multi failed, code %d.\\n", mc); + break; } - } - else - repeats = 0; -} while(still_running); + } while(still_running); -curl_multi_remove_handle(multi_handle, easy_handle); + curl_multi_remove_handle(multi, easy); +} .fi .SH AVAILABILITY This function was added in libcurl 7.28.0. diff --git a/external/curl/docs/libcurl/curl_multi_wakeup.3 b/external/curl/docs/libcurl/curl_multi_wakeup.3 index fe37a7a01..0c0b1354f 100644 --- a/external/curl/docs/libcurl/curl_multi_wakeup.3 +++ b/external/curl/docs/libcurl/curl_multi_wakeup.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_multi_wakeup 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_multi_wakeup 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_multi_wakeup - wakes up a sleeping curl_multi_poll call @@ -46,40 +46,47 @@ that multiple calls to this function wake up the same waiting operation. This function has no effect on \fIcurl_multi_wait(3)\fP calls. .SH EXAMPLE .nf -CURL *easy_handle; -CURLM *multi_handle; +extern int time_to_die(void); +extern int set_something_to_signal_thread_1_to_exit(void); +extern int decide_to_stop_thread1(); -/* add the individual easy handle */ -curl_multi_add_handle(multi_handle, easy_handle); +int main(void) +{ + CURL *easy; + CURLM *multi; + int still_running; -/* this is thread 1 */ -do { - CURLMcode mc; - int numfds; + /* add the individual easy handle */ + curl_multi_add_handle(multi, easy); - mc = curl_multi_perform(multi_handle, &still_running); + /* this is thread 1 */ + do { + CURLMcode mc; + int numfds; - if(mc == CURLM_OK) { - /* wait for activity, timeout or wakeup */ - mc = curl_multi_poll(multi_handle, NULL, 0, 10000, &numfds); - } + mc = curl_multi_perform(multi, &still_running); - if(time_to_die()) - exit(1); + if(mc == CURLM_OK) { + /* wait for activity, timeout or wakeup */ + mc = curl_multi_poll(multi, NULL, 0, 10000, &numfds); + } -} while(still_running); + if(time_to_die()) + return 1; -curl_multi_remove_handle(multi_handle, easy_handle); + } while(still_running); -/* this is thread 2 */ + curl_multi_remove_handle(multi, easy); -if(something makes us decide to stop thread 1) { + /* this is thread 2 */ - set_something_to_signal_thread_1_to_exit(); + if(decide_to_stop_thread1()) { - curl_multi_wakeup(multi_handle); -} + set_something_to_signal_thread_1_to_exit(); + curl_multi_wakeup(multi); + } +} .fi .SH AVAILABILITY Added in 7.68.0 diff --git a/external/curl/docs/libcurl/curl_pushheader_byname.3 b/external/curl/docs/libcurl/curl_pushheader_byname.3 index b3b932b13..76af69c75 100644 --- a/external/curl/docs/libcurl/curl_pushheader_byname.3 +++ b/external/curl/docs/libcurl/curl_pushheader_byname.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_pushheader_byname 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_pushheader_byname 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_pushheader_byname - get a push header by name @@ -44,11 +44,13 @@ one header field use the same name, this returns only the first one. .SH EXAMPLE .nf -int curl_push_callback(CURL *parent, - CURL *easy, - size_t num_headers, - struct curl_pushheaders *headers, - void *clientp) +#include /* for strncmp */ + +static int push_cb(CURL *parent, + CURL *easy, + size_t num_headers, + struct curl_pushheaders *headers, + void *clientp) { char *headp; int *transfers = (int *)clientp; @@ -70,8 +72,13 @@ int curl_push_callback(CURL *parent, return CURL_PUSH_DENY; } -curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, curl_push_callback); -curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter); +int main(void) +{ + int counter; + CURLM *multi = curl_multi_init(); + curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_cb); + curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter); +} .fi .SH AVAILABILITY Added in 7.44.0 diff --git a/external/curl/docs/libcurl/curl_pushheader_bynum.3 b/external/curl/docs/libcurl/curl_pushheader_bynum.3 index b67d159c6..4b0862497 100644 --- a/external/curl/docs/libcurl/curl_pushheader_bynum.3 +++ b/external/curl/docs/libcurl/curl_pushheader_bynum.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_pushheader_bynum 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_pushheader_bynum 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_pushheader_bynum - get a push header by index @@ -44,13 +44,13 @@ libcurl when this callback returns. The returned pointer points to a .SH EXAMPLE .nf /* output all the incoming push request headers */ -int curl_push_callback(CURL *parent, - CURL *easy, - size_t num_headers, - struct curl_pushheaders *headers, - void *clientp) +static int push_cb(CURL *parent, + CURL *easy, + size_t num_headers, + struct curl_pushheaders *headers, + void *clientp) { - sizt_t i = 0; + int i = 0; char *field; do { field = curl_pushheader_bynum(headers, i); @@ -61,7 +61,11 @@ int curl_push_callback(CURL *parent, return CURL_PUSH_OK; /* permission granted */ } -curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, curl_push_callback); +int main(void) +{ + CURLM *multi = curl_multi_init(); + curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_cb); +} .fi .SH AVAILABILITY Added in 7.44.0 diff --git a/external/curl/docs/libcurl/curl_share_cleanup.3 b/external/curl/docs/libcurl/curl_share_cleanup.3 index f52c5eb4e..75deeebf9 100644 --- a/external/curl/docs/libcurl/curl_share_cleanup.3 +++ b/external/curl/docs/libcurl/curl_share_cleanup.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_share_cleanup 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_share_cleanup 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_share_cleanup - Clean up a shared object @@ -39,11 +39,14 @@ Passing in a NULL pointer in \fIshare_handle\fP makes this function return immediately with no action. .SH EXAMPLE .nf +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); /* use the share, then ... */ curl_share_cleanup(share); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/curl_share_init.3 b/external/curl/docs/libcurl/curl_share_init.3 index ba8ea688d..86c19e1eb 100644 --- a/external/curl/docs/libcurl/curl_share_init.3 +++ b/external/curl/docs/libcurl/curl_share_init.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_share_init 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_share_init 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_share_init - Create a shared object @@ -43,11 +43,14 @@ This \fIshare handle\fP is what you pass to curl using the specific curl handle use the data in this share. .SH EXAMPLE .nf +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/curl_share_setopt.3 b/external/curl/docs/libcurl/curl_share_setopt.3 index 9f67dc49f..1497f55fa 100644 --- a/external/curl/docs/libcurl/curl_share_setopt.3 +++ b/external/curl/docs/libcurl/curl_share_setopt.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_share_setopt 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_share_setopt 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_share_setopt - Set options for a shared object @@ -46,11 +46,14 @@ See \fICURLSHOPT_UNSHARE(3)\fP. See \fICURLSHOPT_USERDATA(3)\fP. .SH EXAMPLE .nf +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/curl_share_strerror.3 b/external/curl/docs/libcurl/curl_share_strerror.3 index 6b1efa440..76fd4d732 100644 --- a/external/curl/docs/libcurl/curl_share_strerror.3 +++ b/external/curl/docs/libcurl/curl_share_strerror.3 @@ -21,24 +21,29 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_share_strerror 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_share_strerror 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_share_strerror - return string describing error code .SH SYNOPSIS .nf -.B #include -.BI "const char *curl_share_strerror(CURLSHcode " errornum ");" +#include + +const char *curl_share_strerror(CURLSHcode errornum); +.fi .SH DESCRIPTION The \fIcurl_share_strerror(3)\fP function returns a string describing the \fICURLSHcode\fP error code passed in the argument \fIerrornum\fP. .SH EXAMPLE .nf +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY This function was added in libcurl 7.12.0 diff --git a/external/curl/docs/libcurl/curl_slist_append.3 b/external/curl/docs/libcurl/curl_slist_append.3 index 198c9f570..16616d067 100644 --- a/external/curl/docs/libcurl/curl_slist_append.3 +++ b/external/curl/docs/libcurl/curl_slist_append.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_slist_append 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_slist_append 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_slist_append - add a string to an slist @@ -43,29 +43,32 @@ The list should be freed again (after usage) with \fIcurl_slist_free_all(3)\fP. .SH EXAMPLE .nf -CURL *handle; -struct curl_slist *slist=NULL; -struct curl_slist *temp=NULL; +int main(void) +{ + CURL *handle; + struct curl_slist *slist = NULL; + struct curl_slist *temp = NULL; -slist = curl_slist_append(slist, "pragma:"); + slist = curl_slist_append(slist, "pragma:"); -if (slist == NULL) - return -1; + if(!slist) + return -1; -temp = curl_slist_append(slist, "Accept:") + temp = curl_slist_append(slist, "Accept:"); -if (temp == NULL) { - curl_slist_free_all(slist); - return -1; -} + if(!temp) { + curl_slist_free_all(slist); + return -1; + } -slist = temp; + slist = temp; -curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist); + curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist); -curl_easy_perform(handle); + curl_easy_perform(handle); -curl_slist_free_all(slist); /* free the list again */ + curl_slist_free_all(slist); /* free the list again */ +} .fi .SH AVAILABILITY Always diff --git a/external/curl/docs/libcurl/curl_slist_free_all.3 b/external/curl/docs/libcurl/curl_slist_free_all.3 index a45bd9a96..c9ae48dae 100644 --- a/external/curl/docs/libcurl/curl_slist_free_all.3 +++ b/external/curl/docs/libcurl/curl_slist_free_all.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_slist_free_all 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_slist_free_all 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_slist_free_all - free an entire curl_slist list @@ -39,19 +39,22 @@ Passing in a NULL pointer in \fIlist\fP makes this function return immediately with no action. .SH EXAMPLE .nf -CURL *handle; -struct curl_slist *slist=NULL; +int main(void) +{ + CURL *handle; + struct curl_slist *slist = NULL; -slist = curl_slist_append(slist, "X-libcurl: coolness"); + slist = curl_slist_append(slist, "X-libcurl: coolness"); -if (slist == NULL) - return -1; + if(!slist) + return -1; -curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist); + curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist); -curl_easy_perform(handle); + curl_easy_perform(handle); -curl_slist_free_all(slist); /* free the list again */ + curl_slist_free_all(slist); /* free the list again */ +} .fi .SH AVAILABILITY Always diff --git a/external/curl/docs/libcurl/curl_strequal.3 b/external/curl/docs/libcurl/curl_strequal.3 index c9cf04aa4..d9c4e0d75 100644 --- a/external/curl/docs/libcurl/curl_strequal.3 +++ b/external/curl/docs/libcurl/curl_strequal.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_strequal 3 "April 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_strequal 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_strequal, curl_strnequal - case insensitive string comparisons @@ -29,8 +29,8 @@ curl_strequal, curl_strnequal - case insensitive string comparisons .nf #include -int curl_strequal(char *str1, char *str2); -int curl_strnequal(char *str1, char *str2, size_t length); +int curl_strequal(const char *str1, const char *str2); +int curl_strnequal(const char *str1, const char *str2, size_t length); .fi .SH DESCRIPTION The @@ -47,10 +47,14 @@ strings in a truly portable manner. There are no standard portable case insensitive string comparison functions. These two work on all platforms. .SH EXAMPLE .nf -if(curl_strequal(name, input)) - printf("Name and input matches\\n"); -if(curl_strnequal(name, input, 5)) - printf("Name and input matches in the 5 first bytes\\n"); +int main(int argc, char **argv) +{ + const char *name = "compare"; + if(curl_strequal(name, argv[1])) + printf("Name and input matches\\n"); + if(curl_strnequal(name, argv[1], 5)) + printf("Name and input matches in the 5 first bytes\\n"); +} .fi .SH AVAILABILITY Always diff --git a/external/curl/docs/libcurl/curl_unescape.3 b/external/curl/docs/libcurl/curl_unescape.3 index ef1909b6a..a30113290 100644 --- a/external/curl/docs/libcurl/curl_unescape.3 +++ b/external/curl/docs/libcurl/curl_unescape.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_unescape 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_unescape 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_unescape - URL decodes the given string @@ -45,15 +45,17 @@ strlen() on \fBinput\fP to find out the size. You must \fIcurl_free(3)\fP the returned string when you are done with it. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - int decodelen; - char *decoded = curl_unescape("%63%75%72%6c", 12, &decodelen); - if(decoded) { - /* do not assume printf() works on the decoded data! */ - printf("Decoded: "); - /* ... */ - curl_free(decoded); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + char *decoded = curl_unescape("%63%75%72%6c", 12); + if(decoded) { + /* do not assume printf() works on the decoded data! */ + printf("Decoded: "); + /* ... */ + curl_free(decoded); + } } } .fi diff --git a/external/curl/docs/libcurl/curl_url.3 b/external/curl/docs/libcurl/curl_url.3 index 71b5e5b70..7814e4297 100644 --- a/external/curl/docs/libcurl/curl_url.3 +++ b/external/curl/docs/libcurl/curl_url.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_url 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_url 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_url - returns a new URL handle @@ -41,6 +41,8 @@ stored. They are then set in the object with the \fIcurl_url_set(3)\fP function. .SH EXAMPLE .nf +int main(void) +{ CURLUcode rc; CURLU *url = curl_url(); rc = curl_url_set(url, CURLUPART_URL, "https://example.com", 0); @@ -53,6 +55,7 @@ function. } curl_url_cleanup(url); } +} .fi .SH AVAILABILITY Added in 7.62.0 diff --git a/external/curl/docs/libcurl/curl_url_cleanup.3 b/external/curl/docs/libcurl/curl_url_cleanup.3 index 4481ee7ef..b6f4ff257 100644 --- a/external/curl/docs/libcurl/curl_url_cleanup.3 +++ b/external/curl/docs/libcurl/curl_url_cleanup.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_url_cleanup 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_url_cleanup 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_url_cleanup - free the URL handle @@ -38,9 +38,12 @@ Passing in a NULL pointer in \fIhandle\fP makes this function return immediately with no action. .SH EXAMPLE .nf +int main(void) +{ CURLU *url = curl_url(); curl_url_set(url, CURLUPART_URL, "https://example.com", 0); curl_url_cleanup(url); +} .fi .SH AVAILABILITY Added in 7.62.0 diff --git a/external/curl/docs/libcurl/curl_url_dup.3 b/external/curl/docs/libcurl/curl_url_dup.3 index 4df25d7d5..6189bdb46 100644 --- a/external/curl/docs/libcurl/curl_url_dup.3 +++ b/external/curl/docs/libcurl/curl_url_dup.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_url_dup 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_url_dup 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_url_dup - duplicate a URL handle @@ -29,7 +29,7 @@ curl_url_dup - duplicate a URL handle .nf #include -CURLU *curl_url_dup(CURLU *inhandle); +CURLU *curl_url_dup(const CURLU *inhandle); .fi .SH DESCRIPTION Duplicates the URL object the input \fICURLU\fP \fIinhandle\fP identifies and @@ -37,6 +37,8 @@ returns a pointer to the copy as a new \fICURLU\fP handle. The new handle also needs to be freed with \fIcurl_url_cleanup(3)\fP. .SH EXAMPLE .nf +int main(void) +{ CURLUcode rc; CURLU *url = curl_url(); CURLU *url2; @@ -46,6 +48,7 @@ needs to be freed with \fIcurl_url_cleanup(3)\fP. curl_url_cleanup(url2); } curl_url_cleanup(url); +} .fi .SH AVAILABILITY Added in 7.62.0 diff --git a/external/curl/docs/libcurl/curl_url_get.3 b/external/curl/docs/libcurl/curl_url_get.3 index aead101e9..01c74f232 100644 --- a/external/curl/docs/libcurl/curl_url_get.3 +++ b/external/curl/docs/libcurl/curl_url_get.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_url_get 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_url_get 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_url_get - extract a part from a URL @@ -29,7 +29,7 @@ curl_url_get - extract a part from a URL .nf #include -CURLUcode curl_url_get(CURLU *url, +CURLUcode curl_url_get(const CURLU *url, CURLUPart part, char **content, unsigned int flags); @@ -146,6 +146,8 @@ The initial hash sign that denotes the beginning of the fragment is a delimiter only. It is not part of the fragment contents. .SH EXAMPLE .nf +int main(void) +{ CURLUcode rc; CURLU *url = curl_url(); rc = curl_url_set(url, CURLUPART_URL, "https://example.com", 0); @@ -158,6 +160,7 @@ delimiter only. It is not part of the fragment contents. } curl_url_cleanup(url); } +} .fi .SH AVAILABILITY Added in 7.62.0. CURLUPART_ZONEID was added in 7.65.0. diff --git a/external/curl/docs/libcurl/curl_url_set.3 b/external/curl/docs/libcurl/curl_url_set.3 index 9276c37c4..d863f5253 100644 --- a/external/curl/docs/libcurl/curl_url_set.3 +++ b/external/curl/docs/libcurl/curl_url_set.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_url_set 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_url_set 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_url_set - set a URL part @@ -180,15 +180,17 @@ If set, the URL parser does not accept embedded credentials for the such URLs. .SH EXAMPLE .nf +int main(void) +{ CURLUcode rc; CURLU *url = curl_url(); rc = curl_url_set(url, CURLUPART_URL, "https://example.com", 0); if(!rc) { - char *scheme; /* change it to an FTP URL */ rc = curl_url_set(url, CURLUPART_SCHEME, "ftp", 0); } curl_url_cleanup(url); +} .fi .SH AVAILABILITY Added in 7.62.0. CURLUPART_ZONEID was added in 7.65.0. diff --git a/external/curl/docs/libcurl/curl_url_strerror.3 b/external/curl/docs/libcurl/curl_url_strerror.3 index 906e7b576..f6665594e 100644 --- a/external/curl/docs/libcurl/curl_url_strerror.3 +++ b/external/curl/docs/libcurl/curl_url_strerror.3 @@ -21,27 +21,31 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_url_strerror 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_url_strerror 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_url_strerror - return string describing error code .SH SYNOPSIS .nf -.B #include -.BI "const char *curl_url_strerror(CURLUcode " errornum ");" +#include + +const char *curl_url_strerror(CURLUcode errornum); +.fi .SH DESCRIPTION This function returns a string describing the CURLUcode error code passed in the argument \fIerrornum\fP. .SH EXAMPLE .nf +int main(void) +{ CURLUcode rc; CURLU *url = curl_url(); rc = curl_url_set(url, CURLUPART_URL, "https://example.com", 0); if(rc) printf("URL error: %s\\n", curl_url_strerror(rc)); curl_url_cleanup(url); +} .fi - .SH AVAILABILITY Added in 7.80.0 .SH RETURN VALUE diff --git a/external/curl/docs/libcurl/curl_version.3 b/external/curl/docs/libcurl/curl_version.3 index f3a5d0c31..d446a4e7f 100644 --- a/external/curl/docs/libcurl/curl_version.3 +++ b/external/curl/docs/libcurl/curl_version.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH curl_version 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_version 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_version - returns the libcurl version string @@ -38,7 +38,10 @@ its important components (like OpenSSL version). We recommend using \fIcurl_version_info(3)\fP instead! .SH EXAMPLE .nf -printf("libcurl version %s\\n", curl_version()); +int main(void) +{ + printf("libcurl version %s\\n", curl_version()); +} .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_version_info.3 b/external/curl/docs/libcurl/curl_version_info.3 index 685c01ea3..fa35f7a4e 100644 --- a/external/curl/docs/libcurl/curl_version_info.3 +++ b/external/curl/docs/libcurl/curl_version_info.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH curl_version_info 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_version_info 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_version_info - returns runtime libcurl version info @@ -307,11 +307,14 @@ names are the same as would be used in URLs. The array is terminated by a NULL entry. .SH EXAMPLE .nf -curl_version_info_data *ver = curl_version_info(CURLVERSION_NOW); -printf("libcurl version %u.%u.%u\\n", - (ver->version_num >> 16) & 0xff, - (ver->version_num >> 8) & 0xff, - ver->version_num & 0xff); +int main(void) +{ + curl_version_info_data *ver = curl_version_info(CURLVERSION_NOW); + printf("libcurl version %u.%u.%u\\n", + (ver->version_num >> 16) & 0xff, + (ver->version_num >> 8) & 0xff, + ver->version_num & 0xff); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/curl_ws_meta.3 b/external/curl/docs/libcurl/curl_ws_meta.3 index 113df2ecd..e6feb1fca 100644 --- a/external/curl/docs/libcurl/curl_ws_meta.3 +++ b/external/curl/docs/libcurl/curl_ws_meta.3 @@ -22,20 +22,13 @@ .\" * .\" ************************************************************************** .\" -.TH curl_ws_meta 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_ws_meta 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_ws_meta - meta data WebSocket information .SH SYNOPSIS .nf -#include - -struct curl_ws_frame { - int age; /* zero */ - int flags; /* See the CURLWS_* defines */ - curl_off_t offset; /* the offset of this data into the frame */ - curl_off_t bytesleft; /* number of pending bytes left of the payload */ -}; +#include const struct curl_ws_frame *curl_ws_meta(CURL *curl); .fi @@ -54,7 +47,15 @@ what transfer the question is about, but as there is no such pointer provided to the callback by libcurl itself, applications that want to use \fIcurl_ws_meta(3)\fP need to pass it on to the callback on its own. -.SH "struct fields" +.SH "struct curl_ws_frame" +.nf +struct curl_ws_frame { + int age; + int flags; + curl_off_t offset; + curl_off_t bytesleft; +}; +.fi .IP age This field specify the age of this struct. It is always zero for now. .IP flags @@ -96,15 +97,22 @@ static size_t writecb(unsigned char *buffer, struct customdata *c = (struct customdata *)p; const struct curl_ws_frame *m = curl_ws_meta(c->easy); - /* m->flags tells us about the traffic */ + printf("flags: %x\\n", m->flags); } +int main(void) { - struct customdata custom; - custom.easy = easy; - custom.ptr = NULL; - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, &custom); + CURL *curl = curl_easy_init(); + if(curl) { + struct customdata custom; + custom.easy = curl; + custom.ptr = NULL; + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &custom); + + curl_easy_perform(curl); + + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/curl_ws_recv.3 b/external/curl/docs/libcurl/curl_ws_recv.3 index f6b1c259e..ae8be0d90 100644 --- a/external/curl/docs/libcurl/curl_ws_recv.3 +++ b/external/curl/docs/libcurl/curl_ws_recv.3 @@ -22,13 +22,13 @@ .\" * .\" ************************************************************************** .\" -.TH curl_ws_recv 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_ws_recv 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_ws_recv - receive WebSocket data .SH SYNOPSIS .nf -#include +#include CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen, size_t *recv, const struct curl_ws_frame **meta); @@ -49,10 +49,18 @@ that contains information about the received data. See the \fIcurl_ws_meta(3)\fP for details on that struct. .SH EXAMPLE .nf +int main(void) +{ size_t rlen; const struct curl_ws_frame *meta; char buffer[256]; - CURLcode result = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta); + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res = curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &meta); + if(res) + printf("error: %s\\n", curl_easy_strerror(res)); + } +} .fi .SH AVAILABILITY Added in 7.86.0. diff --git a/external/curl/docs/libcurl/curl_ws_send.3 b/external/curl/docs/libcurl/curl_ws_send.3 index a3ca82643..5d674c570 100644 --- a/external/curl/docs/libcurl/curl_ws_send.3 +++ b/external/curl/docs/libcurl/curl_ws_send.3 @@ -22,13 +22,13 @@ .\" * .\" ************************************************************************** .\" -.TH curl_ws_send 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH curl_ws_send 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME curl_ws_send - send WebSocket data .SH SYNOPSIS .nf -#include +#include CURLcode curl_ws_send(CURL *curl, const void *buffer, size_t buflen, size_t *sent, curl_off_t fragsize, @@ -80,13 +80,22 @@ expected fragment size in the first call and it needs to be zero in subsequent calls. .SH EXAMPLE .nf -int ping(CURL *curl, const char *send_payload) +#include /* for strlen */ + +const char *send_payload = "magic"; + +int main(void) { size_t sent; - CURLcode result = - curl_ws_send(curl, send_payload, strlen(send_payload), &sent, 0, - CURLWS_PING); - return (int)result; + CURLcode res; + CURL *curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_URL, "wss://example.com/"); + curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 2L); + curl_easy_perform(curl); + res = curl_ws_send(curl, send_payload, strlen(send_payload), &sent, 0, + CURLWS_PING); + curl_easy_cleanup(curl); + return (int)res; } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/libcurl-easy.3 b/external/curl/docs/libcurl/libcurl-easy.3 index 23399cfc7..70f9d303c 100644 --- a/external/curl/docs/libcurl/libcurl-easy.3 +++ b/external/curl/docs/libcurl/libcurl-easy.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl 3 "September 26, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-easy \- easy interface overview diff --git a/external/curl/docs/libcurl/libcurl-env-dbg.3 b/external/curl/docs/libcurl/libcurl-env-dbg.3 index a15f6d174..2ecc3d93f 100644 --- a/external/curl/docs/libcurl/libcurl-env-dbg.3 +++ b/external/curl/docs/libcurl/libcurl-env-dbg.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl-env-dbg 3 "September 07, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-env-dbg 3 "September 07, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-env-dbg \- environment variables libcurl DEBUGBUILD understands diff --git a/external/curl/docs/libcurl/libcurl-env.3 b/external/curl/docs/libcurl/libcurl-env.3 index a36ad8ae8..30f2d8e1f 100644 --- a/external/curl/docs/libcurl/libcurl-env.3 +++ b/external/curl/docs/libcurl/libcurl-env.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl-env 3 "September 07, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-env 3 "September 07, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-env \- environment variables libcurl understands diff --git a/external/curl/docs/libcurl/libcurl-errors.3 b/external/curl/docs/libcurl/libcurl-errors.3 index e0c657009..c4637557d 100644 --- a/external/curl/docs/libcurl/libcurl-errors.3 +++ b/external/curl/docs/libcurl/libcurl-errors.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-errors 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-errors 3 "November 28, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-errors \- error codes in libcurl @@ -289,9 +289,6 @@ the specific problem. SSL Client Certificate required. .IP "CURLE_UNRECOVERABLE_POLL (99)" An internal call to poll() or select() returned error that is not recoverable. -.IP "CURLE_OBSOLETE*" -These error codes are never returned. They were used in an old libcurl version -and are currently unused. .SH "CURLMcode" This is the generic return code used by functions in the libcurl multi interface. Also consider \fIcurl_multi_strerror(3)\fP. @@ -301,9 +298,6 @@ This is not really an error. It means you should call between. Before version 7.20.0 (released on February 9 2010) this could be returned by \fIcurl_multi_perform(3)\fP, but in later versions this return code is never used. -.IP "CURLM_CALL_MULTI_SOCKET (-1)" -An alias for \fICURLM_CALL_MULTI_PERFORM\fP. Never returned by modern libcurl -versions. .IP "CURLM_OK (0)" Things are fine. .IP "CURLM_BAD_HANDLE (1)" @@ -415,9 +409,13 @@ The scheme part of the URL contained bad or invalid characters. The URL contained an invalid number of slashes. .IP "CURLUE_BAD_USER (29)" The user part of the URL contained bad or invalid characters. +.IP "CURLUE_LACKS_IDN (30)" +libcurl lacks IDN support. .SH "CURLHcode" The header interface returns a \fICURLHcode\fP to indicate when an error has occurred. +.IP "CURLHE_OK (0)" +All fine. Proceed as usual. .IP "CURLHE_BADINDEX (1)" There is no header with the requested index. .IP "CURLHE_MISSING (2)" diff --git a/external/curl/docs/libcurl/libcurl-multi.3 b/external/curl/docs/libcurl/libcurl-multi.3 index a277008f2..e7446054d 100644 --- a/external/curl/docs/libcurl/libcurl-multi.3 +++ b/external/curl/docs/libcurl/libcurl-multi.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-multi 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-multi 3 "September 26, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-multi \- how to use the multi interface diff --git a/external/curl/docs/libcurl/libcurl-security.3 b/external/curl/docs/libcurl/libcurl-security.3 index def3a0791..5e82155ff 100644 --- a/external/curl/docs/libcurl/libcurl-security.3 +++ b/external/curl/docs/libcurl/libcurl-security.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-security 3 "August 21, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-security 3 "December 01, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-security \- security considerations when using libcurl @@ -69,7 +69,7 @@ plain text anywhere. Many of the protocols libcurl supports send name and password unencrypted as clear text (HTTP Basic authentication, FTP, TELNET etc). It is easy for anyone on your network or a network nearby yours to just fire up a network analyzer -tool and eavesdrop on your passwords. do not let the fact that HTTP Basic uses +tool and eavesdrop on your passwords. Do not let the fact that HTTP Basic uses base64 encoded passwords fool you. They may not look readable at a first glance, but they are easily "deciphered" by anyone within seconds. diff --git a/external/curl/docs/libcurl/libcurl-share.3 b/external/curl/docs/libcurl/libcurl-share.3 index 597bc47f5..a72972d62 100644 --- a/external/curl/docs/libcurl/libcurl-share.3 +++ b/external/curl/docs/libcurl/libcurl-share.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl-share 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-share 3 "September 27, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-share \- how to use the share interface diff --git a/external/curl/docs/libcurl/libcurl-symbols.3 b/external/curl/docs/libcurl/libcurl-symbols.3 index 58c942793..95b9bf7b5 100644 --- a/external/curl/docs/libcurl/libcurl-symbols.3 +++ b/external/curl/docs/libcurl/libcurl-symbols.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl-symbols 3 "Oct 11, 2023" "libcurl" "libcurl" +.TH libcurl-symbols 3 "Dec 6, 2023" "libcurl" "libcurl" .SH NAME libcurl-symbols \- libcurl symbol version information .SH "libcurl symbols" @@ -450,16 +450,22 @@ Introduced in 7.22.0 Introduced in 7.21.3 .IP CURLCLOSEPOLICY_CALLBACK Introduced in 7.7 +Deprecated since 7.16.1 .IP CURLCLOSEPOLICY_LEAST_RECENTLY_USED Introduced in 7.7 +Deprecated since 7.16.1 .IP CURLCLOSEPOLICY_LEAST_TRAFFIC Introduced in 7.7 +Deprecated since 7.16.1 .IP CURLCLOSEPOLICY_NONE Introduced in 7.7 +Deprecated since 7.16.1 .IP CURLCLOSEPOLICY_OLDEST Introduced in 7.7 +Deprecated since 7.16.1 .IP CURLCLOSEPOLICY_SLOWEST Introduced in 7.7 +Deprecated since 7.16.1 .IP CURLE_ABORTED_BY_CALLBACK Introduced in 7.1 .IP CURLE_AGAIN diff --git a/external/curl/docs/libcurl/libcurl-thread.3 b/external/curl/docs/libcurl/libcurl-thread.3 index 42ff73bec..9cbdc164d 100644 --- a/external/curl/docs/libcurl/libcurl-thread.3 +++ b/external/curl/docs/libcurl/libcurl-thread.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-thread 3 "August 22, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-thread 3 "October 30, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-thread \- libcurl thread safety @@ -43,37 +43,10 @@ interface but you must provide your own locking and set Note that some items are specifically documented as not thread-safe in the share API (the connection pool and HSTS cache for example). .SH TLS -If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are -then of course using the underlying SSL library multi-threaded and those libs -might have their own requirements on this issue. You may need to provide one -or two functions to allow it to function properly: -.IP OpenSSL -OpenSSL 1.1.0+ "can be safely used in multi-threaded applications provided that -support for the underlying OS threading API is built-in." In that case the -engine is used by libcurl in a way that is fully thread-safe. - -https://www.openssl.org/docs/man1.1.0/man3/CRYPTO_THREAD_run_once.html#DESCRIPTION - -OpenSSL <= 1.0.2 the user must set callbacks. - -https://www.openssl.org/docs/man1.0.2/man3/CRYPTO_set_locking_callback.html#DESCRIPTION - -https://curl.se/libcurl/c/opensslthreadlock.html - -.IP GnuTLS -https://gnutls.org/manual/html_node/Thread-safety.html -.IP NSS -thread-safe already without anything required. -.IP Secure-Transport -The engine is used by libcurl in a way that is fully thread-safe. -.IP Schannel -The engine is used by libcurl in a way that is fully thread-safe. -.IP wolfSSL -The engine is used by libcurl in a way that is fully thread-safe. -.IP BoringSSL -The engine is used by libcurl in a way that is fully thread-safe. -.IP AWS-LC -The engine is used by libcurl in a way that is fully thread-safe. +All current TLS libraries libcurl supports are thread-safe. OpenSSL 1.1.0+ can +be safely used in multi-threaded applications provided that support for the +underlying OS threading API is built-in. For older versions of OpenSSL, the +user must set mutex callbacks. .SH "Signals" Signals are used for timing out name resolves (during DNS lookup) - when built without using either the c-ares or threaded resolver backends. On systems that diff --git a/external/curl/docs/libcurl/libcurl-tutorial.3 b/external/curl/docs/libcurl/libcurl-tutorial.3 index a0cf79637..a81da0070 100644 --- a/external/curl/docs/libcurl/libcurl-tutorial.3 +++ b/external/curl/docs/libcurl/libcurl-tutorial.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH libcurl-tutorial 3 "September 27, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl-tutorial 3 "September 27, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-tutorial \- libcurl programming tutorial diff --git a/external/curl/docs/libcurl/libcurl-url.3 b/external/curl/docs/libcurl/libcurl-url.3 index 364452f64..b74cd31af 100644 --- a/external/curl/docs/libcurl/libcurl-url.3 +++ b/external/curl/docs/libcurl/libcurl-url.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl 3 "September 26, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-url \- URL interface overview diff --git a/external/curl/docs/libcurl/libcurl-ws.3 b/external/curl/docs/libcurl/libcurl-ws.3 index 7b4b1dd49..c2dc64dfd 100644 --- a/external/curl/docs/libcurl/libcurl-ws.3 +++ b/external/curl/docs/libcurl/libcurl-ws.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl 3 "September 26, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl-ws \- WebSocket interface overview diff --git a/external/curl/docs/libcurl/libcurl.3 b/external/curl/docs/libcurl/libcurl.3 index 5328ac88a..0929557b3 100644 --- a/external/curl/docs/libcurl/libcurl.3 +++ b/external/curl/docs/libcurl/libcurl.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH libcurl 3 "August 22, 2023" "libcurl 8.4.0" "libcurl" +.TH libcurl 3 "October 14, 2023" "libcurl 8.5.0" "libcurl" .SH NAME libcurl \- client-side URL transfers @@ -72,7 +72,7 @@ get information about a performed transfer. See \fIcurl_easy_getinfo(3)\fP helps building an HTTP form POST. See \fIcurl_mime_addpart(3)\fP .IP curl_slist_append() builds a linked list. See \fIcurl_slist_append(3)\fP -.IP Sharing data between transfers +.IP "Sharing data between transfers" You can have multiple easy handles share certain data, even if they are used in different threads. This magic is setup using the share interface, as described in the \fIlibcurl-share(3)\fP man page. diff --git a/external/curl/docs/libcurl/mksymbolsmanpage.pl b/external/curl/docs/libcurl/mksymbolsmanpage.pl index a8cb10d82..3bc686949 100755 --- a/external/curl/docs/libcurl/mksymbolsmanpage.pl +++ b/external/curl/docs/libcurl/mksymbolsmanpage.pl @@ -26,8 +26,14 @@ my $version="7.41.0"; use POSIX qw(strftime); -my $date = strftime "%b %e, %Y", localtime; -my $year = strftime "%Y", localtime; +my @ts; +if (defined($ENV{SOURCE_DATE_EPOCH})) { + @ts = localtime($ENV{SOURCE_DATE_EPOCH}); +} else { + @ts = localtime; +} +my $date = strftime "%b %e, %Y", @ts; +my $year = strftime "%Y", @ts; print <
num_of_certs); + if(!res) { + printf("%d certs!\\n", ci->num_of_certs); - for(i = 0; i < ci->num_of_certs; i++) { - struct curl_slist *slist; + for(i = 0; i < ci->num_of_certs; i++) { + struct curl_slist *slist; - for(slist = ci->certinfo[i]; slist; slist = slist->next) - printf("%s\\n", slist->data); + for(slist = ci->certinfo[i]; slist; slist = slist->next) + printf("%s\\n", slist->data); + } } } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 index 952234bbb..155e56dff 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONDITION_UNMET 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONDITION_UNMET 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response. @@ -45,26 +45,31 @@ custom "If-Match-*" header. HTTP and some .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; - /* January 1, 2020 is 1577833200 */ - curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* If-Modified-Since the above time stamp */ - curl_easy_setopt(curl, CURLOPT_TIMECONDITION, - (long)CURL_TIMECOND_IFMODSINCE); + /* January 1, 2020 is 1577833200 */ + curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L); - /* Perform the request */ - res = curl_easy_perform(curl); + /* If-Modified-Since the above time stamp */ + curl_easy_setopt(curl, CURLOPT_TIMECONDITION, + (long)CURL_TIMECOND_IFMODSINCE); + + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - /* check the time condition */ - long unmet; - res = curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &unmet); if(!res) { - printf("The time condition was %sfulfilled\\n", unmet?"NOT":""); + /* check the time condition */ + long unmet; + res = curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &unmet); + if(!res) { + printf("The time condition was %sfulfilled\\n", unmet?"NOT":""); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 index d4b5847fc..56c6d61c9 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONNECT_TIME 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONNECT_TIME 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONNECT_TIME \- get the time until connect @@ -43,19 +43,23 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - double connect; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &connect); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + double connect; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %.1f", connect); + res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &connect); + if(CURLE_OK == res) { + printf("Time: %.1f", connect); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 index 410dca082..ca0a7e1c6 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONNECT_TIME_T 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONNECT_TIME_T 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONNECT_TIME_T \- get the time until connect @@ -44,20 +44,24 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_off_t connect; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME_T, &connect); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_off_t connect; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", connect / 1000000, - (long)(connect % 1000000)); + res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME_T, &connect); + if(CURLE_OK == res) { + printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", connect / 1000000, + (long)(connect % 1000000)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONN_ID.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONN_ID.3 index 3de9578d8..3fe3ce7b8 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONN_ID.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONN_ID.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONN_ID 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONN_ID 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONN_ID \- get the ID of the last connection used by the handle @@ -45,18 +45,23 @@ same multi handle. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; - /* Perform the request */ - res = curl_easy_perform(curl); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - curl_off_t conn_id; - res = curl_easy_getinfo(curl, CURLINFO_CONN_ID, &conn_id); if(!res) { - printf("Connection used: %" CURL_FORMAT_CURL_OFF_T "\\n", conn_id); + curl_off_t conn_id; + res = curl_easy_getinfo(curl, CURLINFO_CONN_ID, &conn_id); + if(!res) { + printf("Connection used: %" CURL_FORMAT_CURL_OFF_T "\\n", conn_id); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 index 62a619faf..5bfac2ba2 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download @@ -44,19 +44,23 @@ sensible variable type. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - /* check the size */ - double cl; - res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &cl); if(!res) { - printf("Size: %.0f\\n", cl); + /* check the size */ + double cl; + res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &cl); + if(!res) { + printf("Size: %.0f\\n", cl); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 index b30d8ea0e..eccd767ee 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download @@ -41,19 +41,23 @@ the size is not known. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - /* check the size */ - curl_off_t cl; - res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &cl); if(!res) { - printf("Download size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl); + /* check the size */ + curl_off_t cl; + res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &cl); + if(!res) { + printf("Download size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 index 1b69ace20..01ac5f383 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload @@ -43,19 +43,23 @@ more sensible variable type. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the upload */ - res = curl_easy_perform(curl); + /* Perform the upload */ + res = curl_easy_perform(curl); - if(!res) { - /* check the size */ - double cl; - res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_UPLOAD, &cl); if(!res) { - printf("Size: %.0f\\n", cl); + /* check the size */ + double cl; + res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_UPLOAD, &cl); + if(!res) { + printf("Size: %.0f\\n", cl); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 index 9ff49ed63..1630ecaaa 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload @@ -40,19 +40,23 @@ upload. Stores -1 if the size is not known. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the upload */ - res = curl_easy_perform(curl); + /* Perform the upload */ + res = curl_easy_perform(curl); - if(!res) { - /* check the size */ - curl_off_t cl; - res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &cl); if(!res) { - printf("Upload size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl); + /* check the size */ + curl_off_t cl; + res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &cl); + if(!res) { + printf("Upload size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 index 312062fff..027db1e86 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_CONTENT_TYPE 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_CONTENT_TYPE 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_CONTENT_TYPE \- get Content-Type @@ -48,21 +48,25 @@ The modern way to get this header from a response is to instead use the HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - if(!res) { - /* extract the content-type */ - char *ct = NULL; - res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct); - if(!res && ct) { - printf("Content-Type: %s\\n", ct); + if(!res) { + /* extract the content-type */ + char *ct = NULL; + res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct); + if(!res && ct) { + printf("Content-Type: %s\\n", ct); + } } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3 b/external/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3 index 8ee29f0cd..83c6bb88e 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_COOKIELIST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_COOKIELIST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_COOKIELIST \- get all known cookies @@ -46,31 +46,35 @@ domain name are not exported by this option. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* enable the cookie engine */ - curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); + /* enable the cookie engine */ + curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - if(!res) { - /* extract all known cookies */ - struct curl_slist *cookies = NULL; - res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies); - if(!res && cookies) { - /* a linked list of cookies in cookie file format */ - struct curl_slist *each = cookies; - while(each) { - printf("%s\\n", each->data); - each = each->next; + if(!res) { + /* extract all known cookies */ + struct curl_slist *cookies = NULL; + res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies); + if(!res && cookies) { + /* a linked list of cookies in cookie file format */ + struct curl_slist *each = cookies; + while(each) { + printf("%s\\n", each->data); + each = each->next; + } + /* we must free these cookies when we are done */ + curl_slist_free_all(cookies); } - /* we must free these cookies when we are done */ - curl_slist_free_all(cookies); } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 b/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 index 6d1ac05c7..e480b9e4f 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_EFFECTIVE_METHOD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_EFFECTIVE_METHOD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method @@ -47,20 +47,23 @@ corresponding CURL handle. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data"); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - char *method = NULL; - curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_METHOD, &method); - if(method) - printf("Redirected to method: %s\\n", method); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data"); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + char *method = NULL; + curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_METHOD, &method); + if(method) + printf("Redirected to method: %s\\n", method); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 b/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 index 28802e33a..3b5dc1c6d 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_EFFECTIVE_URL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_EFFECTIVE_URL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_EFFECTIVE_URL \- get the last used URL @@ -45,19 +45,22 @@ CURL handle. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - char *url = NULL; - curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url); - if(url) - printf("Redirect to: %s\\n", url); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + char *url = NULL; + curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url); + if(url) + printf("Redirect to: %s\\n", url); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_FILETIME.3 b/external/curl/docs/libcurl/opts/CURLINFO_FILETIME.3 index b2a69a488..6730e3ee8 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_FILETIME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_FILETIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_FILETIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_FILETIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_FILETIME \- get the remote time of the retrieved document @@ -49,21 +49,26 @@ the year 2038 on systems using 32 bit longs (Windows). HTTP(S), FTP(S), SFTP .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, url); - /* Ask for filetime */ - curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime); - if((CURLE_OK == res) && (filetime >= 0)) { - time_t file_time = (time_t)filetime; - printf("filetime %s: %s", filename, ctime(&file_time)); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + /* Ask for filetime */ + curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); + res = curl_easy_perform(curl); + if(CURLE_OK == res) { + long filetime = 0; + res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime); + if((CURLE_OK == res) && (filetime >= 0)) { + time_t file_time = (time_t)filetime; + printf("filetime: %s", ctime(&file_time)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3 index 3d9843849..9f08b2211 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_FILETIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_FILETIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_FILETIME_T \- get the remote time of the retrieved document @@ -51,22 +51,26 @@ range. HTTP(S), FTP(S), SFTP .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, url); - /* Ask for filetime */ - curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - curl_off_t filetime; - res = curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime); - if((CURLE_OK == res) && (filetime >= 0)) { - time_t file_time = (time_t)filetime; - printf("filetime %s: %s", filename, ctime(&file_time)); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* Ask for filetime */ + curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); + res = curl_easy_perform(curl); + if(CURLE_OK == res) { + curl_off_t filetime; + res = curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime); + if((CURLE_OK == res) && (filetime >= 0)) { + time_t file_time = (time_t)filetime; + printf("filetime: %s", ctime(&file_time)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 b/external/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 index 54d3b3249..8172ef05d 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_FTP_ENTRY_PATH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_FTP_ENTRY_PATH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server @@ -45,21 +45,25 @@ CURL handle. FTP(S) and SFTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com"); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - if(!res) { - /* extract the entry path */ - char *ep = NULL; - res = curl_easy_getinfo(curl, CURLINFO_FTP_ENTRY_PATH, &ep); - if(!res && ep) { - printf("Entry path was: %s\\n", ep); + if(!res) { + /* extract the entry path */ + char *ep = NULL; + res = curl_easy_getinfo(curl, CURLINFO_FTP_ENTRY_PATH, &ep); + if(!res && ep) { + printf("Entry path was: %s\\n", ep); + } } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 b/external/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 index a2adf7b44..75a5994a8 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_HEADER_SIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_HEADER_SIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_HEADER_SIZE \- get size of retrieved headers @@ -42,18 +42,21 @@ The total includes the size of any received headers suppressed by All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long size; - res = curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &size); - if(!res) - printf("Header size: %ld bytes\\n", size); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long size; + res = curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &size); + if(!res) + printf("Header size: %ld bytes\\n", size); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 b/external/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 index e2fbae196..4e00765c4 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_HTTPAUTH_AVAIL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_HTTPAUTH_AVAIL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods @@ -41,29 +41,33 @@ bits is explained in the \fICURLOPT_HTTPAUTH(3)\fP option for HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - if(!res) { - /* extract the available authentication types */ - long auth; - res = curl_easy_getinfo(curl, CURLINFO_HTTPAUTH_AVAIL, &auth); if(!res) { - if(!auth) - printf("No auth available, perhaps no 401?\\n"); - else { - printf("%s%s%s%s\\n", - auth & CURLAUTH_BASIC ? "Basic ":"", - auth & CURLAUTH_DIGEST ? "Digest ":"", - auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"", - auth % CURLAUTH_NTLM ? "NTLM ":""); + /* extract the available authentication types */ + long auth; + res = curl_easy_getinfo(curl, CURLINFO_HTTPAUTH_AVAIL, &auth); + if(!res) { + if(!auth) + printf("No auth available, perhaps no 401?\\n"); + else { + printf("%s%s%s%s\\n", + auth & CURLAUTH_BASIC ? "Basic ":"", + auth & CURLAUTH_DIGEST ? "Digest ":"", + auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"", + auth % CURLAUTH_NTLM ? "NTLM ":""); + } } } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 b/external/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 index 0a8bac494..a358ca0c8 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_HTTP_CONNECTCODE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_HTTP_CONNECTCODE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code @@ -40,21 +40,24 @@ available. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* typically CONNECT is used to do HTTPS over HTTP proxies */ - curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long code; - res = curl_easy_getinfo(curl, CURLINFO_HTTP_CONNECTCODE, &code); - if(!res && code) - printf("The CONNECT response code: %03ld\\n", code); + /* typically CONNECT is used to do HTTPS over HTTP proxies */ + curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long code; + res = curl_easy_getinfo(curl, CURLINFO_HTTP_CONNECTCODE, &code); + if(!res && code) + printf("The CONNECT response code: %03ld\\n", code); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 b/external/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 index 8e908cfad..46b1dc4c0 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_HTTP_VERSION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_HTTP_VERSION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_HTTP_VERSION \- get the http version used in the connection @@ -41,16 +41,19 @@ CURL_HTTP_VERSION_3 or 0 if the version cannot be determined. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long http_version; - curl_easy_getinfo(curl, CURLINFO_HTTP_VERSION, &http_version); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long http_version; + curl_easy_getinfo(curl, CURLINFO_HTTP_VERSION, &http_version); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 b/external/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 index 49da684ad..5ad3eb59d 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_LASTSOCKET 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_LASTSOCKET 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_LASTSOCKET \- get the last socket used @@ -49,21 +49,25 @@ type is 64 bits large while its 'long' is 32 bits. Use the All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - long sockfd; /* does not work on win64! */ - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + long sockfd; /* does not work on win64! */ + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Do not do the transfer - only connect to host */ - curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); - res = curl_easy_perform(curl); + /* Do not do the transfer - only connect to host */ + curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); + res = curl_easy_perform(curl); - /* Extract the socket from the curl handle */ - res = curl_easy_getinfo(curl, CURLINFO_LASTSOCKET, &sockfd); + /* Extract the socket from the curl handle */ + res = curl_easy_getinfo(curl, CURLINFO_LASTSOCKET, &sockfd); - if(res != CURLE_OK) { - printf("Error: %s\\n", curl_easy_strerror(res)); - return 1; + if(res != CURLE_OK) { + printf("Error: %s\\n", curl_easy_strerror(res)); + return 1; + } } } .fi diff --git a/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 b/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 index aa8e3ded2..9394164a9 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_LOCAL_IP 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_LOCAL_IP 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_LOCAL_IP \- get local IP address of last connection @@ -46,8 +46,11 @@ CURL handle. All .SH EXAMPLE .nf +int main(void) { char *ip; + CURLcode res; + CURL *curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); diff --git a/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 b/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 index 1c9a7f02a..6a44c3118 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_LOCAL_PORT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_LOCAL_PORT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_LOCAL_PORT \- get the latest local port number @@ -39,6 +39,7 @@ connection done with this \fBcurl\fP handle. All .SH EXAMPLE .nf +int main(void) { CURL *curl; CURLcode res; diff --git a/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 b/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 index d0d6c0225..ac7435dc0 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_NAMELOOKUP_TIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_NAMELOOKUP_TIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_NAMELOOKUP_TIME \- get the name lookup time @@ -44,19 +44,23 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - double namelookup; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &namelookup); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + double namelookup; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %.1f", namelookup); + res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &namelookup); + if(CURLE_OK == res) { + printf("Time: %.1f", namelookup); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 index 6f320ac69..feff674b3 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_NAMELOOKUP_TIME_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_NAMELOOKUP_TIME_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds @@ -44,20 +44,24 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_off_t namelookup; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME_T, &namelookup); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_off_t namelookup; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", namelookup / 1000000, - (long)(namelookup % 1000000)); + res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME_T, &namelookup); + if(CURLE_OK == res) { + printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", namelookup / 1000000, + (long)(namelookup % 1000000)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 b/external/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 index 630a14db5..a26bf4fbe 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_NUM_CONNECTS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_NUM_CONNECTS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_NUM_CONNECTS \- get number of created connections @@ -43,19 +43,22 @@ to make persistent connections to save time. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long connects; - res = curl_easy_getinfo(curl, CURLINFO_NUM_CONNECTS, &connects); - if(res) - printf("It needed %d connects\\n", connects); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long connects; + res = curl_easy_getinfo(curl, CURLINFO_NUM_CONNECTS, &connects); + if(res) + printf("It needed %ld connects\\n", connects); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 b/external/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 index 9873f5b17..eac33e908 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_OS_ERRNO 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_OS_ERRNO 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_OS_ERRNO \- get errno number from last connect failure @@ -40,19 +40,22 @@ operation. The number is OS and system specific. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res != CURLE_OK) { - long error; - res = curl_easy_getinfo(curl, CURLINFO_OS_ERRNO, &error); - if(res && error) { - printf("Errno: %ld\\n", error); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res != CURLE_OK) { + long error; + res = curl_easy_getinfo(curl, CURLINFO_OS_ERRNO, &error); + if(res && error) { + printf("Errno: %ld\\n", error); + } } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 b/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 index 29a7fd756..c8f5cef40 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PRETRANSFER_TIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PRETRANSFER_TIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start @@ -39,7 +39,7 @@ start until the file transfer is just about to begin. This time-stamp includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved. It includes the sending of -the protocol- specific protocol instructions that triggers a transfer. +the protocol-specific instructions that trigger a transfer. When a redirect is followed, the time from each request is added together. @@ -48,19 +48,23 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - double pretransfer; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &pretransfer); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + double pretransfer; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %.1f", pretransfer); + res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &pretransfer); + if(CURLE_OK == res) { + printf("Time: %.1f", pretransfer); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 index 4f17c2186..65dbe603b 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PRETRANSFER_TIME_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PRETRANSFER_TIME_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start @@ -34,12 +34,12 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep); .fi .SH DESCRIPTION -Pass a pointer to a curl_off_t to receive the time, in microseconds, -it took from the -start until the file transfer is just about to begin. This includes all -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. +Pass a pointer to a curl_off_t to receive the time, in microseconds, it took +from the start until the file transfer is just about to begin. + +This time-stamp includes all pre-transfer commands and negotiations that are +specific to the particular protocol(s) involved. It includes the sending of +the protocol-specific instructions that trigger a transfer. When a redirect is followed, the time from each request is added together. @@ -48,20 +48,25 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_off_t pretransfer; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME_T, &pretransfer); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_off_t pretransfer; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", pretransfer / 1000000, - (long)(pretransfer % 1000000)); + res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME_T, &pretransfer); + if(CURLE_OK == res) { + printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld\\n", + pretransfer / 1000000, + (long)(pretransfer % 1000000)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 b/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 index cb5709bdf..ceb24c119 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PRIMARY_IP 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PRIMARY_IP 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PRIMARY_IP \- get IP address of last connection @@ -46,8 +46,11 @@ CURL handle. All network based ones .SH EXAMPLE .nf +int main(void) { char *ip; + CURLcode res; + CURL *curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 b/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 index 22ee35ed4..4e75ba119 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PRIMARY_PORT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PRIMARY_PORT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PRIMARY_PORT \- get the latest destination port number @@ -44,18 +44,21 @@ accessed URL. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long port; - res = curl_easy_getinfo(curl, CURLINFO_PRIMARY_PORT, &port); - if(!res) - printf("Connected to remote port: %ld\\n", port); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long port; + res = curl_easy_getinfo(curl, CURLINFO_PRIMARY_PORT, &port); + if(!res) + printf("Connected to remote port: %ld\\n", port); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3 b/external/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3 index 237029407..660315639 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PRIVATE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PRIVATE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PRIVATE \- get the private pointer @@ -41,19 +41,26 @@ pointer, although effectively being a 'void *'. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - void *pointer = 0x2345454; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + void *pointer = (void *)0x2345454; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* set the private pointer */ - curl_easy_setopt(curl, CURLOPT_PRIVATE, pointer); - ret = curl_easy_perform(curl); + /* set the private pointer */ + curl_easy_setopt(curl, CURLOPT_PRIVATE, pointer); + res = curl_easy_perform(curl); - /* extract the private pointer again */ - ret = curl_easy_getinfo(curl, CURLINFO_PRIVATE, &pointer); + /* extract the private pointer again */ + res = curl_easy_getinfo(curl, CURLINFO_PRIVATE, &pointer); - curl_easy_cleanup(curl); + if(res) + printf("error: %s\\n", curl_easy_strerror(res)); + + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3 b/external/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3 index d22301aa6..17a86c94f 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PROTOCOL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PROTOCOL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PROTOCOL \- get the protocol used in the connection @@ -52,16 +52,19 @@ CURLPROTO_SMTPS, CURLPROTO_TELNET, CURLPROTO_TFTP, CURLPROTO_MQTT All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long protocol; - curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long protocol; + curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 b/external/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 index 6d9caad75..b5dda003f 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PROXYAUTH_AVAIL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PROXYAUTH_AVAIL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods @@ -42,30 +42,34 @@ bits is explained in the \fICURLOPT_PROXYAUTH(3)\fP option for HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:80"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:80"); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - if(!res) { - /* extract the available proxy authentication types */ - long auth; - res = curl_easy_getinfo(curl, CURLINFO_PROXYAUTH_AVAIL, &auth); if(!res) { - if(!auth) - printf("No proxy auth available, perhaps no 407?\\n"); - else { - printf("%s%s%s%s\\n", - auth & CURLAUTH_BASIC ? "Basic ":"", - auth & CURLAUTH_DIGEST ? "Digest ":"", - auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"", - auth % CURLAUTH_NTLM ? "NTLM ":""); + /* extract the available proxy authentication types */ + long auth; + res = curl_easy_getinfo(curl, CURLINFO_PROXYAUTH_AVAIL, &auth); + if(!res) { + if(!auth) + printf("No proxy auth available, perhaps no 407?\\n"); + else { + printf("%s%s%s%s\\n", + auth & CURLAUTH_BASIC ? "Basic ":"", + auth & CURLAUTH_DIGEST ? "Digest ":"", + auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"", + auth % CURLAUTH_NTLM ? "NTLM ":""); + } } } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 b/external/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 index 17d4c9b3d..25f98c55c 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PROXY_ERROR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PROXY_ERROR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error @@ -80,20 +80,23 @@ The error code is zero (\fBCURLPX_OK\fP) if no response code was available. All that can be done over SOCKS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://127.0.0.1"); - res = curl_easy_perform(curl); - if(res == CURLE_PROXY) { - long proxycode; - res = curl_easy_getinfo(curl, CURLINFO_PROXY_ERROR, &proxycode); - if(!res && proxycode) - printf("The detailed proxy error: %ld\\n", proxycode); + curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://127.0.0.1"); + res = curl_easy_perform(curl); + if(res == CURLE_PROXY) { + long proxycode; + res = curl_easy_getinfo(curl, CURLINFO_PROXY_ERROR, &proxycode); + if(!res && proxycode) + printf("The detailed proxy error: %ld\\n", proxycode); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 b/external/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 index 305b147ac..d9cebfc7b 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification @@ -41,17 +41,22 @@ option. This is only used for HTTPS proxies. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - long verifyresult; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy:443"); - res = curl_easy_perform(curl); - curl_easy_getinfo(curl, CURLINFO_PROXY_SSL_VERIFYRESULT, &verifyresult); - printf("The peer verification said %s\\n", verifyresult? - "fine":"BAAAD"); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + long verifyresult; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy:443"); + res = curl_easy_perform(curl); + if(res) + printf("error: %s\\n", curl_easy_strerror(res)); + curl_easy_getinfo(curl, CURLINFO_PROXY_SSL_VERIFYRESULT, &verifyresult); + printf("The peer verification said %s\\n", verifyresult? + "fine" : "bad"); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 index 69f6f34f5..20a50ac5b 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_REDIRECT_COUNT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_REDIRECT_COUNT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_REDIRECT_COUNT \- get the number of redirects @@ -40,17 +40,20 @@ actually followed. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long redirects; - curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &redirects); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long redirects; + curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &redirects); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 index 0160e2df3..1443516b7 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_REDIRECT_TIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_REDIRECT_TIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_REDIRECT_TIME \- get the time for all redirection steps @@ -44,19 +44,23 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - double redirect; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME, &redirect); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + double redirect; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %.1f", redirect); + res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME, &redirect); + if(CURLE_OK == res) { + printf("Time: %.1f", redirect); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 index 23586614b..cd5d2deff 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_REDIRECT_TIME_T 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_REDIRECT_TIME_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps @@ -45,20 +45,24 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_off_t redirect; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME_T, &redirect); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_off_t redirect; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", redirect / 1000000, - (long)(redirect % 1000000)); + res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME_T, &redirect); + if(CURLE_OK == res) { + printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", redirect / 1000000, + (long)(redirect % 1000000)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 index 82608d57d..4e335892a 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_REDIRECT_URL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_REDIRECT_URL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_REDIRECT_URL \- get the URL a redirect would go to @@ -45,18 +45,21 @@ redirect to happen (since 7.54.1). HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - char *url = NULL; - curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &url); - if(url) - printf("Redirect to: %s\\n", url); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + char *url = NULL; + curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &url); + if(url) + printf("Redirect to: %s\\n", url); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_REFERER.3 b/external/curl/docs/libcurl/opts/CURLINFO_REFERER.3 index 74730ae69..dbcb48858 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_REFERER.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_REFERER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_REFERER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_REFERER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_REFERER \- get the referrer header @@ -42,19 +42,22 @@ CURL handle. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.org/referrer"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - char *hdr = NULL; - curl_easy_getinfo(curl, CURLINFO_REFERER, &hdr); - if(hdr) - printf("Referrer header: %s\\n", hdr); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.org/referrer"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + char *hdr = NULL; + curl_easy_getinfo(curl, CURLINFO_REFERER, &hdr); + if(hdr) + printf("Referrer header: %s\\n", hdr); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 b/external/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 index 32d24e003..1f0917e11 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_REQUEST_SIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_REQUEST_SIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_REQUEST_SIZE \- get size of sent request @@ -40,18 +40,21 @@ than one request if \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long req; - res = curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &req); - if(!res) - printf("Request size: %ld bytes\\n", req); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long req; + res = curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &req); + if(!res) + printf("Request size: %ld bytes\\n", req); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 b/external/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 index f336ef75b..4b5cc8d7a 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_RESPONSE_CODE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_RESPONSE_CODE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_RESPONSE_CODE \- get the last response code @@ -44,16 +44,19 @@ Note that a proxy's CONNECT response should be read with HTTP, FTP, SMTP and LDAP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long response_code; - curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long response_code; + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 b/external/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 index 12a7f2126..b6abe65a0 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_RETRY_AFTER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_RETRY_AFTER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay @@ -47,18 +47,21 @@ Returns zero delay if there was no header. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://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); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://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); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 index 27c6d1bc3..ca655dc09 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq @@ -40,16 +40,19 @@ by the application. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long cseq; - curl_easy_getinfo(curl, CURLINFO_RTSP_CLIENT_CSEQ, &cseq); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long cseq; + curl_easy_getinfo(curl, CURLINFO_RTSP_CLIENT_CSEQ, &cseq); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 index e0dd48455..763094849 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_RTSP_CSEQ_RECV 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_RTSP_CSEQ_RECV 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq @@ -41,16 +41,19 @@ value. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long cseq; - curl_easy_getinfo(curl, CURLINFO_RTSP_CSEQ_RECV, &cseq); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long cseq; + curl_easy_getinfo(curl, CURLINFO_RTSP_CSEQ_RECV, &cseq); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 index 5449db157..48358cd43 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_RTSP_SERVER_CSEQ 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_RTSP_SERVER_CSEQ 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq @@ -45,16 +45,19 @@ retrieve this info before closing the active connection. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - long cseq; - curl_easy_getinfo(curl, CURLINFO_RTSP_SERVER_CSEQ, &cseq); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + long cseq; + curl_easy_getinfo(curl, CURLINFO_RTSP_SERVER_CSEQ, &cseq); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 index 60cef4967..aab65eca9 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_RTSP_SESSION_ID 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_RTSP_SESSION_ID 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_RTSP_SESSION_ID \- get RTSP session ID @@ -46,16 +46,19 @@ CURL handle. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - char *id; - curl_easy_getinfo(curl, CURLINFO_RTSP_SESSION_ID, &id); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + char *id; + curl_easy_getinfo(curl, CURLINFO_RTSP_SESSION_ID, &id); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SCHEME.3 b/external/curl/docs/libcurl/opts/CURLINFO_SCHEME.3 index 16e9d61c6..7f3d0d6fd 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SCHEME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SCHEME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SCHEME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SCHEME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection @@ -44,18 +44,21 @@ corresponding CURL handle. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - if(res == CURLE_OK) { - char *scheme = NULL; - curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme); - if(scheme) - printf("scheme: %s\\n", scheme); /* scheme: HTTP */ +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res == CURLE_OK) { + char *scheme = NULL; + curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme); + if(scheme) + printf("scheme: %s\\n", scheme); /* scheme: HTTP */ + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 index d95801f58..1a84297c1 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SIZE_DOWNLOAD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SIZE_DOWNLOAD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes @@ -45,19 +45,23 @@ sensible variable type. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - /* check the size */ - double dl; - res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &dl); if(!res) { - printf("Downloaded %.0f bytes\\n", cl); + /* check the size */ + double dl; + res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &dl); + if(!res) { + printf("Downloaded %.0f bytes\\n", dl); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 index 60bfef5b0..ac4e7db5e 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SIZE_DOWNLOAD_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SIZE_DOWNLOAD_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes @@ -42,19 +42,23 @@ commonly called body. All meta and header data is excluded from this amount. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - /* check the size */ - curl_off_t dl; - res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD_T, &dl); if(!res) { - printf("Downloaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", dl); + /* check the size */ + curl_off_t dl; + res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD_T, &dl); + if(!res) { + printf("Downloaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", dl); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 index 15fd56bd6..d73c25c53 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SIZE_UPLOAD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SIZE_UPLOAD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes @@ -43,18 +43,22 @@ sensible variable type. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - double ul; - res = curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &ul); if(!res) { - printf("Uploaded %.0f bytes\\n", ul); + double ul; + res = curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &ul); + if(!res) { + printf("Uploaded %.0f bytes\\n", ul); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 index be869b190..01173b7fe 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SIZE_UPLOAD_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SIZE_UPLOAD_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes @@ -40,18 +40,22 @@ were uploaded. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - curl_off_t ul; - res = curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD_T, &ul); if(!res) { - printf("Uploaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", ul); + curl_off_t ul; + res = curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD_T, &ul); + if(!res) { + printf("Uploaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", ul); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 index fdf9ccd86..74a45d900 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SPEED_DOWNLOAD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SPEED_DOWNLOAD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SPEED_DOWNLOAD \- get download speed @@ -42,18 +42,22 @@ sensible variable type. .SH PROTOCOLS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - double speed; - res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &speed); if(!res) { - printf("Download speed %.0f bytes/sec\\n", speed); + double speed; + res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &speed); + if(!res) { + printf("Download speed %.0f bytes/sec\\n", speed); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 index f3b14bd25..741df2fda 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SPEED_DOWNLOAD_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SPEED_DOWNLOAD_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SPEED_DOWNLOAD_T \- get download speed @@ -39,18 +39,23 @@ that curl measured for the complete download. Measured in bytes/second. .SH PROTOCOLS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - curl_off_t speed; - res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD_T, &speed); if(!res) { - printf("Download speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", speed); + curl_off_t speed; + res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD_T, &speed); + if(!res) { + printf("Download speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", + speed); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 index 73570edef..eb3145ef6 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SPEED_UPLOAD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SPEED_UPLOAD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SPEED_UPLOAD \- get upload speed @@ -41,18 +41,22 @@ sensible variable type. .SH PROTOCOLS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - double speed; - res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed); if(!res) { - printf("Upload speed %.0f bytes/sec\\n", speed); + double speed; + res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed); + if(!res) { + printf("Upload speed %.0f bytes/sec\\n", speed); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 index 3e84015c5..a47e8c435 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SPEED_UPLOAD_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SPEED_UPLOAD_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SPEED_UPLOAD_T \- get upload speed @@ -39,18 +39,22 @@ curl measured for the complete upload. Measured in bytes/second. .SH PROTOCOLS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - curl_off_t speed; - res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed); if(!res) { - printf("Upload speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", speed); + curl_off_t speed; + res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed); + if(!res) { + printf("Upload speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", speed); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 b/external/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 index 3921a266a..b0020fcc4 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SSL_ENGINES 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SSL_ENGINES 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines @@ -44,17 +44,20 @@ data for you. All TLS based ones. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - struct curl_slist *engines; - res = curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines); - if((res == CURLE_OK) && engines) { - /* we have a list, free it when done using it */ - curl_slist_free_all(engines); - } +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_slist *engines; + res = curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines); + if((res == CURLE_OK) && engines) { + /* we have a list, free it when done using it */ + curl_slist_free_all(engines); + } - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 b/external/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 index 4eb804950..944a1d18e 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_SSL_VERIFYRESULT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_SSL_VERIFYRESULT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification @@ -43,16 +43,21 @@ option). All using TLS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - long verifyresult; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - curl_easy_getinfo(curl, CURLINFO_SSL_VERIFYRESULT, &verifyresult); - printf("The peer verification said %s\\n", verifyresult? - "BAAAD":"fine"); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + long verifyresult; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res) + printf("error: %s\\n", curl_easy_strerror(res)); + curl_easy_getinfo(curl, CURLINFO_SSL_VERIFYRESULT, &verifyresult); + printf("The peer verification said %s\\n", verifyresult? + "BAAAD":"fine"); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 b/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 index 86a819f3d..32860832d 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_STARTTRANSFER_TIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_STARTTRANSFER_TIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received @@ -46,19 +46,23 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - double start; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &start); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + double start; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %.1f", start); + res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &start); + if(CURLE_OK == res) { + printf("Time: %.1f", start); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 index edd801bcd..9820f00ab 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_STARTTRANSFER_TIME_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_STARTTRANSFER_TIME_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received @@ -47,20 +47,24 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_off_t start; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME_T, &start); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_off_t start; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", start / 1000000, - (long)(start % 1000000)); + res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME_T, &start); + if(CURLE_OK == res) { + printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", start / 1000000, + (long)(start % 1000000)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 b/external/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 index a6d04ce1a..57bb6da4b 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_TLS_SESSION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_TLS_SESSION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_TLS_SESSION \- get TLS session info @@ -53,14 +53,19 @@ that document for more information. All TLS-based .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode res; - struct curl_tlssessioninfo *tls; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - res = curl_easy_perform(curl); - curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &tls); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_tlssessioninfo *tls; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); + if(res) + printf("error: %s\\n", curl_easy_strerror(res)); + curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &tls); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 b/external/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 index 5b9d1e005..4d7bc6b4d 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_TLS_SSL_PTR 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_TLS_SSL_PTR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info @@ -134,13 +134,13 @@ static size_t wf(void *ptr, size_t size, size_t nmemb, void *stream) CURLcode res = curl_easy_getinfo(curl, CURLINFO_TLS_SSL_PTR, &info); if(info && !res) { if(CURLSSLBACKEND_OPENSSL == info->backend) { - printf("OpenSSL ver. %s\\n", SSL_get_version((SSL*)info->internals)); + printf("OpenSSL ver. %s\\n", SSL_get_version((SSL*)info->internals)); } } return size * nmemb; } -int main(int argc, char** argv) +int main(int argc, char **argv) { CURLcode res; curl = curl_easy_init(); diff --git a/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 b/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 index 2b57c0121..5ab034fd2 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_TOTAL_TIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_TOTAL_TIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_TOTAL_TIME \- get total time of previous transfer @@ -44,19 +44,23 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - double total; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + double total; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %.1f", total); + res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total); + if(CURLE_OK == res) { + printf("Time: %.1f", total); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 b/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 index b33bc7179..97944b221 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_TOTAL_TIME_T 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLINFO_TOTAL_TIME_T 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds @@ -45,20 +45,24 @@ See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_off_t total; - curl_easy_setopt(curl, CURLOPT_URL, url); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_off_t total; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + res = curl_easy_perform(curl); if(CURLE_OK == res) { - printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", total / 1000000, - (long)(total % 1000000)); + res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total); + if(CURLE_OK == res) { + printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", total / 1000000, + (long)(total % 1000000)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLINFO_XFER_ID.3 b/external/curl/docs/libcurl/opts/CURLINFO_XFER_ID.3 index fca5e96af..afbb09944 100644 --- a/external/curl/docs/libcurl/opts/CURLINFO_XFER_ID.3 +++ b/external/curl/docs/libcurl/opts/CURLINFO_XFER_ID.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLINFO_XFER_ID 3 "September 26, 2023" "libcurl 8.4.0" "libcurl" +.TH CURLINFO_XFER_ID 3 "December 04, 2023" "libcurl 8.5.0" "libcurl" .SH NAME CURLINFO_XFER_ID \- get the ID of a transfer @@ -46,18 +46,22 @@ same multi handle. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Perform the request */ - res = curl_easy_perform(curl); + /* Perform the request */ + res = curl_easy_perform(curl); - if(!res) { - curl_off_t xfer_id; - res = curl_easy_getinfo(curl, CURLINFO_XFER_ID, &xfer_id); if(!res) { - printf("Transfer ID: %" CURL_FORMAT_CURL_OFF_T "\\n", xfer_id); + curl_off_t xfer_id; + res = curl_easy_getinfo(curl, CURLINFO_XFER_ID, &xfer_id); + if(!res) { + printf("Transfer ID: %" CURL_FORMAT_CURL_OFF_T "\\n", xfer_id); + } } } } diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/external/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 index 1870a6495..782dc29ff 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining @@ -47,9 +47,12 @@ The default value is 0, which means that the penalization is inactive. HTTP(S) .SH EXAMPLE .nf -CURLM *m = curl_multi_init(); -long maxchunk = 10000; -curl_multi_setopt(m, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, maxchunk); +int main(void) +{ + CURLM *m = curl_multi_init(); + long maxchunk = 10000; + curl_multi_setopt(m, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, maxchunk); +} .fi .SH AVAILABILITY Added in 7.30.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/external/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 index a5e19fc6c..8539b90b7 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty @@ -47,9 +47,12 @@ The default value is 0, which means that the size penalization is inactive. HTTP(S) .SH EXAMPLE .nf -CURLM *m = curl_multi_init(); -long maxlength = 10000; -curl_multi_setopt(m, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, maxlength); +int main(void) +{ + CURLM *m = curl_multi_init(); + long maxlength = 10000; + curl_multi_setopt(m, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, maxlength); +} .fi .SH AVAILABILITY Added in 7.30.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/external/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 index 0182e5b0d..3023bf4a9 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAXCONNECTS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_MAXCONNECTS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_MAXCONNECTS \- size of connection cache @@ -57,9 +57,12 @@ See DESCRIPTION All .SH EXAMPLE .nf -CURLM *m = curl_multi_init(); -/* only keep 10 connections in the cache */ -curl_multi_setopt(m, CURLMOPT_MAXCONNECTS, 10L); +int main(void) +{ + CURLM *m = curl_multi_init(); + /* only keep 10 connections in the cache */ + curl_multi_setopt(m, CURLMOPT_MAXCONNECTS, 10L); +} .fi .SH AVAILABILITY Added in 7.16.3 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 index 47ab9e429..1b3067d6d 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_MAX_CONCURRENT_STREAMS \- max concurrent streams for http2 @@ -35,8 +35,8 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_CONCURRENT_STREAMS, .fi .SH DESCRIPTION Pass a long indicating the \fBmax\fP. The set number is used as the maximum -number of concurrent streams for a connections that libcurl should support on -connections done using HTTP/2. +number of concurrent streams libcurl should support on connections done using +HTTP/2 or HTTP/3. Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 100. The value passed here would be honored based on other system resources properties. @@ -46,9 +46,12 @@ value passed here would be honored based on other system resources properties. All .SH EXAMPLE .nf +int main(void) +{ CURLM *m = curl_multi_init(); /* max concurrent streams 200 */ curl_multi_setopt(m, CURLMOPT_MAX_CONCURRENT_STREAMS, 200L); +} .fi .SH AVAILABILITY Added in 7.67.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 index 7d8759d37..dd03e2cc4 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_MAX_HOST_CONNECTIONS \- max number of connections to a single host @@ -59,9 +59,12 @@ timeout is however treated as a per-connect timeout. HTTP(S) .SH EXAMPLE .nf -CURLM *m = curl_multi_init(); -/* do no more than 2 connections per host */ -curl_multi_setopt(m, CURLMOPT_MAX_HOST_CONNECTIONS, 2L); +int main(void) +{ + CURLM *m = curl_multi_init(); + /* do no more than 2 connections per host */ + curl_multi_setopt(m, CURLMOPT_MAX_HOST_CONNECTIONS, 2L); +} .fi .SH AVAILABILITY Added in 7.30.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 index 9126faa88..323ccf747 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline @@ -51,9 +51,12 @@ total number of requests in-flight is \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP * HTTP(S) .SH EXAMPLE .nf -CURLM *m = curl_multi_init(); -/* set a more conservative pipe length */ -curl_multi_setopt(m, CURLMOPT_MAX_PIPELINE_LENGTH, 3L); +int main(void) +{ + CURLM *m = curl_multi_init(); + /* set a more conservative pipe length */ + curl_multi_setopt(m, CURLMOPT_MAX_PIPELINE_LENGTH, 3L); +} .fi .SH AVAILABILITY Added in 7.30.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 index 7a0268dde..52756a88f 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections @@ -57,9 +57,12 @@ controlled by the number of easy handles added. All .SH EXAMPLE .nf -CURLM *m = curl_multi_init(); -/* never do more than 15 connections */ -curl_multi_setopt(m, CURLMOPT_MAX_TOTAL_CONNECTIONS, 15L); +int main(void) +{ + CURLM *m = curl_multi_init(); + /* never do more than 15 connections */ + curl_multi_setopt(m, CURLMOPT_MAX_TOTAL_CONNECTIONS, 15L); +} .fi .SH AVAILABILITY Added in 7.30.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 index 3f4568cca..556cb2754 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PIPELINING 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_PIPELINING 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing @@ -54,9 +54,12 @@ Before that, default was \fBCURLPIPE_NOTHING\fP. HTTP(S) .SH EXAMPLE .nf -CURLM *m = curl_multi_init(); -/* try HTTP/2 multiplexing */ -curl_multi_setopt(m, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX); +int main(void) +{ + CURLM *m = curl_multi_init(); + /* try HTTP/2 multiplexing */ + curl_multi_setopt(m, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX); +} .fi .SH AVAILABILITY Added in 7.16.0. Multiplex support bit added in 7.43.0. HTTP/1 Pipelining diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 index 0f9d6863e..4b6d1dcf4 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PIPELINING_SERVER_BL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_PIPELINING_SERVER_BL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list @@ -51,14 +51,17 @@ The default value is NULL, which means that there is no block list. .SH PROTOCOLS .SH EXAMPLE .nf - char *server_block_list[] = - { - "Microsoft-IIS/6.0", - "nginx/0.8.54", - NULL - }; - +static char *server_block_list[] = +{ + "Microsoft-IIS/6.0", + "nginx/0.8.54", + NULL +}; +int main(void) +{ + CURLM *m = curl_multi_init(); curl_multi_setopt(m, CURLMOPT_PIPELINING_SERVER_BL, server_block_list); +} .fi .SH AVAILABILITY Added in 7.30.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 index 0ebb7455c..e34ff715f 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PIPELINING_SITE_BL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_PIPELINING_SITE_BL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list @@ -47,14 +47,18 @@ The default value is NULL, which means that there is no block list. HTTP(S) .SH EXAMPLE .nf - char *site_block_list[] = - { - "www.haxx.se", - "www.example.com:1234", - NULL - }; +static char *site_block_list[] = +{ + "www.haxx.se", + "www.example.com:1234", + NULL +}; +int main(void) +{ + CURLM *m = curl_multi_init(); curl_multi_setopt(m, CURLMOPT_PIPELINING_SITE_BL, site_block_list); +} .fi .SH AVAILABILITY Added in 7.30.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/external/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 index d2882baa0..451033f99 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PUSHDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_PUSHDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_PUSHDATA \- pointer to pass to push callback @@ -42,6 +42,8 @@ NULL HTTP(S) .SH EXAMPLE .nf +#include + /* only allow pushes for file names starting with "push-" */ int push_callback(CURL *parent, CURL *easy, @@ -69,8 +71,13 @@ int push_callback(CURL *parent, return CURL_PUSH_DENY; } -curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback); -curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter); +int main(void) +{ + int counter; + CURLM *multi = curl_multi_init(); + curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback); + curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter); +} .fi .SH AVAILABILITY Added in 7.44.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 index 4a599d0cc..247b9499c 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_PUSHFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_PUSHFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes @@ -92,6 +92,8 @@ NULL, no callback HTTP(S) (HTTP/2 only) .SH EXAMPLE .nf +#include + /* only allow pushes for file names starting with "push-" */ int push_callback(CURL *parent, CURL *easy, @@ -119,8 +121,13 @@ int push_callback(CURL *parent, return CURL_PUSH_DENY; } -curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback); -curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter); +int main(void) +{ + int counter; + CURLM *multi = curl_multi_init(); + curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback); + curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter); +} .fi .SH AVAILABILITY Added in 7.44.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 index 0ac43179c..687df5105 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_SOCKETDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_SOCKETDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback @@ -43,28 +43,32 @@ NULL All .SH EXAMPLE .nf +struct priv { + void *ours; +}; + static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp) { - GlobalInfo *g = (GlobalInfo*) cbp; - SockInfo *fdp = (SockInfo*) sockp; + struct priv *p = sockp; + printf("my ptr: %p\\n", p->ours); if(what == CURL_POLL_REMOVE) { - remsock(fdp); + /* remove the socket from our collection */ + } + if(what & CURL_POLL_IN) { + /* wait for read on this socket */ } - else { - if(!fdp) { - addsock(s, e, what, g); - } - else { - setsock(fdp, s, e, what, g); - } + if(what & CURL_POLL_OUT) { + /* wait for write on this socket */ } + return 0; } -main() +int main(void) { - GlobalInfo setup; + struct priv setup; + CURLM *multi = curl_multi_init(); /* ... use socket callback and custom pointer */ curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb); curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup); diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 index 7fadfc8c2..12c46f9ee 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_SOCKETFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_SOCKETFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for @@ -86,28 +86,32 @@ NULL (no callback) All .SH EXAMPLE .nf +struct priv { + void *ours; +}; + static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp) { - GlobalInfo *g = cbp; - SockInfo *fdp = sockp; + struct priv *p = sockp; + printf("our ptr: %p\\n", p->ours); if(what == CURL_POLL_REMOVE) { - remsock(fdp); + /* remove the socket from our collection */ + } + if(what & CURL_POLL_IN) { + /* wait for read on this socket */ } - else { - if(!fdp) { - addsock(s, e, what, g); - } - else { - setsock(fdp, s, e, what, g); - } + if(what & CURL_POLL_OUT) { + /* wait for write on this socket */ } + return 0; } -main() +int main(void) { - GlobalInfo setup; + struct priv setup; + CURLM *multi = curl_multi_init(); /* ... use socket callback and custom pointer */ curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb); curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup); diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/external/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 index 02e3afd05..c339f9135 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_TIMERDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_TIMERDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback @@ -43,39 +43,30 @@ NULL All .SH EXAMPLE .nf -static gboolean timeout_cb(gpointer user_data) -{ - int running; - if(user_data) { - g_free(user_data); - curl_multi_setopt(curl_handle, CURLMOPT_TIMERDATA, NULL); - } - curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running); - return G_SOURCE_REMOVE; -} +struct priv { + void *custom; +}; static int timerfunc(CURLM *multi, long timeout_ms, void *clientp) { - guint *id = clientp; - - if(id) - g_source_remove(*id); + struct priv *mydata = clientp; + printf("our ptr: %p\\n", mydata->custom); - /* -1 means we should just delete our timer. */ - if(timeout_ms == -1) { - g_free(id); - id = NULL; - } - else { - if(!id) - id = g_new(guint, 1); - *id = g_timeout_add(timeout_ms, timeout_cb, id); - } - current_timer = id; - return 0; + if(timeout_ms) { + /* this is the new single timeout to wait for */ + } + else { + /* delete the timeout, nothing to wait for now */ + } } -curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc); +int main(void) +{ + struct priv mydata; + CURLM *multi = curl_multi_init(); + curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc); + curl_multi_setopt(multi, CURLMOPT_TIMERDATA, &mydata); +} .fi .SH AVAILABILITY Added in 7.16.0 diff --git a/external/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 index 9f3b2e04b..4e6cec130 100644 --- a/external/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLMOPT_TIMERFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLMOPT_TIMERFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLMOPT_TIMERFUNCTION \- callback to receive timeout values @@ -71,39 +71,30 @@ NULL All .SH EXAMPLE .nf -static gboolean timeout_cb(gpointer user_data) -{ - int running; - if(user_data) { - g_free(user_data); - curl_multi_setopt(curl_handle, CURLMOPT_TIMERDATA, NULL); - } - curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0, &running); - return G_SOURCE_REMOVE; -} +struct priv { + void *custom; +}; static int timerfunc(CURLM *multi, long timeout_ms, void *clientp) { - guint *id = clientp; - - if(id) - g_source_remove(*id); + struct priv *mydata = clientp; + printf("our ptr: %p\\n", mydata->custom); - /* -1 means we should just delete our timer. */ - if(timeout_ms == -1) { - g_free(id); - id = NULL; - } - else { - if(!id) - id = g_new(guint, 1); - *id = g_timeout_add(timeout_ms, timeout_cb, id); - } - current_timer = id; - return 0; + if(timeout_ms) { + /* this is the new single timeout to wait for */ + } + else { + /* delete the timeout, nothing to wait for now */ + } } -curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc); +int main(void) +{ + struct priv mydata; + CURLM *multi = curl_multi_init(); + curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc); + curl_multi_setopt(multi, CURLMOPT_TIMERDATA, &mydata); +} .fi .SH AVAILABILITY Added in 7.16.0 diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 b/external/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 index 9d59d81b9..d66353a5e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ABSTRACT_UNIX_SOCKET \- abstract Unix domain socket @@ -53,10 +53,18 @@ Default is NULL. All .SH EXAMPLE .nf - curl_easy_setopt(curl_handle, CURLOPT_ABSTRACT_UNIX_SOCKET, "/tmp/foo.sock"); - curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost/"); -.fi +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_ABSTRACT_UNIX_SOCKET, "/tmp/foo.sock"); + curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/"); + /* Perform the request */ + curl_easy_perform(curl); + } +} +.fi .SH AVAILABILITY Added in 7.53.0. .SH RETURN VALUE diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/external/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 index 5808da360..264c70c73 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back @@ -41,14 +41,17 @@ server to connect back to libcurl when an active FTP connection is used. FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/path/file"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/path/file"); - /* wait no more than 5 seconds for FTP server responses */ - curl_easy_setopt(curl, CURLOPT_ACCEPTTIMEOUT_MS, 5000L); + /* wait no more than 5 seconds for FTP server responses */ + curl_easy_setopt(curl, CURLOPT_ACCEPTTIMEOUT_MS, 5000L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/external/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 index 00a82c8bc..94ef434ad 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ACCEPT_ENCODING 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ACCEPT_ENCODING 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ACCEPT_ENCODING \- automatic decompression of HTTP downloads @@ -83,15 +83,18 @@ NULL HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* enable all supported built-in compressions */ - curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, ""); + /* enable all supported built-in compressions */ + curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, ""); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 index 1c00746b9..7d2f2d7df 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ADDRESS_SCOPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ADDRESS_SCOPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ADDRESS_SCOPE \- scope id for IPv6 addresses @@ -40,15 +40,20 @@ Pass a long specifying the scope id value to use when connecting to IPv6 address All, when using IPv6 .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - long my_scope_id; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - my_scope_id = if_nametoindex("eth0"); - curl_easy_setopt(curl, CURLOPT_ADDRESS_SCOPE, my_scope_id); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +#include /* for if_nametoindex() */ + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + long my_scope_id; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + my_scope_id = if_nametoindex("eth0"); + curl_easy_setopt(curl, CURLOPT_ADDRESS_SCOPE, my_scope_id); + ret = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3 b/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3 index cca4a8869..3eba950b3 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ALTSVC 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ALTSVC 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ALTSVC \- alt-svc cache file name @@ -45,11 +45,14 @@ NULL. The alt-svc cache is not read nor written to file. HTTPS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, CURLALTSVC_H1); - curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt"); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, CURLALTSVC_H1); + curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt"); + curl_easy_perform(curl); + } } .fi .SH "FILE FORMAT" diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 b/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 index e308dd006..7c670786f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ALTSVC_CTRL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ALTSVC_CTRL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ALTSVC_CTRL \- control alt-svc behavior @@ -72,11 +72,14 @@ only set if libcurl was built with support for those versions. HTTPS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, (long)CURLALTSVC_H1); - curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt"); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, (long)CURLALTSVC_H1); + curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt"); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_APPEND.3 b/external/curl/docs/libcurl/opts/CURLOPT_APPEND.3 index 7d6d7a3d5..2787bb405 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_APPEND.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_APPEND.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_APPEND 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_APPEND 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_APPEND \- append to the remote file @@ -41,14 +41,17 @@ instead of overwrite it. This is only useful when uploading to an FTP site. FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile"); - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - curl_easy_setopt(curl, CURLOPT_APPEND, 1L); + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile"); + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + curl_easy_setopt(curl, CURLOPT_APPEND, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/external/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 index 570eaeafd..21a1102a5 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_AUTOREFERER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_AUTOREFERER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_AUTOREFERER \- automatically update the referer header @@ -46,19 +46,23 @@ considered a minor privacy leak by some. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* follow redirects */ - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + /* follow redirects */ + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - /* set Referer: automatically when following redirects */ - curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L); + /* set Referer: automatically when following redirects */ + curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 b/external/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 index b79f1cdc4..a6eb00934 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_AWS_SIGV4 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_AWS_SIGV4 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_AWS_SIGV4 \- V4 signature @@ -68,20 +68,23 @@ as calling this with \fB"aws:amz"\fP in parameter. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); +int main(void) +{ + CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, - "https://service.region.example.com/uri"); - curl_easy_setopt(c, CURLOPT_AWS_SIGV4, "provider1:provider2"); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, + "https://service.region.example.com/uri"); + curl_easy_setopt(curl, CURLOPT_AWS_SIGV4, "provider1:provider2"); - /* service and region can also be set in CURLOPT_AWS_SIGV4 */ - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/uri"); - curl_easy_setopt(c, CURLOPT_AWS_SIGV4, - "provider1:provider2:region:service"); + /* service and region can also be set in CURLOPT_AWS_SIGV4 */ + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/uri"); + curl_easy_setopt(curl, CURLOPT_AWS_SIGV4, + "provider1:provider2:region:service"); - curl_easy_setopt(c, CURLOPT_USERPWD, "MY_ACCESS_KEY:MY_SECRET_KEY"); - curl_easy_perform(curl); + curl_easy_setopt(curl, CURLOPT_USERPWD, "MY_ACCESS_KEY:MY_SECRET_KEY"); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/external/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 index 2cfc731f4..52bec62e9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_BUFFERSIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_BUFFERSIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_BUFFERSIZE \- receive buffer size @@ -55,16 +55,20 @@ CURL_MAX_WRITE_SIZE (16kB) All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/foo.bin"); - /* ask libcurl to allocate a larger receive buffer */ - curl_easy_setopt(curl, CURLOPT_BUFFERSIZE, 120000L); + /* ask libcurl to allocate a larger receive buffer */ + curl_easy_setopt(curl, CURLOPT_BUFFERSIZE, 120000L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 b/external/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 index 5b988f288..bc18baf7e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CAINFO 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CAINFO 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle @@ -63,12 +63,15 @@ Schannel, this option is not set by default. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_CAINFO, "/etc/certs/cabundle.pem"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_CAINFO, "/etc/certs/cabundle.pem"); + curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 index 4e8c77a82..8288d5bb5 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CAINFO_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CAINFO_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CAINFO_BLOB \- Certificate Authority (CA) bundle in PEM format @@ -38,6 +38,10 @@ Pass a pointer to a curl_blob structure, which contains information (pointer and size) about a memory block with binary data of PEM encoded content holding one or more certificates to verify the HTTPS server with. +If the blob is initialized with the flags member of struct curl_blob set to +CURL_BLOB_COPY, the application does not have to keep the buffer around after +setting this. + If \fICURLOPT_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the server's certificate, \fICURLOPT_CAINFO_BLOB(3)\fP is not needed. @@ -48,17 +52,23 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -char *strpem; /* strpem must point to a PEM string */ -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob blob; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - blob.data = strpem; - blob.len = strlen(strpem); - blob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_CAINFO_BLOB, &blob); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +#include + +int main(void) +{ + char *strpem; /* strpem must point to a PEM string */ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob blob; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + blob.data = strpem; + blob.len = strlen(strpem); + blob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_CAINFO_BLOB, &blob); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 b/external/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 index b75d4281d..5bb78e239 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CAPATH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CAPATH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CAPATH \- directory holding CA certificates @@ -52,12 +52,16 @@ A default path detected at build time. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_CAPATH, "/etc/cert-dir"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_CAPATH, "/etc/cert-dir"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CA_CACHE_TIMEOUT.3 b/external/curl/docs/libcurl/opts/CURLOPT_CA_CACHE_TIMEOUT.3 index 7a4e6a467..fb854dc6f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CA_CACHE_TIMEOUT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CA_CACHE_TIMEOUT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CA_CACHE_TIMEOUT 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CA_CACHE_TIMEOUT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CA_CACHE_TIMEOUT \- life-time for cached certificate stores @@ -50,27 +50,31 @@ store remain forever. By default, libcurl caches this info for 24 hours. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* only reuse certificate stores for a short time */ - curl_easy_setopt(curl, CURLOPT_CA_CACHE_TIMEOUT, 60L); + /* only reuse certificate stores for a short time */ + curl_easy_setopt(curl, CURLOPT_CA_CACHE_TIMEOUT, 60L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - /* in this second request, the cache is not used if more than - sixty seconds passed since the previous connection */ - ret = curl_easy_perform(curl); + /* in this second request, the cache is not used if more than + sixty seconds passed since the previous connection */ + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY This option was added in curl 7.87.0. -Currently the only SSL backend to implement this certificate store caching -functionality is the OpenSSL (and forks) backend. +This option is supported by OpenSSL and its forks (since 7.87.0) and Schannel +(since 8.5.0). .SH RETURN VALUE Returns CURLE_OK .SH "SEE ALSO" diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/external/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 index 4113f4a4a..fd8a7acd1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CERTINFO 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CERTINFO 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CERTINFO \- request SSL certificate information @@ -44,34 +44,39 @@ its option \fICURLINFO_CERTINFO(3)\fP. All TLS-based .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/"); - /* connect to any HTTPS site, trusted or not */ - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + /* connect to any HTTPS site, trusted or not */ + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); - curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L); + curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - if (!res) { - struct curl_certinfo *ci; - res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &ci); + if(!res) { + struct curl_certinfo *ci; + res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &ci); - if (!res) { - printf("%d certs!\\n", ci->num_of_certs); + if(!res) { + int i; + printf("%d certs!\\n", ci->num_of_certs); - for(i = 0; i < ci->num_of_certs; i++) { - struct curl_slist *slist; + for(i = 0; i < ci->num_of_certs; i++) { + struct curl_slist *slist; - for(slist = ci->certinfo[i]; slist; slist = slist->next) - printf("%s\\n", slist->data); + for(slist = ci->certinfo[i]; slist; slist = slist->next) + printf("%s\\n", slist->data); + } } } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 index 4b04c6509..2b4a10f5f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcard match @@ -91,10 +91,17 @@ NULL FTP .SH EXAMPLE .nf +#include + +struct callback_data { + FILE *output; +}; + static long file_is_coming(struct curl_fileinfo *finfo, - struct callback_data *data, + void *ptr, int remains) { + struct callback_data *data = ptr; printf("%3d %40s %10luB ", remains, finfo->filename, (unsigned long)finfo->size); @@ -131,6 +138,8 @@ int main() /* data for callback */ struct callback_data callback_info; + CURL *curl = curl_easy_init(); + /* callback is called before download of concrete file started */ curl_easy_setopt(curl, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming); curl_easy_setopt(curl, CURLOPT_CHUNK_DATA, &callback_info); diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 index 3b5fd468a..b9ca3ee5f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CHUNK_DATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CHUNK_DATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CHUNK_DATA \- pointer passed to the FTP chunk callbacks @@ -42,10 +42,17 @@ NULL FTP .SH EXAMPLE .nf +#include + +struct callback_data { + FILE *output; +}; + static long file_is_coming(struct curl_fileinfo *finfo, - struct callback_data *data, + void *ptr, int remains) { + struct callback_data *data = ptr; printf("%3d %40s %10luB ", remains, finfo->filename, (unsigned long)finfo->size); @@ -82,6 +89,8 @@ int main() /* data for callback */ struct callback_data callback_info; + CURL *curl = curl_easy_init(); + /* callback is called before download of concrete file started */ curl_easy_setopt(curl, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming); curl_easy_setopt(curl, CURLOPT_CHUNK_DATA, &callback_info); diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 index 7bb24f81c..81298e3b7 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CHUNK_END_FUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CHUNK_END_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcard match @@ -49,6 +49,12 @@ NULL FTP .SH EXAMPLE .nf +#include + +struct callback_data { + FILE *output; +}; + static long file_is_downloaded(struct callback_data *data) { if(data->output) { @@ -62,6 +68,9 @@ int main() { /* data for callback */ struct callback_data callback_info; + + CURL *curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded); curl_easy_setopt(curl, CURLOPT_CHUNK_DATA, &callback_info); } diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 index 7690132a8..c48aa2e12 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CLOSESOCKETDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CLOSESOCKETDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback @@ -43,15 +43,31 @@ The default value of this parameter is NULL. All except file: .SH EXAMPLE .nf +struct priv { + void *custom; +}; + static int closesocket(void *clientp, curl_socket_t item) { + struct priv *my = clientp; + printf("our ptr: %p\\n", my->custom); + printf("libcurl wants to close %d now\\n", (int)item); return 0; } -/* call this function to close sockets */ -curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closesocket); -curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &sockfd); +int main(void) +{ + struct priv myown; + CURL *curl = curl_easy_init(); + + /* call this function to close sockets */ + curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closesocket); + curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &myown); + + curl_easy_perform(curl); + curl_easy_cleanup(curl); +} .fi .SH AVAILABILITY Added in 7.21.7 diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 index 354216490..64b47e0a5 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CLOSESOCKETFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CLOSESOCKETFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement @@ -54,15 +54,31 @@ By default libcurl uses the standard socket close function. All .SH EXAMPLE .nf +struct priv { + void *custom; +}; + static int closesocket(void *clientp, curl_socket_t item) { + struct priv *my = clientp; + printf("our ptr: %p\\n", my->custom); + printf("libcurl wants to close %d now\\n", (int)item); return 0; } -/* call this function to close sockets */ -curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closesocket); -curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &sockfd); +int main(void) +{ + struct priv myown; + CURL *curl = curl_easy_init(); + + /* call this function to close sockets */ + curl_easy_setopt(curl, CURLOPT_CLOSESOCKETFUNCTION, closesocket); + curl_easy_setopt(curl, CURLOPT_CLOSESOCKETDATA, &myown); + + curl_easy_perform(curl); + curl_easy_cleanup(curl); +} .fi .SH AVAILABILITY Added in 7.21.7 diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 index 5a82e2cc4..e4525ca30 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONNECTTIMEOUT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CONNECTTIMEOUT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase @@ -67,14 +67,17 @@ signals to be used unless \fICURLOPT_NOSIGNAL(3)\fP is set. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* complete connection within 10 seconds */ - curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L); + /* complete connection within 10 seconds */ + curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 index 4c61cbfb5..13ce65581 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CONNECTTIMEOUT_MS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase @@ -44,14 +44,17 @@ See \fICURLOPT_CONNECTTIMEOUT(3)\fP for details. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* complete connection within 10000 milliseconds */ - curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, 10000L); + /* complete connection within 10000 milliseconds */ + curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, 10000L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 index 2cdddfff9..45aa662d4 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONNECT_ONLY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CONNECT_ONLY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CONNECT_ONLY \- stop when connected to target server @@ -61,14 +61,17 @@ application wants to use it. Once it has been removed with HTTP, SMTP, POP3 and IMAP. For WS and WSS starting in 7.86.0. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); - ret = curl_easy_perform(curl); - if(ret == CURLE_OK) { - /* only connected! */ +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); + ret = curl_easy_perform(curl); + if(ret == CURLE_OK) { + /* only connected! */ + } } } .fi diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 b/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 index dfacefda5..1bb75f50f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONNECT_TO 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CONNECT_TO 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CONNECT_TO \- connect to a specific host and port instead of the URL's host and port @@ -89,22 +89,25 @@ NULL All .SH EXAMPLE .nf -CURL *curl; -struct curl_slist *connect_to = NULL; -connect_to = curl_slist_append(NULL, "example.com::server1.example.com:"); +int main(void) +{ + CURL *curl; + struct curl_slist *connect_to = NULL; + connect_to = curl_slist_append(NULL, "example.com::server1.example.com:"); -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_CONNECT_TO, connect_to); - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_CONNECT_TO, connect_to); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_perform(curl); + curl_easy_perform(curl); - /* always cleanup */ - curl_easy_cleanup(curl); -} + /* always cleanup */ + curl_easy_cleanup(curl); + } -curl_slist_free_all(connect_to); + curl_slist_free_all(connect_to); +} .fi .SH AVAILABILITY Added in 7.49.0 diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 index c914da407..a1df2861d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding @@ -78,12 +78,12 @@ FTP, SMTP, IMAP, POP3 .nf static CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length) { - char *tempptrin, *tempptrout; - size_t bytes = length; - int rc; - tempptrin = tempptrout = buffer; - rc = platform_a2e(&tempptrin, &bytes, &tempptrout, &bytes); - if(rc == PLATFORM_CONV_OK) { + int rc = 0; + + /* in-place convert 'buffer' from ASCII to EBCDIC */ + + if(rc == 0) { + /* success */ return CURLE_OK; } else { @@ -91,9 +91,14 @@ static CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length) } } -/* use platform-specific functions for codeset conversions */ -curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION, - my_conv_from_ascii_to_ebcdic); +int main(void) +{ + CURL *curl = curl_easy_init(); + + /* use platform-specific functions for codeset conversions */ + curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION, + my_conv_from_ascii_to_ebcdic); +} .fi .SH AVAILABILITY Not available and deprecated since 7.82.0. diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 index 2bf9b2854..ecc2546d9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding @@ -77,12 +77,10 @@ TLS-based protocols. .nf static CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length) { - char *tempptrin, *tempptrout; - size_t bytes = length; - int rc; - tempptrin = tempptrout = buffer; - rc = platform_u2e(&tempptrin, &bytes, &tempptrout, &bytes); - if(rc == PLATFORM_CONV_OK) { + int rc = 0; + /* in-place convert 'buffer' from UTF-8 to EBCDIC */ + if(rc == 0) { + /* success */ return CURLE_OK; } else { @@ -90,8 +88,12 @@ static CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length) } } -curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION, - my_conv_from_utf8_to_ebcdic); +int main(void) +{ + CURL *curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION, + my_conv_from_utf8_to_ebcdic); +} .fi .SH AVAILABILITY Not available and deprecated since 7.82.0. diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 index bcbbf09c5..8d7bf9d64 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding @@ -78,12 +78,10 @@ FTP, SMTP, IMAP, POP3 .nf static CURLcode my_conv_from_ebcdic_to_ascii(char *buffer, size_t length) { - char *tempptrin, *tempptrout; - size_t bytes = length; - int rc; - tempptrin = tempptrout = buffer; - rc = platform_e2a(&tempptrin, &bytes, &tempptrout, &bytes); - if(rc == PLATFORM_CONV_OK) { + int rc = 0; + /* in-place convert 'buffer' from EBCDIC to ASCII */ + if(rc == 0) { + /* success */ return CURLE_OK; } else { @@ -91,8 +89,13 @@ static CURLcode my_conv_from_ebcdic_to_ascii(char *buffer, size_t length) } } -curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION, - my_conv_from_ebcdic_to_ascii); +int main(void) +{ + CURL *curl = curl_easy_init(); + + curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION, + my_conv_from_ebcdic_to_ascii); +} .fi .SH AVAILABILITY Not available and deprecated since 7.82.0. diff --git a/external/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 b/external/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 index 571f1a2d8..8e5573d9b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_COOKIE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_COOKIE \- HTTP Cookie header @@ -69,13 +69,16 @@ NULL, no cookies HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_COOKIE, "tool=curl; fun=yes;"); + curl_easy_setopt(curl, CURLOPT_COOKIE, "tool=curl; fun=yes;"); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/external/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 index 7c0263c83..18a13e3f0 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIEFILE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_COOKIEFILE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_COOKIEFILE \- file name to read cookies from @@ -73,16 +73,20 @@ NULL HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* get cookies from an existing file */ - curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookies.txt"); + /* get cookies from an existing file */ + curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookies.txt"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH "Cookie file format" diff --git a/external/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/external/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 index 5ef559c5b..01315fda8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIEJAR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_COOKIEJAR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_COOKIEJAR \- file name to store cookies to @@ -61,17 +61,21 @@ NULL HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* export cookies to this file when closing the handle */ - curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "/tmp/cookies.txt"); + /* export cookies to this file when closing the handle */ + curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "/tmp/cookies.txt"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - /* close the handle, write the cookies! */ - curl_easy_cleanup(curl); + /* close the handle, write the cookies! */ + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/external/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 index 1c353605e..131be9301 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIELIST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_COOKIELIST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory @@ -75,35 +75,41 @@ HTTP #define SEP "\\t" /* Tab separates the fields */ -char *my_cookie = - "example.com" /* Hostname */ - SEP "FALSE" /* Include subdomains */ - SEP "/" /* Path */ - SEP "FALSE" /* Secure */ - SEP "0" /* Expiry in epoch time format. 0 == Session */ - SEP "foo" /* Name */ - SEP "bar"; /* Value */ - -/* my_cookie is imported immediately via CURLOPT_COOKIELIST. */ -curl_easy_setopt(curl, CURLOPT_COOKIELIST, my_cookie); - -/* The list of cookies in cookies.txt are not be imported until right - before a transfer is performed. Cookies in the list that have the same - hostname, path and name as in my_cookie are skipped. That is because - libcurl has already imported my_cookie and it's considered a "live" - cookie. A live cookie is not replaced by one read from a file. -*/ -curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); /* import */ - -/* Cookies are exported after curl_easy_cleanup is called. The server - may have added, deleted or modified cookies by then. The cookies that - were skipped on import are not exported. -*/ -curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); /* export */ - -curl_easy_perform(curl); /* cookies imported from cookies.txt */ - -curl_easy_cleanup(curl); /* cookies exported to cookies.txt */ +int main(void) +{ + char *my_cookie = + "example.com" /* Hostname */ + SEP "FALSE" /* Include subdomains */ + SEP "/" /* Path */ + SEP "FALSE" /* Secure */ + SEP "0" /* Expiry in epoch time format. 0 == Session */ + SEP "foo" /* Name */ + SEP "bar"; /* Value */ + + CURL *curl = curl_easy_init(); + if(curl) { + /* my_cookie is imported immediately via CURLOPT_COOKIELIST. */ + curl_easy_setopt(curl, CURLOPT_COOKIELIST, my_cookie); + + /* The list of cookies in cookies.txt are not be imported until right + before a transfer is performed. Cookies in the list that have the same + hostname, path and name as in my_cookie are skipped. That is because + libcurl has already imported my_cookie and it's considered a "live" + cookie. A live cookie is not replaced by one read from a file. + */ + curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); /* import */ + + /* Cookies are exported after curl_easy_cleanup is called. The server + may have added, deleted or modified cookies by then. The cookies that + were skipped on import are not exported. + */ + curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); /* export */ + + curl_easy_perform(curl); /* cookies imported from cookies.txt */ + + curl_easy_cleanup(curl); /* cookies exported to cookies.txt */ + } +} .fi .SH "Cookie file format" The cookie file format and general cookie concepts in curl are described diff --git a/external/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/external/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 index 58a03d99b..766a79484 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COOKIESESSION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_COOKIESESSION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_COOKIESESSION \- start a new cookie session @@ -49,19 +49,23 @@ the same session. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* new "session", do not load session cookies */ - curl_easy_setopt(curl, CURLOPT_COOKIESESSION, 1L); + /* new "session", do not load session cookies */ + curl_easy_setopt(curl, CURLOPT_COOKIESESSION, 1L); - /* get the (non session) cookies from this file */ - curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookies.txt"); + /* get the (non session) cookies from this file */ + curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookies.txt"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/external/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 index 7f65e7c6f..a31694ca8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_COPYPOSTFIELDS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_COPYPOSTFIELDS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST @@ -52,18 +52,21 @@ NULL HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - char local_buffer[1024]="data to send"; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + char local_buffer[1024]="data to send"; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* size of the data to copy from the buffer and send in the request */ - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L); + /* size of the data to copy from the buffer and send in the request */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L); - /* send data from the local stack */ - curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer); + /* send data from the local stack */ + curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CRLF.3 b/external/curl/docs/libcurl/opts/CURLOPT_CRLF.3 index a65a6532d..499744fb9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CRLF.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CRLF.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CRLF 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CRLF 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CRLF \- CRLF conversion @@ -44,13 +44,16 @@ This is a legacy option of questionable use. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/"); - curl_easy_setopt(curl, CURLOPT_CRLF, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/"); + curl_easy_setopt(curl, CURLOPT_CRLF, 1L); + ret = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/external/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 index ce7f7ae2d..4457601b3 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CRLFILE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CRLFILE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CRLFILE \- Certificate Revocation List file @@ -62,12 +62,16 @@ NULL All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_CRLFILE, "/etc/certs/crl.pem"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_CRLFILE, "/etc/certs/crl.pem"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CURLU.3 b/external/curl/docs/libcurl/opts/CURLOPT_CURLU.3 index 6fd1a7aa6..de69c6ab1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CURLU.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CURLU.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CURLU 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CURLU 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CURLU \- URL in URL handle format @@ -50,19 +50,22 @@ The default value of this parameter is NULL. All .SH EXAMPLE .nf -CURL *handle = curl_easy_init(); -CURLU *urlp = curl_url(); -int res = 0; -if(curl) { +int main(void) +{ + CURL *curl = curl_easy_init(); + CURLU *urlp = curl_url(); + if(curl) { + CURLcode res; + CURLUcode ret; + ret = curl_url_set(urlp, CURLUPART_URL, "https://example.com", 0); - res = curl_url_set(urlp, CURLUPART_URL, "https://example.com", 0); + curl_easy_setopt(curl, CURLOPT_CURLU, urlp); - curl_easy_setopt(handle, CURLOPT_CURLU, urlp); + res = curl_easy_perform(curl); - ret = curl_easy_perform(handle); - - curl_url_cleanup(urlp); - curl_easy_cleanup(handle); + curl_url_cleanup(urlp); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/external/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 index bb2c2502b..7d142fa17 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_CUSTOMREQUEST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_CUSTOMREQUEST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_CUSTOMREQUEST \- custom request method @@ -40,6 +40,9 @@ When you change the request \fImethod\fP by setting libcurl behaves or acts in regards to the particular request method, it only changes the actual string sent in the request. +libcurl passes on the verbatim string in its request without any filter or +other safe guards. That includes white space and control characters. + Restore to the internal default by setting this to NULL. This option can be used to specify the request: @@ -94,16 +97,20 @@ NULL HTTP, FTP, IMAP, POP3 and SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* DELETE the given path */ - curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); + /* DELETE the given path */ + curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 index 08d6249e7..f0c3f26d7 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DEBUGDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DEBUGDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DEBUGDATA \- pointer passed to the debug callback @@ -42,6 +42,20 @@ NULL All .SH EXAMPLE .nf +struct data { + void *custom; +}; + +static int my_trace(CURL *handle, curl_infotype type, + char *data, size_t size, + void *clientp) +{ + struct data *mine = clientp; + printf("our ptr: %p\\n", mine->custom); + + /* output debug info */ +} + int main(void) { CURL *curl; diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 index efcc4e896..57604b8f1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DEBUGFUNCTION 3 "October 05, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DEBUGFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DEBUGFUNCTION \- debug callback @@ -100,25 +100,25 @@ void dump(const char *text, { size_t i; size_t c; - unsigned int width=0x10; + unsigned int width = 0x10; fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\\n", text, (long)size, (long)size); - for(i=0; i= 0x20 && ptr[i+c] < 0x80) ? ptr[i+c] : '.'; + for(c = 0; (c < width) && (i + c < size); c++) { + char x = (ptr[i + c] >= 0x20 && ptr[i + c] < 0x80) ? ptr[i + c] : '.'; fputc(x, stream); } @@ -135,7 +135,7 @@ int my_trace(CURL *handle, curl_infotype type, (void)handle; /* prevent compiler warning */ (void)clientp; - switch (type) { + switch(type) { case CURLINFO_TEXT: fputs("== Info: ", stderr); fwrite(data, size, 1, stderr); diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 b/external/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 index 10e51452a..2ba86375a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DEFAULT_PROTOCOL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a @@ -63,16 +63,19 @@ NULL (make a guess based on the host) All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - /* set a URL without a scheme */ - curl_easy_setopt(curl, CURLOPT_URL, "example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* set a URL without a scheme */ + curl_easy_setopt(curl, CURLOPT_URL, "example.com"); - /* set the default protocol (scheme) for schemeless URLs */ - curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https"); + /* set the default protocol (scheme) for schemeless URLs */ + curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https"); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/external/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 index af3e80375..93f1c49a7 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DIRLISTONLY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DIRLISTONLY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DIRLISTONLY \- ask for names only in a directory listing @@ -57,16 +57,20 @@ effectively breaks that feature. FTP, SFTP and POP3 .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/"); - /* list only */ - curl_easy_setopt(curl, CURLOPT_DIRLISTONLY, 1L); + /* list only */ + curl_easy_setopt(curl, CURLOPT_DIRLISTONLY, 1L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 b/external/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 index d5d89f0e0..a3951d23a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the URL @@ -45,13 +45,16 @@ This is the equivalent to the \fICURLU_DISALLOW_USER\fP flag for the Several .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_DISALLOW_USERNAME_IN_URL, 1L); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_DISALLOW_USERNAME_IN_URL, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/external/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 index baa30a5d5..7ddbaefe1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DNS_CACHE_TIMEOUT \- life-time for DNS cache entries @@ -61,20 +61,24 @@ Since version 8.1.0, libcurl prunes entries from the DNS cache if it exceeds All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* only reuse addresses for a short time */ - curl_easy_setopt(curl, CURLOPT_DNS_CACHE_TIMEOUT, 2L); + /* only reuse addresses for a short time */ + curl_easy_setopt(curl, CURLOPT_DNS_CACHE_TIMEOUT, 2L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - /* in this second request, the cache is not be used if more than - two seconds have passed since the previous name resolve */ - ret = curl_easy_perform(curl); + /* in this second request, the cache is not be used if more than + two seconds have passed since the previous name resolve */ + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/external/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 index fd60715d5..fbbf7a18c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_INTERFACE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DNS_INTERFACE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DNS_INTERFACE \- interface to speak DNS over @@ -46,12 +46,16 @@ NULL All protocols except file:// - protocols that resolve host names. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_DNS_INTERFACE, "eth0"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_DNS_INTERFACE, "eth0"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 index 399f14ed3..99afbdd7c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_LOCAL_IP4 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DNS_LOCAL_IP4 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to @@ -46,12 +46,16 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_DNS_LOCAL_IP4, "192.168.0.14"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_DNS_LOCAL_IP4, "192.168.0.14"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 index 704bd8809..94e83484b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_LOCAL_IP6 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DNS_LOCAL_IP6 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to @@ -46,12 +46,16 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_DNS_LOCAL_IP6, "fe80::a9ff:fe46:b619"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_DNS_LOCAL_IP6, "fe80::a9ff:fe46:b619"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/external/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 index 854550b8e..1b117b7a3 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_SERVERS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DNS_SERVERS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DNS_SERVERS \- DNS servers to use @@ -50,12 +50,17 @@ NULL - use system default All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_DNS_SERVERS, "192.168.1.100:53,192.168.1.101"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_DNS_SERVERS, + "192.168.1.100:53,192.168.1.101"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 b/external/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 index 0324bf40f..f7f755bf1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DNS_SHUFFLE_ADDRESSES \- shuffle IP addresses for hostname @@ -55,15 +55,18 @@ performance impacts and may cause IPv4 to be used before IPv6 or vice versa. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_DNS_SHUFFLE_ADDRESSES, 1L); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_DNS_SHUFFLE_ADDRESSES, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); - /* always cleanup */ - curl_easy_cleanup(curl); + /* always cleanup */ + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/external/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 index a7da0f136..65593e15d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DNS_USE_GLOBAL_CACHE \- global DNS cache @@ -48,15 +48,19 @@ share DNS cache between transfers. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* switch off the use of a global, thread unsafe, cache */ - curl_easy_setopt(curl, CURLOPT_DNS_USE_GLOBAL_CACHE, 0L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* switch off the use of a global, thread unsafe, cache */ + curl_easy_setopt(curl, CURLOPT_DNS_USE_GLOBAL_CACHE, 0L); + ret = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } + .fi .SH AVAILABILITY Deprecated since 7.11.1. Function removed in 7.62.0. diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 b/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 index a18e004e3..1dd5a5b0b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DOH_SSL_VERIFYHOST \- verify the host name in the DoH SSL certificate @@ -63,16 +63,20 @@ of the DoH server certificate. DoH .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://cloudflare-dns.com/dns-query"); + curl_easy_setopt(curl, CURLOPT_DOH_URL, + "https://cloudflare-dns.com/dns-query"); - /* Disable host name verification of the DoH server */ - curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYHOST, 0L); + /* Disable host name verification of the DoH server */ + curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYHOST, 0L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 b/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 index b9b0c8230..89f7dd979 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DOH_SSL_VERIFYPEER \- verify the DoH SSL certificate @@ -74,16 +74,20 @@ the correct end-point. DoH .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://cloudflare-dns.com/dns-query"); + curl_easy_setopt(curl, CURLOPT_DOH_URL, + "https://cloudflare-dns.com/dns-query"); - /* Disable certificate verification of the DoH server */ - curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYPEER, 0L); + /* Disable certificate verification of the DoH server */ + curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYPEER, 0L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 b/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 index 2f90556cb..67d00ffd0 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DOH_SSL_VERIFYSTATUS \- verify the DoH SSL certificate's status @@ -51,16 +51,20 @@ the verification fails. DoH .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://cloudflare-dns.com/dns-query"); + curl_easy_setopt(curl, CURLOPT_DOH_URL, + "https://cloudflare-dns.com/dns-query"); - /* Ask for OCSP stapling when verifying the DoH server */ - curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYSTATUS, 1L); + /* Ask for OCSP stapling when verifying the DoH server */ + curl_easy_setopt(curl, CURLOPT_DOH_SSL_VERIFYSTATUS, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3 b/external/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3 index 8c854c0ea..a0f9465ca 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_DOH_URL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_DOH_URL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL @@ -71,11 +71,14 @@ the default name resolver. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://dns.example.com"); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_DOH_URL, "https://dns.example.com"); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/external/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 index 12b61615f..cca7fe635 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_EGDSOCKET 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_EGDSOCKET 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_EGDSOCKET \- EGD socket path @@ -46,12 +46,16 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_EGDSOCKET, "/var/egd.socket"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_EGDSOCKET, "/var/egd.socket"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/external/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 index f2a8f5c6d..9655001ff 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ERRORBUFFER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ERRORBUFFER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ERRORBUFFER \- error buffer for error messages @@ -56,34 +56,38 @@ NULL All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - CURLcode res; - char errbuf[CURL_ERROR_SIZE]; +#include /* for strlen() */ +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + char errbuf[CURL_ERROR_SIZE]; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* provide a buffer to store errors in */ - curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); + /* provide a buffer to store errors in */ + curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - /* set the error buffer as empty before performing a request */ - errbuf[0] = 0; + /* set the error buffer as empty before performing a request */ + errbuf[0] = 0; - /* perform the request */ - res = curl_easy_perform(curl); + /* perform the request */ + res = curl_easy_perform(curl); - /* if the request did not complete correctly, show the error - information. if no detailed error information was written to errbuf - show the more generic information from curl_easy_strerror instead. - */ - if(res != CURLE_OK) { - size_t len = strlen(errbuf); - fprintf(stderr, "\\nlibcurl: (%d) ", res); - if(len) - fprintf(stderr, "%s%s", errbuf, - ((errbuf[len - 1] != '\\n') ? "\\n" : "")); - else - fprintf(stderr, "%s\\n", curl_easy_strerror(res)); + /* if the request did not complete correctly, show the error + information. if no detailed error information was written to errbuf + show the more generic information from curl_easy_strerror instead. + */ + if(res != CURLE_OK) { + size_t len = strlen(errbuf); + fprintf(stderr, "\\nlibcurl: (%d) ", res); + if(len) + fprintf(stderr, "%s%s", errbuf, + ((errbuf[len - 1] != '\\n') ? "\\n" : "")); + else + fprintf(stderr, "%s\\n", curl_easy_strerror(res)); + } } } .fi diff --git a/external/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/external/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 index e6b778718..7db232894 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response @@ -44,14 +44,17 @@ sent anyway. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* wait 3 seconds for 100-continue */ - curl_easy_setopt(curl, CURLOPT_EXPECT_100_TIMEOUT_MS, 3000L); + /* wait 3 seconds for 100-continue */ + curl_easy_setopt(curl, CURLOPT_EXPECT_100_TIMEOUT_MS, 3000L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/external/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 index 9af590b56..525a92b2a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FAILONERROR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FAILONERROR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FAILONERROR \- request failure on HTTP response >= 400 @@ -53,14 +53,17 @@ get closed and \fICURLE_HTTP_RETURNED_ERROR\fP is returned. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L); - ret = curl_easy_perform(curl); - if(ret == CURLE_HTTP_RETURNED_ERROR) { - /* an HTTP response error problem */ +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L); + ret = curl_easy_perform(curl); + if(ret == CURLE_HTTP_RETURNED_ERROR) { + /* an HTTP response error problem */ + } } } .fi diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 b/external/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 index cbf286bbc..d54950db9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FILETIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FILETIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FILETIME \- get the modification time of the remote resource @@ -44,21 +44,26 @@ transfer to extract the received time (if any). HTTP(S), FTP(S), SFTP, FILE, SMB(S) .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, url); - /* Ask for filetime */ - curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); - res = curl_easy_perform(curl); - if(CURLE_OK == res) { - res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime); - if((CURLE_OK == res) && (filetime >= 0)) { - time_t file_time = (time_t)filetime; - printf("filetime %s: %s", filename, ctime(&file_time)); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/path.html"); + /* Ask for filetime */ + curl_easy_setopt(curl, CURLOPT_FILETIME, 1L); + res = curl_easy_perform(curl); + if(CURLE_OK == res) { + long filetime; + res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime); + if((CURLE_OK == res) && (filetime >= 0)) { + time_t file_time = (time_t)filetime; + printf("filetime: %s", ctime(&file_time)); + } } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 index 2ea904dd2..eb19f670a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FNMATCH_DATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FNMATCH_DATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FNMATCH_DATA \- pointer passed to the fnmatch callback @@ -41,22 +41,36 @@ NULL FTP .SH EXAMPLE .nf +extern int string_match(const char *s1, const char *s2); + +struct local_stuff { + void *custom; +}; + static int my_fnmatch(void *clientp, const char *pattern, const char *string) { - struct local_stuff *data = (struct local_stuff *)clientp; + struct local_stuff *my = clientp; + printf("my ptr: %p\\n", my->custom); + if(string_match(pattern, string)) return CURL_FNMATCHFUNC_MATCH; else return CURL_FNMATCHFUNC_NOMATCH; } +int main(void) { struct local_stuff local_data; - curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/file*"); - curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 1L); - curl_easy_setopt(curl, CURLOPT_FNMATCH_FUNCTION, my_fnmatch); - curl_easy_setopt(curl, CURLOPT_FNMATCH_DATA, &local_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/file*"); + curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 1L); + curl_easy_setopt(curl, CURLOPT_FNMATCH_FUNCTION, my_fnmatch); + curl_easy_setopt(curl, CURLOPT_FNMATCH_DATA, &local_data); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 index 225e26152..b8f209d5b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FNMATCH_FUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FNMATCH_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FNMATCH_FUNCTION \- wildcard match callback @@ -51,22 +51,33 @@ NULL == an internal function for wildcard matching. FTP .SH EXAMPLE .nf +extern int string_match(const char *s1, const char *s2); + +struct local_stuff { + void *custom; +}; static int my_fnmatch(void *clientp, const char *pattern, const char *string) { - struct local_stuff *data = (struct local_stuff *)clientp; + struct local_stuff *data = clientp; + printf("my pointer: %p\\n", data->custom); if(string_match(pattern, string)) return CURL_FNMATCHFUNC_MATCH; else return CURL_FNMATCHFUNC_NOMATCH; } +int main(void) { struct local_stuff local_data; - curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/file*"); - curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 1L); - curl_easy_setopt(curl, CURLOPT_FNMATCH_FUNCTION, my_fnmatch); - curl_easy_setopt(curl, CURLOPT_FNMATCH_DATA, &local_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/file*"); + curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 1L); + curl_easy_setopt(curl, CURLOPT_FNMATCH_FUNCTION, my_fnmatch); + curl_easy_setopt(curl, CURLOPT_FNMATCH_DATA, &local_data); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/external/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 index 7f48fcd25..bb14f8e4b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FOLLOWLOCATION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FOLLOWLOCATION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects @@ -69,14 +69,17 @@ would otherwise select internally. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* example.com is redirected, so we tell libcurl to follow redirection */ - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + /* example.com is redirected, so we tell libcurl to follow redirection */ + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/external/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 index 40b03dcb6..294f7e6f7 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FORBID_REUSE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FORBID_REUSE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FORBID_REUSE \- make connection get closed at once after use @@ -47,13 +47,19 @@ Set to 0 to have libcurl keep the connection open for possible later reuse Most .SH EXAMPLE .nf +int main(void) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1L); - curl_easy_perform(curl); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1L); + curl_easy_perform(curl); - /* this second transfer may not reuse the same connection */ - curl_easy_perform(curl); + /* this second transfer may not reuse the same connection */ + curl_easy_perform(curl); + + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/external/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 index 9661a7382..60185fcee 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FRESH_CONNECT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FRESH_CONNECT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FRESH_CONNECT \- force a new connection to be used @@ -49,11 +49,16 @@ Set \fIfresh\fP to 0 to have libcurl attempt reusing an existing connection Most .SH EXAMPLE .nf +int main(void) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_FRESH_CONNECT, 1L); - /* this transfer must use a new connection, not reuse an existing */ - curl_easy_perform(curl); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_FRESH_CONNECT, 1L); + /* this transfer must use a new connection, not reuse an existing */ + curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 index c7ca197d5..bd9696db8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTPPORT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTPPORT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTPPORT \- make FTP transfer active @@ -79,12 +79,17 @@ NULL FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/old-server/file.txt"); - curl_easy_setopt(curl, CURLOPT_FTPPORT, "-"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://example.com/old-server/file.txt"); + curl_easy_setopt(curl, CURLOPT_FTPPORT, "-"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 index e6db0b3bc..654c96f15 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTPSSLAUTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTPSSLAUTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTPSSLAUTH \- order in which to attempt TLS vs SSL @@ -50,14 +50,18 @@ CURLFTPAUTH_DEFAULT FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); - curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_TRY); - /* funny server, ask for SSL before TLS */ - curl_easy_setopt(curl, CURLOPT_FTPSSLAUTH, (long)CURLFTPAUTH_SSL); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); + curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_TRY); + /* funny server, ask for SSL before TLS */ + curl_easy_setopt(curl, CURLOPT_FTPSSLAUTH, (long)CURLFTPAUTH_SSL); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 index 4a548df1f..8cab108e8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_ACCOUNT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_ACCOUNT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_ACCOUNT \- account info for FTP @@ -45,15 +45,19 @@ NULL FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_FTP_ACCOUNT, "human-resources"); + curl_easy_setopt(curl, CURLOPT_FTP_ACCOUNT, "human-resources"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 index 3d16403ba..b305b42f8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP @@ -46,15 +46,17 @@ NULL FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER, "two users"); + res = curl_easy_perform(curl); - curl_easy_setopt(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER, "two users"); - - ret = curl_easy_perform(curl); - - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 index c676051c2..dd82174dc 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing directories for FTP and SFTP @@ -63,15 +63,20 @@ CURLFTP_CREATE_DIR_NONE (0) FTP and SFTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/non-existing/new.txt"); - curl_easy_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS, - (long)CURLFTP_CREATE_DIR_RETRY); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://example.com/non-existing/new.txt"); + curl_easy_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS, + (long)CURLFTP_CREATE_DIR_RETRY); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 index 0bc145024..0c3f6658f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_FILEMETHOD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_FILEMETHOD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP @@ -58,15 +58,19 @@ CURLFTPMETHOD_MULTICWD FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/1/2/3/4/new.txt"); - curl_easy_setopt(curl, CURLOPT_FTP_FILEMETHOD, - (long)CURLFTPMETHOD_SINGLECWD); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/1/2/3/4/new.txt"); + curl_easy_setopt(curl, CURLOPT_FTP_FILEMETHOD, + (long)CURLFTPMETHOD_SINGLECWD); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 index ed8ca3b83..4f1061b65 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_SKIP_PASV_IP 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_SKIP_PASV_IP 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response @@ -51,15 +51,19 @@ This option has no effect if PORT, EPRT or EPSV is used instead of PASV. FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); - /* please ignore the IP in the PASV response */ - curl_easy_setopt(curl, CURLOPT_FTP_SKIP_PASV_IP, 1L); - ret = curl_easy_perform(curl); + /* please ignore the IP in the PASV response */ + curl_easy_setopt(curl, CURLOPT_FTP_SKIP_PASV_IP, 1L); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 index 51f8709e5..fb2eb2e76 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_SSL_CCC 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_SSL_CCC 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth @@ -51,14 +51,18 @@ CURLFTPSSL_CCC_NONE FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); - curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_CONTROL); - /* go back to clear-text FTP after authenticating */ - curl_easy_setopt(curl, CURLOPT_FTP_SSL_CCC, (long)CURLFTPSSL_CCC_ACTIVE); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); + curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_CONTROL); + /* go back to clear-text FTP after authenticating */ + curl_easy_setopt(curl, CURLOPT_FTP_SSL_CCC, (long)CURLFTPSSL_CCC_ACTIVE); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 index ef8844fd4..e3707c842 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_USE_EPRT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_USE_EPRT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_USE_EPRT \- use EPRT for FTP @@ -51,19 +51,23 @@ then. .SH PROTOCOLS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); - /* contact us back, aka "active" FTP */ - curl_easy_setopt(curl, CURLOPT_FTPPORT, "-"); + /* contact us back, aka "active" FTP */ + curl_easy_setopt(curl, CURLOPT_FTPPORT, "-"); - /* FTP the way the neanderthals did it */ - curl_easy_setopt(curl, CURLOPT_FTP_USE_EPRT, 0L); + /* FTP the way the neanderthals did it */ + curl_easy_setopt(curl, CURLOPT_FTP_USE_EPRT, 0L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 index 842649417..8c255938b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_USE_EPSV 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_USE_EPSV 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_USE_EPSV \- use EPSV for FTP @@ -51,16 +51,21 @@ If the server is an IPv6 host, this option has no effect. FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/old-server/file.txt"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://example.com/old-server/file.txt"); - /* let's shut off this modern feature */ - curl_easy_setopt(curl, CURLOPT_FTP_USE_EPSV, 0L); + /* let's shut off this modern feature */ + curl_easy_setopt(curl, CURLOPT_FTP_USE_EPSV, 0L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 index c5dec011f..b54ea08cb 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_FTP_USE_PRET 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_FTP_USE_PRET 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_FTP_USE_PRET \- use PRET for FTP @@ -43,16 +43,21 @@ no effect when using the active FTP transfers mode. FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/old-server/file.txt"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://example.com/old-server/file.txt"); - /* a drftpd server, do it! */ - curl_easy_setopt(curl, CURLOPT_FTP_USE_PRET, 1L); + /* a drftpd server, do it! */ + curl_easy_setopt(curl, CURLOPT_FTP_USE_PRET, 1L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/external/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 index 39c1dfdbd..8f6495463 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_GSSAPI_DELEGATION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_GSSAPI_DELEGATION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_GSSAPI_DELEGATION \- allowed GSS-API delegation @@ -46,14 +46,17 @@ CURLGSSAPI_DELEGATION_NONE HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* delegate if okayed by policy */ - curl_easy_setopt(curl, CURLOPT_GSSAPI_DELEGATION, - (long)CURLGSSAPI_DELEGATION_POLICY_FLAG); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* delegate if okayed by policy */ + curl_easy_setopt(curl, CURLOPT_GSSAPI_DELEGATION, + (long)CURLGSSAPI_DELEGATION_POLICY_FLAG); + ret = curl_easy_perform(curl); + } } .fi diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 b/external/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 index 40597af05..056ba8545 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "April 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for IPv6 for happy eyeballs @@ -50,15 +50,18 @@ CURL_HET_DEFAULT (currently defined as 200L) All except FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, 300L); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, 300L); - curl_easy_perform(curl); + curl_easy_perform(curl); - /* always cleanup */ - curl_easy_cleanup(curl); + /* always cleanup */ + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 b/external/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 index 72427b91e..90a5dfe24 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HAPROXYPROTOCOL 3 "April 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HAPROXYPROTOCOL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header @@ -48,12 +48,15 @@ Most applications do not need this option. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HAPROXY_CLIENT_IP.3 b/external/curl/docs/libcurl/opts/CURLOPT_HAPROXY_CLIENT_IP.3 index 026e07493..9d12158d1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HAPROXY_CLIENT_IP.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HAPROXY_CLIENT_IP.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HAPROXY_CLIENT_IP 3 "August 22, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HAPROXY_CLIENT_IP 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HAPROXY_CLIENT_IP \- set HAProxy PROXY protocol client IP @@ -46,12 +46,15 @@ NULL, no HAProxy header is sent HTTP, HAProxy PROTOCOL .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_HAPROXY_CLIENT_IP, "1.1.1.1"); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_HAPROXY_CLIENT_IP, "1.1.1.1"); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HEADER.3 b/external/curl/docs/libcurl/opts/CURLOPT_HEADER.3 index 899d2ebdf..d3e22b12f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HEADER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HEADER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HEADER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HEADER \- pass headers to the data stream @@ -58,13 +58,16 @@ custom HTTP headers! Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_HEADER, 1L); + curl_easy_setopt(curl, CURLOPT_HEADER, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 index 78448adc5..7ff7188fd 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADERDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HEADERDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HEADERDATA \- pointer to pass to header callback @@ -59,24 +59,27 @@ struct my_info { static size_t header_callback(char *buffer, size_t size, size_t nitems, void *userdata) { - struct my_info *i = (struct my_info *)userdata; - + struct my_info *i = userdata; + printf("shoe size: %d\\n", i->shoesize); /* now this callback can access the my_info struct */ return nitems * size; } -CURL *curl = curl_easy_init(); -if(curl) { - struct my_info my = { 10, "the cookies are in the cupboard" }; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct my_info my = { 10, "the cookies are in the cupboard" }; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback); + curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback); - /* pass in custom data to the callback */ - curl_easy_setopt(curl, CURLOPT_HEADERDATA, &my); + /* pass in custom data to the callback */ + curl_easy_setopt(curl, CURLOPT_HEADERDATA, &my); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 index c74c92e20..546f682aa 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADERFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HEADERFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HEADERFUNCTION \- callback that receives header data @@ -111,13 +111,16 @@ static size_t header_callback(char *buffer, size_t size, return nitems * size; } -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback); + curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/external/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 index d7562a153..1a436cad1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HEADEROPT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HEADEROPT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HEADEROPT \- send HTTP headers to both proxy and host or separately @@ -53,23 +53,26 @@ CURLHEADER_SEPARATE (changed in 7.42.1, used CURLHEADER_UNIFIED before then) HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - struct curl_slist *list; - list = curl_slist_append(NULL, "Shoesize: 10"); - list = curl_slist_append(list, "Accept:"); - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + struct curl_slist *list; + list = curl_slist_append(NULL, "Shoesize: 10"); + list = curl_slist_append(list, "Accept:"); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); - /* HTTPS over a proxy makes a separate CONNECT to the proxy, so tell - libcurl to not send the custom headers to the proxy. Keep them - separate! */ - curl_easy_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE); - ret = curl_easy_perform(curl); - curl_slist_free_all(list); - curl_easy_cleanup(curl); + /* HTTPS over a proxy makes a separate CONNECT to the proxy, so tell + libcurl to not send the custom headers to the proxy. Keep them + separate! */ + curl_easy_setopt(curl, CURLOPT_HEADEROPT, CURLHEADER_SEPARATE); + ret = curl_easy_perform(curl); + curl_slist_free_all(list); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HSTS.3 b/external/curl/docs/libcurl/opts/CURLOPT_HSTS.3 index 87b7457ce..4708a3cde 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HSTS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HSTS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HSTS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HSTS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HSTS \- HSTS cache file name @@ -65,10 +65,13 @@ NULL, no file name HTTPS and HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_HSTS, "/home/user/.hsts-cache"); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_HSTS, "/home/user/.hsts-cache"); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 index 805cb5ca7..71c339321 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HSTSREADDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HSTSREADDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback @@ -45,16 +45,23 @@ NULL This feature is only used for HTTP(S) transfer. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -struct MyData this; -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); +struct MyData { + void *custom; +}; - /* pass pointer that gets passed in to the - CURLOPT_HSTSREADFUNCTION callback */ - curl_easy_setopt(curl, CURLOPT_HSTSREADDATA, &this); +int main(void) +{ + CURL *curl = curl_easy_init(); + struct MyData this; + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); - curl_easy_perform(curl); + /* pass pointer that gets passed in to the + CURLOPT_HSTSREADFUNCTION callback */ + curl_easy_setopt(curl, CURLOPT_HSTSREADDATA, &this); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 index 7d581f97c..6a406fffb 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HSTSREADFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HSTSREADFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts @@ -70,14 +70,32 @@ NULL - no callback. This feature is only used for HTTP(S) transfer. .SH EXAMPLE .nf +struct priv { + void *custom; +}; + +static CURLSTScode hsts_cb(CURL *easy, struct curl_hstsentry *sts, + void *clientp) +{ + /* populate the struct as documented */ + return CURLSTS_OK; +} + +int main(void) { - /* set HSTS read callback */ - curl_easy_setopt(curl, CURLOPT_HSTSREADFUNCTION, hstsread); + CURL *curl = curl_easy_init(); + if(curl) { + struct priv my_stuff; + CURLcode res; + + /* set HSTS read callback */ + curl_easy_setopt(curl, CURLOPT_HSTSREADFUNCTION, hsts_cb); - /* pass in suitable argument to the callback */ - curl_easy_setopt(curl, CURLOPT_HSTSREADDATA, &hstspreload[0]); + /* pass in suitable argument to the callback */ + curl_easy_setopt(curl, CURLOPT_HSTSREADDATA, &my_stuff); - result = curl_easy_perform(curl); + res = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 index 2f7c8b528..1a5226c62 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HSTSWRITEDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HSTSWRITEDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback @@ -45,16 +45,23 @@ NULL This feature is only used for HTTP(S) transfer. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -struct MyData this; -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); +struct MyData { + void *custom; +}; - /* pass pointer that gets passed in to the - CURLOPT_HSTSWRITEFUNCTION callback */ - curl_easy_setopt(curl, CURLOPT_HSTSWRITEDATA, &this); +int main(void) +{ + CURL *curl = curl_easy_init(); + struct MyData this; + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); - curl_easy_perform(curl); + /* pass pointer that gets passed in to the + CURLOPT_HSTSWRITEFUNCTION callback */ + curl_easy_setopt(curl, CURLOPT_HSTSWRITEDATA, &this); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 index e5cfdecf5..5817eba5a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HSTSWRITEFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HSTSWRITEFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts @@ -74,14 +74,32 @@ NULL - no callback. This feature is only used for HTTP(S) transfer. .SH EXAMPLE .nf +struct priv { + void *custom; +}; + +static CURLSTScode hswr_cb(CURL *easy, struct curl_hstsentry *sts, + struct curl_index *count, void *clientp) +{ + /* save the passed in HSTS data somewhere */ + return CURLSTS_OK; +} + +int main(void) { - /* set HSTS read callback */ - curl_easy_setopt(curl, CURLOPT_HSTSWRITEFUNCTION, hstswrite); + CURL *curl = curl_easy_init(); + if(curl) { + struct priv my_stuff; + CURLcode res; + + /* set HSTS read callback */ + curl_easy_setopt(curl, CURLOPT_HSTSWRITEFUNCTION, hswr_cb); - /* pass in suitable argument to the callback */ - curl_easy_setopt(curl, CURLOPT_HSTSWRITEDATA, &hstspreload[0]); + /* pass in suitable argument to the callback */ + curl_easy_setopt(curl, CURLOPT_HSTSWRITEDATA, &my_stuff); - result = curl_easy_perform(curl); + res = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 b/external/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 index 50f3e0f38..b65e15d76 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HSTS_CTRL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HSTS_CTRL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HSTS_CTRL \- control HSTS behavior @@ -56,10 +56,13 @@ to the file when closing the handle. HTTPS and HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_HSTS_CTRL, (long)CURLHSTS_ENABLE); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_HSTS_CTRL, (long)CURLHSTS_ENABLE); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 index 87a432cb1..37147315d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP09_ALLOWED 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTP09_ALLOWED 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTP09_ALLOWED \- allow HTTP/0.9 response @@ -47,12 +47,15 @@ responses. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_HTTP09_ALLOWED, 1L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_HTTP09_ALLOWED, 1L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 index 385311695..9cf438089 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP200ALIASES 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTP200ALIASES 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTP200ALIASES \- alternative matches for HTTP 200 OK @@ -52,17 +52,20 @@ NULL HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_slist *list; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct curl_slist *list; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - list = curl_slist_append(NULL, "ICY 200 OK"); - list = curl_slist_append(list, "WEIRDO 99 FINE"); + list = curl_slist_append(NULL, "ICY 200 OK"); + list = curl_slist_append(list, "WEIRDO 99 FINE"); - curl_easy_setopt(curl, CURLOPT_HTTP200ALIASES, list); - curl_easy_perform(curl); - curl_slist_free_all(list); /* free the list again */ + curl_easy_setopt(curl, CURLOPT_HTTP200ALIASES, list); + curl_easy_perform(curl); + curl_slist_free_all(list); /* free the list again */ + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 index b7a725001..b4884ba80 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPAUTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTPAUTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTPAUTH \- HTTP server authentication methods to try @@ -109,14 +109,17 @@ CURLAUTH_BASIC HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* allow whatever auth the server speaks */ - curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY); - curl_easy_setopt(curl, CURLOPT_USERPWD, "james:bond"); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* allow whatever auth the server speaks */ + curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY); + curl_easy_setopt(curl, CURLOPT_USERPWD, "james:bond"); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 index a10eb7a89..503057b34 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPGET 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTPGET 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTPGET \- ask for an HTTP GET request @@ -49,15 +49,18 @@ reset a handle to default method, consider \fIcurl_easy_reset(3)\fP. HTTP(S) .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* use a GET to fetch this */ - curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); + /* use a GET to fetch this */ + curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 index e1c45b919..d60b9dd71 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPHEADER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTPHEADER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTPHEADER \- set of HTTP headers @@ -56,7 +56,9 @@ semicolon). The headers included in the linked list \fBmust not\fP be CRLF-terminated, because libcurl adds CRLF after each header item itself. Failure to comply -with this might result in strange behavior. +with this might result in strange behavior. libcurl passes on the verbatim +strings you give it, without any filter or other safe guards. That includes +white space and control characters. The first line in an HTTP request (containing the method, usually a GET or POST) is not a header and cannot be replaced using this option. Only the lines @@ -101,7 +103,7 @@ MIME mail is only composed of alternative representations of the same data (i.e.: HTML and plain text), this header must be set to "multipart/alternative". In all cases the value must be of the form "multipart/*" to respect the document structure and may not include the "boundary=" parameter. -.P + Other specific headers that do not have a libcurl default value but are strongly desired by mail delivery and user agents should also be included. These are "From:", "To:", "Date:" and "Subject:" among others and their @@ -135,21 +137,24 @@ NULL HTTP, IMAP and SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); +int main(void) +{ + CURL *curl = curl_easy_init(); -struct curl_slist *list = NULL; + struct curl_slist *list = NULL; -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - list = curl_slist_append(list, "Shoesize: 10"); - list = curl_slist_append(list, "Accept:"); + list = curl_slist_append(list, "Shoesize: 10"); + list = curl_slist_append(list, "Accept:"); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); - curl_easy_perform(curl); + curl_easy_perform(curl); - curl_slist_free_all(list); /* free the list */ + curl_slist_free_all(list); /* free the list */ + } } .fi diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 index 3f5c612c3..e55a023a2 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPPOST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTPPOST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTPPOST \- multipart formpost content @@ -53,27 +53,41 @@ NULL HTTP .SH EXAMPLE .nf -/* Fill in the file upload field. This makes libcurl load data from - the given file name when curl_easy_perform() is called. */ -curl_formadd(&formpost, - &lastptr, - CURLFORM_COPYNAME, "sendfile", - CURLFORM_FILE, "postit2.c", - CURLFORM_END); +int main(void) +{ + struct curl_httppost *formpost; + struct curl_httppost *lastptr; -/* Fill in the filename field */ -curl_formadd(&formpost, - &lastptr, - CURLFORM_COPYNAME, "filename", - CURLFORM_COPYCONTENTS, "postit2.c", - CURLFORM_END); + /* Fill in the file upload field. This makes libcurl load data from + the given file name when curl_easy_perform() is called. */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "sendfile", + CURLFORM_FILE, "postit2.c", + CURLFORM_END); -/* Fill in the submit field too, even if this is rarely needed */ -curl_formadd(&formpost, - &lastptr, - CURLFORM_COPYNAME, "submit", - CURLFORM_COPYCONTENTS, "send", - CURLFORM_END); + /* Fill in the filename field */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "filename", + CURLFORM_COPYCONTENTS, "postit2.c", + CURLFORM_END); + + /* Fill in the submit field too, even if this is rarely needed */ + curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "submit", + CURLFORM_COPYCONTENTS, "send", + CURLFORM_END); + + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); + curl_easy_perform(curl); + curl_easy_cleanup(curl); + } + curl_formfree(formpost); +} .fi .SH AVAILABILITY As long as HTTP is enabled. Deprecated in 7.56.0. diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 index d8551ce07..7f953107f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTPPROXYTUNNEL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTPPROXYTUNNEL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy @@ -57,12 +57,15 @@ rarely works through the proxy anyway). All network protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:80"); - curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:80"); + curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 index a47d589ce..8668a397a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP_CONTENT_DECODING 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTP_CONTENT_DECODING 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTP_CONTENT_DECODING \- HTTP content decoding control @@ -43,12 +43,15 @@ default content decoding but requires you to use HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_HTTP_CONTENT_DECODING, 0L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_HTTP_CONTENT_DECODING, 0L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 index 1267bebda..dfc1a3357 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTP_TRANSFER_DECODING \- HTTP transfer decoding control @@ -42,12 +42,15 @@ does chunked transfer decoding by default unless this option is set to zero. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_HTTP_TRANSFER_DECODING, 0L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_HTTP_TRANSFER_DECODING, 0L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/external/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 index 3929b61de..3cd2ed5bf 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_HTTP_VERSION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_HTTP_VERSION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_HTTP_VERSION \- HTTP protocol version to use @@ -81,15 +81,18 @@ Before that: CURL_HTTP_VERSION_1_1 HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, - (long)CURL_HTTP_VERSION_2TLS); - ret = curl_easy_perform(curl); - if(ret == CURLE_HTTP_RETURNED_ERROR) { - /* an HTTP response error problem */ +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, + (long)CURL_HTTP_VERSION_2TLS); + ret = curl_easy_perform(curl); + if(ret == CURLE_HTTP_RETURNED_ERROR) { + /* an HTTP response error problem */ + } } } .fi diff --git a/external/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/external/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 index 9daf08a0d..262e0da07 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length @@ -52,14 +52,17 @@ Only use this option if strictly necessary. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* we know the server is silly, ignore content-length */ - curl_easy_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L); + /* we know the server is silly, ignore content-length */ + curl_easy_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 index fd4785773..f9ae02566 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INFILESIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_INFILESIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_INFILESIZE \- size of the input file to send off @@ -58,17 +58,24 @@ Unset Many .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - long uploadsize = FILE_SIZE; - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/destination.tar.gz"); +#define FILE_SIZE 12345L - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + long uploadsize = FILE_SIZE; - curl_easy_setopt(curl, CURLOPT_INFILESIZE, uploadsize); + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://example.com/destination.tar.gz"); - curl_easy_perform(curl); + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + + curl_easy_setopt(curl, CURLOPT_INFILESIZE, uploadsize); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 index 1bb0fc9e2..1f65fce2d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INFILESIZE_LARGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_INFILESIZE_LARGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_INFILESIZE_LARGE \- size of the input file to send off @@ -54,17 +54,23 @@ Unset Many .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_off_t uploadsize = FILE_SIZE; +#define FILE_SIZE 123456 - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/destination.tar.gz"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_off_t uploadsize = FILE_SIZE; - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://example.com/destination.tar.gz"); - curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadsize); + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - curl_easy_perform(curl); + curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, uploadsize); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/external/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 index e9fc55b01..c9e91495e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INTERFACE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_INTERFACE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_INTERFACE \- source interface for outgoing traffic @@ -61,15 +61,19 @@ NULL, use whatever the TCP stack finds suitable All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_INTERFACE, "eth0"); + curl_easy_setopt(curl, CURLOPT_INTERFACE, "eth0"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 index 218028d5c..0a5538c2e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INTERLEAVEDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_INTERLEAVEDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_INTERLEAVEDATA \- pointer passed to RTSP interleave callback @@ -43,16 +43,27 @@ NULL RTSP .SH EXAMPLE .nf -static size_t rtp_write(void *ptr, size_t size, size_t nmemb, void *user) +struct local { + void *custom; +}; +static size_t rtp_write(void *ptr, size_t size, size_t nmemb, void *userp) { - struct local *l = (struct local *)user; + struct local *l = userp; + printf("my pointer: %p\\n", l->custom); /* take care of the packet in 'ptr', then return... */ return size * nmemb; } + +int main(void) { struct local rtp_data; - curl_easy_setopt(curl, CURLOPT_INTERLEAVEFUNCTION, rtp_write); - curl_easy_setopt(curl, CURLOPT_INTERLEAVEDATA, &rtp_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_INTERLEAVEFUNCTION, rtp_write); + curl_easy_setopt(curl, CURLOPT_INTERLEAVEDATA, &rtp_data); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 index 35d224e58..5264c9a1c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_INTERLEAVEFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_INTERLEAVEFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_INTERLEAVEFUNCTION \- callback for RTSP interleaved data @@ -73,16 +73,26 @@ NULL, the interleave data is then passed to the regular write function: RTSP .SH EXAMPLE .nf -static size_t rtp_write(void *ptr, size_t size, size_t nmemb, void *user) +struct local { + void *custom; +}; + +static size_t rtp_write(void *ptr, size_t size, size_t nmemb, void *userp) { - struct local *l = (struct local *)user; + struct local *l = userp; + printf("our ptr: %p\\n", l->custom); /* take care of the packet in 'ptr', then return... */ return size * nmemb; } + +int main(void) { struct local rtp_data; - curl_easy_setopt(curl, CURLOPT_INTERLEAVEFUNCTION, rtp_write); - curl_easy_setopt(curl, CURLOPT_INTERLEAVEDATA, &rtp_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_INTERLEAVEFUNCTION, rtp_write); + curl_easy_setopt(curl, CURLOPT_INTERLEAVEDATA, &rtp_data); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 index ae5d9c460..3f5a975bd 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IOCTLDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_IOCTLDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_IOCTLDATA \- pointer passed to I/O callback @@ -41,20 +41,29 @@ By default, the value of this parameter is NULL. Used with HTTP .SH EXAMPLE .nf +#include /* for lseek */ + +struct data { + int fd; /* our file descriptor */ +}; + static curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp) { struct data *io = (struct data *)clientp; if(cmd == CURLIOCMD_RESTARTREAD) { - lseek(fd, 0, SEEK_SET); - current_offset = 0; + lseek(io->fd, 0, SEEK_SET); return CURLIOE_OK; } return CURLIOE_UNKNOWNCMD; } +int main(void) { struct data ioctl_data; - curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_callback); - curl_easy_setopt(curl, CURLOPT_IOCTLDATA, &ioctl_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_callback); + curl_easy_setopt(curl, CURLOPT_IOCTLDATA, &ioctl_data); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 index e74a7c8c6..7e432a13a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IOCTLFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_IOCTLFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_IOCTLFUNCTION \- callback for I/O operations @@ -71,20 +71,29 @@ By default, this parameter is set to NULL. Not used. Used with HTTP .SH EXAMPLE .nf +#include /* for lseek */ + +struct data { + int fd; /* our file descriptor */ +}; + static curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp) { struct data *io = (struct data *)clientp; if(cmd == CURLIOCMD_RESTARTREAD) { - lseek(fd, 0, SEEK_SET); - current_offset = 0; + lseek(io->fd, 0, SEEK_SET); return CURLIOE_OK; } return CURLIOE_UNKNOWNCMD; } +int main(void) { struct data ioctl_data; - curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_callback); - curl_easy_setopt(curl, CURLOPT_IOCTLDATA, &ioctl_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, ioctl_callback); + curl_easy_setopt(curl, CURLOPT_IOCTLDATA, &ioctl_data); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/external/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 index 0e440e058..5a6b89a68 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_IPRESOLVE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_IPRESOLVE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_IPRESOLVE \- IP protocol version to use @@ -54,19 +54,22 @@ CURL_IPRESOLVE_WHATEVER All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - /* of all addresses example.com resolves to, only IPv6 ones are used */ - curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6); + /* of all addresses example.com resolves to, only IPv6 ones are used */ + curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi - .SH AVAILABILITY Always .SH RETURN VALUE diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 index 30baa8ca7..4614db18d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ISSUERCERT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ISSUERCERT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ISSUERCERT \- issuer SSL certificate filename @@ -57,12 +57,16 @@ NULL All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_ISSUERCERT, "/etc/certs/cacert.pem"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_ISSUERCERT, "/etc/certs/cacert.pem"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 index 0a7980101..90a06ea4a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_ISSUERCERT_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_ISSUERCERT_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob @@ -63,16 +63,24 @@ NULL All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob blob; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - blob.data = certificateData; - blob.len = filesize; - blob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_ISSUERCERT_BLOB, &blob); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); + +extern char *certificateData; +extern size_t filesize; + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob blob; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + blob.data = certificateData; + blob.len = filesize; + blob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_ISSUERCERT_BLOB, &blob); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 b/external/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 index ea7f34e35..9ae716d5d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300 @@ -49,13 +49,16 @@ Most applications do not need this option. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "sending data"); - curl_easy_setopt(curl, CURLOPT_KEEP_SENDING_ON_ERROR, 1L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "sending data"); + curl_easy_setopt(curl, CURLOPT_KEEP_SENDING_ON_ERROR, 1L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/external/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 index a34e237cc..33b460c84 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_KEYPASSWD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_KEYPASSWD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_KEYPASSWD \- passphrase to private key @@ -46,14 +46,18 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "superman"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "superman"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/external/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 index c0184105d..463345d92 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_KRBLEVEL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_KRBLEVEL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_KRBLEVEL \- FTP kerberos security level @@ -47,12 +47,16 @@ NULL FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_KRBLEVEL, "private"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_KRBLEVEL, "private"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 index 50549b64b..b05a2aa0d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOCALPORT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_LOCALPORT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_LOCALPORT \- local port number to use for socket @@ -43,14 +43,18 @@ this option is set. Valid port numbers are 1 - 65535. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_LOCALPORT, 49152L); - /* and try 20 more ports following that */ - curl_easy_setopt(curl, CURLOPT_LOCALPORTRANGE, 20L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_LOCALPORT, 49152L); + /* and try 20 more ports following that */ + curl_easy_setopt(curl, CURLOPT_LOCALPORTRANGE, 20L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 index cdcd371e8..ae35f175b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOCALPORTRANGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_LOCALPORTRANGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_LOCALPORTRANGE \- number of additional local ports to try @@ -47,14 +47,18 @@ setup failures. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_LOCALPORT, 49152L); - /* and try 20 more ports following that */ - curl_easy_setopt(curl, CURLOPT_LOCALPORTRANGE, 20L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_LOCALPORT, 49152L); + /* and try 20 more ports following that */ + curl_easy_setopt(curl, CURLOPT_LOCALPORTRANGE, 20L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/external/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 index 1291a194c..fde1ac689 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOGIN_OPTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_LOGIN_OPTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_LOGIN_OPTIONS \- login options @@ -58,12 +58,16 @@ NULL Only IMAP, LDAP, POP3 and SMTP support login options. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); - curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, "AUTH=*"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); + curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, "AUTH=*"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 index c1c7afbe9..fd46574af 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOW_SPEED_LIMIT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_LOW_SPEED_LIMIT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_LOW_SPEED_LIMIT \- low speed limit in bytes per second @@ -44,18 +44,22 @@ slow and abort. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, url); - /* abort if slower than 30 bytes/sec during 60 seconds */ - curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 60L); - curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 30L); - res = curl_easy_perform(curl); - if(CURLE_OPERATION_TIMEDOUT == res) { - printf("Timeout!\\n"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + /* abort if slower than 30 bytes/sec during 60 seconds */ + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 60L); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 30L); + res = curl_easy_perform(curl); + if(CURLE_OPERATION_TIMEDOUT == res) { + printf("Timeout!\\n"); + } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 index 75e213df4..d05011590 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_LOW_SPEED_TIME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_LOW_SPEED_TIME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_LOW_SPEED_TIME \- low speed limit time period @@ -43,18 +43,22 @@ library to consider it too slow and abort. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, url); - /* abort if slower than 30 bytes/sec during 60 seconds */ - curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 60L); - curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 30L); - res = curl_easy_perform(curl); - if(CURLE_OPERATION_TIMEDOUT == res) { - printf("Timeout!\\n"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + /* abort if slower than 30 bytes/sec during 60 seconds */ + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 60L); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 30L); + res = curl_easy_perform(curl); + if(CURLE_OPERATION_TIMEDOUT == res) { + printf("Timeout!\\n"); + } + /* always cleanup */ + curl_easy_cleanup(curl); } - /* always cleanup */ - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 index 50bf0a10a..e1f6eaba6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAIL_AUTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAIL_AUTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAIL_AUTH \- SMTP authentication address @@ -57,12 +57,16 @@ NULL SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); - curl_easy_setopt(curl, CURLOPT_MAIL_AUTH, ""); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); + curl_easy_setopt(curl, CURLOPT_MAIL_AUTH, ""); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 index 43c06cc0e..944cd322a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAIL_FROM 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAIL_FROM 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAIL_FROM \- SMTP sender address @@ -50,12 +50,16 @@ blank SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); - curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "president@example.com"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); + curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "president@example.com"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 index 7e2174655..595c22166 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAIL_RCPT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAIL_RCPT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAIL_RCPT \- list of SMTP mail recipients @@ -57,16 +57,20 @@ NULL SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_slist *list; - list = curl_slist_append(NULL, "root@localhost"); - list = curl_slist_append(list, "person@example.com"); - curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); - curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, list); - ret = curl_easy_perform(curl); - curl_slist_free_all(list); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_slist *list; + list = curl_slist_append(NULL, "root@localhost"); + list = curl_slist_append(list, "person@example.com"); + curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); + curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, list); + res = curl_easy_perform(curl); + curl_slist_free_all(list); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLOWFAILS.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLOWFAILS.3 index 0fde67890..f508fdf99 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLOWFAILS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLOWFAILS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAIL_RCPT_ALLOWFAILS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAIL_RCPT_ALLOWFAILS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAIL_RCPT_ALLOWFAILS \- allow RCPT TO command to fail for some recipients @@ -52,20 +52,24 @@ RCPT TO command. SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_slist *list; +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct curl_slist *list; + CURLcode res; - /* Adding one valid and one invalid email address */ - list = curl_slist_append(NULL, "person@example.com"); - list = curl_slist_append(list, "invalidemailaddress"); + /* Adding one valid and one invalid email address */ + list = curl_slist_append(NULL, "person@example.com"); + list = curl_slist_append(list, "invalidemailaddress"); - curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); - curl_easy_setopt(curl, CURLOPT_MAIL_RCPT_ALLOWFAILS, 1L); + curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); + curl_easy_setopt(curl, CURLOPT_MAIL_RCPT_ALLOWFAILS, 1L); - ret = curl_easy_perform(curl); - curl_slist_free_all(list); - curl_easy_cleanup(curl); + res = curl_easy_perform(curl); + curl_slist_free_all(list); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 index 101d0f9d9..1c79ccedf 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXAGE_CONN 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAXAGE_CONN 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection @@ -50,14 +50,17 @@ Default maximum age is set to 118 seconds. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* only allow 30 seconds idle time */ - curl_easy_setopt(curl, CURLOPT_MAXAGE_CONN, 30L); + /* only allow 30 seconds idle time */ + curl_easy_setopt(curl, CURLOPT_MAXAGE_CONN, 30L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 index 992144458..62b06f3d1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXCONNECTS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAXCONNECTS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAXCONNECTS \- maximum connection cache size @@ -55,13 +55,16 @@ acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* limit the connection cache for this handle to no more than 3 */ - curl_easy_setopt(curl, CURLOPT_MAXCONNECTS, 3L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* limit the connection cache for this handle to no more than 3 */ + curl_easy_setopt(curl, CURLOPT_MAXCONNECTS, 3L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 index f561b8c6b..d1cae955e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXFILESIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAXFILESIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAXFILESIZE \- maximum file size allowed to download @@ -51,13 +51,16 @@ None FTP, HTTP and MQTT .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* refuse to download if larger than 1000 bytes! */ - curl_easy_setopt(curl, CURLOPT_MAXFILESIZE, 1000L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* refuse to download if larger than 1000 bytes! */ + curl_easy_setopt(curl, CURLOPT_MAXFILESIZE, 1000L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 index edcf86581..87f2cf6cb 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXFILESIZE_LARGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAXFILESIZE_LARGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download @@ -50,14 +50,17 @@ None FTP, HTTP and MQTT .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_off_t ridiculous = 1 << 48; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* refuse to download if larger than ridiculous */ - curl_easy_setopt(curl, CURLOPT_MAXFILESIZE_LARGE, ridiculous); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_off_t ridiculous = (curl_off_t)1 << 48; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* refuse to download if larger than ridiculous */ + curl_easy_setopt(curl, CURLOPT_MAXFILESIZE_LARGE, ridiculous); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 index c376a5fec..f16140b1d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXLIFETIME_CONN 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAXLIFETIME_CONN 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection @@ -52,14 +52,17 @@ Default \fImaxlifetime\fP is 0 seconds (i.e., disabled). All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* only allow each connection to be reused for 30 seconds */ - curl_easy_setopt(curl, CURLOPT_MAXLIFETIME_CONN, 30L); + /* only allow each connection to be reused for 30 seconds */ + curl_easy_setopt(curl, CURLOPT_MAXLIFETIME_CONN, 30L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 index 443463406..1527d8a19 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAXREDIRS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAXREDIRS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAXREDIRS \- maximum number of redirects allowed @@ -48,18 +48,21 @@ to get stuck in never-ending redirect loops. HTTP(S) .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* enable redirect following */ - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + /* enable redirect following */ + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - /* allow three redirects */ - curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L); + /* allow three redirects */ + curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 index 504eba349..5dd18c2af 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed @@ -50,13 +50,16 @@ This option does not affect transfer speeds done with FILE:// URLs. All but file:// .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* cap the download speed to 31415 bytes/sec */ - curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, (curl_off_t)31415); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* cap the download speed to 31415 bytes/sec */ + curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, (curl_off_t)31415); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 index d13f22f78..c3fdb46aa 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed @@ -52,14 +52,17 @@ This option does not affect transfer speeds done with FILE:// URLs. All except file:// .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* cap the upload speed to 1000 bytes/sec */ - curl_easy_setopt(curl, CURLOPT_MAX_SEND_SPEED_LARGE, (curl_off_t)1000); - /* (set some upload options as well!) */ - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* cap the upload speed to 1000 bytes/sec */ + curl_easy_setopt(curl, CURLOPT_MAX_SEND_SPEED_LARGE, (curl_off_t)1000); + /* (set some upload options as well!) */ + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3 b/external/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3 index aa7bcf687..34f13049f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MIMEPOST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MIMEPOST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MIMEPOST \- send data from mime structure @@ -49,23 +49,30 @@ is reset to GET. Instead you should set a desired request method explicitly. HTTP, SMTP, IMAP. .SH EXAMPLE .nf - curl_mime *multipart = curl_mime_init(handle); - curl_mimepart *part = curl_mime_addpart(multipart); - curl_mime_name(part, "name"); - curl_mime_data(part, "daniel", CURL_ZERO_TERMINATED); - part = curl_mime_addpart(multipart); - curl_mime_name(part, "project"); - curl_mime_data(part, "curl", CURL_ZERO_TERMINATED); - part = curl_mime_addpart(multipart); - curl_mime_name(part, "logotype-image"); - curl_mime_filedata(part, "curl.png"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_mime *multipart = curl_mime_init(curl); + if(multipart) { + curl_mimepart *part = curl_mime_addpart(multipart); + curl_mime_name(part, "name"); + curl_mime_data(part, "daniel", CURL_ZERO_TERMINATED); + part = curl_mime_addpart(multipart); + curl_mime_name(part, "project"); + curl_mime_data(part, "curl", CURL_ZERO_TERMINATED); + part = curl_mime_addpart(multipart); + curl_mime_name(part, "logotype-image"); + curl_mime_filedata(part, "curl.png"); - /* Set the form info */ - curl_easy_setopt(handle, CURLOPT_MIMEPOST, multipart); + /* Set the form info */ + curl_easy_setopt(curl, CURLOPT_MIMEPOST, multipart); - curl_easy_perform(handle); /* post away! */ - - curl_mime_free(multipart); /* free the post data */ + curl_easy_perform(curl); /* post away! */ + curl_mime_free(multipart); /* free the post data */ + } + } +} .fi .SH AVAILABILITY Added in 7.56.0 diff --git a/external/curl/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 b/external/curl/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 index bec58d908..f3c47c4d9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_MIME_OPTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_MIME_OPTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_MIME_OPTIONS \- set MIME option flags @@ -61,29 +61,32 @@ When the containing multipart form is sent, this is normally transmitted as HTTP, IMAP, SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -curl_mime *form = NULL; +int main(void) +{ + CURL *curl = curl_easy_init(); + curl_mime *form = NULL; -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_MIME_OPTIONS, CURLMIMEOPT_FORMESCAPE); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_MIME_OPTIONS, CURLMIMEOPT_FORMESCAPE); - form = curl_mime_init(curl); - if(form) { - curl_mimepart *part = curl_mime_addpart(form); + form = curl_mime_init(curl); + if(form) { + curl_mimepart *part = curl_mime_addpart(form); - if(part) { - curl_mime_filedata(part, "strange\\\\file\\\\name"); - curl_mime_name(part, "strange\\"field\\"name"); - curl_easy_setopt(curl, CURLOPT_MIMEPOST, form); + if(part) { + curl_mime_filedata(part, "strange\\\\file\\\\name"); + curl_mime_name(part, "strange\\"field\\"name"); + curl_easy_setopt(curl, CURLOPT_MIMEPOST, form); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } - } - curl_easy_cleanup(curl); - curl_mime_free(mime); + curl_easy_cleanup(curl); + curl_mime_free(form); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NETRC.3 b/external/curl/docs/libcurl/opts/CURLOPT_NETRC.3 index adef48ba0..61a48e39c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NETRC.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NETRC.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NETRC 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NETRC 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NETRC \- enable use of .netrc @@ -106,12 +106,15 @@ CURL_NETRC_IGNORED Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/"); - curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/"); + curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/external/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 index e5189baf0..02759c822 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NETRC_FILE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NETRC_FILE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NETRC_FILE \- file name to read .netrc info from @@ -46,13 +46,16 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/"); - curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL); - curl_easy_setopt(curl, CURLOPT_NETRC_FILE, "/tmp/magic-netrc"); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/"); + curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL); + curl_easy_setopt(curl, CURLOPT_NETRC_FILE, "/tmp/magic-netrc"); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/external/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 index 956fcaf12..7a9435ca6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories @@ -43,13 +43,17 @@ this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP. SFTP, SCP and FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "sftp://upload.example.com/newdir/file.zip"); - curl_easy_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L); - curl_easy_setopt(curl, CURLOPT_NEW_DIRECTORY_PERMS, 0644L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, + "sftp://upload.example.com/newdir/file.zip"); + curl_easy_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L); + curl_easy_setopt(curl, CURLOPT_NEW_DIRECTORY_PERMS, 0644L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/external/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 index 478bd7a7c..14e15263c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NEW_FILE_PERMS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NEW_FILE_PERMS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files @@ -43,12 +43,15 @@ this are \fIsftp://\fP, \fIscp://\fP, and \fIfile://\fP. SFTP, SCP and FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "sftp://upload.example.com/file.txt"); - curl_easy_setopt(curl, CURLOPT_NEW_FILE_PERMS, 0664L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://upload.example.com/file.txt"); + curl_easy_setopt(curl, CURLOPT_NEW_FILE_PERMS, 0664L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 b/external/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 index 56a0a3e81..32e21ac0d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOBODY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NOBODY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NOBODY \- do the download request without getting the body @@ -55,15 +55,18 @@ URL you request). Most .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* get us the resource without a body - use HEAD! */ - curl_easy_setopt(curl, CURLOPT_NOBODY, 1L); + /* get us the resource without a body - use HEAD! */ + curl_easy_setopt(curl, CURLOPT_NOBODY, 1L); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/external/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 index 09d70439b..1569458e4 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOPROGRESS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NOPROGRESS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NOPROGRESS \- switch off the progress meter @@ -43,15 +43,18 @@ getting called. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* enable progress meter */ - curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L); + /* enable progress meter */ + curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/external/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 index 0ead4df48..d887e073a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOPROXY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NOPROXY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NOPROXY \- disable proxy use for specific hosts @@ -67,15 +67,18 @@ NULL Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - /* accept various URLs */ - curl_easy_setopt(curl, CURLOPT_URL, input); - /* use this proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80"); - /* ... but make sure this host name is not proxied */ - curl_easy_setopt(curl, CURLOPT_NOPROXY, "www.example.com"); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* accept various URLs */ + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* use this proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80"); + /* ... but make sure this host name is not proxied */ + curl_easy_setopt(curl, CURLOPT_NOPROXY, "www.example.com"); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/external/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 index 506a47de3..89407a04b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_NOSIGNAL 3 "August 22, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_NOSIGNAL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_NOSIGNAL \- skip all signal handling @@ -58,15 +58,19 @@ raised. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 index 1b1621279..354f1657f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_OPENSOCKETDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_OPENSOCKETDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_OPENSOCKETDATA \- pointer passed to open socket callback @@ -62,21 +62,27 @@ static int sockopt_callback(void *clientp, curl_socket_t curlfd, return CURL_SOCKOPT_ALREADY_CONNECTED; } -curl = curl_easy_init(); -if(curl) { - /* libcurl thinks that you connect to the host - * and port that you specify in the URL option. */ - curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); - /* call this function to get a socket */ - curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); - curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + extern int sockfd; /* the already connected one */ + + /* libcurl thinks that you connect to the host + * and port that you specify in the URL option. */ + curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); + /* call this function to get a socket */ + curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); + curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); - /* call this function to set options for the socket */ - curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); + /* call this function to set options for the socket */ + curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 index 879dccdba..b6f7aeab5 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_OPENSOCKETFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_OPENSOCKETFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_OPENSOCKETFUNCTION \- callback for opening socket @@ -102,21 +102,26 @@ static int sockopt_callback(void *clientp, curl_socket_t curlfd, return CURL_SOCKOPT_ALREADY_CONNECTED; } -curl = curl_easy_init(); -if(curl) { - /* libcurl thinks that you connect to the host - * and port that you specify in the URL option. */ - curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); - /* call this function to get a socket */ - curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); - curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); - - /* call this function to set options for the socket */ - curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); - - res = curl_easy_perform(curl); - - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + extern int sockfd; /* the already connected one */ + /* libcurl thinks that you connect to the host + * and port that you specify in the URL option. */ + curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); + /* call this function to get a socket */ + curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); + curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); + + /* call this function to set options for the socket */ + curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); + + res = curl_easy_perform(curl); + + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/external/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 index 5180ffce2..9b3e381b5 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PASSWORD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PASSWORD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PASSWORD \- password to use in authentication @@ -47,15 +47,19 @@ blank Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_PASSWORD, "qwerty"); + curl_easy_setopt(curl, CURLOPT_PASSWORD, "qwerty"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/external/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 index 2fa7213b8..f7ec0eebd 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PATH_AS_IS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PATH_AS_IS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PATH_AS_IS \- do not handle dot dot sequences @@ -54,13 +54,17 @@ The corresponding flag for the \fIcurl_url_set(3)\fP function is called All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/../../etc/password"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, + "https://example.com/../../etc/password"); - curl_easy_setopt(curl, CURLOPT_PATH_AS_IS, 1L); + curl_easy_setopt(curl, CURLOPT_PATH_AS_IS, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/external/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 index 04e17d088..ff9bfc27d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PINNEDPUBLICKEY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PINNEDPUBLICKEY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PINNEDPUBLICKEY \- pinned public key @@ -57,16 +57,22 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der"); - /* OR - curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno="); - */ - - /* Perform the request */ - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der"); + /* OR + curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, + "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3" + "tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEg" + "oChTociMee9wno="); + */ + + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH PUBLIC KEY EXTRACTION diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/external/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 index 83c64716b..48f5ae821 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PIPEWAIT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PIPEWAIT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PIPEWAIT \- wait for multiplexing @@ -59,12 +59,15 @@ and support level. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PIPEWAIT, 1L); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PIPEWAIT, 1L); - /* now add this easy handle to the multi handle */ + /* now add this easy handle to the multi handle */ + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PORT.3 b/external/curl/docs/libcurl/opts/CURLOPT_PORT.3 index ed2182a69..40769cca9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PORT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PORT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PORT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PORT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PORT \- remote port number to connect to @@ -53,12 +53,16 @@ impossible to set with this API. Used for all protocols that speak to a port number. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_PORT, 8080L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_PORT, 8080L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_POST.3 b/external/curl/docs/libcurl/opts/CURLOPT_POST.3 index 94c623272..3f02615a6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_POST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_POST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_POST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_POST \- make an HTTP POST @@ -79,16 +79,20 @@ Instead you should set a new request type explicitly as described above. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_POST, 1L); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_POST, 1L); - /* set up the read callback with CURLOPT_READFUNCTION */ + /* set up the read callback with CURLOPT_READFUNCTION */ - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 index 05ab2efa3..403b4c4cf 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTFIELDS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_POSTFIELDS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_POSTFIELDS \- data to POST to server @@ -78,46 +78,49 @@ HTTP .SH EXAMPLE .nf /* send an application/x-www-form-urlencoded POST */ -CURL *curl = curl_easy_init(); -if(curl) { - const char *data = "data to send"; +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + const char *data = "data to send"; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* size of the POST data if strlen() is not good enough */ - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L); + /* size of the POST data if strlen() is not good enough */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L); - /* pass in a pointer to the data - libcurl does not copy */ - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); + /* pass in a pointer to the data - libcurl does not copy */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); - curl_easy_perform(curl); -} + curl_easy_perform(curl); + } -/* send an application/json POST */ -CURL *curl = curl_easy_init(); -if(curl) { - const char *json = "{\"name\": \"daniel\"}"; - struct curl_slist *slist1 = NULL; - slist1 = curl_slist_append(slist1, "Content-Type: application/json"); - slist1 = curl_slist_append(slist1, "Accept: application/json"); + /* send an application/json POST */ + curl = curl_easy_init(); + if(curl) { + const char *json = "{\"name\": \"daniel\"}"; + struct curl_slist *slist1 = NULL; + slist1 = curl_slist_append(slist1, "Content-Type: application/json"); + slist1 = curl_slist_append(slist1, "Accept: application/json"); - /* set custom headers */ - curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1); + /* set custom headers */ + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist1); - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* pass in a pointer to the data - libcurl does not copy */ - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json); + /* pass in a pointer to the data - libcurl does not copy */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } - .fi .SH AVAILABILITY Always .SH RETURN VALUE Returns CURLE_OK .SH "SEE ALSO" +.BR CURLOPT_COPYPOSTFIELDS (3), .BR CURLOPT_MIMEPOST (3), .BR CURLOPT_POSTFIELDSIZE (3), .BR CURLOPT_READFUNCTION (3), diff --git a/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 index 3b2b0f04d..15819a147 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTFIELDSIZE 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_POSTFIELDSIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_POSTFIELDSIZE \- size of POST data pointed to @@ -46,18 +46,23 @@ If you post more than 2GB, use \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - const char *data = "data to send"; +#include /* for strlen */ - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + const char *data = "data to send"; - /* size of the POST data */ - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data)); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); + /* size of the POST data */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data)); - curl_easy_perform(curl); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 index 87b36ec0e..d929ffbde 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to @@ -44,19 +44,24 @@ this size is set to -1, libcurl uses strlen() to get the size or relies on the HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - const char *data = large_chunk; - curl_off_t length_of_data; /* set somehow */ +extern char *large_chunk; /* pointer to somewhere */ - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + const char *data = large_chunk; + curl_off_t length_of_data; /* set somehow */ - /* size of the POST data */ - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); + /* size of the POST data */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, length_of_data); - curl_easy_perform(curl); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/external/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 index 6d22170b3..1e80f74d8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTQUOTE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_POSTQUOTE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer @@ -46,20 +46,24 @@ NULL SFTP and FTP .SH EXAMPLE .nf -struct curl_slist *cmdlist = NULL; -cmdlist = curl_slist_append(cmdlist, "RNFR source-name"); -cmdlist = curl_slist_append(cmdlist, "RNTO new-name"); +int main(void) +{ + struct curl_slist *cmdlist = NULL; + cmdlist = curl_slist_append(cmdlist, "RNFR source-name"); + cmdlist = curl_slist_append(cmdlist, "RNTO new-name"); -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); - /* pass in the FTP commands to run after the transfer */ - curl_easy_setopt(curl, CURLOPT_POSTQUOTE, cmdlist); + /* pass in the FTP commands to run after the transfer */ + curl_easy_setopt(curl, CURLOPT_POSTQUOTE, cmdlist); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/external/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 index bd48dfee3..24a93106f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_POSTREDIR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_POSTREDIR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect @@ -53,18 +53,21 @@ when setting \fICURLOPT_FOLLOWLOCATION(3)\fP. HTTP(S) .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* a silly POST example */ - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true"); + /* a silly POST example */ + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data=true"); - /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and - 303 HTTP response codes */ - curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); + /* example.com is redirected, so we tell libcurl to send POST on 301, + 302 and 303 HTTP response codes */ + curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 index ef85ae501..8e8961d5d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PREQUOTE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PREQUOTE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PREQUOTE \- commands to run before an FTP transfer @@ -51,19 +51,23 @@ NULL FTP .SH EXAMPLE .nf -struct curl_slist *cmdlist = NULL; -cmdlist = curl_slist_append(cmdlist, "SYST"); +int main(void) +{ + struct curl_slist *cmdlist = NULL; + cmdlist = curl_slist_append(cmdlist, "SYST"); -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); - /* pass in the FTP commands to run */ - curl_easy_setopt(curl, CURLOPT_PREQUOTE, cmdlist); + /* pass in the FTP commands to run */ + curl_easy_setopt(curl, CURLOPT_PREQUOTE, cmdlist); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PREREQDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_PREREQDATA.3 index 699502eb8..93d311a0d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PREREQDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PREREQDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PREREQDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PREREQDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PREREQDATA \- pointer passed to the pre-request callback @@ -41,20 +41,29 @@ NULL All .SH EXAMPLE .nf +struct priv { + void *custom; +}; + static int prereq_callback(void *clientp, char *conn_primary_ip, char *conn_local_ip, int conn_primary_port, int conn_local_port) { - printf("Connection made to %s:%s\\n", conn_primary_ip, conn_primary_port); + printf("Connection made to %s:%d\\n", conn_primary_ip, conn_primary_port); return CURL_PREREQFUNC_OK; } +int main(void) { - struct data prereq_data; - curl_easy_setopt(CURL *handle, CURLOPT_PREREQFUNCTION, prereq_callback); - curl_easy_setopt(CURL *handle, CURLOPT_PREREQDATA, &prereq_data); + struct priv prereq_data; + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_PREREQFUNCTION, prereq_callback); + curl_easy_setopt(curl, CURLOPT_PREREQDATA, &prereq_data); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3 index c17484826..02a97092e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PREREQFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PREREQFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PREREQFUNCTION \- user callback called when a connection has been @@ -82,20 +82,29 @@ By default, this is NULL and unused. ALL .SH EXAMPLE .nf +struct priv { + void *custom; +}; + static int prereq_callback(void *clientp, char *conn_primary_ip, char *conn_local_ip, int conn_primary_port, int conn_local_port) { - printf("Connection made to %s:%s\\n", conn_primary_ip, conn_primary_port); + printf("Connection made to %s:%d\\n", conn_primary_ip, conn_primary_port); return CURL_PREREQFUNC_OK; } +int main(void) { - struct data prereq_data; - curl_easy_setopt(CURL *handle, CURLOPT_PREREQFUNCTION, prereq_callback); - curl_easy_setopt(CURL *handle, CURLOPT_PREREQDATA, &prereq_data); + struct priv prereq_data; + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_PREREQFUNCTION, prereq_callback); + curl_easy_setopt(curl, CURLOPT_PREREQDATA, &prereq_data); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 b/external/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 index edf24da1b..01da152eb 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PRE_PROXY 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PRE_PROXY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PRE_PROXY \- pre-proxy host to use @@ -67,12 +67,15 @@ single port number used widely for proxies. Specify it! All except file://. Note that some protocols do not work well over proxy. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/file.txt"); - curl_easy_setopt(curl, CURLOPT_PRE_PROXY, "socks4://socks-proxy:1080"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80"); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/file.txt"); + curl_easy_setopt(curl, CURLOPT_PRE_PROXY, "socks4://socks-proxy:1080"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80"); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 index f5e56f35e..ec005b684 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PRIVATE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PRIVATE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PRIVATE \- store a private pointer @@ -43,19 +43,26 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -struct private secrets; -if(curl) { - struct private *extracted; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +struct private { + void *custom; +}; - /* store a pointer to our private struct */ - curl_easy_setopt(curl, CURLOPT_PRIVATE, &secrets); +int main(void) +{ + CURL *curl = curl_easy_init(); + struct private secrets; + if(curl) { + struct private *extracted; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_perform(curl); + /* store a pointer to our private struct */ + curl_easy_setopt(curl, CURLOPT_PRIVATE, &secrets); - /* we can extract the private pointer again too */ - curl_easy_getinfo(curl, CURLINFO_PRIVATE, &extracted); + curl_easy_perform(curl); + + /* we can extract the private pointer again too */ + curl_easy_getinfo(curl, CURLINFO_PRIVATE, &extracted); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 index d883312ad..1c27cb4da 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROGRESSDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROGRESSDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROGRESSDATA \- pointer passed to the progress callback @@ -41,30 +41,38 @@ The default value of this parameter is NULL. All .SH EXAMPLE .nf - struct progress { - char *private; - size_t size; - }; +struct progress { + char *private; + size_t size; +}; - static size_t progress_callback(void *clientp, - double dltotal, - double dlnow, - double ultotal, - double ulnow) - { - struct memory *progress = (struct progress *)clientp; +static size_t progress_callback(void *clientp, + double dltotal, + double dlnow, + double ultotal, + double ulnow) +{ + struct progress *memory = clientp; + printf("private: %p\\n", memory->private); - /* use the values */ + /* use the values */ - return 0; /* all is good */ - } + return 0; /* all is good */ +} - struct progress data; +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct progress data; - /* pass struct to callback */ - curl_easy_setopt(curl_handle, CURLOPT_PROGRESSDATA, &data); + /* pass struct to callback */ + curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &data); + curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_callback); - curl_easy_setopt(curl_handle, CURLOPT_PROGRESSFUNCTION, progress_callback); + curl_easy_perform(curl); + } +} .fi .SH AVAILABILITY Always diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 index 7422b92ef..f54994330 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROGRESSFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROGRESSFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROGRESSFUNCTION \- progress meter callback @@ -85,30 +85,38 @@ users. All .SH EXAMPLE .nf - struct progress { - char *private; - size_t size; - }; - - static size_t progress_callback(void *clientp, - double dltotal, - double dlnow, - double ultotal, - double ulnow) - { - struct progress *memory = (struct progress *)clientp; - - /* use the values */ - - return 0; /* all is good */ - } - - struct progress data; - - /* pass struct to callback */ - curl_easy_setopt(curl_handle, CURLOPT_PROGRESSDATA, &data); - - curl_easy_setopt(curl_handle, CURLOPT_PROGRESSFUNCTION, progress_callback); +struct progress { + char *private; + size_t size; +}; + +static size_t progress_callback(void *clientp, + double dltotal, + double dlnow, + double ultotal, + double ulnow) +{ + struct progress *memory = clientp; + printf("private: %p\\n", memory->private); + + /* use the values */ + + return 0; /* all is good */ +} + +int main(void) +{ + struct progress data; + + CURL *curl = curl_easy_init(); + if(curl) { + /* pass struct to callback */ + curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &data); + curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_callback); + + curl_easy_perform(curl); + } +} .fi .SH AVAILABILITY Deprecated since 7.32.0. diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 index 9d0b2f9af..3cc435222 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROTOCOLS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROTOCOLS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROTOCOLS \- allowed protocols @@ -81,17 +81,20 @@ All protocols built-in. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - /* pass in the URL from an external source */ - curl_easy_setopt(curl, CURLOPT_URL, argv[1]); +int main(int argc, char **argv) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* pass in the URL from an external source */ + curl_easy_setopt(curl, CURLOPT_URL, argv[1]); - /* only allow HTTP, TFTP and SFTP */ - curl_easy_setopt(curl, CURLOPT_PROTOCOLS, - CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP); + /* only allow HTTP, TFTP and SFTP */ + curl_easy_setopt(curl, CURLOPT_PROTOCOLS, + CURLPROTO_HTTP | CURLPROTO_TFTP | CURLPROTO_SFTP); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 index 3ba95ae5c..b61c18265 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROTOCOLS_STR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROTOCOLS_STR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROTOCOLS_STR \- allowed protocols @@ -62,16 +62,19 @@ All protocols built-in All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - /* pass in the URL from an external source */ - curl_easy_setopt(curl, CURLOPT_URL, argv[1]); +int main(int argc, char **argv) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* pass in the URL from an external source */ + curl_easy_setopt(curl, CURLOPT_URL, argv[1]); - /* only allow HTTP, TFTP and SFTP */ - curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, "http,tftp,sftp"); + /* only allow HTTP, TFTP and SFTP */ + curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, "http,tftp,sftp"); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY.3 index 328229932..bbb89fff8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY \- proxy to use @@ -110,11 +110,14 @@ single port number used widely for proxies. Specify it! All except file://. Note that some protocols do not work well over proxy. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/file.txt"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80"); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/file.txt"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80"); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 index e3975f282..bc51e4dd4 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYAUTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXYAUTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXYAUTH \- HTTP proxy authentication methods @@ -49,18 +49,21 @@ CURLAUTH_BASIC HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* use this proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "http://local.example.com:1080"); - /* allow whatever auth the proxy speaks */ - curl_easy_setopt(curl, CURLOPT_PROXYAUTH, CURLAUTH_ANY); - /* set the proxy credentials */ - curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "james:007"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* use this proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "http://local.example.com:1080"); + /* allow whatever auth the proxy speaks */ + curl_easy_setopt(curl, CURLOPT_PROXYAUTH, CURLAUTH_ANY); + /* set the proxy credentials */ + curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "james:007"); + ret = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 index 10c691466..3ed5fa75e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYHEADER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXYHEADER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXYHEADER \- set of HTTP headers to pass to proxy @@ -52,22 +52,25 @@ NULL HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); +int main(void) +{ + CURL *curl = curl_easy_init(); -struct curl_slist *list; + struct curl_slist *list; -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy.example.com:80"); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy.example.com:80"); - list = curl_slist_append(NULL, "Shoesize: 10"); - list = curl_slist_append(list, "Accept:"); + list = curl_slist_append(NULL, "Shoesize: 10"); + list = curl_slist_append(list, "Accept:"); - curl_easy_setopt(curl, CURLOPT_PROXYHEADER, list); + curl_easy_setopt(curl, CURLOPT_PROXYHEADER, list); - curl_easy_perform(curl); + curl_easy_perform(curl); - curl_slist_free_all(list); /* free the list again */ + curl_slist_free_all(list); /* free the list again */ + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 index 75985c0ec..d54857274 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYPASSWORD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXYPASSWORD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXYPASSWORD \- password to use with proxy authentication @@ -47,14 +47,18 @@ blank Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); - curl_easy_setopt(curl, CURLOPT_PROXYUSERNAME, "mrsmith"); - curl_easy_setopt(curl, CURLOPT_PROXYPASSWORD, "qwerty"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); + curl_easy_setopt(curl, CURLOPT_PROXYUSERNAME, "mrsmith"); + curl_easy_setopt(curl, CURLOPT_PROXYPASSWORD, "qwerty"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 index 6206b827b..8a8c58c12 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYPORT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXYPORT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXYPORT \- port number the proxy listens on @@ -47,13 +47,17 @@ than 65535. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_PROXY, "localhost"); - curl_easy_setopt(curl, CURLOPT_PROXYPORT, 8080L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_PROXY, "localhost"); + curl_easy_setopt(curl, CURLOPT_PROXYPORT, 8080L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 index 4e8de8d66..c0c025790 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYTYPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXYTYPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXYTYPE \- proxy protocol type @@ -66,15 +66,18 @@ CURLPROXY_HTTP Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "local.example.com:1080"); - /* set the proxy type */ - curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "local.example.com:1080"); + /* set the proxy type */ + curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); + ret = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 index f5c5035b6..b0cdde0ad 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYUSERNAME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXYUSERNAME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication @@ -49,14 +49,18 @@ blank Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); - curl_easy_setopt(curl, CURLOPT_PROXYUSERNAME, "mrsmith"); - curl_easy_setopt(curl, CURLOPT_PROXYPASSWORD, "qwerty"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); + curl_easy_setopt(curl, CURLOPT_PROXYUSERNAME, "mrsmith"); + curl_easy_setopt(curl, CURLOPT_PROXYPASSWORD, "qwerty"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 index bf7b2ad6a..5bd1e1b73 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXYUSERPWD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXYUSERPWD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication @@ -49,13 +49,17 @@ This is NULL by default. Used with all protocols that can use a proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); - curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "clark%20kent:superman"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:8080"); + curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "clark%20kent:superman"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 index ba97b18a5..65fd48bce 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_CAINFO 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_CAINFO 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle @@ -61,14 +61,18 @@ Built-in system specific Used with HTTPS proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* using an HTTPS proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); - curl_easy_setopt(curl, CURLOPT_PROXY_CAINFO, "/etc/certs/cabundle.pem"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* using an HTTPS proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); + curl_easy_setopt(curl, CURLOPT_PROXY_CAINFO, "/etc/certs/cabundle.pem"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 index 5dd661bc1..c3af5e1c0 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_CAINFO_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_CAINFO_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_CAINFO_BLOB \- proxy Certificate Authority (CA) bundle in PEM format @@ -40,6 +40,10 @@ Pass a pointer to a curl_blob structure, which contains information (pointer and size) about a memory block with binary data of PEM encoded content holding one or more certificates to verify the HTTPS proxy with. +If the blob is initialized with the flags member of struct curl_blob set to +CURL_BLOB_COPY, the application does not have to keep the buffer around after +setting this. + If \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the server's certificate, \fICURLOPT_PROXY_CAINFO_BLOB(3)\fP is not needed. @@ -50,19 +54,25 @@ NULL Used with HTTPS proxy .SH EXAMPLE .nf -char *strpem; /* strpem must point to a PEM string */ -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob blob; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* using an HTTPS proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); - blob.data = strpem; - blob.len = strlen(strpem); - blob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_PROXY_CAINFO_BLOB, &blob); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +#include /* for strlen */ + +extern char *strpem; /* strpem must point to a PEM string */ +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob blob; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* using an HTTPS proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); + blob.data = strpem; + blob.len = strlen(strpem); + blob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_PROXY_CAINFO_BLOB, &blob); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 index 6d89d3801..8ddf69c56 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_CAPATH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_CAPATH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_CAPATH \- directory holding HTTPS proxy CA certificates @@ -49,14 +49,18 @@ NULL Everything used over an HTTPS proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* using an HTTPS proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); - curl_easy_setopt(curl, CURLOPT_PROXY_CAPATH, "/etc/cert-dir"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* using an HTTPS proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); + curl_easy_setopt(curl, CURLOPT_PROXY_CAPATH, "/etc/cert-dir"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 index fedc69957..0c0bdc226 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_CRLFILE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_CRLFILE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_CRLFILE \- HTTPS proxy Certificate Revocation List file @@ -61,13 +61,17 @@ NULL Used with HTTPS proxy. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:80"); - curl_easy_setopt(curl, CURLOPT_PROXY_CRLFILE, "/etc/certs/crl.pem"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:80"); + curl_easy_setopt(curl, CURLOPT_PROXY_CRLFILE, "/etc/certs/crl.pem"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 index 1c257b9bc..c4fb6f561 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_ISSUERCERT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_ISSUERCERT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename @@ -58,14 +58,18 @@ NULL All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* using an HTTPS proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); - curl_easy_setopt(curl, CURLOPT_PROXY_ISSUERCERT, "/etc/certs/cacert.pem"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* using an HTTPS proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); + curl_easy_setopt(curl, CURLOPT_PROXY_ISSUERCERT, "/etc/certs/cacert.pem"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 index d8b77cbdd..225976672 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_ISSUERCERT_BLOB \- proxy issuer SSL certificate from memory blob @@ -64,18 +64,26 @@ NULL All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob blob; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* using an HTTPS proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); - blob.data = certificateData; - blob.len = filesize; - blob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_PROXY_ISSUERCERT_BLOB, &blob); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); + +extern char *certificateData; /* point to the data */ +size_t filesize; /* size of the data */ + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob blob; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* using an HTTPS proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443"); + blob.data = certificateData; + blob.len = filesize; + blob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_PROXY_ISSUERCERT_BLOB, &blob); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 index 4b5d81e77..12165d6aa 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_KEYPASSWD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_KEYPASSWD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_KEYPASSWD \- passphrase for the proxy private key @@ -48,13 +48,17 @@ NULL Used with HTTPS proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy:443"); - curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "superman"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy:443"); + curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "superman"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 index 95b2a9e1a..bc0edd8c0 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_PINNEDPUBLICKEY \- pinned public key for https proxy @@ -53,15 +53,20 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy:443"); - curl_easy_setopt(curl, CURLOPT_PROXY_PINNEDPUBLICKEY, - "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno="); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy:443"); + curl_easy_setopt(curl, CURLOPT_PROXY_PINNEDPUBLICKEY, + "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjA" + "a3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74" + "Gxa2eg7fRbEgoChTociMee9wno="); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH PUBLIC KEY EXTRACTION diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 index c9d09a587..719fab3fb 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SERVICE_NAME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SERVICE_NAME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name @@ -46,12 +46,15 @@ See above All network protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY_SERVICE_NAME, "custom"); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY_SERVICE_NAME, "custom"); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 index 84feb454e..24b0c60a5 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSLCERT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSLCERT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSLCERT \- HTTPS proxy client certificate @@ -56,15 +56,19 @@ NULL Used with HTTPS proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 index efb170dd5..e3782d4ed 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSLCERTTYPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSLCERTTYPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSLCERTTYPE \- type of the proxy client SSL certificate @@ -49,16 +49,20 @@ option. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERTTYPE, "PEM"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERTTYPE, "PEM"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 index c5a99745c..2d0ee971c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob @@ -52,19 +52,27 @@ NULL Used with HTTPS proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob blob; - blob.data = certificateData; - blob.len = filesize; - blob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT_BLOB, &blob); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); + +extern char *certificateData; /* point to data */ +extern size_t filesize; /* size of the data */ + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob blob; + blob.data = certificateData; + blob.len = filesize; + blob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT_BLOB, &blob); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 index 80f17aff0..a912a7b47 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSLKEY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSLKEY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSLKEY \- private key file for HTTPS proxy client cert @@ -50,15 +50,19 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 index 84d698a2b..12845d33f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSLKEYTYPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSLKEYTYPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSLKEYTYPE \- type of the proxy private key file @@ -44,16 +44,20 @@ option. Used with HTTPS proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEYTYPE, "PEM"); - curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEYTYPE, "PEM"); + curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 index ff4e22294..5ad428a48 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSLKEY_BLOB \- private key for proxy cert from memory blob @@ -48,23 +48,34 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob blob; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - blob.data = certificateData; - blob.len = filesize; - blob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT_BLOB, &blob); - curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERTTYPE, "PEM"); - blob.data = privateKeyData; - blob.len = privateKeySize; - curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY_BLOB, &blob); - curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +extern char *certificateData; /* point to data */ +extern size_t filesize; /* size of data */ + +extern char *privateKeyData; /* point to data */ +extern size_t privateKeySize; /* size */ + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob blob; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + blob.data = certificateData; + blob.len = filesize; + blob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERT_BLOB, &blob); + curl_easy_setopt(curl, CURLOPT_PROXY_SSLCERTTYPE, "PEM"); + + blob.data = privateKeyData; + blob.len = privateKeySize; + curl_easy_setopt(curl, CURLOPT_PROXY_SSLKEY_BLOB, &blob); + curl_easy_setopt(curl, CURLOPT_PROXY_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 index 075b82de6..aaaaf8294 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSLVERSION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSLVERSION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSLVERSION \- preferred HTTPS proxy TLS version @@ -86,15 +86,18 @@ CURL_SSLVERSION_DEFAULT All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* ask libcurl to use TLS version 1.0 or later */ - curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); + /* ask libcurl to use TLS version 1.0 or later */ + curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 index 266fc1ec9..e0e78e815 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSL_CIPHER_LIST \- ciphers to use for HTTPS proxy @@ -66,13 +66,17 @@ NULL, use internal default All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost"); - curl_easy_setopt(curl, CURLOPT_PROXY_SSL_CIPHER_LIST, "TLSv1"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost"); + curl_easy_setopt(curl, CURLOPT_PROXY_SSL_CIPHER_LIST, "TLSv1"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 index 30bfd1590..33df0877c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSL_OPTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSL_OPTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSL_OPTIONS \- HTTPS proxy SSL behavior options @@ -63,12 +63,13 @@ library). If combined with \fICURLSSLOPT_NO_REVOKE\fP, the latter takes precedence. (Added in 7.70.0) .IP CURLSSLOPT_NATIVE_CA Tell libcurl to use the operating system's native CA store for certificate -verification. Works only on Windows, Linux (Debian, Ubuntu, Gentoo, Fedora, -RHEL), macOS, Android and iOS when built to use wolfSSL (since 8.3.0) or on -Windows when built to use OpenSSL. If you set this option and also set a CA -certificate file or directory then during verification those certificates -are searched in addition to the native CA store. -(Added in 7.71.0) +verification. If you set this option and also set a CA certificate file or +directory then during verification those certificates are searched in addition +to the native CA store. + +Works with wolfSSL on Windows, Linux (Debian, Ubuntu, Gentoo, Fedora, RHEL), +macOS, Android and iOS (added in 8.3.0), with GnuTLS (added in 8.5.0) or on +Windows when built to use OpenSSL (Added in 7.71.0). .IP CURLSSLOPT_AUTO_CLIENT_CERT Tell libcurl to automatically locate and use a client certificate for authentication, when requested by the server. This option is only supported @@ -83,15 +84,19 @@ could be a privacy violation and unexpected. All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - /* weaken TLS only for use with silly proxies */ - curl_easy_setopt(curl, CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_ALLOW_BEAST | - CURLSSLOPT_NO_REVOKE); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + /* weaken TLS only for use with silly proxies */ + curl_easy_setopt(curl, CURLOPT_PROXY_SSL_OPTIONS, CURLSSLOPT_ALLOW_BEAST | + CURLSSLOPT_NO_REVOKE); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 index d1ee46e39..5ce3711c9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host @@ -69,14 +69,17 @@ of the proxy certificate. All protocols when used over an HTTPS proxy. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Set the default value: strict name check please */ - curl_easy_setopt(curl, CURLOPT_PROXY_SSL_VERIFYHOST, 2L); + /* Set the default value: strict name check please */ + curl_easy_setopt(curl, CURLOPT_PROXY_SSL_VERIFYHOST, 2L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 index 41f27dc46..b74e7de7b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate @@ -73,14 +73,17 @@ the correct end-point. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Set the default value: strict certificate check please */ - curl_easy_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 1L); + /* Set the default value: strict certificate check please */ + curl_easy_setopt(curl, CURLOPT_PROXY_SSL_VERIFYPEER, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 index b552991ab..22b7137ef 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3 @@ -55,13 +55,17 @@ NULL, use internal default All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLS13_CIPHERS, - "TLS_CHACHA20_POLY1305_SHA256"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLS13_CIPHERS, + "TLS_CHACHA20_POLY1305_SHA256"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 index af8745fc6..27fdf1c09 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication @@ -47,15 +47,19 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_TYPE, "SRP"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_USERNAME, "user"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_PASSWORD, "secret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_TYPE, "SRP"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_USERNAME, "user"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_PASSWORD, "secret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 index e3fcf1cf5..c0a4f2812 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_TLSAUTH_TYPE \- HTTPS proxy TLS authentication methods @@ -53,15 +53,19 @@ blank All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_TYPE, "SRP"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_USERNAME, "user"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_PASSWORD, "secret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_TYPE, "SRP"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_USERNAME, "user"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_PASSWORD, "secret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 index be1ba44cb..536b7c6e3 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication @@ -47,15 +47,19 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_TYPE, "SRP"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_USERNAME, "user"); - curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_PASSWORD, "secret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_TYPE, "SRP"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_USERNAME, "user"); + curl_easy_setopt(curl, CURLOPT_PROXY_TLSAUTH_PASSWORD, "secret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 index f0f335217..0c21d5d4d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PROXY_TRANSFER_MODE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PROXY_TRANSFER_MODE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy @@ -45,14 +45,19 @@ doing FTP via a proxy. Beware that not all proxies support this feature. FTP over proxy .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/old-server/file.txt"); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:80"); - curl_easy_setopt(curl, CURLOPT_PROXY_TRANSFER_MODE, 1L); - curl_easy_setopt(curl, CURLOPT_TRANSFERTEXT, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://example.com/old-server/file.txt"); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://localhost:80"); + curl_easy_setopt(curl, CURLOPT_PROXY_TRANSFER_MODE, 1L); + curl_easy_setopt(curl, CURLOPT_TRANSFERTEXT, 1L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY @@ -61,7 +66,7 @@ Added in 7.18.0 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if the enabled value is not supported. .SH "SEE ALSO" -.BN CURLOPT_CRLF (3), -.BN CURLOPT_TRANSFERTEXT (3), +.BR CURLOPT_CRLF (3), +.BR CURLOPT_TRANSFERTEXT (3), .BR CURLOPT_HTTPPROXYTUNNEL (3), .BR CURLOPT_PROXY (3) diff --git a/external/curl/docs/libcurl/opts/CURLOPT_PUT.3 b/external/curl/docs/libcurl/opts/CURLOPT_PUT.3 index e3be21dcc..b203f3d6a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_PUT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_PUT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_PUT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_PUT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_PUT \- make an HTTP PUT request @@ -45,25 +45,41 @@ This option is \fBdeprecated\fP since version 7.12.1. Use HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - /* we want to use our own read function */ - curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); +static size_t read_cb(char *ptr, size_t size, size_t nmemb, void *userdata) +{ + FILE *src = userdata; + /* copy as much data as possible into the 'ptr' buffer, but no more than + 'size' * 'nmemb' bytes! */ + size_t retcode = fread(ptr, size, nmemb, src); - /* enable PUT */ - curl_easy_setopt(curl, CURLOPT_PUT, 1L); + return retcode; +} + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + FILE *src = fopen("local-file", "r"); + curl_off_t fsize; /* set this to the size of the input file */ + + /* we want to use our own read function */ + curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_cb); + + /* enable PUT */ + curl_easy_setopt(curl, CURLOPT_PUT, 1L); - /* specify target */ - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile"); + /* specify target */ + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile"); - /* now specify which pointer to pass to our callback */ - curl_easy_setopt(curl, CURLOPT_READDATA, hd_src); + /* now specify which pointer to pass to our callback */ + curl_easy_setopt(curl, CURLOPT_READDATA, src); - /* Set the size of the file to upload */ - curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize); + /* Set the size of the file to upload */ + curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize); - /* Now run off and do what you have been told! */ - curl_easy_perform(curl); + /* Now run off and do what you have been told! */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_QUICK_EXIT.3 b/external/curl/docs/libcurl/opts/CURLOPT_QUICK_EXIT.3 index 785827d72..37942e46f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_QUICK_EXIT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_QUICK_EXIT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_QUICK_EXIT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_QUICK_EXIT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_QUICK_EXIT \- allow to exit quickly @@ -45,11 +45,14 @@ possible (though short-lived) leak of associated resources. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_QUICK_EXIT, 1L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_QUICK_EXIT, 1L); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 b/external/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 index 252ec2e5d..47702efa2 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_QUOTE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_QUOTE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_QUOTE \- (S)FTP commands to run before transfer @@ -103,20 +103,24 @@ NULL SFTP and FTP .SH EXAMPLE .nf -struct curl_slist *cmdlist = NULL; -cmdlist = curl_slist_append(cmdlist, "RNFR source-name"); -cmdlist = curl_slist_append(cmdlist, "RNTO new-name"); +int main(void) +{ + struct curl_slist *cmdlist = NULL; + cmdlist = curl_slist_append(cmdlist, "RNFR source-name"); + cmdlist = curl_slist_append(cmdlist, "RNTO new-name"); -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin"); - /* pass in the FTP commands to run before the transfer */ - curl_easy_setopt(curl, CURLOPT_QUOTE, cmdlist); + /* pass in the FTP commands to run before the transfer */ + curl_easy_setopt(curl, CURLOPT_QUOTE, cmdlist); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/external/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 index 409a5063b..257d52351 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RANDOM_FILE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RANDOM_FILE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RANDOM_FILE \- file to read random data from @@ -46,12 +46,16 @@ NULL, not used All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_RANDOM_FILE, "junk.txt"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_RANDOM_FILE, "junk.txt"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RANGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_RANGE.3 index a48448af9..234c06c2d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RANGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RANGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RANGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RANGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RANGE \- byte range to request @@ -61,15 +61,18 @@ NULL HTTP, FTP, FILE, RTSP and SFTP. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* get the first 200 bytes */ - curl_easy_setopt(curl, CURLOPT_RANGE, "0-199"); + /* get the first 200 bytes */ + curl_easy_setopt(curl, CURLOPT_RANGE, "0-199"); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_READDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_READDATA.3 index 45c9ffb94..b92ff3b7c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_READDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_READDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_READDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_READDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_READDATA \- pointer passed to the read callback @@ -49,16 +49,23 @@ By default, this is a FILE * to stdin. This is used for all protocols when sending data. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -struct MyData this; -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +struct MyData { + void *custom; +}; - /* pass pointer that gets passed in to the - CURLOPT_READFUNCTION callback */ - curl_easy_setopt(curl, CURLOPT_READDATA, &this); +int main(void) +{ + CURL *curl = curl_easy_init(); + struct MyData this; + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_perform(curl); + /* pass pointer that gets passed in to the + CURLOPT_READFUNCTION callback */ + curl_easy_setopt(curl, CURLOPT_READDATA, &this); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 index 372eb60dd..9f995b29f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_READFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_READFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_READFUNCTION \- read callback for data uploads @@ -95,18 +95,21 @@ size_t read_callback(char *ptr, size_t size, size_t nmemb, void *userdata) return retcode; } -void setup(char *uploadthis) +int main(int argc, char **argv) { - FILE *file = fopen(uploadthis, "rb"); + FILE *file = fopen(argv[1], "rb"); CURLcode result; - /* set callback to use */ - curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); + CURL *curl = curl_easy_init(); + if(curl) { + /* set callback to use */ + curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); - /* pass in suitable argument to callback */ - curl_easy_setopt(curl, CURLOPT_READDATA, (void *)file); + /* pass in suitable argument to callback */ + curl_easy_setopt(curl, CURLOPT_READDATA, (void *)file); - result = curl_easy_perform(curl); + result = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 index 7221c5fad..4d1230c73 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_REDIR_PROTOCOLS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_REDIR_PROTOCOLS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to @@ -90,17 +90,20 @@ SMB and SMBS. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - /* pass in the URL from an external source */ - curl_easy_setopt(curl, CURLOPT_URL, argv[1]); +int main(int argc, char **argv) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* pass in the URL from an external source */ + curl_easy_setopt(curl, CURLOPT_URL, argv[1]); - /* only allow redirects to HTTP and HTTPS URLs */ - curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS, - CURLPROTO_HTTP | CURLPROTO_HTTPS); + /* only allow redirects to HTTP and HTTPS URLs */ + curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS, + CURLPROTO_HTTP | CURLPROTO_HTTPS); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 b/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 index 48b43d4df..749840032 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_REDIR_PROTOCOLS_STR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_REDIR_PROTOCOLS_STR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_REDIR_PROTOCOLS_STR \- protocols allowed to redirect to @@ -68,16 +68,19 @@ SMB and SMBS. All .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - /* pass in the URL from an external source */ - curl_easy_setopt(curl, CURLOPT_URL, argv[1]); +int main(int argc, char **argv) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* pass in the URL from an external source */ + curl_easy_setopt(curl, CURLOPT_URL, argv[1]); - /* only allow redirects to HTTP and HTTPS URLs */ - curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS_STR, "http,https"); + /* only allow redirects to HTTP and HTTPS URLs */ + curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS_STR, "http,https"); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_REFERER.3 b/external/curl/docs/libcurl/opts/CURLOPT_REFERER.3 index e8da879d5..94ef00a4c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_REFERER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_REFERER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_REFERER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_REFERER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_REFERER \- the HTTP referer header @@ -45,14 +45,17 @@ NULL HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* tell it where we found the link to this place */ - curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.com/aboutme.html"); + /* tell it where we found the link to this place */ + curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.org/me.html"); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 b/external/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 index 14a43fe97..e32cfc4c6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_REQUEST_TARGET 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_REQUEST_TARGET 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_REQUEST_TARGET \- alternative target for this request @@ -35,22 +35,28 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string); .SH DESCRIPTION Pass a char * to string which libcurl uses in the upcoming request instead of the path as extracted from the URL. + +libcurl passes on the verbatim string in its request without any filter or +other safe guards. That includes white space and control characters. .SH DEFAULT NULL .SH PROTOCOLS HTTP .SH EXAMPLE .nf -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/*"); - curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "OPTIONS"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/*"); + curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "OPTIONS"); - /* issue an OPTIONS * request (no leading slash) */ - curl_easy_setopt(curl, CURLOPT_REQUEST_TARGET, "*"); + /* issue an OPTIONS * request (no leading slash) */ + curl_easy_setopt(curl, CURLOPT_REQUEST_TARGET, "*"); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/external/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 index 4721491f2..5ac037691 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESOLVE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RESOLVE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RESOLVE \- provide custom host name to IP address resolves @@ -80,22 +80,25 @@ NULL All .SH EXAMPLE .nf -CURL *curl; -struct curl_slist *host = NULL; -host = curl_slist_append(NULL, "example.com:443:127.0.0.1"); +int main(void) +{ + CURL *curl; + struct curl_slist *host = NULL; + host = curl_slist_append(NULL, "example.com:443:127.0.0.1"); -curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_RESOLVE, host); - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_RESOLVE, host); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_perform(curl); + curl_easy_perform(curl); - /* always cleanup */ - curl_easy_cleanup(curl); -} + /* always cleanup */ + curl_easy_cleanup(curl); + } -curl_slist_free_all(host); + curl_slist_free_all(host); +} .fi .SH AVAILABILITY Added in 7.21.3. Removal support added in 7.42.0. diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 index f198fa864..691085bab 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESOLVER_START_DATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RESOLVER_START_DATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RESOLVER_START_DATA \- pointer passed to the resolver start callback @@ -52,13 +52,16 @@ static int resolver_start_cb(void *resolver_state, void *reserved, return 0; } -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, resolver_start_cb); - curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, curl); - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, resolver_start_cb); + curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, curl); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 index dbe48fef3..2b700eb49 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESOLVER_START_FUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RESOLVER_START_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RESOLVER_START_FUNCTION \- callback called before a new name resolve is started @@ -60,8 +60,8 @@ NULL (No callback) All .SH EXAMPLE .nf -static int resolver_start_cb(void *resolver_state, void *reserved, - void *userdata) +static int start_cb(void *resolver_state, void *reserved, + void *userdata) { (void)reserved; printf("Received resolver_state=%p userdata=%p\\n", @@ -69,13 +69,16 @@ static int resolver_start_cb(void *resolver_state, void *reserved, return 0; } -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, resolver_start_cb); - curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, curl); - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, start_cb); + curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, curl); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 index f74cff847..a562d0f5f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESUME_FROM 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RESUME_FROM 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RESUME_FROM \- offset to resume transfer from @@ -51,21 +51,26 @@ If you need to resume a transfer beyond the 2GB limit, use HTTP, FTP, SFTP, FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + long size_of_file; - /* resume upload at byte index 200 */ - curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L); + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com"); - /* ask for upload */ - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + /* resume upload at byte index 200 */ + curl_easy_setopt(curl, CURLOPT_RESUME_FROM, 200L); - /* set total data amount to expect */ - curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file); + /* ask for upload */ + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - /* Perform the request */ - curl_easy_perform(curl); + /* set total data amount to expect */ + curl_easy_setopt(curl, CURLOPT_INFILESIZE, size_of_file); + + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 index ec2aab35d..37844520e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RESUME_FROM_LARGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RESUME_FROM_LARGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RESUME_FROM_LARGE \- offset to resume transfer from @@ -48,24 +48,27 @@ file to the remote target file. HTTP, FTP, SFTP, FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_off_t resume_position = GET_IT_SOMEHOW; - curl_off_t file_size = GET_IT_SOMEHOW_AS_WELL; +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_off_t resume_position; /* get it somehow */ + curl_off_t file_size; /* get it somehow as well */ - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com"); + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com"); - /* resuming upload at this position, possibly beyond 2GB */ - curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position); + /* resuming upload at this position, possibly beyond 2GB */ + curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, resume_position); - /* ask for upload */ - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + /* ask for upload */ + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - /* set total data amount to expect */ - curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size); + /* set total data amount to expect */ + curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_size); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 index 7d8e34263..5b9e63a43 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RTSP_CLIENT_CSEQ \- RTSP client CSEQ number @@ -42,12 +42,16 @@ increments from this new number henceforth. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); - curl_easy_setopt(curl, CURLOPT_RTSP_CLIENT_CSEQ, 1234L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); + curl_easy_setopt(curl, CURLOPT_RTSP_CLIENT_CSEQ, 1234L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 index d4c40efe8..92e93dc0d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_REQUEST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RTSP_REQUEST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RTSP_REQUEST \- RTSP request @@ -101,13 +101,17 @@ application a chance to run. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); - /* ask for options! */ - curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_OPTIONS); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); + /* ask for options! */ + curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_OPTIONS); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 index 2c3b06768..8de5b925d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_SERVER_CSEQ 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RTSP_SERVER_CSEQ 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RTSP_SERVER_CSEQ \- RTSP server CSEQ number @@ -42,12 +42,16 @@ unimplemented. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); - curl_easy_setopt(curl, CURLOPT_RTSP_SERVER_CSEQ, 1234L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); + curl_easy_setopt(curl, CURLOPT_RTSP_SERVER_CSEQ, 1234L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 index 27cc07dcb..88142013d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_SESSION_ID 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RTSP_SESSION_ID 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RTSP_SESSION_ID \- RTSP session ID @@ -47,13 +47,17 @@ NULL RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - char *prev_id; /* saved from before somehow */ - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); - curl_easy_setopt(curl, CURLOPT_RTSP_SESSION_ID, prev_id); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + char *prev_id; /* saved from before somehow */ + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); + curl_easy_setopt(curl, CURLOPT_RTSP_SESSION_ID, prev_id); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 index 566457d46..cff2eaa96 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_STREAM_URI 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RTSP_STREAM_URI 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RTSP_STREAM_URI \- RTSP stream URI @@ -52,14 +52,17 @@ option. RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - char *prev_id; /* saved from before somehow */ - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); - curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, - "rtsp://foo.example.com/twister/video"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); + curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, + "rtsp://foo.example.com/twister/video"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 index b744407ea..5b05db2ff 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_RTSP_TRANSPORT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_RTSP_TRANSPORT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_RTSP_TRANSPORT \- RTSP Transport: header @@ -46,14 +46,18 @@ NULL RTSP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); - curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_SETUP); - curl_easy_setopt(curl, CURLOPT_RTSP_TRANSPORT, - "RTP/AVP;unicast;client_port=4588-4589"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "rtsp://example.com/"); + curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_SETUP); + curl_easy_setopt(curl, CURLOPT_RTSP_TRANSPORT, + "RTP/AVP;unicast;client_port=4588-4589"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 b/external/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 index 5c417c9c9..7c0ffeb2d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SASL_AUTHZID 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SASL_AUTHZID 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SASL_AUTHZID \- authorization identity (identity to act as) @@ -51,14 +51,18 @@ blank IMAP, LDAP, 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); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + 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"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/external/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 index 9f464d65d..23be6f288 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SASL_IR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SASL_IR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SASL_IR \- send initial response in first packet @@ -53,12 +53,16 @@ SASL-IR CAPABILITY. IMAP, POP3 and SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); - curl_easy_setopt(curl, CURLOPT_SASL_IR, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/"); + curl_easy_setopt(curl, CURLOPT_SASL_IR, 1L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 index c65b84409..863fc0289 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SEEKDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SEEKDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SEEKDATA \- pointer passed to the seek callback @@ -41,6 +41,12 @@ If you do not set this, NULL is passed to the callback. HTTP, FTP, SFTP .SH EXAMPLE .nf +#include /* for lseek() */ + +struct data { + int our_fd; +}; + static int seek_cb(void *clientp, curl_off_t offset, int origin) { struct data *d = (struct data *)clientp; @@ -48,10 +54,14 @@ static int seek_cb(void *clientp, curl_off_t offset, int origin) return CURL_SEEKFUNC_OK; } +int main(void) { struct data seek_data; - curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_cb); - curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, &seek_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, seek_cb); + curl_easy_setopt(curl, CURLOPT_SEEKDATA, &seek_data); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 index b5c041ecb..c3fd8bb06 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SEEKFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SEEKFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream @@ -71,17 +71,26 @@ By default, this is NULL and unused. HTTP, FTP, SFTP .SH EXAMPLE .nf +#include /* for lseek */ + +struct data { + int our_fd; +}; static int seek_cb(void *clientp, curl_off_t offset, int origin) { struct data *d = (struct data *)clientp; - lseek(our_fd, offset, origin); + lseek(d->our_fd, offset, origin); return CURL_SEEKFUNC_OK; } +int main(void) { struct data seek_data; - curl_easy_setopt(CURL *handle, CURLOPT_SEEKFUNCTION, seek_cb); - curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, &seek_data); + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, seek_cb); + curl_easy_setopt(curl, CURLOPT_SEEKDATA, &seek_data); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 b/external/curl/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 index e6e2f7ebc..411adf83b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SERVER_RESPONSE_TIMEOUT 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SERVER_RESPONSE_TIMEOUT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SERVER_RESPONSE_TIMEOUT \- time allowed to wait for server response @@ -49,14 +49,18 @@ None FTP, IMAP, POP3, SMTP, and SSH .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/slow.txt"); - /* wait no more than 23 seconds */ - curl_easy_setopt(curl, CURLOPT_SERVER_RESPONSE_TIMEOUT, 23L); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/slow.txt"); + /* wait no more than 23 seconds */ + curl_easy_setopt(curl, CURLOPT_SERVER_RESPONSE_TIMEOUT, 23L); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/external/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 index fab524dec..5028929bf 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SERVICE_NAME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SERVICE_NAME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SERVICE_NAME \- authentication service name @@ -46,12 +46,15 @@ See above HTTP, FTP, IMAP, LDAP, POP3 and SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - CURLcode ret; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SERVICE_NAME, "custom"); - ret = curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode ret; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SERVICE_NAME, "custom"); + ret = curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SHARE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SHARE.3 index 56aca2e36..799171bda 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SHARE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SHARE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SHARE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SHARE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SHARE \- share handle to use @@ -56,26 +56,30 @@ NULL All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -CURL *curl2 = curl_easy_init(); /* a second handle */ -if(curl) { - CURLSH *shobject = curl_share_init(); - curl_share_setopt(shobject, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); +int main(void) +{ + CURL *curl = curl_easy_init(); + CURL *curl2 = curl_easy_init(); /* a second handle */ + if(curl) { + CURLcode res; + CURLSH *shobject = curl_share_init(); + curl_share_setopt(shobject, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); - curl_easy_setopt(curl, CURLOPT_SHARE, shobject); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); + curl_easy_setopt(curl, CURLOPT_SHARE, shobject); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); - /* the second handle shares cookies from the first */ - curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/second"); - curl_easy_setopt(curl2, CURLOPT_COOKIEFILE, ""); - curl_easy_setopt(curl2, CURLOPT_SHARE, shobject); - ret = curl_easy_perform(curl2); - curl_easy_cleanup(curl2); + /* the second handle shares cookies from the first */ + curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/second"); + curl_easy_setopt(curl2, CURLOPT_COOKIEFILE, ""); + curl_easy_setopt(curl2, CURLOPT_SHARE, shobject); + res = curl_easy_perform(curl2); + curl_easy_cleanup(curl2); - curl_share_cleanup(shobject); + curl_share_cleanup(shobject); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 index 982a437fe..e25f4691e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKOPTDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SOCKOPTDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SOCKOPTDATA \- pointer to pass to sockopt callback @@ -45,23 +45,28 @@ static int sockopt_callback(void *clientp, curl_socket_t curlfd, curlsocktype purpose) { int val = *(int *)clientp; - setsockopt(curldfd, SOL_SOCKET, SO_RCVBUF, (const char *)&val, sizeof(val)); + setsockopt((int)curlfd, SOL_SOCKET, SO_RCVBUF, + (const char *)&val, sizeof(val)); return CURL_SOCKOPT_OK; } -curl = curl_easy_init(); -if(curl) { - int recvbuffersize = 256 * 1024; +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + int recvbuffersize = 256 * 1024; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* call this function to set options for the socket */ - curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); - curl_easy_setopt(curl, CURLOPT_SOCKOPTDATA, &recvbuffersize); + /* call this function to set options for the socket */ + curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); + curl_easy_setopt(curl, CURLOPT_SOCKOPTDATA, &recvbuffersize); - res = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 index fab932147..083e44e18 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKOPTFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SOCKOPTFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SOCKOPTFUNCTION \- callback for setting socket options @@ -101,21 +101,27 @@ static int sockopt_callback(void *clientp, curl_socket_t curlfd, return CURL_SOCKOPT_ALREADY_CONNECTED; } -curl = curl_easy_init(); -if(curl) { - /* libcurl thinks that you connect to the host - * and port that you specify in the URL option. */ - curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); - /* call this function to get a socket */ - curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); - curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); - - /* call this function to set options for the socket */ - curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); - - res = curl_easy_perform(curl); - - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + int sockfd; /* our custom file descriptor */ + /* libcurl thinks that you connect to the host + * and port that you specify in the URL option. */ + curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); + /* call this function to get a socket */ + curl_easy_setopt(curl, CURLOPT_OPENSOCKETFUNCTION, opensocket); + curl_easy_setopt(curl, CURLOPT_OPENSOCKETDATA, &sockfd); + + /* call this function to set options for the socket */ + curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, sockopt_callback); + + res = curl_easy_perform(curl); + + curl_easy_cleanup(curl); + } +} .fi .SH AVAILABILITY Added in 7.16.0. The \fICURL_SOCKOPT_ALREADY_CONNECTED\fP return code was diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 b/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 index 12f011173..afd74c881 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKS5_AUTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SOCKS5_AUTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SOCKS5_AUTH \- methods for SOCKS5 proxy authentication @@ -45,18 +45,21 @@ CURLAUTH_BASIC|CURLAUTH_GSSAPI All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* request to use a SOCKS5 proxy */ - curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://user:pass@myproxy.com"); + /* request to use a SOCKS5 proxy */ + curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://user:pass@myproxy.com"); - /* enable username/password authentication only */ - curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, (long)CURLAUTH_BASIC); + /* enable username/password authentication only */ + curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, (long)CURLAUTH_BASIC); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 index 442d64222..2b530a0e5 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SOCKS5_GSSAPI_NEC \- SOCKS proxy GSSAPI negotiation protection @@ -44,13 +44,17 @@ negotiation. Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://proxy"); - curl_easy_setopt(curl, CURLOPT_SOCKS5_GSSAPI_NEC, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://proxy"); + curl_easy_setopt(curl, CURLOPT_SOCKS5_GSSAPI_NEC, 1L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 index 0a244214c..a0b4092b8 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name @@ -48,13 +48,17 @@ See above All network protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://proxy"); - curl_easy_setopt(curl, CURLOPT_SOCKS5_GSSAPI_SERVICE, "rcmd-special"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://proxy"); + curl_easy_setopt(curl, CURLOPT_SOCKS5_GSSAPI_SERVICE, "rcmd-special"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 index ca29c59b7..47a69b3bc 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_AUTH_TYPES 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_AUTH_TYPES 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_AUTH_TYPES \- auth types for SFTP and SCP @@ -47,13 +47,17 @@ CURLSSH_AUTH_ANY (all available) SFTP and SCP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); - curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, - CURLSSH_AUTH_PUBLICKEY | CURLSSH_AUTH_KEYBOARD); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); + curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, + CURLSSH_AUTH_PUBLICKEY | CURLSSH_AUTH_KEYBOARD); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 index cccc34414..601932c4e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_COMPRESSION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_COMPRESSION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_COMPRESSION \- enable SSH compression @@ -43,15 +43,18 @@ may or may not do it. All SSH based protocols: SCP, SFTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com"); - /* enable built-in compression */ - curl_easy_setopt(curl, CURLOPT_SSH_COMPRESSION, 1L); + /* enable built-in compression */ + curl_easy_setopt(curl, CURLOPT_SSH_COMPRESSION, 1L); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 index 82a2df99d..7c21aba70 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_KEYDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_KEYDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_HOSTKEYDATA \- pointer to pass to the SSH host key callback @@ -41,21 +41,31 @@ NULL SCP and SFTP .SH EXAMPLE .nf -int hostkeycb(void *clientp, /* passed with CURLOPT_SSH_HOSTKEYDATA */ - int keytype, /* CURLKHTYPE */ - const char * key, /* host key to check */ - size_t keylen); /* length of the key */ +struct mine { + void *custom; +}; + +static int hostkeycb(void *clientp, /* CURLOPT_SSH_HOSTKEYDATA */ + int keytype, /* CURLKHTYPE */ + const char *key, /* host key to check */ + size_t keylen) /* length of the key */ { /* 'clientp' points to the callback_data struct */ /* investigate the situation and return the correct value */ return CURLKHMATCH_OK; } + +int main(void) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); - curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb); - curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data); + CURL *curl = curl_easy_init(); + if(curl) { + struct mine callback_data; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); + curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb); + curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 index e54e4160b..47fad3ce4 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_HOSTKEYFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_HOSTKEYFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_HOSTKEYFUNCTION \- callback to check host key @@ -62,21 +62,30 @@ NULL SCP and SFTP .SH EXAMPLE .nf +struct mine { + void *custom; +}; + int hostkeycb(void *clientp, /* passed with CURLOPT_SSH_HOSTKEYDATA */ int keytype, /* CURLKHTYPE */ - const char * key, /* host key to check */ - size_t keylen); /* length of the key */ + const char *key, /* host key to check */ + size_t keylen) /* length of the key */ { /* 'clientp' points to the callback_data struct */ /* investigate the situation and return the correct value */ return CURLKHMATCH_OK; } +int main(void) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); - curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb); - curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data); + struct mine callback_data; + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); + curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb); + curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 index 0dee8a901..a417af300 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- MD5 checksum of SSH server public key @@ -48,13 +48,17 @@ NULL SCP and SFTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); - curl_easy_setopt(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, - "afe17cd62a0f3b61f1ab9cb22ba269a7"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); + curl_easy_setopt(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, + "afe17cd62a0f3b61f1ab9cb22ba269a7"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 index 8ac3e66a1..e2c45b2e0 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 \- SHA256 hash of SSH server public key @@ -43,13 +43,17 @@ NULL SCP and SFTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); - curl_easy_setopt(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256, - "NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ="); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); + curl_easy_setopt(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256, + "NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ="); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 index e5569324c..6aba1ab40 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_KEYDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_KEYDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_KEYDATA \- pointer passed to the SSH key callback @@ -41,6 +41,9 @@ NULL SFTP and SCP .SH EXAMPLE .nf +struct mine { + void *custom; +}; static int keycb(CURL *easy, const struct curl_khkey *knownkey, const struct curl_khkey *foundkey, @@ -51,13 +54,19 @@ static int keycb(CURL *easy, /* investigate the situation and return the correct value */ return CURLKHSTAT_FINE_ADD_TO_FILE; } + +int main(void) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); - curl_easy_setopt(curl, CURLOPT_SSH_KEYFUNCTION, keycb); - curl_easy_setopt(curl, CURLOPT_SSH_KEYDATA, &callback_data); - curl_easy_setopt(curl, CURLOPT_SSH_KNOWNHOSTS, "/home/user/known_hosts"); + CURL *curl = curl_easy_init(); + if(curl) { + struct mine callback_data; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); + curl_easy_setopt(curl, CURLOPT_SSH_KEYFUNCTION, keycb); + curl_easy_setopt(curl, CURLOPT_SSH_KEYDATA, &callback_data); + curl_easy_setopt(curl, CURLOPT_SSH_KNOWNHOSTS, "/home/user/known_hosts"); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 index b4746a03c..bb99d5a1b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_KEYFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_KEYFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic @@ -106,6 +106,10 @@ NULL SFTP and SCP .SH EXAMPLE .nf +struct mine { + void *custom; +}; + static int keycb(CURL *easy, const struct curl_khkey *knownkey, const struct curl_khkey *foundkey, @@ -116,13 +120,19 @@ static int keycb(CURL *easy, /* investigate the situation and return the correct value */ return CURLKHSTAT_FINE_ADD_TO_FILE; } + +int main(void) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); - curl_easy_setopt(curl, CURLOPT_SSH_KEYFUNCTION, keycb); - curl_easy_setopt(curl, CURLOPT_SSH_KEYDATA, &callback_data); - curl_easy_setopt(curl, CURLOPT_SSH_KNOWNHOSTS, "/home/user/known_hosts"); + CURL *curl = curl_easy_init(); + if(curl) { + struct mine callback_data; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt"); + curl_easy_setopt(curl, CURLOPT_SSH_KEYFUNCTION, keycb); + curl_easy_setopt(curl, CURLOPT_SSH_KEYDATA, &callback_data); + curl_easy_setopt(curl, CURLOPT_SSH_KNOWNHOSTS, "/home/user/known_hosts"); - curl_easy_perform(curl); + curl_easy_perform(curl); +} } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 index e0caa01f1..6875384f3 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_KNOWNHOSTS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_KNOWNHOSTS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts @@ -48,13 +48,17 @@ NULL SFTP and SCP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); - curl_easy_setopt(curl, CURLOPT_SSH_KNOWNHOSTS, - "/home/clarkkent/.ssh/known_hosts"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); + curl_easy_setopt(curl, CURLOPT_SSH_KNOWNHOSTS, + "/home/clarkkent/.ssh/known_hosts"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 index e910ce4c9..78d60fc66 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_PRIVATE_KEYFILE \- private key file for SSH auth @@ -49,14 +49,18 @@ As explained above SFTP and SCP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); - curl_easy_setopt(curl, CURLOPT_SSH_PRIVATE_KEYFILE, - "/home/clarkkent/.ssh/id_rsa"); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "password"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); + curl_easy_setopt(curl, CURLOPT_SSH_PRIVATE_KEYFILE, + "/home/clarkkent/.ssh/id_rsa"); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "password"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 index 28e7eafcf..6b8adf6b2 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSH_PUBLIC_KEYFILE \- public key file for SSH auth @@ -50,13 +50,17 @@ NULL SFTP and SCP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); - curl_easy_setopt(curl, CURLOPT_SSH_PUBLIC_KEYFILE, - "/home/clarkkent/.ssh/id_rsa.pub"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/file"); + curl_easy_setopt(curl, CURLOPT_SSH_PUBLIC_KEYFILE, + "/home/clarkkent/.ssh/id_rsa.pub"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 index 58cedb5a2..d95e5acb1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLCERT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLCERT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLCERT \- SSL client certificate @@ -66,14 +66,18 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 index 3df7b7926..bf6bf0da4 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLCERTTYPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLCERTTYPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLCERTTYPE \- type of client SSL certificate @@ -49,15 +49,19 @@ option. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM"); - curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM"); + curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 index aee058afd..575677d60 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLCERT_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLCERT_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob @@ -52,18 +52,26 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob stblob; - stblob.data = certificateData; - stblob.len = filesize; - stblob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSLCERT_BLOB, &stblob); - curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "P12"); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); + +extern char *certificateData; /* point to data */ +extern size_t filesize; /* size of data */ + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob stblob; + stblob.data = certificateData; + stblob.len = filesize; + stblob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSLCERT_BLOB, &stblob); + curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "P12"); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 index aa83165d9..94290eedd 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLENGINE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLENGINE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLENGINE \- SSL engine identifier @@ -44,12 +44,16 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSLENGINE, "dynamic"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSLENGINE, "dynamic"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 index 8bb81726c..22fa8cf8f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLENGINE_DEFAULT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLENGINE_DEFAULT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default @@ -43,13 +43,17 @@ None All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSLENGINE, "dynamic"); - curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSLENGINE, "dynamic"); + curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 index 4c1cbedf4..fbcda4000 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLKEY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLKEY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLKEY \- private key file for TLS and SSL client cert @@ -49,14 +49,18 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 index 504240b11..0e071aab1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLKEYTYPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLKEYTYPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLKEYTYPE \- type of the private key file @@ -49,15 +49,19 @@ option. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); - curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); - curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM"); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSLCERT, "client.pem"); + curl_easy_setopt(curl, CURLOPT_SSLKEY, "key.pem"); + curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM"); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 index 6b5c9190b..a64549f9c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLKEY_BLOB 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLKEY_BLOB 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLKEY_BLOB \- private key for client cert from memory blob @@ -50,23 +50,34 @@ NULL All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_blob blob; - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - blob.data = certificateData; - blob.len = filesize; - blob.flags = CURL_BLOB_COPY; - curl_easy_setopt(curl, CURLOPT_SSLCERT_BLOB, &blob); - curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM"); - blob.data = privateKeyData; - blob.len = privateKeySize; - curl_easy_setopt(curl, CURLOPT_SSLKEY_BLOB, &blob); - curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); - curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +extern char *certificateData; /* point to cert */ +extern size_t filesize; /* size of cert */ + +extern char *privateKeyData; /* point to key */ +extern size_t privateKeySize; /* size of key */ + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_blob blob; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + blob.data = certificateData; + blob.len = filesize; + blob.flags = CURL_BLOB_COPY; + curl_easy_setopt(curl, CURLOPT_SSLCERT_BLOB, &blob); + curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM"); + + blob.data = privateKeyData; + blob.len = privateKeySize; + curl_easy_setopt(curl, CURLOPT_SSLKEY_BLOB, &blob); + curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "s3cret"); + curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 index add4be30a..4d8eb38d6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSLVERSION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSLVERSION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSLVERSION \- preferred TLS/SSL version @@ -95,15 +95,18 @@ CURL_SSLVERSION_DEFAULT All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* ask libcurl to use TLS version 1.0 or later */ - curl_easy_setopt(curl, CURLOPT_SSLVERSION, (long)CURL_SSLVERSION_TLSv1); + /* ask libcurl to use TLS version 1.0 or later */ + curl_easy_setopt(curl, CURLOPT_SSLVERSION, (long)CURL_SSLVERSION_TLSv1); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 index 63210f059..e1cb2a142 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_CIPHER_LIST 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_CIPHER_LIST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_CIPHER_LIST \- ciphers to use for TLS @@ -68,12 +68,16 @@ NULL, use internal default All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 index 654296631..6db06cb4f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_CTX_DATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_CTX_DATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_CTX_DATA \- pointer passed to SSL context callback @@ -60,7 +60,7 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm) * X509 structure that SSL can use */ PEM_read_bio_X509(bio, &cert, 0, NULL); - if(cert == NULL) + if(!cert) printf("PEM_read_bio_X509 failed...\\n"); /* get a pointer to the X509 certificate store (which may be empty) */ @@ -80,7 +80,7 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm) int main(void) { - CURL * ch; + CURL *ch; CURLcode rv; char *mypem = /* example CA cert PEM - shortened */ "-----BEGIN CERTIFICATE-----\\n" diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 index 5f7977776..f3bd94490 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_CTX_FUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_CTX_FUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS @@ -102,7 +102,7 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm) * X509 structure that SSL can use */ PEM_read_bio_X509(bio, &cert, 0, NULL); - if(cert == NULL) + if(!cert) printf("PEM_read_bio_X509 failed...\\n"); /* get a pointer to the X509 certificate store (which may be empty) */ @@ -122,7 +122,7 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm) int main(void) { - CURL * ch; + CURL *ch; CURLcode rv; char *mypem = /* example CA cert PEM - shortened */ "-----BEGIN CERTIFICATE-----\\n" diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 index e931f29b0..c64b9821b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_EC_CURVES 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_EC_CURVES 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_EC_CURVES \- key exchange curves @@ -42,12 +42,16 @@ the SSL backend libcurl is built to use supports it). HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSL_EC_CURVES, "X25519:P-521"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSL_EC_CURVES, "X25519:P-521"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 index 7492333b0..ea4f442d6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_ENABLE_ALPN 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_ENABLE_ALPN 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_ENABLE_ALPN \- Application Layer Protocol Negotiation @@ -42,12 +42,16 @@ is built to use supports it), which can be used to negotiate http2. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSL_ENABLE_ALPN, 0L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSL_ENABLE_ALPN, 0L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 index 7d0a0d3e7..b750c69cc 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_ENABLE_NPN 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_ENABLE_NPN 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_ENABLE_NPN \- use NPN @@ -44,12 +44,16 @@ is built to use supports it), which can be used to negotiate http2. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_SSL_ENABLE_NPN, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_SSL_ENABLE_NPN, 1L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 index 64b19112e..20b1fedf6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_FALSESTART 3 "August 22, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_FALSESTART 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_FALSESTART \- TLS false start @@ -45,11 +45,14 @@ when performing a full handshake. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_SSL_FALSESTART, 1L); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_SSL_FALSESTART, 1L); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 index 652ce4628..0c58c9ffa 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_OPTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_OPTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_OPTIONS \- SSL behavior options @@ -62,12 +62,13 @@ library). If combined with \fICURLSSLOPT_NO_REVOKE\fP, the latter takes precedence. (Added in 7.70.0) .IP CURLSSLOPT_NATIVE_CA Tell libcurl to use the operating system's native CA store for certificate -verification. Works only on Windows, Linux (Debian, Ubuntu, Gentoo, Fedora, -RHEL), macOS, Android and iOS when built to use wolfSSL (since 8.3.0) or on -Windows when built to use OpenSSL. If you set this option and also set a CA -certificate file or directory then during verification those certificates -are searched in addition to the native CA store. -(Added in 7.71.0) +verification. If you set this option and also set a CA certificate file or +directory then during verification those certificates are searched in addition +to the native CA store. + +Works with wolfSSL on Windows, Linux (Debian, Ubuntu, Gentoo, Fedora, RHEL), +macOS, Android and iOS (added in 8.3.0), with GnuTLS (added in 8.5.0) or on +Windows when built to use OpenSSL (Added in 7.71.0). .IP CURLSSLOPT_AUTO_CLIENT_CERT Tell libcurl to automatically locate and use a client certificate for authentication, when requested by the server. This option is only supported @@ -82,14 +83,18 @@ could be a privacy violation and unexpected. All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* weaken TLS only for use with silly servers */ - curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_ALLOW_BEAST | - CURLSSLOPT_NO_REVOKE); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* weaken TLS only for use with silly servers */ + curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_ALLOW_BEAST | + CURLSSLOPT_NO_REVOKE); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 index 6e0ddb8a4..69e25359e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_SESSIONID_CACHE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_SESSIONID_CACHE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_SESSIONID_CACHE \- use the SSL session-ID cache @@ -44,13 +44,17 @@ wild that may require you to disable this in order for you to succeed. All TLS-based .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* switch off session-id use! */ - curl_easy_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* switch off session-id use! */ + curl_easy_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 index 01db6b8db..866adb54f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_VERIFYHOST 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_VERIFYHOST 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host @@ -91,14 +91,17 @@ may be inaccessible if SNI is not sent. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Set the default value: strict name check please */ - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); + /* Set the default value: strict name check please */ + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 index a8ca63ea0..1c325e362 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_VERIFYPEER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_VERIFYPEER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate @@ -75,14 +75,17 @@ malicious servers. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Set the default value: strict certificate check please */ - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L); + /* Set the default value: strict certificate check please */ + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 index f17d306c6..72e1a1ce1 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SSL_VERIFYSTATUS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SSL_VERIFYSTATUS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status @@ -46,13 +46,17 @@ extension, the verification fails. All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - /* ask for OCSP stapling! */ - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + /* ask for OCSP stapling! */ + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYSTATUS, 1L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_STDERR.3 b/external/curl/docs/libcurl/opts/CURLOPT_STDERR.3 index 5623ccb3d..c85488b33 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_STDERR.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_STDERR.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_STDERR 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_STDERR 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_STDERR \- redirect stderr to another stream @@ -46,13 +46,16 @@ stderr All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -FILE *filep = fopen("dump", "wb"); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_STDERR, filep); +int main(void) +{ + CURL *curl = curl_easy_init(); + FILE *filep = fopen("dump", "wb"); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_STDERR, filep); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 index f776b505a..00f102dfb 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_STREAM_DEPENDS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_STREAM_DEPENDS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_STREAM_DEPENDS \- stream this transfer depends on @@ -54,16 +54,19 @@ NULL HTTP/2 .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -CURL *curl2 = curl_easy_init(); /* a second handle */ -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one"); +int main(void) +{ + CURL *curl = curl_easy_init(); + CURL *curl2 = curl_easy_init(); /* a second handle */ + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one"); - /* the second depends on the first */ - curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two"); - curl_easy_setopt(curl2, CURLOPT_STREAM_DEPENDS, curl); + /* the second depends on the first */ + curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two"); + curl_easy_setopt(curl2, CURLOPT_STREAM_DEPENDS, curl); - /* then add both to a multi handle and transfer them! */ + /* then add both to a multi handle and transfer them! */ + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 index ffcf04153..c5f4817b3 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_STREAM_DEPENDS_E 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_STREAM_DEPENDS_E 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_STREAM_DEPENDS_E \- stream this transfer depends on exclusively @@ -57,16 +57,19 @@ NULL HTTP/2 .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -CURL *curl2 = curl_easy_init(); /* a second handle */ -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one"); +int main(void) +{ + CURL *curl = curl_easy_init(); + CURL *curl2 = curl_easy_init(); /* a second handle */ + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one"); - /* the second depends on the first */ - curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two"); - curl_easy_setopt(curl2, CURLOPT_STREAM_DEPENDS_E, curl); + /* the second depends on the first */ + curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two"); + curl_easy_setopt(curl2, CURLOPT_STREAM_DEPENDS_E, curl); - /* then add both to a multi handle and transfer them! */ + /* then add both to a multi handle and transfer them! */ + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/external/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 index 2700d22d6..77e4ef588 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_STREAM_WEIGHT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_STREAM_WEIGHT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_STREAM_WEIGHT \- numerical stream weight @@ -57,17 +57,20 @@ If nothing is set, the HTTP/2 protocol itself uses its own default which is HTTP/2 .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -CURL *curl2 = curl_easy_init(); /* a second handle */ -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one"); - curl_easy_setopt(curl, CURLOPT_STREAM_WEIGHT, 10L); +int main(void) +{ + CURL *curl = curl_easy_init(); + CURL *curl2 = curl_easy_init(); /* a second handle */ + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/one"); + curl_easy_setopt(curl, CURLOPT_STREAM_WEIGHT, 10L); - /* the second has twice the weight */ - curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two"); - curl_easy_setopt(curl2, CURLOPT_STREAM_WEIGHT, 20L); + /* the second has twice the weight */ + curl_easy_setopt(curl2, CURLOPT_URL, "https://example.com/two"); + curl_easy_setopt(curl2, CURLOPT_STREAM_WEIGHT, 20L); - /* then add both to a multi handle and transfer them! */ + /* then add both to a multi handle and transfer them! */ + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 b/external/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 index 1d1bcf02c..75d74539b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_SUPPRESS_CONNECT_HEADERS \- suppress proxy CONNECT response headers from user callbacks @@ -74,19 +74,22 @@ Content-Type: application/json All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_HEADER, 1L); - curl_easy_setopt(curl, CURLOPT_PROXY, "http://foo:3128"); - curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L); - curl_easy_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS, 1L); + curl_easy_setopt(curl, CURLOPT_HEADER, 1L); + curl_easy_setopt(curl, CURLOPT_PROXY, "http://foo:3128"); + curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L); + curl_easy_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS, 1L); - curl_easy_perform(curl); + curl_easy_perform(curl); - /* always cleanup */ - curl_easy_cleanup(curl); + /* always cleanup */ + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 b/external/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 index 9df90169f..3d68cfbe9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_FASTOPEN 3 "June 25, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TCP_FASTOPEN 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TCP_FASTOPEN \- TCP Fast Open @@ -47,11 +47,14 @@ Fast Open is also known to be problematic on or across certain networks. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 index 1660a34dc..14fbb6486 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_KEEPALIVE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TCP_KEEPALIVE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TCP_KEEPALIVE \- TCP keep-alive probing @@ -44,20 +44,23 @@ disable keepalive probes All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* enable TCP keep-alive for this transfer */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); + /* enable TCP keep-alive for this transfer */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); - /* keep-alive idle time to 120 seconds */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L); + /* keep-alive idle time to 120 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L); - /* interval time between keep-alive probes: 60 seconds */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L); + /* interval time between keep-alive probes: 60 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 index 99456c78f..a0c4f650b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_KEEPIDLE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TCP_KEEPIDLE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TCP_KEEPIDLE \- TCP keep-alive idle time wait @@ -45,20 +45,23 @@ this amount. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* enable TCP keep-alive for this transfer */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); + /* enable TCP keep-alive for this transfer */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); - /* set keep-alive idle time to 120 seconds */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L); + /* set keep-alive idle time to 120 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L); - /* interval time between keep-alive probes: 60 seconds */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L); + /* interval time between keep-alive probes: 60 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 index 5b89c89be..e5f8b5702 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_KEEPINTVL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TCP_KEEPINTVL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TCP_KEEPINTVL \- TCP keep-alive interval @@ -44,20 +44,23 @@ this amount. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* enable TCP keep-alive for this transfer */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); + /* enable TCP keep-alive for this transfer */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); - /* set keep-alive idle time to 120 seconds */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L); + /* set keep-alive idle time to 120 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 120L); - /* interval time between keep-alive probes: 60 seconds */ - curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L); + /* interval time between keep-alive probes: 60 seconds */ + curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/external/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 index 8102f9068..ba03f0c1f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TCP_NODELAY 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TCP_NODELAY 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TCP_NODELAY \- the TCP_NODELAY option @@ -53,12 +53,15 @@ overdone. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* leave Nagle enabled */ - curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 0); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + /* leave Nagle enabled */ + curl_easy_setopt(curl, CURLOPT_TCP_NODELAY, 0); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/external/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 index 6435d39d8..308ddcd77 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TELNETOPTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TELNETOPTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TELNETOPTIONS \- set of telnet options @@ -44,16 +44,20 @@ NULL TELNET .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - struct curl_slist *options; - options = curl_slist_append(NULL, "TTTYPE=vt100"); - options = curl_slist_append(options, "USER=foobar"); - curl_easy_setopt(curl, CURLOPT_URL, "telnet://example.com/"); - curl_easy_setopt(curl, CURLOPT_TELNETOPTIONS, options); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); - curl_slist_free_all(options); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + struct curl_slist *options; + options = curl_slist_append(NULL, "TTTYPE=vt100"); + options = curl_slist_append(options, "USER=foobar"); + curl_easy_setopt(curl, CURLOPT_URL, "telnet://example.com/"); + curl_easy_setopt(curl, CURLOPT_TELNETOPTIONS, options); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + curl_slist_free_all(options); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/external/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 index 5f0046780..f4e66a575 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TFTP_BLKSIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TFTP_BLKSIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TFTP_BLKSIZE \- TFTP block size @@ -45,13 +45,17 @@ is used. TFTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "tftp://example.com/bootimage"); - /* try using larger blocks */ - curl_easy_setopt(curl, CURLOPT_TFTP_BLKSIZE, 2048L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "tftp://example.com/bootimage"); + /* try using larger blocks */ + curl_easy_setopt(curl, CURLOPT_TFTP_BLKSIZE, 2048L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 b/external/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 index c5c532dca..868a4ec03 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TFTP_NO_OPTIONS 3 "June 25, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TFTP_NO_OPTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TFTP_NO_OPTIONS \- send no TFTP options requests @@ -50,24 +50,27 @@ size_t write_callback(char *ptr, size_t size, size_t nmemb, void *fp) return fwrite(ptr, size, nmemb, (FILE *)fp); } -CURL *curl = curl_easy_init(); -if(curl) { - FILE *fp = fopen("foo.bin", "wb"); - if(fp) { - curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)fp); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + FILE *fp = fopen("foo.bin", "wb"); + if(fp) { + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)fp); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); - curl_easy_setopt(curl, CURLOPT_URL, "tftp://example.com/foo.bin"); + curl_easy_setopt(curl, CURLOPT_URL, "tftp://example.com/foo.bin"); - /* do not send TFTP options requests */ - curl_easy_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L); + /* do not send TFTP options requests */ + curl_easy_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); - fclose(fp); + fclose(fp); + } + curl_easy_cleanup(curl); } - curl_easy_cleanup(curl); } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/external/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 index ee359f5cc..509bb492e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMECONDITION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TIMECONDITION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TIMECONDITION \- select condition for a time request @@ -48,19 +48,22 @@ CURL_TIMECOND_NONE (0) HTTP, FTP, RTSP, and FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* January 1, 2020 is 1577833200 */ - curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L); + /* January 1, 2020 is 1577833200 */ + curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L); - /* If-Modified-Since the above time stamp */ - curl_easy_setopt(curl, CURLOPT_TIMECONDITION, - (long)CURL_TIMECOND_IFMODSINCE); + /* If-Modified-Since the above time stamp */ + curl_easy_setopt(curl, CURLOPT_TIMECONDITION, + (long)CURL_TIMECOND_IFMODSINCE); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 index 386e73400..4ac186291 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMEOUT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TIMEOUT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TIMEOUT \- maximum time the transfer is allowed to complete @@ -68,14 +68,17 @@ Default timeout is 0 (zero) which means it never times out during transfer. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* complete within 20 seconds */ - curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L); + /* complete within 20 seconds */ + curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 index be8cd3ba1..d345bfb06 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMEOUT_MS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TIMEOUT_MS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TIMEOUT_MS \- maximum time the transfer is allowed to complete @@ -43,14 +43,17 @@ Default timeout is 0 (zero) which means it never times out during transfer. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* complete within 20000 milliseconds */ - curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 20000L); + /* complete within 20000 milliseconds */ + curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, 20000L); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 index d1833bc37..7db54ed82 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMEVALUE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TIMEVALUE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TIMEVALUE \- time value for conditional @@ -46,18 +46,21 @@ instead. HTTP, FTP, RTSP, and FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* January 1, 2020 is 1577833200 */ - curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L); + /* January 1, 2020 is 1577833200 */ + curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L); - /* If-Modified-Since the above time stamp */ - curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); + /* If-Modified-Since the above time stamp */ + curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 b/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 index abf656355..4ba3ba535 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TIMEVALUE_LARGE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TIMEVALUE_LARGE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TIMEVALUE_LARGE \- time value for conditional @@ -47,18 +47,21 @@ to be used to set dates beyond the year 2038. HTTP, FTP, RTSP, and FILE .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* January 1, 2020 is 1577833200 */ - curl_easy_setopt(curl, CURLOPT_TIMEVALUE_LARGE, (curl_off_t)1577833200); + /* January 1, 2020 is 1577833200 */ + curl_easy_setopt(curl, CURLOPT_TIMEVALUE_LARGE, (curl_off_t)1577833200); - /* If-Modified-Since the above time stamp */ - curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); + /* If-Modified-Since the above time stamp */ + curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 b/external/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 index e8aba27fc..caab09121 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TLS13_CIPHERS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TLS13_CIPHERS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TLS13_CIPHERS \- ciphers suites to use for TLS 1.3 @@ -54,13 +54,17 @@ NULL, use internal default All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc. .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_TLS13_CIPHERS, - "TLS_CHACHA20_POLY1305_SHA256"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_TLS13_CIPHERS, + "TLS_CHACHA20_POLY1305_SHA256"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 index c34bdd15b..a64d1ae7a 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TLSAUTH_PASSWORD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TLSAUTH_PASSWORD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication @@ -48,14 +48,18 @@ NULL All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_TYPE, "SRP"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_USERNAME, "user"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_PASSWORD, "secret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_TYPE, "SRP"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_USERNAME, "user"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_PASSWORD, "secret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 index ef78f1ee7..1f8e520cf 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TLSAUTH_TYPE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TLSAUTH_TYPE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TLSAUTH_TYPE \- TLS authentication methods @@ -53,14 +53,18 @@ blank All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_TYPE, "SRP"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_USERNAME, "user"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_PASSWORD, "secret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_TYPE, "SRP"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_USERNAME, "user"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_PASSWORD, "secret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 index c6b1150e3..7e800f03f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TLSAUTH_USERNAME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TLSAUTH_USERNAME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication @@ -48,14 +48,18 @@ NULL All TLS-based protocols .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_TYPE, "SRP"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_USERNAME, "user"); - curl_easy_setopt(curl, CURLOPT_TLSAUTH_PASSWORD, "secret"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_TYPE, "SRP"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_USERNAME, "user"); + curl_easy_setopt(curl, CURLOPT_TLSAUTH_PASSWORD, "secret"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 index af63bfd3d..1fb97fee2 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TRAILERDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TRAILERDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TRAILERDATA \- pointer passed to trailing headers callback @@ -40,11 +40,18 @@ NULL HTTP .SH EXAMPLE .nf -/* Assuming we have a CURL handle in the hndl variable. */ +struct MyData { + void *custom; +}; -struct MyData data; - -curl_easy_setopt(hndl, CURLOPT_TRAILERDATA, &data); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct MyData data; + curl_easy_setopt(curl, CURLOPT_TRAILERDATA, &data); + } +} .fi A more complete example can be found in examples/http_trailers.html diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 index 10d012458..04a8a05e6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TRAILERFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TRAILERFUNCTION 3 "September 26, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TRAILERFUNCTION \- callback for sending trailing headers diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/external/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 index 3d55b78f6..591b39304 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TRANSFERTEXT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TRANSFERTEXT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP @@ -48,12 +48,16 @@ simply sets the mode to ASCII and performs a standard transfer. FTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/textfile"); - curl_easy_setopt(curl, CURLOPT_TRANSFERTEXT, 1L); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/textfile"); + curl_easy_setopt(curl, CURLOPT_TRANSFERTEXT, 1L); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/external/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 index 2f13e34ef..4a60bd3de 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_TRANSFER_ENCODING 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_TRANSFER_ENCODING 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding @@ -52,11 +52,14 @@ by both HTTP clients and HTTP servers. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_TRANSFER_ENCODING, 1L); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/external/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 index fe8c3a980..6af59d22b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UNIX_SOCKET_PATH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_UNIX_SOCKET_PATH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_UNIX_SOCKET_PATH \- Unix domain socket @@ -57,16 +57,21 @@ Default is NULL, meaning that no Unix domain sockets are used. All protocols except for FILE and FTP are supported in theory. HTTP, IMAP, POP3 and SMTP should in particular work (including their SSL/TLS variants). .SH EXAMPLE -Given that you have an HTTP server running listening on /tmp/httpd.sock, you -can request an HTTP resource with: - .nf - curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/httpd.sock"); - curl_easy_setopt(curl_handle, CURLOPT_URL, "http://localhost/"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_UNIX_SOCKET_PATH, "/tmp/httpd.sock"); + curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/"); + + curl_easy_perform(curl); + } +} .fi If you are on Linux and somehow have a need for paths larger than 107 bytes, -you could use the proc filesystem to bypass the limitation: +you can use the proc filesystem to bypass the limitation: .nf int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY); diff --git a/external/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/external/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 index b6bb05cc8..75ea315fe 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UNRESTRICTED_AUTH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_UNRESTRICTED_AUTH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too @@ -58,12 +58,15 @@ redirecting to new hosts. HTTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); - curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1L); - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1L); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 b/external/curl/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 index e93532b4a..dd1e3cf47 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "August 31, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval @@ -52,27 +52,30 @@ CURL_UPKEEP_INTERVAL_DEFAULT (currently defined as 60000L, which is 60 seconds) All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - /* Make a connection to an HTTP/2 server. */ - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* Make a connection to an HTTP/2 server. */ + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* Set the interval to 30000ms / 30s */ - curl_easy_setopt(curl, CURLOPT_UPKEEP_INTERVAL_MS, 30000L); + /* Set the interval to 30000ms / 30s */ + curl_easy_setopt(curl, CURLOPT_UPKEEP_INTERVAL_MS, 30000L); - curl_easy_perform(curl); + curl_easy_perform(curl); - /* Perform more work here. */ + /* Perform more work here. */ - /* While the connection is being held open, curl_easy_upkeep() can be - called. If curl_easy_upkeep() is called and the time since the last - upkeep exceeds the interval, then an HTTP/2 PING is sent. */ - curl_easy_upkeep(curl); + /* While the connection is being held open, curl_easy_upkeep() can be + called. If curl_easy_upkeep() is called and the time since the last + upkeep exceeds the interval, then an HTTP/2 PING is sent. */ + curl_easy_upkeep(curl); - /* Perform more work here. */ + /* Perform more work here. */ - /* always cleanup */ - curl_easy_cleanup(curl); + /* always cleanup */ + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 index 027d96fad..c5704d6d6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UPLOAD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_UPLOAD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_UPLOAD \- data upload @@ -53,25 +53,41 @@ transfer, you must specify the size of the data with Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - /* we want to use our own read function */ - curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); +static size_t read_cb(char *ptr, size_t size, size_t nmemb, void *userdata) +{ + FILE *src = userdata; + /* copy as much data as possible into the 'ptr' buffer, but no more than + 'size' * 'nmemb' bytes! */ + size_t retcode = fread(ptr, size, nmemb, src); - /* enable uploading */ - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + return retcode; +} + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + FILE *src = fopen("local-file", "r"); + curl_off_t fsize; /* set this to the size of the input file */ + + /* we want to use our own read function */ + curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_cb); + + /* enable uploading */ + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - /* specify target */ - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile"); + /* specify target */ + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile"); - /* now specify which pointer to pass to our callback */ - curl_easy_setopt(curl, CURLOPT_READDATA, hd_src); + /* now specify which pointer to pass to our callback */ + curl_easy_setopt(curl, CURLOPT_READDATA, src); - /* Set the size of the file to upload */ - curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize); + /* Set the size of the file to upload */ + curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize); - /* Now run off and do what you have been told! */ - curl_easy_perform(curl); + /* Now run off and do what you have been told! */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 b/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 index 82bb2bbbd..3e5079bab 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_UPLOAD_BUFFERSIZE \- upload buffer size @@ -57,16 +57,20 @@ transfer as that may lead to unintended consequences. All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/foo.bin"); - /* ask libcurl to allocate a larger upload buffer */ - curl_easy_setopt(curl, CURLOPT_UPLOAD_BUFFERSIZE, 120000L); + /* ask libcurl to allocate a larger upload buffer */ + curl_easy_setopt(curl, CURLOPT_UPLOAD_BUFFERSIZE, 120000L); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_URL.3 b/external/curl/docs/libcurl/opts/CURLOPT_URL.3 index 678dbaad2..7bb6b355c 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_URL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_URL.3 @@ -23,7 +23,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_URL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_URL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_URL \- URL for this transfer @@ -114,11 +114,14 @@ User provided URLs can also be made to point to sites that redirect further on All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - - curl_easy_perform(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); + + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/external/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 index faf04efaa..d98b768d6 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USERAGENT 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_USERAGENT 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_USERAGENT \- HTTP user-agent header @@ -45,13 +45,16 @@ NULL, no User-Agent: header is used by default. HTTP, HTTPS .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0"); + curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0"); - curl_easy_perform(curl); + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 b/external/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 index 12f3a77e7..1ce86f547 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USERNAME 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_USERNAME 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_USERNAME \- user name to use in authentication @@ -67,15 +67,19 @@ blank Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_USERNAME, "clark"); + curl_easy_setopt(curl, CURLOPT_USERNAME, "clark"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 b/external/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 index bbee90325..d8383b87f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USERPWD 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_USERPWD 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_USERPWD \- user name and password to use in authentication @@ -75,15 +75,19 @@ NULL Most .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin"); - curl_easy_setopt(curl, CURLOPT_USERPWD, "clark:kent"); + curl_easy_setopt(curl, CURLOPT_USERPWD, "clark:kent"); - ret = curl_easy_perform(curl); + res = curl_easy_perform(curl); - curl_easy_cleanup(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/external/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 index c8fc3d265..b438ff7c9 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_USE_SSL 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_USE_SSL 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_USE_SSL \- request using SSL / TLS for the transfer @@ -55,15 +55,18 @@ CURLUSESSL_NONE FTP, SMTP, POP3, IMAP, LDAP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/file.ext"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/file.ext"); - /* require use of SSL for this, or fail */ - curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL); + /* require use of SSL for this, or fail */ + curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/external/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 index 8b13ddb18..fb8ba1081 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_VERBOSE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_VERBOSE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_VERBOSE \- verbose mode @@ -49,15 +49,18 @@ To also get all the protocol data sent and received, consider using the All .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); - /* ask libcurl to show us the verbose output */ - curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); + /* ask libcurl to show us the verbose output */ + curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); - /* Perform the request */ - curl_easy_perform(curl); + /* Perform the request */ + curl_easy_perform(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/external/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 index b40cbde86..74d8a0b6d 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_WILDCARDMATCH 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_WILDCARDMATCH 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_WILDCARDMATCH \- directory wildcard transfers @@ -87,19 +87,26 @@ Using the rules above, a file name pattern can be constructed: This feature is only supported for FTP download. .SH EXAMPLE .nf -/* initialization of easy handle */ -handle = curl_easy_init(); -/* turn on wildcard matching */ -curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L); +extern long begin_cb(struct curl_fileinfo *, void *, int); +extern long end_cb(void *ptr); -/* callback is called before download of concrete file started */ -curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + /* turn on wildcard matching */ + curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 1L); -/* callback is called after data from the file have been transferred */ -curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded); + /* callback is called before download of concrete file started */ + curl_easy_setopt(curl, CURLOPT_CHUNK_BGN_FUNCTION, begin_cb); -/* See more on https://curl.se/libcurl/c/ftp-wildcard.html */ + /* callback is called after data from the file have been transferred */ + curl_easy_setopt(curl, CURLOPT_CHUNK_END_FUNCTION, end_cb); + + /* See more on https://curl.se/libcurl/c/ftp-wildcard.html */ + } +} .fi .SH AVAILABILITY Added in 7.21.0 diff --git a/external/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 index 20884432a..cd1c33f2f 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_WRITEDATA 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_WRITEDATA 3 "September 27, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_WRITEDATA \- pointer passed to the write callback diff --git a/external/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 index 9915526b2..13553df8e 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_WRITEFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_WRITEFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_WRITEFUNCTION \- callback for writing received data @@ -64,7 +64,8 @@ that amount differs from the amount passed to your callback function, it signals an error condition to the library. This causes the transfer to get aborted and the libcurl function used returns \fICURLE_WRITE_ERROR\fP. -You can also abort the transfer by returning CURL_WRITEFUNC_ERROR. (7.87.0) +You can also abort the transfer by returning CURL_WRITEFUNC_ERROR (added in +7.87.0), which makes \fICURLE_WRITE_ERROR\fP get returned. If the callback function returns CURL_WRITEFUNC_PAUSE it pauses this transfer. See \fIcurl_easy_pause(3)\fP for further details. @@ -81,6 +82,9 @@ libcurl uses 'fwrite' as a callback by default. For all protocols .SH EXAMPLE .nf +#include /* for realloc */ +#include /* for memcpy */ + struct memory { char *response; size_t size; @@ -92,7 +96,7 @@ static size_t cb(void *data, size_t size, size_t nmemb, void *clientp) struct memory *mem = (struct memory *)clientp; char *ptr = realloc(mem->response, mem->size + realsize + 1); - if(ptr == NULL) + if(!ptr) return 0; /* out of memory! */ mem->response = ptr; @@ -103,25 +107,26 @@ static size_t cb(void *data, size_t size, size_t nmemb, void *clientp) return realsize; } -struct memory chunk = {0}; -CURLcode res; -CURL *curl_handle = curl_easy_init(); - -if (curl_handle) +int main(void) { - /* send all data to this function */ - curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb); + struct memory chunk = {0}; + CURLcode res; + CURL *curl = curl_easy_init(); + if(curl) { + /* send all data to this function */ + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cb); - /* we pass our 'chunk' struct to the callback function */ - curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk); + /* we pass our 'chunk' struct to the callback function */ + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); - /* send a request */ - res = curl_easy_perform(curl_handle); + /* send a request */ + res = curl_easy_perform(curl); - /* remember to free the buffer */ - free(chunk.response); + /* remember to free the buffer */ + free(chunk.response); - curl_easy_cleanup(curl_handle); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 b/external/curl/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 index 6e68ab376..8dc4a436b 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_WS_OPTIONS 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_WS_OPTIONS 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_WS_OPTIONS \- WebSocket behavior options @@ -53,13 +53,17 @@ application. WebSocket .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "ws://example.com/"); - /* tell curl we deal with all the WebSocket magic ourselves */ - curl_easy_setopt(curl, CURLOPT_WS_OPTIONS, (long)CURLWS_RAW_MODE); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "ws://example.com/"); + /* tell curl we deal with all the WebSocket magic ourselves */ + curl_easy_setopt(curl, CURLOPT_WS_OPTIONS, (long)CURLWS_RAW_MODE); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/external/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 index f28e29b4f..556116270 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_XFERINFODATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_XFERINFODATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_XFERINFODATA \- pointer passed to the progress callback @@ -43,30 +43,35 @@ The default value of this parameter is NULL. All .SH EXAMPLE .nf - struct progress { - char *private; - size_t size; - }; +struct progress { + char *private; + size_t size; +}; - static size_t progress_callback(void *clientp, - curl_off_t dltotal, - curl_off_t dlnow, - curl_off_t ultotal, - curl_off_t ulnow) - { - struct memory *progress = (struct progress *)clientp; +static size_t progress_cb(void *clientp, + curl_off_t dltotal, + curl_off_t dlnow, + curl_off_t ultotal, + curl_off_t ulnow) +{ + struct progress *memory = clientp; + printf("private ptr: %p\\n", memory->private); + /* use the values */ - /* use the values */ + return 0; /* all is good */ +} - return 0; /* all is good */ - } +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct progress data; - struct progress data; - - /* pass struct to callback */ - curl_easy_setopt(curl_handle, CURLOPT_XFERINFODATA, &data); - - curl_easy_setopt(curl_handle, CURLOPT_XFERINFOFUNCTION, progress_callback); + /* pass struct to callback */ + curl_easy_setopt(curl, CURLOPT_XFERINFODATA, &data); + curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, progress_cb); + } +} .fi .SH AVAILABILITY Added in 7.32.0 diff --git a/external/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/external/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 index f4ca255fd..2b9f2e8f2 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_XFERINFOFUNCTION 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_XFERINFOFUNCTION 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_XFERINFOFUNCTION \- progress meter callback @@ -82,30 +82,37 @@ users. All .SH EXAMPLE .nf - struct progress { - char *private; - size_t size; - }; - - static size_t progress_callback(void *clientp, - curl_off_t dltotal, - curl_off_t dlnow, - curl_off_t ultotal, - curl_off_t ulnow) - { - struct progress *memory = (struct progress *)clientp; - - /* use the values */ - - return 0; /* all is good */ - } - - struct progress data; - - /* pass struct to callback */ - curl_easy_setopt(curl_handle, CURLOPT_XFERINFODATA, &data); - - curl_easy_setopt(curl_handle, CURLOPT_XFERINFOFUNCTION, progress_callback); +struct progress { + char *private; + size_t size; +}; + +static size_t progress_callback(void *clientp, + curl_off_t dltotal, + curl_off_t dlnow, + curl_off_t ultotal, + curl_off_t ulnow) +{ + struct progress *memory = clientp; + printf("my ptr: %p\\n", memory->private); + + /* use the values */ + + return 0; /* all is good */ +} + +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + struct progress data; + + /* pass struct to callback */ + curl_easy_setopt(curl, CURLOPT_XFERINFODATA, &data); + + curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, progress_callback); + } +} .fi .SH AVAILABILITY Added in 7.32.0. This callback replaces \fICURLOPT_PROGRESSFUNCTION(3)\fP diff --git a/external/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/external/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 index 88d5a91a6..2ff94ef87 100644 --- a/external/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 +++ b/external/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH CURLOPT_XOAUTH2_BEARER 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLOPT_XOAUTH2_BEARER 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLOPT_XOAUTH2_BEARER \- OAuth 2.0 access token @@ -48,12 +48,16 @@ NULL HTTP, IMAP, LDAP, POP3 and SMTP .SH EXAMPLE .nf -CURL *curl = curl_easy_init(); -if(curl) { - curl_easy_setopt(curl, CURLOPT_URL, "pop3://example.com/"); - curl_easy_setopt(curl, CURLOPT_XOAUTH2_BEARER, "1ab9cb22ba269a7"); - ret = curl_easy_perform(curl); - curl_easy_cleanup(curl); +int main(void) +{ + CURL *curl = curl_easy_init(); + if(curl) { + CURLcode res; + curl_easy_setopt(curl, CURLOPT_URL, "pop3://example.com/"); + curl_easy_setopt(curl, CURLOPT_XOAUTH2_BEARER, "1ab9cb22ba269a7"); + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } } .fi .SH AVAILABILITY diff --git a/external/curl/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 b/external/curl/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 index b84034361..7a92490e2 100644 --- a/external/curl/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 +++ b/external/curl/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH CURLSHOPT_LOCKFUNC 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLSHOPT_LOCKFUNC 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLSHOPT_LOCKFUNC - mutex lock callback @@ -56,11 +56,17 @@ This pointer is not used by libcurl itself. All .SH EXAMPLE .nf +extern void mutex_lock(CURL *handle, curl_lock_data data, + curl_lock_access access, void *clientp); + +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_LOCKFUNC, mutex_lock); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/opts/CURLSHOPT_SHARE.3 b/external/curl/docs/libcurl/opts/CURLSHOPT_SHARE.3 index 701711b80..57dfcccb0 100644 --- a/external/curl/docs/libcurl/opts/CURLSHOPT_SHARE.3 +++ b/external/curl/docs/libcurl/opts/CURLSHOPT_SHARE.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH CURLSHOPT_SHARE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLSHOPT_SHARE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLSHOPT_SHARE - add data to share @@ -87,11 +87,14 @@ Added in 7.88.0 All .SH EXAMPLE .nf +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 b/external/curl/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 index 8a74d82bf..b21e624d7 100644 --- a/external/curl/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 +++ b/external/curl/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH CURLSHOPT_UNLOCKFUNC 3 "September 27, 2023" "ibcurl 8.4.0" libcurl +.TH CURLSHOPT_UNLOCKFUNC 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLSHOPT_UNLOCKFUNC - mutex unlock callback @@ -52,11 +52,16 @@ This pointer is not used by libcurl itself. All .SH EXAMPLE .nf +extern void mutex_unlock(CURL *, curl_lock_data, void *); + +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, mutex_unlock); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/opts/CURLSHOPT_UNSHARE.3 b/external/curl/docs/libcurl/opts/CURLSHOPT_UNSHARE.3 index a75072cde..f3d4de26a 100644 --- a/external/curl/docs/libcurl/opts/CURLSHOPT_UNSHARE.3 +++ b/external/curl/docs/libcurl/opts/CURLSHOPT_UNSHARE.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH CURLSHOPT_UNSHARE 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLSHOPT_UNSHARE 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLSHOPT_UNSHARE - remove data to share @@ -56,11 +56,14 @@ The Public Suffix List is no longer shared. All .SH EXAMPLE .nf +int main(void) +{ CURLSHcode sh; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_COOKIE); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/opts/CURLSHOPT_USERDATA.3 b/external/curl/docs/libcurl/opts/CURLSHOPT_USERDATA.3 index 89ddc4ac4..89597730c 100644 --- a/external/curl/docs/libcurl/opts/CURLSHOPT_USERDATA.3 +++ b/external/curl/docs/libcurl/opts/CURLSHOPT_USERDATA.3 @@ -21,7 +21,7 @@ .\" * SPDX-License-Identifier: curl .\" * .\" ************************************************************************** -.TH CURLSHOPT_USERDATA 3 "September 26, 2023" "ibcurl 8.4.0" libcurl +.TH CURLSHOPT_USERDATA 3 "December 04, 2023" "ibcurl 8.5.0" libcurl .SH NAME CURLSHOPT_USERDATA - pointer passed to the lock and unlock mutex callbacks @@ -39,12 +39,19 @@ the \fIclientp\fP argument to the callbacks set with All .SH EXAMPLE .nf +struct secrets { + void *custom; +}; + +int main(void) +{ CURLSHcode sh; struct secrets private_stuff; - share = curl_share_init(); + CURLSH *share = curl_share_init(); sh = curl_share_setopt(share, CURLSHOPT_USERDATA, &private_stuff); if(sh) printf("Error: %s\\n", curl_share_strerror(sh)); +} .fi .SH AVAILABILITY Added in 7.10 diff --git a/external/curl/docs/libcurl/symbols-in-versions b/external/curl/docs/libcurl/symbols-in-versions index 24a954ece..dc0e0629f 100644 --- a/external/curl/docs/libcurl/symbols-in-versions +++ b/external/curl/docs/libcurl/symbols-in-versions @@ -190,7 +190,7 @@ CURL_VERSION_ZSTD 7.72.0 CURL_WAIT_POLLIN 7.28.0 CURL_WAIT_POLLOUT 7.28.0 CURL_WAIT_POLLPRI 7.28.0 -CURL_WIN32 7.69.0 +CURL_WIN32 7.69.0 - 8.5.0 CURL_WRITEFUNC_ERROR 7.87.0 CURL_WRITEFUNC_PAUSE 7.18.0 CURL_ZERO_TERMINATED 7.56.0 @@ -212,12 +212,12 @@ CURLAUTH_NONE 7.10.6 CURLAUTH_NTLM 7.10.6 CURLAUTH_NTLM_WB 7.22.0 CURLAUTH_ONLY 7.21.3 -CURLCLOSEPOLICY_CALLBACK 7.7 -CURLCLOSEPOLICY_LEAST_RECENTLY_USED 7.7 -CURLCLOSEPOLICY_LEAST_TRAFFIC 7.7 -CURLCLOSEPOLICY_NONE 7.7 -CURLCLOSEPOLICY_OLDEST 7.7 -CURLCLOSEPOLICY_SLOWEST 7.7 +CURLCLOSEPOLICY_CALLBACK 7.7 7.16.1 +CURLCLOSEPOLICY_LEAST_RECENTLY_USED 7.7 7.16.1 +CURLCLOSEPOLICY_LEAST_TRAFFIC 7.7 7.16.1 +CURLCLOSEPOLICY_NONE 7.7 7.16.1 +CURLCLOSEPOLICY_OLDEST 7.7 7.16.1 +CURLCLOSEPOLICY_SLOWEST 7.7 7.16.1 CURLE_ABORTED_BY_CALLBACK 7.1 CURLE_AGAIN 7.18.2 CURLE_ALREADY_COMPLETE 7.7.2 7.8 diff --git a/external/curl/include/curl/curl.h b/external/curl/include/curl/curl.h index bf71d82fb..cc24c0506 100644 --- a/external/curl/include/curl/curl.h +++ b/external/curl/include/curl/curl.h @@ -53,28 +53,19 @@ #include "curlver.h" /* libcurl version defines */ #include "system.h" /* determine things run-time */ -/* - * Define CURL_WIN32 when build target is Win32 API - */ - -#if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && \ - !defined(__SYMBIAN32__) -#define CURL_WIN32 -#endif - #include #include -#if (defined(__FreeBSD__) && (__FreeBSD__ >= 2)) || defined(__MidnightBSD__) +#if defined(__FreeBSD__) || defined(__MidnightBSD__) /* Needed for __FreeBSD_version or __MidnightBSD_version symbol definition */ -#include +#include #endif /* The include stuff here below is mainly for time_t! */ #include #include -#if defined(CURL_WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__) #if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \ defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H)) /* The check above prevents the winsock2 inclusion if winsock.h already was @@ -88,7 +79,7 @@ libc5-based Linux systems. Only include it on systems that are known to require it! */ #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ - defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ + defined(__minix) || defined(__INTEGRITY) || \ defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \ (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \ @@ -97,11 +88,11 @@ #include #endif -#if !defined(CURL_WIN32) && !defined(_WIN32_WCE) +#if !defined(_WIN32) && !defined(_WIN32_WCE) #include #endif -#if !defined(CURL_WIN32) +#if !defined(_WIN32) #include #endif @@ -128,7 +119,7 @@ typedef void CURLSH; #ifdef CURL_STATICLIB # define CURL_EXTERN -#elif defined(CURL_WIN32) || defined(__SYMBIAN32__) || \ +#elif defined(_WIN32) || \ (__has_declspec_attribute(dllexport) && \ __has_declspec_attribute(dllimport)) # if defined(BUILDING_LIBCURL) @@ -144,7 +135,7 @@ typedef void CURLSH; #ifndef curl_socket_typedef /* socket typedef */ -#if defined(CURL_WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H) +#if defined(_WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H) typedef SOCKET curl_socket_t; #define CURL_SOCKET_BAD INVALID_SOCKET #else @@ -3220,6 +3211,7 @@ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask); #include "options.h" #include "header.h" #include "websockets.h" +#include "mprintf.h" /* the typechecker doesn't work in C++ (yet) */ #if defined(__GNUC__) && defined(__GNUC_MINOR__) && \ diff --git a/external/curl/include/curl/curlver.h b/external/curl/include/curl/curlver.h index 44e6070d6..73b37e8ff 100644 --- a/external/curl/include/curl/curlver.h +++ b/external/curl/include/curl/curlver.h @@ -32,12 +32,12 @@ /* This is the version number of the libcurl package from which this header file origins: */ -#define LIBCURL_VERSION "8.4.0" +#define LIBCURL_VERSION "8.5.0" /* The numeric version number is also available "in parts" by using these defines: */ #define LIBCURL_VERSION_MAJOR 8 -#define LIBCURL_VERSION_MINOR 4 +#define LIBCURL_VERSION_MINOR 5 #define LIBCURL_VERSION_PATCH 0 /* This is the numeric version of the libcurl version number, meant for easier @@ -59,7 +59,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 0x080400 +#define LIBCURL_VERSION_NUM 0x080500 /* * This is the date and time when the full source package was created. The @@ -70,7 +70,7 @@ * * "2007-11-23" */ -#define LIBCURL_TIMESTAMP "2023-10-11" +#define LIBCURL_TIMESTAMP "2023-12-06" #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z)) #define CURL_AT_LEAST_VERSION(x,y,z) \ diff --git a/external/curl/include/curl/system.h b/external/curl/include/curl/system.h index 97e0d037a..f2554b4a9 100644 --- a/external/curl/include/curl/system.h +++ b/external/curl/include/curl/system.h @@ -141,29 +141,6 @@ # define CURL_TYPEOF_CURL_SOCKLEN_T int # endif -#elif defined(__SYMBIAN32__) -# if defined(__EABI__) /* Treat all ARM compilers equally */ -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__CW32__) -# pragma longlong on -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__VC32__) -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int - #elif defined(macintosh) # include # if TYPE_LONGLONG @@ -201,9 +178,10 @@ # define CURL_TYPEOF_CURL_SOCKLEN_T int #elif defined(__MINGW32__) +# include # define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" +# define CURL_FORMAT_CURL_OFF_T PRId64 +# define CURL_FORMAT_CURL_OFF_TU PRIu64 # define CURL_SUFFIX_CURL_OFF_T LL # define CURL_SUFFIX_CURL_OFF_TU ULL # define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t @@ -370,7 +348,14 @@ /* ===================================== */ #elif defined(_MSC_VER) -# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64) +# if (_MSC_VER >= 1800) +# include +# define CURL_TYPEOF_CURL_OFF_T __int64 +# define CURL_FORMAT_CURL_OFF_T PRId64 +# define CURL_FORMAT_CURL_OFF_TU PRIu64 +# define CURL_SUFFIX_CURL_OFF_T i64 +# define CURL_SUFFIX_CURL_OFF_TU ui64 +# elif (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64) # define CURL_TYPEOF_CURL_OFF_T __int64 # define CURL_FORMAT_CURL_OFF_T "I64d" # define CURL_FORMAT_CURL_OFF_TU "I64u" diff --git a/external/curl/lib/CMakeLists.txt b/external/curl/lib/CMakeLists.txt index 6f849199c..51d52578e 100644 --- a/external/curl/lib/CMakeLists.txt +++ b/external/curl/lib/CMakeLists.txt @@ -47,20 +47,25 @@ if(USE_ARES) include_directories(${CARES_INCLUDE_DIR}) endif() -add_library( - curlu # special libcurlu library just for unittests - STATIC - EXCLUDE_FROM_ALL - ${HHEADERS} ${CSOURCES} -) -target_compile_definitions(curlu PUBLIC UNITTESTS CURL_STATICLIB) +if(BUILD_TESTING) + add_library( + curlu # special libcurlu library just for unittests + STATIC + EXCLUDE_FROM_ALL + ${HHEADERS} ${CSOURCES} + ) + target_compile_definitions(curlu PUBLIC UNITTESTS CURL_STATICLIB) +endif() if(ENABLE_CURLDEBUG) # We must compile these sources separately to avoid memdebug.h redefinitions # applying to them. set_source_files_properties(memdebug.c curl_multibyte.c PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) endif() -target_link_libraries(curlu PRIVATE ${CURL_LIBS}) + +if(BUILD_TESTING) + target_link_libraries(curlu PRIVATE ${CURL_LIBS}) +endif() transform_makefile_inc("Makefile.soname" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake") include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.soname.cmake) diff --git a/external/curl/lib/Makefile.am b/external/curl/lib/Makefile.am index 3c0a70912..1237c8e99 100644 --- a/external/curl/lib/Makefile.am +++ b/external/curl/lib/Makefile.am @@ -110,7 +110,7 @@ libcurl_la_CFLAGS_EXTRA += $(CFLAG_CURL_SYMBOL_HIDING) endif libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcurl_la_CPPFLAGS_EXTRA) -libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(LDFLAGS) $(LIBCURL_LIBS) +libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(CURL_LDFLAGS_LIB) $(LIBCURL_LIBS) libcurl_la_CFLAGS = $(AM_CFLAGS) $(libcurl_la_CFLAGS_EXTRA) libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS diff --git a/external/curl/lib/Makefile.in b/external/curl/lib/Makefile.in index 2d4cc3071..0f121319c 100644 --- a/external/curl/lib/Makefile.in +++ b/external/curl/lib/Makefile.in @@ -1486,7 +1486,7 @@ libcurl_la_LDFLAGS_EXTRA = $(am__append_1) $(am__append_2) \ $(am__append_3) $(am__append_4) $(am__append_5) libcurl_la_CFLAGS_EXTRA = $(am__append_9) libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcurl_la_CPPFLAGS_EXTRA) -libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(LDFLAGS) $(LIBCURL_LIBS) +libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(CURL_LDFLAGS_LIB) $(LIBCURL_LIBS) libcurl_la_CFLAGS = $(AM_CFLAGS) $(libcurl_la_CFLAGS_EXTRA) libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS) diff --git a/external/curl/lib/Makefile.mk b/external/curl/lib/Makefile.mk index 5071600b5..1513cafef 100644 --- a/external/curl/lib/Makefile.mk +++ b/external/curl/lib/Makefile.mk @@ -145,7 +145,10 @@ ifneq ($(findstring -rtmp,$(CFG)),) CPPFLAGS += -DUSE_LIBRTMP CPPFLAGS += -I"$(LIBRTMP_PATH)" _LDFLAGS += -L"$(LIBRTMP_PATH)/librtmp" - _LIBS += -lrtmp -lwinmm + _LIBS += -lrtmp + ifdef WIN32 + _LIBS += -lwinmm + endif ZLIB := 1 endif diff --git a/external/curl/lib/altsvc.c b/external/curl/lib/altsvc.c index 22b0b69c7..35450d6b1 100644 --- a/external/curl/lib/altsvc.c +++ b/external/curl/lib/altsvc.c @@ -97,7 +97,7 @@ static struct altsvc *altsvc_createid(const char *srchost, unsigned int srcport, unsigned int dstport) { - struct altsvc *as = calloc(sizeof(struct altsvc), 1); + struct altsvc *as = calloc(1, sizeof(struct altsvc)); size_t hlen; size_t dlen; if(!as) @@ -123,15 +123,13 @@ static struct altsvc *altsvc_createid(const char *srchost, dlen -= 2; } - as->src.host = Curl_memdup(srchost, hlen + 1); + as->src.host = Curl_strndup(srchost, hlen); if(!as->src.host) goto error; - as->src.host[hlen] = 0; - as->dst.host = Curl_memdup(dsthost, dlen + 1); + as->dst.host = Curl_strndup(dsthost, dlen); if(!as->dst.host) goto error; - as->dst.host[dlen] = 0; as->src.alpnid = srcalpnid; as->dst.alpnid = dstalpnid; @@ -301,7 +299,7 @@ static CURLcode altsvc_out(struct altsvc *as, FILE *fp) */ struct altsvcinfo *Curl_altsvc_init(void) { - struct altsvcinfo *asi = calloc(sizeof(struct altsvcinfo), 1); + struct altsvcinfo *asi = calloc(1, sizeof(struct altsvcinfo)); if(!asi) return NULL; Curl_llist_init(&asi->list, NULL); diff --git a/external/curl/lib/arpa_telnet.h b/external/curl/lib/arpa_telnet.h index de1373800..228b4466e 100644 --- a/external/curl/lib/arpa_telnet.h +++ b/external/curl/lib/arpa_telnet.h @@ -56,12 +56,14 @@ static const char * const telnetoptions[]= "TERM SPEED", "LFLOW", "LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION", "ENCRYPT", "NEW-ENVIRON" }; +#define CURL_TELOPT(x) telnetoptions[x] +#else +#define CURL_TELOPT(x) "" #endif #define CURL_TELOPT_MAXIMUM CURL_TELOPT_NEW_ENVIRON #define CURL_TELOPT_OK(x) ((x) <= CURL_TELOPT_MAXIMUM) -#define CURL_TELOPT(x) telnetoptions[x] #define CURL_NTELOPTS 40 @@ -103,7 +105,12 @@ static const char * const telnetcmds[]= #define CURL_TELCMD_OK(x) ( ((unsigned int)(x) >= CURL_TELCMD_MINIMUM) && \ ((unsigned int)(x) <= CURL_TELCMD_MAXIMUM) ) + +#ifndef CURL_DISABLE_VERBOSE_STRINGS #define CURL_TELCMD(x) telnetcmds[(x)-CURL_TELCMD_MINIMUM] +#else +#define CURL_TELCMD(x) "" +#endif #endif /* CURL_DISABLE_TELNET */ diff --git a/external/curl/lib/asyn-ares.c b/external/curl/lib/asyn-ares.c index e73e41dab..437c9337f 100644 --- a/external/curl/lib/asyn-ares.c +++ b/external/curl/lib/asyn-ares.c @@ -60,13 +60,13 @@ #include "progress.h" #include "timediff.h" -# if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \ - defined(WIN32) -# define CARES_STATICLIB -# endif -# include -# include /* really old c-ares didn't include this by - itself */ +#if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \ + defined(_WIN32) +# define CARES_STATICLIB +#endif +#include +#include /* really old c-ares didn't include this by + itself */ #if ARES_VERSION >= 0x010500 /* c-ares 1.5.0 or later, the callback proto is modified */ @@ -228,9 +228,9 @@ static void destroy_async_data(struct Curl_async *async); void Curl_resolver_cancel(struct Curl_easy *data) { DEBUGASSERT(data); - if(data->state.async.resolver) - ares_cancel((ares_channel)data->state.async.resolver); - destroy_async_data(&data->state.async); + if(data->conn->resolve_async.resolver) + ares_cancel((ares_channel)data->conn->resolve_async.resolver); + destroy_async_data(&data->conn->resolve_async); } /* @@ -278,14 +278,14 @@ int Curl_resolver_getsock(struct Curl_easy *data, struct timeval timebuf; struct timeval *timeout; long milli; - int max = ares_getsock((ares_channel)data->state.async.resolver, + int max = ares_getsock((ares_channel)data->conn->resolve_async.resolver, (ares_socket_t *)socks, MAX_SOCKSPEREASYHANDLE); maxtime.tv_sec = CURL_TIMEOUT_RESOLVE; maxtime.tv_usec = 0; - timeout = ares_timeout((ares_channel)data->state.async.resolver, &maxtime, - &timebuf); + timeout = ares_timeout((ares_channel)data->conn->resolve_async.resolver, + &maxtime, &timebuf); milli = (long)curlx_tvtoms(timeout); if(milli == 0) milli += 10; @@ -313,8 +313,8 @@ static int waitperform(struct Curl_easy *data, timediff_t timeout_ms) int i; int num = 0; - bitmask = ares_getsock((ares_channel)data->state.async.resolver, socks, - ARES_GETSOCK_MAXNUM); + bitmask = ares_getsock((ares_channel)data->conn->resolve_async.resolver, + socks, ARES_GETSOCK_MAXNUM); for(i = 0; i < ARES_GETSOCK_MAXNUM; i++) { pfd[i].events = 0; @@ -344,12 +344,12 @@ static int waitperform(struct Curl_easy *data, timediff_t timeout_ms) if(!nfds) /* Call ares_process() unconditionally here, even if we simply timed out above, as otherwise the ares name resolve won't timeout! */ - ares_process_fd((ares_channel)data->state.async.resolver, ARES_SOCKET_BAD, - ARES_SOCKET_BAD); + ares_process_fd((ares_channel)data->conn->resolve_async.resolver, + ARES_SOCKET_BAD, ARES_SOCKET_BAD); else { /* move through the descriptors and ask for processing on them */ for(i = 0; i < num; i++) - ares_process_fd((ares_channel)data->state.async.resolver, + ares_process_fd((ares_channel)data->conn->resolve_async.resolver, (pfd[i].revents & (POLLRDNORM|POLLIN))? pfd[i].fd:ARES_SOCKET_BAD, (pfd[i].revents & (POLLWRNORM|POLLOUT))? @@ -368,7 +368,7 @@ static int waitperform(struct Curl_easy *data, timediff_t timeout_ms) CURLcode Curl_resolver_is_resolved(struct Curl_easy *data, struct Curl_dns_entry **dns) { - struct thread_data *res = data->state.async.tdata; + struct thread_data *res = data->conn->resolve_async.tdata; CURLcode result = CURLE_OK; DEBUGASSERT(dns); @@ -397,7 +397,7 @@ CURLcode Curl_resolver_is_resolved(struct Curl_easy *data, ARES_ECANCELLED synchronously for all pending responses. This will leave us with res->num_pending == 0, which is perfect for the next block. */ - ares_cancel((ares_channel)data->state.async.resolver); + ares_cancel((ares_channel)data->conn->resolve_async.resolver); DEBUGASSERT(res->num_pending == 0); } #endif @@ -408,12 +408,12 @@ CURLcode Curl_resolver_is_resolved(struct Curl_easy *data, them */ res->temp_ai = NULL; - if(!data->state.async.dns) + if(!data->conn->resolve_async.dns) result = Curl_resolver_error(data); else - *dns = data->state.async.dns; + *dns = data->conn->resolve_async.dns; - destroy_async_data(&data->state.async); + destroy_async_data(&data->conn->resolve_async); } return result; @@ -464,7 +464,8 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data, store.tv_sec = itimeout/1000; store.tv_usec = (itimeout%1000)*1000; - tvp = ares_timeout((ares_channel)data->state.async.resolver, &store, &tv); + tvp = ares_timeout((ares_channel)data->conn->resolve_async.resolver, + &store, &tv); /* use the timeout period ares returned to us above if less than one second is left, otherwise just use 1000ms to make sure the progress @@ -478,7 +479,7 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data, return CURLE_UNRECOVERABLE_POLL; result = Curl_resolver_is_resolved(data, entry); - if(result || data->state.async.done) + if(result || data->conn->resolve_async.done) break; if(Curl_pgrsUpdate(data)) @@ -499,12 +500,12 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data, } if(result) /* failure, so we cancel the ares operation */ - ares_cancel((ares_channel)data->state.async.resolver); + ares_cancel((ares_channel)data->conn->resolve_async.resolver); /* Operation complete, if the lookup was successful we now have the entry in the cache. */ if(entry) - *entry = data->state.async.dns; + *entry = data->conn->resolve_async.dns; if(result) /* close the connection, since we can't return failure here without @@ -571,12 +572,13 @@ static void query_completed_cb(void *arg, /* (struct connectdata *) */ be valid so only defer it when we know the 'status' says its fine! */ return; - res = data->state.async.tdata; + res = data->conn->resolve_async.tdata; if(res) { res->num_pending--; if(CURL_ASYNC_SUCCESS == status) { - struct Curl_addrinfo *ai = Curl_he2ai(hostent, data->state.async.port); + struct Curl_addrinfo *ai = Curl_he2ai(hostent, + data->conn->resolve_async.port); if(ai) { compound_results(res, ai); } @@ -727,14 +729,16 @@ static void addrinfo_cb(void *arg, int status, int timeouts, struct ares_addrinfo *result) { struct Curl_easy *data = (struct Curl_easy *)arg; - struct thread_data *res = data->state.async.tdata; - (void)timeouts; - if(ARES_SUCCESS == status) { - res->temp_ai = ares2addr(result->nodes); - res->last_status = CURL_ASYNC_SUCCESS; - ares_freeaddrinfo(result); + if(data->conn) { + struct thread_data *res = data->conn->resolve_async.tdata; + (void)timeouts; + if(ARES_SUCCESS == status) { + res->temp_ai = ares2addr(result->nodes); + res->last_status = CURL_ASYNC_SUCCESS; + ares_freeaddrinfo(result); + } + res->num_pending--; } - res->num_pending--; } #endif @@ -755,15 +759,15 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data, size_t namelen = strlen(hostname); *waitp = 0; /* default to synchronous response */ - res = calloc(sizeof(struct thread_data) + namelen, 1); + res = calloc(1, sizeof(struct thread_data) + namelen); if(res) { strcpy(res->hostname, hostname); - data->state.async.hostname = res->hostname; - data->state.async.port = port; - data->state.async.done = FALSE; /* not done */ - data->state.async.status = 0; /* clear */ - data->state.async.dns = NULL; /* clear */ - data->state.async.tdata = res; + data->conn->resolve_async.hostname = res->hostname; + data->conn->resolve_async.port = port; + data->conn->resolve_async.done = FALSE; /* not done */ + data->conn->resolve_async.status = 0; /* clear */ + data->conn->resolve_async.dns = NULL; /* clear */ + data->conn->resolve_async.tdata = res; /* initial status - failed */ res->last_status = ARES_ENOTFOUND; @@ -793,8 +797,8 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data, hints.ai_flags = ARES_AI_NUMERICSERV; msnprintf(service, sizeof(service), "%d", port); res->num_pending = 1; - ares_getaddrinfo((ares_channel)data->state.async.resolver, hostname, - service, &hints, addrinfo_cb, data); + ares_getaddrinfo((ares_channel)data->conn->resolve_async.resolver, + hostname, service, &hints, addrinfo_cb, data); } #else @@ -804,10 +808,10 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data, res->num_pending = 2; /* areschannel is already setup in the Curl_open() function */ - ares_gethostbyname((ares_channel)data->state.async.resolver, hostname, - PF_INET, query_completed_cb, data); - ares_gethostbyname((ares_channel)data->state.async.resolver, hostname, - PF_INET6, query_completed_cb, data); + ares_gethostbyname((ares_channel)data->conn->resolve_async.resolver, + hostname, PF_INET, query_completed_cb, data); + ares_gethostbyname((ares_channel)data->conn->resolve_async.resolver, + hostname, PF_INET6, query_completed_cb, data); } else #endif @@ -815,7 +819,7 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data, res->num_pending = 1; /* areschannel is already setup in the Curl_open() function */ - ares_gethostbyname((ares_channel)data->state.async.resolver, + ares_gethostbyname((ares_channel)data->conn->resolve_async.resolver, hostname, PF_INET, query_completed_cb, data); } @@ -829,6 +833,7 @@ CURLcode Curl_set_dns_servers(struct Curl_easy *data, char *servers) { CURLcode result = CURLE_NOT_BUILT_IN; + ares_channel channel, lchannel = NULL; int ares_result; /* If server is NULL or empty, this would purge all DNS servers @@ -841,11 +846,23 @@ CURLcode Curl_set_dns_servers(struct Curl_easy *data, return CURLE_OK; #ifdef HAVE_CARES_SERVERS_CSV + if(data->conn) + channel = data->conn->resolve_async.resolver; + else { + /* we are called by setopt on a data without a connection (yet). In that + * case we set the value on a local instance for checking. + * The configured data options are set when the connection for this + * transfer is created. */ + result = Curl_resolver_init(data, (void **)&lchannel); + if(result) + goto out; + channel = lchannel; + } + #ifdef HAVE_CARES_PORTS_CSV - ares_result = ares_set_servers_ports_csv(data->state.async.resolver, - servers); + ares_result = ares_set_servers_ports_csv(channel, servers); #else - ares_result = ares_set_servers_csv(data->state.async.resolver, servers); + ares_result = ares_set_servers_csv(channel, servers); #endif switch(ares_result) { case ARES_SUCCESS: @@ -861,6 +878,9 @@ CURLcode Curl_set_dns_servers(struct Curl_easy *data, result = CURLE_BAD_FUNCTION_ARGUMENT; break; } +out: + if(lchannel) + Curl_resolver_cleanup(lchannel); #else /* too old c-ares version! */ (void)data; (void)(ares_result); @@ -872,11 +892,14 @@ CURLcode Curl_set_dns_interface(struct Curl_easy *data, const char *interf) { #ifdef HAVE_CARES_LOCAL_DEV - if(!interf) - interf = ""; - - ares_set_local_dev((ares_channel)data->state.async.resolver, interf); + if(data->conn) { + /* not a setopt test run, set the value */ + if(!interf) + interf = ""; + ares_set_local_dev((ares_channel)data->conn->resolve_async.resolver, + interf); + } return CURLE_OK; #else /* c-ares version too old! */ (void)data; @@ -900,8 +923,11 @@ CURLcode Curl_set_dns_local_ip4(struct Curl_easy *data, } } - ares_set_local_ip4((ares_channel)data->state.async.resolver, - ntohl(a4.s_addr)); + if(data->conn) { + /* not a setopt test run, set the value */ + ares_set_local_ip4((ares_channel)data->conn->resolve_async.resolver, + ntohl(a4.s_addr)); + } return CURLE_OK; #else /* c-ares version too old! */ @@ -927,7 +953,10 @@ CURLcode Curl_set_dns_local_ip6(struct Curl_easy *data, } } - ares_set_local_ip6((ares_channel)data->state.async.resolver, a6); + if(data->conn) { + /* not a setopt test run, set the value */ + ares_set_local_ip6((ares_channel)data->conn->resolve_async.resolver, a6); + } return CURLE_OK; #else /* c-ares version too old! */ diff --git a/external/curl/lib/asyn-thread.c b/external/curl/lib/asyn-thread.c index a2e294f8f..63414b617 100644 --- a/external/curl/lib/asyn-thread.c +++ b/external/curl/lib/asyn-thread.c @@ -136,7 +136,7 @@ static void destroy_async_data(struct Curl_async *); */ void Curl_resolver_cancel(struct Curl_easy *data) { - destroy_async_data(&data->state.async); + destroy_async_data(&data->conn->resolve_async); } /* This function is used to init a threaded resolve */ @@ -173,7 +173,7 @@ struct thread_data { static struct thread_sync_data *conn_thread_sync_data(struct Curl_easy *data) { - return &(data->state.async.tdata->tsd); + return &(data->conn->resolve_async.tdata->tsd); } /* Destroy resolver thread synchronization data */ @@ -196,7 +196,7 @@ void destroy_thread_sync_data(struct thread_sync_data *tsd) * 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]); + wakeup_close(tsd->sock_pair[1]); } #endif memset(tsd, 0, sizeof(*tsd)); @@ -233,8 +233,8 @@ int init_thread_sync_data(struct thread_data *td, Curl_mutex_init(tsd->mtx); #ifndef CURL_DISABLE_SOCKETPAIR - /* create socket pair, avoid AF_LOCAL since it doesn't build on Solaris */ - if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, &tsd->sock_pair[0]) < 0) { + /* create socket pair or pipe */ + if(wakeup_create(&tsd->sock_pair[0]) < 0) { tsd->sock_pair[0] = CURL_SOCKET_BAD; tsd->sock_pair[1] = CURL_SOCKET_BAD; goto err_exit; @@ -254,7 +254,7 @@ int init_thread_sync_data(struct thread_data *td, err_exit: #ifndef CURL_DISABLE_SOCKETPAIR if(tsd->sock_pair[0] != CURL_SOCKET_BAD) { - sclose(tsd->sock_pair[0]); + wakeup_close(tsd->sock_pair[0]); tsd->sock_pair[0] = CURL_SOCKET_BAD; } #endif @@ -320,7 +320,7 @@ static unsigned int CURL_STDCALL getaddrinfo_thread(void *arg) if(tsd->sock_pair[1] != CURL_SOCKET_BAD) { /* DNS has been resolved, signal client task */ buf[0] = 1; - if(swrite(tsd->sock_pair[1], buf, sizeof(buf)) < 0) { + if(wakeup_write(tsd->sock_pair[1], buf, sizeof(buf)) < 0) { /* update sock_erro to errno */ tsd->sock_error = SOCKERRNO; } @@ -428,9 +428,9 @@ static bool init_resolve_thread(struct Curl_easy *data, { struct thread_data *td = calloc(1, sizeof(struct thread_data)); int err = ENOMEM; - struct Curl_async *asp = &data->state.async; + struct Curl_async *asp = &data->conn->resolve_async; - data->state.async.tdata = td; + data->conn->resolve_async.tdata = td; if(!td) goto errno_exit; @@ -488,7 +488,7 @@ static CURLcode thread_wait_resolv(struct Curl_easy *data, CURLcode result = CURLE_OK; DEBUGASSERT(data); - td = data->state.async.tdata; + td = data->conn->resolve_async.tdata; DEBUGASSERT(td); DEBUGASSERT(td->thread_hnd != curl_thread_t_null); @@ -500,18 +500,18 @@ static CURLcode thread_wait_resolv(struct Curl_easy *data, else DEBUGASSERT(0); - data->state.async.done = TRUE; + data->conn->resolve_async.done = TRUE; if(entry) - *entry = data->state.async.dns; + *entry = data->conn->resolve_async.dns; - if(!data->state.async.dns && report) + if(!data->conn->resolve_async.dns && report) /* a name was not resolved, report error */ result = Curl_resolver_error(data); - destroy_async_data(&data->state.async); + destroy_async_data(&data->conn->resolve_async); - if(!data->state.async.dns && report) + if(!data->conn->resolve_async.dns && report) connclose(data->conn, "asynch resolve failed"); return result; @@ -524,7 +524,7 @@ static CURLcode thread_wait_resolv(struct Curl_easy *data, */ void Curl_resolver_kill(struct Curl_easy *data) { - struct thread_data *td = data->state.async.tdata; + struct thread_data *td = data->conn->resolve_async.tdata; /* If we're still resolving, we must wait for the threads to fully clean up, unfortunately. Otherwise, we can simply cancel to clean up any resolver @@ -563,7 +563,7 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data, CURLcode Curl_resolver_is_resolved(struct Curl_easy *data, struct Curl_dns_entry **entry) { - struct thread_data *td = data->state.async.tdata; + struct thread_data *td = data->conn->resolve_async.tdata; int done = 0; DEBUGASSERT(entry); @@ -581,13 +581,13 @@ CURLcode Curl_resolver_is_resolved(struct Curl_easy *data, if(done) { getaddrinfo_complete(data); - if(!data->state.async.dns) { + if(!data->conn->resolve_async.dns) { CURLcode result = Curl_resolver_error(data); - destroy_async_data(&data->state.async); + destroy_async_data(&data->conn->resolve_async); return result; } - destroy_async_data(&data->state.async); - *entry = data->state.async.dns; + destroy_async_data(&data->conn->resolve_async); + *entry = data->conn->resolve_async.dns; } else { /* poll for name lookup done with exponential backoff up to 250ms */ @@ -619,9 +619,9 @@ int Curl_resolver_getsock(struct Curl_easy *data, curl_socket_t *socks) int ret_val = 0; timediff_t milli; timediff_t ms; - struct resdata *reslv = (struct resdata *)data->state.async.resolver; + struct resdata *reslv = (struct resdata *)data->conn->resolve_async.resolver; #ifndef CURL_DISABLE_SOCKETPAIR - struct thread_data *td = data->state.async.tdata; + struct thread_data *td = data->conn->resolve_async.tdata; #else (void)socks; #endif @@ -662,7 +662,7 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data, int port, int *waitp) { - struct resdata *reslv = (struct resdata *)data->state.async.resolver; + struct resdata *reslv = (struct resdata *)data->conn->resolve_async.resolver; *waitp = 0; /* default to synchronous response */ @@ -691,7 +691,7 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data, { struct addrinfo hints; int pf = PF_INET; - struct resdata *reslv = (struct resdata *)data->state.async.resolver; + struct resdata *reslv = (struct resdata *)data->conn->resolve_async.resolver; *waitp = 0; /* default to synchronous response */ diff --git a/external/curl/lib/base64.c b/external/curl/lib/base64.c index 2a49b5acd..919eb6235 100644 --- a/external/curl/lib/base64.c +++ b/external/curl/lib/base64.c @@ -31,6 +31,7 @@ !defined(CURL_DISABLE_SMTP) || \ !defined(CURL_DISABLE_POP3) || \ !defined(CURL_DISABLE_IMAP) || \ + !defined(CURL_DISABLE_DIGEST_AUTH) || \ !defined(CURL_DISABLE_DOH) || defined(USE_SSL) || defined(BUILDING_CURL) #include "curl/curl.h" #include "warnless.h" diff --git a/external/curl/lib/c-hyper.c b/external/curl/lib/c-hyper.c index 5726ff1cc..787d6bbdb 100644 --- a/external/curl/lib/c-hyper.c +++ b/external/curl/lib/c-hyper.c @@ -22,6 +22,10 @@ * ***************************************************************************/ +/* Curl's integration with Hyper. This replaces certain functions in http.c, + * based on configuration #defines. This implementation supports HTTP/1.1 but + * not HTTP/2. + */ #include "curl_setup.h" #if !defined(CURL_DISABLE_HTTP) && defined(USE_HYPER) @@ -172,17 +176,15 @@ static int hyper_each_header(void *userdata, Curl_debug(data, CURLINFO_HEADER_IN, headp, len); - if(!data->state.hconnect || !data->set.suppress_connect_headers) { - writetype = CLIENTWRITE_HEADER; - if(data->state.hconnect) - writetype |= CLIENTWRITE_CONNECT; - if(data->req.httpcode/100 == 1) - writetype |= CLIENTWRITE_1XX; - result = Curl_client_write(data, writetype, headp, len); - if(result) { - data->state.hresult = CURLE_ABORTED_BY_CALLBACK; - return HYPER_ITER_BREAK; - } + writetype = CLIENTWRITE_HEADER; + if(data->state.hconnect) + writetype |= CLIENTWRITE_CONNECT; + if(data->req.httpcode/100 == 1) + writetype |= CLIENTWRITE_1XX; + result = Curl_client_write(data, writetype, headp, len); + if(result) { + data->state.hresult = CURLE_ABORTED_BY_CALLBACK; + return HYPER_ITER_BREAK; } result = Curl_bump_headersize(data, len, FALSE); @@ -201,7 +203,7 @@ static int hyper_body_chunk(void *userdata, const hyper_buf *chunk) struct SingleRequest *k = &data->req; CURLcode result = CURLE_OK; - if(0 == k->bodywrites++) { + if(0 == k->bodywrites) { bool done = FALSE; #if defined(USE_NTLM) struct connectdata *conn = data->conn; @@ -241,11 +243,6 @@ static int hyper_body_chunk(void *userdata, const hyper_buf *chunk) return HYPER_ITER_BREAK; } } - if(k->ignorebody) - return HYPER_ITER_CONTINUE; - if(0 == len) - return HYPER_ITER_CONTINUE; - Curl_debug(data, CURLINFO_DATA_IN, buf, len); result = Curl_client_write(data, CLIENTWRITE_BODY, buf, len); if(result) { @@ -253,12 +250,6 @@ static int hyper_body_chunk(void *userdata, const hyper_buf *chunk) return HYPER_ITER_BREAK; } - data->req.bytecount += len; - result = Curl_pgrsSetDownloadCounter(data, data->req.bytecount); - if(result) { - data->state.hresult = result; - return HYPER_ITER_BREAK; - } return HYPER_ITER_CONTINUE; } @@ -310,13 +301,14 @@ static CURLcode status_line(struct Curl_easy *data, Curl_debug(data, CURLINFO_HEADER_IN, Curl_dyn_ptr(&data->state.headerb), len); - if(!data->state.hconnect || !data->set.suppress_connect_headers) { - writetype = CLIENTWRITE_HEADER|CLIENTWRITE_STATUS; - result = Curl_client_write(data, writetype, - Curl_dyn_ptr(&data->state.headerb), len); - if(result) - return result; - } + writetype = CLIENTWRITE_HEADER|CLIENTWRITE_STATUS; + if(data->state.hconnect) + writetype |= CLIENTWRITE_CONNECT; + result = Curl_client_write(data, writetype, + Curl_dyn_ptr(&data->state.headerb), len); + if(result) + return result; + result = Curl_bump_headersize(data, len, FALSE); return result; } @@ -551,11 +543,9 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data, static CURLcode debug_request(struct Curl_easy *data, const char *method, - const char *path, - bool h2) + const char *path) { - char *req = aprintf("%s %s HTTP/%s\r\n", method, path, - h2?"2":"1.1"); + char *req = aprintf("%s %s HTTP/1.1\r\n", method, path); if(!req) return CURLE_OUT_OF_MEMORY; Curl_debug(data, CURLINFO_HEADER_OUT, req, strlen(req)); @@ -637,7 +627,6 @@ CURLcode Curl_hyper_header(struct Curl_easy *data, hyper_headers *headers, static CURLcode request_target(struct Curl_easy *data, struct connectdata *conn, const char *method, - bool h2, hyper_request *req) { CURLcode result; @@ -649,26 +638,13 @@ static CURLcode request_target(struct Curl_easy *data, if(result) return result; - if(h2 && hyper_request_set_uri_parts(req, - /* scheme */ - (uint8_t *)data->state.up.scheme, - strlen(data->state.up.scheme), - /* authority */ - (uint8_t *)conn->host.name, - strlen(conn->host.name), - /* path_and_query */ - (uint8_t *)Curl_dyn_uptr(&r), - Curl_dyn_len(&r))) { - failf(data, "error setting uri parts to hyper"); - result = CURLE_OUT_OF_MEMORY; - } - else if(!h2 && hyper_request_set_uri(req, (uint8_t *)Curl_dyn_uptr(&r), + if(hyper_request_set_uri(req, (uint8_t *)Curl_dyn_uptr(&r), Curl_dyn_len(&r))) { failf(data, "error setting uri to hyper"); result = CURLE_OUT_OF_MEMORY; } else - result = debug_request(data, method, Curl_dyn_ptr(&r), h2); + result = debug_request(data, method, Curl_dyn_ptr(&r)); Curl_dyn_free(&r); @@ -899,7 +875,6 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) const char *p_accept; /* Accept: string */ const char *method; Curl_HttpReq httpreq; - bool h2 = FALSE; const char *te = NULL; /* transfer-encoding */ hyper_code rc; @@ -907,6 +882,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) 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; + Curl_client_cleanup(data); infof(data, "Time for the Hyper dance"); memset(h, 0, sizeof(struct hyptransfer)); @@ -917,6 +893,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) Curl_http_method(data, conn, &method, &httpreq); + DEBUGASSERT(data->req.bytecount == 0); + /* setup the authentication headers */ { char *pq = NULL; @@ -972,8 +950,9 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) goto error; } if(conn->alpn == CURL_HTTP_VERSION_2) { - hyper_clientconn_options_http2(options, 1); - h2 = TRUE; + failf(data, "ALPN protocol h2 not supported with Hyper"); + result = CURLE_UNSUPPORTED_PROTOCOL; + goto error; } hyper_clientconn_options_set_preserve_header_case(options, 1); hyper_clientconn_options_set_preserve_header_order(options, 1); @@ -1024,7 +1003,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) } } else { - if(!h2 && !data->state.disableexpect) { + if(!data->state.disableexpect) { data->state.expect100header = TRUE; } } @@ -1035,7 +1014,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) goto error; } - result = request_target(data, conn, method, h2, req); + result = request_target(data, conn, method, req); if(result) goto error; @@ -1056,19 +1035,10 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) if(result) goto error; - if(!h2) { - if(data->state.aptr.host) { - result = Curl_hyper_header(data, headers, data->state.aptr.host); - if(result) - goto error; - } - } - else { - /* For HTTP/2, we show the Host: header as if we sent it, to make it look - like for HTTP/1 but it isn't actually sent since :authority is then - used. */ - Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host, - strlen(data->state.aptr.host)); + if(data->state.aptr.host) { + result = Curl_hyper_header(data, headers, data->state.aptr.host); + if(result) + goto error; } if(data->state.aptr.proxyuserpwd) { diff --git a/external/curl/lib/cf-h1-proxy.c b/external/curl/lib/cf-h1-proxy.c index 674802114..2e23b0b9f 100644 --- a/external/curl/lib/cf-h1-proxy.c +++ b/external/curl/lib/cf-h1-proxy.c @@ -374,7 +374,7 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf, curl_socket_t tunnelsocket = Curl_conn_cf_get_socket(cf, data); char *linep; size_t perline; - int error; + int error, writetype; #define SELECT_OK 0 #define SELECT_ERROR 1 @@ -386,12 +386,12 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf, return CURLE_OK; while(ts->keepon) { - ssize_t gotbytes; + ssize_t nread; char byte; /* Read one byte at a time to avoid a race condition. Wait at most one second before looping to ensure continuous pgrsUpdates. */ - result = Curl_read(data, tunnelsocket, &byte, 1, &gotbytes); + result = Curl_read(data, tunnelsocket, &byte, 1, &nread); if(result == CURLE_AGAIN) /* socket buffer drained, return */ return CURLE_OK; @@ -404,7 +404,7 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf, break; } - if(gotbytes <= 0) { + if(nread <= 0) { if(data->set.proxyauth && data->state.authproxy.avail && data->state.aptr.proxyuserpwd) { /* proxy auth was requested and there was proxy auth available, @@ -437,11 +437,11 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf, properly to know when the end of the body is reached */ CHUNKcode r; CURLcode extra; - ssize_t tookcareof = 0; + size_t consumed = 0; /* now parse the chunked piece of data so that we can properly tell when the stream ends */ - r = Curl_httpchunk_read(data, &byte, 1, &tookcareof, &extra); + r = Curl_httpchunk_read(data, &byte, 1, &consumed, &extra); if(r == CHUNKE_STOP) { /* we're done reading chunks! */ infof(data, "chunk reading DONE"); @@ -467,15 +467,12 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf, /* output debug if that is requested */ Curl_debug(data, CURLINFO_HEADER_IN, linep, perline); - if(!data->set.suppress_connect_headers) { - /* send the header to the callback */ - int writetype = CLIENTWRITE_HEADER | CLIENTWRITE_CONNECT | - (ts->headerlines == 1 ? CLIENTWRITE_STATUS : 0); - - result = Curl_client_write(data, writetype, linep, perline); - if(result) - return result; - } + /* send the header to the callback */ + writetype = CLIENTWRITE_HEADER | CLIENTWRITE_CONNECT | + (ts->headerlines == 1 ? CLIENTWRITE_STATUS : 0); + result = Curl_client_write(data, writetype, linep, perline); + if(result) + return result; result = Curl_bump_headersize(data, perline, TRUE); if(result) @@ -502,6 +499,7 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf, else if(ts->chunked_encoding) { CHUNKcode r; CURLcode extra; + size_t consumed = 0; infof(data, "Ignore chunked response-body"); @@ -516,8 +514,7 @@ static CURLcode recv_CONNECT_resp(struct Curl_cfilter *cf, /* now parse the chunked piece of data so that we can properly tell when the stream ends */ - r = Curl_httpchunk_read(data, linep + 1, 1, &gotbytes, - &extra); + r = Curl_httpchunk_read(data, linep + 1, 1, &consumed, &extra); if(r == CHUNKE_STOP) { /* we're done reading chunks! */ infof(data, "chunk reading DONE"); @@ -1038,31 +1035,29 @@ static CURLcode cf_h1_proxy_connect(struct Curl_cfilter *cf, return result; } -static int cf_h1_proxy_get_select_socks(struct Curl_cfilter *cf, +static void cf_h1_proxy_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { struct h1_tunnel_state *ts = cf->ctx; - int fds; - fds = cf->next->cft->get_select_socks(cf->next, data, socks); - if(!fds && cf->next->connected && !cf->connected) { + if(!cf->connected) { /* If we are not connected, but the filter "below" is * and not waiting on something, we are tunneling. */ - socks[0] = Curl_conn_cf_get_socket(cf, data); + curl_socket_t sock = Curl_conn_cf_get_socket(cf, data); if(ts) { /* when we've sent a CONNECT to a proxy, we should rather either wait for the socket to become readable to be able to get the response headers or if we're still sending the request, wait for write. */ - if(ts->CONNECT.sending == HTTPSEND_REQUEST) { - return GETSOCK_WRITESOCK(0); - } - return GETSOCK_READSOCK(0); + if(ts->CONNECT.sending == HTTPSEND_REQUEST) + Curl_pollset_set_out_only(data, ps, sock); + else + Curl_pollset_set_in_only(data, ps, sock); } - return GETSOCK_WRITESOCK(0); + else + Curl_pollset_set_out_only(data, ps, sock); } - return fds; } static void cf_h1_proxy_destroy(struct Curl_cfilter *cf, @@ -1093,7 +1088,7 @@ struct Curl_cftype Curl_cft_h1_proxy = { cf_h1_proxy_connect, cf_h1_proxy_close, Curl_cf_http_proxy_get_host, - cf_h1_proxy_get_select_socks, + cf_h1_proxy_adjust_pollset, Curl_cf_def_data_pending, Curl_cf_def_send, Curl_cf_def_recv, diff --git a/external/curl/lib/cf-h2-proxy.c b/external/curl/lib/cf-h2-proxy.c index dbc895d26..147acdc86 100644 --- a/external/curl/lib/cf-h2-proxy.c +++ b/external/curl/lib/cf-h2-proxy.c @@ -688,12 +688,8 @@ static int proxy_h2_on_frame_recv(nghttp2_session *session, * window and *assume* that we treat this like a WINDOW_UPDATE. Some * servers send an explicit WINDOW_UPDATE, but not all seem to do that. * To be safe, we UNHOLD a stream in order not to stall. */ - if((data->req.keepon & KEEP_SEND_HOLD) && - (data->req.keepon & KEEP_SEND)) { - data->req.keepon &= ~KEEP_SEND_HOLD; + if(CURL_WANT_SEND(data)) { drain_tunnel(cf, data, &ctx->tunnel); - CURL_TRC_CF(data, cf, "[%d] un-holding after SETTINGS", - stream_id); } break; case NGHTTP2_GOAWAY: @@ -727,12 +723,8 @@ static int proxy_h2_on_frame_recv(nghttp2_session *session, } break; case NGHTTP2_WINDOW_UPDATE: - if((data->req.keepon & KEEP_SEND_HOLD) && - (data->req.keepon & KEEP_SEND)) { - data->req.keepon &= ~KEEP_SEND_HOLD; - Curl_expire(data, 0, EXPIRE_RUN_NOW); - CURL_TRC_CF(data, cf, "[%d] unpausing after win update", - stream_id); + if(CURL_WANT_SEND(data)) { + drain_tunnel(cf, data, &ctx->tunnel); } break; default: @@ -909,7 +901,6 @@ static CURLcode proxy_h2_submit(int32_t *pstream_id, { struct dynhds h2_headers; nghttp2_nv *nva = NULL; - unsigned int i; int32_t stream_id = -1; size_t nheader; CURLcode result; @@ -920,22 +911,12 @@ static CURLcode proxy_h2_submit(int32_t *pstream_id, if(result) goto out; - nheader = Curl_dynhds_count(&h2_headers); - nva = malloc(sizeof(nghttp2_nv) * nheader); + nva = Curl_dynhds_to_nva(&h2_headers, &nheader); if(!nva) { result = CURLE_OUT_OF_MEMORY; goto out; } - for(i = 0; i < nheader; ++i) { - struct dynhds_entry *e = Curl_dynhds_getn(&h2_headers, i); - nva[i].name = (unsigned char *)e->name; - nva[i].namelen = e->namelen; - nva[i].value = (unsigned char *)e->value; - nva[i].valuelen = e->valuelen; - nva[i].flags = NGHTTP2_NV_FLAG_NONE; - } - if(read_callback) { nghttp2_data_provider data_prd; @@ -1187,25 +1168,31 @@ static bool cf_h2_proxy_data_pending(struct Curl_cfilter *cf, return cf->next? cf->next->cft->has_data_pending(cf->next, data) : FALSE; } -static int cf_h2_proxy_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *sock) +static void cf_h2_proxy_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) { struct cf_h2_proxy_ctx *ctx = cf->ctx; - int bitmap = GETSOCK_BLANK; - struct cf_call_data save; - - CF_DATA_SAVE(save, cf, data); - sock[0] = Curl_conn_cf_get_socket(cf, data); - bitmap |= GETSOCK_READSOCK(0); + curl_socket_t sock = Curl_conn_cf_get_socket(cf, data); + bool want_recv, want_send; - /* HTTP/2 layer wants to send data) AND there's a window to send data in */ - if(nghttp2_session_want_write(ctx->h2) && - nghttp2_session_get_remote_window_size(ctx->h2)) - bitmap |= GETSOCK_WRITESOCK(0); + Curl_pollset_check(data, ps, sock, &want_recv, &want_send); + if(ctx->h2 && (want_recv || want_send)) { + struct cf_call_data save; + bool c_exhaust, s_exhaust; - CF_DATA_RESTORE(cf, save); - return bitmap; + CF_DATA_SAVE(save, cf, data); + c_exhaust = !nghttp2_session_get_remote_window_size(ctx->h2); + s_exhaust = ctx->tunnel.stream_id >= 0 && + !nghttp2_session_get_stream_remote_window_size( + ctx->h2, ctx->tunnel.stream_id); + want_recv = (want_recv || c_exhaust || s_exhaust); + want_send = (!s_exhaust && want_send) || + (!c_exhaust && nghttp2_session_want_write(ctx->h2)); + + Curl_pollset_set(data, ps, sock, want_recv, want_send); + CF_DATA_RESTORE(cf, save); + } } static ssize_t h2_handle_tunnel_close(struct Curl_cfilter *cf, @@ -1542,7 +1529,7 @@ struct Curl_cftype Curl_cft_h2_proxy = { cf_h2_proxy_connect, cf_h2_proxy_close, Curl_cf_http_proxy_get_host, - cf_h2_proxy_get_select_socks, + cf_h2_proxy_adjust_pollset, cf_h2_proxy_data_pending, cf_h2_proxy_send, cf_h2_proxy_recv, @@ -1560,7 +1547,7 @@ CURLcode Curl_cf_h2_proxy_insert_after(struct Curl_cfilter *cf, CURLcode result = CURLE_OUT_OF_MEMORY; (void)data; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) goto out; diff --git a/external/curl/lib/cf-haproxy.c b/external/curl/lib/cf-haproxy.c index 39ac41571..1ca43937b 100644 --- a/external/curl/lib/cf-haproxy.c +++ b/external/curl/lib/cf-haproxy.c @@ -171,23 +171,17 @@ static void cf_haproxy_close(struct Curl_cfilter *cf, cf->next->cft->do_close(cf->next, data); } -static int cf_haproxy_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks) +static void cf_haproxy_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) { - int fds; - - fds = cf->next->cft->get_select_socks(cf->next, data, socks); - if(!fds && cf->next->connected && !cf->connected) { + if(cf->next->connected && !cf->connected) { /* If we are not connected, but the filter "below" is * and not waiting on something, we are sending. */ - socks[0] = Curl_conn_cf_get_socket(cf, data); - return GETSOCK_WRITESOCK(0); + Curl_pollset_set_out_only(data, ps, Curl_conn_cf_get_socket(cf, data)); } - return fds; } - struct Curl_cftype Curl_cft_haproxy = { "HAPROXY", 0, @@ -196,7 +190,7 @@ struct Curl_cftype Curl_cft_haproxy = { cf_haproxy_connect, cf_haproxy_close, Curl_cf_def_get_host, - cf_haproxy_get_select_socks, + cf_haproxy_adjust_pollset, Curl_cf_def_data_pending, Curl_cf_def_send, Curl_cf_def_recv, @@ -214,7 +208,7 @@ static CURLcode cf_haproxy_create(struct Curl_cfilter **pcf, CURLcode result; (void)data; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/lib/cf-https-connect.c b/external/curl/lib/cf-https-connect.c index be54aec74..b4f33c8e0 100644 --- a/external/curl/lib/cf-https-connect.c +++ b/external/curl/lib/cf-https-connect.c @@ -188,9 +188,6 @@ static CURLcode baller_connected(struct Curl_cfilter *cf, #endif infof(data, "using HTTP/2"); break; - case CURL_HTTP_VERSION_1_1: - infof(data, "using HTTP/1.1"); - break; default: infof(data, "using HTTP/1.x"); break; @@ -325,42 +322,25 @@ static CURLcode cf_hc_connect(struct Curl_cfilter *cf, return result; } -static int cf_hc_get_select_socks(struct Curl_cfilter *cf, +static void cf_hc_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { - struct cf_hc_ctx *ctx = cf->ctx; - size_t i, j, s; - int brc, rc = GETSOCK_BLANK; - curl_socket_t bsocks[MAX_SOCKSPEREASYHANDLE]; - struct cf_hc_baller *ballers[2]; - - if(cf->connected) - return cf->next->cft->get_select_socks(cf->next, data, socks); - - ballers[0] = &ctx->h3_baller; - ballers[1] = &ctx->h21_baller; - for(i = s = 0; i < sizeof(ballers)/sizeof(ballers[0]); i++) { - struct cf_hc_baller *b = ballers[i]; - if(!cf_hc_baller_is_active(b)) - continue; - brc = Curl_conn_cf_get_select_socks(b->cf, data, bsocks); - CURL_TRC_CF(data, cf, "get_selected_socks(%s) -> %x", b->name, brc); - if(!brc) - continue; - for(j = 0; j < MAX_SOCKSPEREASYHANDLE && s < MAX_SOCKSPEREASYHANDLE; ++j) { - if((brc & GETSOCK_WRITESOCK(j)) || (brc & GETSOCK_READSOCK(j))) { - socks[s] = bsocks[j]; - if(brc & GETSOCK_WRITESOCK(j)) - rc |= GETSOCK_WRITESOCK(s); - if(brc & GETSOCK_READSOCK(j)) - rc |= GETSOCK_READSOCK(s); - s++; - } + if(!cf->connected) { + struct cf_hc_ctx *ctx = cf->ctx; + struct cf_hc_baller *ballers[2]; + size_t i; + + ballers[0] = &ctx->h3_baller; + ballers[1] = &ctx->h21_baller; + for(i = 0; i < sizeof(ballers)/sizeof(ballers[0]); i++) { + struct cf_hc_baller *b = ballers[i]; + if(!cf_hc_baller_is_active(b)) + continue; + Curl_conn_cf_adjust_pollset(b->cf, data, ps); } + CURL_TRC_CF(data, cf, "adjust_pollset -> %d socks", ps->num); } - CURL_TRC_CF(data, cf, "get_selected_socks -> %x", rc); - return rc; } static bool cf_hc_data_pending(struct Curl_cfilter *cf, @@ -455,7 +435,7 @@ struct Curl_cftype Curl_cft_http_connect = { cf_hc_connect, cf_hc_close, Curl_cf_def_get_host, - cf_hc_get_select_socks, + cf_hc_adjust_pollset, cf_hc_data_pending, Curl_cf_def_send, Curl_cf_def_recv, @@ -475,7 +455,7 @@ static CURLcode cf_hc_create(struct Curl_cfilter **pcf, CURLcode result = CURLE_OK; (void)data; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/lib/cf-socket.c b/external/curl/lib/cf-socket.c index ce3f9e943..e42b4a87b 100644 --- a/external/curl/lib/cf-socket.c +++ b/external/curl/lib/cf-socket.c @@ -81,7 +81,7 @@ #include "memdebug.h" -#if defined(ENABLE_IPV6) && defined(IPV6_V6ONLY) && defined(WIN32) +#if defined(ENABLE_IPV6) && defined(IPV6_V6ONLY) && defined(_WIN32) /* It makes support for IPv4-mapped IPv6 addresses. * Linux kernel, NetBSD, FreeBSD and Darwin: default is off; * Windows Vista and later: default is on; @@ -102,11 +102,7 @@ static void tcpnodelay(struct Curl_easy *data, curl_socket_t sockfd) #if defined(TCP_NODELAY) curl_socklen_t onoff = (curl_socklen_t) 1; int level = IPPROTO_TCP; -#if !defined(CURL_DISABLE_VERBOSE_STRINGS) char buffer[STRERROR_LEN]; -#else - (void) data; -#endif if(setsockopt(sockfd, level, TCP_NODELAY, (void *)&onoff, sizeof(onoff)) < 0) @@ -127,6 +123,7 @@ static void nosigpipe(struct Curl_easy *data, curl_socket_t sockfd) { int onoff = 1; + (void)data; if(setsockopt(sockfd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&onoff, sizeof(onoff)) < 0) { #if !defined(CURL_DISABLE_VERBOSE_STRINGS) @@ -662,7 +659,7 @@ static bool verifyconnect(curl_socket_t sockfd, int *error) int err = 0; curl_socklen_t errSize = sizeof(err); -#ifdef WIN32 +#ifdef _WIN32 /* * In October 2003 we effectively nullified this function on Windows due to * problems with it using all CPU in multi-threaded cases. @@ -883,34 +880,14 @@ static void cf_socket_close(struct Curl_cfilter *cf, struct Curl_easy *data) struct cf_socket_ctx *ctx = cf->ctx; if(ctx && CURL_SOCKET_BAD != ctx->sock) { - if(ctx->active) { - /* We share our socket at cf->conn->sock[cf->sockindex] when active. - * If it is no longer there, someone has stolen (and hopefully - * closed it) and we just forget about it. - */ - if(ctx->sock == cf->conn->sock[cf->sockindex]) { - CURL_TRC_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T - ", active)", ctx->sock); - socket_close(data, cf->conn, !ctx->accepted, ctx->sock); - cf->conn->sock[cf->sockindex] = CURL_SOCKET_BAD; - } - else { - CURL_TRC_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T - ") no longer at conn->sock[], discarding", ctx->sock); - /* TODO: we do not want this to happen. Need to check which - * code is messing with conn->sock[cf->sockindex] */ - } - ctx->sock = CURL_SOCKET_BAD; - if(cf->sockindex == FIRSTSOCKET) - cf->conn->remote_addr = NULL; - } - else { - /* this is our local socket, we did never publish it */ - CURL_TRC_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T - ", not active)", ctx->sock); - socket_close(data, cf->conn, !ctx->accepted, ctx->sock); - ctx->sock = CURL_SOCKET_BAD; - } + CURL_TRC_CF(data, cf, "cf_socket_close(%" CURL_FORMAT_SOCKET_T + ")", ctx->sock); + if(ctx->sock == cf->conn->sock[cf->sockindex]) + cf->conn->sock[cf->sockindex] = CURL_SOCKET_BAD; + socket_close(data, cf->conn, !ctx->accepted, ctx->sock); + ctx->sock = CURL_SOCKET_BAD; + if(ctx->active && cf->sockindex == FIRSTSOCKET) + cf->conn->remote_addr = NULL; Curl_bufq_reset(&ctx->recvbuf); ctx->active = FALSE; ctx->buffer_recv = FALSE; @@ -1169,6 +1146,7 @@ static CURLcode cf_tcp_connect(struct Curl_cfilter *cf, *done = FALSE; /* a very negative world view is best */ if(ctx->sock == CURL_SOCKET_BAD) { + int error; result = cf_socket_open(cf, data); if(result) @@ -1181,8 +1159,12 @@ static CURLcode cf_tcp_connect(struct Curl_cfilter *cf, /* Connect TCP socket */ rc = do_connect(cf, data, cf->conn->bits.tcp_fastopen); + error = SOCKERRNO; + set_local_ip(cf, data); + CURL_TRC_CF(data, cf, "local address %s port %d...", + ctx->l_ip, ctx->l_port); if(-1 == rc) { - result = socket_connect_result(data, ctx->r_ip, SOCKERRNO); + result = socket_connect_result(data, ctx->r_ip, error); goto out; } } @@ -1220,13 +1202,14 @@ static CURLcode cf_tcp_connect(struct Curl_cfilter *cf, out: if(result) { if(ctx->error) { + set_local_ip(cf, data); data->state.os_errno = ctx->error; SET_SOCKERRNO(ctx->error); #ifndef CURL_DISABLE_VERBOSE_STRINGS { char buffer[STRERROR_LEN]; - infof(data, "connect to %s port %u failed: %s", - ctx->r_ip, ctx->r_port, + infof(data, "connect to %s port %u from %s port %d failed: %s", + ctx->r_ip, ctx->r_port, ctx->l_ip, ctx->l_port, Curl_strerror(ctx->error, buffer, sizeof(buffer))); } #endif @@ -1252,20 +1235,19 @@ static void cf_socket_get_host(struct Curl_cfilter *cf, *pport = cf->conn->port; } -static int cf_socket_get_select_socks(struct Curl_cfilter *cf, +static void cf_socket_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { struct cf_socket_ctx *ctx = cf->ctx; - int rc = GETSOCK_BLANK; - (void)data; - if(!cf->connected && ctx->sock != CURL_SOCKET_BAD) { - socks[0] = ctx->sock; - rc |= GETSOCK_WRITESOCK(0); + if(ctx->sock != CURL_SOCKET_BAD) { + if(!cf->connected) + Curl_pollset_set_out_only(data, ps, ctx->sock); + else + Curl_pollset_add_in(data, ps, ctx->sock); + CURL_TRC_CF(data, cf, "adjust_pollset -> %d socks", ps->num); } - - return rc; } static bool cf_socket_data_pending(struct Curl_cfilter *cf, @@ -1518,6 +1500,9 @@ static CURLcode cf_socket_cntrl(struct Curl_cfilter *cf, case CF_CTRL_DATA_SETUP: Curl_persistconninfo(data, cf->conn, ctx->l_ip, ctx->l_port); break; + case CF_CTRL_FORGET_SOCKET: + ctx->sock = CURL_SOCKET_BAD; + break; } return CURLE_OK; } @@ -1612,7 +1597,7 @@ struct Curl_cftype Curl_cft_tcp = { cf_tcp_connect, cf_socket_close, cf_socket_get_host, - cf_socket_get_select_socks, + cf_socket_adjust_pollset, cf_socket_data_pending, cf_socket_send, cf_socket_recv, @@ -1635,7 +1620,7 @@ CURLcode Curl_cf_tcp_create(struct Curl_cfilter **pcf, (void)data; (void)conn; DEBUGASSERT(transport == TRNSPRT_TCP); - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; @@ -1742,7 +1727,7 @@ struct Curl_cftype Curl_cft_udp = { cf_udp_connect, cf_socket_close, cf_socket_get_host, - cf_socket_get_select_socks, + cf_socket_adjust_pollset, cf_socket_data_pending, cf_socket_send, cf_socket_recv, @@ -1765,7 +1750,7 @@ CURLcode Curl_cf_udp_create(struct Curl_cfilter **pcf, (void)data; (void)conn; DEBUGASSERT(transport == TRNSPRT_UDP || transport == TRNSPRT_QUIC); - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; @@ -1793,7 +1778,7 @@ struct Curl_cftype Curl_cft_unix = { cf_tcp_connect, cf_socket_close, cf_socket_get_host, - cf_socket_get_select_socks, + cf_socket_adjust_pollset, cf_socket_data_pending, cf_socket_send, cf_socket_recv, @@ -1816,7 +1801,7 @@ CURLcode Curl_cf_unix_create(struct Curl_cfilter **pcf, (void)data; (void)conn; DEBUGASSERT(transport == TRNSPRT_UNIX); - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; @@ -1857,7 +1842,7 @@ struct Curl_cftype Curl_cft_tcp_accept = { cf_tcp_accept_connect, cf_socket_close, cf_socket_get_host, /* TODO: not accurate */ - cf_socket_get_select_socks, + cf_socket_adjust_pollset, cf_socket_data_pending, cf_socket_send, cf_socket_recv, @@ -1879,7 +1864,7 @@ CURLcode Curl_conn_tcp_listen_set(struct Curl_easy *data, Curl_conn_cf_discard_all(data, conn, sockindex); DEBUGASSERT(conn->sock[sockindex] == CURL_SOCKET_BAD); - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/lib/cfilters.c b/external/curl/lib/cfilters.c index f74eb4003..e78ecd71d 100644 --- a/external/curl/lib/cfilters.c +++ b/external/curl/lib/cfilters.c @@ -33,6 +33,7 @@ #include "sockaddr.h" /* required for Curl_sockaddr_storage */ #include "multiif.h" #include "progress.h" +#include "select.h" #include "warnless.h" /* The last 3 #include files should be in this order */ @@ -70,12 +71,14 @@ void Curl_cf_def_get_host(struct Curl_cfilter *cf, struct Curl_easy *data, } } -int Curl_cf_def_get_select_socks(struct Curl_cfilter *cf, +void Curl_cf_def_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { - return cf->next? - cf->next->cft->get_select_socks(cf->next, data, socks) : 0; + /* NOP */ + (void)cf; + (void)data; + (void)ps; } bool Curl_cf_def_data_pending(struct Curl_cfilter *cf, @@ -212,7 +215,7 @@ CURLcode Curl_cf_create(struct Curl_cfilter **pcf, CURLcode result = CURLE_OUT_OF_MEMORY; DEBUGASSERT(cft); - cf = calloc(sizeof(*cf), 1); + cf = calloc(1, sizeof(*cf)); if(!cf) goto out; @@ -303,15 +306,6 @@ void Curl_conn_cf_close(struct Curl_cfilter *cf, struct Curl_easy *data) cf->cft->do_close(cf, data); } -int Curl_conn_cf_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks) -{ - if(cf) - return cf->cft->get_select_socks(cf, data, socks); - return 0; -} - ssize_t Curl_conn_cf_send(struct Curl_cfilter *cf, struct Curl_easy *data, const void *buf, size_t len, CURLcode *err) { @@ -433,22 +427,31 @@ bool Curl_conn_data_pending(struct Curl_easy *data, int sockindex) return FALSE; } -int Curl_conn_get_select_socks(struct Curl_easy *data, int sockindex, - curl_socket_t *socks) +void Curl_conn_cf_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) +{ + /* Get the lowest not-connected filter, if there are any */ + while(cf && !cf->connected && cf->next && !cf->next->connected) + cf = cf->next; + /* From there on, give all filters a chance to adjust the pollset. + * Lower filters are called later, so they may override */ + while(cf) { + cf->cft->adjust_pollset(cf, data, ps); + cf = cf->next; + } +} + +void Curl_conn_adjust_pollset(struct Curl_easy *data, + struct easy_pollset *ps) { - struct Curl_cfilter *cf; + int i; DEBUGASSERT(data); DEBUGASSERT(data->conn); - cf = data->conn->cfilter[sockindex]; - - /* if the next one is not yet connected, that's the one we want */ - while(cf && cf->next && !cf->next->connected) - cf = cf->next; - if(cf) { - return cf->cft->get_select_socks(cf, data, socks); + for(i = 0; i < 2; ++i) { + Curl_conn_cf_adjust_pollset(data->conn->cfilter[i], data, ps); } - return GETSOCK_BLANK; } void Curl_conn_get_host(struct Curl_easy *data, int sockindex, @@ -524,6 +527,18 @@ curl_socket_t Curl_conn_get_socket(struct Curl_easy *data, int sockindex) return data->conn? data->conn->sock[sockindex] : CURL_SOCKET_BAD; } +void Curl_conn_forget_socket(struct Curl_easy *data, int sockindex) +{ + if(data->conn) { + struct Curl_cfilter *cf = data->conn->cfilter[sockindex]; + if(cf) + (void)Curl_conn_cf_cntrl(cf, data, TRUE, + CF_CTRL_FORGET_SOCKET, 0, NULL); + fake_sclose(data->conn->sock[sockindex]); + data->conn->sock[sockindex] = CURL_SOCKET_BAD; + } +} + static CURLcode cf_cntrl_all(struct connectdata *conn, struct Curl_easy *data, bool ignore_result, @@ -646,3 +661,142 @@ size_t Curl_conn_get_max_concurrent(struct Curl_easy *data, &n, NULL) : CURLE_UNKNOWN_OPTION; return (result || n <= 0)? 1 : (size_t)n; } + + +void Curl_pollset_reset(struct Curl_easy *data, + struct easy_pollset *ps) +{ + size_t i; + (void)data; + memset(ps, 0, sizeof(*ps)); + for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++) + ps->sockets[i] = CURL_SOCKET_BAD; +} + +/** + * + */ +void Curl_pollset_change(struct Curl_easy *data, + struct easy_pollset *ps, curl_socket_t sock, + int add_flags, int remove_flags) +{ + unsigned int i; + + (void)data; + DEBUGASSERT(VALID_SOCK(sock)); + if(!VALID_SOCK(sock)) + return; + + DEBUGASSERT(add_flags <= (CURL_POLL_IN|CURL_POLL_OUT)); + DEBUGASSERT(remove_flags <= (CURL_POLL_IN|CURL_POLL_OUT)); + DEBUGASSERT((add_flags&remove_flags) == 0); /* no overlap */ + for(i = 0; i < ps->num; ++i) { + if(ps->sockets[i] == sock) { + ps->actions[i] &= (unsigned char)(~remove_flags); + ps->actions[i] |= (unsigned char)add_flags; + /* all gone? remove socket */ + if(!ps->actions[i]) { + if((i + 1) < ps->num) { + memmove(&ps->sockets[i], &ps->sockets[i + 1], + (ps->num - (i + 1)) * sizeof(ps->sockets[0])); + memmove(&ps->actions[i], &ps->actions[i + 1], + (ps->num - (i + 1)) * sizeof(ps->actions[0])); + } + --ps->num; + } + return; + } + } + /* not present */ + if(add_flags) { + /* Having more SOCKETS per easy handle than what is defined + * is a programming error. This indicates that we need + * to raise this limit, making easy_pollset larger. + * Since we use this in tight loops, we do not want to make + * the pollset dynamic unnecessarily. + * The current maximum in practise is HTTP/3 eyeballing where + * we have up to 4 sockets involved in connection setup. + */ + DEBUGASSERT(i < MAX_SOCKSPEREASYHANDLE); + if(i < MAX_SOCKSPEREASYHANDLE) { + ps->sockets[i] = sock; + ps->actions[i] = (unsigned char)add_flags; + ps->num = i + 1; + } + } +} + +void Curl_pollset_set(struct Curl_easy *data, + struct easy_pollset *ps, curl_socket_t sock, + bool do_in, bool do_out) +{ + Curl_pollset_change(data, ps, sock, + (do_in?CURL_POLL_IN:0)|(do_out?CURL_POLL_OUT:0), + (!do_in?CURL_POLL_IN:0)|(!do_out?CURL_POLL_OUT:0)); +} + +static void ps_add(struct Curl_easy *data, struct easy_pollset *ps, + int bitmap, curl_socket_t *socks) +{ + if(bitmap) { + int i; + for(i = 0; i < MAX_SOCKSPEREASYHANDLE; ++i) { + if(!(bitmap & GETSOCK_MASK_RW(i)) || !VALID_SOCK((socks[i]))) { + break; + } + if(bitmap & GETSOCK_READSOCK(i)) { + if(bitmap & GETSOCK_WRITESOCK(i)) + Curl_pollset_add_inout(data, ps, socks[i]); + else + /* is READ, since we checked MASK_RW above */ + Curl_pollset_add_in(data, ps, socks[i]); + } + else + Curl_pollset_add_out(data, ps, socks[i]); + } + } +} + +void Curl_pollset_add_socks(struct Curl_easy *data, + struct easy_pollset *ps, + int (*get_socks_cb)(struct Curl_easy *data, + struct connectdata *conn, + curl_socket_t *socks)) +{ + curl_socket_t socks[MAX_SOCKSPEREASYHANDLE]; + int bitmap; + + DEBUGASSERT(data->conn); + bitmap = get_socks_cb(data, data->conn, socks); + ps_add(data, ps, bitmap, socks); +} + +void Curl_pollset_add_socks2(struct Curl_easy *data, + struct easy_pollset *ps, + int (*get_socks_cb)(struct Curl_easy *data, + curl_socket_t *socks)) +{ + curl_socket_t socks[MAX_SOCKSPEREASYHANDLE]; + int bitmap; + + bitmap = get_socks_cb(data, socks); + ps_add(data, ps, bitmap, socks); +} + +void Curl_pollset_check(struct Curl_easy *data, + struct easy_pollset *ps, curl_socket_t sock, + bool *pwant_read, bool *pwant_write) +{ + unsigned int i; + + (void)data; + DEBUGASSERT(VALID_SOCK(sock)); + for(i = 0; i < ps->num; ++i) { + if(ps->sockets[i] == sock) { + *pwant_read = !!(ps->actions[i] & CURL_POLL_IN); + *pwant_write = !!(ps->actions[i] & CURL_POLL_OUT); + return; + } + } + *pwant_read = *pwant_write = FALSE; +} diff --git a/external/curl/lib/cfilters.h b/external/curl/lib/cfilters.h index 2c65264d9..09a3f162a 100644 --- a/external/curl/lib/cfilters.h +++ b/external/curl/lib/cfilters.h @@ -60,14 +60,34 @@ typedef void Curl_cft_get_host(struct Curl_cfilter *cf, const char **pdisplay_host, int *pport); -/* Filters may return sockets and fdset flags they are waiting for. - * The passes array has room for up to MAX_SOCKSPEREASYHANDLE sockets. - * @return read/write fdset for index in socks - * or GETSOCK_BLANK when nothing to wait on +struct easy_pollset; + +/* Passing in an easy_pollset for monitoring of sockets, let + * filters add or remove sockets actions (CURL_POLL_OUT, CURL_POLL_IN). + * This may add a socket or, in case no actions remain, remove + * a socket from the set. + * + * Filter implementations need to call filters "below" *after* they have + * made their adjustments. This allows lower filters to override "upper" + * actions. If a "lower" filter is unable to write, it needs to be able + * to disallow POLL_OUT. + * + * A filter without own restrictions/preferences should not modify + * the pollset. Filters, whose filter "below" is not connected, should + * also do no adjustments. + * + * Examples: a TLS handshake, while ongoing, might remove POLL_IN + * when it needs to write, or vice versa. A HTTP/2 filter might remove + * POLL_OUT when a stream window is exhausted and a WINDOW_UPDATE needs + * to be received first and add instead POLL_IN. + * + * @param cf the filter to ask + * @param data the easy handle the pollset is about + * @param ps the pollset (inout) for the easy handle */ -typedef int Curl_cft_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks); +typedef void Curl_cft_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps); typedef bool Curl_cft_data_pending(struct Curl_cfilter *cf, const struct Curl_easy *data); @@ -110,6 +130,7 @@ typedef CURLcode Curl_cft_conn_keep_alive(struct Curl_cfilter *cf, #define CF_CTRL_DATA_DONE_SEND 8 /* 0 NULL ignored */ /* update conn info at connection and data */ #define CF_CTRL_CONN_INFO_UPDATE (256+0) /* 0 NULL ignored */ +#define CF_CTRL_FORGET_SOCKET (256+1) /* 0 NULL ignored */ /** * Handle event/control for the filter. @@ -171,7 +192,7 @@ struct Curl_cftype { Curl_cft_connect *do_connect; /* establish connection */ Curl_cft_close *do_close; /* close conn */ Curl_cft_get_host *get_host; /* host filter talks to */ - Curl_cft_get_select_socks *get_select_socks;/* sockets to select on */ + Curl_cft_adjust_pollset *adjust_pollset; /* adjust transfer poll set */ Curl_cft_data_pending *has_data_pending;/* conn has data pending */ Curl_cft_send *do_send; /* send data */ Curl_cft_recv *do_recv; /* receive data */ @@ -200,9 +221,9 @@ void Curl_cf_def_destroy_this(struct Curl_cfilter *cf, void Curl_cf_def_get_host(struct Curl_cfilter *cf, struct Curl_easy *data, const char **phost, const char **pdisplay_host, int *pport); -int Curl_cf_def_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks); +void Curl_cf_def_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps); bool Curl_cf_def_data_pending(struct Curl_cfilter *cf, const struct Curl_easy *data); ssize_t Curl_cf_def_send(struct Curl_cfilter *cf, struct Curl_easy *data, @@ -279,9 +300,6 @@ CURLcode Curl_conn_cf_connect(struct Curl_cfilter *cf, struct Curl_easy *data, bool blocking, bool *done); void Curl_conn_cf_close(struct Curl_cfilter *cf, struct Curl_easy *data); -int Curl_conn_cf_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks); ssize_t Curl_conn_cf_send(struct Curl_cfilter *cf, struct Curl_easy *data, const void *buf, size_t len, CURLcode *err); ssize_t Curl_conn_cf_recv(struct Curl_cfilter *cf, struct Curl_easy *data, @@ -364,11 +382,22 @@ bool Curl_conn_data_pending(struct Curl_easy *data, curl_socket_t Curl_conn_get_socket(struct Curl_easy *data, int sockindex); /** - * Get any select fd flags and the socket filters at chain `sockindex` - * at connection `conn` might be waiting for. + * Tell filters to forget about the socket at sockindex. */ -int Curl_conn_get_select_socks(struct Curl_easy *data, int sockindex, - curl_socket_t *socks); +void Curl_conn_forget_socket(struct Curl_easy *data, int sockindex); + +/** + * Adjust the pollset for the filter chain startgin at `cf`. + */ +void Curl_conn_cf_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps); + +/** + * Adjust pollset from filters installed at transfer's connection. + */ +void Curl_conn_adjust_pollset(struct Curl_easy *data, + struct easy_pollset *ps); /** * Receive data through the filter chain at `sockindex` for connection @@ -468,6 +497,54 @@ size_t Curl_conn_get_max_concurrent(struct Curl_easy *data, int sockindex); +void Curl_pollset_reset(struct Curl_easy *data, + struct easy_pollset *ps); + +/* Change the poll flags (CURL_POLL_IN/CURL_POLL_OUT) to the poll set for + * socket `sock`. If the socket is not already part of the poll set, it + * will be added. + * If the socket is present and all poll flags are cleared, it will be removed. + */ +void Curl_pollset_change(struct Curl_easy *data, + struct easy_pollset *ps, curl_socket_t sock, + int add_flags, int remove_flags); + +void Curl_pollset_set(struct Curl_easy *data, + struct easy_pollset *ps, curl_socket_t sock, + bool do_in, bool do_out); + +#define Curl_pollset_add_in(data, ps, sock) \ + Curl_pollset_change((data), (ps), (sock), CURL_POLL_IN, 0) +#define Curl_pollset_add_out(data, ps, sock) \ + Curl_pollset_change((data), (ps), (sock), CURL_POLL_OUT, 0) +#define Curl_pollset_add_inout(data, ps, sock) \ + Curl_pollset_change((data), (ps), (sock), \ + CURL_POLL_IN|CURL_POLL_OUT, 0) +#define Curl_pollset_set_in_only(data, ps, sock) \ + Curl_pollset_change((data), (ps), (sock), \ + CURL_POLL_IN, CURL_POLL_OUT) +#define Curl_pollset_set_out_only(data, ps, sock) \ + Curl_pollset_change((data), (ps), (sock), \ + CURL_POLL_OUT, CURL_POLL_IN) + +void Curl_pollset_add_socks(struct Curl_easy *data, + struct easy_pollset *ps, + int (*get_socks_cb)(struct Curl_easy *data, + struct connectdata *conn, + curl_socket_t *socks)); +void Curl_pollset_add_socks2(struct Curl_easy *data, + struct easy_pollset *ps, + int (*get_socks_cb)(struct Curl_easy *data, + curl_socket_t *socks)); + +/** + * Check if the pollset, as is, wants to read and/or write regarding + * the given socket. + */ +void Curl_pollset_check(struct Curl_easy *data, + struct easy_pollset *ps, curl_socket_t sock, + bool *pwant_read, bool *pwant_write); + /** * Types and macros used to keep the current easy handle in filter calls, * allowing for nested invocations. See #10336. diff --git a/external/curl/lib/config-amigaos.h b/external/curl/lib/config-amigaos.h index 8f4d3e6c3..d168b446b 100644 --- a/external/curl/lib/config-amigaos.h +++ b/external/curl/lib/config-amigaos.h @@ -32,7 +32,6 @@ #define HAVE_ARPA_INET_H 1 #define HAVE_CLOSESOCKET_CAMEL 1 -#define HAVE_INTTYPES_H 1 #define HAVE_IOCTLSOCKET_CAMEL 1 #define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1 #define HAVE_LONGLONG 1 diff --git a/external/curl/lib/config-dos.h b/external/curl/lib/config-dos.h index 550c410a1..c6fbba796 100644 --- a/external/curl/lib/config-dos.h +++ b/external/curl/lib/config-dos.h @@ -122,7 +122,6 @@ #define HAVE_SIGSETJMP 1 #define HAVE_SYS_TIME_H 1 #define HAVE_TERMIOS_H 1 - #define HAVE_VARIADIC_MACROS_GCC 1 #elif defined(__HIGHC__) #define HAVE_SYS_TIME_H 1 diff --git a/external/curl/lib/config-os400.h b/external/curl/lib/config-os400.h index e9a628863..357a36458 100644 --- a/external/curl/lib/config-os400.h +++ b/external/curl/lib/config-os400.h @@ -104,9 +104,6 @@ /* Define if you have the `timeval' struct. */ #define HAVE_STRUCT_TIMEVAL -/* Define if you have the header file. */ -#define HAVE_INTTYPES_H - /* Define if you have the header file. */ #undef HAVE_IO_H @@ -152,9 +149,6 @@ /* Define if you have the `socket' function. */ #define HAVE_SOCKET -/* Define if you have the header file. */ -#undef HAVE_STDINT_H - /* The following define is needed on OS400 to enable strcmpi(), stricmp() and strdup(). */ diff --git a/external/curl/lib/config-plan9.h b/external/curl/lib/config-plan9.h index fa4be8e6d..aa9623f92 100644 --- a/external/curl/lib/config-plan9.h +++ b/external/curl/lib/config-plan9.h @@ -91,7 +91,6 @@ #define HAVE_GMTIME_R 1 #define HAVE_INET_NTOP 1 #define HAVE_INET_PTON 1 -#define HAVE_INTTYPES_H 1 #define HAVE_LIBGEN_H 1 #define HAVE_LIBZ 1 #define HAVE_LOCALE_H 1 @@ -117,7 +116,6 @@ #define HAVE_SOCKET 1 #define HAVE_SSL_GET_SHUTDOWN 1 #define HAVE_STDBOOL_H 1 -#define HAVE_STDINT_H 1 #define HAVE_STRCASECMP 1 #define HAVE_STRDUP 1 #define HAVE_STRTOK_R 1 diff --git a/external/curl/lib/config-riscos.h b/external/curl/lib/config-riscos.h index 52c279f5b..f3a8e6832 100644 --- a/external/curl/lib/config-riscos.h +++ b/external/curl/lib/config-riscos.h @@ -108,9 +108,6 @@ /* Define if you have the `timeval' struct. */ #define HAVE_STRUCT_TIMEVAL -/* Define if you have the header file. */ -#define HAVE_INTTYPES_H - /* Define if you have the header file. */ #undef HAVE_IO_H @@ -144,9 +141,6 @@ /* Define if you have the `socket' function. */ #define HAVE_SOCKET -/* Define if you have the header file. */ -#undef HAVE_STDINT_H - /* Define if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP diff --git a/external/curl/lib/config-win32.h b/external/curl/lib/config-win32.h index e55ef2fd2..7b8a289bc 100644 --- a/external/curl/lib/config-win32.h +++ b/external/curl/lib/config-win32.h @@ -38,17 +38,6 @@ /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 -/* Define to 1 if you have the header file. */ -#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || defined(__MINGW32__) -#define HAVE_INTTYPES_H 1 -#endif - -/* Define to 1 if you have the header file. */ -#if (defined(_MSC_VER) && (_MSC_VER >= 1600)) || defined(__MINGW32__) || \ - (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0582)) || defined(__POCC__) -#define HAVE_STDINT_H 1 -#endif - /* Define if you have the header file. */ #define HAVE_IO_H 1 @@ -56,9 +45,7 @@ #define HAVE_LOCALE_H 1 /* Define if you need header even with header file. */ -#if !defined(__SALFORDC__) && !defined(__POCC__) #define NEED_MALLOC_H 1 -#endif /* Define if you have the header file. */ /* #define HAVE_NETDB_H 1 */ @@ -72,7 +59,9 @@ #endif /* Define if you have the header file. */ -/* #define HAVE_SYS_PARAM_H 1 */ +#if defined(__MINGW32__) +#define HAVE_SYS_PARAM_H 1 +#endif /* Define if you have the header file. */ /* #define HAVE_SYS_SELECT_H 1 */ @@ -87,15 +76,15 @@ #define HAVE_SYS_STAT_H 1 /* Define if you have the header file. */ -/* #define HAVE_SYS_TIME_H 1 */ +#if defined(__MINGW32__) +#define HAVE_SYS_TIME_H 1 +#endif /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define if you have the header file. */ -#ifndef __BORLANDC__ #define HAVE_SYS_UTIME_H 1 -#endif /* Define if you have the header file. */ /* #define HAVE_TERMIO_H 1 */ @@ -104,7 +93,7 @@ /* #define HAVE_TERMIOS_H 1 */ /* Define if you have the header file. */ -#if defined(__MINGW32__) || defined(__LCC__) || defined(__POCC__) +#if defined(__MINGW32__) #define HAVE_UNISTD_H 1 #endif @@ -112,14 +101,10 @@ #define HAVE_WINDOWS_H 1 /* Define if you have the header file. */ -#ifndef __SALFORDC__ #define HAVE_WINSOCK2_H 1 -#endif /* Define if you have the header file. */ -#ifndef __SALFORDC__ #define HAVE_WS2TCPIP_H 1 -#endif /* Define to 1 if you have the header file. */ #if defined(__MINGW32__) @@ -160,7 +145,9 @@ #define HAVE_GETHOSTNAME 1 /* Define if you have the gettimeofday function. */ -/* #define HAVE_GETTIMEOFDAY 1 */ +#if defined(__MINGW32__) +#define HAVE_GETTIMEOFDAY 1 +#endif /* Define if you have the ioctlsocket function. */ #define HAVE_IOCTLSOCKET 1 @@ -192,15 +179,12 @@ #define HAVE_STRICMP 1 /* Define if you have the strtoll function. */ -#if defined(__MINGW32__) || defined(__POCC__) || \ - (defined(_MSC_VER) && (_MSC_VER >= 1800)) +#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || defined(__MINGW32__) #define HAVE_STRTOLL 1 #endif /* Define if you have the utime function. */ -#ifndef __BORLANDC__ #define HAVE_UTIME 1 -#endif /* Define if you have the recv function. */ #define HAVE_RECV 1 @@ -242,7 +226,7 @@ #define SEND_TYPE_RETV int /* Define to 1 if you have the snprintf function. */ -#if defined(_MSC_VER) && (_MSC_VER >= 1900) +#if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || defined(__MINGW32__) #define HAVE_SNPRINTF 1 #endif @@ -275,7 +259,7 @@ /* Define if ssize_t is not an available 'typedefed' type. */ #ifndef _SSIZE_T_DEFINED -# if defined(__POCC__) || defined(__MINGW32__) +# if defined(__MINGW32__) # elif defined(_WIN64) # define _SSIZE_T_DEFINED # define ssize_t __int64 @@ -325,8 +309,6 @@ # undef RECV_TYPE_ARG3 # undef SEND_TYPE_ARG1 # undef SEND_TYPE_ARG3 -# define HAVE_FREEADDRINFO -# define HAVE_GETADDRINFO # define HAVE_GETHOSTBYNAME_R # define HAVE_GETHOSTBYNAME_R_6 # define LWIP_POSIX_SOCKETS_IO_NAMES 0 @@ -347,13 +329,11 @@ #undef USE_WINSOCK #undef HAVE_WINSOCK2_H #undef HAVE_WS2TCPIP_H - #define HAVE_GETADDRINFO #define HAVE_SYS_IOCTL_H #define HAVE_SYS_SOCKET_H #define HAVE_NETINET_IN_H #define HAVE_NETDB_H #define HAVE_ARPA_INET_H - #define HAVE_FREEADDRINFO #define SOCKET int #endif @@ -371,15 +351,8 @@ /* Windows should not have HAVE_GMTIME_R defined */ /* #undef HAVE_GMTIME_R */ -/* Define if the compiler supports C99 variadic macro style. */ -#if defined(_MSC_VER) && (_MSC_VER >= 1400) -#define HAVE_VARIADIC_MACROS_C99 1 -#endif - /* Define if the compiler supports the 'long long' data type. */ -#if defined(__MINGW32__) || \ - (defined(_MSC_VER) && (_MSC_VER >= 1310)) || \ - (defined(__BORLANDC__) && (__BORLANDC__ >= 0x561)) +#if (defined(_MSC_VER) && (_MSC_VER >= 1310)) || defined(__MINGW32__) #define HAVE_LONGLONG 1 #endif @@ -461,53 +434,17 @@ Vista # endif #endif -/* When no build target is specified Pelles C 5.00 and later default build - target is Windows Vista. We override default target to be Windows 2000. */ -#if defined(__POCC__) && (__POCC__ >= 500) -# ifndef _WIN32_WINNT -# define _WIN32_WINNT 0x0500 -# endif -# ifndef WINVER -# define WINVER 0x0500 -# endif -#endif - -/* Availability of freeaddrinfo, getaddrinfo, and if_nametoindex - functions is quite convoluted, compiler dependent and even build target - dependent. */ -#if defined(HAVE_WS2TCPIP_H) -# if defined(__POCC__) -# define HAVE_FREEADDRINFO 1 -# define HAVE_GETADDRINFO 1 -# define HAVE_GETADDRINFO_THREADSAFE 1 -# elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) -# define HAVE_FREEADDRINFO 1 -# define HAVE_GETADDRINFO 1 -# define HAVE_GETADDRINFO_THREADSAFE 1 -# elif defined(_MSC_VER) && (_MSC_VER >= 1200) -# define HAVE_FREEADDRINFO 1 -# define HAVE_GETADDRINFO 1 -# define HAVE_GETADDRINFO_THREADSAFE 1 -# endif -#endif - -#if defined(__POCC__) -# ifndef _MSC_VER -# error Microsoft extensions /Ze compiler option is required -# endif -# ifndef __POCC__OLDNAMES -# error Compatibility names /Go compiler option is required -# endif -#endif +/* Windows XP is required for freeaddrinfo, getaddrinfo */ +#define HAVE_FREEADDRINFO 1 +#define HAVE_GETADDRINFO 1 +#define HAVE_GETADDRINFO_THREADSAFE 1 /* ---------------------------------------------------------------- */ /* STRUCT RELATED */ /* ---------------------------------------------------------------- */ /* Define if you have struct sockaddr_storage. */ -#if !defined(__SALFORDC__) && !defined(__BORLANDC__) #define HAVE_STRUCT_SOCKADDR_STORAGE 1 -#endif /* Define if you have struct timeval. */ #define HAVE_STRUCT_TIMEVAL 1 @@ -531,10 +468,6 @@ Vista # define USE_WIN32_LARGE_FILES #endif -#if defined(__POCC__) -# undef USE_WIN32_LARGE_FILES -#endif - #if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES) # define USE_WIN32_SMALL_FILES #endif @@ -596,10 +529,6 @@ Vista #define USE_WIN32_LDAP 1 #endif -#if defined(__POCC__) && defined(USE_WIN32_LDAP) -# define CURL_DISABLE_LDAP 1 -#endif - /* Define to use the Windows crypto library. */ #if !defined(CURL_WINDOWS_APP) #define USE_WIN32_CRYPTO @@ -635,7 +564,7 @@ Vista /* If you want to build curl with the built-in manual */ #define USE_MANUAL 1 -#if defined(__POCC__) || defined(USE_IPV6) +#if defined(USE_IPV6) # define ENABLE_IPV6 1 #endif diff --git a/external/curl/lib/config-win32ce.h b/external/curl/lib/config-win32ce.h index cc3833d01..e0db57fd0 100644 --- a/external/curl/lib/config-win32ce.h +++ b/external/curl/lib/config-win32ce.h @@ -81,7 +81,7 @@ /* #define HAVE_TERMIOS_H 1 */ /* Define if you have the header file. */ -#if defined(__MINGW32__) || defined(__LCC__) +#if defined(__MINGW32__) #define HAVE_UNISTD_H 1 #endif @@ -190,8 +190,7 @@ #define in_addr_t unsigned long /* Define ssize_t if it is not an available 'typedefed' type */ -#if defined(__POCC__) -#elif defined(_WIN64) +#if defined(_WIN64) #define ssize_t __int64 #else #define ssize_t int diff --git a/external/curl/lib/conncache.c b/external/curl/lib/conncache.c index 93d87686c..66f18ecb8 100644 --- a/external/curl/lib/conncache.c +++ b/external/curl/lib/conncache.c @@ -107,7 +107,7 @@ int Curl_conncache_init(struct conncache *connc, int size) connc->closure_handle = curl_easy_init(); if(!connc->closure_handle) return 1; /* bad */ - connc->closure_handle->internal = true; + connc->closure_handle->state.internal = true; Curl_hash_init(&connc->hash, size, Curl_hash_str, Curl_str_key_compare, free_bundle_hash_entry); @@ -243,7 +243,7 @@ CURLcode Curl_conncache_add_conn(struct Curl_easy *data) conn->connection_id = connc->next_connection_id++; connc->num_conn++; - DEBUGF(infof(data, "Added connection %ld. " + DEBUGF(infof(data, "Added connection %" CURL_FORMAT_CURL_OFF_T ". " "The cache now contains %zu members", conn->connection_id, connc->num_conn)); @@ -379,21 +379,26 @@ conncache_find_first_connection(struct conncache *connc) bool Curl_conncache_return_conn(struct Curl_easy *data, struct connectdata *conn) { - /* data->multi->maxconnects can be negative, deal with it. */ - size_t maxconnects = - (data->multi->maxconnects < 0) ? data->multi->num_easy * 4: - data->multi->maxconnects; + unsigned int maxconnects = !data->multi->maxconnects ? + data->multi->num_easy * 4: data->multi->maxconnects; struct connectdata *conn_candidate = NULL; conn->lastused = Curl_now(); /* it was used up until now */ - if(maxconnects > 0 && - Curl_conncache_size(data) > maxconnects) { + if(maxconnects && Curl_conncache_size(data) > maxconnects) { infof(data, "Connection cache is full, closing the oldest one"); conn_candidate = Curl_conncache_extract_oldest(data); if(conn_candidate) { - /* the winner gets the honour of being disconnected */ - Curl_disconnect(data, conn_candidate, /* dead_connection */ FALSE); + /* Use the closure handle for this disconnect so that anything that + happens during the disconnect is not stored and associated with the + 'data' handle which already just finished a transfer and it is + important that details from this (unrelated) disconnect does not + taint meta-data in the data handle. */ + struct conncache *connc = data->state.conn_cache; + connc->closure_handle->state.buffer = data->state.buffer; + connc->closure_handle->set.buffer_size = data->set.buffer_size; + Curl_disconnect(connc->closure_handle, conn_candidate, + /* dead_connection */ FALSE); } } diff --git a/external/curl/lib/connect.c b/external/curl/lib/connect.c index c7ba3e20e..ec5ab71d4 100644 --- a/external/curl/lib/connect.c +++ b/external/curl/lib/connect.c @@ -84,6 +84,9 @@ #include "curl_memory.h" #include "memdebug.h" +#ifndef ARRAYSIZE +#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0])) +#endif /* * Curl_timeleft() returns the amount of milliseconds left allowed for the @@ -348,6 +351,7 @@ void Curl_conncontrol(struct connectdata *conn, */ struct eyeballer { const char *name; + const struct Curl_addrinfo *first; /* complete address list, not owned */ const struct Curl_addrinfo *addr; /* List of addresses to try, not owned */ int ai_family; /* matching address family only */ cf_ip_connect_create *cf_create; /* for creating cf */ @@ -359,9 +363,12 @@ struct eyeballer { expire_id timeout_id; /* ID for Curl_expire() */ CURLcode result; int error; + BIT(rewinded); /* if we rewinded the addr list */ BIT(has_started); /* attempts have started */ BIT(is_done); /* out of addresses/time */ BIT(connected); /* cf has connected */ + BIT(inconclusive); /* connect was not a hard failure, we + * might talk to a restarting server */ }; @@ -408,7 +415,7 @@ static CURLcode eyeballer_new(struct eyeballer **pballer, #endif "ip")); baller->cf_create = cf_create; - baller->addr = addr; + baller->first = baller->addr = addr; baller->ai_family = ai_family; baller->primary = primary; baller->delay_ms = delay_ms; @@ -438,6 +445,13 @@ static void baller_free(struct eyeballer *baller, } } +static void baller_rewind(struct eyeballer *baller) +{ + baller->rewinded = TRUE; + baller->addr = baller->first; + baller->inconclusive = FALSE; +} + static void baller_next_addr(struct eyeballer *baller) { baller->addr = addr_next_match(baller->addr, baller->ai_family); @@ -528,6 +542,10 @@ static CURLcode baller_start_next(struct Curl_cfilter *cf, { if(cf->sockindex == FIRSTSOCKET) { baller_next_addr(baller); + /* If we get inconclusive answers from the server(s), we make + * a second iteration over the address list */ + if(!baller->addr && baller->inconclusive && !baller->rewinded) + baller_rewind(baller); baller_start(cf, data, baller, timeoutms); } else { @@ -566,6 +584,8 @@ static CURLcode baller_connect(struct Curl_cfilter *cf, baller->result = CURLE_OPERATION_TIMEDOUT; } } + else if(baller->result == CURLE_WEIRD_SERVER_REPLY) + baller->inconclusive = TRUE; } return baller->result; } @@ -595,7 +615,7 @@ static CURLcode is_connected(struct Curl_cfilter *cf, *connected = FALSE; /* a very negative world view is best */ now = Curl_now(); ongoing = not_started = 0; - for(i = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { struct eyeballer *baller = ctx->baller[i]; if(!baller || baller->is_done) @@ -656,7 +676,7 @@ static CURLcode is_connected(struct Curl_cfilter *cf, if(not_started > 0) { int added = 0; - for(i = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { struct eyeballer *baller = ctx->baller[i]; if(!baller || baller->has_started) @@ -691,13 +711,13 @@ static CURLcode is_connected(struct Curl_cfilter *cf, /* all ballers have failed to connect. */ CURL_TRC_CF(data, cf, "all eyeballers failed"); result = CURLE_COULDNT_CONNECT; - for(i = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { struct eyeballer *baller = ctx->baller[i]; + if(!baller) + continue; CURL_TRC_CF(data, cf, "%s assess started=%d, result=%d", - baller?baller->name:NULL, - baller?baller->has_started:0, - baller?baller->result:0); - if(baller && baller->has_started && baller->result) { + baller->name, baller->has_started, baller->result); + if(baller->has_started && baller->result) { result = baller->result; break; } @@ -838,7 +858,7 @@ static void cf_he_ctx_clear(struct Curl_cfilter *cf, struct Curl_easy *data) DEBUGASSERT(ctx); DEBUGASSERT(data); - for(i = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { baller_free(ctx->baller[i], data); ctx->baller[i] = NULL; } @@ -846,35 +866,22 @@ static void cf_he_ctx_clear(struct Curl_cfilter *cf, struct Curl_easy *data) ctx->winner = NULL; } -static int cf_he_get_select_socks(struct Curl_cfilter *cf, +static void cf_he_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { struct cf_he_ctx *ctx = cf->ctx; - size_t i, s; - int wrc, rc = GETSOCK_BLANK; - curl_socket_t wsocks[MAX_SOCKSPEREASYHANDLE]; - - if(cf->connected) - return cf->next->cft->get_select_socks(cf->next, data, socks); - - for(i = s = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { - struct eyeballer *baller = ctx->baller[i]; - if(!baller || !baller->cf) - continue; + size_t i; - wrc = Curl_conn_cf_get_select_socks(baller->cf, data, wsocks); - if(wrc) { - /* TODO: we assume we get at most one socket back */ - socks[s] = wsocks[0]; - if(wrc & GETSOCK_WRITESOCK(0)) - rc |= GETSOCK_WRITESOCK(s); - if(wrc & GETSOCK_READSOCK(0)) - rc |= GETSOCK_READSOCK(s); - s++; + if(!cf->connected) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { + struct eyeballer *baller = ctx->baller[i]; + if(!baller || !baller->cf) + continue; + Curl_conn_cf_adjust_pollset(baller->cf, data, ps); } + CURL_TRC_CF(data, cf, "adjust_pollset -> %d socks", ps->num); } - return rc; } static CURLcode cf_he_connect(struct Curl_cfilter *cf, @@ -956,7 +963,7 @@ static bool cf_he_data_pending(struct Curl_cfilter *cf, if(cf->connected) return cf->next->cft->has_data_pending(cf->next, data); - for(i = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { struct eyeballer *baller = ctx->baller[i]; if(!baller || !baller->cf) continue; @@ -975,7 +982,7 @@ static struct curltime get_max_baller_time(struct Curl_cfilter *cf, size_t i; memset(&tmax, 0, sizeof(tmax)); - for(i = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { struct eyeballer *baller = ctx->baller[i]; memset(&t, 0, sizeof(t)); @@ -1000,7 +1007,7 @@ static CURLcode cf_he_query(struct Curl_cfilter *cf, int reply_ms = -1; size_t i; - for(i = 0; i < sizeof(ctx->baller)/sizeof(ctx->baller[0]); i++) { + for(i = 0; i < ARRAYSIZE(ctx->baller); i++) { struct eyeballer *baller = ctx->baller[i]; int breply_ms; @@ -1055,7 +1062,7 @@ struct Curl_cftype Curl_cft_happy_eyeballs = { cf_he_connect, cf_he_close, Curl_cf_def_get_host, - cf_he_get_select_socks, + cf_he_adjust_pollset, cf_he_data_pending, Curl_cf_def_send, Curl_cf_def_recv, @@ -1089,7 +1096,7 @@ cf_happy_eyeballs_create(struct Curl_cfilter **pcf, (void)data; (void)conn; *pcf = NULL; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; @@ -1122,13 +1129,13 @@ struct transport_provider transport_providers[] = { #ifdef ENABLE_QUIC { TRNSPRT_QUIC, Curl_cf_quic_create }, #endif +#ifndef CURL_DISABLE_TFTP { TRNSPRT_UDP, Curl_cf_udp_create }, +#endif +#ifdef USE_UNIX_SOCKETS { TRNSPRT_UNIX, Curl_cf_unix_create }, -}; - -#ifndef ARRAYSIZE -#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0])) #endif +}; static cf_ip_connect_create *get_cf_create(int transport) { @@ -1319,7 +1326,7 @@ struct Curl_cftype Curl_cft_setup = { cf_setup_connect, cf_setup_close, Curl_cf_def_get_host, - Curl_cf_def_get_select_socks, + Curl_cf_def_adjust_pollset, Curl_cf_def_data_pending, Curl_cf_def_send, Curl_cf_def_recv, @@ -1340,7 +1347,7 @@ static CURLcode cf_setup_create(struct Curl_cfilter **pcf, CURLcode result = CURLE_OK; (void)data; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/lib/content_encoding.c b/external/curl/lib/content_encoding.c index be7c075e9..4167d4d68 100644 --- a/external/curl/lib/content_encoding.c +++ b/external/curl/lib/content_encoding.c @@ -63,6 +63,9 @@ #ifndef CURL_DISABLE_HTTP +/* allow no more than 5 "chained" compression steps */ +#define MAX_ENCODE_STACK 5 + #define DSIZ CURL_MAX_WRITE_SIZE /* buffer size for decompressed data */ @@ -95,7 +98,7 @@ typedef enum { /* Deflate and gzip writer. */ struct zlib_writer { - struct contenc_writer super; + struct Curl_cwriter super; zlibInitState zlib_init; /* zlib init state */ uInt trailerlen; /* Remaining trailer byte count. */ z_stream z; /* State structure for zlib. */ @@ -171,7 +174,7 @@ static CURLcode process_trailer(struct Curl_easy *data, } static CURLcode inflate_stream(struct Curl_easy *data, - struct contenc_writer *writer, + struct Curl_cwriter *writer, int type, zlibInitState started) { struct zlib_writer *zp = (struct zlib_writer *) writer; @@ -196,7 +199,7 @@ static CURLcode inflate_stream(struct Curl_easy *data, return exit_zlib(data, z, &zp->zlib_init, CURLE_OUT_OF_MEMORY); /* because the buffer size is fixed, iteratively decompress and transfer to - the client via downstream_write function. */ + the client via next_write function. */ while(!done) { int status; /* zlib status */ done = TRUE; @@ -217,7 +220,7 @@ static CURLcode inflate_stream(struct Curl_easy *data, if(z->avail_out != DSIZ) { if(status == Z_OK || status == Z_STREAM_END) { zp->zlib_init = started; /* Data started. */ - result = Curl_unencode_write(data, writer->downstream, decomp, + result = Curl_cwriter_write(data, writer->next, type, decomp, DSIZ - z->avail_out); if(result) { exit_zlib(data, z, &zp->zlib_init, result); @@ -274,8 +277,8 @@ static CURLcode inflate_stream(struct Curl_easy *data, /* Deflate handler. */ -static CURLcode deflate_init_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static CURLcode deflate_do_init(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct zlib_writer *zp = (struct zlib_writer *) writer; z_stream *z = &zp->z; /* zlib state structure */ @@ -290,13 +293,16 @@ static CURLcode deflate_init_writer(struct Curl_easy *data, return CURLE_OK; } -static CURLcode deflate_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, +static CURLcode deflate_do_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, const char *buf, size_t nbytes) { struct zlib_writer *zp = (struct zlib_writer *) writer; z_stream *z = &zp->z; /* zlib state structure */ + if(!(type & CLIENTWRITE_BODY)) + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); + /* Set the compressed input when this function is called */ z->next_in = (Bytef *) buf; z->avail_in = (uInt) nbytes; @@ -305,11 +311,11 @@ static CURLcode deflate_unencode_write(struct Curl_easy *data, return process_trailer(data, zp); /* Now uncompress the data */ - return inflate_stream(data, writer, ZLIB_INFLATING); + return inflate_stream(data, writer, type, ZLIB_INFLATING); } -static void deflate_close_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static void deflate_do_close(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct zlib_writer *zp = (struct zlib_writer *) writer; z_stream *z = &zp->z; /* zlib state structure */ @@ -317,19 +323,19 @@ static void deflate_close_writer(struct Curl_easy *data, exit_zlib(data, z, &zp->zlib_init, CURLE_OK); } -static const struct content_encoding deflate_encoding = { +static const struct Curl_cwtype deflate_encoding = { "deflate", NULL, - deflate_init_writer, - deflate_unencode_write, - deflate_close_writer, + deflate_do_init, + deflate_do_write, + deflate_do_close, sizeof(struct zlib_writer) }; /* Gzip handler. */ -static CURLcode gzip_init_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static CURLcode gzip_do_init(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct zlib_writer *zp = (struct zlib_writer *) writer; z_stream *z = &zp->z; /* zlib state structure */ @@ -441,19 +447,22 @@ static enum { } #endif -static CURLcode gzip_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, +static CURLcode gzip_do_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, const char *buf, size_t nbytes) { struct zlib_writer *zp = (struct zlib_writer *) writer; z_stream *z = &zp->z; /* zlib state structure */ + if(!(type & CLIENTWRITE_BODY)) + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); + if(zp->zlib_init == ZLIB_INIT_GZIP) { /* Let zlib handle the gzip decompression entirely */ z->next_in = (Bytef *) buf; z->avail_in = (uInt) nbytes; /* Now uncompress the data */ - return inflate_stream(data, writer, ZLIB_INIT_GZIP); + return inflate_stream(data, writer, type, ZLIB_INIT_GZIP); } #ifndef OLD_ZLIB_SUPPORT @@ -565,12 +574,12 @@ static CURLcode gzip_unencode_write(struct Curl_easy *data, } /* We've parsed the header, now uncompress the data */ - return inflate_stream(data, writer, ZLIB_GZIP_INFLATING); + return inflate_stream(data, writer, type, ZLIB_GZIP_INFLATING); #endif } -static void gzip_close_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static void gzip_do_close(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct zlib_writer *zp = (struct zlib_writer *) writer; z_stream *z = &zp->z; /* zlib state structure */ @@ -578,12 +587,12 @@ static void gzip_close_writer(struct Curl_easy *data, exit_zlib(data, z, &zp->zlib_init, CURLE_OK); } -static const struct content_encoding gzip_encoding = { +static const struct Curl_cwtype gzip_encoding = { "gzip", "x-gzip", - gzip_init_writer, - gzip_unencode_write, - gzip_close_writer, + gzip_do_init, + gzip_do_write, + gzip_do_close, sizeof(struct zlib_writer) }; @@ -593,7 +602,7 @@ static const struct content_encoding gzip_encoding = { #ifdef HAVE_BROTLI /* Brotli writer. */ struct brotli_writer { - struct contenc_writer super; + struct Curl_cwriter super; BrotliDecoderState *br; /* State structure for brotli. */ }; @@ -635,8 +644,8 @@ static CURLcode brotli_map_error(BrotliDecoderErrorCode be) return CURLE_WRITE_ERROR; } -static CURLcode brotli_init_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static CURLcode brotli_do_init(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct brotli_writer *bp = (struct brotli_writer *) writer; (void) data; @@ -645,8 +654,8 @@ static CURLcode brotli_init_writer(struct Curl_easy *data, return bp->br? CURLE_OK: CURLE_OUT_OF_MEMORY; } -static CURLcode brotli_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, +static CURLcode brotli_do_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, const char *buf, size_t nbytes) { struct brotli_writer *bp = (struct brotli_writer *) writer; @@ -657,6 +666,9 @@ static CURLcode brotli_unencode_write(struct Curl_easy *data, CURLcode result = CURLE_OK; BrotliDecoderResult r = BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT; + if(!(type & CLIENTWRITE_BODY)) + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); + if(!bp->br) return CURLE_WRITE_ERROR; /* Stream already ended. */ @@ -670,7 +682,7 @@ static CURLcode brotli_unencode_write(struct Curl_easy *data, dstleft = DSIZ; r = BrotliDecoderDecompressStream(bp->br, &nbytes, &src, &dstleft, &dst, NULL); - result = Curl_unencode_write(data, writer->downstream, + result = Curl_cwriter_write(data, writer->next, type, decomp, DSIZ - dstleft); if(result) break; @@ -693,8 +705,8 @@ static CURLcode brotli_unencode_write(struct Curl_easy *data, return result; } -static void brotli_close_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static void brotli_do_close(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct brotli_writer *bp = (struct brotli_writer *) writer; @@ -706,12 +718,12 @@ static void brotli_close_writer(struct Curl_easy *data, } } -static const struct content_encoding brotli_encoding = { +static const struct Curl_cwtype brotli_encoding = { "br", NULL, - brotli_init_writer, - brotli_unencode_write, - brotli_close_writer, + brotli_do_init, + brotli_do_write, + brotli_do_close, sizeof(struct brotli_writer) }; #endif @@ -720,13 +732,13 @@ static const struct content_encoding brotli_encoding = { #ifdef HAVE_ZSTD /* Zstd writer. */ struct zstd_writer { - struct contenc_writer super; + struct Curl_cwriter super; ZSTD_DStream *zds; /* State structure for zstd. */ void *decomp; }; -static CURLcode zstd_init_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static CURLcode zstd_do_init(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct zstd_writer *zp = (struct zstd_writer *) writer; @@ -737,8 +749,8 @@ static CURLcode zstd_init_writer(struct Curl_easy *data, return zp->zds ? CURLE_OK : CURLE_OUT_OF_MEMORY; } -static CURLcode zstd_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, +static CURLcode zstd_do_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, const char *buf, size_t nbytes) { CURLcode result = CURLE_OK; @@ -747,6 +759,9 @@ static CURLcode zstd_unencode_write(struct Curl_easy *data, ZSTD_outBuffer out; size_t errorCode; + if(!(type & CLIENTWRITE_BODY)) + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); + if(!zp->decomp) { zp->decomp = malloc(DSIZ); if(!zp->decomp) @@ -766,7 +781,7 @@ static CURLcode zstd_unencode_write(struct Curl_easy *data, return CURLE_BAD_CONTENT_ENCODING; } if(out.pos > 0) { - result = Curl_unencode_write(data, writer->downstream, + result = Curl_cwriter_write(data, writer->next, type, zp->decomp, out.pos); if(result) break; @@ -778,8 +793,8 @@ static CURLcode zstd_unencode_write(struct Curl_easy *data, return result; } -static void zstd_close_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static void zstd_do_close(struct Curl_easy *data, + struct Curl_cwriter *writer) { struct zstd_writer *zp = (struct zstd_writer *) writer; @@ -795,52 +810,30 @@ static void zstd_close_writer(struct Curl_easy *data, } } -static const struct content_encoding zstd_encoding = { +static const struct Curl_cwtype zstd_encoding = { "zstd", NULL, - zstd_init_writer, - zstd_unencode_write, - zstd_close_writer, + zstd_do_init, + zstd_do_write, + zstd_do_close, sizeof(struct zstd_writer) }; #endif /* Identity handler. */ -static CURLcode identity_init_writer(struct Curl_easy *data, - struct contenc_writer *writer) -{ - (void)data; - (void)writer; - return CURLE_OK; -} - -static CURLcode identity_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, - const char *buf, size_t nbytes) -{ - return Curl_unencode_write(data, writer->downstream, buf, nbytes); -} - -static void identity_close_writer(struct Curl_easy *data, - struct contenc_writer *writer) -{ - (void) data; - (void) writer; -} - -static const struct content_encoding identity_encoding = { +static const struct Curl_cwtype identity_encoding = { "identity", "none", - identity_init_writer, - identity_unencode_write, - identity_close_writer, - sizeof(struct contenc_writer) + Curl_cwriter_def_init, + Curl_cwriter_def_write, + Curl_cwriter_def_close, + sizeof(struct Curl_cwriter) }; /* supported content encodings table. */ -static const struct content_encoding * const encodings[] = { +static const struct Curl_cwtype * const encodings[] = { &identity_encoding, #ifdef HAVE_LIBZ &deflate_encoding, @@ -856,13 +849,17 @@ static const struct content_encoding * const encodings[] = { }; -/* Return a list of comma-separated names of supported encodings. */ -char *Curl_all_content_encodings(void) +/* Provide a list of comma-separated names of supported encodings. +*/ +void Curl_all_content_encodings(char *buf, size_t blen) { size_t len = 0; - const struct content_encoding * const *cep; - const struct content_encoding *ce; - char *ace; + const struct Curl_cwtype * const *cep; + const struct Curl_cwtype *ce; + + DEBUGASSERT(buf); + DEBUGASSERT(blen); + buf[0] = 0; for(cep = encodings; *cep; cep++) { ce = *cep; @@ -870,12 +867,12 @@ char *Curl_all_content_encodings(void) len += strlen(ce->name) + 2; } - if(!len) - return strdup(CONTENT_ENCODING_DEFAULT); - - ace = malloc(len); - if(ace) { - char *p = ace; + if(!len) { + if(blen >= sizeof(CONTENT_ENCODING_DEFAULT)) + strcpy(buf, CONTENT_ENCODING_DEFAULT); + } + else if(blen > len) { + char *p = buf; for(cep = encodings; *cep; cep++) { ce = *cep; if(!strcasecompare(ce->name, CONTENT_ENCODING_DEFAULT)) { @@ -887,75 +884,60 @@ char *Curl_all_content_encodings(void) } p[-2] = '\0'; } - - return ace; } - /* Deferred error dummy writer. */ -static CURLcode error_init_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static CURLcode error_do_init(struct Curl_easy *data, + struct Curl_cwriter *writer) { (void)data; (void)writer; return CURLE_OK; } -static CURLcode error_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, +static CURLcode error_do_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, const char *buf, size_t nbytes) { - char *all = Curl_all_content_encodings(); + char all[256]; + (void)Curl_all_content_encodings(all, sizeof(all)); (void) writer; (void) buf; (void) nbytes; - if(!all) - return CURLE_OUT_OF_MEMORY; + if(!(type & CLIENTWRITE_BODY)) + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); + failf(data, "Unrecognized content encoding type. " "libcurl understands %s content encodings.", all); - free(all); return CURLE_BAD_CONTENT_ENCODING; } -static void error_close_writer(struct Curl_easy *data, - struct contenc_writer *writer) +static void error_do_close(struct Curl_easy *data, + struct Curl_cwriter *writer) { (void) data; (void) writer; } -static const struct content_encoding error_encoding = { - NULL, +static const struct Curl_cwtype error_writer = { + "ce-error", NULL, - error_init_writer, - error_unencode_write, - error_close_writer, - sizeof(struct contenc_writer) + error_do_init, + error_do_write, + error_do_close, + sizeof(struct Curl_cwriter) }; -/* Write data using an unencoding writer stack. "nbytes" is not - allowed to be 0. */ -CURLcode Curl_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, - const char *buf, size_t nbytes) -{ - if(!nbytes) - return CURLE_OK; - if(!writer) - return CURLE_WRITE_ERROR; - return writer->handler->unencode_write(data, writer, buf, nbytes); -} - /* Find the content encoding by name. */ -static const struct content_encoding *find_encoding(const char *name, +static const struct Curl_cwtype *find_encoding(const char *name, size_t len) { - const struct content_encoding * const *cep; + const struct Curl_cwtype * const *cep; for(cep = encodings; *cep; cep++) { - const struct content_encoding *ce = *cep; + const struct Curl_cwtype *ce = *cep; if((strncasecompare(name, ce->name, len) && !ce->name[len]) || (ce->alias && strncasecompare(name, ce->alias, len) && !ce->alias[len])) return ce; @@ -969,7 +951,8 @@ CURLcode Curl_build_unencoding_stack(struct Curl_easy *data, const char *enclist, int is_transfer) { struct SingleRequest *k = &data->req; - unsigned int order = is_transfer? 2: 1; + Curl_cwriter_phase phase = is_transfer? + CURL_CW_TRANSFER_DECODE:CURL_CW_CONTENT_DECODE; CURLcode result; do { @@ -992,23 +975,32 @@ CURLcode Curl_build_unencoding_stack(struct Curl_easy *data, Curl_httpchunk_init(data); /* init our chunky engine. */ } else if(namelen) { - const struct content_encoding *encoding; - struct contenc_writer *writer; - if(is_transfer && !data->set.http_transfer_encoding) + const struct Curl_cwtype *cwt; + struct Curl_cwriter *writer; + + if((is_transfer && !data->set.http_transfer_encoding) || + (!is_transfer && data->set.http_ce_skip)) { /* not requested, ignore */ return CURLE_OK; + } - encoding = find_encoding(name, namelen); - if(!encoding) - encoding = &error_encoding; /* Defer error at stack use. */ + if(Curl_cwriter_count(data, phase) + 1 >= MAX_ENCODE_STACK) { + failf(data, "Reject response due to more than %u content encodings", + MAX_ENCODE_STACK); + return CURLE_BAD_CONTENT_ENCODING; + } + + cwt = find_encoding(name, namelen); + if(!cwt) + cwt = &error_writer; /* Defer error at use. */ - result = Curl_client_create_writer(&writer, data, encoding, order); + result = Curl_cwriter_create(&writer, data, cwt, phase); if(result) return result; - result = Curl_client_add_writer(data, writer); + result = Curl_cwriter_add(data, writer); if(result) { - Curl_client_free_writer(data, writer); + Curl_cwriter_free(data, writer); return result; } } @@ -1028,20 +1020,15 @@ CURLcode Curl_build_unencoding_stack(struct Curl_easy *data, return CURLE_NOT_BUILT_IN; } -CURLcode Curl_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, - const char *buf, size_t nbytes) +void Curl_all_content_encodings(char *buf, size_t blen) { - (void) data; - (void) writer; - (void) buf; - (void) nbytes; - return CURLE_NOT_BUILT_IN; + DEBUGASSERT(buf); + DEBUGASSERT(blen); + if(blen < sizeof(CONTENT_ENCODING_DEFAULT)) + buf[0] = 0; + else + strcpy(buf, CONTENT_ENCODING_DEFAULT); } -char *Curl_all_content_encodings(void) -{ - return strdup(CONTENT_ENCODING_DEFAULT); /* Satisfy caller. */ -} #endif /* CURL_DISABLE_HTTP */ diff --git a/external/curl/lib/content_encoding.h b/external/curl/lib/content_encoding.h index ef7930cb3..1addf230b 100644 --- a/external/curl/lib/content_encoding.h +++ b/external/curl/lib/content_encoding.h @@ -25,15 +25,10 @@ ***************************************************************************/ #include "curl_setup.h" -struct contenc_writer; +struct Curl_cwriter; -char *Curl_all_content_encodings(void); +void Curl_all_content_encodings(char *buf, size_t blen); CURLcode Curl_build_unencoding_stack(struct Curl_easy *data, const char *enclist, int is_transfer); -CURLcode Curl_unencode_write(struct Curl_easy *data, - struct contenc_writer *writer, - const char *buf, size_t nbytes); -void Curl_unencode_cleanup(struct Curl_easy *data); - #endif /* HEADER_CURL_CONTENT_ENCODING_H */ diff --git a/external/curl/lib/cookie.c b/external/curl/lib/cookie.c index af01203a9..9095cea3e 100644 --- a/external/curl/lib/cookie.c +++ b/external/curl/lib/cookie.c @@ -330,7 +330,7 @@ static char *sanitize_cookie_path(const char *cookie_path) */ void Curl_cookie_loadfiles(struct Curl_easy *data) { - struct curl_slist *list = data->set.cookielist; + struct curl_slist *list = data->state.cookielist; if(list) { Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE); while(list) { @@ -365,9 +365,7 @@ static void strstore(char **str, const char *newstr, size_t len) DEBUGASSERT(newstr); DEBUGASSERT(str); free(*str); - *str = Curl_memdup(newstr, len + 1); - if(*str) - (*str)[len] = 0; + *str = Curl_strndup(newstr, len); } /* @@ -1029,15 +1027,23 @@ Curl_cookie_add(struct Curl_easy *data, * dereference it. */ if(data && (domain && co->domain && !Curl_host_is_ipnum(co->domain))) { - const psl_ctx_t *psl = Curl_psl_use(data); - int acceptable; - - if(psl) { - acceptable = psl_is_cookie_domain_acceptable(psl, domain, co->domain); - Curl_psl_release(data); + bool acceptable = FALSE; + char lcase[256]; + char lcookie[256]; + size_t dlen = strlen(domain); + size_t clen = strlen(co->domain); + if((dlen < sizeof(lcase)) && (clen < sizeof(lcookie))) { + const psl_ctx_t *psl = Curl_psl_use(data); + if(psl) { + /* the PSL check requires lowercase domain name and pattern */ + Curl_strntolower(lcase, domain, dlen + 1); + Curl_strntolower(lcookie, co->domain, clen + 1); + acceptable = psl_is_cookie_domain_acceptable(psl, lcase, lcookie); + Curl_psl_release(data); + } + else + acceptable = !bad_domain(domain, strlen(domain)); } - else - acceptable = !bad_domain(domain, strlen(domain)); if(!acceptable) { infof(data, "cookie '%s' dropped, domain '%s' must not " @@ -1347,7 +1353,7 @@ static int cookie_sort_ct(const void *p1, const void *p2) static struct Cookie *dup_cookie(struct Cookie *src) { - struct Cookie *d = calloc(sizeof(struct Cookie), 1); + struct Cookie *d = calloc(1, sizeof(struct Cookie)); if(d) { CLONE(domain); CLONE(path); diff --git a/external/curl/lib/curl_config.h.cmake b/external/curl/lib/curl_config.h.cmake index 0bfb45796..339358ea3 100644 --- a/external/curl/lib/curl_config.h.cmake +++ b/external/curl/lib/curl_config.h.cmake @@ -74,9 +74,15 @@ /* disables FTP */ #cmakedefine CURL_DISABLE_FTP 1 +/* disables curl_easy_options API for existing options to curl_easy_setopt */ +#cmakedefine CURL_DISABLE_GETOPTIONS 1 + /* disables GOPHER */ #cmakedefine CURL_DISABLE_GOPHER 1 +/* disables headers-api support */ +#cmakedefine CURL_DISABLE_HEADERS_API 1 + /* disables HSTS support */ #cmakedefine CURL_DISABLE_HSTS 1 @@ -98,6 +104,9 @@ /* disables MIME support */ #cmakedefine CURL_DISABLE_MIME 1 +/* disables local binding support */ +#cmakedefine CURL_DISABLE_BINDLOCAL 1 + /* disables MQTT */ #cmakedefine CURL_DISABLE_MQTT 1 @@ -168,9 +177,6 @@ /* Define to 1 if you have _Atomic support. */ #cmakedefine HAVE_ATOMIC 1 -/* Define to 1 if you have the `fchmod' function. */ -#cmakedefine HAVE_FCHMOD 1 - /* Define to 1 if you have the `fnmatch' function. */ #cmakedefine HAVE_FNMATCH 1 @@ -208,6 +214,9 @@ /* Define to 1 if you have the fseeko function. */ #cmakedefine HAVE_FSEEKO 1 +/* Define to 1 if you have the fseeko declaration. */ +#cmakedefine HAVE_DECL_FSEEKO 1 + /* Define to 1 if you have the _fseeki64 function. */ #cmakedefine HAVE__FSEEKI64 1 @@ -313,9 +322,6 @@ /* Define to 1 if symbol `ADDRESS_FAMILY' exists */ #cmakedefine HAVE_ADDRESS_FAMILY 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_INTTYPES_H 1 - /* Define to 1 if you have the ioctlsocket function. */ #cmakedefine HAVE_IOCTLSOCKET 1 @@ -497,9 +503,6 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_STDBOOL_H 1 -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDINT_H 1 - /* Define to 1 if you have the strcasecmp function. */ #cmakedefine HAVE_STRCASECMP 1 @@ -596,12 +599,6 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_UTIME_H 1 -/* Define to 1 if compiler supports C99 variadic macro style. */ -#cmakedefine HAVE_VARIADIC_MACROS_C99 1 - -/* Define to 1 if compiler supports old gcc variadic macro style. */ -#cmakedefine HAVE_VARIADIC_MACROS_GCC 1 - /* Define to 1 if you have the windows.h header file. */ #cmakedefine HAVE_WINDOWS_H 1 diff --git a/external/curl/lib/curl_config.h.in b/external/curl/lib/curl_config.h.in index 4037b3aae..9d8efb31e 100644 --- a/external/curl/lib/curl_config.h.in +++ b/external/curl/lib/curl_config.h.in @@ -199,6 +199,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_CRYPTO_H +/* Define to 1 if you have the fseeko declaration */ +#undef HAVE_DECL_FSEEKO + /* Define to 1 if you have the declaration of `getpwuid_r', and to 0 if you don't. */ #undef HAVE_DECL_GETPWUID_R @@ -212,9 +215,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_ERR_H -/* Define to 1 if you have the `fchmod' function. */ -#undef HAVE_FCHMOD - /* Define to 1 if you have the fcntl function. */ #undef HAVE_FCNTL @@ -722,12 +722,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UTIME_H -/* Define to 1 if compiler supports C99 variadic macro style. */ -#undef HAVE_VARIADIC_MACROS_C99 - -/* Define to 1 if compiler supports old gcc variadic macro style. */ -#undef HAVE_VARIADIC_MACROS_GCC - /* Define to 1 if you have the windows.h header file. */ #undef HAVE_WINDOWS_H diff --git a/external/curl/lib/curl_hmac.h b/external/curl/lib/curl_hmac.h index 2ea03dd26..7a5387a94 100644 --- a/external/curl/lib/curl_hmac.h +++ b/external/curl/lib/curl_hmac.h @@ -25,7 +25,8 @@ ***************************************************************************/ #if (defined(USE_CURL_NTLM_CORE) && !defined(USE_WINDOWS_SSPI)) \ - || !defined(CURL_DISABLE_AWS) || !defined(CURL_DISABLE_DIGEST_AUTH) + || !defined(CURL_DISABLE_AWS) || !defined(CURL_DISABLE_DIGEST_AUTH) \ + || defined(USE_LIBSSH2) #include diff --git a/external/curl/lib/curl_memory.h b/external/curl/lib/curl_memory.h index b8c46d793..714ad71c9 100644 --- a/external/curl/lib/curl_memory.h +++ b/external/curl/lib/curl_memory.h @@ -68,7 +68,7 @@ #undef send #undef recv -#ifdef WIN32 +#ifdef _WIN32 # ifdef UNICODE # undef wcsdup # undef _wcsdup @@ -134,7 +134,7 @@ extern curl_free_callback Curl_cfree; extern curl_realloc_callback Curl_crealloc; extern curl_strdup_callback Curl_cstrdup; extern curl_calloc_callback Curl_ccalloc; -#if defined(WIN32) && defined(UNICODE) +#if defined(_WIN32) && defined(UNICODE) extern curl_wcsdup_callback Curl_cwcsdup; #endif @@ -160,7 +160,7 @@ extern curl_wcsdup_callback Curl_cwcsdup; #undef free #define free(ptr) Curl_cfree(ptr) -#ifdef WIN32 +#ifdef _WIN32 # ifdef UNICODE # undef wcsdup # define wcsdup(ptr) Curl_cwcsdup(ptr) diff --git a/external/curl/lib/curl_multibyte.c b/external/curl/lib/curl_multibyte.c index 522ea34e8..ff2109856 100644 --- a/external/curl/lib/curl_multibyte.c +++ b/external/curl/lib/curl_multibyte.c @@ -32,7 +32,7 @@ #include "curl_setup.h" -#if defined(WIN32) +#if defined(_WIN32) #include "curl_multibyte.h" @@ -84,7 +84,7 @@ char *curlx_convert_wchar_to_UTF8(const wchar_t *str_w) return str_utf8; } -#endif /* WIN32 */ +#endif /* _WIN32 */ #if defined(USE_WIN32_LARGE_FILES) || defined(USE_WIN32_SMALL_FILES) diff --git a/external/curl/lib/curl_multibyte.h b/external/curl/lib/curl_multibyte.h index ddac1f638..8b9ac719e 100644 --- a/external/curl/lib/curl_multibyte.h +++ b/external/curl/lib/curl_multibyte.h @@ -25,7 +25,7 @@ ***************************************************************************/ #include "curl_setup.h" -#if defined(WIN32) +#if defined(_WIN32) /* * MultiByte conversions using Windows kernel32 library. @@ -33,7 +33,7 @@ wchar_t *curlx_convert_UTF8_to_wchar(const char *str_utf8); char *curlx_convert_wchar_to_UTF8(const wchar_t *str_w); -#endif /* WIN32 */ +#endif /* _WIN32 */ /* * Macros curlx_convert_UTF8_to_tchar(), curlx_convert_tchar_to_UTF8() @@ -54,7 +54,7 @@ char *curlx_convert_wchar_to_UTF8(const wchar_t *str_w); * ensure that the curl memdebug override macros do not replace them. */ -#if defined(UNICODE) && defined(WIN32) +#if defined(UNICODE) && defined(_WIN32) #define curlx_convert_UTF8_to_tchar(ptr) curlx_convert_UTF8_to_wchar((ptr)) #define curlx_convert_tchar_to_UTF8(ptr) curlx_convert_wchar_to_UTF8((ptr)) @@ -78,7 +78,7 @@ typedef union { const unsigned char *const_tbyte_ptr; } xcharp_u; -#endif /* UNICODE && WIN32 */ +#endif /* UNICODE && _WIN32 */ #define curlx_unicodefree(ptr) \ do { \ diff --git a/external/curl/lib/curl_ntlm_core.c b/external/curl/lib/curl_ntlm_core.c index cc0ed9167..6f6d75c03 100644 --- a/external/curl/lib/curl_ntlm_core.c +++ b/external/curl/lib/curl_ntlm_core.c @@ -111,6 +111,7 @@ # include #else # error "Can't compile NTLM support without a crypto library with DES." +# define CURL_NTLM_NOT_SUPPORTED #endif #include "urldata.h" @@ -130,6 +131,7 @@ #define NTLMv2_BLOB_SIGNATURE "\x01\x01\x00\x00" #define NTLMv2_BLOB_LEN (44 -16 + ntlm->target_info_len + 4) +#if !defined(CURL_NTLM_NOT_SUPPORTED) /* * Turns a 56-bit key into being 64-bit wide. */ @@ -144,6 +146,7 @@ static void extend_key_56_to_64(const unsigned char *key_56, char *key) key[6] = (unsigned char)(((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6)); key[7] = (unsigned char) ((key_56[6] << 1) & 0xFF); } +#endif #if defined(USE_OPENSSL_DES) || defined(USE_WOLFSSL) /* @@ -337,6 +340,10 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys, encrypt_des(plaintext, results, keys); encrypt_des(plaintext, results + 8, keys + 7); encrypt_des(plaintext, results + 16, keys + 14); +#else + (void)keys; + (void)plaintext; + (void)results; #endif } @@ -347,9 +354,11 @@ CURLcode Curl_ntlm_core_mk_lm_hash(const char *password, unsigned char *lmbuffer /* 21 bytes */) { unsigned char pw[14]; +#if !defined(CURL_NTLM_NOT_SUPPORTED) static const unsigned char magic[] = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 /* i.e. KGS!@#$% */ }; +#endif size_t len = CURLMIN(strlen(password), 14); Curl_strntoupper((char *)pw, password, len); diff --git a/external/curl/lib/curl_ntlm_wb.c b/external/curl/lib/curl_ntlm_wb.c index aa7bea75e..b087a37a3 100644 --- a/external/curl/lib/curl_ntlm_wb.c +++ b/external/curl/lib/curl_ntlm_wb.c @@ -68,7 +68,9 @@ /* Portable 'sclose_nolog' used only in child process instead of 'sclose' to avoid fooling the socket leak detector */ -#if defined(HAVE_CLOSESOCKET) +#ifdef HAVE_PIPE +# define sclose_nolog(x) close((x)) +#elif defined(HAVE_CLOSESOCKET) # define sclose_nolog(x) closesocket((x)) #elif defined(HAVE_CLOSESOCKET_CAMEL) # define sclose_nolog(x) CloseSocket((x)) @@ -189,7 +191,7 @@ static CURLcode ntlm_wb_init(struct Curl_easy *data, struct ntlmdata *ntlm, goto done; } - if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, sockfds)) { + if(wakeup_create(sockfds)) { failf(data, "Could not open socket pair. errno %d: %s", errno, Curl_strerror(errno, buffer, sizeof(buffer))); goto done; @@ -197,8 +199,8 @@ static CURLcode ntlm_wb_init(struct Curl_easy *data, struct ntlmdata *ntlm, child_pid = fork(); if(child_pid == -1) { - sclose(sockfds[0]); - sclose(sockfds[1]); + wakeup_close(sockfds[0]); + wakeup_close(sockfds[1]); failf(data, "Could not fork. errno %d: %s", errno, Curl_strerror(errno, buffer, sizeof(buffer))); goto done; @@ -268,7 +270,7 @@ static CURLcode ntlm_wb_response(struct Curl_easy *data, struct ntlmdata *ntlm, Curl_dyn_init(&b, MAX_NTLM_WB_RESPONSE); while(len_in > 0) { - ssize_t written = swrite(ntlm->ntlm_auth_hlpr_socket, input, len_in); + ssize_t written = wakeup_write(ntlm->ntlm_auth_hlpr_socket, input, len_in); if(written == -1) { /* Interrupted by a signal, retry it */ if(errno == EINTR) @@ -282,7 +284,7 @@ static CURLcode ntlm_wb_response(struct Curl_easy *data, struct ntlmdata *ntlm, /* Read one line */ while(1) { ssize_t size = - sread(ntlm->ntlm_auth_hlpr_socket, buf, data->set.buffer_size); + wakeup_read(ntlm->ntlm_auth_hlpr_socket, buf, data->set.buffer_size); if(size == -1) { if(errno == EINTR) continue; diff --git a/external/curl/lib/curl_path.h b/external/curl/lib/curl_path.h index 9ed09dea8..cbe51c221 100644 --- a/external/curl/lib/curl_path.h +++ b/external/curl/lib/curl_path.h @@ -28,7 +28,7 @@ #include #include "urldata.h" -#ifdef WIN32 +#ifdef _WIN32 # undef PATH_MAX # define PATH_MAX MAX_PATH # ifndef R_OK diff --git a/external/curl/lib/curl_rtmp.c b/external/curl/lib/curl_rtmp.c index 406fb42ac..f7cf54e88 100644 --- a/external/curl/lib/curl_rtmp.c +++ b/external/curl/lib/curl_rtmp.c @@ -39,7 +39,7 @@ /* The last #include file should be: */ #include "memdebug.h" -#if defined(WIN32) && !defined(USE_LWIPSOCK) +#if defined(_WIN32) && !defined(USE_LWIPSOCK) #define setsockopt(a,b,c,d,e) (setsockopt)(a,b,c,(const char *)d,(int)e) #define SET_RCVTIMEO(tv,s) int tv = s*1000 #elif defined(LWIP_SO_SNDRCVTIMEO_NONSTANDARD) diff --git a/external/curl/lib/curl_sasl.c b/external/curl/lib/curl_sasl.c index 91ddf1062..78ad298f2 100644 --- a/external/curl/lib/curl_sasl.c +++ b/external/curl/lib/curl_sasl.c @@ -262,6 +262,8 @@ static void sasl_state(struct SASL *sasl, struct Curl_easy *data, sasl->state = newstate; } +#if defined(USE_NTLM) || defined(USE_GSASL) || defined(USE_KERBEROS5) || \ + !defined(CURL_DISABLE_DIGEST_AUTH) /* Get the SASL server message and convert it to binary. */ static CURLcode get_server_message(struct SASL *sasl, struct Curl_easy *data, struct bufref *out) @@ -284,6 +286,7 @@ static CURLcode get_server_message(struct SASL *sasl, struct Curl_easy *data, } return result; } +#endif /* Encode the outgoing SASL message. */ static CURLcode build_message(struct SASL *sasl, struct bufref *msg) diff --git a/external/curl/lib/curl_setup.h b/external/curl/lib/curl_setup.h index ba14972e2..a08784140 100644 --- a/external/curl/lib/curl_setup.h +++ b/external/curl/lib/curl_setup.h @@ -28,6 +28,11 @@ #define CURL_NO_OLDIES #endif +/* Set default _WIN32_WINNT */ +#ifdef __MINGW32__ +#include <_mingw.h> +#endif + /* * Disable Visual Studio warnings: * 4127 "conditional expression is constant" @@ -36,15 +41,7 @@ #pragma warning(disable:4127) #endif -/* - * Define WIN32 when build target is Win32 API - */ - -#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) -#define WIN32 -#endif - -#ifdef WIN32 +#ifdef _WIN32 /* * Don't include unneeded stuff in Windows headers to avoid compiler * warnings and macro clashes. @@ -82,7 +79,7 @@ #ifdef _WIN32_WCE # include "config-win32ce.h" #else -# ifdef WIN32 +# ifdef _WIN32 # include "config-win32.h" # endif #endif @@ -214,6 +211,23 @@ # define CURL_DISABLE_RTSP #endif +/* + * When HTTP is disabled, disable HTTP-only features + */ + +#if defined(CURL_DISABLE_HTTP) +# define CURL_DISABLE_ALTSVC 1 +# define CURL_DISABLE_COOKIES 1 +# define CURL_DISABLE_BASIC_AUTH 1 +# define CURL_DISABLE_BEARER_AUTH 1 +# define CURL_DISABLE_AWS 1 +# define CURL_DISABLE_DOH 1 +# define CURL_DISABLE_FORM_API 1 +# define CURL_DISABLE_HEADERS_API 1 +# define CURL_DISABLE_HSTS 1 +# define CURL_DISABLE_HTTP_AUTH 1 +#endif + /* ================================================================ */ /* No system header file shall be included in this file before this */ /* point. */ @@ -331,23 +345,6 @@ #include #endif -#ifdef __POCC__ -# include -# include -# define sys_nerr EILSEQ -#endif - -/* - * Salford-C kludge section (mostly borrowed from wxWidgets). - */ -#ifdef __SALFORDC__ - #pragma suppress 353 /* Possible nested comments */ - #pragma suppress 593 /* Define not used */ - #pragma suppress 61 /* enum has no name */ - #pragma suppress 106 /* unnamed, unused parameter */ - #include -#endif - /* * Large file (>2Gb) support using WIN32 functions. */ @@ -500,11 +497,11 @@ 5. set dir/file naming defines */ -#ifdef WIN32 +#ifdef _WIN32 # define DIR_CHAR "\\" -#else /* WIN32 */ +#else /* _WIN32 */ # ifdef MSDOS /* Watt-32 */ @@ -529,48 +526,19 @@ # define DIR_CHAR "/" -# ifndef fileno /* sunos 4 have this as a macro! */ - int fileno(FILE *stream); -# endif - -#endif /* WIN32 */ - -/* - * msvc 6.0 requires PSDK in order to have INET6_ADDRSTRLEN - * defined in ws2tcpip.h as well as to provide IPv6 support. - * Does not apply if lwIP is used. - */ - -#if defined(_MSC_VER) && !defined(__POCC__) && !defined(USE_LWIPSOCK) -# if !defined(HAVE_WS2TCPIP_H) || \ - ((_MSC_VER < 1300) && !defined(INET6_ADDRSTRLEN)) -# undef HAVE_GETADDRINFO_THREADSAFE -# undef HAVE_FREEADDRINFO -# undef HAVE_GETADDRINFO -# undef ENABLE_IPV6 -# endif -#endif +#endif /* _WIN32 */ /* ---------------------------------------------------------------- */ /* resolver specialty compile-time defines */ /* CURLRES_* defines to use in the host*.c sources */ /* ---------------------------------------------------------------- */ -/* - * lcc-win32 doesn't have _beginthreadex(), lacks threads support. - */ - -#if defined(__LCC__) && defined(WIN32) -# undef USE_THREADS_POSIX -# undef USE_THREADS_WIN32 -#endif - /* * MSVC threads support requires a multi-threaded runtime library. * _beginthreadex() is not available in single-threaded ones. */ -#if defined(_MSC_VER) && !defined(__POCC__) && !defined(_MT) +#if defined(_MSC_VER) && !defined(_MT) # undef USE_THREADS_POSIX # undef USE_THREADS_WIN32 #endif @@ -581,6 +549,9 @@ #if defined(ENABLE_IPV6) && defined(HAVE_GETADDRINFO) # define CURLRES_IPV6 +#elif defined(ENABLE_IPV6) && (defined(_WIN32) || defined(__CYGWIN__)) +/* assume on Windows that IPv6 without getaddrinfo is a broken build */ +# error "Unexpected build: IPv6 is enabled but getaddrinfo was not found." #else # define CURLRES_IPV4 #endif @@ -600,35 +571,6 @@ /* ---------------------------------------------------------------- */ -/* - * msvc 6.0 does not have struct sockaddr_storage and - * does not define IPPROTO_ESP in winsock2.h. But both - * are available if PSDK is properly installed. - */ - -#if defined(_MSC_VER) && !defined(__POCC__) -# if !defined(HAVE_WINSOCK2_H) || ((_MSC_VER < 1300) && !defined(IPPROTO_ESP)) -# undef HAVE_STRUCT_SOCKADDR_STORAGE -# endif -#endif - -/* - * Intentionally fail to build when using msvc 6.0 without PSDK installed. - * The brave of heart can circumvent this, defining ALLOW_MSVC6_WITHOUT_PSDK - * in lib/config-win32.h although absolutely discouraged and unsupported. - */ - -#if defined(_MSC_VER) && !defined(__POCC__) -# if !defined(HAVE_WINDOWS_H) || ((_MSC_VER < 1300) && !defined(_FILETIME_)) -# if !defined(ALLOW_MSVC6_WITHOUT_PSDK) -# error MSVC 6.0 requires "February 2003 Platform SDK" a.k.a. \ - "Windows Server 2003 PSDK" -# else -# define CURL_DISABLE_LDAP 1 -# endif -# endif -#endif - #if defined(HAVE_LIBIDN2) && defined(HAVE_IDN2_H) && !defined(USE_WIN32_IDN) /* The lib and header are present */ #define USE_LIBIDN2 @@ -694,6 +636,18 @@ # define WARN_UNUSED_RESULT #endif +/* noreturn attribute */ + +#if !defined(CURL_NORETURN) +#if (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__clang__) +# define CURL_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) +# define CURL_NORETURN __declspec(noreturn) +#else +# define CURL_NORETURN +#endif +#endif + /* * Include macros and defines that should only be processed once. */ @@ -752,7 +706,7 @@ /* In Windows the default file mode is text but an application can override it. Therefore we specify it explicitly. https://github.com/curl/curl/pull/258 */ -#if defined(WIN32) || defined(MSDOS) +#if defined(_WIN32) || defined(MSDOS) #define FOPEN_READTEXT "rt" #define FOPEN_WRITETEXT "wt" #define FOPEN_APPENDTEXT "at" @@ -807,7 +761,8 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf, #define UNITTEST static #endif -#if defined(USE_NGHTTP2) || defined(USE_HYPER) +/* Hyper supports HTTP2 also, but Curl's integration with Hyper does not */ +#if defined(USE_NGHTTP2) #define USE_HTTP2 #endif @@ -820,11 +775,11 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf, /* Certain Windows implementations are not aligned with what curl expects, so always use the local one on this platform. E.g. the mingw-w64 implementation can return wrong results for non-ASCII inputs. */ -#if defined(HAVE_BASENAME) && defined(WIN32) +#if defined(HAVE_BASENAME) && defined(_WIN32) #undef HAVE_BASENAME #endif -#if defined(USE_UNIX_SOCKETS) && defined(WIN32) +#if defined(USE_UNIX_SOCKETS) && defined(_WIN32) # if !defined(UNIX_PATH_MAX) /* Replicating logic present in afunix.h (distributed with newer Windows 10 SDK versions only) */ diff --git a/external/curl/lib/curl_setup_once.h b/external/curl/lib/curl_setup_once.h index c1ed05907..bf0ee663d 100644 --- a/external/curl/lib/curl_setup_once.h +++ b/external/curl/lib/curl_setup_once.h @@ -56,7 +56,7 @@ #include #endif -#ifdef WIN32 +#ifdef _WIN32 #include #include #endif @@ -70,11 +70,7 @@ #endif #ifdef USE_WOLFSSL -# if defined(HAVE_STDINT_H) -# include -# elif defined(HAVE_INTTYPES_H) -# include -# endif +#include #endif #ifdef USE_SCHANNEL diff --git a/external/curl/lib/curl_sspi.h b/external/curl/lib/curl_sspi.h index 5af7c2483..b26c39156 100644 --- a/external/curl/lib/curl_sspi.h +++ b/external/curl/lib/curl_sspi.h @@ -88,6 +88,22 @@ extern PSecurityFunctionTable s_pSecFn; # define CRYPT_E_REVOKED ((HRESULT)0x80092010L) #endif +#ifndef CRYPT_E_NO_REVOCATION_DLL +# define CRYPT_E_NO_REVOCATION_DLL ((HRESULT)0x80092011L) +#endif + +#ifndef CRYPT_E_NO_REVOCATION_CHECK +# define CRYPT_E_NO_REVOCATION_CHECK ((HRESULT)0x80092012L) +#endif + +#ifndef CRYPT_E_REVOCATION_OFFLINE +# define CRYPT_E_REVOCATION_OFFLINE ((HRESULT)0x80092013L) +#endif + +#ifndef CRYPT_E_NOT_IN_REVOCATION_DATABASE +# define CRYPT_E_NOT_IN_REVOCATION_DATABASE ((HRESULT)0x80092014L) +#endif + #ifdef UNICODE # define SECFLAG_WINNT_AUTH_IDENTITY \ (unsigned long)SEC_WINNT_AUTH_IDENTITY_UNICODE diff --git a/external/curl/lib/curl_trc.c b/external/curl/lib/curl_trc.c index e53b30573..0ebe40b8f 100644 --- a/external/curl/lib/curl_trc.c +++ b/external/curl/lib/curl_trc.c @@ -61,10 +61,6 @@ void Curl_debug(struct Curl_easy *data, curl_infotype type, "* ", "< ", "> ", "{ ", "} ", "{ ", "} " }; if(data->set.fdebug) { bool inCallback = Curl_is_in_callback(data); - /* CURLOPT_DEBUGFUNCTION doc says the user may set CURLOPT_PRIVATE to - distinguish their handle from internal handles. */ - if(data->internal) - DEBUGASSERT(!data->set.private_data); Curl_set_in_callback(data, true); (void)(*data->set.fdebug)(data, type, ptr, size, data->set.debugdata); Curl_set_in_callback(data, inCallback); @@ -109,6 +105,8 @@ void Curl_failf(struct Curl_easy *data, const char *fmt, ...) } } +#if !defined(CURL_DISABLE_VERBOSE_STRINGS) + /* Curl_infof() is for info message along the way */ #define MAXINFO 2048 @@ -128,13 +126,11 @@ void Curl_infof(struct Curl_easy *data, const char *fmt, ...) } } -#if !defined(CURL_DISABLE_VERBOSE_STRINGS) - void Curl_trc_cf_infof(struct Curl_easy *data, struct Curl_cfilter *cf, const char *fmt, ...) { DEBUGASSERT(cf); - if(data && Curl_trc_cf_is_verbose(cf, data)) { + if(Curl_trc_cf_is_verbose(cf, data)) { va_list ap; int len; char buffer[MAXINFO + 2]; @@ -232,24 +228,14 @@ CURLcode Curl_trc_init(void) if(config) { return Curl_trc_opt(config); } -#endif +#endif /* DEBUGBUILD */ return CURLE_OK; } -#else /* !CURL_DISABLE_VERBOSE_STRINGS) */ +#else /* defined(CURL_DISABLE_VERBOSE_STRINGS) */ CURLcode Curl_trc_init(void) { return CURLE_OK; } -#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) -void Curl_trc_cf_infof(struct Curl_easy *data, struct Curl_cfilter *cf, - const char *fmt, ...) -{ - (void)data; - (void)cf; - (void)fmt; -} -#endif - -#endif /* !DEBUGBUILD */ +#endif /* !defined(CURL_DISABLE_VERBOSE_STRINGS) */ diff --git a/external/curl/lib/curl_trc.h b/external/curl/lib/curl_trc.h index 84b5471d8..ade9108ac 100644 --- a/external/curl/lib/curl_trc.h +++ b/external/curl/lib/curl_trc.h @@ -54,19 +54,6 @@ CURLcode Curl_trc_opt(const char *config); void Curl_debug(struct Curl_easy *data, curl_infotype type, char *ptr, size_t size); -/** - * Output an informational message when transfer's verbose logging is enabled. - */ -void Curl_infof(struct Curl_easy *data, -#if defined(__GNUC__) && !defined(printf) && \ - defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ - !defined(__MINGW32__) - const char *fmt, ...) - __attribute__((format(printf, 2, 3))); -#else - const char *fmt, ...); -#endif - /** * Output a failure message on registered callbacks for transfer. */ @@ -82,39 +69,15 @@ void Curl_failf(struct Curl_easy *data, #define failf Curl_failf -/** - * Output an informational message when both transfer's verbose logging - * and connection filters verbose logging are enabled. - */ -void Curl_trc_cf_infof(struct Curl_easy *data, struct Curl_cfilter *cf, -#if defined(__GNUC__) && !defined(printf) && \ - defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ - !defined(__MINGW32__) - const char *fmt, ...) - __attribute__((format(printf, 3, 4))); -#else - const char *fmt, ...); -#endif - #define CURL_LOG_LVL_NONE 0 #define CURL_LOG_LVL_INFO 1 -#if !defined(CURL_DISABLE_VERBOSE_STRINGS) -/* informational messages enabled */ - -#define Curl_trc_is_verbose(data) ((data) && (data)->set.verbose) -#define Curl_trc_cf_is_verbose(cf, data) \ - ((data) && (data)->set.verbose && \ - (cf) && (cf)->cft->log_level >= CURL_LOG_LVL_INFO) - -/* explainer: we have some mix configuration and werror settings - * that define HAVE_VARIADIC_MACROS_C99 even though C89 is enforced - * on gnuc and some other compiler. Need to treat carefully. - */ -#if defined(HAVE_VARIADIC_MACROS_C99) && \ - defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define CURL_HAVE_C99 +#endif +#ifdef CURL_HAVE_C99 #define infof(data, ...) \ do { if(Curl_trc_is_verbose(data)) \ Curl_infof(data, __VA_ARGS__); } while(0) @@ -122,29 +85,62 @@ void Curl_trc_cf_infof(struct Curl_easy *data, struct Curl_cfilter *cf, do { if(Curl_trc_cf_is_verbose(cf, data)) \ Curl_trc_cf_infof(data, cf, __VA_ARGS__); } while(0) -#else /* no variadic macro args */ +#else #define infof Curl_infof #define CURL_TRC_CF Curl_trc_cf_infof -#endif /* variadic macro args */ +#endif + +#ifndef CURL_DISABLE_VERBOSE_STRINGS +/* informational messages enabled */ -#else /* !CURL_DISABLE_VERBOSE_STRINGS */ +#define Curl_trc_is_verbose(data) ((data) && (data)->set.verbose) +#define Curl_trc_cf_is_verbose(cf, data) \ + ((data) && (data)->set.verbose && \ + (cf) && (cf)->cft->log_level >= CURL_LOG_LVL_INFO) + +/** + * Output an informational message when transfer's verbose logging is enabled. + */ +void Curl_infof(struct Curl_easy *data, +#if defined(__GNUC__) && !defined(printf) && defined(CURL_HAVE_C99) && \ + !defined(__MINGW32__) + const char *fmt, ...) + __attribute__((format(printf, 2, 3))); +#else + const char *fmt, ...); +#endif + +/** + * Output an informational message when both transfer's verbose logging + * and connection filters verbose logging are enabled. + */ +void Curl_trc_cf_infof(struct Curl_easy *data, struct Curl_cfilter *cf, +#if defined(__GNUC__) && !defined(printf) && defined(CURL_HAVE_C99) && \ + !defined(__MINGW32__) + const char *fmt, ...) + __attribute__((format(printf, 3, 4))); +#else + const char *fmt, ...); +#endif + +#else /* defined(CURL_DISABLE_VERBOSE_STRINGS) */ /* All informational messages are not compiled in for size savings */ #define Curl_trc_is_verbose(d) ((void)(d), FALSE) #define Curl_trc_cf_is_verbose(x,y) ((void)(x), (void)(y), FALSE) -#if defined(HAVE_VARIADIC_MACROS_C99) -#define infof(...) Curl_nop_stmt -#define CURL_TRC_CF(...) Curl_nop_stmt -#define Curl_trc_cf_infof(...) Curl_nop_stmt -#elif defined(HAVE_VARIADIC_MACROS_GCC) -#define infof(x...) Curl_nop_stmt -#define CURL_TRC_CF(x...) Curl_nop_stmt -#define Curl_trc_cf_infof(x...) Curl_nop_stmt -#else -#error "missing VARIADIC macro define, fix and rebuild!" -#endif +static void Curl_infof(struct Curl_easy *data, const char *fmt, ...) +{ + (void)data; (void)fmt; +} + +static void Curl_trc_cf_infof(struct Curl_easy *data, + struct Curl_cfilter *cf, + const char *fmt, ...) +{ + (void)data; (void)cf; (void)fmt; +} -#endif /* CURL_DISABLE_VERBOSE_STRINGS */ +#endif /* !defined(CURL_DISABLE_VERBOSE_STRINGS) */ #endif /* HEADER_CURL_TRC_H */ diff --git a/external/curl/lib/doh.c b/external/curl/lib/doh.c index bb0c89ec6..1d928e92c 100644 --- a/external/curl/lib/doh.c +++ b/external/curl/lib/doh.c @@ -242,7 +242,7 @@ static CURLcode dohprobe(struct Curl_easy *data, /* pass in the struct pointer via a local variable to please coverity and the gcc typecheck helpers */ struct dynbuf *resp = &p->serverdoh; - doh->internal = true; + doh->state.internal = true; ERROR_CHECK_SETOPT(CURLOPT_URL, url); ERROR_CHECK_SETOPT(CURLOPT_DEFAULT_PROTOCOL, "https"); ERROR_CHECK_SETOPT(CURLOPT_WRITEFUNCTION, doh_write_cb); @@ -252,6 +252,7 @@ static CURLcode dohprobe(struct Curl_easy *data, ERROR_CHECK_SETOPT(CURLOPT_HTTPHEADER, headers); #ifdef USE_HTTP2 ERROR_CHECK_SETOPT(CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS); + ERROR_CHECK_SETOPT(CURLOPT_PIPEWAIT, 1L); #endif #ifndef CURLDEBUG /* enforce HTTPS if not debug */ @@ -339,9 +340,10 @@ static CURLcode dohprobe(struct Curl_easy *data, doh->set.dohfor = data; /* identify for which transfer this is done */ p->easy = doh; - /* DoH private_data must be null because the user must have a way to - distinguish their transfer's handle from DoH handles in user - callbacks (ie SSL CTX callback). */ + /* DoH handles must not inherit private_data. The handles may be passed to + the user via callbacks and the user will be able to identify them as + internal handles because private data is not set. The user can then set + private_data via CURLOPT_PRIVATE if they so choose. */ DEBUGASSERT(!doh->set.private_data); if(curl_multi_add_handle(multi, doh)) @@ -372,7 +374,7 @@ struct Curl_addrinfo *Curl_doh(struct Curl_easy *data, int slot; struct dohdata *dohp; struct connectdata *conn = data->conn; - *waitp = TRUE; /* this never returns synchronously */ + *waitp = FALSE; (void)hostname; (void)port; @@ -380,7 +382,7 @@ struct Curl_addrinfo *Curl_doh(struct Curl_easy *data, DEBUGASSERT(conn); /* start clean, consider allocating this struct on demand */ - dohp = data->req.doh = calloc(sizeof(struct dohdata), 1); + dohp = data->req.doh = calloc(1, sizeof(struct dohdata)); if(!dohp) return NULL; @@ -412,12 +414,14 @@ struct Curl_addrinfo *Curl_doh(struct Curl_easy *data, dohp->pending++; } #endif + *waitp = TRUE; /* this never returns synchronously */ return NULL; error: curl_slist_free_all(dohp->headers); data->req.doh->headers = NULL; for(slot = 0; slot < DOH_PROBE_SLOTS; slot++) { + (void)curl_multi_remove_handle(data->multi, dohp->probe[slot].easy); Curl_close(&dohp->probe[slot].easy); } Curl_safefree(data->req.doh); @@ -787,8 +791,8 @@ static void showdoh(struct Curl_easy *data, * must be an associated call later to Curl_freeaddrinfo(). */ -static struct Curl_addrinfo * -doh2ai(const struct dohentry *de, const char *hostname, int port) +static CURLcode doh2ai(const struct dohentry *de, const char *hostname, + int port, struct Curl_addrinfo **aip) { struct Curl_addrinfo *ai; struct Curl_addrinfo *prevai = NULL; @@ -801,9 +805,10 @@ doh2ai(const struct dohentry *de, const char *hostname, int port) int i; size_t hostlen = strlen(hostname) + 1; /* include null-terminator */ - if(!de) - /* no input == no output! */ - return NULL; + DEBUGASSERT(de); + + if(!de->numaddr) + return CURLE_COULDNT_RESOLVE_HOST; for(i = 0; i < de->numaddr; i++) { size_t ss_size; @@ -876,8 +881,9 @@ doh2ai(const struct dohentry *de, const char *hostname, int port) Curl_freeaddrinfo(firstai); firstai = NULL; } + *aip = firstai; - return firstai; + return result; } #ifndef CURL_DISABLE_VERBOSE_STRINGS @@ -898,6 +904,7 @@ UNITTEST void de_cleanup(struct dohentry *d) CURLcode Curl_doh_is_resolved(struct Curl_easy *data, struct Curl_dns_entry **dnsp) { + struct connectdata *conn = data->conn; CURLcode result; struct dohdata *dohp = data->req.doh; *dnsp = NULL; /* defaults to no response */ @@ -906,7 +913,7 @@ CURLcode Curl_doh_is_resolved(struct Curl_easy *data, if(!dohp->probe[DOH_PROBE_SLOT_IPADDR_V4].easy && !dohp->probe[DOH_PROBE_SLOT_IPADDR_V6].easy) { - failf(data, "Could not DoH-resolve: %s", data->state.async.hostname); + failf(data, "Could not DoH-resolve: %s", conn->resolve_async.hostname); return CONN_IS_PROXIED(data->conn)?CURLE_COULDNT_RESOLVE_PROXY: CURLE_COULDNT_RESOLVE_HOST; } @@ -932,10 +939,12 @@ CURLcode Curl_doh_is_resolved(struct Curl_easy *data, p->dnstype, &de); Curl_dyn_free(&p->serverdoh); +#ifndef CURL_DISABLE_VERBOSE_STRINGS if(rc[slot]) { infof(data, "DoH: %s type %s for %s", doh_strerror(rc[slot]), type2name(p->dnstype), dohp->host); } +#endif } /* next slot */ result = CURLE_COULDNT_RESOLVE_HOST; /* until we know better */ @@ -947,10 +956,10 @@ CURLcode Curl_doh_is_resolved(struct Curl_easy *data, infof(data, "DoH Host name: %s", dohp->host); showdoh(data, &de); - ai = doh2ai(&de, dohp->host, dohp->port); - if(!ai) { + result = doh2ai(&de, dohp->host, dohp->port, &ai); + if(result) { de_cleanup(&de); - return CURLE_OUT_OF_MEMORY; + return result; } if(data->share) @@ -967,7 +976,7 @@ CURLcode Curl_doh_is_resolved(struct Curl_easy *data, Curl_freeaddrinfo(ai); } else { - data->state.async.dns = dns; + conn->resolve_async.dns = dns; *dnsp = dns; result = CURLE_OK; /* address resolution OK */ } diff --git a/external/curl/lib/dynbuf.c b/external/curl/lib/dynbuf.c index 0c9c491ae..2973d8da2 100644 --- a/external/curl/lib/dynbuf.c +++ b/external/curl/lib/dynbuf.c @@ -77,6 +77,7 @@ static CURLcode dyn_nappend(struct dynbuf *s, DEBUGASSERT(indx < s->toobig); DEBUGASSERT(!s->leng || s->bufr); DEBUGASSERT(a <= s->toobig); + DEBUGASSERT(!len || mem); if(fit > s->toobig) { Curl_dyn_free(s); @@ -174,10 +175,12 @@ CURLcode Curl_dyn_addn(struct dynbuf *s, const void *mem, size_t len) */ CURLcode Curl_dyn_add(struct dynbuf *s, const char *str) { - size_t n = strlen(str); + size_t n; + DEBUGASSERT(str); DEBUGASSERT(s); DEBUGASSERT(s->init == DYNINIT); DEBUGASSERT(!s->leng || s->bufr); + n = strlen(str); return dyn_nappend(s, (unsigned char *)str, n); } @@ -191,6 +194,7 @@ CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap) DEBUGASSERT(s); DEBUGASSERT(s->init == DYNINIT); DEBUGASSERT(!s->leng || s->bufr); + DEBUGASSERT(fmt); rc = Curl_dyn_vprintf(s, fmt, ap); if(!rc) diff --git a/external/curl/lib/dynhds.c b/external/curl/lib/dynhds.c index 979b3e825..d7548959b 100644 --- a/external/curl/lib/dynhds.c +++ b/external/curl/lib/dynhds.c @@ -27,6 +27,10 @@ #include "strcase.h" /* The last 3 #include files should be in this order */ +#ifdef USE_NGHTTP2 +#include +#include +#endif /* USE_NGHTTP2 */ #include "curl_printf.h" #include "curl_memory.h" #include "memdebug.h" @@ -365,3 +369,28 @@ CURLcode Curl_dynhds_h1_dprint(struct dynhds *dynhds, struct dynbuf *dbuf) return result; } +#ifdef USE_NGHTTP2 + +nghttp2_nv *Curl_dynhds_to_nva(struct dynhds *dynhds, size_t *pcount) +{ + nghttp2_nv *nva = calloc(1, sizeof(nghttp2_nv) * dynhds->hds_len); + size_t i; + + *pcount = 0; + if(!nva) + return NULL; + + for(i = 0; i < dynhds->hds_len; ++i) { + struct dynhds_entry *e = dynhds->hds[i]; + DEBUGASSERT(e); + nva[i].name = (unsigned char *)e->name; + nva[i].namelen = e->namelen; + nva[i].value = (unsigned char *)e->value; + nva[i].valuelen = e->valuelen; + nva[i].flags = NGHTTP2_NV_FLAG_NONE; + } + *pcount = dynhds->hds_len; + return nva; +} + +#endif /* USE_NGHTTP2 */ diff --git a/external/curl/lib/dynhds.h b/external/curl/lib/dynhds.h index 8a053480e..3b536000a 100644 --- a/external/curl/lib/dynhds.h +++ b/external/curl/lib/dynhds.h @@ -171,4 +171,13 @@ CURLcode Curl_dynhds_h1_add_line(struct dynhds *dynhds, */ CURLcode Curl_dynhds_h1_dprint(struct dynhds *dynhds, struct dynbuf *dbuf); +#ifdef USE_NGHTTP2 + +#include +#include + +nghttp2_nv *Curl_dynhds_to_nva(struct dynhds *dynhds, size_t *pcount); + +#endif /* USE_NGHTTP2 */ + #endif /* HEADER_CURL_DYNHDS_H */ diff --git a/external/curl/lib/easy.c b/external/curl/lib/easy.c index 6b4fb8efe..322d1a41b 100644 --- a/external/curl/lib/easy.c +++ b/external/curl/lib/easy.c @@ -112,7 +112,7 @@ static curl_simple_lock s_lock = CURL_SIMPLE_LOCK_INIT; #define system_strdup strdup #endif -#if defined(_MSC_VER) && defined(_DLL) && !defined(__POCC__) +#if defined(_MSC_VER) && defined(_DLL) # pragma warning(disable:4232) /* MSVC extension, dllimport identity */ #endif @@ -125,11 +125,11 @@ curl_free_callback Curl_cfree = (curl_free_callback)free; curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc; curl_strdup_callback Curl_cstrdup = (curl_strdup_callback)system_strdup; curl_calloc_callback Curl_ccalloc = (curl_calloc_callback)calloc; -#if defined(WIN32) && defined(UNICODE) +#if defined(_WIN32) && defined(UNICODE) curl_wcsdup_callback Curl_cwcsdup = Curl_wcsdup; #endif -#if defined(_MSC_VER) && defined(_DLL) && !defined(__POCC__) +#if defined(_MSC_VER) && defined(_DLL) # pragma warning(default:4232) /* MSVC extension, dllimport identity */ #endif @@ -153,7 +153,7 @@ static CURLcode global_init(long flags, bool memoryfuncs) Curl_crealloc = (curl_realloc_callback)realloc; Curl_cstrdup = (curl_strdup_callback)system_strdup; Curl_ccalloc = (curl_calloc_callback)calloc; -#if defined(WIN32) && defined(UNICODE) +#if defined(_WIN32) && defined(UNICODE) Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup; #endif } @@ -188,18 +188,10 @@ static CURLcode global_init(long flags, bool memoryfuncs) goto fail; } -#if defined(USE_SSH) if(Curl_ssh_init()) { + DEBUGF(fprintf(stderr, "Error: Curl_ssh_init failed\n")); goto fail; } -#endif - -#ifdef USE_WOLFSSH - if(WS_SUCCESS != wolfSSH_Init()) { - DEBUGF(fprintf(stderr, "Error: wolfSSH_Init failed\n")); - return CURLE_FAILED_INIT; - } -#endif easy_init_flags = flags; @@ -295,7 +287,7 @@ void curl_global_cleanup(void) Curl_ssl_cleanup(); Curl_resolver_global_cleanup(); -#ifdef WIN32 +#ifdef _WIN32 Curl_win32_cleanup(easy_init_flags); #endif @@ -752,7 +744,7 @@ static CURLcode easy_perform(struct Curl_easy *data, bool events) return CURLE_RECURSIVE_API_CALL; /* Copy the MAXCONNECTS option to the multi handle */ - curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, data->set.maxconnects); + curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, (long)data->set.maxconnects); mcode = curl_multi_add_handle(multi, data); if(mcode) { @@ -845,8 +837,10 @@ static CURLcode dupset(struct Curl_easy *dst, struct Curl_easy *src) dst->set = src->set; Curl_mime_initpart(&dst->set.mimepost); - /* clear all string pointers first */ + /* clear all dest string and blob pointers first, in case we error out + mid-function */ memset(dst->set.str, 0, STRING_LAST * sizeof(char *)); + memset(dst->set.blobs, 0, BLOB_LAST * sizeof(struct curl_blob *)); /* duplicate all strings */ for(i = (enum dupstring)0; i< STRING_LASTZEROTERMINATED; i++) { @@ -855,8 +849,6 @@ static CURLcode dupset(struct Curl_easy *dst, struct Curl_easy *src) return result; } - /* clear all blob pointers first */ - memset(dst->set.blobs, 0, BLOB_LAST * sizeof(struct curl_blob *)); /* duplicate all blobs */ for(j = (enum dupblob)0; j < BLOB_LAST; j++) { result = Curl_setblobopt(&dst->set.blobs[j], src->set.blobs[j]); @@ -866,10 +858,13 @@ static CURLcode dupset(struct Curl_easy *dst, struct Curl_easy *src) /* duplicate memory areas pointed to */ i = STRING_COPYPOSTFIELDS; - if(src->set.postfieldsize && src->set.str[i]) { - /* postfieldsize is curl_off_t, Curl_memdup() takes a size_t ... */ - dst->set.str[i] = Curl_memdup(src->set.str[i], - curlx_sotouz(src->set.postfieldsize)); + if(src->set.str[i]) { + if(src->set.postfieldsize == -1) + dst->set.str[i] = strdup(src->set.str[i]); + else + /* postfieldsize is curl_off_t, Curl_memdup() takes a size_t ... */ + dst->set.str[i] = Curl_memdup(src->set.str[i], + curlx_sotouz(src->set.postfieldsize)); if(!dst->set.str[i]) return CURLE_OUT_OF_MEMORY; /* point to the new copy */ @@ -919,18 +914,19 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data) outcurl->progress.callback = data->progress.callback; #ifndef CURL_DISABLE_COOKIES - if(data->cookies) { + outcurl->state.cookielist = NULL; + if(data->cookies && data->state.cookie_engine) { /* If cookies are enabled in the parent handle, we enable them in the clone as well! */ - outcurl->cookies = Curl_cookie_init(data, NULL, outcurl->cookies, + outcurl->cookies = Curl_cookie_init(outcurl, NULL, outcurl->cookies, data->set.cookiesession); if(!outcurl->cookies) goto fail; } - if(data->set.cookielist) { - outcurl->set.cookielist = Curl_slist_duplicate(data->set.cookielist); - if(!outcurl->set.cookielist) + if(data->state.cookielist) { + outcurl->state.cookielist = Curl_slist_duplicate(data->state.cookielist); + if(!outcurl->state.cookielist) goto fail; } #endif @@ -976,33 +972,6 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data) (void)Curl_hsts_loadcb(outcurl, outcurl->hsts); } #endif - /* Clone the resolver handle, if present, for the new handle */ - if(Curl_resolver_duphandle(outcurl, - &outcurl->state.async.resolver, - data->state.async.resolver)) - goto fail; - -#ifdef USE_ARES - { - CURLcode rc; - - rc = Curl_set_dns_servers(outcurl, data->set.str[STRING_DNS_SERVERS]); - if(rc && rc != CURLE_NOT_BUILT_IN) - goto fail; - - rc = Curl_set_dns_interface(outcurl, data->set.str[STRING_DNS_INTERFACE]); - if(rc && rc != CURLE_NOT_BUILT_IN) - goto fail; - - rc = Curl_set_dns_local_ip4(outcurl, data->set.str[STRING_DNS_LOCAL_IP4]); - if(rc && rc != CURLE_NOT_BUILT_IN) - goto fail; - - rc = Curl_set_dns_local_ip6(outcurl, data->set.str[STRING_DNS_LOCAL_IP6]); - if(rc && rc != CURLE_NOT_BUILT_IN) - goto fail; - } -#endif /* USE_ARES */ Curl_initinfo(outcurl); @@ -1016,13 +985,10 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data) if(outcurl) { #ifndef CURL_DISABLE_COOKIES - curl_slist_free_all(outcurl->set.cookielist); - outcurl->set.cookielist = NULL; + free(outcurl->cookies); #endif - Curl_safefree(outcurl->state.buffer); + free(outcurl->state.buffer); Curl_dyn_free(&outcurl->state.headerb); - Curl_safefree(outcurl->state.url); - Curl_safefree(outcurl->state.referer); Curl_altsvc_cleanup(&outcurl->asi); Curl_hsts_cleanup(&outcurl->hsts); Curl_freeset(outcurl); diff --git a/external/curl/lib/easy_lock.h b/external/curl/lib/easy_lock.h index d3fffd0d2..4f6764d42 100644 --- a/external/curl/lib/easy_lock.h +++ b/external/curl/lib/easy_lock.h @@ -93,6 +93,15 @@ static inline void curl_simple_lock_unlock(curl_simple_lock *lock) atomic_store_explicit(lock, false, memory_order_release); } +#elif defined(USE_THREADS_POSIX) && defined(HAVE_PTHREAD_H) + +#include + +#define curl_simple_lock pthread_mutex_t +#define CURL_SIMPLE_LOCK_INIT PTHREAD_MUTEX_INITIALIZER +#define curl_simple_lock_lock(m) pthread_mutex_lock(m) +#define curl_simple_lock_unlock(m) pthread_mutex_unlock(m) + #else #undef GLOBAL_INIT_IS_THREADSAFE diff --git a/external/curl/lib/file.c b/external/curl/lib/file.c index ffa9fb76d..c98507137 100644 --- a/external/curl/lib/file.c +++ b/external/curl/lib/file.c @@ -69,7 +69,7 @@ #include "curl_memory.h" #include "memdebug.h" -#if defined(WIN32) || defined(MSDOS) || defined(__EMX__) +#if defined(_WIN32) || defined(MSDOS) || defined(__EMX__) #define DOS_FILESYSTEM 1 #elif defined(__amigaos4__) #define AMIGA_FILESYSTEM 1 @@ -414,7 +414,6 @@ static CURLcode file_do(struct Curl_easy *data, bool *done) bool size_known; bool fstated = FALSE; char *buf = data->state.buffer; - curl_off_t bytecount = 0; int fd; struct FILEPROTO *file; @@ -563,7 +562,6 @@ static CURLcode file_do(struct Curl_easy *data, bool *done) if(nread <= 0 || (size_known && (expected_size == 0))) break; - bytecount += nread; if(size_known) expected_size -= nread; @@ -571,10 +569,6 @@ static CURLcode file_do(struct Curl_easy *data, bool *done) if(result) return result; - result = Curl_pgrsSetDownloadCounter(data, bytecount); - if(result) - return result; - if(Curl_pgrsUpdate(data)) result = CURLE_ABORTED_BY_CALLBACK; else diff --git a/external/curl/lib/fopen.c b/external/curl/lib/fopen.c index 75b8a7aa5..851279fe1 100644 --- a/external/curl/lib/fopen.c +++ b/external/curl/lib/fopen.c @@ -39,6 +39,51 @@ #include "curl_memory.h" #include "memdebug.h" +/* + The dirslash() function breaks a null-terminated pathname string into + directory and filename components then returns the directory component up + to, *AND INCLUDING*, a final '/'. If there is no directory in the path, + this instead returns a "" string. + + This function returns a pointer to malloc'ed memory. + + The input path to this function is expected to have a file name part. +*/ + +#ifdef _WIN32 +#define PATHSEP "\\" +#define IS_SEP(x) (((x) == '/') || ((x) == '\\')) +#elif defined(MSDOS) || defined(__EMX__) || defined(OS2) +#define PATHSEP "\\" +#define IS_SEP(x) ((x) == '\\') +#else +#define PATHSEP "/" +#define IS_SEP(x) ((x) == '/') +#endif + +static char *dirslash(const char *path) +{ + size_t n; + struct dynbuf out; + DEBUGASSERT(path); + Curl_dyn_init(&out, CURL_MAX_INPUT_LENGTH); + n = strlen(path); + if(n) { + /* find the rightmost path separator, if any */ + while(n && !IS_SEP(path[n-1])) + --n; + /* skip over all the path separators, if any */ + while(n && IS_SEP(path[n-1])) + --n; + } + if(Curl_dyn_addn(&out, path, n)) + return NULL; + /* if there was a directory, append a single trailing slash */ + if(n && Curl_dyn_addn(&out, PATHSEP, 1)) + return NULL; + return Curl_dyn_ptr(&out); +} + /* * Curl_fopen() opens a file for writing with a temp name, to be renamed * to the final name when completed. If there is an existing file using this @@ -50,47 +95,44 @@ CURLcode Curl_fopen(struct Curl_easy *data, const char *filename, FILE **fh, char **tempname) { CURLcode result = CURLE_WRITE_ERROR; - unsigned char randsuffix[9]; + unsigned char randbuf[41]; char *tempstore = NULL; struct_stat sb; int fd = -1; + char *dir = NULL; *tempname = NULL; *fh = fopen(filename, FOPEN_WRITETEXT); if(!*fh) goto fail; - if(fstat(fileno(*fh), &sb) == -1 || !S_ISREG(sb.st_mode)) + if(fstat(fileno(*fh), &sb) == -1 || !S_ISREG(sb.st_mode)) { return CURLE_OK; + } fclose(*fh); *fh = NULL; - result = Curl_rand_alnum(data, randsuffix, sizeof(randsuffix)); + result = Curl_rand_alnum(data, randbuf, sizeof(randbuf)); if(result) goto fail; - tempstore = aprintf("%s.%s.tmp", filename, randsuffix); + dir = dirslash(filename); + if(dir) { + /* The temp file name should not end up too long for the target file + system */ + tempstore = aprintf("%s%s.tmp", dir, randbuf); + free(dir); + } + if(!tempstore) { result = CURLE_OUT_OF_MEMORY; goto fail; } result = CURLE_WRITE_ERROR; - fd = open(tempstore, O_WRONLY | O_CREAT | O_EXCL, 0600); + fd = open(tempstore, O_WRONLY | O_CREAT | O_EXCL, 0600|sb.st_mode); if(fd == -1) goto fail; -#ifdef HAVE_FCHMOD - { - struct_stat nsb; - if((fstat(fd, &nsb) != -1) && - (nsb.st_uid == sb.st_uid) && (nsb.st_gid == sb.st_gid)) { - /* if the user and group are the same, clone the original mode */ - if(fchmod(fd, (mode_t)sb.st_mode) == -1) - goto fail; - } - } -#endif - *fh = fdopen(fd, FOPEN_WRITETEXT); if(!*fh) goto fail; @@ -105,7 +147,6 @@ CURLcode Curl_fopen(struct Curl_easy *data, const char *filename, } free(tempstore); - return result; } diff --git a/external/curl/lib/formdata.c b/external/curl/lib/formdata.c index e40c4bcb0..05dc9b53d 100644 --- a/external/curl/lib/formdata.c +++ b/external/curl/lib/formdata.c @@ -603,9 +603,9 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost, app passed in a bad combo, so we better check for that first. */ if(form->name) { /* copy name (without strdup; possibly not null-terminated) */ - form->name = Curl_memdup(form->name, form->namelength? - form->namelength: - strlen(form->name) + 1); + form->name = Curl_strndup(form->name, form->namelength? + form->namelength: + strlen(form->name)); } if(!form->name) { return_value = CURL_FORMADD_MEMORY; @@ -792,7 +792,7 @@ static CURLcode setname(curl_mimepart *part, const char *name, size_t len) /* wrap call to fseeko so it matches the calling convention of callback */ static int fseeko_wrapper(void *stream, curl_off_t offset, int whence) { -#if defined(HAVE_FSEEKO) +#if defined(HAVE_FSEEKO) && defined(HAVE_DECL_FSEEKO) return fseeko(stream, (off_t)offset, whence); #elif defined(HAVE__FSEEKI64) return _fseeki64(stream, (__int64)offset, whence); diff --git a/external/curl/lib/ftp.c b/external/curl/lib/ftp.c index 518c92332..a8dcedf53 100644 --- a/external/curl/lib/ftp.c +++ b/external/curl/lib/ftp.c @@ -819,7 +819,7 @@ static int ftp_domore_getsock(struct Curl_easy *data, DEBUGF(infof(data, "ftp_domore_getsock()")); if(conn->cfilter[SECONDARYSOCKET] && !Curl_conn_is_connected(conn, SECONDARYSOCKET)) - return Curl_conn_get_select_socks(data, SECONDARYSOCKET, socks); + return 0; if(FTP_STOP == ftpc->state) { int bits = GETSOCK_READSOCK(0); @@ -947,7 +947,7 @@ static CURLcode ftp_state_use_port(struct Curl_easy *data, char *port_start = NULL; char *port_sep = NULL; - addr = calloc(addrlen + 1, 1); + addr = calloc(1, addrlen + 1); if(!addr) { result = CURLE_OUT_OF_MEMORY; goto out; @@ -4379,7 +4379,7 @@ static CURLcode ftp_setup_connection(struct Curl_easy *data, CURLcode result = CURLE_OK; struct ftp_conn *ftpc = &conn->proto.ftpc; - ftp = calloc(sizeof(struct FTP), 1); + ftp = calloc(1, sizeof(struct FTP)); if(!ftp) return CURLE_OUT_OF_MEMORY; diff --git a/external/curl/lib/ftplistparser.c b/external/curl/lib/ftplistparser.c index 2a7ca5baf..82f1ea00d 100644 --- a/external/curl/lib/ftplistparser.c +++ b/external/curl/lib/ftplistparser.c @@ -55,9 +55,6 @@ /* The last #include file should be: */ #include "memdebug.h" -/* allocs buffer which will contain one line of LIST command response */ -#define FTP_BUFFER_ALLOCSIZE 160 - typedef enum { PL_UNIX_TOTALSIZE = 0, PL_UNIX_FILETYPE, diff --git a/external/curl/lib/functypes.h b/external/curl/lib/functypes.h index 075c02e54..ea66d3281 100644 --- a/external/curl/lib/functypes.h +++ b/external/curl/lib/functypes.h @@ -38,7 +38,7 @@ 2. For systems with config-*.h files, define them there. */ -#ifdef WIN32 +#ifdef _WIN32 /* int recv(SOCKET, char *, int, int) */ #define RECV_TYPE_ARG1 SOCKET #define RECV_TYPE_ARG2 char * diff --git a/external/curl/lib/getenv.c b/external/curl/lib/getenv.c index 806978472..48ee97228 100644 --- a/external/curl/lib/getenv.c +++ b/external/curl/lib/getenv.c @@ -31,10 +31,11 @@ static char *GetEnv(const char *variable) { -#if defined(_WIN32_WCE) || defined(CURL_WINDOWS_APP) +#if defined(_WIN32_WCE) || defined(CURL_WINDOWS_APP) || \ + defined(__ORBIS__) || defined(__PROSPERO__) /* PlayStation 4 and 5 */ (void)variable; return NULL; -#elif defined(WIN32) +#elif defined(_WIN32) /* This uses Windows API instead of C runtime getenv() to get the environment variable since some changes aren't always visible to the latter. #4774 */ char *buf = NULL; diff --git a/external/curl/lib/hostasyn.c b/external/curl/lib/hostasyn.c index 2f6762ca4..faf01c5f4 100644 --- a/external/curl/lib/hostasyn.c +++ b/external/curl/lib/hostasyn.c @@ -67,10 +67,11 @@ CURLcode Curl_addrinfo_callback(struct Curl_easy *data, int status, struct Curl_addrinfo *ai) { + struct connectdata *conn = data->conn; struct Curl_dns_entry *dns = NULL; CURLcode result = CURLE_OK; - data->state.async.status = status; + conn->resolve_async.status = status; if(CURL_ASYNC_SUCCESS == status) { if(ai) { @@ -78,8 +79,8 @@ CURLcode Curl_addrinfo_callback(struct Curl_easy *data, Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE); dns = Curl_cache_addr(data, ai, - data->state.async.hostname, 0, - data->state.async.port); + conn->resolve_async.hostname, 0, + conn->resolve_async.port); if(data->share) Curl_share_unlock(data, CURL_LOCK_DATA_DNS); @@ -94,12 +95,12 @@ CURLcode Curl_addrinfo_callback(struct Curl_easy *data, } } - data->state.async.dns = dns; + conn->resolve_async.dns = dns; /* Set async.done TRUE last in this function since it may be used multi- threaded and once this is TRUE the other thread may read fields from the async struct */ - data->state.async.done = TRUE; + conn->resolve_async.done = TRUE; /* IPv4: The input hostent struct will be freed by ares when we return from this function */ diff --git a/external/curl/lib/hostip.c b/external/curl/lib/hostip.c index 3cd9a65c5..e7c318af7 100644 --- a/external/curl/lib/hostip.c +++ b/external/curl/lib/hostip.c @@ -117,6 +117,13 @@ static void freednsentry(void *freethis); +#ifndef CURL_DISABLE_VERBOSE_STRINGS +static void show_resolve_info(struct Curl_easy *data, + struct Curl_dns_entry *dns); +#else +#define show_resolve_info(x,y) Curl_nop_stmt +#endif + /* * Curl_printable_address() stores a printable version of the 1st address * given in the 'ai' argument. The result will be stored in the buf that is @@ -481,9 +488,11 @@ Curl_cache_addr(struct Curl_easy *data, return NULL; } #endif + if(!hostlen) + hostlen = strlen(hostname); /* Create a new cache entry */ - dns = calloc(1, sizeof(struct Curl_dns_entry)); + dns = calloc(1, sizeof(struct Curl_dns_entry) + hostlen); if(!dns) { return NULL; } @@ -497,6 +506,9 @@ Curl_cache_addr(struct Curl_easy *data, time(&dns->timestamp); if(dns->timestamp == 0) dns->timestamp = 1; /* zero indicates permanent CURLOPT_RESOLVE entry */ + dns->hostport = port; + if(hostlen) + memcpy(dns->hostname, hostname, hostlen); /* Store the resolved data in our DNS cache. */ dns2 = Curl_hash_add(data->dns.hostcache, entry_id, entry_len + 1, @@ -521,7 +533,7 @@ static struct Curl_addrinfo *get_localhost6(int port, const char *name) struct sockaddr_in6 sa6; unsigned char ipv6[16]; unsigned short port16 = (unsigned short)(port & 0xffff); - ca = calloc(sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1, 1); + ca = calloc(1, sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1); if(!ca) return NULL; @@ -568,7 +580,7 @@ static struct Curl_addrinfo *get_localhost(int port, const char *name) return NULL; memcpy(&sa.sin_addr, &ipv4, sizeof(ipv4)); - ca = calloc(sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1, 1); + ca = calloc(1, sizeof(struct Curl_addrinfo) + ss_size + hostlen + 1); if(!ca) return NULL; ca->ai_flags = 0; @@ -729,7 +741,7 @@ enum resolve_t Curl_resolv(struct Curl_easy *data, Curl_set_in_callback(data, true); st = data->set.resolver_start( #ifdef USE_CURL_ASYNC - data->state.async.resolver, + conn->resolve_async.resolver, #else NULL, #endif @@ -823,8 +835,10 @@ enum resolve_t Curl_resolv(struct Curl_easy *data, if(!dns) /* returned failure, bail out nicely */ Curl_freeaddrinfo(addr); - else + else { rc = CURLRESOLV_RESOLVED; + show_resolve_info(data, dns); + } } } @@ -839,7 +853,7 @@ enum resolve_t Curl_resolv(struct Curl_easy *data, * execution. This effectively causes the remainder of the application to run * within a signal handler which is nonportable and could lead to problems. */ -static +CURL_NORETURN static void alarmfunc(int sig) { (void)sig; @@ -1269,9 +1283,11 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data) Curl_freeaddrinfo(head); return CURLE_OUT_OF_MEMORY; } +#ifndef CURL_DISABLE_VERBOSE_STRINGS infof(data, "Added %.*s:%d:%s to DNS cache%s", (int)hlen, host_begin, port, addresses, permanent ? "" : " (non-permanent)"); +#endif /* Wildcard hostname */ if((hlen == 1) && (host_begin[0] == '*')) { @@ -1285,18 +1301,89 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data) return CURLE_OK; } +#ifndef CURL_DISABLE_VERBOSE_STRINGS +static void show_resolve_info(struct Curl_easy *data, + struct Curl_dns_entry *dns) +{ + struct Curl_addrinfo *a; + CURLcode result = CURLE_OK; +#ifdef CURLRES_IPV6 + struct dynbuf out[2]; +#else + struct dynbuf out[1]; +#endif + DEBUGASSERT(data); + DEBUGASSERT(dns); + + if(!data->set.verbose || + /* ignore no name or numerical IP addresses */ + !dns->hostname[0] || Curl_host_is_ipnum(dns->hostname)) + return; + + a = dns->addr; + + infof(data, "Host %s:%d was resolved.", + (dns->hostname[0] ? dns->hostname : "(none)"), dns->hostport); + + Curl_dyn_init(&out[0], 1024); +#ifdef CURLRES_IPV6 + Curl_dyn_init(&out[1], 1024); +#endif + + while(a) { + if( +#ifdef CURLRES_IPV6 + a->ai_family == PF_INET6 || +#endif + a->ai_family == PF_INET) { + char buf[MAX_IPADR_LEN]; + struct dynbuf *d = &out[(a->ai_family != PF_INET)]; + Curl_printable_address(a, buf, sizeof(buf)); + if(Curl_dyn_len(d)) + result = Curl_dyn_addn(d, ", ", 2); + if(!result) + result = Curl_dyn_add(d, buf); + if(result) { + infof(data, "too many IP, can't show"); + goto fail; + } + } + a = a->ai_next; + } + +#ifdef CURLRES_IPV6 + infof(data, "IPv6: %s", + (Curl_dyn_len(&out[1]) ? Curl_dyn_ptr(&out[1]) : "(none)")); +#endif + infof(data, "IPv4: %s", + (Curl_dyn_len(&out[0]) ? Curl_dyn_ptr(&out[0]) : "(none)")); + +fail: + Curl_dyn_free(&out[0]); +#ifdef CURLRES_IPV6 + Curl_dyn_free(&out[1]); +#endif +} +#endif + CURLcode Curl_resolv_check(struct Curl_easy *data, struct Curl_dns_entry **dns) { + CURLcode result; #if defined(CURL_DISABLE_DOH) && !defined(CURLRES_ASYNCH) (void)data; (void)dns; #endif #ifndef CURL_DISABLE_DOH - if(data->conn->bits.doh) - return Curl_doh_is_resolved(data, dns); + if(data->conn->bits.doh) { + result = Curl_doh_is_resolved(data, dns); + } + else #endif - return Curl_resolver_is_resolved(data, dns); + result = Curl_resolver_is_resolved(data, dns); + if(*dns) + show_resolve_info(data, *dns); + return result; } int Curl_resolv_getsock(struct Curl_easy *data, @@ -1328,9 +1415,9 @@ CURLcode Curl_once_resolved(struct Curl_easy *data, bool *protocol_done) struct connectdata *conn = data->conn; #ifdef USE_CURL_ASYNC - if(data->state.async.dns) { - conn->dns_entry = data->state.async.dns; - data->state.async.dns = NULL; + if(conn->resolve_async.dns) { + conn->dns_entry = conn->resolve_async.dns; + conn->resolve_async.dns = NULL; } #endif @@ -1352,11 +1439,11 @@ CURLcode Curl_once_resolved(struct Curl_easy *data, bool *protocol_done) #ifdef USE_CURL_ASYNC CURLcode Curl_resolver_error(struct Curl_easy *data) { + struct connectdata *conn = data->conn; const char *host_or_proxy; CURLcode result; #ifndef CURL_DISABLE_PROXY - struct connectdata *conn = data->conn; if(conn->bits.httpproxy) { host_or_proxy = "proxy"; result = CURLE_COULDNT_RESOLVE_PROXY; @@ -1369,7 +1456,7 @@ CURLcode Curl_resolver_error(struct Curl_easy *data) } failf(data, "Could not resolve %s: %s", host_or_proxy, - data->state.async.hostname); + conn->resolve_async.hostname); return result; } diff --git a/external/curl/lib/hostip.h b/external/curl/lib/hostip.h index b68f539b2..fb53a5776 100644 --- a/external/curl/lib/hostip.h +++ b/external/curl/lib/hostip.h @@ -64,6 +64,10 @@ struct Curl_dns_entry { time_t timestamp; /* use-counter, use Curl_resolv_unlock to release reference */ long inuse; + /* hostname port number that resolved to addr. */ + int hostport; + /* hostname that resolved to addr. may be NULL (unix domain sockets). */ + char hostname[1]; }; bool Curl_host_is_ipnum(const char *hostname); diff --git a/external/curl/lib/hostip6.c b/external/curl/lib/hostip6.c index 6b0ba55e9..18969a7a7 100644 --- a/external/curl/lib/hostip6.c +++ b/external/curl/lib/hostip6.c @@ -71,8 +71,7 @@ bool Curl_ipvalid(struct Curl_easy *data, struct connectdata *conn) #if defined(CURLRES_SYNCH) #ifdef DEBUG_ADDRINFO -static void dump_addrinfo(struct connectdata *conn, - const struct Curl_addrinfo *ai) +static void dump_addrinfo(const struct Curl_addrinfo *ai) { printf("dump_addrinfo:\n"); for(; ai; ai = ai->ai_next) { @@ -84,7 +83,7 @@ static void dump_addrinfo(struct connectdata *conn, } } #else -#define dump_addrinfo(x,y) Curl_nop_stmt +#define dump_addrinfo(x) Curl_nop_stmt #endif /* @@ -149,7 +148,7 @@ struct Curl_addrinfo *Curl_getaddrinfo(struct Curl_easy *data, Curl_addrinfo_set_port(res, port); } - dump_addrinfo(conn, res); + dump_addrinfo(res); return res; } diff --git a/external/curl/lib/hsts.c b/external/curl/lib/hsts.c index 7ecf0042a..9314be294 100644 --- a/external/curl/lib/hsts.c +++ b/external/curl/lib/hsts.c @@ -40,6 +40,7 @@ #include "fopen.h" #include "rename.h" #include "share.h" +#include "strdup.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" @@ -76,7 +77,7 @@ static time_t hsts_debugtime(void *unused) struct hsts *Curl_hsts_init(void) { - struct hsts *h = calloc(sizeof(struct hsts), 1); + struct hsts *h = calloc(1, sizeof(struct hsts)); if(h) { Curl_llist_init(&h->list, NULL); } @@ -108,7 +109,7 @@ void Curl_hsts_cleanup(struct hsts **hp) static struct stsentry *hsts_entry(void) { - return calloc(sizeof(struct stsentry), 1); + return calloc(1, sizeof(struct stsentry)); } static CURLcode hsts_create(struct hsts *h, @@ -116,23 +117,30 @@ static CURLcode hsts_create(struct hsts *h, bool subdomains, curl_off_t expires) { - struct stsentry *sts = hsts_entry(); + struct stsentry *sts; char *duphost; size_t hlen; + DEBUGASSERT(h); + DEBUGASSERT(hostname); + + hlen = strlen(hostname); + if(hlen && (hostname[hlen - 1] == '.')) + /* strip off any trailing dot */ + --hlen; + if(!hlen) + /* no host name left */ + return CURLE_BAD_FUNCTION_ARGUMENT; + + sts = hsts_entry(); if(!sts) return CURLE_OUT_OF_MEMORY; - duphost = strdup(hostname); + duphost = Curl_strndup(hostname, hlen); if(!duphost) { free(sts); return CURLE_OUT_OF_MEMORY; } - hlen = strlen(duphost); - if(duphost[hlen - 1] == '.') - /* strip off trailing any dot */ - duphost[--hlen] = 0; - sts->host = duphost; sts->expires = expires; sts->includeSubDomains = subdomains; @@ -564,7 +572,7 @@ CURLcode Curl_hsts_loadcb(struct Curl_easy *data, struct hsts *h) void Curl_hsts_loadfiles(struct Curl_easy *data) { - struct curl_slist *l = data->set.hstslist; + struct curl_slist *l = data->state.hstslist; if(l) { Curl_share_lock(data, CURL_LOCK_DATA_HSTS, CURL_LOCK_ACCESS_SINGLE); diff --git a/external/curl/lib/http.c b/external/curl/lib/http.c index 40ef70df5..be6d442e8 100644 --- a/external/curl/lib/http.c +++ b/external/curl/lib/http.c @@ -836,6 +836,7 @@ output_auth_headers(struct Curl_easy *data, (data->state.aptr.user ? data->state.aptr.user : "")); #else + (void)proxy; infof(data, "Server auth using %s with user '%s'", auth, data->state.aptr.user ? data->state.aptr.user : ""); @@ -845,7 +846,7 @@ output_auth_headers(struct Curl_easy *data, else authstatus->multipass = FALSE; - return CURLE_OK; + return result; } /** @@ -970,17 +971,21 @@ Curl_http_output_auth(struct Curl_easy *data, } #endif -/* - * Curl_http_input_auth() deals with Proxy-Authenticate: and WWW-Authenticate: - * headers. They are dealt with both in the transfer.c main loop and in the - * proxy CONNECT loop. - */ - +#if defined(USE_SPNEGO) || defined(USE_NTLM) || \ + !defined(CURL_DISABLE_DIGEST_AUTH) || \ + !defined(CURL_DISABLE_BASIC_AUTH) || \ + !defined(CURL_DISABLE_BEARER_AUTH) static int is_valid_auth_separator(char ch) { return ch == '\0' || ch == ',' || ISSPACE(ch); } +#endif +/* + * Curl_http_input_auth() deals with Proxy-Authenticate: and WWW-Authenticate: + * headers. They are dealt with both in the transfer.c main loop and in the + * proxy CONNECT loop. + */ CURLcode Curl_http_input_auth(struct Curl_easy *data, bool proxy, const char *auth) /* the first non-space */ { @@ -992,11 +997,15 @@ CURLcode Curl_http_input_auth(struct Curl_easy *data, bool proxy, curlnegotiate *negstate = proxy ? &conn->proxy_negotiate_state : &conn->http_negotiate_state; #endif +#if defined(USE_SPNEGO) || \ + defined(USE_NTLM) || \ + !defined(CURL_DISABLE_DIGEST_AUTH) || \ + !defined(CURL_DISABLE_BASIC_AUTH) || \ + !defined(CURL_DISABLE_BEARER_AUTH) + unsigned long *availp; struct auth *authp; - (void) conn; /* In case conditionals make it unused. */ - if(proxy) { availp = &data->info.proxyauthavail; authp = &data->state.authproxy; @@ -1005,6 +1014,11 @@ CURLcode Curl_http_input_auth(struct Curl_easy *data, bool proxy, availp = &data->info.httpauthavail; authp = &data->state.authhost; } +#else + (void) proxy; +#endif + + (void) conn; /* In case conditionals make it unused. */ /* * Here we check if we want the specific single authentication (using ==) and @@ -1140,7 +1154,14 @@ CURLcode Curl_http_input_auth(struct Curl_easy *data, bool proxy, } } #else - ; + { + /* + * Empty block to terminate the if-else chain correctly. + * + * A semicolon would yield the same result here, but can cause a + * compiler warning when -Wextra is enabled. + */ + } #endif /* there may be multiple methods on one line, so keep reading */ @@ -1403,7 +1424,7 @@ CURLcode Curl_buffer_send(struct dynbuf *in, * and install our own `data->state.fread_func` that * on subsequent calls reads `in` empty. * - when the whisked away `in` is empty, the `fread_func` - * is restored ot its original state. + * is restored to its original state. * The problem is that `fread_func` can only return * `upload_buffer_size` lengths. If the send we do here * is larger and blocks, we do re-sending with smaller @@ -1678,8 +1699,6 @@ static CURLcode expect100(struct Curl_easy *data, struct dynbuf *req) { CURLcode result = CURLE_OK; - data->state.expect100header = FALSE; /* default to false unless it is set - to TRUE below */ if(!data->state.disableexpect && Curl_use_http_1_1plus(data, conn) && (conn->httpversion < 20)) { /* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an @@ -2414,14 +2433,16 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn, /* Convert the form structure into a mime structure, then keep the conversion */ if(!data->state.formp) { - data->state.formp = calloc(sizeof(curl_mimepart), 1); + data->state.formp = calloc(1, sizeof(curl_mimepart)); if(!data->state.formp) return CURLE_OUT_OF_MEMORY; Curl_mime_cleanpart(data->state.formp); result = Curl_getformdata(data, data->state.formp, data->set.httppost, data->state.fread_func); - if(result) + if(result) { + Curl_safefree(data->state.formp); return result; + } data->state.mimepost = data->state.formp; } break; @@ -2494,6 +2515,29 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn, return result; } +static CURLcode addexpect(struct Curl_easy *data, struct connectdata *conn, + struct dynbuf *r) +{ + data->state.expect100header = FALSE; + /* Avoid Expect: 100-continue if Upgrade: is used */ + if(data->req.upgr101 == UPGR101_INIT) { + struct HTTP *http = data->req.p.http; + /* For really small puts we don't use Expect: headers at all, and for + the somewhat bigger ones we allow the app to disable it. Just make + sure that the expect100header is always set to the preferred value + here. */ + char *ptr = Curl_checkheaders(data, STRCONST("Expect")); + if(ptr) { + data->state.expect100header = + Curl_compareheader(ptr, STRCONST("Expect:"), + STRCONST("100-continue")); + } + else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) + return expect100(data, conn, r); + } + return CURLE_OK; +} + CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn, struct dynbuf *r, Curl_HttpReq httpreq) { @@ -2506,14 +2550,8 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn, #endif CURLcode result = CURLE_OK; struct HTTP *http = data->req.p.http; - const char *ptr; - - /* If 'authdone' is FALSE, we must not set the write socket index to the - Curl_transfer() call below, as we're not ready to actually upload any - data yet. */ switch(httpreq) { - case HTTPREQ_PUT: /* Let's PUT the data to the server! */ if(conn->bits.authneg) @@ -2531,20 +2569,9 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn, return result; } - /* For really small puts we don't use Expect: headers at all, and for - the somewhat bigger ones we allow the app to disable it. Just make - sure that the expect100header is always set to the preferred value - here. */ - ptr = Curl_checkheaders(data, STRCONST("Expect")); - if(ptr) { - data->state.expect100header = - Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue")); - } - else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) { - result = expect100(data, conn, r); - if(result) - return result; - } + result = addexpect(data, conn, r); + if(result) + return result; /* end of headers */ result = Curl_dyn_addn(r, STRCONST("\r\n")); @@ -2617,22 +2644,9 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn, } #endif - /* For really small posts we don't use Expect: headers at all, and for - the somewhat bigger ones we allow the app to disable it. Just make - sure that the expect100header is always set to the preferred value - here. */ - ptr = Curl_checkheaders(data, STRCONST("Expect")); - if(ptr) { - data->state.expect100header = - Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue")); - } - else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) { - result = expect100(data, conn, r); - if(result) - return result; - } - else - data->state.expect100header = FALSE; + result = addexpect(data, conn, r); + if(result) + return result; /* make the request end in a true CRLF */ result = Curl_dyn_addn(r, STRCONST("\r\n")); @@ -2692,22 +2706,9 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn, return result; } - /* For really small posts we don't use Expect: headers at all, and for - the somewhat bigger ones we allow the app to disable it. Just make - sure that the expect100header is always set to the preferred value - here. */ - ptr = Curl_checkheaders(data, STRCONST("Expect")); - if(ptr) { - data->state.expect100header = - Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue")); - } - else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) { - result = expect100(data, conn, r); - if(result) - return result; - } - else - data->state.expect100header = FALSE; + result = addexpect(data, conn, r); + if(result) + return result; #ifndef USE_HYPER /* With Hyper the body is always passed on separately */ @@ -3193,7 +3194,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done) DEBUGASSERT(Curl_conn_is_http2(data, conn, FIRSTSOCKET)); break; case CURL_HTTP_VERSION_1_1: - /* continue with HTTP/1.1 when explicitly requested */ + /* continue with HTTP/1.x when explicitly requested */ break; default: /* Check if user wants to use HTTP/2 with clear TCP */ @@ -3685,7 +3686,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn, k->content_range = TRUE; } } - else + else if(k->httpcode < 300) data->state.resume_from = 0; /* get everything */ } #if !defined(CURL_DISABLE_COOKIES) @@ -3996,35 +3997,30 @@ CURLcode Curl_bump_headersize(struct Curl_easy *data, */ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, struct connectdata *conn, - ssize_t *nread, - bool *stop_reading) + const char *buf, size_t blen, + size_t *pconsumed) { CURLcode result; struct SingleRequest *k = &data->req; - ssize_t onread = *nread; - char *ostr = k->str; char *headp; - char *str_start; char *end_ptr; /* header line within buffer loop */ + *pconsumed = 0; do { - size_t rest_length; - size_t full_length; + size_t line_length; int writetype; - /* str_start is start of line within buf */ - str_start = k->str; - /* data is in network encoding so use 0x0a instead of '\n' */ - end_ptr = memchr(str_start, 0x0a, *nread); + end_ptr = memchr(buf, 0x0a, blen); if(!end_ptr) { /* Not a complete header line within buffer, append the data to the end of the headerbuff. */ - result = Curl_dyn_addn(&data->state.headerb, str_start, *nread); + result = Curl_dyn_addn(&data->state.headerb, buf, blen); if(result) return result; + *pconsumed += blen; if(!k->headerline) { /* check if this looks like a protocol header */ @@ -4036,31 +4032,28 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, if(st == STATUS_BAD) { /* this is not the beginning of a protocol first header line */ k->header = FALSE; - k->badheader = HEADER_ALLBAD; + k->badheader = TRUE; streamclose(conn, "bad HTTP: No end-of-message indicator"); if(!data->set.http09_allowed) { failf(data, "Received HTTP/0.9 when not allowed"); return CURLE_UNSUPPORTED_PROTOCOL; } - break; + goto out; } } - - break; /* read more and try again */ + goto out; /* read more and try again */ } /* decrease the size of the remaining (supposed) header line */ - rest_length = (end_ptr - k->str) + 1; - *nread -= (ssize_t)rest_length; - - k->str = end_ptr + 1; /* move past new line */ - - full_length = k->str - str_start; - - result = Curl_dyn_addn(&data->state.headerb, str_start, full_length); + line_length = (end_ptr - buf) + 1; + result = Curl_dyn_addn(&data->state.headerb, buf, line_length); if(result) return result; + blen -= line_length; + buf += line_length; + *pconsumed += line_length; + /**** * We now have a FULL header line in 'headerb'. *****/ @@ -4078,14 +4071,12 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, return CURLE_UNSUPPORTED_PROTOCOL; } k->header = FALSE; - if(*nread) + if(blen) /* since there's more, this is a partial bad header */ - k->badheader = HEADER_PARTHEADER; + k->badheader = TRUE; else { /* this was all we read so it's all a bad header */ - k->badheader = HEADER_ALLBAD; - *nread = onread; - k->str = ostr; + k->badheader = TRUE; return CURLE_OK; } break; @@ -4139,22 +4130,23 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, /* switch to http2 now. The bytes after response headers are also processed here, otherwise they are lost. */ - result = Curl_http2_upgrade(data, conn, FIRSTSOCKET, - k->str, *nread); + result = Curl_http2_upgrade(data, conn, FIRSTSOCKET, buf, blen); if(result) return result; - *nread = 0; + *pconsumed += blen; + blen = 0; } #ifdef USE_WEBSOCKETS else if(k->upgr101 == UPGR101_WS) { /* verify the response */ - result = Curl_ws_accept(data, k->str, *nread); + result = Curl_ws_accept(data, buf, blen); if(result) return result; k->header = FALSE; /* no more header to parse! */ if(data->set.connect_only) { k->keepon &= ~KEEP_RECV; /* read no more content */ - *nread = 0; + *pconsumed += blen; + blen = 0; } } #endif @@ -4366,7 +4358,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, * out and return home. */ if(data->req.no_body) - *stop_reading = TRUE; + k->download_done = TRUE; #ifndef CURL_DISABLE_RTSP else if((conn->handler->protocol & CURLPROTO_RTSP) && (data->set.rtspreq == RTSPREQ_DESCRIBE) && @@ -4375,7 +4367,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, absent, a length 0 must be assumed. It will prevent libcurl from hanging on DESCRIBE request that got refused for whatever reason */ - *stop_reading = TRUE; + k->download_done = TRUE; #endif /* If max download size is *zero* (nothing) we already have @@ -4386,15 +4378,12 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, if(0 == k->maxdownload && !Curl_conn_is_http2(data, conn, FIRSTSOCKET) && !Curl_conn_is_http3(data, conn, FIRSTSOCKET)) - *stop_reading = TRUE; + k->download_done = TRUE; - if(*stop_reading) { - /* we make sure that this socket isn't read more now */ - k->keepon &= ~KEEP_RECV; - } - - Curl_debug(data, CURLINFO_HEADER_IN, str_start, headerlen); - break; /* exit header line loop */ + Curl_debug(data, CURLINFO_HEADER_IN, + Curl_dyn_ptr(&data->state.headerb), + Curl_dyn_len(&data->state.headerb)); + goto out; /* exit header line loop */ } /* We continue reading headers, reset the line-based header */ @@ -4583,12 +4572,12 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, Curl_dyn_reset(&data->state.headerb); } - while(*k->str); /* header line within buffer */ + while(blen); /* We might have reached the end of the header part here, but there might be a non-header part left in the end of the read buffer. */ - +out: return CURLE_OK; } @@ -4618,17 +4607,6 @@ CURLcode Curl_http_decode_status(int *pstatus, const char *s, size_t len) return result; } -/* simple implementation of strndup(), which isn't portable */ -static char *my_strndup(const char *ptr, size_t len) -{ - char *copy = malloc(len + 1); - if(!copy) - return NULL; - memcpy(copy, ptr, len); - copy[len] = '\0'; - return copy; -} - CURLcode Curl_http_req_make(struct httpreq **preq, const char *method, size_t m_len, const char *scheme, size_t s_len, @@ -4647,17 +4625,17 @@ CURLcode Curl_http_req_make(struct httpreq **preq, goto out; memcpy(req->method, method, m_len); if(scheme) { - req->scheme = my_strndup(scheme, s_len); + req->scheme = Curl_strndup(scheme, s_len); if(!req->scheme) goto out; } if(authority) { - req->authority = my_strndup(authority, a_len); + req->authority = Curl_strndup(authority, a_len); if(!req->authority) goto out; } if(path) { - req->path = my_strndup(path, p_len); + req->path = Curl_strndup(path, p_len); if(!req->path) goto out; } diff --git a/external/curl/lib/http.h b/external/curl/lib/http.h index 9ee3c6537..56b091301 100644 --- a/external/curl/lib/http.h +++ b/external/curl/lib/http.h @@ -227,8 +227,8 @@ CURLcode Curl_http_size(struct Curl_easy *data); CURLcode Curl_http_readwrite_headers(struct Curl_easy *data, struct connectdata *conn, - ssize_t *nread, - bool *stop_reading); + const char *buf, size_t blen, + size_t *pconsumed); /** * Curl_http_output_auth() setups the authentication headers for the @@ -263,7 +263,7 @@ CURLcode Curl_http_decode_status(int *pstatus, const char *s, size_t len); * All about a core HTTP request, excluding body and trailers */ struct httpreq { - char method[12]; + char method[24]; char *scheme; char *authority; char *path; diff --git a/external/curl/lib/http2.c b/external/curl/lib/http2.c index c8b059498..973848484 100644 --- a/external/curl/lib/http2.c +++ b/external/curl/lib/http2.c @@ -107,14 +107,14 @@ static int populate_settings(nghttp2_settings_entry *iv, return 3; } -static size_t populate_binsettings(uint8_t *binsettings, - struct Curl_easy *data) +static ssize_t populate_binsettings(uint8_t *binsettings, + struct Curl_easy *data) { nghttp2_settings_entry iv[H2_SETTINGS_IV_LEN]; int ivlen; ivlen = populate_settings(iv, data); - /* this returns number of bytes it wrote */ + /* this returns number of bytes it wrote or a negative number on error. */ return nghttp2_pack_settings_payload(binsettings, H2_BINSETTINGS_LEN, iv, ivlen); } @@ -369,12 +369,15 @@ static ssize_t nw_out_writer(void *writer_ctx, { struct Curl_cfilter *cf = writer_ctx; struct Curl_easy *data = CF_DATA_CURRENT(cf); - ssize_t nwritten; - nwritten = Curl_conn_cf_send(cf->next, data, (const char *)buf, buflen, err); - if(nwritten > 0) - CURL_TRC_CF(data, cf, "[0] egress: wrote %zd bytes", nwritten); - return nwritten; + if(data) { + ssize_t nwritten = Curl_conn_cf_send(cf->next, data, + (const char *)buf, buflen, err); + if(nwritten > 0) + CURL_TRC_CF(data, cf, "[0] egress: wrote %zd bytes", nwritten); + return nwritten; + } + return 0; } static ssize_t send_callback(nghttp2_session *h2, @@ -452,9 +455,14 @@ static CURLcode cf_h2_ctx_init(struct Curl_cfilter *cf, * in the H1 request and we upgrade from there. This stream * is opened implicitly as #1. */ uint8_t binsettings[H2_BINSETTINGS_LEN]; - size_t binlen; /* length of the binsettings data */ + ssize_t binlen; /* length of the binsettings data */ binlen = populate_binsettings(binsettings, data); + if(binlen <= 0) { + failf(data, "nghttp2 unexpectedly failed on pack_settings_payload"); + result = CURLE_FAILED_INIT; + goto out; + } result = http2_data_setup(cf, data, &stream); if(result) @@ -1076,16 +1084,11 @@ static CURLcode on_stream_frame(struct Curl_cfilter *cf, stream->reset = TRUE; } stream->send_closed = TRUE; - data->req.keepon &= ~KEEP_SEND_HOLD; drain_stream(cf, data, stream); break; case NGHTTP2_WINDOW_UPDATE: - if((data->req.keepon & KEEP_SEND_HOLD) && - (data->req.keepon & KEEP_SEND)) { - data->req.keepon &= ~KEEP_SEND_HOLD; + if(CURL_WANT_SEND(data)) { drain_stream(cf, data, stream); - CURL_TRC_CF(data, cf, "[%d] un-holding after win update", - stream_id); } break; default: @@ -1230,15 +1233,10 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame, * window and *assume* that we treat this like a WINDOW_UPDATE. Some * servers send an explicit WINDOW_UPDATE, but not all seem to do that. * To be safe, we UNHOLD a stream in order not to stall. */ - if((data->req.keepon & KEEP_SEND_HOLD) && - (data->req.keepon & KEEP_SEND)) { + if(CURL_WANT_SEND(data)) { struct stream_ctx *stream = H2_STREAM_CTX(data); - data->req.keepon &= ~KEEP_SEND_HOLD; - if(stream) { + if(stream) drain_stream(cf, data, stream); - CURL_TRC_CF(data, cf, "[%d] un-holding after SETTINGS", - stream_id); - } } } break; @@ -1338,7 +1336,6 @@ static int on_stream_close(nghttp2_session *session, int32_t stream_id, stream->error = error_code; if(stream->error) stream->reset = TRUE; - data_s->req.keepon &= ~KEEP_SEND_HOLD; if(stream->error) CURL_TRC_CF(data_s, cf, "[%d] RESET: %s (err %d)", @@ -1602,10 +1599,10 @@ static int error_callback(nghttp2_session *session, size_t len, void *userp) { + struct Curl_cfilter *cf = userp; + struct Curl_easy *data = CF_DATA_CURRENT(cf); (void)session; - (void)msg; - (void)len; - (void)userp; + failf(data, "%.*s", (int)len, msg); return 0; } #endif @@ -1621,7 +1618,7 @@ CURLcode Curl_http2_request_upgrade(struct dynbuf *req, size_t blen; struct SingleRequest *k = &data->req; uint8_t binsettings[H2_BINSETTINGS_LEN]; - size_t binlen; /* length of the binsettings data */ + ssize_t binlen; /* length of the binsettings data */ binlen = populate_binsettings(binsettings, data); if(binlen <= 0) { @@ -2052,23 +2049,13 @@ static ssize_t h2_submit(struct stream_ctx **pstream, /* no longer needed */ Curl_h1_req_parse_free(&stream->h1); - nheader = Curl_dynhds_count(&h2_headers); - nva = malloc(sizeof(nghttp2_nv) * nheader); + nva = Curl_dynhds_to_nva(&h2_headers, &nheader); if(!nva) { *err = CURLE_OUT_OF_MEMORY; nwritten = -1; goto out; } - for(i = 0; i < nheader; ++i) { - struct dynhds_entry *e = Curl_dynhds_getn(&h2_headers, i); - nva[i].name = (unsigned char *)e->name; - nva[i].namelen = e->namelen; - nva[i].value = (unsigned char *)e->value; - nva[i].valuelen = e->valuelen; - nva[i].flags = NGHTTP2_NV_FLAG_NONE; - } - h2_pri_spec(data, &pri_spec); if(!nghttp2_session_check_request_allowed(ctx->h2)) CURL_TRC_CF(data, cf, "send request NOT allowed (via nghttp2)"); @@ -2272,14 +2259,6 @@ static ssize_t cf_h2_send(struct Curl_cfilter *cf, struct Curl_easy *data, * frame buffer or our network out buffer. */ size_t rwin = nghttp2_session_get_stream_remote_window_size(ctx->h2, stream->id); - if(rwin == 0) { - /* H2 flow window exhaustion. We need to HOLD upload until we get - * a WINDOW_UPDATE from the server. */ - data->req.keepon |= KEEP_SEND_HOLD; - CURL_TRC_CF(data, cf, "[%d] holding send as remote flow " - "window is exhausted", stream->id); - } - /* Whatever the cause, we need to return CURL_EAGAIN for this call. * We have unwritten state that needs us being invoked again and EAGAIN * is the only way to ensure that. */ @@ -2331,38 +2310,34 @@ static ssize_t cf_h2_send(struct Curl_cfilter *cf, struct Curl_easy *data, return nwritten; } -static int cf_h2_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *sock) +static void cf_h2_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) { struct cf_h2_ctx *ctx = cf->ctx; - struct SingleRequest *k = &data->req; - struct stream_ctx *stream = H2_STREAM_CTX(data); - int bitmap = GETSOCK_BLANK; - struct cf_call_data save; + bool want_recv = CURL_WANT_RECV(data); + bool want_send = CURL_WANT_SEND(data); - CF_DATA_SAVE(save, cf, data); - sock[0] = Curl_conn_cf_get_socket(cf, data); - - if(!(k->keepon & (KEEP_RECV_PAUSE|KEEP_RECV_HOLD))) - /* Unless paused - in an HTTP/2 connection we can basically always get a - frame so we should always be ready for one */ - bitmap |= GETSOCK_READSOCK(0); - - /* we're (still uploading OR the HTTP/2 layer wants to send data) AND - there's a window to send data in */ - if((((k->keepon & KEEP_SENDBITS) == KEEP_SEND) || - nghttp2_session_want_write(ctx->h2)) && - (nghttp2_session_get_remote_window_size(ctx->h2) && - nghttp2_session_get_stream_remote_window_size(ctx->h2, - stream->id))) - bitmap |= GETSOCK_WRITESOCK(0); + if(ctx->h2 && (want_recv || want_send)) { + struct stream_ctx *stream = H2_STREAM_CTX(data); + curl_socket_t sock = Curl_conn_cf_get_socket(cf, data); + struct cf_call_data save; + bool c_exhaust, s_exhaust; - CF_DATA_RESTORE(cf, save); - return bitmap; + CF_DATA_SAVE(save, cf, data); + c_exhaust = !nghttp2_session_get_remote_window_size(ctx->h2); + s_exhaust = stream && stream->id >= 0 && + !nghttp2_session_get_stream_remote_window_size(ctx->h2, + stream->id); + want_recv = (want_recv || c_exhaust || s_exhaust); + want_send = (!s_exhaust && want_send) || + (!c_exhaust && nghttp2_session_want_write(ctx->h2)); + + Curl_pollset_set(data, ps, sock, want_recv, want_send); + CF_DATA_RESTORE(cf, save); + } } - static CURLcode cf_h2_connect(struct Curl_cfilter *cf, struct Curl_easy *data, bool blocking, bool *done) @@ -2511,14 +2486,15 @@ static CURLcode cf_h2_cntrl(struct Curl_cfilter *cf, case CF_CTRL_DATA_PAUSE: result = http2_data_pause(cf, data, (arg1 != 0)); break; - case CF_CTRL_DATA_DONE_SEND: { + case CF_CTRL_DATA_DONE_SEND: result = http2_data_done_send(cf, data); break; - } - case CF_CTRL_DATA_DONE: { + case CF_CTRL_DATA_DETACH: + http2_data_done(cf, data, TRUE); + break; + case CF_CTRL_DATA_DONE: http2_data_done(cf, data, arg1 != 0); break; - } default: break; } @@ -2606,7 +2582,7 @@ struct Curl_cftype Curl_cft_nghttp2 = { cf_h2_connect, cf_h2_close, Curl_cf_def_get_host, - cf_h2_get_select_socks, + cf_h2_adjust_pollset, cf_h2_data_pending, cf_h2_send, cf_h2_recv, @@ -2626,7 +2602,7 @@ static CURLcode http2_cfilter_add(struct Curl_cfilter **pcf, CURLcode result = CURLE_OUT_OF_MEMORY; DEBUGASSERT(data->conn); - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) goto out; @@ -2652,7 +2628,7 @@ static CURLcode http2_cfilter_insert_after(struct Curl_cfilter *cf, CURLcode result = CURLE_OUT_OF_MEMORY; (void)data; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) goto out; diff --git a/external/curl/lib/http_aws_sigv4.c b/external/curl/lib/http_aws_sigv4.c index 901c22fbb..b673055f3 100644 --- a/external/curl/lib/http_aws_sigv4.c +++ b/external/curl/lib/http_aws_sigv4.c @@ -456,6 +456,7 @@ static CURLcode canon_query(struct Curl_easy *data, for(i = 0; !result && (i < entry); i++, ap++) { size_t len; const char *q = ap->p; + bool found_equals = false; if(!ap->len) continue; for(len = ap->len; len && !result; q++, len--) { @@ -467,9 +468,13 @@ static CURLcode canon_query(struct Curl_easy *data, case '.': case '_': case '~': + /* allowed as-is */ + result = Curl_dyn_addn(dq, q, 1); + break; case '=': /* allowed as-is */ result = Curl_dyn_addn(dq, q, 1); + found_equals = true; break; case '%': /* uppercase the following if hexadecimal */ @@ -497,7 +502,11 @@ static CURLcode canon_query(struct Curl_easy *data, } } } - if(i < entry - 1) { + if(!result && !found_equals) { + /* queries without value still need an equals */ + result = Curl_dyn_addn(dq, "=", 1); + } + if(!result && i < entry - 1) { /* insert ampersands between query pairs */ result = Curl_dyn_addn(dq, "&", 1); } diff --git a/external/curl/lib/http_chunks.c b/external/curl/lib/http_chunks.c index 2a401d14c..acdb10863 100644 --- a/external/curl/lib/http_chunks.c +++ b/external/curl/lib/http_chunks.c @@ -75,8 +75,6 @@ */ -#define isxdigit_ascii(x) Curl_isxdigit(x) - void Curl_httpchunk_init(struct Curl_easy *data) { struct connectdata *conn = data->conn; @@ -98,9 +96,9 @@ void Curl_httpchunk_init(struct Curl_easy *data) * For example, 0x0d and 0x0a are used instead of '\r' and '\n'. */ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, - char *datap, - ssize_t datalen, - ssize_t *wrote, + char *buf, + size_t blen, + size_t *pconsumed, CURLcode *extrap) { CURLcode result = CURLE_OK; @@ -108,28 +106,27 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, struct Curl_chunker *ch = &conn->chunk; struct SingleRequest *k = &data->req; size_t piece; - curl_off_t length = (curl_off_t)datalen; - *wrote = 0; /* nothing's written yet */ + *pconsumed = 0; /* nothing's written yet */ /* the original data is written to the client, but we go on with the chunk read process, to properly calculate the content length */ if(data->set.http_te_skip && !k->ignorebody) { - result = Curl_client_write(data, CLIENTWRITE_BODY, datap, datalen); + result = Curl_client_write(data, CLIENTWRITE_BODY, buf, blen); if(result) { *extrap = result; return CHUNKE_PASSTHRU_ERROR; } } - while(length) { + while(blen) { switch(ch->state) { case CHUNK_HEX: - if(ISXDIGIT(*datap)) { + if(ISXDIGIT(*buf)) { if(ch->hexindex < CHUNK_MAXNUM_LEN) { - ch->hexbuffer[ch->hexindex] = *datap; - datap++; - length--; + ch->hexbuffer[ch->hexindex] = *buf; + buf++; + blen--; ch->hexindex++; } else { @@ -143,7 +140,7 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, a hexadecimal digit. */ return CHUNKE_ILLEGAL_HEX; - /* length and datap are unmodified */ + /* blen and buf are unmodified */ ch->hexbuffer[ch->hexindex] = 0; if(curlx_strtoofft(ch->hexbuffer, &endptr, 16, &ch->datasize)) @@ -154,7 +151,7 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, case CHUNK_LF: /* waiting for the LF after a chunk size */ - if(*datap == 0x0a) { + if(*buf == 0x0a) { /* we're now expecting data to come, unless size was zero! */ if(0 == ch->datasize) { ch->state = CHUNK_TRAILER; /* now check for trailers */ @@ -163,19 +160,21 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, ch->state = CHUNK_DATA; } - datap++; - length--; + buf++; + blen--; break; case CHUNK_DATA: - /* We expect 'datasize' of data. We have 'length' right now, it can be + /* We expect 'datasize' of data. We have 'blen' right now, it can be more or less than 'datasize'. Get the smallest piece. */ - piece = curlx_sotouz((ch->datasize >= length)?length:ch->datasize); + piece = blen; + if(ch->datasize < (curl_off_t)blen) + piece = curlx_sotouz(ch->datasize); /* Write the data portion available */ if(!data->set.http_te_skip && !k->ignorebody) { - result = Curl_client_write(data, CLIENTWRITE_BODY, datap, piece); + result = Curl_client_write(data, CLIENTWRITE_BODY, buf, piece); if(result) { *extrap = result; @@ -183,10 +182,10 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, } } - *wrote += piece; + *pconsumed += piece; ch->datasize -= piece; /* decrease amount left to expect */ - datap += piece; /* move read pointer forward */ - length -= piece; /* decrease space left in this round */ + buf += piece; /* move read pointer forward */ + blen -= piece; /* decrease space left in this round */ if(0 == ch->datasize) /* end of data this round, we now expect a trailing CRLF */ @@ -194,18 +193,18 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, break; case CHUNK_POSTLF: - if(*datap == 0x0a) { + if(*buf == 0x0a) { /* The last one before we go back to hex state and start all over. */ Curl_httpchunk_init(data); /* sets state back to CHUNK_HEX */ } - else if(*datap != 0x0d) + else if(*buf != 0x0d) return CHUNKE_BAD_CHUNK; - datap++; - length--; + buf++; + blen--; break; case CHUNK_TRAILER: - if((*datap == 0x0d) || (*datap == 0x0a)) { + if((*buf == 0x0d) || (*buf == 0x0a)) { char *tr = Curl_dyn_ptr(&conn->trailer); /* this is the end of a trailer, but if the trailer was zero bytes there was no trailer and we move on */ @@ -229,7 +228,7 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, } Curl_dyn_reset(&conn->trailer); ch->state = CHUNK_TRAILER_CR; - if(*datap == 0x0a) + if(*buf == 0x0a) /* already on the LF */ break; } @@ -240,19 +239,19 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, } } else { - result = Curl_dyn_addn(&conn->trailer, datap, 1); + result = Curl_dyn_addn(&conn->trailer, buf, 1); if(result) return CHUNKE_OUT_OF_MEMORY; } - datap++; - length--; + buf++; + blen--; break; case CHUNK_TRAILER_CR: - if(*datap == 0x0a) { + if(*buf == 0x0a) { ch->state = CHUNK_TRAILER_POSTCR; - datap++; - length--; + buf++; + blen--; } else return CHUNKE_BAD_CHUNK; @@ -261,27 +260,27 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, case CHUNK_TRAILER_POSTCR: /* We enter this state when a CR should arrive so we expect to have to first pass a CR before we wait for LF */ - if((*datap != 0x0d) && (*datap != 0x0a)) { + if((*buf != 0x0d) && (*buf != 0x0a)) { /* not a CR then it must be another header in the trailer */ ch->state = CHUNK_TRAILER; break; } - if(*datap == 0x0d) { + if(*buf == 0x0d) { /* skip if CR */ - datap++; - length--; + buf++; + blen--; } /* now wait for the final LF */ ch->state = CHUNK_STOP; break; case CHUNK_STOP: - if(*datap == 0x0a) { - length--; + if(*buf == 0x0a) { + blen--; /* Record the length of any data left in the end of the buffer even if there's no more chunks to read */ - ch->datasize = curlx_sotouz(length); + ch->datasize = blen; return CHUNKE_STOP; /* return stop */ } diff --git a/external/curl/lib/http_chunks.h b/external/curl/lib/http_chunks.h index ed5071316..0a36f379b 100644 --- a/external/curl/lib/http_chunks.h +++ b/external/curl/lib/http_chunks.h @@ -93,8 +93,8 @@ struct Curl_chunker { /* The following functions are defined in http_chunks.c */ void Curl_httpchunk_init(struct Curl_easy *data); -CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, char *datap, - ssize_t length, ssize_t *wrote, +CHUNKcode Curl_httpchunk_read(struct Curl_easy *data, char *buf, + size_t blen, size_t *pconsumed, CURLcode *passthru); #endif /* HEADER_CURL_HTTP_CHUNKS_H */ diff --git a/external/curl/lib/http_proxy.c b/external/curl/lib/http_proxy.c index a1d6da954..8e1832581 100644 --- a/external/curl/lib/http_proxy.c +++ b/external/curl/lib/http_proxy.c @@ -299,7 +299,7 @@ struct Curl_cftype Curl_cft_http_proxy = { http_proxy_cf_connect, http_proxy_cf_close, Curl_cf_http_proxy_get_host, - Curl_cf_def_get_select_socks, + Curl_cf_def_adjust_pollset, Curl_cf_def_data_pending, Curl_cf_def_send, Curl_cf_def_recv, diff --git a/external/curl/lib/idn.c b/external/curl/lib/idn.c index a024691d1..81a177f8c 100644 --- a/external/curl/lib/idn.c +++ b/external/curl/lib/idn.c @@ -36,7 +36,7 @@ #ifdef USE_LIBIDN2 #include -#if defined(WIN32) && defined(UNICODE) +#if defined(_WIN32) && defined(UNICODE) #define IDN2_LOOKUP(name, host, flags) \ idn2_lookup_u8((const uint8_t *)name, (uint8_t **)host, flags) #else diff --git a/external/curl/lib/imap.c b/external/curl/lib/imap.c index de64c2a7f..47cff4897 100644 --- a/external/curl/lib/imap.c +++ b/external/curl/lib/imap.c @@ -1194,8 +1194,6 @@ static CURLcode imap_state_fetch_resp(struct Curl_easy *data, if(result) return result; - data->req.bytecount += chunk; - infof(data, "Written %zu bytes, %" CURL_FORMAT_CURL_OFF_TU " bytes are left for transfer", chunk, size - chunk); @@ -1430,7 +1428,7 @@ static CURLcode imap_init(struct Curl_easy *data) CURLcode result = CURLE_OK; struct IMAP *imap; - imap = data->req.p.imap = calloc(sizeof(struct IMAP), 1); + imap = data->req.p.imap = calloc(1, sizeof(struct IMAP)); if(!imap) result = CURLE_OUT_OF_MEMORY; diff --git a/external/curl/lib/ldap.c b/external/curl/lib/ldap.c index 239d3fbf0..eb5fe795e 100644 --- a/external/curl/lib/ldap.c +++ b/external/curl/lib/ldap.c @@ -313,7 +313,6 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) int ldap_ssl = 0; char *val_b64 = NULL; size_t val_b64_sz = 0; - curl_off_t dlsize = 0; #ifdef LDAP_OPT_NETWORK_TIMEOUT struct timeval ldap_timeout = {10, 0}; /* 10 sec connection/search timeout */ #endif @@ -327,7 +326,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) *done = TRUE; /* unconditionally */ infof(data, "LDAP local: LDAP Vendor = %s ; LDAP Version = %d", - LDAP_VENDOR_NAME, LDAP_VENDOR_VERSION); + LDAP_VENDOR_NAME, LDAP_VENDOR_VERSION); infof(data, "LDAP local: %s", data->state.url); #ifdef HAVE_LDAP_URL_PARSE @@ -345,7 +344,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) if(conn->given->flags & PROTOPT_SSL) ldap_ssl = 1; infof(data, "LDAP local: trying to establish %s connection", - ldap_ssl ? "encrypted" : "cleartext"); + ldap_ssl ? "encrypted" : "cleartext"); #if defined(USE_WIN32_LDAP) host = curlx_convert_UTF8_to_tchar(conn->host.name); @@ -535,6 +534,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) goto quit; } + Curl_pgrsSetDownloadCounter(data, 0); rc = ldap_search_s(server, ludp->lud_dn, ludp->lud_scope, ludp->lud_filter, ludp->lud_attrs, 0, &ldapmsg); @@ -596,8 +596,6 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) goto quit; } - dlsize += name_len + 5; - FREE_ON_WINLDAP(name); ldap_memfree(dn); } @@ -659,8 +657,6 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) goto quit; } - dlsize += attr_len + 3; - if((attr_len > 7) && (strcmp(";binary", attr + (attr_len - 7)) == 0)) { /* Binary attribute, encode to base64. */ @@ -689,8 +685,6 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) goto quit; } - - dlsize += val_b64_sz; } } else { @@ -705,8 +699,6 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) goto quit; } - - dlsize += vals[i]->bv_len; } result = Curl_client_write(data, CLIENTWRITE_BODY, (char *)"\n", 1); @@ -719,8 +711,6 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) goto quit; } - - dlsize++; } /* Free memory used to store values */ @@ -734,10 +724,6 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done) result = Curl_client_write(data, CLIENTWRITE_BODY, (char *)"\n", 1); if(result) goto quit; - dlsize++; - result = Curl_pgrsSetDownloadCounter(data, dlsize); - if(result) - goto quit; } if(ber) diff --git a/external/curl/lib/libcurl.plist b/external/curl/lib/libcurl.plist index 00597b9dd..14c198bb9 100644 --- a/external/curl/lib/libcurl.plist +++ b/external/curl/lib/libcurl.plist @@ -15,7 +15,7 @@ se.curl.libcurl CFBundleVersion - 8.4.0 + 8.5.0 CFBundleName libcurl @@ -27,9 +27,9 @@ ???? CFBundleShortVersionString - libcurl 8.4.0 + libcurl 8.5.0 CFBundleGetInfoString - libcurl.plist 8.4.0 + libcurl.plist 8.5.0 diff --git a/external/curl/lib/md4.c b/external/curl/lib/md4.c index 30ab62e60..486e5fa6a 100644 --- a/external/curl/lib/md4.c +++ b/external/curl/lib/md4.c @@ -32,9 +32,8 @@ #include "warnless.h" #ifdef USE_OPENSSL -#include -#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \ - !defined(USE_AMISSL) +#include +#if (OPENSSL_VERSION_NUMBER >= 0x30000000L) && !defined(USE_AMISSL) /* OpenSSL 3.0.0 marks the MD4 functions as deprecated */ #define OPENSSL_NO_MD4 #endif diff --git a/external/curl/lib/memdebug.c b/external/curl/lib/memdebug.c index d6952a07a..f6ced85cd 100644 --- a/external/curl/lib/memdebug.c +++ b/external/curl/lib/memdebug.c @@ -208,7 +208,7 @@ ALLOC_FUNC char *curl_dbg_strdup(const char *str, return mem; } -#if defined(WIN32) && defined(UNICODE) +#if defined(_WIN32) && defined(UNICODE) ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line, const char *source) { diff --git a/external/curl/lib/memdebug.h b/external/curl/lib/memdebug.h index c9eb5dc37..78a012580 100644 --- a/external/curl/lib/memdebug.h +++ b/external/curl/lib/memdebug.h @@ -64,7 +64,7 @@ CURL_EXTERN ALLOC_SIZE(2) void *curl_dbg_realloc(void *ptr, CURL_EXTERN void curl_dbg_free(void *ptr, int line, const char *source); CURL_EXTERN ALLOC_FUNC char *curl_dbg_strdup(const char *str, int line, const char *src); -#if defined(WIN32) && defined(UNICODE) +#if defined(_WIN32) && defined(UNICODE) CURL_EXTERN ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line, const char *source); @@ -121,7 +121,7 @@ CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source); #define send(a,b,c,d) curl_dbg_send(a,b,c,d, __LINE__, __FILE__) #define recv(a,b,c,d) curl_dbg_recv(a,b,c,d, __LINE__, __FILE__) -#ifdef WIN32 +#ifdef _WIN32 # ifdef UNICODE # undef wcsdup # define wcsdup(ptr) curl_dbg_wcsdup(ptr, __LINE__, __FILE__) diff --git a/external/curl/lib/mime.c b/external/curl/lib/mime.c index 3b27e59e1..bb66130ad 100644 --- a/external/curl/lib/mime.c +++ b/external/curl/lib/mime.c @@ -48,7 +48,7 @@ #include "curl_memory.h" #include "memdebug.h" -#ifdef WIN32 +#ifdef _WIN32 # ifndef R_OK # define R_OK 4 # endif @@ -311,8 +311,7 @@ static char *escape_string(struct Curl_easy *data, table = formtable; /* data can be NULL when this function is called indirectly from curl_formget(). */ - if(strategy == MIMESTRATEGY_MAIL || - (data && (data->set.mime_options & CURLMIMEOPT_FORMESCAPE))) + if(strategy == MIMESTRATEGY_MAIL || (data && (data->set.mime_formescape))) table = mimetable; Curl_dyn_init(&db, CURL_MAX_INPUT_LENGTH); diff --git a/external/curl/lib/mprintf.c b/external/curl/lib/mprintf.c index af5d753d6..6b5df5bdd 100644 --- a/external/curl/lib/mprintf.c +++ b/external/curl/lib/mprintf.c @@ -66,9 +66,7 @@ * Non-ANSI integer extensions */ -#if (defined(__BORLANDC__) && (__BORLANDC__ >= 0x520)) || \ - (defined(__POCC__) && defined(_MSC_VER)) || \ - (defined(_WIN32_WCE)) || \ +#if (defined(_WIN32_WCE)) || \ (defined(__MINGW32__)) || \ (defined(_MSC_VER) && (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)) # define MP_HAVE_INT_EXTENSIONS @@ -1071,9 +1069,6 @@ static int alloc_addbyter(int output, FILE *data) return outc; /* fputc() returns like this on success */ } -extern int Curl_dyn_vprintf(struct dynbuf *dyn, - const char *format, va_list ap_save); - /* appends the formatted string, returns 0 on success, 1 on error */ int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save) { diff --git a/external/curl/lib/mqtt.c b/external/curl/lib/mqtt.c index 54f88822c..366235c55 100644 --- a/external/curl/lib/mqtt.c +++ b/external/curl/lib/mqtt.c @@ -616,9 +616,6 @@ static void mqstate(struct Curl_easy *data, } -/* for the publish packet */ -#define MQTT_HEADER_LEN 5 /* max 5 bytes */ - static CURLcode mqtt_read_publish(struct Curl_easy *data, bool *done) { CURLcode result = CURLE_OK; @@ -677,7 +674,6 @@ static CURLcode mqtt_read_publish(struct Curl_easy *data, bool *done) /* FALLTHROUGH */ case MQTT_PUB_REMAIN: { /* read rest of packet, but no more. Cap to buffer size */ - struct SingleRequest *k = &data->req; size_t rest = mq->npacket; if(rest > (size_t)data->set.buffer_size) rest = (size_t)data->set.buffer_size; @@ -693,13 +689,8 @@ static CURLcode mqtt_read_publish(struct Curl_easy *data, bool *done) result = CURLE_PARTIAL_FILE; goto end; } - Curl_debug(data, CURLINFO_DATA_IN, (char *)pkt, (size_t)nread); mq->npacket -= nread; - k->bytecount += nread; - result = Curl_pgrsSetDownloadCounter(data, k->bytecount); - if(result) - goto end; /* if QoS is set, message contains packet id */ diff --git a/external/curl/lib/multi.c b/external/curl/lib/multi.c index ff753ac8c..5456113be 100644 --- a/external/curl/lib/multi.c +++ b/external/curl/lib/multi.c @@ -55,22 +55,6 @@ #include "curl_memory.h" #include "memdebug.h" -#ifdef __APPLE__ - -#define wakeup_write write -#define wakeup_read read -#define wakeup_close close -#define wakeup_create pipe - -#else /* __APPLE__ */ - -#define wakeup_write swrite -#define wakeup_read sread -#define wakeup_close sclose -#define wakeup_create(p) Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, p) - -#endif /* __APPLE__ */ - /* CURL_SOCKET_HASH_TABLE_SIZE should be a prime number. Increasing it from 97 to 911 takes on a 32-bit machine 4 x 804 = 3211 more bytes. Still, every @@ -231,10 +215,6 @@ struct Curl_sh_entry { unsigned int readers; /* this many transfers want to read */ unsigned int writers; /* this many transfers want to write */ }; -/* bits for 'action' having no bits means this socket is not expecting any - action */ -#define SH_READ 1 -#define SH_WRITE 2 /* look up a given socket in the socket hash, skip invalid sockets */ static struct Curl_sh_entry *sh_getentry(struct Curl_hash *sh, @@ -416,9 +396,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */ Curl_llist_init(&multi->msgsent, NULL); multi->multiplexing = TRUE; - - /* -1 means it not set by user, use the default value */ - multi->maxconnects = -1; multi->max_concurrent_streams = 100; #ifdef USE_WINSOCK @@ -1040,49 +1017,61 @@ static int protocol_getsock(struct Curl_easy *data, { if(conn->handler->proto_getsock) return conn->handler->proto_getsock(data, conn, socks); - return Curl_conn_get_select_socks(data, FIRSTSOCKET, socks); + return GETSOCK_BLANK; } -/* 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) +/* Initializes `poll_set` with the current socket poll actions needed + * for transfer `data`. */ +static void multi_getsock(struct Curl_easy *data, + struct easy_pollset *ps) { - struct connectdata *conn = data->conn; /* The no connection case can happen when this is called from curl_multi_remove_handle() => singlesocket() => multi_getsock(). */ - if(!conn) - return 0; + Curl_pollset_reset(data, ps); + if(!data->conn) + return; switch(data->mstate) { default: - return 0; + break; case MSTATE_RESOLVING: - return Curl_resolv_getsock(data, socks); + Curl_pollset_add_socks2(data, ps, Curl_resolv_getsock); + /* connection filters are not involved in this phase */ + return; case MSTATE_PROTOCONNECTING: case MSTATE_PROTOCONNECT: - return protocol_getsock(data, conn, socks); + Curl_pollset_add_socks(data, ps, protocol_getsock); + break; case MSTATE_DO: case MSTATE_DOING: - return doing_getsock(data, conn, socks); + Curl_pollset_add_socks(data, ps, doing_getsock); + break; case MSTATE_TUNNELING: case MSTATE_CONNECTING: - return Curl_conn_get_select_socks(data, FIRSTSOCKET, socks); + break; case MSTATE_DOING_MORE: - return domore_getsock(data, conn, socks); + Curl_pollset_add_socks(data, ps, domore_getsock); + break; case MSTATE_DID: /* since is set after DO is completed, we switch to waiting for the same as the PERFORMING state */ case MSTATE_PERFORMING: - return Curl_single_getsock(data, conn, socks); + Curl_pollset_add_socks(data, ps, Curl_single_getsock); + break; + + case MSTATE_RATELIMITING: + /* nothing to wait for */ + return; } + /* Let connection filters add/remove as needed */ + Curl_conn_adjust_pollset(data, ps); } CURLMcode curl_multi_fdset(struct Curl_multi *multi, @@ -1094,8 +1083,8 @@ CURLMcode curl_multi_fdset(struct Curl_multi *multi, and then we must make sure that is done. */ struct Curl_easy *data; int this_max_fd = -1; - curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE]; - int i; + struct easy_pollset ps; + unsigned int i; (void)exc_fd_set; /* not used */ if(!GOOD_MULTI_HANDLE(multi)) @@ -1104,29 +1093,20 @@ CURLMcode curl_multi_fdset(struct Curl_multi *multi, if(multi->in_callback) return CURLM_RECURSIVE_API_CALL; + memset(&ps, 0, sizeof(ps)); for(data = multi->easyp; data; data = data->next) { - int bitmap; -#ifdef __clang_analyzer_ - /* to prevent "The left operand of '>=' is a garbage value" warnings */ - memset(sockbunch, 0, sizeof(sockbunch)); -#endif - bitmap = multi_getsock(data, sockbunch); - - for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++) { - if((bitmap & GETSOCK_MASK_RW(i)) && VALID_SOCK((sockbunch[i]))) { - if(!FDSET_SOCK(sockbunch[i])) - /* pretend it doesn't exist */ - continue; - if(bitmap & GETSOCK_READSOCK(i)) - FD_SET(sockbunch[i], read_fd_set); - if(bitmap & GETSOCK_WRITESOCK(i)) - FD_SET(sockbunch[i], write_fd_set); - if((int)sockbunch[i] > this_max_fd) - this_max_fd = (int)sockbunch[i]; - } - else { - break; - } + multi_getsock(data, &ps); + + for(i = 0; i < ps.num; i++) { + if(!FDSET_SOCK(ps.sockets[i])) + /* pretend it doesn't exist */ + continue; + if(ps.actions[i] & CURL_POLL_IN) + FD_SET(ps.sockets[i], read_fd_set); + if(ps.actions[i] & CURL_POLL_OUT) + FD_SET(ps.sockets[i], write_fd_set); + if((int)ps.sockets[i] > this_max_fd) + this_max_fd = (int)ps.sockets[i]; } } @@ -1162,9 +1142,8 @@ static CURLMcode multi_wait(struct Curl_multi *multi, bool use_wakeup) { struct Curl_easy *data; - curl_socket_t sockbunch[MAX_SOCKSPEREASYHANDLE]; - int bitmap; - unsigned int i; + struct easy_pollset ps; + size_t i; unsigned int nfds = 0; unsigned int curlfds; long timeout_internal; @@ -1190,17 +1169,10 @@ static CURLMcode multi_wait(struct Curl_multi *multi, return CURLM_BAD_FUNCTION_ARGUMENT; /* Count up how many fds we have from the multi handle */ + memset(&ps, 0, sizeof(ps)); for(data = multi->easyp; data; data = data->next) { - bitmap = multi_getsock(data, sockbunch); - - for(i = 0; i < MAX_SOCKSPEREASYHANDLE; i++) { - if((bitmap & GETSOCK_MASK_RW(i)) && VALID_SOCK((sockbunch[i]))) { - ++nfds; - } - else { - break; - } - } + multi_getsock(data, &ps); + nfds += ps.num; } /* If the internally desired timeout is actually shorter than requested from @@ -1241,40 +1213,35 @@ static CURLMcode multi_wait(struct Curl_multi *multi, if(curlfds) { /* Add the curl handles to our pollfds first */ for(data = multi->easyp; data; data = data->next) { - bitmap = multi_getsock(data, sockbunch); + multi_getsock(data, &ps); - for(i = 0; i < MAX_SOCKSPEREASYHANDLE; i++) { - if((bitmap & GETSOCK_MASK_RW(i)) && VALID_SOCK((sockbunch[i]))) { - struct pollfd *ufd = &ufds[nfds++]; -#ifdef USE_WINSOCK - long mask = 0; -#endif - ufd->fd = sockbunch[i]; - ufd->events = 0; - if(bitmap & GETSOCK_READSOCK(i)) { + for(i = 0; i < ps.num; i++) { + struct pollfd *ufd = &ufds[nfds++]; #ifdef USE_WINSOCK - mask |= FD_READ|FD_ACCEPT|FD_CLOSE; + long mask = 0; #endif - ufd->events |= POLLIN; - } - if(bitmap & GETSOCK_WRITESOCK(i)) { + ufd->fd = ps.sockets[i]; + ufd->events = 0; + if(ps.actions[i] & CURL_POLL_IN) { #ifdef USE_WINSOCK - mask |= FD_WRITE|FD_CONNECT|FD_CLOSE; - reset_socket_fdwrite(sockbunch[i]); + mask |= FD_READ|FD_ACCEPT|FD_CLOSE; #endif - ufd->events |= POLLOUT; - } + ufd->events |= POLLIN; + } + if(ps.actions[i] & CURL_POLL_OUT) { #ifdef USE_WINSOCK - if(WSAEventSelect(sockbunch[i], multi->wsa_event, mask) != 0) { - if(ufds_malloc) - free(ufds); - return CURLM_INTERNAL_ERROR; - } + mask |= FD_WRITE|FD_CONNECT|FD_CLOSE; + reset_socket_fdwrite(ps.sockets[i]); #endif + ufd->events |= POLLOUT; } - else { - break; +#ifdef USE_WINSOCK + if(WSAEventSelect(ps.sockets[i], multi->wsa_event, mask) != 0) { + if(ufds_malloc) + free(ufds); + return CURLM_INTERNAL_ERROR; } +#endif } } } @@ -1386,21 +1353,16 @@ static CURLMcode multi_wait(struct Curl_multi *multi, if(curlfds) { for(data = multi->easyp; data; data = data->next) { - bitmap = multi_getsock(data, sockbunch); - - for(i = 0; i < MAX_SOCKSPEREASYHANDLE; i++) { - if(bitmap & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i))) { - wsa_events.lNetworkEvents = 0; - if(WSAEnumNetworkEvents(sockbunch[i], NULL, &wsa_events) == 0) { - if(ret && !pollrc && wsa_events.lNetworkEvents) - retcode++; - } - WSAEventSelect(sockbunch[i], multi->wsa_event, 0); - } - else { - /* break on entry not checked for being readable or writable */ - break; + multi_getsock(data, &ps); + + for(i = 0; i < ps.num; i++) { + wsa_events.lNetworkEvents = 0; + if(WSAEnumNetworkEvents(ps.sockets[i], NULL, + &wsa_events) == 0) { + if(ret && !pollrc && wsa_events.lNetworkEvents) + retcode++; } + WSAEventSelect(ps.sockets[i], multi->wsa_event, 0); } } } @@ -2021,8 +1983,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, if(dns) { #ifdef CURLRES_ASYNCH - data->state.async.dns = dns; - data->state.async.done = TRUE; + conn->resolve_async.dns = dns; + conn->resolve_async.done = TRUE; #endif result = CURLE_OK; infof(data, "Hostname '%s' was found in DNS cache", hostname); @@ -2895,53 +2857,36 @@ CURLMsg *curl_multi_info_read(struct Curl_multi *multi, int *msgs_in_queue) static CURLMcode singlesocket(struct Curl_multi *multi, struct Curl_easy *data) { - curl_socket_t socks[MAX_SOCKSPEREASYHANDLE]; - int i; + struct easy_pollset cur_poll; + unsigned int i; struct Curl_sh_entry *entry; curl_socket_t s; - int num; - unsigned int curraction; - unsigned char actions[MAX_SOCKSPEREASYHANDLE]; int rc; - for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++) - socks[i] = CURL_SOCKET_BAD; - /* 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); + multi_getsock(data, &cur_poll); /* 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 longer supervised ones and add new ones */ /* walk over the sockets we got right now */ - for(i = 0; (i< MAX_SOCKSPEREASYHANDLE) && - (curraction & GETSOCK_MASK_RW(i)); - i++) { - unsigned char action = CURL_POLL_NONE; - unsigned char prevaction = 0; + for(i = 0; i < cur_poll.num; i++) { + unsigned char cur_action = cur_poll.actions[i]; + unsigned char last_action = 0; int comboaction; - bool sincebefore = FALSE; - s = socks[i]; + s = cur_poll.sockets[i]; /* get it from the hash */ entry = sh_getentry(&multi->sockhash, s); - - if(curraction & GETSOCK_READSOCK(i)) - action |= CURL_POLL_IN; - if(curraction & GETSOCK_WRITESOCK(i)) - action |= CURL_POLL_OUT; - - actions[i] = action; if(entry) { /* check if new for this transfer */ - int j; - for(j = 0; j< data->numsocks; j++) { - if(s == data->sockets[j]) { - prevaction = data->actions[j]; - sincebefore = TRUE; + unsigned int j; + for(j = 0; j< data->last_poll.num; j++) { + if(s == data->last_poll.sockets[j]) { + last_action = data->last_poll.actions[j]; break; } } @@ -2953,23 +2898,23 @@ static CURLMcode singlesocket(struct Curl_multi *multi, /* fatal */ return CURLM_OUT_OF_MEMORY; } - if(sincebefore && (prevaction != action)) { + if(last_action && (last_action != cur_action)) { /* Socket was used already, but different action now */ - if(prevaction & CURL_POLL_IN) + if(last_action & CURL_POLL_IN) entry->readers--; - if(prevaction & CURL_POLL_OUT) + if(last_action & CURL_POLL_OUT) entry->writers--; - if(action & CURL_POLL_IN) + if(cur_action & CURL_POLL_IN) entry->readers++; - if(action & CURL_POLL_OUT) + if(cur_action & CURL_POLL_OUT) entry->writers++; } - else if(!sincebefore) { - /* a new user */ + else if(!last_action) { + /* a new transfer using this socket */ entry->users++; - if(action & CURL_POLL_IN) + if(cur_action & CURL_POLL_IN) entry->readers++; - if(action & CURL_POLL_OUT) + if(cur_action & CURL_POLL_OUT) entry->writers++; /* add 'data' to the transfer hash on this socket! */ @@ -2980,11 +2925,11 @@ static CURLMcode singlesocket(struct Curl_multi *multi, } } - comboaction = (entry->writers? CURL_POLL_OUT : 0) | + comboaction = (entry->writers ? CURL_POLL_OUT : 0) | (entry->readers ? CURL_POLL_IN : 0); /* socket existed before and has the same action set as before */ - if(sincebefore && ((int)entry->action == comboaction)) + if(last_action && ((int)entry->action == comboaction)) /* same, continue */ continue; @@ -2992,6 +2937,7 @@ static CURLMcode singlesocket(struct Curl_multi *multi, set_in_callback(multi, TRUE); rc = multi->socket_cb(data, s, comboaction, multi->socket_userp, entry->socketp); + set_in_callback(multi, FALSE); if(rc == -1) { multi->dead = TRUE; @@ -3002,16 +2948,15 @@ static CURLMcode singlesocket(struct Curl_multi *multi, entry->action = comboaction; /* store the current action state */ } - num = i; /* number of sockets */ - - /* when we've walked over all the sockets we should have right now, we must - make sure to detect sockets that are removed */ - for(i = 0; i< data->numsocks; i++) { - int j; + /* Check for last_poll.sockets that no longer appear in cur_poll.sockets. + * Need to remove the easy handle from the multi->sockhash->transfers and + * remove multi->sockhash entry when this was the last transfer */ + for(i = 0; i< data->last_poll.num; i++) { + unsigned int j; bool stillused = FALSE; - s = data->sockets[i]; - for(j = 0; j < num; j++) { - if(s == socks[j]) { + s = data->last_poll.sockets[i]; + for(j = 0; j < cur_poll.num; j++) { + if(s == cur_poll.sockets[j]) { /* this is still supervised */ stillused = TRUE; break; @@ -3024,7 +2969,7 @@ static CURLMcode singlesocket(struct Curl_multi *multi, /* if this is NULL here, the socket has been closed and notified so already by Curl_multi_closed() */ if(entry) { - unsigned char oldactions = data->actions[i]; + unsigned char oldactions = data->last_poll.actions[i]; /* this socket has been removed. Decrease user count */ entry->users--; if(oldactions & CURL_POLL_OUT) @@ -3052,11 +2997,10 @@ static CURLMcode singlesocket(struct Curl_multi *multi, } } } - } /* for loop over numsocks */ + } /* for loop over num */ - memcpy(data->sockets, socks, num*sizeof(curl_socket_t)); - memcpy(data->actions, actions, num*sizeof(char)); - data->numsocks = num; + /* Remember for next time */ + memcpy(&data->last_poll, &cur_poll, sizeof(data->last_poll)); return CURLM_OK; } @@ -3296,6 +3240,7 @@ CURLMcode curl_multi_setopt(struct Curl_multi *multi, { CURLMcode res = CURLM_OK; va_list param; + unsigned long uarg; if(!GOOD_MULTI_HANDLE(multi)) return CURLM_BAD_HANDLE; @@ -3328,7 +3273,9 @@ CURLMcode curl_multi_setopt(struct Curl_multi *multi, multi->timer_userp = va_arg(param, void *); break; case CURLMOPT_MAXCONNECTS: - multi->maxconnects = va_arg(param, long); + uarg = va_arg(param, unsigned long); + if(uarg <= UINT_MAX) + multi->maxconnects = (unsigned int)uarg; break; case CURLMOPT_MAX_HOST_CONNECTIONS: multi->max_host_connections = va_arg(param, long); @@ -3350,9 +3297,9 @@ CURLMcode curl_multi_setopt(struct Curl_multi *multi, case CURLMOPT_MAX_CONCURRENT_STREAMS: { long streams = va_arg(param, long); - if(streams < 1) + if((streams < 1) || (streams > INT_MAX)) streams = 100; - multi->max_concurrent_streams = curlx_sltoui(streams); + multi->max_concurrent_streams = (unsigned int)streams; } break; default: @@ -3782,11 +3729,11 @@ struct Curl_easy **curl_multi_get_handles(struct Curl_multi *multi) struct Curl_easy **a = malloc(sizeof(struct Curl_easy *) * (multi->num_easy + 1)); if(a) { - int i = 0; + unsigned int i = 0; struct Curl_easy *e = multi->easyp; while(e) { DEBUGASSERT(i < multi->num_easy); - if(!e->internal) + if(!e->state.internal) a[i++] = e; e = e->next; } diff --git a/external/curl/lib/multihandle.h b/external/curl/lib/multihandle.h index 5b16bb605..e03e382e2 100644 --- a/external/curl/lib/multihandle.h +++ b/external/curl/lib/multihandle.h @@ -93,9 +93,9 @@ struct Curl_multi { struct Curl_easy *easyp; struct Curl_easy *easylp; /* last node */ - int num_easy; /* amount of entries in the linked list above. */ - int num_alive; /* amount of easy handles that are added but have not yet - reached COMPLETE state */ + unsigned int num_easy; /* amount of entries in the linked list above. */ + unsigned int num_alive; /* amount of easy handles that are added but have + not yet reached COMPLETE state */ struct Curl_llist msglist; /* a list of messages from completed transfers */ @@ -136,9 +136,6 @@ struct Curl_multi { /* Shared connection cache (bundles)*/ struct conncache conn_cache; - long maxconnects; /* if >0, a fixed limit of the maximum number of entries - we're allowed to grow the connection cache to */ - long max_host_connections; /* if >0, a fixed limit of the maximum number of connections per host */ @@ -150,8 +147,6 @@ struct Curl_multi { void *timer_userp; struct curltime timer_lastcall; /* the fixed time for the timeout for the previous callback */ - unsigned int max_concurrent_streams; - #ifdef USE_WINSOCK WSAEVENT wsa_event; /* winsock event used for waits */ #else @@ -160,6 +155,10 @@ struct Curl_multi { 0 is used for read, 1 is used for write */ #endif #endif + unsigned int max_concurrent_streams; + unsigned int maxconnects; /* if >0, a fixed limit of the maximum number of + entries we're allowed to grow the connection + cache to */ #define IPV6_UNKNOWN 0 #define IPV6_DEAD 1 #define IPV6_WORKS 2 diff --git a/external/curl/lib/netrc.c b/external/curl/lib/netrc.c index e6a09b187..038c6dca6 100644 --- a/external/curl/lib/netrc.c +++ b/external/curl/lib/netrc.c @@ -327,7 +327,7 @@ int Curl_parsenetrc(const char *host, char **loginp, char **passwordp, } retcode = parsenetrc(host, loginp, passwordp, filealloc); free(filealloc); -#ifdef WIN32 +#ifdef _WIN32 if(retcode == NETRC_FILE_MISSING) { /* fallback to the old-style "_netrc" file */ filealloc = curl_maprintf("%s%s_netrc", home, DIR_CHAR); diff --git a/external/curl/lib/openldap.c b/external/curl/lib/openldap.c index 3aff3060a..131f47414 100644 --- a/external/curl/lib/openldap.c +++ b/external/curl/lib/openldap.c @@ -319,31 +319,12 @@ static CURLcode oldap_setup_connection(struct Curl_easy *data, { CURLcode result; LDAPURLDesc *lud; - struct ldapconninfo *li; + (void)conn; /* Early URL syntax check. */ result = oldap_url_parse(data, &lud); ldap_free_urldesc(lud); - if(!result) { - li = calloc(1, sizeof(struct ldapconninfo)); - if(!li) - result = CURLE_OUT_OF_MEMORY; - else { - li->proto = ldap_pvt_url_scheme2proto(data->state.up.scheme); - conn->proto.ldapc = li; - connkeep(conn, "OpenLDAP default"); - - /* Initialize the SASL storage */ - Curl_sasl_init(&li->sasl, data, &saslldap); - - /* Clear the TLS upgraded flag */ - conn->bits.tls_upgraded = FALSE; - - result = oldap_parse_login_options(conn); - } - } - return result; } @@ -537,7 +518,7 @@ static CURLcode oldap_perform_starttls(struct Curl_easy *data) static CURLcode oldap_connect(struct Curl_easy *data, bool *done) { struct connectdata *conn = data->conn; - struct ldapconninfo *li = conn->proto.ldapc; + struct ldapconninfo *li; static const int version = LDAP_VERSION3; int rc; char *hosturl; @@ -547,6 +528,26 @@ static CURLcode oldap_connect(struct Curl_easy *data, bool *done) (void)done; + DEBUGASSERT(!conn->proto.ldapc); + li = calloc(1, sizeof(struct ldapconninfo)); + if(!li) + return CURLE_OUT_OF_MEMORY; + else { + CURLcode result; + li->proto = ldap_pvt_url_scheme2proto(data->state.up.scheme); + conn->proto.ldapc = li; + + /* Initialize the SASL storage */ + Curl_sasl_init(&li->sasl, data, &saslldap); + + /* Clear the TLS upgraded flag */ + conn->bits.tls_upgraded = FALSE; + + result = oldap_parse_login_options(conn); + if(result) + return result; + } + hosturl = aprintf("ldap%s://%s:%d", conn->handler->flags & PROTOPT_SSL? "s": "", conn->host.name, conn->remote_port); @@ -886,6 +887,11 @@ static CURLcode oldap_do(struct Curl_easy *data, bool *done) result = oldap_url_parse(data, &lud); if(!result) { + Sockbuf *sb; + /* re-install the libcurl SSL handlers into the sockbuf. */ + ldap_get_option(li->ld, LDAP_OPT_SOCKBUF, &sb); + ber_sockbuf_add_io(sb, &ldapsb_tls, LBER_SBIOD_LEVEL_TRANSPORT, data); + rc = ldap_search_ext(li->ld, lud->lud_dn, lud->lud_scope, lud->lud_filter, lud->lud_attrs, 0, NULL, NULL, NULL, 0, &msgid); @@ -947,18 +953,12 @@ static CURLcode client_write(struct Curl_easy *data, if(!len && plen && prefix[plen - 1] == ' ') plen--; result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) prefix, plen); - if(!result) - data->req.bytecount += plen; } if(!result && value) { result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) value, len); - if(!result) - data->req.bytecount += len; } if(!result && suffix) { result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) suffix, slen); - if(!result) - data->req.bytecount += slen; } return result; } diff --git a/external/curl/lib/pop3.c b/external/curl/lib/pop3.c index a9d5fdd69..3e0f20a69 100644 --- a/external/curl/lib/pop3.c +++ b/external/curl/lib/pop3.c @@ -1088,7 +1088,7 @@ static CURLcode pop3_init(struct Curl_easy *data) CURLcode result = CURLE_OK; struct POP3 *pop3; - pop3 = data->req.p.pop3 = calloc(sizeof(struct POP3), 1); + pop3 = data->req.p.pop3 = calloc(1, sizeof(struct POP3)); if(!pop3) result = CURLE_OUT_OF_MEMORY; diff --git a/external/curl/lib/progress.c b/external/curl/lib/progress.c index e783a9c86..e96cbf7af 100644 --- a/external/curl/lib/progress.c +++ b/external/curl/lib/progress.c @@ -304,7 +304,7 @@ timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize, * 'actual' is the time in milliseconds it took to actually download the * last 'size' bytes. */ - actual = Curl_timediff(now, start); + actual = Curl_timediff_ceil(now, start); if(actual < minimum) { /* if it downloaded the data faster than the limit, make it wait the difference */ @@ -319,12 +319,6 @@ timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize, */ CURLcode Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size) { - if(data->set.max_filesize && (size > data->set.max_filesize)) { - failf(data, "Exceeded the maximum allowed file size " - "(%" CURL_FORMAT_CURL_OFF_T ")", - data->set.max_filesize); - return CURLE_FILESIZE_EXCEEDED; - } data->progress.downloaded = size; return CURLE_OK; } diff --git a/external/curl/lib/rand.c b/external/curl/lib/rand.c index 6bd96136f..3383c490b 100644 --- a/external/curl/lib/rand.c +++ b/external/curl/lib/rand.c @@ -32,10 +32,6 @@ #ifdef HAVE_ARPA_INET_H #include #endif -#ifdef HAVE_ARC4RANDOM -/* Some platforms might have the prototype missing (ubuntu + libressl) */ -uint32_t arc4random(void); -#endif #include #include "urldata.h" @@ -50,7 +46,7 @@ uint32_t arc4random(void); #include "curl_memory.h" #include "memdebug.h" -#ifdef WIN32 +#ifdef _WIN32 #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 # define HAVE_WIN_BCRYPTGENRANDOM @@ -105,7 +101,6 @@ CURLcode Curl_win32_random(unsigned char *entropy, size_t length) static CURLcode randit(struct Curl_easy *data, unsigned int *rnd) { - unsigned int r; CURLcode result = CURLE_OK; static unsigned int randseed; static bool seeded = FALSE; @@ -138,7 +133,7 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd) /* ---- non-cryptographic version following ---- */ -#ifdef WIN32 +#ifdef _WIN32 if(!seeded) { result = Curl_win32_random((unsigned char *)rnd, sizeof(*rnd)); if(result != CURLE_NOT_BUILT_IN) @@ -146,12 +141,14 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd) } #endif -#ifdef HAVE_ARC4RANDOM - *rnd = (unsigned int)arc4random(); - return CURLE_OK; +#if defined(HAVE_ARC4RANDOM) && !defined(USE_OPENSSL) + if(!seeded) { + *rnd = (unsigned int)arc4random(); + return CURLE_OK; + } #endif -#if defined(RANDOM_FILE) && !defined(WIN32) +#if defined(RANDOM_FILE) && !defined(_WIN32) if(!seeded) { /* if there's a random file to read a seed from, use it */ int fd = open(RANDOM_FILE, O_RDONLY); @@ -175,9 +172,12 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd) seeded = TRUE; } - /* Return an unsigned 32-bit pseudo-random number. */ - r = randseed = randseed * 1103515245 + 12345; - *rnd = (r << 16) | ((r >> 16) & 0xFFFF); + { + unsigned int r; + /* Return an unsigned 32-bit pseudo-random number. */ + r = randseed = randseed * 1103515245 + 12345; + *rnd = (r << 16) | ((r >> 16) & 0xFFFF); + } return CURLE_OK; } diff --git a/external/curl/lib/rand.h b/external/curl/lib/rand.h index 1d009f52c..bc05239e4 100644 --- a/external/curl/lib/rand.h +++ b/external/curl/lib/rand.h @@ -41,7 +41,7 @@ CURLcode Curl_rand_hex(struct Curl_easy *data, unsigned char *rnd, CURLcode Curl_rand_alnum(struct Curl_easy *data, unsigned char *rnd, size_t num); -#ifdef WIN32 +#ifdef _WIN32 /* Random generator shared between the Schannel vtls and Curl_rand*() functions */ CURLcode Curl_win32_random(unsigned char *entropy, size_t length); diff --git a/external/curl/lib/rename.c b/external/curl/lib/rename.c index 97a66e947..4c8869806 100644 --- a/external/curl/lib/rename.c +++ b/external/curl/lib/rename.c @@ -40,7 +40,7 @@ /* return 0 on success, 1 on error */ int Curl_rename(const char *oldpath, const char *newpath) { -#ifdef WIN32 +#ifdef _WIN32 /* rename() on Windows doesn't overwrite, so we can't use it here. MoveFileEx() will overwrite and is usually atomic, however it fails when there are open handles to the file. */ diff --git a/external/curl/lib/rtsp.c b/external/curl/lib/rtsp.c index ccd7264b0..e673bb8dc 100644 --- a/external/curl/lib/rtsp.c +++ b/external/curl/lib/rtsp.c @@ -45,8 +45,8 @@ #include "curl_memory.h" #include "memdebug.h" -#define RTP_PKT_LENGTH(p) ((((int)((unsigned char)((p)[2]))) << 8) | \ - ((int)((unsigned char)((p)[3])))) +#define RTP_PKT_LENGTH(p) ((((unsigned int)((unsigned char)((p)[2]))) << 8) | \ + ((unsigned int)((unsigned char)((p)[3])))) /* protocol-specific functions set up to be called by the main engine */ static CURLcode rtsp_do(struct Curl_easy *data, bool *done); @@ -59,14 +59,19 @@ static int rtsp_getsock_do(struct Curl_easy *data, /* * Parse and write out any available RTP data. - * - * nread: amount of data left after k->str. will be modified if RTP - * data is parsed and k->str is moved up - * readmore: whether or not the RTP parser needs more data right away + * @param data the transfer + * @param conn the connection + * @param buf data read from connection + * @param blen amount of data in buf + * @param consumed out, number of blen consumed + * @param readmore out, TRUE iff complete buf was consumed and more data + * is needed */ static CURLcode rtsp_rtp_readwrite(struct Curl_easy *data, struct connectdata *conn, - ssize_t *nread, + const char *buf, + size_t blen, + size_t *pconsumed, bool *readmore); static CURLcode rtsp_setup_connection(struct Curl_easy *data, @@ -88,7 +93,7 @@ static int rtsp_getsock_do(struct Curl_easy *data, struct connectdata *conn, } static -CURLcode rtp_client_write(struct Curl_easy *data, char *ptr, size_t len); +CURLcode rtp_client_write(struct Curl_easy *data, const char *ptr, size_t len); static CURLcode rtsp_parse_transport(struct Curl_easy *data, char *transport); @@ -585,153 +590,249 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done) return result; } - -static CURLcode rtsp_rtp_readwrite(struct Curl_easy *data, - struct connectdata *conn, - ssize_t *nread, - bool *readmore) { - struct SingleRequest *k = &data->req; +static CURLcode rtsp_filter_rtp(struct Curl_easy *data, + struct connectdata *conn, + const char *buf, + size_t blen, + bool in_body, + size_t *pconsumed) +{ struct rtsp_conn *rtspc = &(conn->proto.rtspc); - unsigned char *rtp_channel_mask = data->state.rtp_channel_mask; + CURLcode result = CURLE_OK; - char *rtp; /* moving pointer to rtp data */ - ssize_t rtp_dataleft; /* how much data left to parse in this round */ - CURLcode result; - bool interleaved = false; - size_t skip_size = 0; + *pconsumed = 0; + while(blen) { + switch(rtspc->state) { - if(Curl_dyn_len(&rtspc->buf)) { - /* There was some leftover data the last time. Append new buffers */ - if(Curl_dyn_addn(&rtspc->buf, k->str, *nread)) - return CURLE_OUT_OF_MEMORY; - rtp = Curl_dyn_ptr(&rtspc->buf); - rtp_dataleft = Curl_dyn_len(&rtspc->buf); - } - else { - /* Just parse the request buffer directly */ - rtp = k->str; - rtp_dataleft = *nread; - } - - while(rtp_dataleft > 0) { - if(rtp[0] == '$') { - if(rtp_dataleft > 4) { - unsigned char rtp_channel; - int rtp_length; - int idx; - int off; - - /* Parse the header */ - /* The channel identifier immediately follows and is 1 byte */ - rtp_channel = (unsigned char)rtp[1]; - idx = rtp_channel / 8; - off = rtp_channel % 8; - if(!(rtp_channel_mask[idx] & (1 << off))) { - /* invalid channel number, maybe not an RTP packet */ - rtp++; - rtp_dataleft--; - skip_size++; - continue; + case RTP_PARSE_SKIP: { + DEBUGASSERT(Curl_dyn_len(&rtspc->buf) == 0); + if(in_body && buf[0] != '$') { + /* in BODY and no valid start, do not consume and return */ + goto out; + } + while(blen && buf[0] != '$') { + if(!in_body && buf[0] == 'R' && + data->set.rtspreq != RTSPREQ_RECEIVE) { + if(strncmp(buf, "RTSP/", (blen < 5) ? blen : 5) == 0) { + /* This could be the next response, no consume and return */ + if(*pconsumed) { + DEBUGF(infof(data, "RTP rtsp_filter_rtp[SKIP] RTSP/ prefix, " + "skipping %zd bytes of junk", *pconsumed)); + } + rtspc->state = RTP_PARSE_SKIP; + rtspc->in_header = TRUE; + goto out; + } } - if(skip_size > 0) { - DEBUGF(infof(data, "Skip the malformed interleaved data %lu " - "bytes", skip_size)); + /* junk, consume without buffering */ + *pconsumed += 1; + ++buf; + --blen; + } + if(blen && buf[0] == '$') { + /* possible start of an RTP message, buffer */ + if(Curl_dyn_addn(&rtspc->buf, buf, 1)) { + result = CURLE_OUT_OF_MEMORY; + goto out; } - skip_size = 0; - rtspc->rtp_channel = rtp_channel; - - /* The length is two bytes */ - rtp_length = RTP_PKT_LENGTH(rtp); + *pconsumed += 1; + ++buf; + --blen; + rtspc->state = RTP_PARSE_CHANNEL; + } + break; + } - if(rtp_dataleft < rtp_length + 4) { - /* Need more - incomplete payload */ - *readmore = TRUE; - break; + case RTP_PARSE_CHANNEL: { + int idx = ((unsigned char)buf[0]) / 8; + int off = ((unsigned char)buf[0]) % 8; + DEBUGASSERT(Curl_dyn_len(&rtspc->buf) == 1); + if(!(data->state.rtp_channel_mask[idx] & (1 << off))) { + /* invalid channel number, junk or BODY data */ + rtspc->state = RTP_PARSE_SKIP; + if(in_body) { + /* we do not consume this byte, it is BODY data */ + DEBUGF(infof(data, "RTSP: invalid RTP channel %d in BODY, " + "treating as BODY data", idx)); + if(*pconsumed == 0) { + /* We did not consume the initial '$' in our buffer, but had + * it from an earlier call. We cannot un-consume it and have + * to write it directly as BODY data */ + result = Curl_client_write(data, CLIENTWRITE_BODY, + Curl_dyn_ptr(&rtspc->buf), 1); + Curl_dyn_free(&rtspc->buf); + if(result) + goto out; + } + else { + /* un-consume the '$' and leave */ + Curl_dyn_free(&rtspc->buf); + *pconsumed -= 1; + --buf; + ++blen; + goto out; + } } - interleaved = true; - /* We have the full RTP interleaved packet - * Write out the header including the leading '$' */ - DEBUGF(infof(data, "RTP write channel %d rtp_length %d", - rtspc->rtp_channel, rtp_length)); - result = rtp_client_write(data, &rtp[0], rtp_length + 4); - if(result) { - *readmore = FALSE; - return result; + else { + /* not BODY, forget the junk '$'. Do not consume this byte, + * it might be a start */ + infof(data, "RTSP: invalid RTP channel %d, skipping", idx); + Curl_dyn_free(&rtspc->buf); } + break; + } + /* a valid channel, so we expect this to be a real RTP message */ + rtspc->rtp_channel = (unsigned char)buf[0]; + if(Curl_dyn_addn(&rtspc->buf, buf, 1)) { + result = CURLE_OUT_OF_MEMORY; + goto out; + } + *pconsumed += 1; + ++buf; + --blen; + rtspc->state = RTP_PARSE_LEN; + break; + } - /* Move forward in the buffer */ - rtp_dataleft -= rtp_length + 4; - rtp += rtp_length + 4; + case RTP_PARSE_LEN: { + size_t rtp_len = Curl_dyn_len(&rtspc->buf); + const char *rtp_buf; + DEBUGASSERT(rtp_len >= 2 && rtp_len < 4); + if(Curl_dyn_addn(&rtspc->buf, buf, 1)) { + result = CURLE_OUT_OF_MEMORY; + goto out; + } + *pconsumed += 1; + ++buf; + --blen; + if(rtp_len == 2) + break; + rtp_buf = Curl_dyn_ptr(&rtspc->buf); + rtspc->rtp_len = RTP_PKT_LENGTH(rtp_buf) + 4; + rtspc->state = RTP_PARSE_DATA; + break; + } - if(data->set.rtspreq == RTSPREQ_RECEIVE) { - /* If we are in a passive receive, give control back - * to the app as often as we can. - */ - k->keepon &= ~KEEP_RECV; + case RTP_PARSE_DATA: { + size_t rtp_len = Curl_dyn_len(&rtspc->buf); + size_t needed; + DEBUGASSERT(rtp_len < rtspc->rtp_len); + needed = rtspc->rtp_len - rtp_len; + if(needed <= blen) { + if(Curl_dyn_addn(&rtspc->buf, buf, needed)) { + result = CURLE_OUT_OF_MEMORY; + goto out; } + *pconsumed += needed; + buf += needed; + blen -= needed; + /* complete RTP message in buffer */ + DEBUGF(infof(data, "RTP write channel %d rtp_len %zu", + rtspc->rtp_channel, rtspc->rtp_len)); + result = rtp_client_write(data, Curl_dyn_ptr(&rtspc->buf), + rtspc->rtp_len); + Curl_dyn_free(&rtspc->buf); + rtspc->state = RTP_PARSE_SKIP; + if(result) + goto out; } else { - /* Need more - incomplete header */ - *readmore = TRUE; - break; - } - } - else { - /* If the following data begins with 'RTSP/', which might be an RTSP - message, we should stop skipping the data. */ - /* If `k-> headerline> 0 && !interleaved` is true, we are maybe in the - middle of an RTSP message. It is difficult to determine this, so we - stop skipping. */ - size_t prefix_len = (rtp_dataleft < 5) ? rtp_dataleft : 5; - if((k->headerline > 0 && !interleaved) || - strncmp(rtp, "RTSP/", prefix_len) == 0) { - if(skip_size > 0) { - DEBUGF(infof(data, "Skip the malformed interleaved data %lu " - "bytes", skip_size)); + if(Curl_dyn_addn(&rtspc->buf, buf, blen)) { + result = CURLE_OUT_OF_MEMORY; + goto out; } - break; /* maybe is an RTSP message */ + *pconsumed += blen; + buf += blen; + blen = 0; } - /* Skip incorrect data util the next RTP packet or RTSP message */ - do { - rtp++; - rtp_dataleft--; - skip_size++; - } while(rtp_dataleft > 0 && rtp[0] != '$' && rtp[0] != 'R'); + break; + } + + default: + DEBUGASSERT(0); + return CURLE_RECV_ERROR; } } +out: + return result; +} + +static CURLcode rtsp_rtp_readwrite(struct Curl_easy *data, + struct connectdata *conn, + const char *buf, + size_t blen, + size_t *pconsumed, + bool *readmore) +{ + struct rtsp_conn *rtspc = &(conn->proto.rtspc); + CURLcode result = CURLE_OK; + size_t consumed = 0; + bool in_body; - if(rtp_dataleft && rtp[0] == '$') { - DEBUGF(infof(data, "RTP Rewinding %zd %s", rtp_dataleft, - *readmore ? "(READMORE)" : "")); + if(!data->req.header) + rtspc->in_header = FALSE; + in_body = (data->req.headerline && !rtspc->in_header) && + (data->req.size >= 0) && + (data->req.bytecount < data->req.size); - /* Store the incomplete RTP packet for a "rewind" */ - if(!Curl_dyn_len(&rtspc->buf)) { - /* nothing was stored, add this data */ - if(Curl_dyn_addn(&rtspc->buf, rtp, rtp_dataleft)) - return CURLE_OUT_OF_MEMORY; - } - else { - /* keep the remainder */ - Curl_dyn_tail(&rtspc->buf, rtp_dataleft); - } + *readmore = FALSE; + *pconsumed = 0; + if(!blen) { + goto out; + } - /* As far as the transfer is concerned, this data is consumed */ - *nread = 0; - return CURLE_OK; + /* If header parsing is not onging, extract RTP messages */ + if(!rtspc->in_header) { + result = rtsp_filter_rtp(data, conn, buf, blen, in_body, &consumed); + if(result) + goto out; + *pconsumed += consumed; + buf += consumed; + blen -= consumed; } - /* Fix up k->str to point just after the last RTP packet */ - k->str += *nread - rtp_dataleft; - *nread = rtp_dataleft; + /* we want to parse headers, do so */ + if(data->req.header && blen) { + rtspc->in_header = TRUE; + result = Curl_http_readwrite_headers(data, conn, buf, blen, + &consumed); + if(result) + goto out; + + *pconsumed += consumed; + buf += consumed; + blen -= consumed; + + if(!data->req.header) + rtspc->in_header = FALSE; + + if(!rtspc->in_header) { + /* If header parsing is done and data left, extract RTP messages */ + in_body = (data->req.headerline && !rtspc->in_header) && + (data->req.size >= 0) && + (data->req.bytecount < data->req.size); + result = rtsp_filter_rtp(data, conn, buf, blen, in_body, &consumed); + if(result) + goto out; + *pconsumed += consumed; + } + } - /* If we get here, we have finished with the leftover/merge buffer */ - Curl_dyn_free(&rtspc->buf); + if(rtspc->state != RTP_PARSE_SKIP) + *readmore = TRUE; - return CURLE_OK; +out: + if(!*readmore && data->set.rtspreq == RTSPREQ_RECEIVE) { + /* In special mode RECEIVE, we just process one chunk of network + * data, so we stop the transfer here, if we have no incomplete + * RTP message pending. */ + data->req.keepon &= ~KEEP_RECV; + } + return result; } static -CURLcode rtp_client_write(struct Curl_easy *data, char *ptr, size_t len) +CURLcode rtp_client_write(struct Curl_easy *data, const char *ptr, size_t len) { size_t wrote; curl_write_callback writeit; @@ -756,7 +857,7 @@ CURLcode rtp_client_write(struct Curl_easy *data, char *ptr, size_t len) } Curl_set_in_callback(data, true); - wrote = writeit(ptr, 1, len, user_ptr); + wrote = writeit((char *)ptr, 1, len, user_ptr); Curl_set_in_callback(data, false); if(CURL_WRITEFUNC_PAUSE == wrote) { diff --git a/external/curl/lib/rtsp.h b/external/curl/lib/rtsp.h index 111bac2a6..237b80f80 100644 --- a/external/curl/lib/rtsp.h +++ b/external/curl/lib/rtsp.h @@ -39,6 +39,12 @@ CURLcode Curl_rtsp_parseheader(struct Curl_easy *data, char *header); #endif /* CURL_DISABLE_RTSP */ +typedef enum { + RTP_PARSE_SKIP, + RTP_PARSE_CHANNEL, + RTP_PARSE_LEN, + RTP_PARSE_DATA +} rtp_parse_st; /* * RTSP Connection data * @@ -47,6 +53,9 @@ CURLcode Curl_rtsp_parseheader(struct Curl_easy *data, char *header); struct rtsp_conn { struct dynbuf buf; int rtp_channel; + size_t rtp_len; + rtp_parse_st state; + BIT(in_header); }; /**************************************************************************** diff --git a/external/curl/lib/select.c b/external/curl/lib/select.c index cae9beb6c..d92e745a7 100644 --- a/external/curl/lib/select.c +++ b/external/curl/lib/select.c @@ -76,7 +76,7 @@ int Curl_wait_ms(timediff_t timeout_ms) } #if defined(MSDOS) delay(timeout_ms); -#elif defined(WIN32) +#elif defined(_WIN32) /* prevent overflow, timeout_ms is typecast to ULONG/DWORD. */ #if TIMEDIFF_T_MAX >= ULONG_MAX if(timeout_ms >= ULONG_MAX) diff --git a/external/curl/lib/sendf.c b/external/curl/lib/sendf.c index 0482c5da4..a2fac0c4e 100644 --- a/external/curl/lib/sendf.c +++ b/external/curl/lib/sendf.c @@ -50,6 +50,7 @@ #include "strdup.h" #include "http2.h" #include "headers.h" +#include "progress.h" #include "ws.h" /* The last 3 #include files should be in this order */ @@ -57,6 +58,9 @@ #include "curl_memory.h" #include "memdebug.h" + +static CURLcode do_init_stack(struct Curl_easy *data); + #if defined(CURL_DO_LINEEND_CONV) && !defined(CURL_DISABLE_FTP) /* * convert_lineends() changes CRLF (\r\n) end-of-line markers to a single LF @@ -385,17 +389,17 @@ static CURLcode chop_write(struct Curl_easy *data, the future to leave the original data alone. */ CURLcode Curl_client_write(struct Curl_easy *data, - int type, - char *ptr, - size_t len) + int type, char *buf, size_t blen) { + CURLcode result; + #if !defined(CURL_DISABLE_FTP) && defined(CURL_DO_LINEEND_CONV) /* FTP data may need conversion. */ if((type & CLIENTWRITE_BODY) && (data->conn->handler->protocol & PROTO_FAMILY_FTP) && data->conn->proto.ftpc.transfertype == 'A') { /* convert end-of-line markers */ - len = convert_lineends(data, ptr, len); + blen = convert_lineends(data, buf, blen); } #endif /* it is one of those, at least */ @@ -405,14 +409,14 @@ CURLcode Curl_client_write(struct Curl_easy *data, /* INFO is only INFO */ DEBUGASSERT(!(type & CLIENTWRITE_INFO) || (type == CLIENTWRITE_INFO)); - if(type == CLIENTWRITE_BODY) { - if(data->req.ignorebody) - return CURLE_OK; - - if(data->req.writer_stack && !data->set.http_ce_skip) - return Curl_unencode_write(data, data->req.writer_stack, ptr, len); + if(!data->req.writer_stack) { + result = do_init_stack(data); + if(result) + return result; + DEBUGASSERT(data->req.writer_stack); } - return chop_write(data, type, FALSE, ptr, len); + + return Curl_cwriter_write(data, data->req.writer_stack, type, buf, blen); } CURLcode Curl_client_unpause(struct Curl_easy *data) @@ -449,12 +453,12 @@ CURLcode Curl_client_unpause(struct Curl_easy *data) void Curl_client_cleanup(struct Curl_easy *data) { - struct contenc_writer *writer = data->req.writer_stack; + struct Curl_cwriter *writer = data->req.writer_stack; size_t i; while(writer) { - data->req.writer_stack = writer->downstream; - writer->handler->close_writer(data, writer); + data->req.writer_stack = writer->next; + writer->cwt->do_close(data, writer); free(writer); writer = data->req.writer_stack; } @@ -463,61 +467,222 @@ void Curl_client_cleanup(struct Curl_easy *data) Curl_dyn_free(&data->state.tempwrite[i].b); } data->state.tempcount = 0; + data->req.bytecount = 0; + data->req.headerline = 0; +} +/* Write data using an unencoding writer stack. "nbytes" is not + allowed to be 0. */ +CURLcode Curl_cwriter_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes) +{ + if(!nbytes) + return CURLE_OK; + if(!writer) + return CURLE_WRITE_ERROR; + return writer->cwt->do_write(data, writer, type, buf, nbytes); } -/* Real client writer: no downstream. */ -static CURLcode client_cew_init(struct Curl_easy *data, - struct contenc_writer *writer) +CURLcode Curl_cwriter_def_init(struct Curl_easy *data, + struct Curl_cwriter *writer) { - (void) data; + (void)data; (void)writer; return CURLE_OK; } -static CURLcode client_cew_write(struct Curl_easy *data, - struct contenc_writer *writer, - const char *buf, size_t nbytes) +CURLcode Curl_cwriter_def_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes) { - (void)writer; - if(!nbytes || data->req.ignorebody) - return CURLE_OK; - return chop_write(data, CLIENTWRITE_BODY, FALSE, (char *)buf, nbytes); + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); } -static void client_cew_close(struct Curl_easy *data, - struct contenc_writer *writer) +void Curl_cwriter_def_close(struct Curl_easy *data, + struct Curl_cwriter *writer) { (void) data; (void) writer; } -static const struct content_encoding client_cew = { +/* Real client writer to installed callbacks. */ +static CURLcode cw_client_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes) +{ + (void)writer; + if(!nbytes) + return CURLE_OK; + return chop_write(data, type, FALSE, (char *)buf, nbytes); +} + +static const struct Curl_cwtype cw_client = { + "client", NULL, + Curl_cwriter_def_init, + cw_client_write, + Curl_cwriter_def_close, + sizeof(struct Curl_cwriter) +}; + +static size_t get_max_body_write_len(struct Curl_easy *data, curl_off_t limit) +{ + if(limit != -1) { + /* How much more are we allowed to write? */ + curl_off_t remain_diff; + remain_diff = limit - data->req.bytecount; + if(remain_diff < 0) { + /* already written too much! */ + return 0; + } +#if SIZEOF_CURL_OFF_T > SIZEOF_SIZE_T + else if(remain_diff > SSIZE_T_MAX) { + return SIZE_T_MAX; + } +#endif + else { + return (size_t)remain_diff; + } + } + return SIZE_T_MAX; +} + +/* Download client writer in phase CURL_CW_PROTOCOL that + * sees the "real" download body data. */ +static CURLcode cw_download_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes) +{ + CURLcode result; + size_t nwrite, excess_len = 0; + const char *excess_data = NULL; + + if(!(type & CLIENTWRITE_BODY)) { + if((type & CLIENTWRITE_CONNECT) && data->set.suppress_connect_headers) + return CURLE_OK; + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); + } + + nwrite = nbytes; + if(-1 != data->req.maxdownload) { + size_t wmax = get_max_body_write_len(data, data->req.maxdownload); + if(nwrite > wmax) { + excess_len = nbytes - wmax; + nwrite = wmax; + excess_data = buf + nwrite; + } + + if(nwrite == wmax) { + data->req.download_done = TRUE; + } + } + + if(data->set.max_filesize) { + size_t wmax = get_max_body_write_len(data, data->set.max_filesize); + if(nwrite > wmax) { + nwrite = wmax; + } + } + + data->req.bytecount += nwrite; + ++data->req.bodywrites; + if(!data->req.ignorebody && nwrite) { + result = Curl_cwriter_write(data, writer->next, type, buf, nwrite); + if(result) + return result; + } + result = Curl_pgrsSetDownloadCounter(data, data->req.bytecount); + if(result) + return result; + + if(excess_len) { + if(data->conn->handler->readwrite) { + /* RTSP hack moved from transfer loop to here */ + bool readmore = FALSE; /* indicates data is incomplete, need more */ + size_t consumed = 0; + result = data->conn->handler->readwrite(data, data->conn, + excess_data, excess_len, + &consumed, &readmore); + if(result) + return result; + DEBUGASSERT(consumed <= excess_len); + excess_len -= consumed; + if(readmore) { + data->req.download_done = FALSE; + data->req.keepon |= KEEP_RECV; /* we're not done reading */ + } + } + if(excess_len && !data->req.ignorebody) { + infof(data, + "Excess found writing body:" + " excess = %zu" + ", size = %" CURL_FORMAT_CURL_OFF_T + ", maxdownload = %" CURL_FORMAT_CURL_OFF_T + ", bytecount = %" CURL_FORMAT_CURL_OFF_T, + excess_len, data->req.size, data->req.maxdownload, + data->req.bytecount); + connclose(data->conn, "excess found in a read"); + } + } + else if(nwrite < nbytes) { + failf(data, "Exceeded the maximum allowed file size " + "(%" CURL_FORMAT_CURL_OFF_T ") with %" + CURL_FORMAT_CURL_OFF_T " bytes", + data->set.max_filesize, data->req.bytecount); + return CURLE_FILESIZE_EXCEEDED; + } + + return CURLE_OK; +} + +static const struct Curl_cwtype cw_download = { + "download", NULL, - client_cew_init, - client_cew_write, - client_cew_close, - sizeof(struct contenc_writer) + Curl_cwriter_def_init, + cw_download_write, + Curl_cwriter_def_close, + sizeof(struct Curl_cwriter) +}; + +/* RAW client writer in phase CURL_CW_RAW that + * enabled tracing of raw data. */ +static CURLcode cw_raw_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes) +{ + if(type & CLIENTWRITE_BODY && data->set.verbose && !data->req.ignorebody) { + Curl_debug(data, CURLINFO_DATA_IN, (char *)buf, nbytes); + } + return Curl_cwriter_write(data, writer->next, type, buf, nbytes); +} + +static const struct Curl_cwtype cw_raw = { + "raw", + NULL, + Curl_cwriter_def_init, + cw_raw_write, + Curl_cwriter_def_close, + sizeof(struct Curl_cwriter) }; /* Create an unencoding writer stage using the given handler. */ -CURLcode Curl_client_create_writer(struct contenc_writer **pwriter, +CURLcode Curl_cwriter_create(struct Curl_cwriter **pwriter, struct Curl_easy *data, - const struct content_encoding *ce_handler, - int order) + const struct Curl_cwtype *cwt, + Curl_cwriter_phase phase) { - struct contenc_writer *writer; + struct Curl_cwriter *writer; CURLcode result = CURLE_OUT_OF_MEMORY; - DEBUGASSERT(ce_handler->writersize >= sizeof(struct contenc_writer)); - writer = (struct contenc_writer *) calloc(1, ce_handler->writersize); + DEBUGASSERT(cwt->cwriter_size >= sizeof(struct Curl_cwriter)); + writer = (struct Curl_cwriter *) calloc(1, cwt->cwriter_size); if(!writer) goto out; - writer->handler = ce_handler; - writer->order = order; - result = ce_handler->init_writer(data, writer); + writer->cwt = cwt; + writer->phase = phase; + result = cwt->do_init(data, writer); out: *pwriter = result? NULL : writer; @@ -526,55 +691,74 @@ CURLcode Curl_client_create_writer(struct contenc_writer **pwriter, return result; } -void Curl_client_free_writer(struct Curl_easy *data, - struct contenc_writer *writer) +void Curl_cwriter_free(struct Curl_easy *data, + struct Curl_cwriter *writer) { if(writer) { - writer->handler->close_writer(data, writer); + writer->cwt->do_close(data, writer); free(writer); } } -/* allow no more than 5 "chained" compression steps */ -#define MAX_ENCODE_STACK 5 +size_t Curl_cwriter_count(struct Curl_easy *data, Curl_cwriter_phase phase) +{ + struct Curl_cwriter *w; + size_t n = 0; + for(w = data->req.writer_stack; w; w = w->next) { + if(w->phase == phase) + ++n; + } + return n; +} -static CURLcode init_writer_stack(struct Curl_easy *data) +static CURLcode do_init_stack(struct Curl_easy *data) { + struct Curl_cwriter *writer; + CURLcode result; + DEBUGASSERT(!data->req.writer_stack); - return Curl_client_create_writer(&data->req.writer_stack, - data, &client_cew, 0); + result = Curl_cwriter_create(&data->req.writer_stack, + data, &cw_client, CURL_CW_CLIENT); + if(result) + return result; + + result = Curl_cwriter_create(&writer, data, &cw_download, CURL_CW_PROTOCOL); + if(result) + return result; + result = Curl_cwriter_add(data, writer); + if(result) { + Curl_cwriter_free(data, writer); + } + + result = Curl_cwriter_create(&writer, data, &cw_raw, CURL_CW_RAW); + if(result) + return result; + result = Curl_cwriter_add(data, writer); + if(result) { + Curl_cwriter_free(data, writer); + } + return result; } -CURLcode Curl_client_add_writer(struct Curl_easy *data, - struct contenc_writer *writer) +CURLcode Curl_cwriter_add(struct Curl_easy *data, + struct Curl_cwriter *writer) { CURLcode result; + struct Curl_cwriter **anchor = &data->req.writer_stack; - if(!data->req.writer_stack) { - result = init_writer_stack(data); + if(!*anchor) { + result = do_init_stack(data); if(result) return result; } - if(data->req.writer_stack_depth++ >= MAX_ENCODE_STACK) { - failf(data, "Reject response due to more than %u content encodings", - MAX_ENCODE_STACK); - return CURLE_BAD_CONTENT_ENCODING; - } - - /* Stack the unencoding stage. */ - if(writer->order >= data->req.writer_stack->order) { - writer->downstream = data->req.writer_stack; - data->req.writer_stack = writer; - } - else { - struct contenc_writer *w = data->req.writer_stack; - while(w->downstream && writer->order < w->downstream->order) - w = w->downstream; - writer->downstream = w->downstream; - w->downstream = writer; - } + /* Insert the writer as first in its phase. + * Skip existing writers of lower phases. */ + while(*anchor && (*anchor)->phase < writer->phase) + anchor = &((*anchor)->next); + writer->next = *anchor; + *anchor = writer; return CURLE_OK; } diff --git a/external/curl/lib/sendf.h b/external/curl/lib/sendf.h index 9ee00bb0d..a70189f2f 100644 --- a/external/curl/lib/sendf.h +++ b/external/curl/lib/sendf.h @@ -50,43 +50,122 @@ #define CLIENTWRITE_1XX (1<<5) /* a 1xx response related HEADER */ #define CLIENTWRITE_TRAILER (1<<6) /* a trailer HEADER */ +/** + * Write `len` bytes at `prt` to the client. `type` indicates what + * kind of data is being written. + */ CURLcode Curl_client_write(struct Curl_easy *data, int type, char *ptr, size_t len) WARN_UNUSED_RESULT; +/** + * For a paused transfer, there might be buffered data held back. + * Attempt to flush this data to the client. This *may* trigger + * another pause of the transfer. + */ CURLcode Curl_client_unpause(struct Curl_easy *data); + +/** + * Free all resources related to client writing. + */ void Curl_client_cleanup(struct Curl_easy *data); -struct contenc_writer { - const struct content_encoding *handler; /* Encoding handler. */ - struct contenc_writer *downstream; /* Downstream writer. */ - unsigned int order; /* Ordering within writer stack. */ +/** + * Client Writers - a chain passing transfer BODY data to the client. + * Main application: HTTP and related protocols + * Other uses: monitoring of download progress + * + * Writers in the chain are order by their `phase`. First come all + * writers in CURL_CW_RAW, followed by any in CURL_CW_TRANSFER_DECODE, + * followed by any in CURL_CW_PROTOCOL, etc. + * + * When adding a writer, it is inserted as first in its phase. This means + * the order of adding writers of the same phase matters, but writers for + * different phases may be added in any order. + * + * Writers which do modify the BODY data written are expected to be of + * phases TRANSFER_DECODE or CONTENT_DECODE. The other phases are intended + * for monitoring writers. Which do *not* modify the data but gather + * statistics or update progress reporting. + */ + +/* Phase a writer operates at. */ +typedef enum { + CURL_CW_RAW, /* raw data written, before any decoding */ + CURL_CW_TRANSFER_DECODE, /* remove transfer-encodings */ + CURL_CW_PROTOCOL, /* after transfer, but before content decoding */ + CURL_CW_CONTENT_DECODE, /* remove content-encodings */ + CURL_CW_CLIENT /* data written to client */ +} Curl_cwriter_phase; + +/* Client Writer Type, provides the implementation */ +struct Curl_cwtype { + const char *name; /* writer name. */ + const char *alias; /* writer name alias, maybe NULL. */ + CURLcode (*do_init)(struct Curl_easy *data, + struct Curl_cwriter *writer); + CURLcode (*do_write)(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes); + void (*do_close)(struct Curl_easy *data, + struct Curl_cwriter *writer); + size_t cwriter_size; /* sizeof() allocated struct Curl_cwriter */ }; -/* Content encoding writer. */ -struct content_encoding { - const char *name; /* Encoding name. */ - const char *alias; /* Encoding name alias. */ - CURLcode (*init_writer)(struct Curl_easy *data, - struct contenc_writer *writer); - CURLcode (*unencode_write)(struct Curl_easy *data, - struct contenc_writer *writer, - const char *buf, size_t nbytes); - void (*close_writer)(struct Curl_easy *data, - struct contenc_writer *writer); - size_t writersize; +/* Client writer instance */ +struct Curl_cwriter { + const struct Curl_cwtype *cwt; /* type implementation */ + struct Curl_cwriter *next; /* Downstream writer. */ + Curl_cwriter_phase phase; /* phase at which it operates */ }; +/** + * Create a new cwriter instance with given type and phase. Is not + * inserted into the writer chain by this call. + * Invokes `writer->do_init()`. + */ +CURLcode Curl_cwriter_create(struct Curl_cwriter **pwriter, + struct Curl_easy *data, + const struct Curl_cwtype *ce_handler, + Curl_cwriter_phase phase); -CURLcode Curl_client_create_writer(struct contenc_writer **pwriter, - struct Curl_easy *data, - const struct content_encoding *ce_handler, - int order); +/** + * Free a cwriter instance. + * Invokes `writer->do_close()`. + */ +void Curl_cwriter_free(struct Curl_easy *data, + struct Curl_cwriter *writer); -void Curl_client_free_writer(struct Curl_easy *data, - struct contenc_writer *writer); +/** + * Count the number of writers installed of the given phase. + */ +size_t Curl_cwriter_count(struct Curl_easy *data, Curl_cwriter_phase phase); -CURLcode Curl_client_add_writer(struct Curl_easy *data, - struct contenc_writer *writer); +/** + * Adds a writer to the transfer's writer chain. + * The writers `phase` determines where in the chain it is inserted. + */ +CURLcode Curl_cwriter_add(struct Curl_easy *data, + struct Curl_cwriter *writer); + +/** + * Convenience method for calling `writer->do_write()` that + * checks for NULL writer. + */ +CURLcode Curl_cwriter_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes); + +/** + * Default implementations for do_init, do_write, do_close that + * do nothing and pass the data through. + */ +CURLcode Curl_cwriter_def_init(struct Curl_easy *data, + struct Curl_cwriter *writer); +CURLcode Curl_cwriter_def_write(struct Curl_easy *data, + struct Curl_cwriter *writer, int type, + const char *buf, size_t nbytes); +void Curl_cwriter_def_close(struct Curl_easy *data, + struct Curl_cwriter *writer); /* internal read-function, does plain socket, SSL and krb4 */ diff --git a/external/curl/lib/setopt.c b/external/curl/lib/setopt.c index 0d399adfe..a08140cce 100644 --- a/external/curl/lib/setopt.c +++ b/external/curl/lib/setopt.c @@ -50,6 +50,7 @@ #include "multiif.h" #include "altsvc.h" #include "hsts.h" +#include "tftp.h" /* The last 3 #include files should be in this order */ #include "curl_printf.h" @@ -171,7 +172,7 @@ static CURLcode protocol2num(const char *str, curl_prot_t *val) str = strchr(str, ','); tlen = str? (size_t) (str - token): strlen(token); if(tlen) { - const struct Curl_handler *h = Curl_builtin_scheme(token, tlen); + const struct Curl_handler *h = Curl_getn_scheme_handler(token, tlen); if(!h) return CURLE_UNSUPPORTED_PROTOCOL; @@ -261,43 +262,43 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Set the absolute number of maximum simultaneous alive connection that * libcurl is allowed to have. */ - arg = va_arg(param, long); - if(arg < 0) + uarg = va_arg(param, unsigned long); + if(uarg > UINT_MAX) return CURLE_BAD_FUNCTION_ARGUMENT; - data->set.maxconnects = arg; + data->set.maxconnects = (unsigned int)uarg; break; case CURLOPT_FORBID_REUSE: /* * When this transfer is done, it must not be left to be reused by a * subsequent transfer but shall be closed immediately. */ - data->set.reuse_forbid = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.reuse_forbid = (0 != va_arg(param, long)); break; case CURLOPT_FRESH_CONNECT: /* * This transfer shall not use a previously cached connection but * should be made with a fresh new connect! */ - data->set.reuse_fresh = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.reuse_fresh = (0 != va_arg(param, long)); break; case CURLOPT_VERBOSE: /* * Verbose means infof() calls that give a lot of information about * the connection and transfer procedures as well as internal choices. */ - data->set.verbose = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.verbose = (0 != va_arg(param, long)); break; case CURLOPT_HEADER: /* * Set to include the header in the general data output stream. */ - data->set.include_header = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.include_header = (0 != va_arg(param, long)); break; case CURLOPT_NOPROGRESS: /* * Shut off the internal supported progress meter */ - data->set.hide_progress = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.hide_progress = (0 != va_arg(param, long)); if(data->set.hide_progress) data->progress.flags |= PGRS_HIDE; else @@ -307,7 +308,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* * Do not include the body part in the output data stream. */ - data->set.opt_no_body = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.opt_no_body = (0 != va_arg(param, long)); #ifndef CURL_DISABLE_HTTP if(data->set.opt_no_body) /* in HTTP lingo, no body means using the HEAD request... */ @@ -321,11 +322,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Don't output the >=400 error code HTML-page, but instead only * return error. */ - data->set.http_fail_on_error = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.http_fail_on_error = (0 != va_arg(param, long)); break; case CURLOPT_KEEP_SENDING_ON_ERROR: - data->set.http_keep_sending_on_error = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.http_keep_sending_on_error = (0 != va_arg(param, long)); break; case CURLOPT_UPLOAD: case CURLOPT_PUT: @@ -353,7 +353,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Try to get the file time of the remote document. The time will * later (possibly) become available using curl_easy_getinfo(). */ - data->set.get_filetime = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.get_filetime = (0 != va_arg(param, long)); break; case CURLOPT_SERVER_RESPONSE_TIMEOUT: /* @@ -379,7 +379,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * TFTP option that specifies the block size to use for data transmission. */ arg = va_arg(param, long); - if(arg < 0) + if(arg > TFTP_BLKSIZE_MAX || arg < TFTP_BLKSIZE_MIN) return CURLE_BAD_FUNCTION_ARGUMENT; data->set.tftp_blksize = arg; break; @@ -409,7 +409,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * * Transfer using ASCII (instead of BINARY). */ - data->set.prefer_ascii = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.prefer_ascii = (0 != va_arg(param, long)); break; case CURLOPT_TIMECONDITION: /* @@ -577,7 +577,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* * Switch on automatic referer that gets set if curl follows locations. */ - data->set.http_auto_referer = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.http_auto_referer = (0 != va_arg(param, long)); break; case CURLOPT_ACCEPT_ENCODING: @@ -592,28 +592,23 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) */ argptr = va_arg(param, char *); if(argptr && !*argptr) { - argptr = Curl_all_content_encodings(); - if(!argptr) - result = CURLE_OUT_OF_MEMORY; - else { - result = Curl_setstropt(&data->set.str[STRING_ENCODING], argptr); - free(argptr); - } + char all[256]; + Curl_all_content_encodings(all, sizeof(all)); + result = Curl_setstropt(&data->set.str[STRING_ENCODING], all); } else result = Curl_setstropt(&data->set.str[STRING_ENCODING], argptr); break; case CURLOPT_TRANSFER_ENCODING: - data->set.http_transfer_encoding = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.http_transfer_encoding = (0 != va_arg(param, long)); break; case CURLOPT_FOLLOWLOCATION: /* * Follow Location: header hints on an HTTP-server. */ - data->set.http_follow_location = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.http_follow_location = (0 != va_arg(param, long)); break; case CURLOPT_UNRESTRICTED_AUTH: @@ -621,8 +616,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Send authentication (user+password) when following locations, even when * hostname changed. */ - data->set.allow_auth_to_other_hosts = - (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.allow_auth_to_other_hosts = (0 != va_arg(param, long)); break; case CURLOPT_MAXREDIRS: @@ -736,7 +730,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Set header option. */ arg = va_arg(param, long); - data->set.sep_headers = (bool)((arg & CURLHEADER_SEPARATE)? TRUE: FALSE); + data->set.sep_headers = !!(arg & CURLHEADER_SEPARATE); break; #if !defined(CURL_DISABLE_COOKIES) @@ -760,18 +754,18 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) return CURLE_BAD_FUNCTION_ARGUMENT; /* append the cookie file name to the list of file names, and deal with them later */ - cl = curl_slist_append(data->set.cookielist, argptr); + cl = curl_slist_append(data->state.cookielist, argptr); if(!cl) { - curl_slist_free_all(data->set.cookielist); - data->set.cookielist = NULL; + curl_slist_free_all(data->state.cookielist); + data->state.cookielist = NULL; return CURLE_OUT_OF_MEMORY; } - data->set.cookielist = cl; /* store the list for later use */ + data->state.cookielist = cl; /* store the list for later use */ } else { /* clear the list of cookie files */ - curl_slist_free_all(data->set.cookielist); - data->set.cookielist = NULL; + curl_slist_free_all(data->state.cookielist); + data->state.cookielist = NULL; if(!data->share || !data->share->cookies) { /* throw away all existing cookies if this isn't a shared cookie @@ -811,17 +805,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * prevent the forthcoming read-cookies-from-file actions to accept * cookies that are marked as being session cookies, as they belong to a * previous session. - * - * In the original Netscape cookie spec, "session cookies" are cookies - * with no expire date set. RFC2109 describes the same action if no - * 'Max-Age' is set and RFC2965 includes the RFC2109 description and adds - * a 'Discard' action that can enforce the discard even for cookies that - * have a Max-Age. - * - * We run mostly with the original cookie spec, as hardly anyone implements - * anything else. */ - data->set.cookiesession = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.cookiesession = (0 != va_arg(param, long)); break; case CURLOPT_COOKIELIST: @@ -956,7 +941,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) if(arg) return CURLE_BAD_FUNCTION_ARGUMENT; #else - data->set.http09_allowed = arg ? TRUE : FALSE; + data->set.http09_allowed = !!arg; #endif break; @@ -997,8 +982,9 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; case CURLOPT_MIME_OPTIONS: - data->set.mime_options = (unsigned int)va_arg(param, long); - break; + arg = va_arg(param, long); + data->set.mime_formescape = !!(arg & CURLMIMEOPT_FORMESCAPE); + break; # endif #endif @@ -1018,8 +1004,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* the DIGEST_IE bit is only used to set a special marker, for all the rest we need to handle it as normal DIGEST */ - data->state.authhost.iestyle = - (bool)((auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE); + data->state.authhost.iestyle = !!(auth & CURLAUTH_DIGEST_IE); if(auth & CURLAUTH_DIGEST_IE) { auth |= CURLAUTH_DIGEST; /* set standard digest bit */ @@ -1072,8 +1057,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* * Tunnel operations through the proxy instead of normal proxy use */ - data->set.tunnel_thru_httpproxy = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.tunnel_thru_httpproxy = (0 != va_arg(param, long)); break; case CURLOPT_PROXYPORT: @@ -1102,8 +1086,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* the DIGEST_IE bit is only used to set a special marker, for all the rest we need to handle it as normal DIGEST */ - data->state.authproxy.iestyle = - (bool)((auth & CURLAUTH_DIGEST_IE) ? TRUE : FALSE); + data->state.authproxy.iestyle = !!(auth & CURLAUTH_DIGEST_IE); if(auth & CURLAUTH_DIGEST_IE) { auth |= CURLAUTH_DIGEST; /* set standard digest bit */ @@ -1203,7 +1186,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* * Set flag for NEC SOCK5 support */ - data->set.socks5_gssapi_nec = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.socks5_gssapi_nec = (0 != va_arg(param, long)); break; #endif #ifndef CURL_DISABLE_PROXY @@ -1251,7 +1234,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * An option that changes the command to one that asks for a list only, no * file info details. Used for FTP, POP3 and SFTP. */ - data->set.list_only = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.list_only = (0 != va_arg(param, long)); break; #endif case CURLOPT_APPEND: @@ -1259,7 +1242,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * We want to upload and append to an existing file. Used for FTP and * SFTP. */ - data->set.remote_append = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.remote_append = (0 != va_arg(param, long)); break; #ifndef CURL_DISABLE_FTP @@ -1270,7 +1253,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) arg = va_arg(param, long); if((arg < CURLFTPMETHOD_DEFAULT) || (arg >= CURLFTPMETHOD_LAST)) return CURLE_BAD_FUNCTION_ARGUMENT; - data->set.ftp_filemethod = (unsigned char)(curl_ftpfile)arg; + data->set.ftp_filemethod = (unsigned char)arg; break; case CURLOPT_FTPPORT: /* @@ -1278,26 +1261,26 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) */ result = Curl_setstropt(&data->set.str[STRING_FTPPORT], va_arg(param, char *)); - data->set.ftp_use_port = (data->set.str[STRING_FTPPORT]) ? TRUE : FALSE; + data->set.ftp_use_port = !!(data->set.str[STRING_FTPPORT]); break; case CURLOPT_FTP_USE_EPRT: - data->set.ftp_use_eprt = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ftp_use_eprt = (0 != va_arg(param, long)); break; case CURLOPT_FTP_USE_EPSV: - data->set.ftp_use_epsv = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ftp_use_epsv = (0 != va_arg(param, long)); break; case CURLOPT_FTP_USE_PRET: - data->set.ftp_use_pret = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ftp_use_pret = (0 != va_arg(param, long)); break; case CURLOPT_FTP_SSL_CCC: arg = va_arg(param, long); if((arg < CURLFTPSSL_CCC_NONE) || (arg >= CURLFTPSSL_CCC_LAST)) return CURLE_BAD_FUNCTION_ARGUMENT; - data->set.ftp_ccc = (unsigned char)(curl_ftpccc)arg; + data->set.ftp_ccc = (unsigned char)arg; break; case CURLOPT_FTP_SKIP_PASV_IP: @@ -1305,7 +1288,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Enable or disable FTP_SKIP_PASV_IP, which will disable/enable the * bypass of the IP address in PASV responses. */ - data->set.ftp_skip_ip = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ftp_skip_ip = (0 != va_arg(param, long)); break; case CURLOPT_FTP_ACCOUNT: @@ -1333,7 +1316,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) */ result = Curl_setstropt(&data->set.str[STRING_KRB_LEVEL], va_arg(param, char *)); - data->set.krb = (data->set.str[STRING_KRB_LEVEL]) ? TRUE : FALSE; + data->set.krb = !!(data->set.str[STRING_KRB_LEVEL]); break; #endif #if !defined(CURL_DISABLE_FTP) || defined(USE_SSH) @@ -1867,14 +1850,14 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* * Kludgy option to enable CRLF conversions. Subject for removal. */ - data->set.crlf = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.crlf = (0 != va_arg(param, long)); break; #ifndef CURL_DISABLE_PROXY case CURLOPT_HAPROXYPROTOCOL: /* * Set to send the HAProxy Proxy Protocol header */ - data->set.haproxyprotocol = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.haproxyprotocol = (0 != va_arg(param, long)); break; case CURLOPT_HAPROXY_CLIENT_IP: /* @@ -1926,22 +1909,17 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* * Enable peer SSL verifying. */ - data->set.ssl.primary.verifypeer = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.ssl.primary.verifypeer = (0 != va_arg(param, long)); /* Update the current connection ssl_config. */ - if(data->conn) { - data->conn->ssl_config.verifypeer = - data->set.ssl.primary.verifypeer; - } + Curl_ssl_conn_config_update(data, FALSE); break; #ifndef CURL_DISABLE_DOH case CURLOPT_DOH_SSL_VERIFYPEER: /* * Enable peer SSL verifying for DoH. */ - data->set.doh_verifypeer = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.doh_verifypeer = (0 != va_arg(param, long)); break; #endif #ifndef CURL_DISABLE_PROXY @@ -1953,10 +1931,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) (0 != va_arg(param, long))?TRUE:FALSE; /* Update the current connection proxy_ssl_config. */ - if(data->conn) { - data->conn->proxy_ssl_config.verifypeer = - data->set.proxy_ssl.primary.verifypeer; - } + Curl_ssl_conn_config_update(data, TRUE); break; #endif case CURLOPT_SSL_VERIFYHOST: @@ -1968,13 +1943,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* Obviously people are not reading documentation and too many thought 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); + data->set.ssl.primary.verifyhost = !!(arg & 3); /* Update the current connection ssl_config. */ - if(data->conn) { - data->conn->ssl_config.verifyhost = - data->set.ssl.primary.verifyhost; - } + Curl_ssl_conn_config_update(data, FALSE); break; #ifndef CURL_DISABLE_DOH case CURLOPT_DOH_SSL_VERIFYHOST: @@ -1984,7 +1956,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) arg = va_arg(param, long); /* Treat both 1 and 2 as TRUE */ - data->set.doh_verifyhost = (bool)((arg & 3) ? TRUE : FALSE); + data->set.doh_verifyhost = !!(arg & 3); break; #endif #ifndef CURL_DISABLE_PROXY @@ -1996,12 +1968,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* 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) { - data->conn->proxy_ssl_config.verifyhost = - data->set.proxy_ssl.primary.verifyhost; - } + Curl_ssl_conn_config_update(data, TRUE); break; #endif case CURLOPT_SSL_VERIFYSTATUS: @@ -2013,14 +1981,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; } - data->set.ssl.primary.verifystatus = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.ssl.primary.verifystatus = (0 != va_arg(param, long)); /* Update the current connection ssl_config. */ - if(data->conn) { - data->conn->ssl_config.verifystatus = - data->set.ssl.primary.verifystatus; - } + Curl_ssl_conn_config_update(data, FALSE); break; #ifndef CURL_DISABLE_DOH case CURLOPT_DOH_SSL_VERIFYSTATUS: @@ -2032,8 +1996,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; } - data->set.doh_verifystatus = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.doh_verifystatus = (0 != va_arg(param, long)); break; #endif case CURLOPT_SSL_CTX_FUNCTION: @@ -2067,12 +2030,12 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; } - data->set.ssl.falsestart = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ssl.falsestart = (0 != va_arg(param, long)); break; case CURLOPT_CERTINFO: #ifdef USE_SSL if(Curl_ssl_supports(data, SSLSUPP_CERTINFO)) - data->set.ssl.certinfo = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ssl.certinfo = (0 != va_arg(param, long)); else #endif result = CURLE_NOT_BUILT_IN; @@ -2118,14 +2081,14 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Specify entire PEM of the CA certificate */ #ifdef USE_SSL - if(Curl_ssl_supports(data, SSLSUPP_CAINFO_BLOB)) + if(Curl_ssl_supports(data, SSLSUPP_CAINFO_BLOB)) { result = Curl_setblobopt(&data->set.blobs[BLOB_CAINFO], va_arg(param, struct curl_blob *)); + break; + } else #endif return CURLE_NOT_BUILT_IN; - - break; #ifndef CURL_DISABLE_PROXY case CURLOPT_PROXY_CAINFO: /* @@ -2141,13 +2104,14 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Specify entire PEM of the CA certificate */ #ifdef USE_SSL - if(Curl_ssl_supports(data, SSLSUPP_CAINFO_BLOB)) + if(Curl_ssl_supports(data, SSLSUPP_CAINFO_BLOB)) { result = Curl_setblobopt(&data->set.blobs[BLOB_CAINFO_PROXY], va_arg(param, struct curl_blob *)); + break; + } else #endif return CURLE_NOT_BUILT_IN; - break; #endif case CURLOPT_CAPATH: /* @@ -2278,7 +2242,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * The application asks not to set any signal() or alarm() handlers, * even when using a timeout. */ - data->set.no_signal = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.no_signal = (0 != va_arg(param, long)); break; case CURLOPT_SHARE: @@ -2453,11 +2417,11 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * Enable or disable TCP_NODELAY, which will disable/enable the Nagle * algorithm */ - data->set.tcp_nodelay = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.tcp_nodelay = (0 != va_arg(param, long)); break; case CURLOPT_IGNORE_CONTENT_LENGTH: - data->set.ignorecl = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ignorecl = (0 != va_arg(param, long)); break; case CURLOPT_CONNECT_ONLY: @@ -2532,8 +2496,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; case CURLOPT_SSL_SESSIONID_CACHE: - data->set.ssl.primary.sessionid = (0 != va_arg(param, long)) ? - TRUE : FALSE; + data->set.ssl.primary.sessionid = (0 != va_arg(param, long)); #ifndef CURL_DISABLE_PROXY data->set.proxy_ssl.primary.sessionid = data->set.ssl.primary.sessionid; #endif @@ -2622,7 +2585,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) * disable libcurl transfer encoding is used */ #ifndef USE_HYPER - data->set.http_te_skip = (0 == va_arg(param, long)) ? TRUE : FALSE; + data->set.http_te_skip = (0 == va_arg(param, long)); break; #else return CURLE_NOT_BUILT_IN; /* hyper doesn't support */ @@ -2632,7 +2595,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* * raw data passed to the application when content encoding is used */ - data->set.http_ce_skip = (0 == va_arg(param, long)) ? TRUE : FALSE; + data->set.http_ce_skip = (0 == va_arg(param, long)); break; #if !defined(CURL_DISABLE_FTP) || defined(USE_SSH) @@ -2733,7 +2696,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; case CURLOPT_MAIL_RCPT_ALLOWFAILS: /* allow RCPT TO command to fail for some recipients */ - data->set.mail_rcpt_allowfails = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.mail_rcpt_allowfails = (0 != va_arg(param, long)); break; #endif @@ -2745,7 +2708,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) case CURLOPT_SASL_IR: /* Enable/disable SASL initial response */ - data->set.sasl_ir = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.sasl_ir = (0 != va_arg(param, long)); break; #ifndef CURL_DISABLE_RTSP case CURLOPT_RTSP_REQUEST: @@ -2859,7 +2822,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) #endif #ifndef CURL_DISABLE_FTP case CURLOPT_WILDCARDMATCH: - data->set.wildcard_enabled = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.wildcard_enabled = (0 != va_arg(param, long)); break; case CURLOPT_CHUNK_BGN_FUNCTION: data->set.chunk_bgn = va_arg(param, curl_chunk_bgn_callback); @@ -2942,7 +2905,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; #endif case CURLOPT_TCP_KEEPALIVE: - data->set.tcp_keepalive = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.tcp_keepalive = (0 != va_arg(param, long)); break; case CURLOPT_TCP_KEEPIDLE: arg = va_arg(param, long); @@ -2971,7 +2934,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) case CURLOPT_SSL_ENABLE_NPN: break; case CURLOPT_SSL_ENABLE_ALPN: - data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.ssl_enable_alpn = (0 != va_arg(param, long)); break; #ifdef USE_UNIX_SOCKETS case CURLOPT_UNIX_SOCKET_PATH: @@ -2987,10 +2950,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) #endif case CURLOPT_PATH_AS_IS: - data->set.path_as_is = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.path_as_is = (0 != va_arg(param, long)); break; case CURLOPT_PIPEWAIT: - data->set.pipewait = (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.pipewait = (0 != va_arg(param, long)); break; case CURLOPT_STREAM_WEIGHT: #if defined(USE_HTTP2) || defined(USE_HTTP3) @@ -3025,12 +2988,11 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) break; #ifndef CURL_DISABLE_SHUFFLE_DNS case CURLOPT_DNS_SHUFFLE_ADDRESSES: - data->set.dns_shuffle_addresses = (0 != va_arg(param, long)) ? TRUE:FALSE; + data->set.dns_shuffle_addresses = (0 != va_arg(param, long)); break; #endif case CURLOPT_DISALLOW_USERNAME_IN_URL: - data->set.disallow_username_in_url = - (0 != va_arg(param, long)) ? TRUE : FALSE; + data->set.disallow_username_in_url = (0 != va_arg(param, long)); break; #ifndef CURL_DISABLE_DOH case CURLOPT_DOH_URL: @@ -3095,18 +3057,18 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param) /* this needs to build a list of file names to read from, so that it can read them later, as we might get a shared HSTS handle to load them into */ - h = curl_slist_append(data->set.hstslist, argptr); + h = curl_slist_append(data->state.hstslist, argptr); if(!h) { - curl_slist_free_all(data->set.hstslist); - data->set.hstslist = NULL; + curl_slist_free_all(data->state.hstslist); + data->state.hstslist = NULL; return CURLE_OUT_OF_MEMORY; } - data->set.hstslist = h; /* store the list for later use */ + data->state.hstslist = h; /* store the list for later use */ } else { /* clear the list of HSTS files */ - curl_slist_free_all(data->set.hstslist); - data->set.hstslist = NULL; + curl_slist_free_all(data->state.hstslist); + data->state.hstslist = NULL; if(!data->share || !data->share->hsts) /* throw away the HSTS cache unless shared */ Curl_hsts_cleanup(&data->hsts); diff --git a/external/curl/lib/setup-win32.h b/external/curl/lib/setup-win32.h index 13948389a..4e034d4bb 100644 --- a/external/curl/lib/setup-win32.h +++ b/external/curl/lib/setup-win32.h @@ -53,14 +53,14 @@ # ifndef NOGDI # define NOGDI # endif -# include -# include # ifdef HAVE_WINSOCK2_H # include # ifdef HAVE_WS2TCPIP_H # include # endif # endif +# include +# include # include # ifdef UNICODE typedef wchar_t *(*curl_wcsdup_callback)(const wchar_t *str); @@ -96,18 +96,12 @@ #ifndef _WIN32_WINNT_WS03 #define _WIN32_WINNT_WS03 0x0502 /* Windows Server 2003 */ #endif -#ifndef _WIN32_WINNT_WIN6 -#define _WIN32_WINNT_WIN6 0x0600 /* Windows Vista */ -#endif #ifndef _WIN32_WINNT_VISTA #define _WIN32_WINNT_VISTA 0x0600 /* Windows Vista */ #endif #ifndef _WIN32_WINNT_WS08 #define _WIN32_WINNT_WS08 0x0600 /* Windows Server 2008 */ #endif -#ifndef _WIN32_WINNT_LONGHORN -#define _WIN32_WINNT_LONGHORN 0x0600 /* Windows Vista */ -#endif #ifndef _WIN32_WINNT_WIN7 #define _WIN32_WINNT_WIN7 0x0601 /* Windows 7 */ #endif @@ -117,9 +111,6 @@ #ifndef _WIN32_WINNT_WINBLUE #define _WIN32_WINNT_WINBLUE 0x0603 /* Windows 8.1 */ #endif -#ifndef _WIN32_WINNT_WINTHRESHOLD -#define _WIN32_WINNT_WINTHRESHOLD 0x0A00 /* Windows 10 */ -#endif #ifndef _WIN32_WINNT_WIN10 #define _WIN32_WINNT_WIN10 0x0A00 /* Windows 10 */ #endif diff --git a/external/curl/lib/share.h b/external/curl/lib/share.h index 7f55aac85..632d9198f 100644 --- a/external/curl/lib/share.h +++ b/external/curl/lib/share.h @@ -31,14 +31,6 @@ #include "urldata.h" #include "conncache.h" -/* SalfordC says "A structure member may not be volatile". Hence: - */ -#ifdef __SALFORDC__ -#define CURL_VOLATILE -#else -#define CURL_VOLATILE volatile -#endif - #define CURL_GOOD_SHARE 0x7e117a1e #define GOOD_SHARE_HANDLE(x) ((x) && (x)->magic == CURL_GOOD_SHARE) @@ -46,7 +38,7 @@ struct Curl_share { unsigned int magic; /* CURL_GOOD_SHARE */ unsigned int specifier; - CURL_VOLATILE unsigned int dirty; + volatile unsigned int dirty; curl_lock_function lockfunc; curl_unlock_function unlockfunc; diff --git a/external/curl/lib/smb.c b/external/curl/lib/smb.c index 32c5137a4..6c8a47c7f 100644 --- a/external/curl/lib/smb.c +++ b/external/curl/lib/smb.c @@ -27,7 +27,7 @@ #if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) -#ifdef WIN32 +#ifdef _WIN32 #define getpid GetCurrentProcessId #endif @@ -1047,14 +1047,7 @@ static CURLcode smb_request_state(struct Curl_easy *data, bool *done) break; } } - data->req.bytecount += len; data->req.offset += len; - result = Curl_pgrsSetDownloadCounter(data, data->req.bytecount); - if(result) { - req->result = result; - next_state = SMB_CLOSE; - break; - } next_state = (len < MAX_PAYLOAD_SIZE) ? SMB_CLOSE : SMB_DOWNLOAD; break; diff --git a/external/curl/lib/smtp.c b/external/curl/lib/smtp.c index 81a17e38d..65fbc5b6c 100644 --- a/external/curl/lib/smtp.c +++ b/external/curl/lib/smtp.c @@ -1320,7 +1320,7 @@ static CURLcode smtp_init(struct Curl_easy *data) CURLcode result = CURLE_OK; struct SMTP *smtp; - smtp = data->req.p.smtp = calloc(sizeof(struct SMTP), 1); + smtp = data->req.p.smtp = calloc(1, sizeof(struct SMTP)); if(!smtp) result = CURLE_OUT_OF_MEMORY; diff --git a/external/curl/lib/socketpair.c b/external/curl/lib/socketpair.c index 963e1406f..e3d40ff94 100644 --- a/external/curl/lib/socketpair.c +++ b/external/curl/lib/socketpair.c @@ -28,7 +28,7 @@ #include "rand.h" #if !defined(HAVE_SOCKETPAIR) && !defined(CURL_DISABLE_SOCKETPAIR) -#ifdef WIN32 +#ifdef _WIN32 /* * This is a socketpair() implementation for Windows. */ @@ -50,7 +50,7 @@ #ifndef INADDR_LOOPBACK #define INADDR_LOOPBACK 0x7f000001 #endif /* !INADDR_LOOPBACK */ -#endif /* !WIN32 */ +#endif /* !_WIN32 */ #include "nonblock.h" /* for curlx_nonblock */ #include "timeval.h" /* needed before select.h */ @@ -87,7 +87,7 @@ int Curl_socketpair(int domain, int type, int protocol, socks[0] = socks[1] = CURL_SOCKET_BAD; -#if defined(WIN32) || defined(__CYGWIN__) +#if defined(_WIN32) || defined(__CYGWIN__) /* don't set SO_REUSEADDR on Windows */ (void)reuse; #ifdef SO_EXCLUSIVEADDRUSE diff --git a/external/curl/lib/socketpair.h b/external/curl/lib/socketpair.h index 306ab5dc4..bd499abbe 100644 --- a/external/curl/lib/socketpair.h +++ b/external/curl/lib/socketpair.h @@ -25,6 +25,23 @@ ***************************************************************************/ #include "curl_setup.h" + +#ifdef HAVE_PIPE + +#define wakeup_write write +#define wakeup_read read +#define wakeup_close close +#define wakeup_create pipe + +#else /* HAVE_PIPE */ + +#define wakeup_write swrite +#define wakeup_read sread +#define wakeup_close sclose +#define wakeup_create(p) Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, p) + +#endif /* HAVE_PIPE */ + #ifndef HAVE_SOCKETPAIR #include diff --git a/external/curl/lib/socks.c b/external/curl/lib/socks.c index a7b5ab07e..3a396de62 100644 --- a/external/curl/lib/socks.c +++ b/external/curl/lib/socks.c @@ -339,8 +339,8 @@ static CURLproxycode do_SOCKS4(struct Curl_cfilter *cf, if(dns) { #ifdef CURLRES_ASYNCH - data->state.async.dns = dns; - data->state.async.done = TRUE; + conn->resolve_async.dns = dns; + conn->resolve_async.done = TRUE; #endif infof(data, "Hostname '%s' was found", sx->hostname); sxstate(sx, data, CONNECT_RESOLVED); @@ -402,8 +402,11 @@ static CURLproxycode do_SOCKS4(struct Curl_cfilter *cf, socksreq[8] = 0; /* ensure empty userid is NUL-terminated */ if(sx->proxy_user) { size_t plen = strlen(sx->proxy_user); - if(plen >= (size_t)data->set.buffer_size - 8) { - failf(data, "Too long SOCKS proxy user name, can't use"); + if(plen > 255) { + /* there is no real size limit to this field in the protocol, but + SOCKS5 limits the proxy user field to 255 bytes and it seems likely + that a longer field is either a mistake or malicious input */ + failf(data, "Too long SOCKS proxy user name"); return CURLPX_LONG_USER; } /* copy the proxy name WITH trailing zero */ @@ -426,7 +429,8 @@ static CURLproxycode do_SOCKS4(struct Curl_cfilter *cf, socksreq[7] = 1; /* append hostname */ hostnamelen = strlen(sx->hostname) + 1; /* length including NUL */ - if(hostnamelen <= 255) + if((hostnamelen <= 255) && + (packetsize + hostnamelen < data->set.buffer_size)) strcpy((char *)socksreq + packetsize, sx->hostname); else { failf(data, "SOCKS4: too long host name"); @@ -802,8 +806,8 @@ static CURLproxycode do_SOCKS5(struct Curl_cfilter *cf, if(dns) { #ifdef CURLRES_ASYNCH - data->state.async.dns = dns; - data->state.async.done = TRUE; + conn->resolve_async.dns = dns; + conn->resolve_async.done = TRUE; #endif infof(data, "SOCKS5: hostname '%s' found", sx->hostname); } @@ -819,10 +823,19 @@ static CURLproxycode do_SOCKS5(struct Curl_cfilter *cf, /* FALLTHROUGH */ CONNECT_RESOLVED: case CONNECT_RESOLVED: { - char dest[MAX_IPADR_LEN] = "unknown"; /* printable address */ + char dest[MAX_IPADR_LEN]; /* printable address */ struct Curl_addrinfo *hp = NULL; if(dns) hp = dns->addr; +#ifdef ENABLE_IPV6 + if(data->set.ipver != CURL_IPRESOLVE_WHATEVER) { + int wanted_family = data->set.ipver == CURL_IPRESOLVE_V4 ? + AF_INET : AF_INET6; + /* scan for the first proper address */ + while(hp && (hp->ai_family != wanted_family)) + hp = hp->ai_next; + } +#endif if(!hp) { failf(data, "Failed to resolve \"%s\" for SOCKS5 connect.", sx->hostname); @@ -1119,7 +1132,7 @@ static CURLcode socks_proxy_cf_connect(struct Curl_cfilter *cf, return result; if(!sx) { - sx = calloc(sizeof(*sx), 1); + sx = calloc(1, sizeof(*sx)); if(!sx) return CURLE_OUT_OF_MEMORY; cf->ctx = sx; @@ -1157,32 +1170,29 @@ static CURLcode socks_proxy_cf_connect(struct Curl_cfilter *cf, return result; } -static int socks_cf_get_select_socks(struct Curl_cfilter *cf, +static void socks_cf_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { struct socks_state *sx = cf->ctx; - int fds; - fds = cf->next->cft->get_select_socks(cf->next, data, socks); - if(!fds && cf->next->connected && !cf->connected && sx) { + if(!cf->connected && sx) { /* If we are not connected, the filter below is and has nothing * to wait on, we determine what to wait for. */ - socks[0] = Curl_conn_cf_get_socket(cf, data); + curl_socket_t sock = Curl_conn_cf_get_socket(cf, data); switch(sx->state) { case CONNECT_RESOLVING: case CONNECT_SOCKS_READ: case CONNECT_AUTH_READ: case CONNECT_REQ_READ: case CONNECT_REQ_READ_MORE: - fds = GETSOCK_READSOCK(0); + Curl_pollset_set_in_only(data, ps, sock); break; default: - fds = GETSOCK_WRITESOCK(0); + Curl_pollset_set_out_only(data, ps, sock); break; } } - return fds; } static void socks_proxy_cf_close(struct Curl_cfilter *cf, @@ -1227,7 +1237,7 @@ struct Curl_cftype Curl_cft_socks_proxy = { socks_proxy_cf_connect, socks_proxy_cf_close, socks_cf_get_host, - socks_cf_get_select_socks, + socks_cf_adjust_pollset, Curl_cf_def_data_pending, Curl_cf_def_send, Curl_cf_def_recv, diff --git a/external/curl/lib/strdup.c b/external/curl/lib/strdup.c index 07a61391a..2578441c3 100644 --- a/external/curl/lib/strdup.c +++ b/external/curl/lib/strdup.c @@ -26,7 +26,7 @@ #include -#ifdef WIN32 +#ifdef _WIN32 #include #endif @@ -56,7 +56,7 @@ char *Curl_strdup(const char *str) } #endif -#ifdef WIN32 +#ifdef _WIN32 /*************************************************************************** * * Curl_wcsdup(source) @@ -99,6 +99,30 @@ void *Curl_memdup(const void *src, size_t length) return buffer; } +/*************************************************************************** + * + * Curl_strndup(source, length) + * + * Copies the 'source' string to a newly allocated buffer (that is returned). + * Copies not more than 'length' bytes (up to a null terminator) then adds a + * null terminator. + * + * Returns the new pointer or NULL on failure. + * + ***************************************************************************/ +void *Curl_strndup(const char *src, size_t length) +{ + char *buf = memchr(src, '\0', length); + if(buf) + length = buf - src; + buf = malloc(length + 1); + if(!buf) + return NULL; + memcpy(buf, src, length); + buf[length] = 0; + return buf; +} + /*************************************************************************** * * Curl_saferealloc(ptr, size) diff --git a/external/curl/lib/strdup.h b/external/curl/lib/strdup.h index c3430b54d..9f12b2548 100644 --- a/external/curl/lib/strdup.h +++ b/external/curl/lib/strdup.h @@ -28,10 +28,11 @@ #ifndef HAVE_STRDUP char *Curl_strdup(const char *str); #endif -#ifdef WIN32 +#ifdef _WIN32 wchar_t* Curl_wcsdup(const wchar_t* src); #endif void *Curl_memdup(const void *src, size_t buffer_length); void *Curl_saferealloc(void *ptr, size_t size); +void *Curl_strndup(const char *src, size_t length); #endif /* HEADER_CURL_STRDUP_H */ diff --git a/external/curl/lib/strerror.c b/external/curl/lib/strerror.c index be4191414..0d5f9276f 100644 --- a/external/curl/lib/strerror.c +++ b/external/curl/lib/strerror.c @@ -48,7 +48,7 @@ #include "curl_memory.h" #include "memdebug.h" -#if defined(WIN32) || defined(_WIN32_WCE) +#if defined(_WIN32) || defined(_WIN32_WCE) #define PRESERVE_WINDOWS_ERROR_CODE #endif @@ -762,7 +762,7 @@ get_winsock_error (int err, char *buf, size_t len) } #endif /* USE_WINSOCK */ -#if defined(WIN32) || defined(_WIN32_WCE) +#if defined(_WIN32) || defined(_WIN32_WCE) /* This is a helper function for Curl_strerror that converts Windows API error * codes (GetLastError) to error messages. * Returns NULL if no error message was found for error code. @@ -804,7 +804,7 @@ get_winapi_error(int err, char *buf, size_t buflen) return (*buf ? buf : NULL); } -#endif /* WIN32 || _WIN32_WCE */ +#endif /* _WIN32 || _WIN32_WCE */ /* * Our thread-safe and smart strerror() replacement. @@ -837,15 +837,15 @@ const char *Curl_strerror(int err, char *buf, size_t buflen) if(!buflen) return NULL; -#ifndef WIN32 +#ifndef _WIN32 DEBUGASSERT(err >= 0); #endif max = buflen - 1; *buf = '\0'; -#if defined(WIN32) || defined(_WIN32_WCE) -#if defined(WIN32) +#if defined(_WIN32) || defined(_WIN32_WCE) +#if defined(_WIN32) /* 'sys_nerr' is the maximum errno number, it is not widely portable */ if(err >= 0 && err < sys_nerr) strncpy(buf, sys_errlist[err], max); @@ -923,7 +923,7 @@ const char *Curl_strerror(int err, char *buf, size_t buflen) * Curl_winapi_strerror: * Variant of Curl_strerror if the error code is definitely Windows API. */ -#if defined(WIN32) || defined(_WIN32_WCE) +#if defined(_WIN32) || defined(_WIN32_WCE) const char *Curl_winapi_strerror(DWORD err, char *buf, size_t buflen) { #ifdef PRESERVE_WINDOWS_ERROR_CODE @@ -958,7 +958,7 @@ const char *Curl_winapi_strerror(DWORD err, char *buf, size_t buflen) return buf; } -#endif /* WIN32 || _WIN32_WCE */ +#endif /* _WIN32 || _WIN32_WCE */ #ifdef USE_WINDOWS_SSPI /* @@ -986,6 +986,10 @@ const char *Curl_sspi_strerror(int err, char *buf, size_t buflen) break; #define SEC2TXT(sec) case sec: txt = #sec; break SEC2TXT(CRYPT_E_REVOKED); + SEC2TXT(CRYPT_E_NO_REVOCATION_DLL); + SEC2TXT(CRYPT_E_NO_REVOCATION_CHECK); + SEC2TXT(CRYPT_E_REVOCATION_OFFLINE); + SEC2TXT(CRYPT_E_NOT_IN_REVOCATION_DATABASE); SEC2TXT(SEC_E_ALGORITHM_MISMATCH); SEC2TXT(SEC_E_BAD_BINDINGS); SEC2TXT(SEC_E_BAD_PKGID); diff --git a/external/curl/lib/strerror.h b/external/curl/lib/strerror.h index 399712f8e..680686734 100644 --- a/external/curl/lib/strerror.h +++ b/external/curl/lib/strerror.h @@ -29,7 +29,7 @@ #define STRERROR_LEN 256 /* a suitable length */ const char *Curl_strerror(int err, char *buf, size_t buflen); -#if defined(WIN32) || defined(_WIN32_WCE) +#if defined(_WIN32) || defined(_WIN32_WCE) const char *Curl_winapi_strerror(DWORD err, char *buf, size_t buflen); #endif #ifdef USE_WINDOWS_SSPI diff --git a/external/curl/lib/system_win32.c b/external/curl/lib/system_win32.c index 0cdaf3b2f..9408d026b 100644 --- a/external/curl/lib/system_win32.c +++ b/external/curl/lib/system_win32.c @@ -24,7 +24,7 @@ #include "curl_setup.h" -#if defined(WIN32) +#if defined(_WIN32) #include #include "system_win32.h" @@ -238,4 +238,4 @@ HMODULE Curl_load_library(LPCTSTR filename) #endif } -#endif /* WIN32 */ +#endif /* _WIN32 */ diff --git a/external/curl/lib/system_win32.h b/external/curl/lib/system_win32.h index 6482643fa..256676668 100644 --- a/external/curl/lib/system_win32.h +++ b/external/curl/lib/system_win32.h @@ -26,7 +26,7 @@ #include "curl_setup.h" -#if defined(WIN32) +#if defined(_WIN32) extern LARGE_INTEGER Curl_freq; extern bool Curl_isVistaOrGreater; @@ -42,8 +42,8 @@ extern IF_NAMETOINDEX_FN Curl_if_nametoindex; /* This is used to dynamically load DLLs */ HMODULE Curl_load_library(LPCTSTR filename); -#else /* WIN32 */ +#else /* _WIN32 */ #define Curl_win32_init(x) CURLE_OK -#endif /* !WIN32 */ +#endif /* !_WIN32 */ #endif /* HEADER_CURL_SYSTEM_WIN32_H */ diff --git a/external/curl/lib/tftp.c b/external/curl/lib/tftp.c index e78140d52..663015502 100644 --- a/external/curl/lib/tftp.c +++ b/external/curl/lib/tftp.c @@ -70,8 +70,6 @@ /* RFC2348 allows the block size to be negotiated */ #define TFTP_BLKSIZE_DEFAULT 512 -#define TFTP_BLKSIZE_MIN 8 -#define TFTP_BLKSIZE_MAX 65464 #define TFTP_OPTION_BLKSIZE "blksize" /* from RFC2349: */ @@ -978,11 +976,9 @@ static CURLcode tftp_connect(struct Curl_easy *data, bool *done) return CURLE_OUT_OF_MEMORY; /* alloc pkt buffers based on specified blksize */ - if(data->set.tftp_blksize) { + if(data->set.tftp_blksize) + /* range checked when set */ blksize = (int)data->set.tftp_blksize; - if(blksize > TFTP_BLKSIZE_MAX || blksize < TFTP_BLKSIZE_MIN) - return CURLE_TFTP_ILLEGAL; - } need_blksize = blksize; /* default size is the fallback when no OACK is received */ @@ -1107,7 +1103,6 @@ static CURLcode tftp_receive_packet(struct Curl_easy *data) CURLcode result = CURLE_OK; struct connectdata *conn = data->conn; struct tftp_state_data *state = conn->proto.tftpc; - struct SingleRequest *k = &data->req; /* Receive the packet */ fromlen = sizeof(fromaddr); @@ -1141,11 +1136,6 @@ static CURLcode tftp_receive_packet(struct Curl_easy *data) result = Curl_client_write(data, CLIENTWRITE_BODY, (char *)state->rpacket.data + 4, state->rbytes-4); - if(!result) { - k->bytecount += state->rbytes-4; - result = Curl_pgrsSetDownloadCounter(data, - (curl_off_t) k->bytecount); - } if(result) { tftp_state_machine(state, TFTP_EVENT_ERROR); return result; diff --git a/external/curl/lib/tftp.h b/external/curl/lib/tftp.h index 5d2d5da61..12404bf6d 100644 --- a/external/curl/lib/tftp.h +++ b/external/curl/lib/tftp.h @@ -25,6 +25,9 @@ ***************************************************************************/ #ifndef CURL_DISABLE_TFTP extern const struct Curl_handler Curl_handler_tftp; + +#define TFTP_BLKSIZE_MIN 8 +#define TFTP_BLKSIZE_MAX 65464 #endif #endif /* HEADER_CURL_TFTP_H */ diff --git a/external/curl/lib/timediff.c b/external/curl/lib/timediff.c index 1b762bbd3..d0824d144 100644 --- a/external/curl/lib/timediff.c +++ b/external/curl/lib/timediff.c @@ -53,7 +53,7 @@ struct timeval *curlx_mstotv(struct timeval *tv, timediff_t ms) #endif tv->tv_sec = (time_t)tv_sec; tv->tv_usec = (suseconds_t)tv_usec; -#elif defined(WIN32) /* maybe also others in the future */ +#elif defined(_WIN32) /* maybe also others in the future */ #if TIMEDIFF_T_MAX > LONG_MAX /* tv_sec overflow check on Windows there we know it is long */ if(tv_sec > LONG_MAX) diff --git a/external/curl/lib/timeval.c b/external/curl/lib/timeval.c index 026d9d17c..5a6727cbc 100644 --- a/external/curl/lib/timeval.c +++ b/external/curl/lib/timeval.c @@ -24,11 +24,10 @@ #include "timeval.h" -#if defined(WIN32) && !defined(MSDOS) +#if defined(_WIN32) -/* set in win32_init() */ -extern LARGE_INTEGER Curl_freq; -extern bool Curl_isVistaOrGreater; +#include +#include "system_win32.h" /* In case of bug fix this function has a counterpart in tool_util.c */ struct curltime Curl_now(void) diff --git a/external/curl/lib/transfer.c b/external/curl/lib/transfer.c index 6886764f4..96f1fde75 100644 --- a/external/curl/lib/transfer.c +++ b/external/curl/lib/transfer.c @@ -163,9 +163,9 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes, { size_t buffersize = bytes; size_t nread; - curl_read_callback readfunc = NULL; void *extra_data = NULL; + int eof_index = 0; #ifndef CURL_DISABLE_HTTP if(data->state.trailers_state == TRAILERS_INITIALIZED) { @@ -223,6 +223,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes, */ readfunc = trailers_read; extra_data = (void *)data; + eof_index = 1; } else #endif @@ -231,10 +232,15 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes, extra_data = data->state.in; } - Curl_set_in_callback(data, true); - nread = readfunc(data->req.upload_fromhere, 1, - buffersize, extra_data); - Curl_set_in_callback(data, false); + if(!data->req.fread_eof[eof_index]) { + Curl_set_in_callback(data, true); + nread = readfunc(data->req.upload_fromhere, 1, buffersize, extra_data); + Curl_set_in_callback(data, false); + /* make sure the callback is not called again after EOF */ + data->req.fread_eof[eof_index] = !nread; + } + else + nread = 0; if(nread == CURL_READFUNC_ABORT) { failf(data, "operation aborted by callback"); @@ -422,16 +428,15 @@ static CURLcode readwrite_data(struct Curl_easy *data, bool *comeback) { CURLcode result = CURLE_OK; - ssize_t nread; /* number of bytes read */ - size_t excess = 0; /* excess bytes read */ - bool readmore = FALSE; /* used by RTP to signal for more data */ + char *buf; + size_t blen; + size_t consumed; int maxloops = 100; curl_off_t max_recv = data->set.max_recv_speed? data->set.max_recv_speed : CURL_OFF_T_MAX; - char *buf = data->state.buffer; bool data_eof_handled = FALSE; - DEBUGASSERT(buf); + DEBUGASSERT(data->state.buffer); *done = FALSE; *comeback = FALSE; @@ -439,8 +444,7 @@ static CURLcode readwrite_data(struct Curl_easy *data, read or we get a CURLE_AGAIN */ do { bool is_empty_data = FALSE; - size_t buffersize = data->set.buffer_size; - size_t bytestoread = buffersize; + size_t bytestoread = data->set.buffer_size; /* For HTTP/2 and HTTP/3, read data without caring about the content length. This is safe because body in HTTP/2 is always segmented thanks to its framing layer. Meanwhile, we have to call Curl_read @@ -449,31 +453,38 @@ static CURLcode readwrite_data(struct Curl_easy *data, bool is_http3 = Curl_conn_is_http3(data, conn, FIRSTSOCKET); data_eof_handled = is_http3 || Curl_conn_is_http2(data, conn, FIRSTSOCKET); - if(!data_eof_handled && k->size != -1 && !k->header) { - /* make sure we don't read too much */ + /* Each loop iteration starts with a fresh buffer and handles + * all data read into it. */ + buf = data->state.buffer; + blen = 0; + + /* If we are reading BODY data and the connection does NOT handle EOF + * and we know the size of the BODY data, limit the read amount */ + if(!k->header && !data_eof_handled && k->size != -1) { curl_off_t totalleft = k->size - k->bytecount; - if(totalleft < (curl_off_t)bytestoread) + if(totalleft <= 0) + bytestoread = 0; + else if(totalleft < (curl_off_t)bytestoread) bytestoread = (size_t)totalleft; } if(bytestoread) { /* receive data from the network! */ + ssize_t nread; /* number of bytes read */ result = Curl_read(data, conn->sockfd, buf, bytestoread, &nread); - - /* read would've blocked */ if(CURLE_AGAIN == result) { result = CURLE_OK; break; /* get out of loop */ } - - if(result>0) + else if(result) goto out; + DEBUGASSERT(nread >= 0); + blen = (size_t)nread; } else { /* read nothing but since we wanted nothing we consider this an OK situation to proceed from */ DEBUGF(infof(data, "readwrite_data: we're done")); - nread = 0; } if(!k->bytecount) { @@ -485,12 +496,17 @@ static CURLcode readwrite_data(struct Curl_easy *data, *didwhat |= KEEP_RECV; /* indicates data of zero size, i.e. empty file */ - is_empty_data = ((nread == 0) && (k->bodywrites == 0)) ? TRUE : FALSE; - - if(0 < nread || is_empty_data) { - buf[nread] = 0; + is_empty_data = ((blen == 0) && (k->bodywrites == 0)) ? TRUE : FALSE; + + if(0 < blen || is_empty_data) { + /* data->state.buffer is allocated 1 byte larger than + * data->set.buffer_size admits. *wink* */ + /* TODO: we should really not rely on this being 0-terminated, since + * the actual data read might contain 0s. */ + buf[blen] = 0; } - if(!nread) { + + if(!blen) { /* if we receive 0 or less here, either the data transfer is done or the server closed the connection and we bail out from this! */ if(data_eof_handled) @@ -502,48 +518,70 @@ static CURLcode readwrite_data(struct Curl_easy *data, break; } - /* Default buffer to use when we write the buffer, it may be changed - in the flow below before the actual storing is done. */ - k->str = buf; - if(conn->handler->readwrite) { - result = conn->handler->readwrite(data, conn, &nread, &readmore); + bool readmore = FALSE; /* indicates data is incomplete, need more */ + consumed = 0; + result = conn->handler->readwrite(data, conn, buf, blen, + &consumed, &readmore); if(result) goto out; if(readmore) break; + buf += consumed; + blen -= consumed; + if(k->download_done) { + /* We've stopped dealing with input, get out of the do-while loop */ + if(blen > 0) { + infof(data, + "Excess found:" + " excess = %zu" + " url = %s (zero-length body)", + blen, data->state.up.path); + } + + /* we make sure that this socket isn't read more now */ + k->keepon &= ~KEEP_RECV; + break; + } } #ifndef CURL_DISABLE_HTTP /* Since this is a two-state thing, we check if we are parsing headers at the moment or not. */ if(k->header) { - /* we are in parse-the-header-mode */ - bool stop_reading = FALSE; - result = Curl_http_readwrite_headers(data, conn, &nread, &stop_reading); + consumed = 0; + result = Curl_http_readwrite_headers(data, conn, buf, blen, &consumed); if(result) goto out; + buf += consumed; + blen -= consumed; if(conn->handler->readwrite && - (k->maxdownload <= 0 && nread > 0)) { - result = conn->handler->readwrite(data, conn, &nread, &readmore); + (k->maxdownload <= 0 && blen > 0)) { + bool readmore = FALSE; /* indicates data is incomplete, need more */ + consumed = 0; + result = conn->handler->readwrite(data, conn, buf, blen, + &consumed, &readmore); if(result) goto out; if(readmore) break; + buf += consumed; + blen -= consumed; } - if(stop_reading) { + if(k->download_done) { /* We've stopped dealing with input, get out of the do-while loop */ - - if(nread > 0) { + if(blen > 0) { infof(data, "Excess found:" - " excess = %zd" + " excess = %zu" " url = %s (zero-length body)", - nread, data->state.up.path); + blen, data->state.up.path); } + /* we make sure that this socket isn't read more now */ + k->keepon &= ~KEEP_RECV; break; } } @@ -553,11 +591,13 @@ static CURLcode readwrite_data(struct Curl_easy *data, /* This is not an 'else if' since it may be a rest from the header parsing, where the beginning of the buffer is headers and the end is non-headers. */ - if(!k->header && (nread > 0 || is_empty_data)) { + if(!k->header && (blen > 0 || is_empty_data)) { - if(data->req.no_body) { + if(data->req.no_body && blen > 0) { /* data arrives although we want none, bail out */ streamclose(conn, "ignoring body"); + DEBUGF(infof(data, "did not want a BODY, but seeing %zu bytes", + blen)); *done = TRUE; result = CURLE_WEIRD_SERVER_REPLY; goto out; @@ -576,34 +616,18 @@ static CURLcode readwrite_data(struct Curl_easy *data, } /* this is the first time we write a body part */ #endif /* CURL_DISABLE_HTTP */ - k->bodywrites++; - - /* pass data to the debug function before it gets "dechunked" */ - if(data->set.verbose) { - if(k->badheader) { - Curl_debug(data, CURLINFO_DATA_IN, - Curl_dyn_ptr(&data->state.headerb), - Curl_dyn_len(&data->state.headerb)); - if(k->badheader == HEADER_PARTHEADER) - Curl_debug(data, CURLINFO_DATA_IN, - k->str, (size_t)nread); - } - else - Curl_debug(data, CURLINFO_DATA_IN, - k->str, (size_t)nread); - } - #ifndef CURL_DISABLE_HTTP if(k->chunk) { /* * Here comes a chunked transfer flying and we need to decode this * properly. While the name says read, this function both reads - * and writes away the data. The returned 'nread' holds the number - * of actual data it wrote to the client. + * and writes away the data. */ CURLcode extra; - CHUNKcode res = - Curl_httpchunk_read(data, k->str, nread, &nread, &extra); + CHUNKcode res; + + consumed = 0; + res = Curl_httpchunk_read(data, buf, blen, &consumed, &extra); if(CHUNKE_OK < res) { if(CHUNKE_PASSTHRU_ERROR == res) { @@ -615,9 +639,14 @@ static CURLcode readwrite_data(struct Curl_easy *data, result = CURLE_RECV_ERROR; goto out; } - if(CHUNKE_STOP == res) { + + buf += consumed; + blen -= consumed; + if(CHUNKE_STOP == res) { /* we're done reading chunks! */ k->keepon &= ~KEEP_RECV; /* read no more */ + /* chunks read successfully, download is complete */ + k->download_done = TRUE; /* N number of bytes at the end of the str buffer that weren't written to the client. */ @@ -631,117 +660,57 @@ static CURLcode readwrite_data(struct Curl_easy *data, } #endif /* CURL_DISABLE_HTTP */ - /* Account for body content stored in the header buffer */ - if((k->badheader == HEADER_PARTHEADER) && !k->ignorebody) { - size_t headlen = Curl_dyn_len(&data->state.headerb); - DEBUGF(infof(data, "Increasing bytecount by %zu", headlen)); - k->bytecount += headlen; - } - - if((-1 != k->maxdownload) && - (k->bytecount + nread >= k->maxdownload)) { + max_recv -= blen; - excess = (size_t)(k->bytecount + nread - k->maxdownload); - if(excess > 0 && !k->ignorebody) { - infof(data, - "Excess found in a read:" - " excess = %zu" - ", size = %" CURL_FORMAT_CURL_OFF_T - ", maxdownload = %" CURL_FORMAT_CURL_OFF_T - ", bytecount = %" CURL_FORMAT_CURL_OFF_T, - excess, k->size, k->maxdownload, k->bytecount); - connclose(conn, "excess found in a read"); - } - - nread = (ssize_t) (k->maxdownload - k->bytecount); - if(nread < 0) /* this should be unusual */ - nread = 0; - - /* HTTP/3 over QUIC should keep reading until QUIC connection - is closed. In contrast to HTTP/2 which can stop reading - from TCP connection, HTTP/3 over QUIC needs ACK from server - to ensure stream closure. It should keep reading. */ - if(!is_http3) { - k->keepon &= ~KEEP_RECV; /* we're done reading */ - } - } - - k->bytecount += nread; - max_recv -= nread; - - result = Curl_pgrsSetDownloadCounter(data, k->bytecount); - if(result) - goto out; - - if(!k->chunk && (nread || k->badheader || is_empty_data)) { + if(!k->chunk && (blen || k->badheader || is_empty_data)) { /* If this is chunky transfer, it was already written */ - if(k->badheader && !k->ignorebody) { + if(k->badheader) { /* we parsed a piece of data wrongly assuming it was a header and now we output it as body instead */ size_t headlen = Curl_dyn_len(&data->state.headerb); /* Don't let excess data pollute body writes */ - if(k->maxdownload == -1 || (curl_off_t)headlen <= k->maxdownload) - result = Curl_client_write(data, CLIENTWRITE_BODY, - Curl_dyn_ptr(&data->state.headerb), - headlen); - else - result = Curl_client_write(data, CLIENTWRITE_BODY, - Curl_dyn_ptr(&data->state.headerb), - (size_t)k->maxdownload); + if(k->maxdownload != -1 && (curl_off_t)headlen > k->maxdownload) + headlen = (size_t)k->maxdownload; + result = Curl_client_write(data, CLIENTWRITE_BODY, + Curl_dyn_ptr(&data->state.headerb), + headlen); if(result) goto out; } - if(k->badheader < HEADER_ALLBAD) { - /* This switch handles various content encodings. If there's an - error here, be sure to check over the almost identical code - in http_chunks.c. - Make sure that ALL_CONTENT_ENCODINGS contains all the - encodings handled here. */ - if(!k->ignorebody && nread) { + + if(blen) { #ifndef CURL_DISABLE_POP3 - if(conn->handler->protocol & PROTO_FAMILY_POP3) - result = Curl_pop3_write(data, k->str, nread); - else -#endif /* CURL_DISABLE_POP3 */ - result = Curl_client_write(data, CLIENTWRITE_BODY, k->str, - nread); + if(conn->handler->protocol & PROTO_FAMILY_POP3) { + result = k->ignorebody? CURLE_OK : + Curl_pop3_write(data, buf, blen); } + else +#endif /* CURL_DISABLE_POP3 */ + result = Curl_client_write(data, CLIENTWRITE_BODY, buf, blen); } - k->badheader = HEADER_NORMAL; /* taken care of now */ + k->badheader = FALSE; /* taken care of now */ if(result) goto out; } - } /* if(!header and data to read) */ - - if(conn->handler->readwrite && excess) { - /* Parse the excess data */ - k->str += nread; - - if(&k->str[excess] > &buf[data->set.buffer_size]) { - /* the excess amount was too excessive(!), make sure - it doesn't read out of buffer */ - excess = &buf[data->set.buffer_size] - k->str; + if(k->download_done && !is_http3) { + /* HTTP/3 over QUIC should keep reading until QUIC connection + is closed. In contrast to HTTP/2 which can stop reading + from TCP connection, HTTP/3 over QUIC needs ACK from server + to ensure stream closure. It should keep reading. */ + k->keepon &= ~KEEP_RECV; /* we're done reading */ } - nread = (ssize_t)excess; - - result = conn->handler->readwrite(data, conn, &nread, &readmore); - if(result) - goto out; - - if(readmore) - k->keepon |= KEEP_RECV; /* we're not done reading */ - break; - } + } /* if(!header and data to read) */ if(is_empty_data) { /* if we received nothing, the server closed the connection and we are done */ k->keepon &= ~KEEP_RECV; + k->download_done = TRUE; } if((k->keepon & KEEP_RECV_PAUSE) || !(k->keepon & KEEP_RECV)) { @@ -764,6 +733,7 @@ static CURLcode readwrite_data(struct Curl_easy *data, on from our side, we need to stop that immediately. */ infof(data, "we are done reading and this is set to close, stop send"); k->keepon &= ~KEEP_SEND; /* no writing anymore either */ + k->keepon &= ~KEEP_SEND_PAUSE; /* no pausing anymore either */ } out: @@ -783,7 +753,7 @@ CURLcode Curl_done_sending(struct Curl_easy *data, return CURLE_OK; } -#if defined(WIN32) && defined(USE_WINSOCK) +#if defined(_WIN32) && defined(USE_WINSOCK) #ifndef SIO_IDEAL_SEND_BACKLOG_QUERY #define SIO_IDEAL_SEND_BACKLOG_QUERY 0x4004747B #endif @@ -977,7 +947,7 @@ static CURLcode readwrite_upload(struct Curl_easy *data, if(result) return result; -#if defined(WIN32) && defined(USE_WINSOCK) +#if defined(_WIN32) && defined(USE_WINSOCK) { struct curltime n = Curl_now(); if(Curl_timediff(n, k->last_sndbuf_update) > 1000) { @@ -1430,8 +1400,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data) return CURLE_OUT_OF_MEMORY; } wc = data->wildcard; - if((wc->state < CURLWC_INIT) || - (wc->state >= CURLWC_CLEAN)) { + if(wc->state < CURLWC_INIT) { if(wc->ftpwc) wc->dtor(wc->ftpwc); Curl_safefree(wc->pattern); @@ -1635,7 +1604,7 @@ CURLcode Curl_follow(struct Curl_easy *data, return Curl_uc_to_curlcode(uc); } - p = Curl_builtin_scheme(scheme, CURL_ZERO_TERMINATED); + p = Curl_get_scheme_handler(scheme); if(p && (p->protocol != data->info.conn_protocol)) { infof(data, "Clear auth, redirects scheme from %s to %s", data->info.conn_scheme, scheme); diff --git a/external/curl/lib/url.c b/external/curl/lib/url.c index 61dad442d..b81785fe2 100644 --- a/external/curl/lib/url.c +++ b/external/curl/lib/url.c @@ -168,130 +168,6 @@ static curl_prot_t get_protocol_family(const struct Curl_handler *h) return h->family; } - -/* - * Protocol table. Schemes (roughly) in 2019 popularity order: - * - * HTTPS, HTTP, FTP, FTPS, SFTP, FILE, SCP, SMTP, LDAP, IMAPS, TELNET, IMAP, - * LDAPS, SMTPS, TFTP, SMB, POP3, GOPHER POP3S, RTSP, RTMP, SMBS, DICT - */ -static const struct Curl_handler * const protocols[] = { - -#if defined(USE_SSL) && !defined(CURL_DISABLE_HTTP) - &Curl_handler_https, -#endif - -#ifndef CURL_DISABLE_HTTP - &Curl_handler_http, -#endif - -#ifdef USE_WEBSOCKETS -#if defined(USE_SSL) && !defined(CURL_DISABLE_HTTP) - &Curl_handler_wss, -#endif - -#ifndef CURL_DISABLE_HTTP - &Curl_handler_ws, -#endif -#endif - -#ifndef CURL_DISABLE_FTP - &Curl_handler_ftp, -#endif - -#if defined(USE_SSL) && !defined(CURL_DISABLE_FTP) - &Curl_handler_ftps, -#endif - -#if defined(USE_SSH) - &Curl_handler_sftp, -#endif - -#ifndef CURL_DISABLE_FILE - &Curl_handler_file, -#endif - -#if defined(USE_SSH) && !defined(USE_WOLFSSH) - &Curl_handler_scp, -#endif - -#ifndef CURL_DISABLE_SMTP - &Curl_handler_smtp, -#ifdef USE_SSL - &Curl_handler_smtps, -#endif -#endif - -#ifndef CURL_DISABLE_LDAP - &Curl_handler_ldap, -#if !defined(CURL_DISABLE_LDAPS) && \ - ((defined(USE_OPENLDAP) && defined(USE_SSL)) || \ - (!defined(USE_OPENLDAP) && defined(HAVE_LDAP_SSL))) - &Curl_handler_ldaps, -#endif -#endif - -#ifndef CURL_DISABLE_IMAP - &Curl_handler_imap, -#ifdef USE_SSL - &Curl_handler_imaps, -#endif -#endif - -#ifndef CURL_DISABLE_TELNET - &Curl_handler_telnet, -#endif - -#ifndef CURL_DISABLE_TFTP - &Curl_handler_tftp, -#endif - -#ifndef CURL_DISABLE_POP3 - &Curl_handler_pop3, -#ifdef USE_SSL - &Curl_handler_pop3s, -#endif -#endif - -#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \ - (SIZEOF_CURL_OFF_T > 4) - &Curl_handler_smb, -#ifdef USE_SSL - &Curl_handler_smbs, -#endif -#endif - -#ifndef CURL_DISABLE_RTSP - &Curl_handler_rtsp, -#endif - -#ifndef CURL_DISABLE_MQTT - &Curl_handler_mqtt, -#endif - -#ifndef CURL_DISABLE_GOPHER - &Curl_handler_gopher, -#ifdef USE_SSL - &Curl_handler_gophers, -#endif -#endif - -#ifdef USE_LIBRTMP - &Curl_handler_rtmp, - &Curl_handler_rtmpt, - &Curl_handler_rtmpe, - &Curl_handler_rtmpte, - &Curl_handler_rtmps, - &Curl_handler_rtmpts, -#endif - -#ifndef CURL_DISABLE_DICT - &Curl_handler_dict, -#endif - - (struct Curl_handler *) NULL -}; - void Curl_freeset(struct Curl_easy *data) { /* Free all dynamic strings stored in the data->set substructure. */ @@ -320,8 +196,8 @@ void Curl_freeset(struct Curl_easy *data) Curl_mime_cleanpart(&data->set.mimepost); #ifndef CURL_DISABLE_COOKIES - curl_slist_free_all(data->set.cookielist); - data->set.cookielist = NULL; + curl_slist_free_all(data->state.cookielist); + data->state.cookielist = NULL; #endif } @@ -363,16 +239,18 @@ CURLcode Curl_close(struct Curl_easy **datap) /* Detach connection if any is left. This should not be normal, but can be the case for example with CONNECT_ONLY + recv/send (test 556) */ Curl_detach_connection(data); - if(data->multi) - /* This handle is still part of a multi handle, take care of this first - and detach this handle from there. */ - curl_multi_remove_handle(data->multi, data); + if(!data->state.internal) { + if(data->multi) + /* This handle is still part of a multi handle, take care of this first + and detach this handle from there. */ + curl_multi_remove_handle(data->multi, data); - if(data->multi_easy) { - /* when curl_easy_perform() is used, it creates its own multi handle to - use and this is the one */ - curl_multi_cleanup(data->multi_easy); - data->multi_easy = NULL; + if(data->multi_easy) { + /* when curl_easy_perform() is used, it creates its own multi handle to + use and this is the one */ + curl_multi_cleanup(data->multi_easy); + data->multi_easy = NULL; + } } data->magic = 0; /* force a clear AFTER the possibly enforced removal from @@ -412,7 +290,7 @@ CURLcode Curl_close(struct Curl_easy **datap) #ifndef CURL_DISABLE_HSTS if(!data->share || !data->share->hsts) Curl_hsts_cleanup(&data->hsts); - curl_slist_free_all(data->set.hstslist); /* clean up list */ + curl_slist_free_all(data->state.hstslist); /* clean up list */ #endif #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_DIGEST_AUTH) Curl_http_auth_cleanup_digest(data); @@ -420,10 +298,6 @@ CURLcode Curl_close(struct Curl_easy **datap) Curl_safefree(data->info.contenttype); Curl_safefree(data->info.wouldredirect); - /* this destroys the channel and we cannot use it anymore after this */ - Curl_resolver_cancel(data); - Curl_resolver_cleanup(data->state.async.resolver); - data_priority_cleanup(data); /* No longer a dirty share, if it exists */ @@ -457,8 +331,8 @@ CURLcode Curl_close(struct Curl_easy **datap) } #endif - Curl_mime_cleanpart(data->state.formp); #ifndef CURL_DISABLE_HTTP + Curl_mime_cleanpart(data->state.formp); Curl_safefree(data->state.formp); #endif @@ -530,26 +404,16 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data) Curl_mime_initpart(&set->mimepost); - /* - * libcurl 7.10 introduced SSL verification *by default*! This needs to be - * switched off unless wanted. - */ + Curl_ssl_easy_config_init(data); #ifndef CURL_DISABLE_DOH set->doh_verifyhost = TRUE; set->doh_verifypeer = TRUE; #endif - set->ssl.primary.verifypeer = TRUE; - set->ssl.primary.verifyhost = TRUE; #ifdef USE_SSH /* defaults to any auth type */ set->ssh_auth_types = CURLSSH_AUTH_DEFAULT; set->new_directory_perms = 0755; /* Default permissions */ #endif - set->ssl.primary.sessionid = TRUE; /* session ID caching enabled by - default */ -#ifndef CURL_DISABLE_PROXY - set->proxy_ssl = set->ssl; -#endif set->new_file_perms = 0644; /* Default permissions */ set->allowed_protocols = (curl_prot_t) CURLPROTO_ALL; @@ -650,13 +514,6 @@ CURLcode Curl_open(struct Curl_easy **curl) data->magic = CURLEASY_MAGIC_NUMBER; - result = Curl_resolver_init(data, &data->state.async.resolver); - if(result) { - DEBUGF(fprintf(stderr, "Error: resolver_init failed\n")); - free(data); - return result; - } - result = Curl_init_userdefined(data); if(!result) { Curl_dyn_init(&data->state.headerb, CURL_MAX_HTTP_HEADER); @@ -673,7 +530,6 @@ CURLcode Curl_open(struct Curl_easy **curl) } if(result) { - Curl_resolver_cleanup(data->state.async.resolver); Curl_dyn_free(&data->state.headerb); Curl_freeset(data); free(data); @@ -707,6 +563,7 @@ static void conn_free(struct Curl_easy *data, struct connectdata *conn) Curl_conn_cf_discard_all(data, conn, (int)i); } + Curl_resolver_cleanup(conn->resolve_async.resolver); Curl_free_idnconverted_hostname(&conn->host); Curl_free_idnconverted_hostname(&conn->conn_to_host); #ifndef CURL_DISABLE_PROXY @@ -718,7 +575,6 @@ static void conn_free(struct Curl_easy *data, struct connectdata *conn) Curl_safefree(conn->socks_proxy.passwd); Curl_safefree(conn->http_proxy.host.rawalloc); /* http proxy name buffer */ Curl_safefree(conn->socks_proxy.host.rawalloc); /* socks proxy name buffer */ - Curl_free_primary_ssl_config(&conn->proxy_ssl_config); #endif Curl_safefree(conn->user); Curl_safefree(conn->passwd); @@ -733,7 +589,7 @@ static void conn_free(struct Curl_easy *data, struct connectdata *conn) Curl_safefree(conn->hostname_resolve); Curl_safefree(conn->secondaryhostname); Curl_safefree(conn->localdev); - Curl_free_primary_ssl_config(&conn->ssl_config); + Curl_ssl_conn_config_cleanup(conn); #ifdef USE_UNIX_SOCKETS Curl_safefree(conn->unix_domain_socket); @@ -807,6 +663,7 @@ void Curl_disconnect(struct Curl_easy *data, conn->handler->disconnect(data, conn, dead_connection); conn_shutdown(data); + Curl_resolver_cancel(data); /* detach it again */ Curl_detach_connection(data); @@ -1059,11 +916,11 @@ ConnectionExists(struct Curl_easy *data, bool *force_reuse, bool *waitpipe) { - struct connectdata *check; - struct connectdata *chosen = 0; + struct connectdata *chosen = NULL; bool foundPendingCandidate = FALSE; - bool canmultiplex = IsMultiplexingPossible(data, needle); + bool canmultiplex = FALSE; struct connectbundle *bundle; + struct Curl_llist_element *curr; #ifdef USE_NTLM bool wantNTLMhttp = ((data->state.authhost.want & @@ -1082,395 +939,368 @@ ConnectionExists(struct Curl_easy *data, bool h2upgrade = (data->state.httpwant == CURL_HTTP_VERSION_2_0) && (needle->handler->protocol & CURLPROTO_HTTP); + *usethis = NULL; *force_reuse = FALSE; *waitpipe = FALSE; /* Look up the bundle with all the connections to this particular host. Locks the connection cache, beware of early returns! */ bundle = Curl_conncache_find_bundle(data, needle, data->state.conn_cache); - if(bundle) { - /* Max pipe length is zero (unlimited) for multiplexed connections */ - struct Curl_llist_element *curr; - - infof(data, "Found bundle for host: %p [%s]", - (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ? - "can multiplex" : "serially")); - - /* We can't multiplex if we don't know anything about the server */ - if(canmultiplex) { - if(bundle->multiuse == BUNDLE_UNKNOWN) { - if(data->set.pipewait) { - infof(data, "Server doesn't support multiplex yet, wait"); - *waitpipe = TRUE; - CONNCACHE_UNLOCK(data); - return FALSE; /* no reuse */ - } - - infof(data, "Server doesn't support multiplex (yet)"); - canmultiplex = FALSE; + if(!bundle) { + CONNCACHE_UNLOCK(data); + return FALSE; + } + infof(data, "Found bundle for host: %p [%s]", + (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ? + "can multiplex" : "serially")); + + /* We can only multiplex iff the transfer allows it AND we know + * that the server we want to talk to supports it as well. */ + canmultiplex = FALSE; + if(IsMultiplexingPossible(data, needle)) { + if(bundle->multiuse == BUNDLE_UNKNOWN) { + if(data->set.pipewait) { + infof(data, "Server doesn't support multiplex yet, wait"); + *waitpipe = TRUE; + CONNCACHE_UNLOCK(data); + return FALSE; /* no reuse */ } - if((bundle->multiuse == BUNDLE_MULTIPLEX) && - !Curl_multiplex_wanted(data->multi)) { + infof(data, "Server doesn't support multiplex (yet)"); + } + else if(bundle->multiuse == BUNDLE_MULTIPLEX) { + if(Curl_multiplex_wanted(data->multi)) + canmultiplex = TRUE; + else infof(data, "Could multiplex, but not asked to"); - canmultiplex = FALSE; - } - if(bundle->multiuse == BUNDLE_NO_MULTIUSE) { - infof(data, "Can not multiplex, even if we wanted to"); - canmultiplex = FALSE; - } } + else if(bundle->multiuse == BUNDLE_NO_MULTIUSE) { + infof(data, "Can not multiplex, even if we wanted to"); + } + } - curr = bundle->conn_list.head; - while(curr) { - bool match = FALSE; - size_t multiplexed = 0; + curr = bundle->conn_list.head; + while(curr) { + struct connectdata *check = curr->ptr; + /* Get next node now. We might remove a dead `check` connection which + * would invalidate `curr` as well. */ + curr = curr->next; - /* - * Note that if we use an HTTP proxy in normal mode (no tunneling), we - * check connections to that proxy and not to the actual remote server. - */ - check = curr->ptr; - curr = curr->next; + /* Note that if we use an HTTP proxy in normal mode (no tunneling), we + * check connections to that proxy and not to the actual remote server. + */ + if(check->connect_only || check->bits.close) + /* connect-only or to-be-closed connections will not be reused */ + continue; - if(check->connect_only || check->bits.close) - /* connect-only or to-be-closed connections will not be reused */ - continue; + if(data->set.ipver != CURL_IPRESOLVE_WHATEVER + && data->set.ipver != check->ip_version) { + /* skip because the connection is not via the requested IP version */ + continue; + } - if(extract_if_dead(check, data)) { - /* disconnect it */ - Curl_disconnect(data, check, TRUE); + if(!canmultiplex) { + if(Curl_resolver_asynch() && + /* primary_ip[0] is NUL only if the resolving of the name hasn't + completed yet and until then we don't reuse this connection */ + !check->primary_ip[0]) continue; - } + } - if(data->set.ipver != CURL_IPRESOLVE_WHATEVER - && data->set.ipver != check->ip_version) { - /* skip because the connection is not via the requested IP version */ + if(CONN_INUSE(check)) { + if(!canmultiplex) { + /* transfer can't be multiplexed and check is in use */ continue; } - - if(bundle->multiuse == BUNDLE_MULTIPLEX) - multiplexed = CONN_INUSE(check); - - if(!canmultiplex) { - if(multiplexed) { - /* can only happen within multi handles, and means that another easy - handle is using this connection */ - continue; - } - - if(Curl_resolver_asynch() && - /* primary_ip[0] is NUL only if the resolving of the name hasn't - completed yet and until then we don't reuse this connection */ - !check->primary_ip[0]) + else { + /* Could multiplex, but not when check belongs to another multi */ + struct Curl_llist_element *e = check->easyq.head; + struct Curl_easy *entry = e->ptr; + if(entry->multi != data->multi) continue; } + } - if(!Curl_conn_is_connected(check, FIRSTSOCKET)) { - foundPendingCandidate = TRUE; - /* Don't pick a connection that hasn't connected yet */ - infof(data, "Connection #%" CURL_FORMAT_CURL_OFF_T - " isn't open enough, can't reuse", check->connection_id); - continue; - } + if(!Curl_conn_is_connected(check, FIRSTSOCKET)) { + foundPendingCandidate = TRUE; + /* Don't pick a connection that hasn't connected yet */ + infof(data, "Connection #%" CURL_FORMAT_CURL_OFF_T + " isn't open enough, can't reuse", check->connection_id); + continue; + } + + /* `check` is connected. if it is in use and does not support multiplex, + * we cannot use it. */ + if(!check->bits.multiplex && CONN_INUSE(check)) + continue; #ifdef USE_UNIX_SOCKETS - if(needle->unix_domain_socket) { - if(!check->unix_domain_socket) - continue; - if(strcmp(needle->unix_domain_socket, check->unix_domain_socket)) - continue; - if(needle->bits.abstract_unix_socket != - check->bits.abstract_unix_socket) - continue; - } - else if(check->unix_domain_socket) + if(needle->unix_domain_socket) { + if(!check->unix_domain_socket) continue; -#endif - - if((needle->handler->flags&PROTOPT_SSL) != - (check->handler->flags&PROTOPT_SSL)) - /* don't do mixed SSL and non-SSL connections */ - if(get_protocol_family(check->handler) != - needle->handler->protocol || !check->bits.tls_upgraded) - /* except protocols that have been upgraded via TLS */ - continue; - -#ifndef CURL_DISABLE_PROXY - if(needle->bits.httpproxy != check->bits.httpproxy || - needle->bits.socksproxy != check->bits.socksproxy) + if(strcmp(needle->unix_domain_socket, check->unix_domain_socket)) continue; - - if(needle->bits.socksproxy && - !socks_proxy_info_matches(&needle->socks_proxy, - &check->socks_proxy)) + if(needle->bits.abstract_unix_socket != + check->bits.abstract_unix_socket) continue; + } + else if(check->unix_domain_socket) + continue; #endif - if(needle->bits.conn_to_host != check->bits.conn_to_host) - /* don't mix connections that use the "connect to host" feature and - * connections that don't use this feature */ - continue; - if(needle->bits.conn_to_port != check->bits.conn_to_port) - /* don't mix connections that use the "connect to port" feature and - * connections that don't use this feature */ + if((needle->handler->flags&PROTOPT_SSL) != + (check->handler->flags&PROTOPT_SSL)) + /* don't do mixed SSL and non-SSL connections */ + if(get_protocol_family(check->handler) != + needle->handler->protocol || !check->bits.tls_upgraded) + /* except protocols that have been upgraded via TLS */ continue; -#ifndef CURL_DISABLE_PROXY - if(needle->bits.httpproxy) { - if(!proxy_info_matches(&needle->http_proxy, &check->http_proxy)) - continue; + if(needle->bits.conn_to_host != check->bits.conn_to_host) + /* don't mix connections that use the "connect to host" feature and + * connections that don't use this feature */ + continue; - if(needle->bits.tunnel_proxy != check->bits.tunnel_proxy) - continue; + if(needle->bits.conn_to_port != check->bits.conn_to_port) + /* don't mix connections that use the "connect to port" feature and + * connections that don't use this feature */ + continue; - if(IS_HTTPS_PROXY(needle->http_proxy.proxytype)) { - /* use https proxy */ - if(needle->http_proxy.proxytype != - check->http_proxy.proxytype) - continue; - else if(needle->handler->flags&PROTOPT_SSL) { - /* use double layer ssl */ - if(!Curl_ssl_config_matches(&needle->proxy_ssl_config, - &check->proxy_ssl_config)) - continue; - } - else if(!Curl_ssl_config_matches(&needle->ssl_config, - &check->ssl_config)) - continue; - } - } -#endif +#ifndef CURL_DISABLE_PROXY + if(needle->bits.httpproxy != check->bits.httpproxy || + needle->bits.socksproxy != check->bits.socksproxy) + continue; - if(h2upgrade && !check->httpversion && canmultiplex) { - if(data->set.pipewait) { - infof(data, "Server upgrade doesn't support multiplex yet, wait"); - *waitpipe = TRUE; - CONNCACHE_UNLOCK(data); - return FALSE; /* no reuse */ - } - infof(data, "Server upgrade cannot be used"); - continue; /* can't be used atm */ - } + if(needle->bits.socksproxy && + !socks_proxy_info_matches(&needle->socks_proxy, + &check->socks_proxy)) + continue; - if(!canmultiplex && CONN_INUSE(check)) - /* this request can't be multiplexed but the checked connection is - already in use so we skip it */ + if(needle->bits.httpproxy) { + if(needle->bits.tunnel_proxy != check->bits.tunnel_proxy) continue; - if(CONN_INUSE(check)) { - /* Subject for multiplex use if 'checks' belongs to the same multi - handle as 'data' is. */ - struct Curl_llist_element *e = check->easyq.head; - struct Curl_easy *entry = e->ptr; - if(entry->multi != data->multi) - continue; - } + if(!proxy_info_matches(&needle->http_proxy, &check->http_proxy)) + continue; - if(needle->localdev || needle->localport) { - /* If we are bound to a specific local end (IP+port), we must not - reuse a random other one, although if we didn't ask for a - particular one we can reuse one that was bound. - - This comparison is a bit rough and too strict. Since the input - parameters can be specified in numerous ways and still end up the - same it would take a lot of processing to make it really accurate. - Instead, this matching will assume that reuses of bound connections - will most likely also reuse the exact same binding parameters and - missing out a few edge cases shouldn't hurt anyone very much. - */ - if((check->localport != needle->localport) || - (check->localportrange != needle->localportrange) || - (needle->localdev && - (!check->localdev || strcmp(check->localdev, needle->localdev)))) + if(IS_HTTPS_PROXY(needle->http_proxy.proxytype)) { + /* https proxies come in different types, http/1.1, h2, ... */ + if(needle->http_proxy.proxytype != check->http_proxy.proxytype) continue; - } - - if(!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) { - /* This protocol requires credentials per connection, - so verify that we're using the same name and password as well */ - if(Curl_timestrcmp(needle->user, check->user) || - Curl_timestrcmp(needle->passwd, check->passwd) || - Curl_timestrcmp(needle->sasl_authzid, check->sasl_authzid) || - Curl_timestrcmp(needle->oauth_bearer, check->oauth_bearer)) { - /* one of them was different */ + /* match SSL config to proxy */ + if(!Curl_ssl_conn_config_match(data, check, TRUE)) { + DEBUGF(infof(data, + "Connection #%" CURL_FORMAT_CURL_OFF_T + " has different SSL proxy parameters, can't reuse", + check->connection_id)); continue; } + /* the SSL config to the server, which may apply here is checked + * further below */ } + } +#endif - /* GSS delegation differences do not actually affect every connection - and auth method, but this check takes precaution before efficiency */ - if(needle->gssapi_delegation != check->gssapi_delegation) + if(h2upgrade && !check->httpversion && canmultiplex) { + if(data->set.pipewait) { + infof(data, "Server upgrade doesn't support multiplex yet, wait"); + *waitpipe = TRUE; + CONNCACHE_UNLOCK(data); + return FALSE; /* no reuse */ + } + infof(data, "Server upgrade cannot be used"); + continue; /* can't be used atm */ + } + + if(needle->localdev || needle->localport) { + /* If we are bound to a specific local end (IP+port), we must not + reuse a random other one, although if we didn't ask for a + particular one we can reuse one that was bound. + + This comparison is a bit rough and too strict. Since the input + parameters can be specified in numerous ways and still end up the + same it would take a lot of processing to make it really accurate. + Instead, this matching will assume that reuses of bound connections + will most likely also reuse the exact same binding parameters and + missing out a few edge cases shouldn't hurt anyone very much. + */ + if((check->localport != needle->localport) || + (check->localportrange != needle->localportrange) || + (needle->localdev && + (!check->localdev || strcmp(check->localdev, needle->localdev)))) continue; + } - /* If multiplexing isn't enabled on the h2 connection and h1 is - explicitly requested, handle it: */ - if((needle->handler->protocol & PROTO_FAMILY_HTTP) && - (((check->httpversion >= 20) && - (data->state.httpwant < CURL_HTTP_VERSION_2_0)) - || ((check->httpversion >= 30) && - (data->state.httpwant < CURL_HTTP_VERSION_3)))) + if(!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) { + /* This protocol requires credentials per connection, + so verify that we're using the same name and password as well */ + if(Curl_timestrcmp(needle->user, check->user) || + Curl_timestrcmp(needle->passwd, check->passwd) || + Curl_timestrcmp(needle->sasl_authzid, check->sasl_authzid) || + Curl_timestrcmp(needle->oauth_bearer, check->oauth_bearer)) { + /* one of them was different */ continue; -#ifdef USE_SSH - else if(get_protocol_family(needle->handler) & PROTO_FAMILY_SSH) { - if(!ssh_config_matches(needle, check)) - continue; } + } + + /* GSS delegation differences do not actually affect every connection + and auth method, but this check takes precaution before efficiency */ + if(needle->gssapi_delegation != check->gssapi_delegation) + continue; + + /* If looking for HTTP and the HTTP version we want is less + * than the HTTP version of the check connection, continue looking */ + if((needle->handler->protocol & PROTO_FAMILY_HTTP) && + (((check->httpversion >= 20) && + (data->state.httpwant < CURL_HTTP_VERSION_2_0)) + || ((check->httpversion >= 30) && + (data->state.httpwant < CURL_HTTP_VERSION_3)))) + continue; +#ifdef USE_SSH + else if(get_protocol_family(needle->handler) & PROTO_FAMILY_SSH) { + if(!ssh_config_matches(needle, check)) + continue; + } #endif #ifndef CURL_DISABLE_FTP - else if(get_protocol_family(needle->handler) & PROTO_FAMILY_FTP) { - /* Also match ACCOUNT, ALTERNATIVE-TO-USER, USE_SSL and CCC options */ - if(Curl_timestrcmp(needle->proto.ftpc.account, - check->proto.ftpc.account) || - Curl_timestrcmp(needle->proto.ftpc.alternative_to_user, - check->proto.ftpc.alternative_to_user) || - (needle->proto.ftpc.use_ssl != check->proto.ftpc.use_ssl) || - (needle->proto.ftpc.ccc != check->proto.ftpc.ccc)) - continue; - } + else if(get_protocol_family(needle->handler) & PROTO_FAMILY_FTP) { + /* Also match ACCOUNT, ALTERNATIVE-TO-USER, USE_SSL and CCC options */ + if(Curl_timestrcmp(needle->proto.ftpc.account, + check->proto.ftpc.account) || + Curl_timestrcmp(needle->proto.ftpc.alternative_to_user, + check->proto.ftpc.alternative_to_user) || + (needle->proto.ftpc.use_ssl != check->proto.ftpc.use_ssl) || + (needle->proto.ftpc.ccc != check->proto.ftpc.ccc)) + continue; + } #endif - if((needle->handler->flags&PROTOPT_SSL) + /* Additional match requirements if talking TLS OR + * not talking to a HTTP proxy OR using a tunnel through a proxy */ + if((needle->handler->flags&PROTOPT_SSL) #ifndef CURL_DISABLE_PROXY - || !needle->bits.httpproxy || needle->bits.tunnel_proxy -#endif - ) { - /* The requested connection does not use an HTTP proxy or it uses SSL - or it is a non-SSL protocol tunneled or it is a non-SSL protocol - which is allowed to be upgraded via TLS */ - - if((strcasecompare(needle->handler->scheme, check->handler->scheme) || - (get_protocol_family(check->handler) == - needle->handler->protocol && check->bits.tls_upgraded)) && - (!needle->bits.conn_to_host || strcasecompare( - needle->conn_to_host.name, check->conn_to_host.name)) && - (!needle->bits.conn_to_port || - needle->conn_to_port == check->conn_to_port) && - strcasecompare(needle->host.name, check->host.name) && - needle->remote_port == check->remote_port) { - /* The schemes match or the protocol family is the same and the - previous connection was TLS upgraded, and the hostname and host - port match */ - if(needle->handler->flags & PROTOPT_SSL) { - /* This is a SSL connection so verify that we're using the same - SSL options as well */ - if(!Curl_ssl_config_matches(&needle->ssl_config, - &check->ssl_config)) { - DEBUGF(infof(data, - "Connection #%" CURL_FORMAT_CURL_OFF_T - " has different SSL parameters, can't reuse", - check->connection_id)); - continue; - } - } - match = TRUE; - } - } - else { - /* The requested connection is using the same HTTP proxy in normal - mode (no tunneling) */ - match = TRUE; + || !needle->bits.httpproxy || needle->bits.tunnel_proxy +#endif + ) { + /* Talking the same protocol scheme or a TLS upgraded protocol in the + * same protocol family? */ + if(!strcasecompare(needle->handler->scheme, check->handler->scheme) && + (get_protocol_family(check->handler) != + needle->handler->protocol || !check->bits.tls_upgraded)) + continue; + + /* If needle has "conn_to_*" set, check must match this */ + if((needle->bits.conn_to_host && !strcasecompare( + needle->conn_to_host.name, check->conn_to_host.name)) || + (needle->bits.conn_to_port && + needle->conn_to_port != check->conn_to_port)) + continue; + + /* hostname and port must match */ + if(!strcasecompare(needle->host.name, check->host.name) || + needle->remote_port != check->remote_port) + continue; + + /* If talking TLS, check needs to use the same SSL options. */ + if((needle->handler->flags & PROTOPT_SSL) && + !Curl_ssl_conn_config_match(data, check, FALSE)) { + DEBUGF(infof(data, + "Connection #%" CURL_FORMAT_CURL_OFF_T + " has different SSL parameters, can't reuse", + check->connection_id)); + continue; } + } - if(match) { #if defined(USE_NTLM) - /* If we are looking for an HTTP+NTLM connection, check if this is - already authenticating with the right credentials. If not, keep - looking so that we can reuse NTLM connections if - possible. (Especially we must not reuse the same connection if - partway through a handshake!) */ - if(wantNTLMhttp) { - if(Curl_timestrcmp(needle->user, check->user) || - Curl_timestrcmp(needle->passwd, check->passwd)) { - - /* we prefer a credential match, but this is at least a connection - that can be reused and "upgraded" to NTLM */ - if(check->http_ntlm_state == NTLMSTATE_NONE) - chosen = check; - continue; - } - } - else if(check->http_ntlm_state != NTLMSTATE_NONE) { - /* Connection is using NTLM auth but we don't want NTLM */ - continue; - } - -#ifndef CURL_DISABLE_PROXY - /* Same for Proxy NTLM authentication */ - if(wantProxyNTLMhttp) { - /* Both check->http_proxy.user and check->http_proxy.passwd can be - * NULL */ - if(!check->http_proxy.user || !check->http_proxy.passwd) - continue; - - if(Curl_timestrcmp(needle->http_proxy.user, - check->http_proxy.user) || - Curl_timestrcmp(needle->http_proxy.passwd, - check->http_proxy.passwd)) - continue; - } - else if(check->proxy_ntlm_state != NTLMSTATE_NONE) { - /* Proxy connection is using NTLM auth but we don't want NTLM */ - continue; - } -#endif - if(wantNTLMhttp || wantProxyNTLMhttp) { - /* Credentials are already checked, we can use this connection */ + /* If we are looking for an HTTP+NTLM connection, check if this is + already authenticating with the right credentials. If not, keep + looking so that we can reuse NTLM connections if + possible. (Especially we must not reuse the same connection if + partway through a handshake!) */ + if(wantNTLMhttp) { + if(Curl_timestrcmp(needle->user, check->user) || + Curl_timestrcmp(needle->passwd, check->passwd)) { + + /* we prefer a credential match, but this is at least a connection + that can be reused and "upgraded" to NTLM */ + if(check->http_ntlm_state == NTLMSTATE_NONE) chosen = check; + continue; + } + } + else if(check->http_ntlm_state != NTLMSTATE_NONE) { + /* Connection is using NTLM auth but we don't want NTLM */ + continue; + } - if((wantNTLMhttp && - (check->http_ntlm_state != NTLMSTATE_NONE)) || - (wantProxyNTLMhttp && - (check->proxy_ntlm_state != NTLMSTATE_NONE))) { - /* We must use this connection, no other */ - *force_reuse = TRUE; - break; - } +#ifndef CURL_DISABLE_PROXY + /* Same for Proxy NTLM authentication */ + if(wantProxyNTLMhttp) { + /* Both check->http_proxy.user and check->http_proxy.passwd can be + * NULL */ + if(!check->http_proxy.user || !check->http_proxy.passwd) + continue; - /* Continue look up for a better connection */ - continue; - } + if(Curl_timestrcmp(needle->http_proxy.user, + check->http_proxy.user) || + Curl_timestrcmp(needle->http_proxy.passwd, + check->http_proxy.passwd)) + continue; + } + else if(check->proxy_ntlm_state != NTLMSTATE_NONE) { + /* Proxy connection is using NTLM auth but we don't want NTLM */ + continue; + } +#endif + if(wantNTLMhttp || wantProxyNTLMhttp) { + /* Credentials are already checked, we may use this connection. + * With NTLM being weird as it is, we MUST use a + * connection where it has already been fully negotiated. + * If it has not, we keep on looking for a better one. */ + chosen = check; + + if((wantNTLMhttp && + (check->http_ntlm_state != NTLMSTATE_NONE)) || + (wantProxyNTLMhttp && + (check->proxy_ntlm_state != NTLMSTATE_NONE))) { + /* We must use this connection, no other */ + *force_reuse = TRUE; + break; + } + /* Continue look up for a better connection */ + continue; + } #endif - if(canmultiplex) { - /* We can multiplex if we want to. Let's continue looking for - the optimal connection to use. */ - - if(!multiplexed) { - /* We have the optimal connection. Let's stop looking. */ - chosen = check; - break; - } -#ifdef USE_NGHTTP2 - /* If multiplexed, make sure we don't go over concurrency limit */ - if(check->bits.multiplex) { - if(multiplexed >= Curl_conn_get_max_concurrent(data, check, - FIRSTSOCKET)) { - infof(data, "MAX_CONCURRENT_STREAMS reached, skip (%zu)", - multiplexed); - continue; - } - else if(multiplexed >= - Curl_multi_max_concurrent_streams(data->multi)) { - infof(data, "client side MAX_CONCURRENT_STREAMS reached" - ", skip (%zu)", - multiplexed); - continue; - } - } -#endif - /* When not multiplexed, we have a match here! */ - chosen = check; - infof(data, "Multiplexed connection found"); - break; - } - else { - /* We have found a connection. Let's stop searching. */ - chosen = check; - break; - } + if(CONN_INUSE(check)) { + DEBUGASSERT(canmultiplex); + DEBUGASSERT(check->bits.multiplex); + /* If multiplexed, make sure we don't go over concurrency limit */ + if(CONN_INUSE(check) >= + Curl_multi_max_concurrent_streams(data->multi)) { + infof(data, "client side MAX_CONCURRENT_STREAMS reached" + ", skip (%zu)", CONN_INUSE(check)); + continue; } + if(CONN_INUSE(check) >= + Curl_conn_get_max_concurrent(data, check, FIRSTSOCKET)) { + infof(data, "MAX_CONCURRENT_STREAMS reached, skip (%zu)", + CONN_INUSE(check)); + continue; + } + /* When not multiplexed, we have a match here! */ + infof(data, "Multiplexed connection found"); + } + else if(extract_if_dead(check, data)) { + /* disconnect it */ + Curl_disconnect(data, check, TRUE); + continue; } - } + + /* We have found a connection. Let's stop searching. */ + chosen = check; + break; + } /* loop over connection bundle */ if(chosen) { /* mark it as used before releasing the lock */ @@ -1560,17 +1390,6 @@ static struct connectdata *allocate_conn(struct Curl_easy *data) #ifndef CURL_DISABLE_FTP conn->bits.ftp_use_epsv = data->set.ftp_use_epsv; conn->bits.ftp_use_eprt = data->set.ftp_use_eprt; -#endif - conn->ssl_config.verifystatus = data->set.ssl.primary.verifystatus; - conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer; - conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost; - conn->ssl_config.ssl_options = data->set.ssl.primary.ssl_options; -#ifndef CURL_DISABLE_PROXY - conn->proxy_ssl_config.verifystatus = - data->set.proxy_ssl.primary.verifystatus; - conn->proxy_ssl_config.verifypeer = data->set.proxy_ssl.primary.verifypeer; - conn->proxy_ssl_config.verifyhost = data->set.proxy_ssl.primary.verifyhost; - conn->proxy_ssl_config.ssl_options = data->set.proxy_ssl.primary.ssl_options; #endif conn->ip_version = data->set.ipver; conn->connect_only = data->set.connect_only; @@ -1615,30 +1434,231 @@ static struct connectdata *allocate_conn(struct Curl_easy *data) return NULL; } -/* returns the handler if the given scheme is built-in */ -const struct Curl_handler *Curl_builtin_scheme(const char *scheme, - size_t schemelen) +const struct Curl_handler *Curl_get_scheme_handler(const char *scheme) { - const struct Curl_handler * const *pp; - const struct Curl_handler *p; - /* Scan protocol handler table and match against 'scheme'. The handler may - be changed later when the protocol specific setup function is called. */ - if(schemelen == CURL_ZERO_TERMINATED) - schemelen = strlen(scheme); - for(pp = protocols; (p = *pp) != NULL; pp++) - if(strncasecompare(p->scheme, scheme, schemelen) && !p->scheme[schemelen]) - /* Protocol found in table. */ - return p; - return NULL; /* not found */ + return Curl_getn_scheme_handler(scheme, strlen(scheme)); } +/* returns the handler if the given scheme is built-in */ +const struct Curl_handler *Curl_getn_scheme_handler(const char *scheme, + size_t len) +{ + /* table generated by schemetable.c: + 1. gcc schemetable.c && ./a.out + 2. check how small the table gets + 3. tweak the hash algorithm, then rerun from 1 + 4. when the table is good enough + 5. copy the table into this source code + 6. make sure this function uses the same hash function that worked for + schemetable.c + 7. if needed, adjust the #ifdefs in schemetable.c and rerun + */ + static const struct Curl_handler * const protocols[67] = { +#ifndef CURL_DISABLE_FILE + &Curl_handler_file, +#else + NULL, +#endif + NULL, NULL, +#if defined(USE_SSL) && !defined(CURL_DISABLE_GOPHER) + &Curl_handler_gophers, +#else + NULL, +#endif + NULL, +#ifdef USE_LIBRTMP + &Curl_handler_rtmpe, +#else + NULL, +#endif +#ifndef CURL_DISABLE_SMTP + &Curl_handler_smtp, +#else + NULL, +#endif +#if defined(USE_SSH) + &Curl_handler_sftp, +#else + NULL, +#endif +#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \ + (SIZEOF_CURL_OFF_T > 4) + &Curl_handler_smb, +#else + NULL, +#endif +#if defined(USE_SSL) && !defined(CURL_DISABLE_SMTP) + &Curl_handler_smtps, +#else + NULL, +#endif +#ifndef CURL_DISABLE_TELNET + &Curl_handler_telnet, +#else + NULL, +#endif +#ifndef CURL_DISABLE_GOPHER + &Curl_handler_gopher, +#else + NULL, +#endif +#ifndef CURL_DISABLE_TFTP + &Curl_handler_tftp, +#else + NULL, +#endif + NULL, NULL, NULL, +#if defined(USE_SSL) && !defined(CURL_DISABLE_FTP) + &Curl_handler_ftps, +#else + NULL, +#endif +#ifndef CURL_DISABLE_HTTP + &Curl_handler_http, +#else + NULL, +#endif +#ifndef CURL_DISABLE_IMAP + &Curl_handler_imap, +#else + NULL, +#endif +#ifdef USE_LIBRTMP + &Curl_handler_rtmps, +#else + NULL, +#endif +#ifdef USE_LIBRTMP + &Curl_handler_rtmpt, +#else + NULL, +#endif + NULL, NULL, NULL, +#if !defined(CURL_DISABLE_LDAP) && \ + !defined(CURL_DISABLE_LDAPS) && \ + ((defined(USE_OPENLDAP) && defined(USE_SSL)) || \ + (!defined(USE_OPENLDAP) && defined(HAVE_LDAP_SSL))) + &Curl_handler_ldaps, +#else + NULL, +#endif +#if defined(USE_WEBSOCKETS) && \ + defined(USE_SSL) && !defined(CURL_DISABLE_HTTP) + &Curl_handler_wss, +#else + NULL, +#endif +#if defined(USE_SSL) && !defined(CURL_DISABLE_HTTP) + &Curl_handler_https, +#else + NULL, +#endif + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, +#ifndef CURL_DISABLE_RTSP + &Curl_handler_rtsp, +#else + NULL, +#endif +#if defined(USE_SSL) && !defined(CURL_DISABLE_SMB) && \ + defined(USE_CURL_NTLM_CORE) && (SIZEOF_CURL_OFF_T > 4) + &Curl_handler_smbs, +#else + NULL, +#endif +#if defined(USE_SSH) && !defined(USE_WOLFSSH) + &Curl_handler_scp, +#else + NULL, +#endif + NULL, NULL, NULL, +#ifndef CURL_DISABLE_POP3 + &Curl_handler_pop3, +#else + NULL, +#endif + NULL, NULL, +#ifdef USE_LIBRTMP + &Curl_handler_rtmp, +#else + NULL, +#endif + NULL, NULL, NULL, +#ifdef USE_LIBRTMP + &Curl_handler_rtmpte, +#else + NULL, +#endif + NULL, NULL, NULL, +#ifndef CURL_DISABLE_DICT + &Curl_handler_dict, +#else + NULL, +#endif + NULL, NULL, NULL, +#ifndef CURL_DISABLE_MQTT + &Curl_handler_mqtt, +#else + NULL, +#endif +#if defined(USE_SSL) && !defined(CURL_DISABLE_POP3) + &Curl_handler_pop3s, +#else + NULL, +#endif +#if defined(USE_SSL) && !defined(CURL_DISABLE_IMAP) + &Curl_handler_imaps, +#else + NULL, +#endif + NULL, +#if defined(USE_WEBSOCKETS) && !defined(CURL_DISABLE_HTTP) + &Curl_handler_ws, +#else + NULL, +#endif + NULL, +#ifdef USE_LIBRTMP + &Curl_handler_rtmpts, +#else + NULL, +#endif +#ifndef CURL_DISABLE_LDAP + &Curl_handler_ldap, +#else + NULL, +#endif + NULL, NULL, +#ifndef CURL_DISABLE_FTP + &Curl_handler_ftp, +#else + NULL, +#endif + }; + + if(len && (len <= 7)) { + const char *s = scheme; + size_t l = len; + const struct Curl_handler *h; + unsigned int c = 978; + while(l) { + c <<= 5; + c += Curl_raw_tolower(*s); + s++; + l--; + } + + h = protocols[c % 67]; + if(h && strncasecompare(scheme, h->scheme, len) && !h->scheme[len]) + return h; + } + return NULL; +} static CURLcode findprotocol(struct Curl_easy *data, struct connectdata *conn, const char *protostr) { - const struct Curl_handler *p = Curl_builtin_scheme(protostr, - CURL_ZERO_TERMINATED); + const struct Curl_handler *p = Curl_get_scheme_handler(protostr); if(p && /* Protocol found in table. Check if allowed */ (data->set.allowed_protocols & p->protocol)) { @@ -1652,7 +1672,6 @@ static CURLcode findprotocol(struct Curl_easy *data, else { /* Perform setup complement if some. */ conn->handler = conn->given = p; - /* 'port' and 'remote_port' are set in setup_connection_internals() */ return CURLE_OK; } @@ -1705,14 +1724,14 @@ static void zonefrom_url(CURLU *uh, struct Curl_easy *data, conn->scope_id = (unsigned int)scope; #if defined(HAVE_IF_NAMETOINDEX) else { -#elif defined(WIN32) +#elif defined(_WIN32) else if(Curl_if_nametoindex) { #endif -#if defined(HAVE_IF_NAMETOINDEX) || defined(WIN32) +#if defined(HAVE_IF_NAMETOINDEX) || defined(_WIN32) /* Zone identifier is not numeric */ unsigned int scopeidx = 0; -#if defined(WIN32) +#if defined(_WIN32) scopeidx = Curl_if_nametoindex(zoneid); #else scopeidx = if_nametoindex(zoneid); @@ -1727,7 +1746,7 @@ static void zonefrom_url(CURLU *uh, struct Curl_easy *data, else conn->scope_id = scopeidx; } -#endif /* HAVE_IF_NAMETOINDEX || WIN32 */ +#endif /* HAVE_IF_NAMETOINDEX || _WIN32 */ free(zoneid); } @@ -3596,85 +3615,10 @@ static CURLcode create_conn(struct Curl_easy *data, conn->send[SECONDARYSOCKET] = Curl_conn_send; conn->bits.tcp_fastopen = data->set.tcp_fastopen; - /* Get a cloned copy of the SSL config situation stored in the - connection struct. But to get this going nicely, we must first make - sure that the strings in the master copy are pointing to the correct - strings in the session handle strings array! - - Keep in mind that the pointers in the master copy are pointing to strings - that will be freed as part of the Curl_easy struct, but all cloned - copies will be separately allocated. - */ - data->set.ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH]; - data->set.ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE]; - data->set.ssl.primary.issuercert = data->set.str[STRING_SSL_ISSUERCERT]; - data->set.ssl.primary.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT]; - data->set.ssl.primary.cipher_list = - data->set.str[STRING_SSL_CIPHER_LIST]; - data->set.ssl.primary.cipher_list13 = - data->set.str[STRING_SSL_CIPHER13_LIST]; - data->set.ssl.primary.pinned_key = - data->set.str[STRING_SSL_PINNEDPUBLICKEY]; - data->set.ssl.primary.cert_blob = data->set.blobs[BLOB_CERT]; - data->set.ssl.primary.ca_info_blob = data->set.blobs[BLOB_CAINFO]; - data->set.ssl.primary.curves = data->set.str[STRING_SSL_EC_CURVES]; - -#ifndef CURL_DISABLE_PROXY - data->set.proxy_ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_PROXY]; - data->set.proxy_ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE_PROXY]; - data->set.proxy_ssl.primary.cipher_list = - data->set.str[STRING_SSL_CIPHER_LIST_PROXY]; - data->set.proxy_ssl.primary.cipher_list13 = - data->set.str[STRING_SSL_CIPHER13_LIST_PROXY]; - data->set.proxy_ssl.primary.pinned_key = - data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]; - data->set.proxy_ssl.primary.cert_blob = data->set.blobs[BLOB_CERT_PROXY]; - data->set.proxy_ssl.primary.ca_info_blob = - data->set.blobs[BLOB_CAINFO_PROXY]; - data->set.proxy_ssl.primary.issuercert = - data->set.str[STRING_SSL_ISSUERCERT_PROXY]; - data->set.proxy_ssl.primary.issuercert_blob = - data->set.blobs[BLOB_SSL_ISSUERCERT_PROXY]; - data->set.proxy_ssl.primary.CRLfile = - data->set.str[STRING_SSL_CRLFILE_PROXY]; - data->set.proxy_ssl.cert_type = data->set.str[STRING_CERT_TYPE_PROXY]; - data->set.proxy_ssl.key = data->set.str[STRING_KEY_PROXY]; - data->set.proxy_ssl.key_type = data->set.str[STRING_KEY_TYPE_PROXY]; - data->set.proxy_ssl.key_passwd = data->set.str[STRING_KEY_PASSWD_PROXY]; - data->set.proxy_ssl.primary.clientcert = data->set.str[STRING_CERT_PROXY]; - data->set.proxy_ssl.key_blob = data->set.blobs[BLOB_KEY_PROXY]; -#endif - data->set.ssl.primary.CRLfile = data->set.str[STRING_SSL_CRLFILE]; - data->set.ssl.cert_type = data->set.str[STRING_CERT_TYPE]; - data->set.ssl.key = data->set.str[STRING_KEY]; - data->set.ssl.key_type = data->set.str[STRING_KEY_TYPE]; - data->set.ssl.key_passwd = data->set.str[STRING_KEY_PASSWD]; - data->set.ssl.primary.clientcert = data->set.str[STRING_CERT]; -#ifdef USE_TLS_SRP - data->set.ssl.primary.username = data->set.str[STRING_TLSAUTH_USERNAME]; - data->set.ssl.primary.password = data->set.str[STRING_TLSAUTH_PASSWORD]; -#ifndef CURL_DISABLE_PROXY - data->set.proxy_ssl.primary.username = - data->set.str[STRING_TLSAUTH_USERNAME_PROXY]; - data->set.proxy_ssl.primary.password = - data->set.str[STRING_TLSAUTH_PASSWORD_PROXY]; -#endif -#endif - data->set.ssl.key_blob = data->set.blobs[BLOB_KEY]; - - if(!Curl_clone_primary_ssl_config(&data->set.ssl.primary, - &conn->ssl_config)) { - result = CURLE_OUT_OF_MEMORY; - goto out; - } - -#ifndef CURL_DISABLE_PROXY - if(!Curl_clone_primary_ssl_config(&data->set.proxy_ssl.primary, - &conn->proxy_ssl_config)) { - result = CURLE_OUT_OF_MEMORY; + /* Complete the easy's SSL configuration for connection cache matching */ + result = Curl_ssl_easy_config_complete(data); + if(result) goto out; - } -#endif prune_dead_connections(data); @@ -3789,7 +3733,41 @@ static CURLcode create_conn(struct Curl_easy *data, * This is a brand new connection, so let's store it in the connection * cache of ours! */ + result = Curl_ssl_conn_config_init(data, conn); + if(result) { + DEBUGF(fprintf(stderr, "Error: init connection ssl config\n")); + goto out; + } + + result = Curl_resolver_init(data, &conn->resolve_async.resolver); + if(result) { + DEBUGF(fprintf(stderr, "Error: resolver_init failed\n")); + goto out; + } + Curl_attach_connection(data, conn); + +#ifdef USE_ARES + result = Curl_set_dns_servers(data, data->set.str[STRING_DNS_SERVERS]); + if(result && result != CURLE_NOT_BUILT_IN) + goto out; + + result = Curl_set_dns_interface(data, + data->set.str[STRING_DNS_INTERFACE]); + if(result && result != CURLE_NOT_BUILT_IN) + goto out; + + result = Curl_set_dns_local_ip4(data, + data->set.str[STRING_DNS_LOCAL_IP4]); + if(result && result != CURLE_NOT_BUILT_IN) + goto out; + + result = Curl_set_dns_local_ip6(data, + data->set.str[STRING_DNS_LOCAL_IP6]); + if(result && result != CURLE_NOT_BUILT_IN) + goto out; +#endif /* USE_ARES */ + result = Curl_conncache_add_conn(data); if(result) goto out; @@ -3976,6 +3954,7 @@ CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn) k->bytecount = 0; k->ignorebody = FALSE; + Curl_client_cleanup(data); Curl_speedinit(data); Curl_pgrsSetUploadCounter(data, 0); Curl_pgrsSetDownloadCounter(data, 0); diff --git a/external/curl/lib/url.h b/external/curl/lib/url.h index f6a5b2573..7c1a29bc3 100644 --- a/external/curl/lib/url.h +++ b/external/curl/lib/url.h @@ -46,8 +46,13 @@ CURLcode Curl_parse_login_details(const char *login, const size_t len, char **userptr, char **passwdptr, char **optionsptr); -const struct Curl_handler *Curl_builtin_scheme(const char *scheme, - size_t schemelen); +/* Get protocol handler for a URI scheme + * @param scheme URI scheme, case-insensitive + * @return NULL of handler not found + */ +const struct Curl_handler *Curl_get_scheme_handler(const char *scheme); +const struct Curl_handler *Curl_getn_scheme_handler(const char *scheme, + size_t len); #define CURL_DEFAULT_PROXY_PORT 1080 /* default proxy port unless specified */ #define CURL_DEFAULT_HTTPS_PROXY_PORT 443 /* default https proxy port unless diff --git a/external/curl/lib/urlapi.c b/external/curl/lib/urlapi.c index 4efab611c..0d11e48c9 100644 --- a/external/curl/lib/urlapi.c +++ b/external/curl/lib/urlapi.c @@ -206,7 +206,7 @@ size_t Curl_is_absolute_url(const char *url, char *buf, size_t buflen, (void)buflen; /* only used in debug-builds */ if(buf) buf[0] = 0; /* always leave a defined value in buf */ -#ifdef WIN32 +#ifdef _WIN32 if(guess_scheme && STARTS_WITH_DRIVE_PREFIX(url)) return 0; #endif @@ -446,7 +446,7 @@ static CURLUcode parse_hostname_login(struct Curl_URL *u, /* if this is a known scheme, get some details */ if(u->scheme) - h = Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED); + h = Curl_get_scheme_handler(u->scheme); /* We could use the login information in the URL so extract it. Only parse options if the handler says we should. Note that 'h' might be NULL! */ @@ -1056,7 +1056,7 @@ static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags) ptr += 9; /* now points to the slash after the host */ } else { -#if defined(WIN32) +#if defined(_WIN32) size_t len; /* the host name, NetBIOS computer name, can not contain disallowed @@ -1095,7 +1095,7 @@ static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags) /* no host for file: URLs by default */ Curl_dyn_reset(&host); -#if !defined(MSDOS) && !defined(WIN32) && !defined(__CYGWIN__) +#if !defined(_WIN32) && !defined(MSDOS) && !defined(__CYGWIN__) /* Don't allow Windows drive letters when not in Windows. * This catches both "file:/c:" and "file:c:" */ if(('/' == path[0] && STARTS_WITH_URL_DRIVE_PREFIX(&path[1])) || @@ -1129,7 +1129,7 @@ static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags) } schemep = schemebuf; - if(!Curl_builtin_scheme(schemep, CURL_ZERO_TERMINATED) && + if(!Curl_get_scheme_handler(schemep) && !(flags & CURLU_NON_SUPPORT_SCHEME)) { result = CURLUE_UNSUPPORTED_SCHEME; goto fail; @@ -1224,14 +1224,14 @@ static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags) if(flags & CURLU_URLENCODE) { struct dynbuf enc; Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH); - if(urlencode_str(&enc, fragment + 1, fraglen, TRUE, FALSE)) { + if(urlencode_str(&enc, fragment + 1, fraglen - 1, TRUE, FALSE)) { result = CURLUE_OUT_OF_MEMORY; goto fail; } u->fragment = Curl_dyn_ptr(&enc); } else { - u->fragment = Curl_memdup(fragment + 1, fraglen); + u->fragment = Curl_strndup(fragment + 1, fraglen - 1); if(!u->fragment) { result = CURLUE_OUT_OF_MEMORY; goto fail; @@ -1260,12 +1260,11 @@ static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags) u->query = Curl_dyn_ptr(&enc); } else { - u->query = Curl_memdup(query + 1, qlen); + u->query = Curl_strndup(query + 1, qlen - 1); if(!u->query) { result = CURLUE_OUT_OF_MEMORY; goto fail; } - u->query[qlen - 1] = 0; } } else { @@ -1295,12 +1294,11 @@ static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags) } else { if(!u->path) { - u->path = Curl_memdup(path, pathlen + 1); + u->path = Curl_strndup(path, pathlen); if(!u->path) { result = CURLUE_OUT_OF_MEMORY; goto fail; } - u->path[pathlen] = 0; path = u->path; } else if(flags & CURLU_URLENCODE) @@ -1352,7 +1350,7 @@ static CURLUcode parseurl_and_replace(const char *url, CURLU *u, */ CURLU *curl_url(void) { - return calloc(sizeof(struct Curl_URL), 1); + return calloc(1, sizeof(struct Curl_URL)); } void curl_url_cleanup(CURLU *u) @@ -1374,7 +1372,7 @@ void curl_url_cleanup(CURLU *u) CURLU *curl_url_dup(const CURLU *in) { - struct Curl_URL *u = calloc(sizeof(struct Curl_URL), 1); + struct Curl_URL *u = calloc(1, sizeof(struct Curl_URL)); if(u) { DUP(u, in, scheme); DUP(u, in, user); @@ -1447,8 +1445,7 @@ CURLUcode curl_url_get(const CURLU *u, CURLUPart what, if(!ptr && (flags & CURLU_DEFAULT_PORT) && u->scheme) { /* there's no stored port number, but asked to deliver a default one for the scheme */ - const struct Curl_handler *h = - Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED); + const struct Curl_handler *h = Curl_get_scheme_handler(u->scheme); if(h) { msnprintf(portbuf, sizeof(portbuf), "%u", h->defport); ptr = portbuf; @@ -1457,8 +1454,7 @@ CURLUcode curl_url_get(const CURLU *u, CURLUPart what, else if(ptr && u->scheme) { /* there is a stored port number, but ask to inhibit if it matches the default one for the scheme */ - const struct Curl_handler *h = - Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED); + const struct Curl_handler *h = Curl_get_scheme_handler(u->scheme); if(h && (h->defport == u->portnum) && (flags & CURLU_NO_DEFAULT_PORT)) ptr = NULL; @@ -1503,7 +1499,7 @@ CURLUcode curl_url_get(const CURLU *u, CURLUPart what, else return CURLUE_NO_SCHEME; - h = Curl_builtin_scheme(scheme, CURL_ZERO_TERMINATED); + h = Curl_get_scheme_handler(scheme); if(!port && (flags & CURLU_DEFAULT_PORT)) { /* there's no stored port number, but asked to deliver a default one for the scheme */ @@ -1596,7 +1592,7 @@ CURLUcode curl_url_get(const CURLU *u, CURLUPart what, if(ptr) { size_t partlen = strlen(ptr); size_t i = 0; - *part = Curl_memdup(ptr, partlen + 1); + *part = Curl_strndup(ptr, partlen); if(!*part) return CURLUE_OUT_OF_MEMORY; if(plusdecode) { @@ -1743,9 +1739,8 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what, if((plen > MAX_SCHEME_LEN) || (plen < 1)) /* too long or too short */ return CURLUE_BAD_SCHEME; - if(!(flags & CURLU_NON_SUPPORT_SCHEME) && - /* verify that it is a fine scheme */ - !Curl_builtin_scheme(part, CURL_ZERO_TERMINATED)) + /* verify that it is a fine scheme */ + if(!(flags & CURLU_NON_SUPPORT_SCHEME) && !Curl_get_scheme_handler(part)) return CURLUE_UNSUPPORTED_SCHEME; storep = &u->scheme; urlencode = FALSE; /* never */ @@ -1905,7 +1900,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what, } newp = Curl_dyn_ptr(&enc); - if(appendquery) { + if(appendquery && newp) { /* Append the 'newp' string onto the old query. Add a '&' separator if none is present at the end of the existing query already */ @@ -1934,8 +1929,8 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what, } } - if(what == CURLUPART_HOST) { - size_t n = strlen(newp); + else if(what == CURLUPART_HOST) { + size_t n = Curl_dyn_len(&enc); if(!n && (flags & CURLU_NO_AUTHORITY)) { /* Skip hostname check, it's allowed to be empty. */ } diff --git a/external/curl/lib/urldata.h b/external/curl/lib/urldata.h index dff26e6b4..ff661482e 100644 --- a/external/curl/lib/urldata.h +++ b/external/curl/lib/urldata.h @@ -266,6 +266,13 @@ typedef enum { /* SSL backend-specific data; declared differently by each SSL backend */ struct ssl_backend_data; +struct ssl_peer { + char *hostname; /* hostname for verification */ + char *dispname; /* display version of hostname */ + char *sni; /* SNI version of hostname or NULL if not usable */ + BIT(is_ip_address); /* if hostname is an IPv4|6 address */ +}; + struct ssl_primary_config { char *CApath; /* certificate dir (doesn't work on windows) */ char *CAfile; /* certificate to verify peer against */ @@ -571,6 +578,13 @@ struct hostname { #define KEEP_RECVBITS (KEEP_RECV | KEEP_RECV_HOLD | KEEP_RECV_PAUSE) #define KEEP_SENDBITS (KEEP_SEND | KEEP_SEND_HOLD | KEEP_SEND_PAUSE) +/* transfer wants to send is not PAUSE or HOLD */ +#define CURL_WANT_SEND(data) \ + (((data)->req.keepon & KEEP_SENDBITS) == KEEP_SEND) +/* transfer receive is not on PAUSE or HOLD */ +#define CURL_WANT_RECV(data) \ + (!((data)->req.keepon & (KEEP_RECV_PAUSE|KEEP_RECV_HOLD))) + #if defined(CURLRES_ASYNCH) || !defined(CURL_DISABLE_DOH) #define USE_CURL_ASYNC struct Curl_async { @@ -589,6 +603,15 @@ struct Curl_async { #define FIRSTSOCKET 0 #define SECONDARYSOCKET 1 +/* Polling requested by an easy handle. + * `action` is CURL_POLL_IN, CURL_POLL_OUT or CURL_POLL_INOUT. + */ +struct easy_pollset { + curl_socket_t sockets[MAX_SOCKSPEREASYHANDLE]; + unsigned int num; + unsigned char actions[MAX_SOCKSPEREASYHANDLE]; +}; + enum expect100 { EXP100_SEND_DATA, /* enough waiting, just send the body now */ EXP100_AWAITING_CONTINUE, /* waiting for the 100 Continue header */ @@ -649,16 +672,8 @@ struct SingleRequest { counter to make only a 100 reply (without a following second response code) result in a CURLE_GOT_NOTHING error code */ - enum { - HEADER_NORMAL, /* no bad header at all */ - HEADER_PARTHEADER, /* part of the chunk is a bad header, the rest - is normal data */ - HEADER_ALLBAD /* all was believed to be header */ - } badheader; /* the header was deemed bad and will be - written as body */ int headerline; /* counts header lines to better track the first one */ - char *str; /* within buf */ curl_off_t offset; /* possible resume offset read from the Content-Range: header */ int httpcode; /* error code from the 'HTTP/1.? XXX' or @@ -669,7 +684,7 @@ struct SingleRequest { enum upgrade101 upgr101; /* 101 upgrade state */ /* Content unencoding stack. See sec 3.5, RFC2616. */ - struct contenc_writer *writer_stack; + struct Curl_cwriter *writer_stack; time_t timeofdoc; long bodywrites; char *location; /* This points to an allocated version of the Location: @@ -706,16 +721,20 @@ struct SingleRequest { #ifndef CURL_DISABLE_DOH struct dohdata *doh; /* DoH specific data for this request */ #endif -#if defined(WIN32) && defined(USE_WINSOCK) +#if defined(_WIN32) && defined(USE_WINSOCK) struct curltime last_sndbuf_update; /* last time readwrite_upload called win_update_buffer_size */ #endif + char fread_eof[2]; /* the body read callback (index 0) returned EOF or + the trailer read callback (index 1) returned EOF */ #ifndef CURL_DISABLE_COOKIES unsigned char setcookies; #endif unsigned char writer_stack_depth; /* Unencoding stack depth. */ BIT(header); /* incoming data has HTTP header */ + BIT(badheader); /* header parsing found sth not a header */ BIT(content_range); /* set TRUE if Content-Range: was found */ + BIT(download_done); /* set to TRUE when download is complete */ BIT(upload_done); /* set to TRUE when doing chunked transfer-encoding upload and we're uploading the last chunk */ BIT(ignorebody); /* we read a response-body but we ignore it! */ @@ -799,7 +818,8 @@ struct Curl_handler { /* If used, this function gets called from transfer.c:readwrite_data() to allow the protocol to do extra reads/writes */ CURLcode (*readwrite)(struct Curl_easy *data, struct connectdata *conn, - ssize_t *nread, bool *readmore); + const char *buf, size_t blen, + size_t *pconsumed, bool *readmore); /* This function can perform various checks on the connection. See CONNCHECK_* for more information about the checks that can be performed, @@ -901,6 +921,9 @@ struct connectdata { multi_done(). This entry will be NULL if the connection is reused as then there is no name resolve done. */ struct Curl_dns_entry *dns_entry; +#ifdef USE_CURL_ASYNC + struct Curl_async resolve_async; /* asynchronous name resolver data */ +#endif /* 'remote_addr' is the particular IP we connected to. it is owned, set * and NULLed by the connected socket filter (if there is one). */ @@ -1325,7 +1348,8 @@ struct UrlState { curl_off_t recent_conn_id; /* The most recent connection used, might no * longer exist */ struct dynbuf headerb; /* buffer to store headers in */ - + struct curl_slist *hstslist; /* list of HSTS files set by + curl_easy_setopt(HSTS) calls */ char *buffer; /* download buffer */ char *ulbuf; /* allocated upload buffer or NULL */ curl_off_t current_speed; /* the ProgressShow() function sets this, @@ -1358,9 +1382,6 @@ struct UrlState { #endif struct auth authhost; /* auth details for host */ struct auth authproxy; /* auth details for proxy */ -#ifdef USE_CURL_ASYNC - struct Curl_async async; /* asynchronous name resolver data */ -#endif #if defined(USE_OPENSSL) /* void instead of ENGINE to avoid bleeding OpenSSL into this header */ @@ -1373,7 +1394,7 @@ struct UrlState { /* a place to store the most recently set (S)FTP entrypath */ char *most_recent_ftp_entrypath; -#if !defined(WIN32) && !defined(MSDOS) && !defined(__EMX__) +#if !defined(_WIN32) && !defined(MSDOS) && !defined(__EMX__) /* do FTP line-end conversions on most platforms */ #define CURL_DO_LINEEND_CONV /* for FTP downloads: track CRLF sequences that span blocks */ @@ -1411,7 +1432,7 @@ struct UrlState { this should be dealt with in pretransfer */ #ifndef CURL_DISABLE_HTTP curl_mimepart *mimepost; - curl_mimepart *formp; /* storage for old API form-posting, alloced on + curl_mimepart *formp; /* storage for old API form-posting, allocated on demand */ size_t trailers_bytes_sent; struct dynbuf trailers_buf; /* a buffer containing the compiled trailing @@ -1422,6 +1443,10 @@ struct UrlState { trailers_state trailers_state; /* whether we are sending trailers and what stage are we at */ #endif +#ifndef CURL_DISABLE_COOKIES + struct curl_slist *cookielist; /* list of cookie files set by + curl_easy_setopt(COOKIEFILE) calls */ +#endif #ifdef USE_HYPER bool hconnect; /* set if a CONNECT request */ CURLcode hresult; /* used to pass return codes back from hyper callbacks */ @@ -1498,6 +1523,9 @@ struct UrlState { though it will be discarded. We must call the data rewind callback before trying to send again. */ BIT(upload); /* upload request */ + BIT(internal); /* internal: true if this easy handle was created for + internal use and the user does not have ownership of the + handle. */ }; /* @@ -1674,13 +1702,7 @@ struct UserDefined { void *prereq_userp; /* pre-initial request user data */ void *seek_client; /* pointer to pass to the seek callback */ -#ifndef CURL_DISABLE_COOKIES - struct curl_slist *cookielist; /* list of cookie files set by - curl_easy_setopt(COOKIEFILE) calls */ -#endif #ifndef CURL_DISABLE_HSTS - struct curl_slist *hstslist; /* list of HSTS files set by - curl_easy_setopt(HSTS) calls */ curl_hstsread_callback hsts_read; void *hsts_read_userp; curl_hstswrite_callback hsts_write; @@ -1780,9 +1802,6 @@ struct UserDefined { #endif curl_prot_t allowed_protocols; curl_prot_t redir_protocols; -#ifndef CURL_DISABLE_MIME - unsigned int mime_options; /* Mime option flags. */ -#endif #ifndef CURL_DISABLE_RTSP void *rtp_out; /* write RTP to this if non-NULL */ /* Common RTSP header options */ @@ -1805,8 +1824,6 @@ struct UserDefined { int tcp_keepidle; /* seconds in idle before sending keepalive probe */ int tcp_keepintvl; /* seconds between TCP keepalive probes */ - size_t maxconnects; /* Max idle connections in the connection cache */ - long expect_100_timeout; /* in milliseconds */ #if defined(USE_HTTP2) || defined(USE_HTTP3) struct Curl_data_priority priority; @@ -1831,10 +1848,14 @@ struct UserDefined { BIT(mail_rcpt_allowfails); /* allow RCPT TO command to fail for some recipients */ #endif + unsigned int maxconnects; /* Max idle connections in the connection cache */ unsigned char use_ssl; /* if AUTH TLS is to be attempted etc, for FTP or IMAP or POP3 or others! (type: curl_usessl)*/ unsigned char connect_only; /* make connection/request, then let application use the socket */ +#ifndef CURL_DISABLE_MIME + BIT(mime_formescape); +#endif BIT(is_fread_set); /* has read callback been set to non-NULL? */ #ifndef CURL_DISABLE_TFTP BIT(tftp_no_options); /* do not send TFTP options requests */ @@ -1971,10 +1992,7 @@ struct Curl_easy { particular order. Note that all sockets are added to the sockhash, where the state etc are also kept. This array is mostly used to detect when a socket is to be removed from the hash. See singlesocket(). */ - curl_socket_t sockets[MAX_SOCKSPEREASYHANDLE]; - unsigned char actions[MAX_SOCKSPEREASYHANDLE]; /* action for each socket in - sockets[] */ - int numsocks; + struct easy_pollset last_poll; struct Names dns; struct Curl_multi *multi; /* if non-NULL, points to the multi handle @@ -2013,10 +2031,6 @@ struct Curl_easy { #ifdef USE_HYPER struct hyptransfer hyp; #endif - - /* internal: true if this easy handle was created for internal use and the - user does not have ownership of the handle. */ - bool internal; }; #define LIBCURL_NAME "libcurl" diff --git a/external/curl/lib/vauth/digest.c b/external/curl/lib/vauth/digest.c index 12c6f7dd5..416da0fcc 100644 --- a/external/curl/lib/vauth/digest.c +++ b/external/curl/lib/vauth/digest.c @@ -125,7 +125,6 @@ bool Curl_auth_digest_get_pair(const char *str, char *value, char *content, } else return FALSE; - break; } } diff --git a/external/curl/lib/version.c b/external/curl/lib/version.c index 47304259e..f957f085d 100644 --- a/external/curl/lib/version.c +++ b/external/curl/lib/version.c @@ -39,7 +39,7 @@ #ifdef USE_ARES # if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) && \ - defined(WIN32) + defined(_WIN32) # define CARES_STATICLIB # endif # include @@ -409,7 +409,8 @@ static int idn_present(curl_version_info_data *info) #define idn_present NULL #endif -#if defined(USE_SSL) && !defined(CURL_DISABLE_PROXY) +#if defined(USE_SSL) && !defined(CURL_DISABLE_PROXY) && \ + !defined(CURL_DISABLE_HTTP) static int https_proxy_present(curl_version_info_data *info) { (void) info; @@ -454,13 +455,14 @@ static const struct feat features_table[] = { #ifndef CURL_DISABLE_HSTS FEATURE("HSTS", NULL, CURL_VERSION_HSTS), #endif -#if defined(USE_NGHTTP2) || defined(USE_HYPER) +#if defined(USE_NGHTTP2) FEATURE("HTTP2", NULL, CURL_VERSION_HTTP2), #endif #if defined(ENABLE_QUIC) FEATURE("HTTP3", NULL, CURL_VERSION_HTTP3), #endif -#if defined(USE_SSL) && !defined(CURL_DISABLE_PROXY) +#if defined(USE_SSL) && !defined(CURL_DISABLE_PROXY) && \ + !defined(CURL_DISABLE_HTTP) FEATURE("HTTPS-proxy", https_proxy_present, CURL_VERSION_HTTPS_PROXY), #endif #if defined(USE_LIBIDN2) || defined(USE_WIN32_IDN) @@ -510,7 +512,7 @@ static const struct feat features_table[] = { #ifdef CURLDEBUG FEATURE("TrackMemory", NULL, CURL_VERSION_CURLDEBUG), #endif -#if defined(WIN32) && defined(UNICODE) && defined(_UNICODE) +#if defined(_WIN32) && defined(UNICODE) && defined(_UNICODE) FEATURE("Unicode", NULL, CURL_VERSION_UNICODE), #endif #ifdef USE_UNIX_SOCKETS diff --git a/external/curl/lib/version_win32.c b/external/curl/lib/version_win32.c index 872d5b4f3..e0f239e15 100644 --- a/external/curl/lib/version_win32.c +++ b/external/curl/lib/version_win32.c @@ -24,7 +24,7 @@ #include "curl_setup.h" -#if defined(WIN32) +#if defined(_WIN32) #include #include "version_win32.h" @@ -316,4 +316,4 @@ bool curlx_verify_windows_version(const unsigned int majorVersion, return matched; } -#endif /* WIN32 */ +#endif /* _WIN32 */ diff --git a/external/curl/lib/version_win32.h b/external/curl/lib/version_win32.h index 3899174a3..95c066112 100644 --- a/external/curl/lib/version_win32.h +++ b/external/curl/lib/version_win32.h @@ -26,7 +26,7 @@ #include "curl_setup.h" -#if defined(WIN32) +#if defined(_WIN32) /* Version condition */ typedef enum { @@ -51,6 +51,6 @@ bool curlx_verify_windows_version(const unsigned int majorVersion, const PlatformIdentifier platform, const VersionCondition condition); -#endif /* WIN32 */ +#endif /* _WIN32 */ #endif /* HEADER_CURL_VERSION_WIN32_H */ diff --git a/external/curl/lib/vquic/curl_msh3.c b/external/curl/lib/vquic/curl_msh3.c index 6bd0d2331..8ae367240 100644 --- a/external/curl/lib/vquic/curl_msh3.c +++ b/external/curl/lib/vquic/curl_msh3.c @@ -38,6 +38,7 @@ #include "http1.h" #include "curl_msh3.h" #include "socketpair.h" +#include "vtls/vtls.h" #include "vquic/vquic.h" /* The last 3 #include files should be in this order */ @@ -45,6 +46,10 @@ #include "curl_memory.h" #include "memdebug.h" +#ifdef CURL_DISABLE_SOCKETPAIR +#error "MSH3 cannot be build with CURL_DISABLE_SOCKETPAIR set" +#endif + #define H3_STREAM_WINDOW_SIZE (128 * 1024) #define H3_STREAM_CHUNK_SIZE (16 * 1024) #define H3_STREAM_RECV_CHUNKS \ @@ -672,31 +677,25 @@ static ssize_t cf_msh3_send(struct Curl_cfilter *cf, struct Curl_easy *data, return nwritten; } -static int cf_msh3_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks) +static void cf_msh3_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) { struct cf_msh3_ctx *ctx = cf->ctx; struct stream_ctx *stream = H3_STREAM_CTX(data); - int bitmap = GETSOCK_BLANK; struct cf_call_data save; CF_DATA_SAVE(save, cf, data); if(stream && ctx->sock[SP_LOCAL] != CURL_SOCKET_BAD) { - socks[0] = ctx->sock[SP_LOCAL]; - if(stream->recv_error) { - bitmap |= GETSOCK_READSOCK(0); + Curl_pollset_add_in(data, ps, ctx->sock[SP_LOCAL]); drain_stream(cf, data); } else if(stream->req) { - bitmap |= GETSOCK_READSOCK(0); + Curl_pollset_add_out(data, ps, ctx->sock[SP_LOCAL]); drain_stream(cf, data); } } - CURL_TRC_CF(data, cf, "select_sock -> %d", bitmap); - CF_DATA_RESTORE(cf, save); - return bitmap; } static bool cf_msh3_data_pending(struct Curl_cfilter *cf, @@ -802,14 +801,20 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf, struct Curl_easy *data) { struct cf_msh3_ctx *ctx = cf->ctx; - bool verify = !!cf->conn->ssl_config.verifypeer; + struct ssl_primary_config *conn_config; MSH3_ADDR addr = {0}; CURLcode result; + bool verify; + + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) + return CURLE_FAILED_INIT; + verify = !!conn_config->verifypeer; memcpy(&addr, &ctx->addr.sa_addr, ctx->addr.addrlen); MSH3_SET_PORT(&addr, (uint16_t)cf->conn->remote_port); - if(verify && (cf->conn->ssl_config.CAfile || cf->conn->ssl_config.CApath)) { + if(verify && (conn_config->CAfile || conn_config->CApath)) { /* TODO: need a way to provide trust anchors to MSH3 */ #ifdef DEBUGBUILD /* we need this for our test cases to run */ @@ -1025,7 +1030,7 @@ struct Curl_cftype Curl_cft_http3 = { cf_msh3_connect, cf_msh3_close, Curl_cf_def_get_host, - cf_msh3_get_select_socks, + cf_msh3_adjust_pollset, cf_msh3_data_pending, cf_msh3_send, cf_msh3_recv, @@ -1047,7 +1052,7 @@ CURLcode Curl_cf_msh3_create(struct Curl_cfilter **pcf, (void)data; (void)conn; (void)ai; /* TODO: msh3 resolves itself? */ - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/lib/vquic/curl_ngtcp2.c b/external/curl/lib/vquic/curl_ngtcp2.c index 7d681e585..f09b10bef 100644 --- a/external/curl/lib/vquic/curl_ngtcp2.c +++ b/external/curl/lib/vquic/curl_ngtcp2.c @@ -78,7 +78,6 @@ #define QUIC_MAX_STREAMS (256*1024) #define QUIC_MAX_DATA (1*1024*1024) -#define QUIC_IDLE_TIMEOUT (60*NGTCP2_SECONDS) #define QUIC_HANDSHAKE_TIMEOUT (10*NGTCP2_SECONDS) /* A stream window is the maximum amount we need to buffer for @@ -134,6 +133,7 @@ void Curl_ngtcp2_ver(char *p, size_t len) struct cf_ngtcp2_ctx { struct cf_quic_ctx q; + struct ssl_peer peer; ngtcp2_path connected_path; ngtcp2_conn *qconn; ngtcp2_cid dcid; @@ -161,6 +161,7 @@ struct cf_ngtcp2_ctx { struct curltime reconnect_at; /* time the next attempt should start */ struct bufc_pool stream_bufcp; /* chunk pool for streams */ size_t max_stream_window; /* max flow window for one stream */ + uint64_t max_idle_ms; /* max idle time for QUIC connection */ int qlogfd; BIT(got_first_byte); /* if first byte was received */ #ifdef USE_OPENSSL @@ -191,6 +192,7 @@ struct h3_stream_ctx { bool closed; /* TRUE on stream close */ bool reset; /* TRUE on stream reset */ bool send_closed; /* stream is local closed */ + BIT(quic_flow_blocked); /* stream is blocked by QUIC flow control */ }; #define H3_STREAM_CTX(d) ((struct h3_stream_ctx *)(((d) && (d)->req.p.http)? \ @@ -236,11 +238,21 @@ static CURLcode h3_data_setup(struct Curl_cfilter *cf, static void h3_data_done(struct Curl_cfilter *cf, struct Curl_easy *data) { + struct cf_ngtcp2_ctx *ctx = cf->ctx; struct h3_stream_ctx *stream = H3_STREAM_CTX(data); (void)cf; if(stream) { CURL_TRC_CF(data, cf, "[%"PRId64"] easy handle is done", stream->id); + if(ctx->h3conn && !stream->closed) { + nghttp3_conn_shutdown_stream_read(ctx->h3conn, stream->id); + nghttp3_conn_close_stream(ctx->h3conn, stream->id, + NGHTTP3_H3_REQUEST_CANCELLED); + nghttp3_conn_set_stream_user_data(ctx->h3conn, stream->id, NULL); + ngtcp2_conn_set_stream_user_data(ctx->qconn, stream->id, NULL); + stream->closed = TRUE; + } + Curl_bufq_free(&stream->sendbuf); Curl_bufq_free(&stream->recvbuf); Curl_h1_req_parse_free(&stream->h1); @@ -249,6 +261,43 @@ static void h3_data_done(struct Curl_cfilter *cf, struct Curl_easy *data) } } +static struct Curl_easy *get_stream_easy(struct Curl_cfilter *cf, + struct Curl_easy *data, + int64_t stream_id) +{ + struct Curl_easy *sdata; + + (void)cf; + if(H3_STREAM_ID(data) == stream_id) { + return data; + } + else { + DEBUGASSERT(data->multi); + for(sdata = data->multi->easyp; sdata; sdata = sdata->next) { + if((sdata->conn == data->conn) && H3_STREAM_ID(sdata) == stream_id) { + return sdata; + } + } + } + return NULL; +} + +static void h3_drain_stream(struct Curl_cfilter *cf, + struct Curl_easy *data) +{ + struct h3_stream_ctx *stream = H3_STREAM_CTX(data); + unsigned char bits; + + (void)cf; + bits = CURL_CSELECT_IN; + if(stream && stream->upload_left && !stream->send_closed) + bits |= CURL_CSELECT_OUT; + if(data->state.dselect_bits != bits) { + data->state.dselect_bits = bits; + Curl_expire(data, 0, EXPIRE_RUN_NOW); + } +} + /* ngtcp2 default congestion controller does not perform pacing. Limit the maximum packet burst to MAX_PKT_BURST packets. */ #define MAX_PKT_BURST 10 @@ -261,10 +310,14 @@ struct pkt_io_ctx { ngtcp2_path_storage ps; }; -static ngtcp2_tstamp timestamp(void) +static void pktx_update_time(struct pkt_io_ctx *pktx, + struct Curl_cfilter *cf) { - struct curltime ct = Curl_now(); - return ct.tv_sec * NGTCP2_SECONDS + ct.tv_usec * NGTCP2_MICROSECONDS; + struct cf_ngtcp2_ctx *ctx = cf->ctx; + + vquic_ctx_update_time(&ctx->q); + pktx->ts = ctx->q.last_op.tv_sec * NGTCP2_SECONDS + + ctx->q.last_op.tv_usec * NGTCP2_MICROSECONDS; } static void pktx_init(struct pkt_io_ctx *pktx, @@ -273,9 +326,9 @@ static void pktx_init(struct pkt_io_ctx *pktx, { pktx->cf = cf; pktx->data = data; - pktx->ts = timestamp(); pktx->pkt_count = 0; ngtcp2_path_storage_zero(&pktx->ps); + pktx_update_time(pktx, cf); } static CURLcode cf_progress_ingress(struct Curl_cfilter *cf, @@ -354,7 +407,7 @@ static void quic_settings(struct cf_ngtcp2_ctx *ctx, t->initial_max_stream_data_uni = ctx->max_stream_window; t->initial_max_streams_bidi = QUIC_MAX_STREAMS; t->initial_max_streams_uni = QUIC_MAX_STREAMS; - t->max_idle_timeout = QUIC_IDLE_TIMEOUT; + t->max_idle_timeout = (ctx->max_idle_ms * NGTCP2_MILLISECONDS); if(ctx->qlogfd != -1) { s->qlog_write = qlog_callback; } @@ -398,14 +451,19 @@ static CURLcode quic_ssl_ctx(SSL_CTX **pssl_ctx, struct Curl_cfilter *cf, struct Curl_easy *data) { struct cf_ngtcp2_ctx *ctx = cf->ctx; - struct connectdata *conn = cf->conn; + struct ssl_primary_config *conn_config; CURLcode result = CURLE_FAILED_INIT; - SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method()); + SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method()); if(!ssl_ctx) { result = CURLE_OUT_OF_MEMORY; goto out; } + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) { + result = CURLE_FAILED_INIT; + goto out; + } #if defined(OPENSSL_IS_BORINGSSL) || defined(OPENSSL_IS_AWSLC) if(ngtcp2_crypto_boringssl_configure_client_context(ssl_ctx) != 0) { @@ -422,8 +480,8 @@ static CURLcode quic_ssl_ctx(SSL_CTX **pssl_ctx, SSL_CTX_set_default_verify_paths(ssl_ctx); { - const char *curves = conn->ssl_config.curves ? - conn->ssl_config.curves : QUIC_GROUPS; + const char *curves = conn_config->curves ? + conn_config->curves : QUIC_GROUPS; if(!SSL_CTX_set1_curves_list(ssl_ctx, curves)) { failf(data, "failed setting curves list for QUIC: '%s'", curves); return CURLE_SSL_CIPHER; @@ -432,8 +490,8 @@ static CURLcode quic_ssl_ctx(SSL_CTX **pssl_ctx, #ifndef OPENSSL_IS_BORINGSSL { - const char *ciphers13 = conn->ssl_config.cipher_list13 ? - conn->ssl_config.cipher_list13 : QUIC_CIPHERS; + const char *ciphers13 = conn_config->cipher_list13 ? + conn_config->cipher_list13 : QUIC_CIPHERS; if(SSL_CTX_set_ciphersuites(ssl_ctx, ciphers13) != 1) { failf(data, "failed setting QUIC cipher suite: %s", ciphers13); return CURLE_SSL_CIPHER; @@ -452,7 +510,7 @@ static CURLcode quic_ssl_ctx(SSL_CTX **pssl_ctx, * fail to connect if the verification fails, or if it should continue * anyway. In the latter case the result of the verification is checked with * SSL_get_verify_result() below. */ - SSL_CTX_set_verify(ssl_ctx, conn->ssl_config.verifypeer ? + SSL_CTX_set_verify(ssl_ctx, conn_config->verifypeer ? SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL); /* give application a chance to interfere with SSL set up. */ @@ -491,7 +549,7 @@ static CURLcode quic_set_client_cert(struct Curl_cfilter *cf, SSL_CTX *ssl_ctx = ctx->sslctx; const struct ssl_config_data *ssl_config; - ssl_config = Curl_ssl_get_config(data, FIRSTSOCKET); + ssl_config = Curl_ssl_cf_get_config(cf, data); DEBUGASSERT(ssl_config); if(ssl_config->primary.clientcert || ssl_config->primary.cert_blob @@ -514,7 +572,6 @@ static CURLcode quic_init_ssl(struct Curl_cfilter *cf, struct cf_ngtcp2_ctx *ctx = cf->ctx; const uint8_t *alpn = NULL; size_t alpnlen = 0; - unsigned char checkip[16]; DEBUGASSERT(!ctx->ssl); ctx->ssl = SSL_new(ctx->sslctx); @@ -529,13 +586,8 @@ static CURLcode quic_init_ssl(struct Curl_cfilter *cf, SSL_set_alpn_protos(ctx->ssl, alpn, (int)alpnlen); /* set SNI */ - if((0 == Curl_inet_pton(AF_INET, cf->conn->host.name, checkip)) -#ifdef ENABLE_IPV6 - && (0 == Curl_inet_pton(AF_INET6, cf->conn->host.name, checkip)) -#endif - ) { - char *snihost = Curl_ssl_snihost(data, cf->conn->host.name, NULL); - if(!snihost || !SSL_set_tlsext_host_name(ctx->ssl, snihost)) { + if(ctx->peer.sni) { + if(!SSL_set_tlsext_host_name(ctx->ssl, ctx->peer.sni)) { failf(data, "Failed set SNI"); SSL_free(ctx->ssl); ctx->ssl = NULL; @@ -549,20 +601,24 @@ static CURLcode quic_init_ssl(struct Curl_cfilter *cf, struct Curl_easy *data) { struct cf_ngtcp2_ctx *ctx = cf->ctx; + struct ssl_primary_config *conn_config; CURLcode result; gnutls_datum_t alpn[2]; /* this will need some attention when HTTPS proxy over QUIC get fixed */ - const char * const hostname = cf->conn->host.name; long * const pverifyresult = &data->set.ssl.certverifyresult; int rc; + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) + return CURLE_FAILED_INIT; + DEBUGASSERT(ctx->gtls == NULL); ctx->gtls = calloc(1, sizeof(*(ctx->gtls))); if(!ctx->gtls) return CURLE_OUT_OF_MEMORY; - result = gtls_client_init(data, &cf->conn->ssl_config, &data->set.ssl, - hostname, ctx->gtls, pverifyresult); + result = gtls_client_init(data, conn_config, &data->set.ssl, + &ctx->peer, ctx->gtls, pverifyresult); if(result) return result; @@ -602,10 +658,17 @@ static CURLcode quic_init_ssl(struct Curl_cfilter *cf, static CURLcode quic_ssl_ctx(WOLFSSL_CTX **pssl_ctx, struct Curl_cfilter *cf, struct Curl_easy *data) { - struct connectdata *conn = cf->conn; CURLcode result = CURLE_FAILED_INIT; - WOLFSSL_CTX *ssl_ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method()); + struct ssl_primary_config *conn_config; + WOLFSSL_CTX *ssl_ctx = NULL; + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) { + result = CURLE_FAILED_INIT; + goto out; + } + + ssl_ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method()); if(!ssl_ctx) { result = CURLE_OUT_OF_MEMORY; goto out; @@ -613,13 +676,14 @@ static CURLcode quic_ssl_ctx(WOLFSSL_CTX **pssl_ctx, if(ngtcp2_crypto_wolfssl_configure_client_context(ssl_ctx) != 0) { failf(data, "ngtcp2_crypto_wolfssl_configure_client_context failed"); + result = CURLE_FAILED_INIT; goto out; } wolfSSL_CTX_set_default_verify_paths(ssl_ctx); - if(wolfSSL_CTX_set_cipher_list(ssl_ctx, conn->ssl_config.cipher_list13 ? - conn->ssl_config.cipher_list13 : + if(wolfSSL_CTX_set_cipher_list(ssl_ctx, conn_config->cipher_list13 ? + conn_config->cipher_list13 : QUIC_CIPHERS) != 1) { char error_buffer[256]; ERR_error_string_n(ERR_get_error(), error_buffer, sizeof(error_buffer)); @@ -627,8 +691,8 @@ static CURLcode quic_ssl_ctx(WOLFSSL_CTX **pssl_ctx, goto out; } - if(wolfSSL_CTX_set1_groups_list(ssl_ctx, conn->ssl_config.curves ? - conn->ssl_config.curves : + if(wolfSSL_CTX_set1_groups_list(ssl_ctx, conn_config->curves ? + conn_config->curves : (char *)QUIC_GROUPS) != 1) { failf(data, "wolfSSL failed to set curves"); goto out; @@ -645,9 +709,9 @@ static CURLcode quic_ssl_ctx(WOLFSSL_CTX **pssl_ctx, #endif } - if(conn->ssl_config.verifypeer) { - const char * const ssl_cafile = conn->ssl_config.CAfile; - const char * const ssl_capath = conn->ssl_config.CApath; + if(conn_config->verifypeer) { + const char * const ssl_cafile = conn_config->CAfile; + const char * const ssl_capath = conn_config->CApath; wolfSSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL); if(ssl_cafile || ssl_capath) { @@ -786,6 +850,12 @@ static int cb_recv_stream_data(ngtcp2_conn *tconn, uint32_t flags, CURL_TRC_CF(data, cf, "[%" PRId64 "] read_stream(len=%zu) -> %zd", stream_id, buflen, nconsumed); if(nconsumed < 0) { + if(!data) { + struct Curl_easy *cdata = CF_DATA_CURRENT(cf); + CURL_TRC_CF(cdata, cf, "[%" PRId64 "] nghttp3 error on stream not " + "used by us, ignored", stream_id); + return 0; + } ngtcp2_ccerr_set_application_error( &ctx->last_error, nghttp3_err_infer_quic_app_error_code((int)nconsumed), NULL, 0); @@ -816,7 +886,7 @@ cb_acked_stream_data_offset(ngtcp2_conn *tconn, int64_t stream_id, (void)stream_user_data; rv = nghttp3_conn_add_ack_offset(ctx->h3conn, stream_id, datalen); - if(rv) { + if(rv && rv != NGHTTP3_ERR_STREAM_NOT_FOUND) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -844,7 +914,7 @@ static int cb_stream_close(ngtcp2_conn *tconn, uint32_t flags, app_error_code); CURL_TRC_CF(data, cf, "[%" PRId64 "] quic close(err=%" PRIu64 ") -> %d", stream3_id, app_error_code, rv); - if(rv) { + if(rv && rv != NGHTTP3_ERR_STREAM_NOT_FOUND) { ngtcp2_ccerr_set_application_error( &ctx->last_error, nghttp3_err_infer_quic_app_error_code(rv), NULL, 0); return NGTCP2_ERR_CALLBACK_FAILURE; @@ -868,7 +938,7 @@ static int cb_stream_reset(ngtcp2_conn *tconn, int64_t stream_id, rv = nghttp3_conn_shutdown_stream_read(ctx->h3conn, stream_id); CURL_TRC_CF(data, cf, "[%" PRId64 "] reset -> %d", stream_id, rv); - if(rv) { + if(rv && rv != NGHTTP3_ERR_STREAM_NOT_FOUND) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -887,7 +957,7 @@ static int cb_stream_stop_sending(ngtcp2_conn *tconn, int64_t stream_id, (void)stream_user_data; rv = nghttp3_conn_shutdown_stream_read(ctx->h3conn, stream_id); - if(rv) { + if(rv && rv != NGHTTP3_ERR_STREAM_NOT_FOUND) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -911,16 +981,25 @@ static int cb_extend_max_stream_data(ngtcp2_conn *tconn, int64_t stream_id, { struct Curl_cfilter *cf = user_data; struct cf_ngtcp2_ctx *ctx = cf->ctx; + struct Curl_easy *data = CF_DATA_CURRENT(cf); + struct Curl_easy *s_data; + struct h3_stream_ctx *stream; int rv; (void)tconn; (void)max_data; (void)stream_user_data; rv = nghttp3_conn_unblock_stream(ctx->h3conn, stream_id); - if(rv) { + if(rv && rv != NGHTTP3_ERR_STREAM_NOT_FOUND) { return NGTCP2_ERR_CALLBACK_FAILURE; } - + s_data = get_stream_easy(cf, data, stream_id); + stream = H3_STREAM_CTX(s_data); + if(stream && stream->quic_flow_blocked) { + CURL_TRC_CF(data, cf, "[%" PRId64 "] unblock quic flow", stream_id); + stream->quic_flow_blocked = FALSE; + h3_drain_stream(cf, data); + } return 0; } @@ -1038,7 +1117,7 @@ static CURLcode check_and_set_expiry(struct Curl_cfilter *cf, pktx = &local_pktx; } else { - pktx->ts = timestamp(); + pktx_update_time(pktx, cf); } expiry = ngtcp2_conn_get_expiry(ctx->qconn); @@ -1073,46 +1152,29 @@ static CURLcode check_and_set_expiry(struct Curl_cfilter *cf, return CURLE_OK; } -static int cf_ngtcp2_get_select_socks(struct Curl_cfilter *cf, +static void cf_ngtcp2_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { struct cf_ngtcp2_ctx *ctx = cf->ctx; - struct SingleRequest *k = &data->req; - int rv = GETSOCK_BLANK; - struct h3_stream_ctx *stream = H3_STREAM_CTX(data); - struct cf_call_data save; - - CF_DATA_SAVE(save, cf, data); - socks[0] = ctx->q.sockfd; + bool want_recv = CURL_WANT_RECV(data); + bool want_send = CURL_WANT_SEND(data); - /* in HTTP/3 we can always get a frame, so check read */ - rv |= GETSOCK_READSOCK(0); - - /* we're still uploading or the HTTP/2 layer wants to send data */ - if((k->keepon & KEEP_SENDBITS) == KEEP_SEND && - ngtcp2_conn_get_cwnd_left(ctx->qconn) && - ngtcp2_conn_get_max_data_left(ctx->qconn) && - stream && nghttp3_conn_is_stream_writable(ctx->h3conn, stream->id)) - rv |= GETSOCK_WRITESOCK(0); - - CF_DATA_RESTORE(cf, save); - return rv; -} - -static void h3_drain_stream(struct Curl_cfilter *cf, - struct Curl_easy *data) -{ - struct h3_stream_ctx *stream = H3_STREAM_CTX(data); - unsigned char bits; + if(ctx->qconn && (want_recv || want_send)) { + struct h3_stream_ctx *stream = H3_STREAM_CTX(data); + struct cf_call_data save; + bool c_exhaust, s_exhaust; - (void)cf; - bits = CURL_CSELECT_IN; - if(stream && stream->upload_left && !stream->send_closed) - bits |= CURL_CSELECT_OUT; - if(data->state.dselect_bits != bits) { - data->state.dselect_bits = bits; - Curl_expire(data, 0, EXPIRE_RUN_NOW); + CF_DATA_SAVE(save, cf, data); + c_exhaust = !ngtcp2_conn_get_cwnd_left(ctx->qconn) || + !ngtcp2_conn_get_max_data_left(ctx->qconn); + s_exhaust = stream && stream->id >= 0 && stream->quic_flow_blocked; + want_recv = (want_recv || c_exhaust || s_exhaust); + want_send = (!s_exhaust && want_send) || + !Curl_bufq_is_empty(&ctx->q.sendbuf); + + Curl_pollset_set(data, ps, ctx->q.sockfd, want_recv, want_send); + CF_DATA_RESTORE(cf, save); } } @@ -1141,7 +1203,6 @@ static int cb_h3_stream_close(nghttp3_conn *conn, int64_t stream_id, else { CURL_TRC_CF(data, cf, "[%" PRId64 "] CLOSED", stream->id); } - data->req.keepon &= ~KEEP_SEND_HOLD; h3_drain_stream(cf, data); return 0; } @@ -1570,15 +1631,9 @@ static int cb_h3_acked_req_body(nghttp3_conn *conn, int64_t stream_id, /* Everything ACKed, we resume upload processing */ if(!stream->sendbuf_len_in_flight) { int rv = nghttp3_conn_resume_stream(conn, stream_id); - if(rv) { + if(rv && rv != NGHTTP3_ERR_STREAM_NOT_FOUND) { return NGTCP2_ERR_CALLBACK_FAILURE; } - if((data->req.keepon & KEEP_SEND_HOLD) && - (data->req.keepon & KEEP_SEND)) { - data->req.keepon &= ~KEEP_SEND_HOLD; - h3_drain_stream(cf, data); - CURL_TRC_CF(data, cf, "[%" PRId64 "] unpausing acks", stream_id); - } } return 0; } @@ -1676,6 +1731,10 @@ static ssize_t h3_stream_open(struct Curl_cfilter *cf, goto out; stream = H3_STREAM_CTX(data); DEBUGASSERT(stream); + if(!stream) { + *err = CURLE_FAILED_INIT; + goto out; + } nwritten = Curl_h1_req_parse_read(&stream->h1, buf, len, NULL, 0, err); if(nwritten < 0) @@ -1711,7 +1770,7 @@ static ssize_t h3_stream_open(struct Curl_cfilter *cf, nva[i].flags = NGHTTP3_NV_FLAG_NONE; } - rc = ngtcp2_conn_open_bidi_stream(ctx->qconn, &stream->id, NULL); + rc = ngtcp2_conn_open_bidi_stream(ctx->qconn, &stream->id, data); if(rc) { failf(data, "can get bidi streams"); *err = CURLE_SEND_ERROR; @@ -1860,15 +1919,13 @@ static ssize_t cf_ngtcp2_send(struct Curl_cfilter *cf, struct Curl_easy *data, if(stream && sent > 0 && stream->sendbuf_len_in_flight) { /* We have unacknowledged DATA and cannot report success to our * caller. Instead we EAGAIN and remember how much we have already - * "written" into our various internal connection buffers. - * We put the stream upload on HOLD, until this gets ACKed. */ + * "written" into our various internal connection buffers. */ stream->upload_blocked_len = sent; CURL_TRC_CF(data, cf, "[%" PRId64 "] cf_send(len=%zu), " "%zu bytes in flight -> EGAIN", stream->id, len, stream->sendbuf_len_in_flight); *err = CURLE_AGAIN; sent = -1; - data->req.keepon |= KEEP_SEND_HOLD; } out: @@ -1887,40 +1944,37 @@ static CURLcode qng_verify_peer(struct Curl_cfilter *cf, struct Curl_easy *data) { struct cf_ngtcp2_ctx *ctx = cf->ctx; + struct ssl_primary_config *conn_config; CURLcode result = CURLE_OK; - const char *hostname, *disp_hostname; - int port; - char *snihost; - Curl_conn_get_host(data, cf->sockindex, &hostname, &disp_hostname, &port); - snihost = Curl_ssl_snihost(data, hostname, NULL); - if(!snihost) - return CURLE_PEER_FAILED_VERIFICATION; + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) + return CURLE_FAILED_INIT; cf->conn->bits.multiplex = TRUE; /* at least potentially multiplexed */ cf->conn->httpversion = 30; cf->conn->bundle->multiuse = BUNDLE_MULTIPLEX; - if(cf->conn->ssl_config.verifyhost) { + if(conn_config->verifyhost) { #ifdef USE_OPENSSL X509 *server_cert; - server_cert = SSL_get_peer_certificate(ctx->ssl); + server_cert = SSL_get1_peer_certificate(ctx->ssl); if(!server_cert) { return CURLE_PEER_FAILED_VERIFICATION; } - result = Curl_ossl_verifyhost(data, cf->conn, server_cert); + result = Curl_ossl_verifyhost(data, cf->conn, &ctx->peer, server_cert); X509_free(server_cert); if(result) return result; #elif defined(USE_GNUTLS) result = Curl_gtls_verifyserver(data, ctx->gtls->session, - &cf->conn->ssl_config, &data->set.ssl, - hostname, disp_hostname, + conn_config, &data->set.ssl, &ctx->peer, data->set.str[STRING_SSL_PINNEDPUBLICKEY]); if(result) return result; #elif defined(USE_WOLFSSL) - if(wolfSSL_check_domain_name(ctx->ssl, snihost) == SSL_FAILURE) + if(!ctx->peer.sni || + wolfSSL_check_domain_name(ctx->ssl, ctx->peer.sni) == SSL_FAILURE) return CURLE_PEER_FAILED_VERIFICATION; #endif infof(data, "Verified certificate just fine"); @@ -1955,8 +2009,8 @@ static CURLcode recv_pkt(const unsigned char *pkt, size_t pktlen, rv = ngtcp2_conn_read_pkt(ctx->qconn, &path, &pi, pkt, pktlen, pktx->ts); if(rv) { - CURL_TRC_CF(pktx->data, pktx->cf, "ingress, read_pkt -> %s", - ngtcp2_strerror(rv)); + CURL_TRC_CF(pktx->data, pktx->cf, "ingress, read_pkt -> %s (%d)", + ngtcp2_strerror(rv), rv); if(!ctx->last_error.error_code) { if(rv == NGTCP2_ERR_CRYPTO) { ngtcp2_ccerr_set_tls_alert(&ctx->last_error, @@ -1993,7 +2047,7 @@ static CURLcode cf_progress_ingress(struct Curl_cfilter *cf, pktx = &local_pktx; } else { - pktx->ts = timestamp(); + pktx_update_time(pktx, cf); } #ifdef USE_OPENSSL @@ -2081,11 +2135,18 @@ static ssize_t read_pkt_to_send(void *userp, } else if(n < 0) { switch(n) { - case NGTCP2_ERR_STREAM_DATA_BLOCKED: + case NGTCP2_ERR_STREAM_DATA_BLOCKED: { + struct h3_stream_ctx *stream = H3_STREAM_CTX(x->data); DEBUGASSERT(ndatalen == -1); nghttp3_conn_block_stream(ctx->h3conn, stream_id); + CURL_TRC_CF(x->data, x->cf, "[%" PRId64 "] block quic flow", + stream_id); + DEBUGASSERT(stream); + if(stream) + stream->quic_flow_blocked = TRUE; n = 0; break; + } case NGTCP2_ERR_STREAM_SHUT_WR: DEBUGASSERT(ndatalen == -1); nghttp3_conn_shutdown_stream_write(ctx->h3conn, stream_id); @@ -2145,7 +2206,7 @@ static CURLcode cf_progress_egress(struct Curl_cfilter *cf, pktx = &local_pktx; } else { - pktx->ts = timestamp(); + pktx_update_time(pktx, cf); ngtcp2_path_storage_zero(&pktx->ps); } @@ -2282,10 +2343,12 @@ static CURLcode cf_ngtcp2_data_event(struct Curl_cfilter *cf, case CF_CTRL_DATA_PAUSE: result = h3_data_pause(cf, data, (arg1 != 0)); break; - case CF_CTRL_DATA_DONE: { + case CF_CTRL_DATA_DETACH: + h3_data_done(cf, data); + break; + case CF_CTRL_DATA_DONE: h3_data_done(cf, data); break; - } case CF_CTRL_DATA_DONE_SEND: { struct h3_stream_ctx *stream = H3_STREAM_CTX(data); if(stream && !stream->send_closed) { @@ -2344,6 +2407,7 @@ static void cf_ngtcp2_ctx_clear(struct cf_ngtcp2_ctx *ctx) if(ctx->qconn) ngtcp2_conn_del(ctx->qconn); Curl_bufcp_free(&ctx->stream_bufcp); + Curl_ssl_peer_cleanup(&ctx->peer); memset(ctx, 0, sizeof(*ctx)); ctx->qlogfd = -1; @@ -2358,15 +2422,15 @@ static void cf_ngtcp2_close(struct Curl_cfilter *cf, struct Curl_easy *data) CF_DATA_SAVE(save, cf, data); if(ctx && ctx->qconn) { char buffer[NGTCP2_MAX_UDP_PAYLOAD_SIZE]; - ngtcp2_tstamp ts; + struct pkt_io_ctx pktx; ngtcp2_ssize rc; CURL_TRC_CF(data, cf, "close"); - ts = timestamp(); + pktx_init(&pktx, cf, data); rc = ngtcp2_conn_write_connection_close(ctx->qconn, NULL, /* path */ NULL, /* pkt_info */ (uint8_t *)buffer, sizeof(buffer), - &ctx->last_error, ts); + &ctx->last_error, pktx.ts); if(rc > 0) { while((send(ctx->q.sockfd, buffer, (SEND_TYPE_ARG3)rc, 0) == -1) && SOCKERRNO == EINTR); @@ -2411,9 +2475,14 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf, ctx->version = NGTCP2_PROTO_VER_MAX; ctx->max_stream_window = H3_STREAM_WINDOW_SIZE; + ctx->max_idle_ms = CURL_QUIC_MAX_IDLE_MS; Curl_bufcp_init(&ctx->stream_bufcp, H3_STREAM_CHUNK_SIZE, H3_STREAM_POOL_SPARES); + result = Curl_ssl_peer_init(&ctx->peer, cf); + if(result) + return result; + #ifdef USE_OPENSSL result = quic_ssl_ctx(&ctx->sslctx, cf, data); if(result) @@ -2559,27 +2628,9 @@ static CURLcode cf_ngtcp2_connect(struct Curl_cfilter *cf, ngtcp2_conn_in_draining_period(ctx->qconn)) { /* When a QUIC server instance is shutting down, it may send us a * CONNECTION_CLOSE right away. Our connection then enters the DRAINING - * state. - * This may be a stopping of the service or it may be that the server - * is reloading and a new instance will start serving soon. - * In any case, we tear down our socket and start over with a new one. - * We re-open the underlying UDP cf right now, but do not start - * connecting until called again. - */ - int reconn_delay_ms = 200; - - CURL_TRC_CF(data, cf, "connect, remote closed, reconnect after %dms", - reconn_delay_ms); - Curl_conn_cf_close(cf->next, data); - cf_ngtcp2_ctx_clear(ctx); - result = Curl_conn_cf_connect(cf->next, data, FALSE, done); - if(!result && *done) { - *done = FALSE; - ctx->reconnect_at = now; - ctx->reconnect_at.tv_usec += reconn_delay_ms * 1000; - Curl_expire(data, reconn_delay_ms, EXPIRE_QUIC); - result = CURLE_OK; - } + * state. The CONNECT may work in the near future again. Indicate + * that as a "weird" reply. */ + result = CURLE_WEIRD_SERVER_REPLY; } #ifndef CURL_DISABLE_VERBOSE_STRINGS @@ -2657,24 +2708,51 @@ static bool cf_ngtcp2_conn_is_alive(struct Curl_cfilter *cf, struct Curl_easy *data, bool *input_pending) { - bool alive = TRUE; + struct cf_ngtcp2_ctx *ctx = cf->ctx; + bool alive = FALSE; + const ngtcp2_transport_params *rp; + struct cf_call_data save; + CF_DATA_SAVE(save, cf, data); *input_pending = FALSE; + if(!ctx->qconn) + goto out; + + /* Both sides of the QUIC connection announce they max idle times in + * the transport parameters. Look at the minimum of both and if + * we exceed this, regard the connection as dead. The other side + * may have completely purged it and will no longer respond + * to any packets from us. */ + rp = ngtcp2_conn_get_remote_transport_params(ctx->qconn); + if(rp) { + timediff_t idletime; + uint64_t idle_ms = ctx->max_idle_ms; + + if(rp->max_idle_timeout && + (rp->max_idle_timeout / NGTCP2_MILLISECONDS) < idle_ms) + idle_ms = (rp->max_idle_timeout / NGTCP2_MILLISECONDS); + idletime = Curl_timediff(Curl_now(), ctx->q.last_io); + if(idletime > 0 && (uint64_t)idletime > idle_ms) + goto out; + } + if(!cf->next || !cf->next->cft->is_alive(cf->next, data, input_pending)) - return FALSE; + goto out; + alive = TRUE; if(*input_pending) { + CURLcode result; /* This happens before we've sent off a request and the connection is not in use by any other transfer, there shouldn't be any data here, only "protocol frames" */ *input_pending = FALSE; - if(cf_progress_ingress(cf, data, NULL)) - alive = FALSE; - else { - alive = TRUE; - } + result = cf_progress_ingress(cf, data, NULL); + CURL_TRC_CF(data, cf, "is_alive, progress ingress -> %d", result); + alive = result? FALSE : TRUE; } +out: + CF_DATA_RESTORE(cf, save); return alive; } @@ -2686,7 +2764,7 @@ struct Curl_cftype Curl_cft_http3 = { cf_ngtcp2_connect, cf_ngtcp2_close, Curl_cf_def_get_host, - cf_ngtcp2_get_select_socks, + cf_ngtcp2_adjust_pollset, cf_ngtcp2_data_pending, cf_ngtcp2_send, cf_ngtcp2_recv, @@ -2706,7 +2784,7 @@ CURLcode Curl_cf_ngtcp2_create(struct Curl_cfilter **pcf, CURLcode result; (void)data; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/lib/vquic/curl_quiche.c b/external/curl/lib/vquic/curl_quiche.c index 3f5d32743..7123d63ca 100644 --- a/external/curl/lib/vquic/curl_quiche.c +++ b/external/curl/lib/vquic/curl_quiche.c @@ -55,10 +55,10 @@ #include "curl_memory.h" #include "memdebug.h" -/* #define DEBUG_QUICHE */ +/* HTTP/3 error values defined in RFC 9114, ch. 8.1 */ +#define CURL_H3_NO_ERROR (0x0100) #define QUIC_MAX_STREAMS (100) -#define QUIC_IDLE_TIMEOUT (60 * 1000) /* milliseconds */ #define H3_STREAM_WINDOW_SIZE (128 * 1024) #define H3_STREAM_CHUNK_SIZE (16 * 1024) @@ -92,6 +92,7 @@ static void keylog_callback(const SSL *ssl, const char *line) struct cf_quiche_ctx { struct cf_quic_ctx q; + struct ssl_peer peer; quiche_conn *qconn; quiche_config *cfg; quiche_h3_conn *h3c; @@ -105,7 +106,7 @@ struct cf_quiche_ctx { struct curltime reconnect_at; /* time the next attempt should start */ struct bufc_pool stream_bufcp; /* chunk pool for streams */ curl_off_t data_recvd; - size_t sends_on_hold; /* # of streams with SEND_HOLD set */ + uint64_t max_idle_ms; /* max idle time for QUIC conn */ BIT(goaway); /* got GOAWAY from server */ BIT(got_first_byte); /* if first byte was received */ BIT(x509_store_setup); /* if x509 store has been set up */ @@ -132,6 +133,8 @@ static void cf_quiche_ctx_clear(struct cf_quiche_ctx *ctx) if(ctx->cfg) quiche_config_free(ctx->cfg); Curl_bufcp_free(&ctx->stream_bufcp); + Curl_ssl_peer_cleanup(&ctx->peer); + memset(ctx, 0, sizeof(*ctx)); } } @@ -140,11 +143,16 @@ static CURLcode quic_x509_store_setup(struct Curl_cfilter *cf, struct Curl_easy *data) { struct cf_quiche_ctx *ctx = cf->ctx; + struct ssl_primary_config *conn_config; + + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) + return CURLE_FAILED_INIT; if(!ctx->x509_store_setup) { - if(cf->conn->ssl_config.verifypeer) { - const char * const ssl_cafile = cf->conn->ssl_config.CAfile; - const char * const ssl_capath = cf->conn->ssl_config.CApath; + if(conn_config->verifypeer) { + const char * const ssl_cafile = conn_config->CAfile; + const char * const ssl_capath = conn_config->CApath; if(ssl_cafile || ssl_capath) { SSL_CTX_set_verify(ctx->sslctx, SSL_VERIFY_PEER, NULL); /* tell OpenSSL where to find CA certificates that are used to verify @@ -177,9 +185,16 @@ static CURLcode quic_x509_store_setup(struct Curl_cfilter *cf, static CURLcode quic_ssl_setup(struct Curl_cfilter *cf, struct Curl_easy *data) { struct cf_quiche_ctx *ctx = cf->ctx; - unsigned char checkip[16]; - struct connectdata *conn = data->conn; - const char *curves = conn->ssl_config.curves; + struct ssl_primary_config *conn_config; + CURLcode result; + + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) + return CURLE_FAILED_INIT; + + result = Curl_ssl_peer_init(&ctx->peer, cf); + if(result) + return result; DEBUGASSERT(!ctx->sslctx); ctx->sslctx = SSL_CTX_new(TLS_method()); @@ -198,8 +213,10 @@ static CURLcode quic_ssl_setup(struct Curl_cfilter *cf, struct Curl_easy *data) SSL_CTX_set_keylog_callback(ctx->sslctx, keylog_callback); } - if(curves && !SSL_CTX_set1_curves_list(ctx->sslctx, curves)) { - failf(data, "failed setting curves list for QUIC: '%s'", curves); + if(conn_config->curves && + !SSL_CTX_set1_curves_list(ctx->sslctx, conn_config->curves)) { + failf(data, "failed setting curves list for QUIC: '%s'", + conn_config->curves); return CURLE_SSL_CIPHER; } @@ -209,13 +226,8 @@ static CURLcode quic_ssl_setup(struct Curl_cfilter *cf, struct Curl_easy *data) SSL_set_app_data(ctx->ssl, cf); - if((0 == Curl_inet_pton(AF_INET, cf->conn->host.name, checkip)) -#ifdef ENABLE_IPV6 - && (0 == Curl_inet_pton(AF_INET6, cf->conn->host.name, checkip)) -#endif - ) { - char *snihost = Curl_ssl_snihost(data, cf->conn->host.name, NULL); - if(!snihost || !SSL_set_tlsext_host_name(ctx->ssl, snihost)) { + if(ctx->peer.sni) { + if(!SSL_set_tlsext_host_name(ctx->ssl, ctx->peer.sni)) { failf(data, "Failed set SNI"); SSL_free(ctx->ssl); ctx->ssl = NULL; @@ -240,6 +252,7 @@ struct stream_ctx { bool send_closed; /* stream is locally closed */ bool resp_hds_complete; /* complete, final response has been received */ bool resp_got_header; /* TRUE when h3 stream has recvd some HEADER */ + BIT(quic_flow_blocked); /* stream is blocked by QUIC flow control */ }; #define H3_STREAM_CTX(d) ((struct stream_ctx *)(((d) && (d)->req.p.http)? \ @@ -249,56 +262,20 @@ struct stream_ctx { #define H3_STREAM_ID(d) (H3_STREAM_CTX(d)? \ H3_STREAM_CTX(d)->id : -2) -static bool stream_send_is_suspended(struct Curl_easy *data) -{ - return (data->req.keepon & KEEP_SEND_HOLD); -} - -static void stream_send_suspend(struct Curl_cfilter *cf, - struct Curl_easy *data) -{ - struct cf_quiche_ctx *ctx = cf->ctx; - - if((data->req.keepon & KEEP_SENDBITS) == KEEP_SEND) { - data->req.keepon |= KEEP_SEND_HOLD; - ++ctx->sends_on_hold; - if(H3_STREAM_ID(data) >= 0) - CURL_TRC_CF(data, cf, "[%"PRId64"] suspend sending", - H3_STREAM_ID(data)); - else - CURL_TRC_CF(data, cf, "[%s] suspend sending", data->state.url); - } -} - -static void stream_send_resume(struct Curl_cfilter *cf, - struct Curl_easy *data) -{ - struct cf_quiche_ctx *ctx = cf->ctx; - - if(stream_send_is_suspended(data)) { - data->req.keepon &= ~KEEP_SEND_HOLD; - --ctx->sends_on_hold; - if(H3_STREAM_ID(data) >= 0) - CURL_TRC_CF(data, cf, "[%"PRId64"] resume sending", - H3_STREAM_ID(data)); - else - CURL_TRC_CF(data, cf, "[%s] resume sending", data->state.url); - Curl_expire(data, 0, EXPIRE_RUN_NOW); - } -} - static void check_resumes(struct Curl_cfilter *cf, struct Curl_easy *data) { - struct cf_quiche_ctx *ctx = cf->ctx; struct Curl_easy *sdata; - - if(ctx->sends_on_hold) { - DEBUGASSERT(data->multi); - for(sdata = data->multi->easyp; - sdata && ctx->sends_on_hold; sdata = sdata->next) { - if(stream_send_is_suspended(sdata)) { - stream_send_resume(cf, sdata); + struct stream_ctx *stream; + + DEBUGASSERT(data->multi); + for(sdata = data->multi->easyp; sdata; sdata = sdata->next) { + if(sdata->conn == data->conn) { + stream = H3_STREAM_CTX(sdata); + if(stream && stream->quic_flow_blocked) { + stream->quic_flow_blocked = FALSE; + Curl_expire(data, 0, EXPIRE_RUN_NOW); + CURL_TRC_CF(data, cf, "[%"PRId64"] unblock", stream->id); } } } @@ -333,9 +310,15 @@ static void h3_data_done(struct Curl_cfilter *cf, struct Curl_easy *data) (void)cf; if(stream) { CURL_TRC_CF(data, cf, "[%"PRId64"] easy handle is done", stream->id); - if(stream_send_is_suspended(data)) { - data->req.keepon &= ~KEEP_SEND_HOLD; - --ctx->sends_on_hold; + if(ctx->qconn && !stream->closed) { + quiche_conn_stream_shutdown(ctx->qconn, stream->id, + QUICHE_SHUTDOWN_READ, CURL_H3_NO_ERROR); + if(!stream->send_closed) { + quiche_conn_stream_shutdown(ctx->qconn, stream->id, + QUICHE_SHUTDOWN_WRITE, CURL_H3_NO_ERROR); + stream->send_closed = TRUE; + } + stream->closed = TRUE; } Curl_bufq_free(&stream->recvbuf); Curl_h1_req_parse_free(&stream->h1); @@ -590,7 +573,6 @@ static CURLcode h3_process_event(struct Curl_cfilter *cf, } stream->closed = TRUE; streamclose(cf->conn, "End of stream"); - data->req.keepon &= ~KEEP_SEND_HOLD; break; case QUICHE_H3_EVENT_GOAWAY: @@ -883,6 +865,8 @@ static ssize_t cf_quiche_recv(struct Curl_cfilter *cf, struct Curl_easy *data, ssize_t nread = -1; CURLcode result; + vquic_ctx_update_time(&ctx->q); + if(!stream) { *err = CURLE_RECV_ERROR; return -1; @@ -1035,9 +1019,8 @@ static ssize_t h3_open_stream(struct Curl_cfilter *cf, if(QUICHE_H3_ERR_STREAM_BLOCKED == stream3_id) { /* quiche seems to report this error if the connection window is * exhausted. Which happens frequently and intermittent. */ - CURL_TRC_CF(data, cf, "send_request(%s) rejected with BLOCKED", - data->state.url); - stream_send_suspend(cf, data); + CURL_TRC_CF(data, cf, "[%"PRId64"] blocked", stream->id); + stream->quic_flow_blocked = TRUE; *err = CURLE_AGAIN; nwritten = -1; goto out; @@ -1081,6 +1064,8 @@ static ssize_t cf_quiche_send(struct Curl_cfilter *cf, struct Curl_easy *data, CURLcode result; ssize_t nwritten; + vquic_ctx_update_time(&ctx->q); + *err = cf_process_ingress(cf, data); if(*err) { nwritten = -1; @@ -1104,7 +1089,7 @@ static ssize_t cf_quiche_send(struct Curl_cfilter *cf, struct Curl_easy *data, if(!quiche_conn_stream_writable(ctx->qconn, stream->id, len)) { CURL_TRC_CF(data, cf, "[%" PRId64 "] send_body(len=%zu) " "-> window exhausted", stream->id, len); - stream_send_suspend(cf, data); + stream->quic_flow_blocked = TRUE; } *err = CURLE_AGAIN; nwritten = -1; @@ -1173,30 +1158,32 @@ static bool stream_is_writeable(struct Curl_cfilter *cf, struct cf_quiche_ctx *ctx = cf->ctx; struct stream_ctx *stream = H3_STREAM_CTX(data); - return stream && - quiche_conn_stream_writable(ctx->qconn, (uint64_t)stream->id, 1); + return stream && (quiche_conn_stream_writable(ctx->qconn, + (uint64_t)stream->id, 1) > 0); } -static int cf_quiche_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks) +static void cf_quiche_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) { struct cf_quiche_ctx *ctx = cf->ctx; - struct SingleRequest *k = &data->req; - int rv = GETSOCK_BLANK; - - socks[0] = ctx->q.sockfd; + bool want_recv = CURL_WANT_RECV(data); + bool want_send = CURL_WANT_SEND(data); - /* in an HTTP/3 connection we can basically always get a frame so we should - always be ready for one */ - rv |= GETSOCK_READSOCK(0); + if(ctx->qconn && (want_recv || want_send)) { + struct stream_ctx *stream = H3_STREAM_CTX(data); + bool c_exhaust, s_exhaust; - /* we're still uploading or the HTTP/3 layer wants to send data */ - if(((k->keepon & KEEP_SENDBITS) == KEEP_SEND) - && stream_is_writeable(cf, data)) - rv |= GETSOCK_WRITESOCK(0); + c_exhaust = FALSE; /* Have not found any call in quiche that tells + us if the connection itself is blocked */ + s_exhaust = stream && stream->id >= 0 && + (stream->quic_flow_blocked || !stream_is_writeable(cf, data)); + want_recv = (want_recv || c_exhaust || s_exhaust); + want_send = (!s_exhaust && want_send) || + !Curl_bufq_is_empty(&ctx->q.sendbuf); - return rv; + Curl_pollset_set(data, ps, ctx->q.sockfd, want_recv, want_send); + } } /* @@ -1238,10 +1225,12 @@ static CURLcode cf_quiche_data_event(struct Curl_cfilter *cf, case CF_CTRL_DATA_PAUSE: result = h3_data_pause(cf, data, (arg1 != 0)); break; - case CF_CTRL_DATA_DONE: { + case CF_CTRL_DATA_DETACH: + h3_data_done(cf, data); + break; + case CF_CTRL_DATA_DONE: h3_data_done(cf, data); break; - } case CF_CTRL_DATA_DONE_SEND: { struct stream_ctx *stream = H3_STREAM_CTX(data); if(stream && !stream->send_closed) { @@ -1276,20 +1265,25 @@ static CURLcode cf_verify_peer(struct Curl_cfilter *cf, struct Curl_easy *data) { struct cf_quiche_ctx *ctx = cf->ctx; + struct ssl_primary_config *conn_config; CURLcode result = CURLE_OK; + conn_config = Curl_ssl_cf_get_primary_config(cf); + if(!conn_config) + return CURLE_FAILED_INIT; + cf->conn->bits.multiplex = TRUE; /* at least potentially multiplexed */ cf->conn->httpversion = 30; cf->conn->bundle->multiuse = BUNDLE_MULTIPLEX; - if(cf->conn->ssl_config.verifyhost) { + if(conn_config->verifyhost) { X509 *server_cert; server_cert = SSL_get_peer_certificate(ctx->ssl); if(!server_cert) { result = CURLE_PEER_FAILED_VERIFICATION; goto out; } - result = Curl_ossl_verifyhost(data, cf->conn, server_cert); + result = Curl_ossl_verifyhost(data, cf->conn, &ctx->peer, server_cert); X509_free(server_cert); if(result) goto out; @@ -1345,6 +1339,7 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf, debug_log_init = 1; } #endif + ctx->max_idle_ms = CURL_QUIC_MAX_IDLE_MS; Curl_bufcp_init(&ctx->stream_bufcp, H3_STREAM_CHUNK_SIZE, H3_STREAM_POOL_SPARES); ctx->data_recvd = 0; @@ -1359,7 +1354,7 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf, return CURLE_FAILED_INIT; } quiche_config_enable_pacing(ctx->cfg, false); - quiche_config_set_max_idle_timeout(ctx->cfg, QUIC_IDLE_TIMEOUT); + quiche_config_set_max_idle_timeout(ctx->cfg, ctx->max_idle_ms * 1000); quiche_config_set_initial_max_data(ctx->cfg, (1 * 1024 * 1024) /* (QUIC_MAX_STREAMS/2) * H3_STREAM_WINDOW_SIZE */); quiche_config_set_initial_max_streams_bidi(ctx->cfg, QUIC_MAX_STREAMS); @@ -1411,7 +1406,7 @@ static CURLcode cf_connect_start(struct Curl_cfilter *cf, } /* Known to not work on Windows */ -#if !defined(WIN32) && defined(HAVE_QUICHE_CONN_SET_QLOG_FD) +#if !defined(_WIN32) && defined(HAVE_QUICHE_CONN_SET_QLOG_FD) { int qfd; (void)Curl_qlogdir(data, ctx->scid, sizeof(ctx->scid), &qfd); @@ -1449,7 +1444,6 @@ static CURLcode cf_quiche_connect(struct Curl_cfilter *cf, { struct cf_quiche_ctx *ctx = cf->ctx; CURLcode result = CURLE_OK; - struct curltime now; if(cf->connected) { *done = TRUE; @@ -1464,9 +1458,10 @@ static CURLcode cf_quiche_connect(struct Curl_cfilter *cf, } *done = FALSE; - now = Curl_now(); + vquic_ctx_update_time(&ctx->q); - if(ctx->reconnect_at.tv_sec && Curl_timediff(now, ctx->reconnect_at) < 0) { + if(ctx->reconnect_at.tv_sec && + Curl_timediff(ctx->q.last_op, ctx->reconnect_at) < 0) { /* Not time yet to attempt the next connect */ CURL_TRC_CF(data, cf, "waiting for reconnect time"); goto out; @@ -1476,7 +1471,7 @@ static CURLcode cf_quiche_connect(struct Curl_cfilter *cf, result = cf_connect_start(cf, data); if(result) goto out; - ctx->started_at = now; + ctx->started_at = ctx->q.last_op; result = cf_flush_egress(cf, data); /* we do not expect to be able to recv anything yet */ goto out; @@ -1491,9 +1486,9 @@ static CURLcode cf_quiche_connect(struct Curl_cfilter *cf, goto out; if(quiche_conn_is_established(ctx->qconn)) { + ctx->handshake_at = ctx->q.last_op; CURL_TRC_CF(data, cf, "handshake complete after %dms", - (int)Curl_timediff(now, ctx->started_at)); - ctx->handshake_at = now; + (int)Curl_timediff(ctx->handshake_at, ctx->started_at)); result = cf_verify_peer(cf, data); if(!result) { CURL_TRC_CF(data, cf, "peer verified"); @@ -1506,27 +1501,9 @@ static CURLcode cf_quiche_connect(struct Curl_cfilter *cf, else if(quiche_conn_is_draining(ctx->qconn)) { /* When a QUIC server instance is shutting down, it may send us a * CONNECTION_CLOSE right away. Our connection then enters the DRAINING - * state. - * This may be a stopping of the service or it may be that the server - * is reloading and a new instance will start serving soon. - * In any case, we tear down our socket and start over with a new one. - * We re-open the underlying UDP cf right now, but do not start - * connecting until called again. - */ - int reconn_delay_ms = 200; - - CURL_TRC_CF(data, cf, "connect, remote closed, reconnect after %dms", - reconn_delay_ms); - Curl_conn_cf_close(cf->next, data); - cf_quiche_ctx_clear(ctx); - result = Curl_conn_cf_connect(cf->next, data, FALSE, done); - if(!result && *done) { - *done = FALSE; - ctx->reconnect_at = Curl_now(); - ctx->reconnect_at.tv_usec += reconn_delay_ms * 1000; - Curl_expire(data, reconn_delay_ms, EXPIRE_QUIC); - result = CURLE_OK; - } + * state. The CONNECT may work in the near future again. Indicate + * that as a "weird" reply. */ + result = CURLE_WEIRD_SERVER_REPLY; } out: @@ -1550,6 +1527,7 @@ static void cf_quiche_close(struct Curl_cfilter *cf, struct Curl_easy *data) if(ctx) { if(ctx->qconn) { + vquic_ctx_update_time(&ctx->q); (void)quiche_conn_close(ctx->qconn, TRUE, 0, NULL, 0); /* flushing the egress is not a failsafe way to deliver all the outstanding packets, but we also don't want to get stuck here... */ @@ -1617,9 +1595,32 @@ static bool cf_quiche_conn_is_alive(struct Curl_cfilter *cf, struct Curl_easy *data, bool *input_pending) { + struct cf_quiche_ctx *ctx = cf->ctx; bool alive = TRUE; *input_pending = FALSE; + if(!ctx->qconn) + return FALSE; + + /* Both sides of the QUIC connection announce they max idle times in + * the transport parameters. Look at the minimum of both and if + * we exceed this, regard the connection as dead. The other side + * may have completely purged it and will no longer respond + * to any packets from us. */ + { + quiche_transport_params qpeerparams; + timediff_t idletime; + uint64_t idle_ms = ctx->max_idle_ms; + + if(quiche_conn_peer_transport_params(ctx->qconn, &qpeerparams) && + qpeerparams.peer_max_idle_timeout && + qpeerparams.peer_max_idle_timeout < idle_ms) + idle_ms = qpeerparams.peer_max_idle_timeout; + idletime = Curl_timediff(Curl_now(), cf->conn->lastused); + if(idletime > 0 && (uint64_t)idletime > idle_ms) + return FALSE; + } + if(!cf->next || !cf->next->cft->is_alive(cf->next, data, input_pending)) return FALSE; @@ -1646,7 +1647,7 @@ struct Curl_cftype Curl_cft_http3 = { cf_quiche_connect, cf_quiche_close, Curl_cf_def_get_host, - cf_quiche_get_select_socks, + cf_quiche_adjust_pollset, cf_quiche_data_pending, cf_quiche_send, cf_quiche_recv, @@ -1667,7 +1668,7 @@ CURLcode Curl_cf_quiche_create(struct Curl_cfilter **pcf, (void)data; (void)conn; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/lib/vquic/vquic.c b/external/curl/lib/vquic/vquic.c index 9a1a1bbb3..523b807bc 100644 --- a/external/curl/lib/vquic/vquic.c +++ b/external/curl/lib/vquic/vquic.c @@ -100,6 +100,7 @@ CURLcode vquic_ctx_init(struct cf_quic_ctx *qctx) } } #endif + vquic_ctx_update_time(qctx); return CURLE_OK; } @@ -109,6 +110,11 @@ void vquic_ctx_free(struct cf_quic_ctx *qctx) Curl_bufq_free(&qctx->sendbuf); } +void vquic_ctx_update_time(struct cf_quic_ctx *qctx) +{ + qctx->last_op = Curl_now(); +} + static CURLcode send_packet_no_gso(struct Curl_cfilter *cf, struct Curl_easy *data, struct cf_quic_ctx *qctx, @@ -242,6 +248,7 @@ static CURLcode vquic_send_packets(struct Curl_cfilter *cf, const uint8_t *pkt, size_t pktlen, size_t gsolen, size_t *psent) { + CURLcode result; #ifdef DEBUGBUILD /* simulate network blocking/partial writes */ if(qctx->wblock_percent > 0) { @@ -254,10 +261,14 @@ static CURLcode vquic_send_packets(struct Curl_cfilter *cf, } #endif if(qctx->no_gso && pktlen > gsolen) { - return send_packet_no_gso(cf, data, qctx, pkt, pktlen, gsolen, psent); + result = send_packet_no_gso(cf, data, qctx, pkt, pktlen, gsolen, psent); } - - return do_sendmsg(cf, data, qctx, pkt, pktlen, gsolen, psent); + else { + result = do_sendmsg(cf, data, qctx, pkt, pktlen, gsolen, psent); + } + if(!result) + qctx->last_io = qctx->last_op; + return result; } CURLcode vquic_flush(struct Curl_cfilter *cf, struct Curl_easy *data, @@ -524,13 +535,17 @@ CURLcode vquic_recv_packets(struct Curl_cfilter *cf, size_t max_pkts, vquic_recv_pkt_cb *recv_cb, void *userp) { + CURLcode result; #if defined(HAVE_SENDMMSG) - return recvmmsg_packets(cf, data, qctx, max_pkts, recv_cb, userp); + result = recvmmsg_packets(cf, data, qctx, max_pkts, recv_cb, userp); #elif defined(HAVE_SENDMSG) - return recvmsg_packets(cf, data, qctx, max_pkts, recv_cb, userp); + result = recvmsg_packets(cf, data, qctx, max_pkts, recv_cb, userp); #else - return recvfrom_packets(cf, data, qctx, max_pkts, recv_cb, userp); + result = recvfrom_packets(cf, data, qctx, max_pkts, recv_cb, userp); #endif + if(!result) + qctx->last_io = qctx->last_op; + return result; } /* diff --git a/external/curl/lib/vquic/vquic_int.h b/external/curl/lib/vquic/vquic_int.h index dbcd009d7..a820f39ae 100644 --- a/external/curl/lib/vquic/vquic_int.h +++ b/external/curl/lib/vquic/vquic_int.h @@ -31,6 +31,8 @@ #define MAX_PKT_BURST 10 #define MAX_UDP_PAYLOAD_SIZE 1452 +/* Default QUIC connection timeout we announce from our side */ +#define CURL_QUIC_MAX_IDLE_MS (120 * 1000) struct cf_quic_ctx { curl_socket_t sockfd; /* connected UDP socket */ @@ -38,6 +40,8 @@ struct cf_quic_ctx { socklen_t local_addrlen; /* length of local address */ struct bufq sendbuf; /* buffer for sending one or more packets */ + struct curltime last_op; /* last (attempted) send/recv operation */ + struct curltime last_io; /* last successful socket IO */ size_t gsolen; /* length of individual packets in send buf */ size_t split_len; /* if != 0, buffer length after which GSO differs */ size_t split_gsolen; /* length of individual packets after split_len */ @@ -50,6 +54,8 @@ struct cf_quic_ctx { CURLcode vquic_ctx_init(struct cf_quic_ctx *qctx); void vquic_ctx_free(struct cf_quic_ctx *qctx); +void vquic_ctx_update_time(struct cf_quic_ctx *qctx); + void vquic_push_blocked_pkt(struct Curl_cfilter *cf, struct cf_quic_ctx *qctx, const uint8_t *pkt, size_t pktlen, size_t gsolen); diff --git a/external/curl/lib/vssh/libssh.c b/external/curl/lib/vssh/libssh.c index b0f49d60c..97143c477 100644 --- a/external/curl/lib/vssh/libssh.c +++ b/external/curl/lib/vssh/libssh.c @@ -93,6 +93,7 @@ #if defined(__GNUC__) && \ (LIBSSH_VERSION_MINOR >= 10) || \ (LIBSSH_VERSION_MAJOR > 0) +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif @@ -1159,13 +1160,23 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block) break; } else if(statvfs) { + #ifdef _MSC_VER + #define LIBSSH_VFS_SIZE_MASK "I64u" + #else + #define LIBSSH_VFS_SIZE_MASK PRIu64 + #endif char *tmp = aprintf("statvfs:\n" - "f_bsize: %llu\n" "f_frsize: %llu\n" - "f_blocks: %llu\n" "f_bfree: %llu\n" - "f_bavail: %llu\n" "f_files: %llu\n" - "f_ffree: %llu\n" "f_favail: %llu\n" - "f_fsid: %llu\n" "f_flag: %llu\n" - "f_namemax: %llu\n", + "f_bsize: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_frsize: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_blocks: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_bfree: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_bavail: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_files: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_ffree: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_favail: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_fsid: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_flag: %" LIBSSH_VFS_SIZE_MASK "\n" + "f_namemax: %" LIBSSH_VFS_SIZE_MASK "\n", statvfs->f_bsize, statvfs->f_frsize, statvfs->f_blocks, statvfs->f_bfree, statvfs->f_bavail, statvfs->f_files, @@ -1466,13 +1477,7 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block) state(data, SSH_STOP); break; } - /* since this counts what we send to the client, we include the - newline in this counter */ - data->req.bytecount += sshc->readdir_len + 1; - /* output debug output if that is requested */ - Curl_debug(data, CURLINFO_DATA_OUT, (char *)sshc->readdir_filename, - sshc->readdir_len); } else { if(Curl_dyn_add(&sshc->readdir_buf, sshc->readdir_longentry)) { @@ -1564,12 +1569,6 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block) Curl_dyn_ptr(&sshc->readdir_buf), Curl_dyn_len(&sshc->readdir_buf)); - if(!result) { - /* output debug output if that is requested */ - Curl_debug(data, CURLINFO_DATA_OUT, Curl_dyn_ptr(&sshc->readdir_buf), - Curl_dyn_len(&sshc->readdir_buf)); - data->req.bytecount += Curl_dyn_len(&sshc->readdir_buf); - } ssh_string_free_char(sshc->readdir_tmp); sshc->readdir_tmp = NULL; @@ -1963,10 +1962,9 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block) ssh_disconnect(sshc->ssh_session); if(!ssh_version(SSH_VERSION_INT(0, 10, 0))) { /* conn->sock[FIRSTSOCKET] is closed by ssh_disconnect behind our back, - explicitly mark it as closed with the memdebug macro. This libssh + tell the connection to forget about it. This libssh bug is fixed in 0.10.0. */ - fake_sclose(conn->sock[FIRSTSOCKET]); - conn->sock[FIRSTSOCKET] = CURL_SOCKET_BAD; + Curl_conn_forget_socket(data, FIRSTSOCKET); } SSH_STRING_FREE_CHAR(sshc->homedir); @@ -2959,4 +2957,10 @@ void Curl_ssh_version(char *buffer, size_t buflen) (void)msnprintf(buffer, buflen, "libssh/%s", ssh_version(0)); } +#if defined(__GNUC__) && \ + (LIBSSH_VERSION_MINOR >= 10) || \ + (LIBSSH_VERSION_MAJOR > 0) +#pragma GCC diagnostic pop +#endif + #endif /* USE_LIBSSH */ diff --git a/external/curl/lib/vssh/libssh2.c b/external/curl/lib/vssh/libssh2.c index f539b393b..11f5f4fd5 100644 --- a/external/curl/lib/vssh/libssh2.c +++ b/external/curl/lib/vssh/libssh2.c @@ -1537,139 +1537,137 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block) state(data, SSH_SFTP_NEXT_QUOTE); break; } - { - /* - * the arguments following the command must be separated from the - * command with a space so we can check for it unconditionally - */ - cp = strchr(cmd, ' '); - if(!cp) { - failf(data, "Syntax error command '%s', missing parameter", - cmd); + + /* + * the arguments following the command must be separated from the + * command with a space so we can check for it unconditionally + */ + cp = strchr(cmd, ' '); + if(!cp) { + failf(data, "Syntax error command '%s', missing parameter", + cmd); + state(data, SSH_SFTP_CLOSE); + sshc->nextstate = SSH_NO_STATE; + sshc->actualcode = CURLE_QUOTE_ERROR; + break; + } + + /* + * also, every command takes at least one argument so we get that + * first argument right now + */ + result = Curl_get_pathname(&cp, &sshc->quote_path1, sshc->homedir); + if(result) { + if(result == CURLE_OUT_OF_MEMORY) + failf(data, "Out of memory"); + else + failf(data, "Syntax error: Bad first parameter to '%s'", cmd); + state(data, SSH_SFTP_CLOSE); + sshc->nextstate = SSH_NO_STATE; + sshc->actualcode = result; + break; + } + + /* + * SFTP is a binary protocol, so we don't send text commands + * to the server. Instead, we scan for commands used by + * OpenSSH's sftp program and call the appropriate libssh2 + * functions. + */ + if(strncasecompare(cmd, "chgrp ", 6) || + strncasecompare(cmd, "chmod ", 6) || + strncasecompare(cmd, "chown ", 6) || + strncasecompare(cmd, "atime ", 6) || + strncasecompare(cmd, "mtime ", 6)) { + /* attribute change */ + + /* sshc->quote_path1 contains the mode to set */ + /* get the destination */ + result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); + if(result) { + if(result == CURLE_OUT_OF_MEMORY) + failf(data, "Out of memory"); + else + failf(data, "Syntax error in %s: Bad second parameter", cmd); + Curl_safefree(sshc->quote_path1); state(data, SSH_SFTP_CLOSE); sshc->nextstate = SSH_NO_STATE; - sshc->actualcode = CURLE_QUOTE_ERROR; + sshc->actualcode = result; break; } - - /* - * also, every command takes at least one argument so we get that - * first argument right now - */ - result = Curl_get_pathname(&cp, &sshc->quote_path1, sshc->homedir); + memset(&sshp->quote_attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES)); + state(data, SSH_SFTP_QUOTE_STAT); + break; + } + if(strncasecompare(cmd, "ln ", 3) || + strncasecompare(cmd, "symlink ", 8)) { + /* symbolic linking */ + /* sshc->quote_path1 is the source */ + /* get the destination */ + result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); if(result) { if(result == CURLE_OUT_OF_MEMORY) failf(data, "Out of memory"); else - failf(data, "Syntax error: Bad first parameter to '%s'", cmd); + failf(data, + "Syntax error in ln/symlink: Bad second parameter"); + Curl_safefree(sshc->quote_path1); state(data, SSH_SFTP_CLOSE); sshc->nextstate = SSH_NO_STATE; sshc->actualcode = result; break; } - - /* - * SFTP is a binary protocol, so we don't send text commands - * to the server. Instead, we scan for commands used by - * OpenSSH's sftp program and call the appropriate libssh2 - * functions. - */ - if(strncasecompare(cmd, "chgrp ", 6) || - strncasecompare(cmd, "chmod ", 6) || - strncasecompare(cmd, "chown ", 6) || - strncasecompare(cmd, "atime ", 6) || - strncasecompare(cmd, "mtime ", 6)) { - /* attribute change */ - - /* sshc->quote_path1 contains the mode to set */ - /* get the destination */ - result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); - if(result) { - if(result == CURLE_OUT_OF_MEMORY) - failf(data, "Out of memory"); - else - failf(data, "Syntax error in %s: Bad second parameter", cmd); - Curl_safefree(sshc->quote_path1); - state(data, SSH_SFTP_CLOSE); - sshc->nextstate = SSH_NO_STATE; - sshc->actualcode = result; - break; - } - memset(&sshp->quote_attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES)); - state(data, SSH_SFTP_QUOTE_STAT); - break; - } - if(strncasecompare(cmd, "ln ", 3) || - strncasecompare(cmd, "symlink ", 8)) { - /* symbolic linking */ - /* sshc->quote_path1 is the source */ - /* get the destination */ - result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); - if(result) { - if(result == CURLE_OUT_OF_MEMORY) - failf(data, "Out of memory"); - else - failf(data, - "Syntax error in ln/symlink: Bad second parameter"); - Curl_safefree(sshc->quote_path1); - state(data, SSH_SFTP_CLOSE); - sshc->nextstate = SSH_NO_STATE; - sshc->actualcode = result; - break; - } - state(data, SSH_SFTP_QUOTE_SYMLINK); - break; - } - else if(strncasecompare(cmd, "mkdir ", 6)) { - /* create dir */ - state(data, SSH_SFTP_QUOTE_MKDIR); - break; - } - else if(strncasecompare(cmd, "rename ", 7)) { - /* rename file */ - /* first param is the source path */ - /* second param is the dest. path */ - result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); - if(result) { - if(result == CURLE_OUT_OF_MEMORY) - failf(data, "Out of memory"); - else - failf(data, "Syntax error in rename: Bad second parameter"); - Curl_safefree(sshc->quote_path1); - state(data, SSH_SFTP_CLOSE); - sshc->nextstate = SSH_NO_STATE; - sshc->actualcode = result; - break; - } - state(data, SSH_SFTP_QUOTE_RENAME); - break; - } - else if(strncasecompare(cmd, "rmdir ", 6)) { - /* delete dir */ - state(data, SSH_SFTP_QUOTE_RMDIR); - break; - } - else if(strncasecompare(cmd, "rm ", 3)) { - state(data, SSH_SFTP_QUOTE_UNLINK); + state(data, SSH_SFTP_QUOTE_SYMLINK); + break; + } + else if(strncasecompare(cmd, "mkdir ", 6)) { + /* create dir */ + state(data, SSH_SFTP_QUOTE_MKDIR); + break; + } + else if(strncasecompare(cmd, "rename ", 7)) { + /* rename file */ + /* first param is the source path */ + /* second param is the dest. path */ + result = Curl_get_pathname(&cp, &sshc->quote_path2, sshc->homedir); + if(result) { + if(result == CURLE_OUT_OF_MEMORY) + failf(data, "Out of memory"); + else + failf(data, "Syntax error in rename: Bad second parameter"); + Curl_safefree(sshc->quote_path1); + state(data, SSH_SFTP_CLOSE); + sshc->nextstate = SSH_NO_STATE; + sshc->actualcode = result; break; } + state(data, SSH_SFTP_QUOTE_RENAME); + break; + } + else if(strncasecompare(cmd, "rmdir ", 6)) { + /* delete dir */ + state(data, SSH_SFTP_QUOTE_RMDIR); + break; + } + else if(strncasecompare(cmd, "rm ", 3)) { + state(data, SSH_SFTP_QUOTE_UNLINK); + break; + } #ifdef HAS_STATVFS_SUPPORT - else if(strncasecompare(cmd, "statvfs ", 8)) { - state(data, SSH_SFTP_QUOTE_STATVFS); - break; - } -#endif - - failf(data, "Unknown SFTP command"); - Curl_safefree(sshc->quote_path1); - Curl_safefree(sshc->quote_path2); - state(data, SSH_SFTP_CLOSE); - sshc->nextstate = SSH_NO_STATE; - sshc->actualcode = CURLE_QUOTE_ERROR; + else if(strncasecompare(cmd, "statvfs ", 8)) { + state(data, SSH_SFTP_QUOTE_STATVFS); break; } +#endif + + failf(data, "Unknown SFTP command"); + Curl_safefree(sshc->quote_path1); + Curl_safefree(sshc->quote_path2); + state(data, SSH_SFTP_CLOSE); + sshc->nextstate = SSH_NO_STATE; + sshc->actualcode = CURLE_QUOTE_ERROR; + break; } - break; case SSH_SFTP_NEXT_QUOTE: Curl_safefree(sshc->quote_path1); @@ -1962,13 +1960,23 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block) break; } else if(rc == 0) { + #ifdef _MSC_VER + #define LIBSSH2_VFS_SIZE_MASK "I64u" + #else + #define LIBSSH2_VFS_SIZE_MASK "llu" + #endif char *tmp = aprintf("statvfs:\n" - "f_bsize: %llu\n" "f_frsize: %llu\n" - "f_blocks: %llu\n" "f_bfree: %llu\n" - "f_bavail: %llu\n" "f_files: %llu\n" - "f_ffree: %llu\n" "f_favail: %llu\n" - "f_fsid: %llu\n" "f_flag: %llu\n" - "f_namemax: %llu\n", + "f_bsize: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_frsize: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_blocks: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_bfree: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_bavail: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_files: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_ffree: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_favail: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_fsid: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_flag: %" LIBSSH2_VFS_SIZE_MASK "\n" + "f_namemax: %" LIBSSH2_VFS_SIZE_MASK "\n", statvfs.f_bsize, statvfs.f_frsize, statvfs.f_blocks, statvfs.f_bfree, statvfs.f_bavail, statvfs.f_files, @@ -2341,14 +2349,7 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block) state(data, SSH_STOP); break; } - /* since this counts what we send to the client, we include the - newline in this counter */ - data->req.bytecount += readdir_len + 1; - /* output debug output if that is requested */ - Curl_debug(data, CURLINFO_DATA_IN, sshp->readdir_filename, - readdir_len); - Curl_debug(data, CURLINFO_DATA_IN, (char *)"\n", 1); } else { result = Curl_dyn_add(&sshp->readdir, sshp->readdir_longentry); @@ -2427,13 +2428,6 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block) Curl_dyn_ptr(&sshp->readdir), Curl_dyn_len(&sshp->readdir)); - if(!result) { - /* output debug output if that is requested */ - Curl_debug(data, CURLINFO_DATA_IN, - Curl_dyn_ptr(&sshp->readdir), - Curl_dyn_len(&sshp->readdir)); - data->req.bytecount += Curl_dyn_len(&sshp->readdir); - } if(result) { Curl_dyn_free(&sshp->readdir); state(data, SSH_STOP); diff --git a/external/curl/lib/vssh/ssh.h b/external/curl/lib/vssh/ssh.h index 1e1b1379c..ca0533aa5 100644 --- a/external/curl/lib/vssh/ssh.h +++ b/external/curl/lib/vssh/ssh.h @@ -267,6 +267,7 @@ void Curl_ssh_attach(struct Curl_easy *data, /* for non-SSH builds */ #define Curl_ssh_cleanup() #define Curl_ssh_attach(x,y) +#define Curl_ssh_init() 0 #endif #endif /* HEADER_CURL_SSH_H */ diff --git a/external/curl/lib/vssh/wolfssh.c b/external/curl/lib/vssh/wolfssh.c index 39cee5076..4da7e9dea 100644 --- a/external/curl/lib/vssh/wolfssh.c +++ b/external/curl/lib/vssh/wolfssh.c @@ -343,9 +343,6 @@ static CURLcode wssh_setup_connection(struct Curl_easy *data, return CURLE_OK; } -static Curl_recv wscp_recv, wsftp_recv; -static Curl_send wscp_send, wsftp_send; - static int userauth(byte authtype, WS_UserAuthData* authdata, void *ctx) diff --git a/external/curl/lib/vtls/bearssl.c b/external/curl/lib/vtls/bearssl.c index 934149c1b..a6566f4d9 100644 --- a/external/curl/lib/vtls/bearssl.c +++ b/external/curl/lib/vtls/bearssl.c @@ -582,17 +582,12 @@ static CURLcode bearssl_connect_step1(struct Curl_cfilter *cf, const char * const ssl_cafile = /* CURLOPT_CAINFO_BLOB overrides CURLOPT_CAINFO */ (ca_info_blob ? NULL : conn_config->CAfile); - const char *hostname = connssl->hostname; + const char *hostname = connssl->peer.hostname; const bool verifypeer = conn_config->verifypeer; const bool verifyhost = conn_config->verifyhost; CURLcode ret; unsigned version_min, version_max; int session_set = 0; -#ifdef ENABLE_IPV6 - struct in6_addr addr; -#else - struct in_addr addr; -#endif DEBUGASSERT(backend); CURL_TRC_CF(data, cf, "connect_step1"); @@ -706,11 +701,7 @@ static CURLcode bearssl_connect_step1(struct Curl_cfilter *cf, infof(data, VTLS_INFOF_ALPN_OFFER_1STR, proto.data); } - if((1 == Curl_inet_pton(AF_INET, hostname, &addr)) -#ifdef ENABLE_IPV6 - || (1 == Curl_inet_pton(AF_INET6, hostname, &addr)) -#endif - ) { + if(connssl->peer.is_ip_address) { if(verifyhost) { failf(data, "BearSSL: " "host verification of IP address is not supported"); @@ -719,12 +710,11 @@ static CURLcode bearssl_connect_step1(struct Curl_cfilter *cf, hostname = NULL; } else { - char *snihost = Curl_ssl_snihost(data, hostname, NULL); - if(!snihost) { + if(!connssl->peer.sni) { failf(data, "Failed to set SNI"); return CURLE_SSL_CONNECT_ERROR; } - hostname = snihost; + hostname = connssl->peer.sni; CURL_TRC_CF(data, cf, "connect_step1, SNI set"); } @@ -749,26 +739,26 @@ static CURLcode bearssl_connect_step1(struct Curl_cfilter *cf, return CURLE_OK; } -static int bearssl_get_select_socks(struct Curl_cfilter *cf, - struct Curl_easy *data, - curl_socket_t *socks) +static void bearssl_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) { - struct ssl_connect_data *connssl = cf->ctx; - curl_socket_t sock = Curl_conn_cf_get_socket(cf->next, data); - - if(sock == CURL_SOCKET_BAD) - return GETSOCK_BLANK; - else { - struct bearssl_ssl_backend_data *backend = - (struct bearssl_ssl_backend_data *)connssl->backend; - unsigned state = br_ssl_engine_current_state(&backend->ctx.eng); - if(state & BR_SSL_SENDREC) { - socks[0] = sock; - return GETSOCK_WRITESOCK(0); + if(!cf->connected) { + curl_socket_t sock = Curl_conn_cf_get_socket(cf->next, data); + if(sock != CURL_SOCKET_BAD) { + struct ssl_connect_data *connssl = cf->ctx; + struct bearssl_ssl_backend_data *backend = + (struct bearssl_ssl_backend_data *)connssl->backend; + unsigned state = br_ssl_engine_current_state(&backend->ctx.eng); + + if(state & BR_SSL_SENDREC) { + Curl_pollset_set_out_only(data, ps, sock); + } + else { + Curl_pollset_set_in_only(data, ps, sock); + } } } - socks[0] = sock; - return GETSOCK_READSOCK(0); } static CURLcode bearssl_run_until(struct Curl_cfilter *cf, @@ -1210,7 +1200,7 @@ const struct Curl_ssl Curl_ssl_bearssl = { Curl_none_cert_status_request, /* cert_status_request */ bearssl_connect, /* connect */ bearssl_connect_nonblocking, /* connect_nonblocking */ - bearssl_get_select_socks, /* getsock */ + bearssl_adjust_pollset, /* adjust_pollset */ bearssl_get_internals, /* get_internals */ bearssl_close, /* close_one */ Curl_none_close_all, /* close_all */ diff --git a/external/curl/lib/vtls/gtls.c b/external/curl/lib/vtls/gtls.c index c538a966e..4e337f5dd 100644 --- a/external/curl/lib/vtls/gtls.c +++ b/external/curl/lib/vtls/gtls.c @@ -402,18 +402,13 @@ set_ssl_version_min_max(struct Curl_easy *data, CURLcode gtls_client_init(struct Curl_easy *data, struct ssl_primary_config *config, struct ssl_config_data *ssl_config, - const char *hostname, + struct ssl_peer *peer, struct gtls_instance *gtls, long *pverifyresult) { unsigned int init_flags; int rc; bool sni = TRUE; /* default is SNI enabled */ -#ifdef ENABLE_IPV6 - struct in6_addr addr; -#else - struct in_addr addr; -#endif const char *prioritylist; const char *err = NULL; const char *tls13support; @@ -460,50 +455,60 @@ CURLcode gtls_client_init(struct Curl_easy *data, } #endif - if(config->CAfile) { - /* set the trusted CA cert bundle file */ - gnutls_certificate_set_verify_flags(gtls->cred, - GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT); + if(config->verifypeer) { + bool imported_native_ca = false; - rc = gnutls_certificate_set_x509_trust_file(gtls->cred, - config->CAfile, - GNUTLS_X509_FMT_PEM); - if(rc < 0) { - infof(data, "error reading ca cert file %s (%s)", - config->CAfile, gnutls_strerror(rc)); - if(config->verifypeer) { - *pverifyresult = rc; - return CURLE_SSL_CACERT_BADFILE; + if(ssl_config->native_ca_store) { + rc = gnutls_certificate_set_x509_system_trust(gtls->cred); + if(rc < 0) + infof(data, "error reading native ca store (%s), continuing anyway", + gnutls_strerror(rc)); + else { + infof(data, "found %d certificates in native ca store", rc); + if(rc > 0) + imported_native_ca = true; } } - else - infof(data, "found %d certificates in %s", rc, config->CAfile); - } - if(config->CApath) { - /* set the trusted CA cert directory */ - rc = gnutls_certificate_set_x509_trust_dir(gtls->cred, - config->CApath, - GNUTLS_X509_FMT_PEM); - if(rc < 0) { - infof(data, "error reading ca cert file %s (%s)", - config->CApath, gnutls_strerror(rc)); - if(config->verifypeer) { - *pverifyresult = rc; - return CURLE_SSL_CACERT_BADFILE; + if(config->CAfile) { + /* set the trusted CA cert bundle file */ + gnutls_certificate_set_verify_flags(gtls->cred, + GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT); + + rc = gnutls_certificate_set_x509_trust_file(gtls->cred, + config->CAfile, + GNUTLS_X509_FMT_PEM); + if(rc < 0) { + infof(data, "error reading ca cert file %s (%s)%s", + config->CAfile, gnutls_strerror(rc), + (imported_native_ca ? ", continuing anyway" : "")); + if(!imported_native_ca) { + *pverifyresult = rc; + return CURLE_SSL_CACERT_BADFILE; + } } + else + infof(data, "found %d certificates in %s", rc, config->CAfile); } - else - infof(data, "found %d certificates in %s", rc, config->CApath); - } -#ifdef CURL_CA_FALLBACK - /* use system ca certificate store as fallback */ - if(config->verifypeer && !(config->CAfile || config->CApath)) { - /* this ignores errors on purpose */ - gnutls_certificate_set_x509_system_trust(gtls->cred); + if(config->CApath) { + /* set the trusted CA cert directory */ + rc = gnutls_certificate_set_x509_trust_dir(gtls->cred, + config->CApath, + GNUTLS_X509_FMT_PEM); + if(rc < 0) { + infof(data, "error reading ca cert file %s (%s)%s", + config->CApath, gnutls_strerror(rc), + (imported_native_ca ? ", continuing anyway" : "")); + if(!imported_native_ca) { + *pverifyresult = rc; + return CURLE_SSL_CACERT_BADFILE; + } + } + else + infof(data, "found %d certificates in %s", rc, config->CApath); + } } -#endif if(config->CRLfile) { /* set the CRL list file */ @@ -537,15 +542,9 @@ CURLcode gtls_client_init(struct Curl_easy *data, return CURLE_SSL_CONNECT_ERROR; } - if((0 == Curl_inet_pton(AF_INET, hostname, &addr)) && -#ifdef ENABLE_IPV6 - (0 == Curl_inet_pton(AF_INET6, hostname, &addr)) && -#endif - sni) { - size_t snilen; - char *snihost = Curl_ssl_snihost(data, hostname, &snilen); - if(!snihost || gnutls_server_name_set(gtls->session, GNUTLS_NAME_DNS, - snihost, snilen) < 0) { + if(sni && peer->sni) { + if(gnutls_server_name_set(gtls->session, GNUTLS_NAME_DNS, + peer->sni, strlen(peer->sni)) < 0) { failf(data, "Failed to set SNI"); return CURLE_SSL_CONNECT_ERROR; } @@ -699,7 +698,7 @@ gtls_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) return CURLE_OK; result = gtls_client_init(data, conn_config, ssl_config, - connssl->hostname, + &connssl->peer, &backend->gtls, pverifyresult); if(result) return result; @@ -811,8 +810,7 @@ Curl_gtls_verifyserver(struct Curl_easy *data, gnutls_session_t session, struct ssl_primary_config *config, struct ssl_config_data *ssl_config, - const char *hostname, - const char *dispname, + struct ssl_peer *peer, const char *pinned_key) { unsigned int cert_list_size; @@ -1068,7 +1066,7 @@ Curl_gtls_verifyserver(struct Curl_easy *data, in RFC2818 (HTTPS), which takes into account wildcards, and the subject alternative name PKIX extension. Returns non zero on success, and zero on failure. */ - rc = gnutls_x509_crt_check_hostname(x509_cert, hostname); + rc = gnutls_x509_crt_check_hostname(x509_cert, peer->hostname); #if GNUTLS_VERSION_NUMBER < 0x030306 /* Before 3.3.6, gnutls_x509_crt_check_hostname() didn't check IP addresses. */ @@ -1081,10 +1079,10 @@ Curl_gtls_verifyserver(struct Curl_easy *data, unsigned char addrbuf[sizeof(struct use_addr)]; size_t addrlen = 0; - if(Curl_inet_pton(AF_INET, hostname, addrbuf) > 0) + if(Curl_inet_pton(AF_INET, peer->hostname, addrbuf) > 0) addrlen = 4; #ifdef ENABLE_IPV6 - else if(Curl_inet_pton(AF_INET6, hostname, addrbuf) > 0) + else if(Curl_inet_pton(AF_INET6, peer->hostname, addrbuf) > 0) addrlen = 16; #endif @@ -1114,13 +1112,13 @@ Curl_gtls_verifyserver(struct Curl_easy *data, if(!rc) { if(config->verifyhost) { failf(data, "SSL: certificate subject name (%s) does not match " - "target host name '%s'", certname, dispname); + "target host name '%s'", certname, peer->dispname); gnutls_x509_crt_deinit(x509_cert); return CURLE_PEER_FAILED_VERIFICATION; } else infof(data, " common name: %s (does not match '%s')", - certname, dispname); + certname, peer->dispname); } else infof(data, " common name: %s (matched)", certname); @@ -1253,8 +1251,7 @@ static CURLcode gtls_verifyserver(struct Curl_cfilter *cf, CURLcode result; result = Curl_gtls_verifyserver(data, session, conn_config, ssl_config, - connssl->hostname, connssl->dispname, - pinned_key); + &connssl->peer, pinned_key); if(result) goto out; @@ -1662,7 +1659,7 @@ const struct Curl_ssl Curl_ssl_gnutls = { gtls_cert_status_request, /* cert_status_request */ gtls_connect, /* connect */ gtls_connect_nonblocking, /* connect_nonblocking */ - Curl_ssl_get_select_socks, /* getsock */ + Curl_ssl_adjust_pollset, /* adjust_pollset */ gtls_get_internals, /* get_internals */ gtls_close, /* close_one */ Curl_none_close_all, /* close_all */ diff --git a/external/curl/lib/vtls/gtls.h b/external/curl/lib/vtls/gtls.h index ac141e1c6..1a81c01e9 100644 --- a/external/curl/lib/vtls/gtls.h +++ b/external/curl/lib/vtls/gtls.h @@ -43,6 +43,7 @@ struct Curl_easy; struct Curl_cfilter; struct ssl_primary_config; struct ssl_config_data; +struct ssl_peer; struct gtls_instance { gnutls_session_t session; @@ -56,7 +57,7 @@ CURLcode gtls_client_init(struct Curl_easy *data, struct ssl_primary_config *config, struct ssl_config_data *ssl_config, - const char *hostname, + struct ssl_peer *peer, struct gtls_instance *gtls, long *pverifyresult); @@ -65,8 +66,7 @@ Curl_gtls_verifyserver(struct Curl_easy *data, gnutls_session_t session, struct ssl_primary_config *config, struct ssl_config_data *ssl_config, - const char *hostname, - const char *dispname, + struct ssl_peer *peer, const char *pinned_key); extern const struct Curl_ssl Curl_ssl_gnutls; diff --git a/external/curl/lib/vtls/keylog.c b/external/curl/lib/vtls/keylog.c index d37bb183e..fbcb25cfb 100644 --- a/external/curl/lib/vtls/keylog.c +++ b/external/curl/lib/vtls/keylog.c @@ -23,6 +23,11 @@ ***************************************************************************/ #include "curl_setup.h" +#if defined(USE_OPENSSL) || \ + defined(USE_WOLFSSL) || \ + (defined(USE_NGTCP2) && defined(USE_NGHTTP3)) || \ + defined(USE_QUICHE) + #include "keylog.h" #include @@ -55,7 +60,7 @@ Curl_tls_keylog_open(void) if(keylog_file_name) { keylog_file_fp = fopen(keylog_file_name, FOPEN_APPENDTEXT); if(keylog_file_fp) { -#ifdef WIN32 +#ifdef _WIN32 if(setvbuf(keylog_file_fp, NULL, _IONBF, 0)) #else if(setvbuf(keylog_file_fp, NULL, _IOLBF, 4096)) @@ -157,3 +162,5 @@ Curl_tls_keylog_write(const char *label, fputs(line, keylog_file_fp); return true; } + +#endif /* TLS or QUIC backend */ diff --git a/external/curl/lib/vtls/mbedtls.c b/external/curl/lib/vtls/mbedtls.c index 2f994d741..38f7de7f7 100644 --- a/external/curl/lib/vtls/mbedtls.c +++ b/external/curl/lib/vtls/mbedtls.c @@ -322,7 +322,7 @@ mbed_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) char * const ssl_cert = ssl_config->primary.clientcert; const struct curl_blob *ssl_cert_blob = ssl_config->primary.cert_blob; const char * const ssl_crlfile = ssl_config->primary.CRLfile; - const char *hostname = connssl->hostname; + const char *hostname = connssl->peer.hostname; int ret = -1; char errorbuf[128]; @@ -639,9 +639,9 @@ mbed_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) mbedtls_ssl_conf_own_cert(&backend->config, &backend->clicert, &backend->pk); } - { - char *snihost = Curl_ssl_snihost(data, hostname, NULL); - if(!snihost || mbedtls_ssl_set_hostname(&backend->ssl, snihost)) { + + if(connssl->peer.sni) { + if(mbedtls_ssl_set_hostname(&backend->ssl, connssl->peer.sni)) { /* mbedtls_ssl_set_hostname() sets the name to use in CN/SAN checks and the name to set in the SNI extension. So even if curl connects to a host specified as an IP address, this function must be used. */ @@ -1274,7 +1274,7 @@ const struct Curl_ssl Curl_ssl_mbedtls = { Curl_none_cert_status_request, /* cert_status_request */ mbedtls_connect, /* connect */ mbedtls_connect_nonblocking, /* connect_nonblocking */ - Curl_ssl_get_select_socks, /* getsock */ + Curl_ssl_adjust_pollset, /* adjust_pollset */ mbedtls_get_internals, /* get_internals */ mbedtls_close, /* close_one */ mbedtls_close_all, /* close_all */ diff --git a/external/curl/lib/vtls/mbedtls_threadlock.c b/external/curl/lib/vtls/mbedtls_threadlock.c index bcb7106a6..22b1b221e 100644 --- a/external/curl/lib/vtls/mbedtls_threadlock.c +++ b/external/curl/lib/vtls/mbedtls_threadlock.c @@ -51,7 +51,7 @@ int Curl_mbedtlsthreadlock_thread_setup(void) { int i; - mutex_buf = calloc(NUMT * sizeof(MBEDTLS_MUTEX_T), 1); + mutex_buf = calloc(1, NUMT * sizeof(MBEDTLS_MUTEX_T)); if(!mutex_buf) return 0; /* error, no number of threads defined */ diff --git a/external/curl/lib/vtls/openssl.c b/external/curl/lib/vtls/openssl.c index 9f9c8d136..8c8f43e83 100644 --- a/external/curl/lib/vtls/openssl.c +++ b/external/curl/lib/vtls/openssl.c @@ -79,6 +79,8 @@ #include #include #include +#include +#include #if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_OCSP) #include @@ -96,6 +98,9 @@ #include "curl_memory.h" #include "memdebug.h" +#ifndef ARRAYSIZE +#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0])) +#endif /* Uncomment the ALLOW_RENEG line to a real #define if you want to allow TLS renegotiations when built with BoringSSL. Renegotiating is non-compliant @@ -173,8 +178,6 @@ #if (OPENSSL_VERSION_NUMBER >= 0x30000000L) #define HAVE_EVP_PKEY_GET_PARAMS 1 -#else -#define SSL_get1_peer_certificate SSL_get_peer_certificate #endif #ifdef HAVE_EVP_PKEY_GET_PARAMS @@ -235,7 +238,11 @@ #elif defined(OPENSSL_IS_AWSLC) #define OSSL_PACKAGE "AWS-LC" #else -#define OSSL_PACKAGE "OpenSSL" +# if defined(USE_NGTCP2) && defined(USE_NGHTTP3) +# define OSSL_PACKAGE "quictls" +# else +# define OSSL_PACKAGE "OpenSSL" +#endif #endif #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) @@ -538,9 +545,9 @@ CURLcode Curl_ossl_certchain(struct Curl_easy *data, SSL *ssl) #else RSA_get0_key(rsa, &n, &e, NULL); #endif /* HAVE_EVP_PKEY_GET_PARAMS */ - BIO_printf(mem, "%d", BN_num_bits(n)); + BIO_printf(mem, "%d", n ? BN_num_bits(n) : 0); #else - BIO_printf(mem, "%d", BN_num_bits(rsa->n)); + BIO_printf(mem, "%d", rsa->n ? BN_num_bits(rsa->n) : 0); #endif /* HAVE_OPAQUE_RSA_DSA_DH */ push_certinfo("RSA Public Key", i); print_pubkey_BN(rsa, n, i); @@ -2098,22 +2105,6 @@ static bool subj_alt_hostcheck(struct Curl_easy *data, return FALSE; } -static CURLcode -ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, - X509 *server_cert, const char *hostname, - const char *dispname); - -CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, - X509 *server_cert) -{ - const char *hostname, *dispname; - int port; - - (void)conn; - Curl_conn_get_host(data, FIRSTSOCKET, &hostname, &dispname, &port); - return ossl_verifyhost(data, conn, server_cert, hostname, dispname); -} - /* Quote from RFC2818 section 3.1 "Server Identity" If a subjectAltName extension of type dNSName is present, that MUST @@ -2136,10 +2127,8 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, This function is now used from ngtcp2 (QUIC) as well. */ -static CURLcode -ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, - X509 *server_cert, const char *hostname, - const char *dispname) +CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, + struct ssl_peer *peer, X509 *server_cert) { bool matched = FALSE; int target = GEN_DNS; /* target type, GEN_DNS or GEN_IPADD */ @@ -2156,25 +2145,21 @@ ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, size_t hostlen; (void)conn; - hostlen = strlen(hostname); - -#ifndef ENABLE_IPV6 - /* Silence compiler warnings for unused params */ - (void) conn; -#endif - + hostlen = strlen(peer->hostname); + if(peer->is_ip_address) { #ifdef ENABLE_IPV6 - if(conn->bits.ipv6_ip && - Curl_inet_pton(AF_INET6, hostname, &addr)) { - target = GEN_IPADD; - addrlen = sizeof(struct in6_addr); - } - else -#endif - if(Curl_inet_pton(AF_INET, hostname, &addr)) { + if(conn->bits.ipv6_ip && + Curl_inet_pton(AF_INET6, peer->hostname, &addr)) { target = GEN_IPADD; - addrlen = sizeof(struct in_addr); + addrlen = sizeof(struct in6_addr); } + else +#endif + if(Curl_inet_pton(AF_INET, peer->hostname, &addr)) { + target = GEN_IPADD; + addrlen = sizeof(struct in_addr); + } + } /* get a "list" of alternative names */ altnames = X509_get_ext_d2i(server_cert, NID_subject_alt_name, NULL, NULL); @@ -2224,9 +2209,9 @@ ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, if((altlen == strlen(altptr)) && /* if this isn't true, there was an embedded zero in the name string and we cannot match it. */ - subj_alt_hostcheck(data, - altptr, - altlen, hostname, hostlen, dispname)) { + subj_alt_hostcheck(data, altptr, altlen, + peer->hostname, hostlen, + peer->dispname)) { dnsmatched = TRUE; } break; @@ -2238,7 +2223,7 @@ ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, ipmatched = TRUE; infof(data, " subjectAltName: host \"%s\" matched cert's IP address!", - dispname); + peer->dispname); } break; } @@ -2254,9 +2239,9 @@ ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, /* an alternative name matched */ ; else if(dNSName || iPAddress) { - infof(data, " subjectAltName does not match %s", dispname); + infof(data, " subjectAltName does not match %s", peer->dispname); failf(data, "SSL: no alternative certificate subject name matches " - "target host name '%s'", dispname); + "target host name '%s'", peer->dispname); result = CURLE_PEER_FAILED_VERIFICATION; } else { @@ -2320,9 +2305,9 @@ ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, result = CURLE_PEER_FAILED_VERIFICATION; } else if(!Curl_cert_hostcheck((const char *)peer_CN, - peerlen, hostname, hostlen)) { + peerlen, peer->hostname, hostlen)) { failf(data, "SSL: certificate subject name '%s' does not match " - "target host name '%s'", peer_CN, dispname); + "target host name '%s'", peer_CN, peer->dispname); result = CURLE_PEER_FAILED_VERIFICATION; } else { @@ -2731,12 +2716,6 @@ static void ossl_trace(int direction, int ssl_ver, int content_type, #ifdef USE_OPENSSL /* ====================================================== */ -#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME -# define use_sni(x) sni = (x) -#else -# define use_sni(x) Curl_nop_stmt -#endif - /* Check for OpenSSL 1.0.2 which has ALPN support. */ #undef HAS_ALPN #if OPENSSL_VERSION_NUMBER >= 0x10002000L \ @@ -3032,6 +3011,151 @@ static CURLcode load_cacert_from_memory(X509_STORE *store, return (count > 0) ? CURLE_OK : CURLE_SSL_CACERT_BADFILE; } +#if defined(USE_WIN32_CRYPTO) +static CURLcode import_windows_cert_store(struct Curl_easy *data, + const char *name, + X509_STORE *store, + bool *imported) +{ + CURLcode result = CURLE_OK; + HCERTSTORE hStore; + + *imported = false; + + hStore = CertOpenSystemStoreA(0, name); + if(hStore) { + PCCERT_CONTEXT pContext = NULL; + /* The array of enhanced key usage OIDs will vary per certificate and + is declared outside of the loop so that rather than malloc/free each + iteration we can grow it with realloc, when necessary. */ + CERT_ENHKEY_USAGE *enhkey_usage = NULL; + DWORD enhkey_usage_size = 0; + + /* This loop makes a best effort to import all valid certificates from + the MS root store. If a certificate cannot be imported it is + skipped. 'result' is used to store only hard-fail conditions (such + as out of memory) that cause an early break. */ + result = CURLE_OK; + for(;;) { + X509 *x509; + FILETIME now; + BYTE key_usage[2]; + DWORD req_size; + const unsigned char *encoded_cert; +#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS) + char cert_name[256]; +#endif + + pContext = CertEnumCertificatesInStore(hStore, pContext); + if(!pContext) + break; + +#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS) + if(!CertGetNameStringA(pContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, + NULL, cert_name, sizeof(cert_name))) { + strcpy(cert_name, "Unknown"); + } + infof(data, "SSL: Checking cert \"%s\"", cert_name); +#endif + encoded_cert = (const unsigned char *)pContext->pbCertEncoded; + if(!encoded_cert) + continue; + + GetSystemTimeAsFileTime(&now); + if(CompareFileTime(&pContext->pCertInfo->NotBefore, &now) > 0 || + CompareFileTime(&now, &pContext->pCertInfo->NotAfter) > 0) + continue; + + /* If key usage exists check for signing attribute */ + if(CertGetIntendedKeyUsage(pContext->dwCertEncodingType, + pContext->pCertInfo, + key_usage, sizeof(key_usage))) { + if(!(key_usage[0] & CERT_KEY_CERT_SIGN_KEY_USAGE)) + continue; + } + else if(GetLastError()) + continue; + + /* If enhanced key usage exists check for server auth attribute. + * + * Note "In a Microsoft environment, a certificate might also have + * EKU extended properties that specify valid uses for the + * certificate." The call below checks both, and behavior varies + * depending on what is found. For more details see + * CertGetEnhancedKeyUsage doc. + */ + if(CertGetEnhancedKeyUsage(pContext, 0, NULL, &req_size)) { + if(req_size && req_size > enhkey_usage_size) { + void *tmp = realloc(enhkey_usage, req_size); + + if(!tmp) { + failf(data, "SSL: Out of memory allocating for OID list"); + result = CURLE_OUT_OF_MEMORY; + break; + } + + enhkey_usage = (CERT_ENHKEY_USAGE *)tmp; + enhkey_usage_size = req_size; + } + + if(CertGetEnhancedKeyUsage(pContext, 0, enhkey_usage, &req_size)) { + if(!enhkey_usage->cUsageIdentifier) { + /* "If GetLastError returns CRYPT_E_NOT_FOUND, the certificate + is good for all uses. If it returns zero, the certificate + has no valid uses." */ + if((HRESULT)GetLastError() != CRYPT_E_NOT_FOUND) + continue; + } + else { + DWORD i; + bool found = false; + + for(i = 0; i < enhkey_usage->cUsageIdentifier; ++i) { + if(!strcmp("1.3.6.1.5.5.7.3.1" /* OID server auth */, + enhkey_usage->rgpszUsageIdentifier[i])) { + found = true; + break; + } + } + + if(!found) + continue; + } + } + else + continue; + } + else + continue; + + x509 = d2i_X509(NULL, &encoded_cert, pContext->cbCertEncoded); + if(!x509) + continue; + + /* Try to import the certificate. This may fail for legitimate + reasons such as duplicate certificate, which is allowed by MS but + not OpenSSL. */ + if(X509_STORE_add_cert(store, x509) == 1) { +#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS) + infof(data, "SSL: Imported cert \"%s\"", cert_name); +#endif + *imported = true; + } + X509_free(x509); + } + + free(enhkey_usage); + CertFreeCertificateContext(pContext); + CertCloseStore(hStore, 0); + + if(result) + return result; + } + + return result; +} +#endif + static CURLcode populate_x509_store(struct Curl_cfilter *cf, struct Curl_easy *data, X509_STORE *store) @@ -3061,140 +3185,25 @@ static CURLcode populate_x509_store(struct Curl_cfilter *cf, https://github.com/d3x0r/SACK/blob/master/src/netlib/ssl_layer.c#L1037 https://datatracker.ietf.org/doc/html/rfc5280 */ if(ssl_config->native_ca_store) { - HCERTSTORE hStore = CertOpenSystemStore(0, TEXT("ROOT")); - - if(hStore) { - PCCERT_CONTEXT pContext = NULL; - /* The array of enhanced key usage OIDs will vary per certificate and - is declared outside of the loop so that rather than malloc/free each - iteration we can grow it with realloc, when necessary. */ - CERT_ENHKEY_USAGE *enhkey_usage = NULL; - DWORD enhkey_usage_size = 0; - - /* This loop makes a best effort to import all valid certificates from - the MS root store. If a certificate cannot be imported it is - skipped. 'result' is used to store only hard-fail conditions (such - as out of memory) that cause an early break. */ - result = CURLE_OK; - for(;;) { - X509 *x509; - FILETIME now; - BYTE key_usage[2]; - DWORD req_size; - const unsigned char *encoded_cert; -#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS) - char cert_name[256]; -#endif - - pContext = CertEnumCertificatesInStore(hStore, pContext); - if(!pContext) - break; - -#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS) - if(!CertGetNameStringA(pContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, - NULL, cert_name, sizeof(cert_name))) { - strcpy(cert_name, "Unknown"); - } - infof(data, "SSL: Checking cert \"%s\"", cert_name); -#endif - encoded_cert = (const unsigned char *)pContext->pbCertEncoded; - if(!encoded_cert) - continue; - - GetSystemTimeAsFileTime(&now); - if(CompareFileTime(&pContext->pCertInfo->NotBefore, &now) > 0 || - CompareFileTime(&now, &pContext->pCertInfo->NotAfter) > 0) - continue; - - /* If key usage exists check for signing attribute */ - if(CertGetIntendedKeyUsage(pContext->dwCertEncodingType, - pContext->pCertInfo, - key_usage, sizeof(key_usage))) { - if(!(key_usage[0] & CERT_KEY_CERT_SIGN_KEY_USAGE)) - continue; - } - else if(GetLastError()) - continue; - - /* If enhanced key usage exists check for server auth attribute. - * - * Note "In a Microsoft environment, a certificate might also have - * EKU extended properties that specify valid uses for the - * certificate." The call below checks both, and behavior varies - * depending on what is found. For more details see - * CertGetEnhancedKeyUsage doc. - */ - if(CertGetEnhancedKeyUsage(pContext, 0, NULL, &req_size)) { - if(req_size && req_size > enhkey_usage_size) { - void *tmp = realloc(enhkey_usage, req_size); - - if(!tmp) { - failf(data, "SSL: Out of memory allocating for OID list"); - result = CURLE_OUT_OF_MEMORY; - break; - } - - enhkey_usage = (CERT_ENHKEY_USAGE *)tmp; - enhkey_usage_size = req_size; - } - - if(CertGetEnhancedKeyUsage(pContext, 0, enhkey_usage, &req_size)) { - if(!enhkey_usage->cUsageIdentifier) { - /* "If GetLastError returns CRYPT_E_NOT_FOUND, the certificate - is good for all uses. If it returns zero, the certificate - has no valid uses." */ - if((HRESULT)GetLastError() != CRYPT_E_NOT_FOUND) - continue; - } - else { - DWORD i; - bool found = false; - - for(i = 0; i < enhkey_usage->cUsageIdentifier; ++i) { - if(!strcmp("1.3.6.1.5.5.7.3.1" /* OID server auth */, - enhkey_usage->rgpszUsageIdentifier[i])) { - found = true; - break; - } - } - - if(!found) - continue; - } - } - else - continue; - } - else - continue; - - x509 = d2i_X509(NULL, &encoded_cert, pContext->cbCertEncoded); - if(!x509) - continue; - - /* Try to import the certificate. This may fail for legitimate - reasons such as duplicate certificate, which is allowed by MS but - not OpenSSL. */ - if(X509_STORE_add_cert(store, x509) == 1) { -#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS) - infof(data, "SSL: Imported cert \"%s\"", cert_name); -#endif - imported_native_ca = true; - } - X509_free(x509); - } - - free(enhkey_usage); - CertFreeCertificateContext(pContext); - CertCloseStore(hStore, 0); - + const char *storeNames[] = { + "ROOT", /* Trusted Root Certification Authorities */ + "CA" /* Intermediate Certification Authorities */ + }; + size_t i; + for(i = 0; i < ARRAYSIZE(storeNames); ++i) { + bool imported = false; + result = import_windows_cert_store(data, storeNames[i], store, + &imported); if(result) return result; + if(imported) { + infof(data, "successfully imported Windows %s store", storeNames[i]); + imported_native_ca = true; + } + else + infof(data, "error importing Windows %s store, continuing anyway", + storeNames[i]); } - if(imported_native_ca) - infof(data, "successfully imported Windows CA store"); - else - infof(data, "error importing Windows CA store, continuing anyway"); } #endif if(ca_info_blob) { @@ -3210,7 +3219,7 @@ static CURLcode populate_x509_store(struct Curl_cfilter *cf, } if(ssl_cafile || ssl_capath) { -#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) +#if (OPENSSL_VERSION_NUMBER >= 0x30000000L) /* OpenSSL 3.0.0 has deprecated SSL_CTX_load_verify_locations */ if(ssl_cafile && !X509_STORE_load_file(store, ssl_cafile)) { if(!imported_native_ca && !imported_ca_info_blob) { @@ -3339,6 +3348,7 @@ static X509_STORE *get_cached_x509_store(struct Curl_cfilter *cf, struct Curl_multi *multi = data->multi_easy ? data->multi_easy : data->multi; X509_STORE *store = NULL; + DEBUGASSERT(multi); if(multi && multi->ssl_backend_data && multi->ssl_backend_data->store && @@ -3358,6 +3368,7 @@ static void set_cached_x509_store(struct Curl_cfilter *cf, struct Curl_multi *multi = data->multi_easy ? data->multi_easy : data->multi; struct multi_ssl_backend_data *mbackend; + DEBUGASSERT(multi); if(!multi) return; @@ -3449,17 +3460,6 @@ static CURLcode ossl_connect_step1(struct Curl_cfilter *cf, struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf); struct ssl_config_data *ssl_config = Curl_ssl_cf_get_config(cf, data); BIO *bio; - -#ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME - bool sni; - const char *hostname = connssl->hostname; - -#ifdef ENABLE_IPV6 - struct in6_addr addr; -#else - struct in_addr addr; -#endif -#endif const long int ssl_version = conn_config->version; char * const ssl_cert = ssl_config->primary.clientcert; const struct curl_blob *ssl_cert_blob = ssl_config->primary.cert_blob; @@ -3494,7 +3494,6 @@ static CURLcode ossl_connect_step1(struct Curl_cfilter *cf, #else req_method = SSLv23_client_method(); #endif - use_sni(TRUE); break; case CURL_SSLVERSION_SSLv2: failf(data, "No SSLv2 support"); @@ -3787,13 +3786,8 @@ static CURLcode ossl_connect_step1(struct Curl_cfilter *cf, backend->server_cert = 0x0; #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME - if((0 == Curl_inet_pton(AF_INET, hostname, &addr)) && -#ifdef ENABLE_IPV6 - (0 == Curl_inet_pton(AF_INET6, hostname, &addr)) && -#endif - sni) { - char *snihost = Curl_ssl_snihost(data, hostname, NULL); - if(!snihost || !SSL_set_tlsext_host_name(backend->handle, snihost)) { + if(connssl->peer.sni) { + if(!SSL_set_tlsext_host_name(backend->handle, connssl->peer.sni)) { failf(data, "Failed set SNI"); return CURLE_SSL_CONNECT_ERROR; } @@ -3802,6 +3796,7 @@ static CURLcode ossl_connect_step1(struct Curl_cfilter *cf, SSL_set_app_data(backend->handle, cf); + connssl->reused_session = FALSE; if(ssl_config->primary.sessionid) { Curl_ssl_sessionid_lock(data); if(!Curl_ssl_getsessionid(cf, data, &ssl_sessionid, NULL)) { @@ -3815,6 +3810,7 @@ static CURLcode ossl_connect_step1(struct Curl_cfilter *cf, } /* Informational message */ infof(data, "SSL reusing session ID"); + connssl->reused_session = TRUE; } Curl_ssl_sessionid_unlock(data); } @@ -3975,7 +3971,7 @@ static CURLcode ossl_connect_step2(struct Curl_cfilter *cf, Curl_strerror(sockerr, extramsg, sizeof(extramsg)); failf(data, OSSL_PACKAGE " SSL_connect: %s in connection to %s:%d ", extramsg[0] ? extramsg : SSL_ERROR_to_str(detail), - connssl->hostname, connssl->port); + connssl->peer.hostname, connssl->port); return result; } @@ -3986,13 +3982,28 @@ static CURLcode ossl_connect_step2(struct Curl_cfilter *cf, } } else { + int psigtype_nid = NID_undef; + const char *negotiated_group_name = NULL; + /* we connected fine, we're not waiting for anything else. */ connssl->connecting_state = ssl_connect_3; +#if (OPENSSL_VERSION_NUMBER >= 0x30000000L) + SSL_get_peer_signature_type_nid(backend->handle, &psigtype_nid); +#if (OPENSSL_VERSION_NUMBER >= 0x30200000L) + negotiated_group_name = SSL_get0_group_name(backend->handle); +#else + negotiated_group_name = + OBJ_nid2sn(SSL_get_negotiated_group(backend->handle) & 0x0000FFFF); +#endif +#endif + /* Informational message */ - infof(data, "SSL connection using %s / %s", + infof(data, "SSL connection using %s / %s / %s / %s", SSL_get_version(backend->handle), - SSL_get_cipher(backend->handle)); + SSL_get_cipher(backend->handle), + negotiated_group_name? negotiated_group_name : "[blank]", + OBJ_nid2sn(psigtype_nid)); #ifdef HAS_ALPN /* Sets data and len to negotiated protocol, len is 0 if no protocol was @@ -4069,6 +4080,75 @@ static CURLcode ossl_pkp_pin_peer_pubkey(struct Curl_easy *data, X509* cert, return result; } +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \ + !(defined(LIBRESSL_VERSION_NUMBER) && \ + LIBRESSL_VERSION_NUMBER < 0x3060000fL) && \ + !defined(OPENSSL_IS_BORINGSSL) && \ + !defined(OPENSSL_IS_AWSLC) && \ + !defined(CURL_DISABLE_VERBOSE_STRINGS) +static void infof_certstack(struct Curl_easy *data, const SSL *ssl) +{ + STACK_OF(X509) *certstack; + long verify_result; + int num_cert_levels; + int cert_level; + + verify_result = SSL_get_verify_result(ssl); + if(verify_result != X509_V_OK) + certstack = SSL_get_peer_cert_chain(ssl); + else + certstack = SSL_get0_verified_chain(ssl); + num_cert_levels = sk_X509_num(certstack); + + for(cert_level = 0; cert_level < num_cert_levels; cert_level++) { + char cert_algorithm[80] = ""; + char group_name_final[80] = ""; + const X509_ALGOR *palg_cert = NULL; + const ASN1_OBJECT *paobj_cert = NULL; + X509 *current_cert; + EVP_PKEY *current_pkey; + int key_bits; + int key_sec_bits; + int get_group_name; + const char *type_name; + + current_cert = sk_X509_value(certstack, cert_level); + + X509_get0_signature(NULL, &palg_cert, current_cert); + X509_ALGOR_get0(&paobj_cert, NULL, NULL, palg_cert); + OBJ_obj2txt(cert_algorithm, sizeof(cert_algorithm), paobj_cert, 0); + + current_pkey = X509_get0_pubkey(current_cert); + key_bits = EVP_PKEY_bits(current_pkey); +#if (OPENSSL_VERSION_NUMBER < 0x30000000L) +#define EVP_PKEY_get_security_bits EVP_PKEY_security_bits +#endif + key_sec_bits = EVP_PKEY_get_security_bits(current_pkey); +#if (OPENSSL_VERSION_NUMBER >= 0x30000000L) + { + char group_name[80] = ""; + get_group_name = EVP_PKEY_get_group_name(current_pkey, group_name, + sizeof(group_name), NULL); + msnprintf(group_name_final, sizeof(group_name_final), "/%s", group_name); + } + type_name = EVP_PKEY_get0_type_name(current_pkey); +#else + get_group_name = 0; + type_name = NULL; +#endif + + infof(data, + " Certificate level %d: " + "Public key type %s%s (%d/%d Bits/secBits), signed using %s", + cert_level, type_name ? type_name : "?", + get_group_name == 0 ? "" : group_name_final, + key_bits, key_sec_bits, cert_algorithm); + } +} +#else +#define infof_certstack(data, ssl) +#endif + /* * Get the server cert, verify it and show it, etc., only call failf() if the * 'strict' argument is TRUE as otherwise all this is for informational @@ -4147,8 +4227,8 @@ static CURLcode servercert(struct Curl_cfilter *cf, BIO_free(mem); if(conn_config->verifyhost) { - result = ossl_verifyhost(data, conn, backend->server_cert, - connssl->hostname, connssl->dispname); + result = Curl_ossl_verifyhost(data, conn, &connssl->peer, + backend->server_cert); if(result) { X509_free(backend->server_cert); backend->server_cert = NULL; @@ -4258,9 +4338,12 @@ static CURLcode servercert(struct Curl_cfilter *cf, infof(data, " SSL certificate verify ok."); } + infof_certstack(data, backend->handle); + #if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_TLSEXT) && \ !defined(OPENSSL_NO_OCSP) - if(conn_config->verifystatus) { + if(conn_config->verifystatus && !connssl->reused_session) { + /* don't do this after Session ID reuse */ result = verifystatus(cf, data); if(result) { X509_free(backend->server_cert); @@ -4522,22 +4605,9 @@ static ssize_t ossl_send(struct Curl_cfilter *cf, case SSL_ERROR_SSL: { /* A failure in the SSL library occurred, usually a protocol error. The OpenSSL error queue contains more information on the error. */ - struct Curl_cfilter *cf_ssl_next = Curl_ssl_cf_get_ssl(cf->next); - struct ssl_connect_data *connssl_next = cf_ssl_next? - cf_ssl_next->ctx : NULL; sslerror = ERR_get_error(); - if(ERR_GET_LIB(sslerror) == ERR_LIB_SSL && - ERR_GET_REASON(sslerror) == SSL_R_BIO_NOT_SET && - connssl->state == ssl_connection_complete && - (connssl_next && connssl_next->state == ssl_connection_complete) - ) { - char ver[120]; - (void)ossl_version(ver, sizeof(ver)); - failf(data, "Error: %s does not support double SSL tunneling.", ver); - } - else - failf(data, "SSL_write() error: %s", - ossl_strerror(sslerror, error_buffer, sizeof(error_buffer))); + failf(data, "SSL_write() error: %s", + ossl_strerror(sslerror, error_buffer, sizeof(error_buffer))); *curlcode = CURLE_SEND_ERROR; rc = -1; goto out; @@ -4842,7 +4912,7 @@ const struct Curl_ssl Curl_ssl_openssl = { ossl_cert_status_request, /* cert_status_request */ ossl_connect, /* connect */ ossl_connect_nonblocking, /* connect_nonblocking */ - Curl_ssl_get_select_socks,/* getsock */ + Curl_ssl_adjust_pollset, /* adjust_pollset */ ossl_get_internals, /* get_internals */ ossl_close, /* close_one */ ossl_close_all, /* close_all */ diff --git a/external/curl/lib/vtls/openssl.h b/external/curl/lib/vtls/openssl.h index 950faab88..e802363a4 100644 --- a/external/curl/lib/vtls/openssl.h +++ b/external/curl/lib/vtls/openssl.h @@ -31,24 +31,21 @@ * This header should only be needed to get included by vtls.c, openssl.c * and ngtcp2.c */ +#include #include #include "urldata.h" -/* - * In an effort to avoid using 'X509 *' here, we instead use the struct - * x509_st version of the type so that we can forward-declare it here without - * having to include . Including that header causes name - * conflicts when libcurl is built with both Schannel and OpenSSL support. - */ -struct x509_st; +#if (OPENSSL_VERSION_NUMBER < 0x30000000L) +#define SSL_get1_peer_certificate SSL_get_peer_certificate +#endif + CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn, - struct x509_st *server_cert); + struct ssl_peer *peer, X509 *server_cert); extern const struct Curl_ssl Curl_ssl_openssl; -struct ssl_ctx_st; CURLcode Curl_ossl_set_client_cert(struct Curl_easy *data, - struct ssl_ctx_st *ctx, char *cert_file, + SSL_CTX *ctx, char *cert_file, const struct curl_blob *cert_blob, const char *cert_type, char *key_file, const struct curl_blob *key_blob, @@ -65,5 +62,9 @@ CURLcode Curl_ssl_setup_x509_store(struct Curl_cfilter *cf, struct Curl_easy *data, SSL_CTX *ssl_ctx); +CURLcode Curl_ossl_ctx_configure(struct Curl_cfilter *cf, + struct Curl_easy *data, + SSL_CTX *ssl_ctx); + #endif /* USE_OPENSSL */ #endif /* HEADER_CURL_SSLUSE_H */ diff --git a/external/curl/lib/vtls/rustls.c b/external/curl/lib/vtls/rustls.c index a3e9d964c..8751fd981 100644 --- a/external/curl/lib/vtls/rustls.c +++ b/external/curl/lib/vtls/rustls.c @@ -39,6 +39,7 @@ #include "select.h" #include "strerror.h" #include "multiif.h" +#include "connect.h" /* for the connect timeout */ struct rustls_ssl_backend_data { @@ -75,14 +76,6 @@ cr_data_pending(struct Curl_cfilter *cf, const struct Curl_easy *data) return backend->data_pending; } -static CURLcode -cr_connect(struct Curl_cfilter *cf UNUSED_PARAM, - struct Curl_easy *data UNUSED_PARAM) -{ - infof(data, "rustls_connect: unimplemented"); - return CURLE_SSL_CONNECT_ERROR; -} - struct io_ctx { struct Curl_cfilter *cf; struct Curl_easy *data; @@ -386,7 +379,7 @@ cr_init_backend(struct Curl_cfilter *cf, struct Curl_easy *data, /* CURLOPT_CAINFO_BLOB overrides CURLOPT_CAINFO */ (ca_info_blob ? NULL : conn_config->CAfile); const bool verifypeer = conn_config->verifypeer; - const char *hostname = connssl->hostname; + const char *hostname = connssl->peer.hostname; char errorbuf[256]; size_t errorlen; int result; @@ -458,12 +451,11 @@ cr_init_backend(struct Curl_cfilter *cf, struct Curl_easy *data, backend->config = rustls_client_config_builder_build(config_builder); DEBUGASSERT(rconn == NULL); { - char *snihost = Curl_ssl_snihost(data, hostname, NULL); - if(!snihost) { - failf(data, "rustls: failed to get SNI"); - return CURLE_SSL_CONNECT_ERROR; - } - result = rustls_client_connection_new(backend->config, snihost, &rconn); + /* rustls claims to manage ip address hostnames as well here. So, + * if we have an SNI, we use it, otherwise we pass the hostname */ + char *server = connssl->peer.sni? + connssl->peer.sni : connssl->peer.hostname; + result = rustls_client_connection_new(backend->config, server, &rconn); } if(result != RUSTLS_RESULT_OK) { rustls_error(result, errorbuf, sizeof(errorbuf), &errorlen); @@ -486,9 +478,20 @@ cr_set_negotiated_alpn(struct Curl_cfilter *cf, struct Curl_easy *data, Curl_alpn_set_negotiated(cf, data, protocol, len); } +/* Given an established network connection, do a TLS handshake. + * + * If `blocking` is true, this function will block until the handshake is + * complete. Otherwise it will return as soon as I/O would block. + * + * For the non-blocking I/O case, this function will set `*done` to true + * once the handshake is complete. This function never reads the value of + * `*done*`. + */ static CURLcode -cr_connect_nonblocking(struct Curl_cfilter *cf, - struct Curl_easy *data, bool *done) +cr_connect_common(struct Curl_cfilter *cf, + struct Curl_easy *data, + bool blocking, + bool *done) { struct ssl_connect_data *const connssl = cf->ctx; curl_socket_t sockfd = Curl_conn_cf_get_socket(cf, data); @@ -502,6 +505,8 @@ cr_connect_nonblocking(struct Curl_cfilter *cf, bool wants_write; curl_socket_t writefd; curl_socket_t readfd; + timediff_t timeout_ms; + timediff_t socket_check_timeout; DEBUGASSERT(backend); @@ -539,12 +544,29 @@ cr_connect_nonblocking(struct Curl_cfilter *cf, writefd = wants_write?sockfd:CURL_SOCKET_BAD; readfd = wants_read?sockfd:CURL_SOCKET_BAD; - what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd, 0); + /* check allowed time left */ + timeout_ms = Curl_timeleft(data, NULL, TRUE); + + if(timeout_ms < 0) { + /* no need to continue if time already is up */ + failf(data, "rustls: operation timed out before socket check"); + return CURLE_OPERATION_TIMEDOUT; + } + + socket_check_timeout = blocking?timeout_ms:0; + + what = Curl_socket_check( + readfd, CURL_SOCKET_BAD, writefd, socket_check_timeout); if(what < 0) { /* fatal error */ failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO); return CURLE_SSL_CONNECT_ERROR; } + if(blocking && 0 == what) { + failf(data, "rustls connection timeout after %d ms", + socket_check_timeout); + return CURLE_OPERATION_TIMEDOUT; + } if(0 == what) { infof(data, "Curl_socket_check: %s would block", wants_read&&wants_write ? "writing and reading" : @@ -589,32 +611,43 @@ cr_connect_nonblocking(struct Curl_cfilter *cf, DEBUGASSERT(false); } -/* returns a bitmap of flags for this connection's first socket indicating - whether we want to read or write */ -static int -cr_get_select_socks(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) +static CURLcode +cr_connect_nonblocking(struct Curl_cfilter *cf, + struct Curl_easy *data, bool *done) { - struct ssl_connect_data *const connssl = cf->ctx; - curl_socket_t sockfd = Curl_conn_cf_get_socket(cf, data); - struct rustls_ssl_backend_data *const backend = - (struct rustls_ssl_backend_data *)connssl->backend; - struct rustls_connection *rconn = NULL; + return cr_connect_common(cf, data, false, done); +} - (void)data; - DEBUGASSERT(backend); - rconn = backend->conn; +static CURLcode +cr_connect_blocking(struct Curl_cfilter *cf UNUSED_PARAM, + struct Curl_easy *data UNUSED_PARAM) +{ + bool done; /* unused */ + return cr_connect_common(cf, data, true, &done); +} - if(rustls_connection_wants_write(rconn)) { - socks[0] = sockfd; - return GETSOCK_WRITESOCK(0); - } - if(rustls_connection_wants_read(rconn)) { - socks[0] = sockfd; - return GETSOCK_READSOCK(0); +static void cr_adjust_pollset(struct Curl_cfilter *cf, + struct Curl_easy *data, + struct easy_pollset *ps) +{ + if(!cf->connected) { + curl_socket_t sock = Curl_conn_cf_get_socket(cf->next, data); + struct ssl_connect_data *const connssl = cf->ctx; + struct rustls_ssl_backend_data *const backend = + (struct rustls_ssl_backend_data *)connssl->backend; + struct rustls_connection *rconn = NULL; + + (void)data; + DEBUGASSERT(backend); + rconn = backend->conn; + + if(rustls_connection_wants_write(rconn)) { + Curl_pollset_add_out(data, ps, sock); + } + if(rustls_connection_wants_read(rconn)) { + Curl_pollset_add_in(data, ps, sock); + } } - - return GETSOCK_BLANK; } static void * @@ -675,9 +708,9 @@ const struct Curl_ssl Curl_ssl_rustls = { cr_data_pending, /* data_pending */ Curl_none_random, /* random */ Curl_none_cert_status_request, /* cert_status_request */ - cr_connect, /* connect */ + cr_connect_blocking, /* connect */ cr_connect_nonblocking, /* connect_nonblocking */ - cr_get_select_socks, /* get_select_socks */ + cr_adjust_pollset, /* adjust_pollset */ cr_get_internals, /* get_internals */ cr_close, /* close_one */ Curl_none_close_all, /* close_all */ diff --git a/external/curl/lib/vtls/schannel.c b/external/curl/lib/vtls/schannel.c index 410a5c4ec..ae7f2956d 100644 --- a/external/curl/lib/vtls/schannel.c +++ b/external/curl/lib/vtls/schannel.c @@ -1063,17 +1063,12 @@ schannel_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) #endif SECURITY_STATUS sspi_status = SEC_E_OK; struct Curl_schannel_cred *old_cred = NULL; - struct in_addr addr; -#ifdef ENABLE_IPV6 - struct in6_addr addr6; -#endif CURLcode result; - const char *hostname = connssl->hostname; DEBUGASSERT(backend); DEBUGF(infof(data, "schannel: SSL/TLS connection with %s port %d (step 1/3)", - hostname, connssl->port)); + connssl->peer.hostname, connssl->port)); if(curlx_verify_windows_version(5, 1, 0, PLATFORM_WINNT, VERSION_LESS_THAN_EQUAL)) { @@ -1154,22 +1149,14 @@ schannel_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) /* A hostname associated with the credential is needed by InitializeSecurityContext for SNI and other reasons. */ - snihost = Curl_ssl_snihost(data, hostname, NULL); - if(!snihost) { - failf(data, "Failed to set SNI"); - return CURLE_SSL_CONNECT_ERROR; - } + snihost = connssl->peer.sni? connssl->peer.sni : connssl->peer.hostname; backend->cred->sni_hostname = curlx_convert_UTF8_to_tchar(snihost); if(!backend->cred->sni_hostname) return CURLE_OUT_OF_MEMORY; } /* Warn if SNI is disabled due to use of an IP address */ - if(Curl_inet_pton(AF_INET, hostname, &addr) -#ifdef ENABLE_IPV6 - || Curl_inet_pton(AF_INET6, hostname, &addr6) -#endif - ) { + if(connssl->peer.is_ip_address) { infof(data, "schannel: using IP address, SNI is not supported by OS."); } @@ -1346,7 +1333,7 @@ schannel_connect_step2(struct Curl_cfilter *cf, struct Curl_easy *data) DEBUGF(infof(data, "schannel: SSL/TLS connection with %s port %d (step 2/3)", - connssl->hostname, connssl->port)); + connssl->peer.hostname, connssl->port)); if(!backend->cred || !backend->ctxt) return CURLE_SSL_CONNECT_ERROR; @@ -1700,7 +1687,7 @@ schannel_connect_step3(struct Curl_cfilter *cf, struct Curl_easy *data) DEBUGF(infof(data, "schannel: SSL/TLS connection with %s port %d (step 3/3)", - connssl->hostname, connssl->port)); + connssl->peer.hostname, connssl->port)); if(!backend->cred) return CURLE_SSL_CONNECT_ERROR; @@ -2498,7 +2485,7 @@ static int schannel_shutdown(struct Curl_cfilter *cf, if(backend->ctxt) { infof(data, "schannel: shutting down SSL/TLS connection with %s port %d", - connssl->hostname, connssl->port); + connssl->peer.hostname, connssl->port); } if(backend->cred && backend->ctxt) { @@ -2754,6 +2741,151 @@ static void *schannel_get_internals(struct ssl_connect_data *connssl, return &backend->ctxt->ctxt_handle; } +HCERTSTORE Curl_schannel_get_cached_cert_store(struct Curl_cfilter *cf, + const struct Curl_easy *data) +{ + struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf); + struct Curl_multi *multi = data->multi_easy ? data->multi_easy : data->multi; + const struct curl_blob *ca_info_blob = conn_config->ca_info_blob; + struct schannel_multi_ssl_backend_data *mbackend; + const struct ssl_general_config *cfg = &data->set.general_ssl; + timediff_t timeout_ms; + timediff_t elapsed_ms; + struct curltime now; + unsigned char info_blob_digest[CURL_SHA256_DIGEST_LENGTH]; + + DEBUGASSERT(multi); + + if(!multi || !multi->ssl_backend_data) { + return NULL; + } + + mbackend = (struct schannel_multi_ssl_backend_data *)multi->ssl_backend_data; + if(!mbackend->cert_store) { + return NULL; + } + + /* zero ca_cache_timeout completely disables caching */ + if(!cfg->ca_cache_timeout) { + return NULL; + } + + /* check for cache timeout by using the cached_x509_store_expired timediff + calculation pattern from openssl.c. + negative timeout means retain forever. */ + timeout_ms = cfg->ca_cache_timeout * (timediff_t)1000; + if(timeout_ms >= 0) { + now = Curl_now(); + elapsed_ms = Curl_timediff(now, mbackend->time); + if(elapsed_ms >= timeout_ms) { + return NULL; + } + } + + if(ca_info_blob) { + if(!mbackend->CAinfo_blob_digest) { + return NULL; + } + if(mbackend->CAinfo_blob_size != ca_info_blob->len) { + return NULL; + } + schannel_sha256sum((const unsigned char *)ca_info_blob->data, + ca_info_blob->len, + info_blob_digest, + CURL_SHA256_DIGEST_LENGTH); + if(memcmp(mbackend->CAinfo_blob_digest, + info_blob_digest, + CURL_SHA256_DIGEST_LENGTH)) { + return NULL; + } + } + else { + if(!conn_config->CAfile || !mbackend->CAfile || + strcmp(mbackend->CAfile, conn_config->CAfile)) { + return NULL; + } + } + + return mbackend->cert_store; +} + +bool Curl_schannel_set_cached_cert_store(struct Curl_cfilter *cf, + const struct Curl_easy *data, + HCERTSTORE cert_store) +{ + struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf); + struct Curl_multi *multi = data->multi_easy ? data->multi_easy : data->multi; + const struct curl_blob *ca_info_blob = conn_config->ca_info_blob; + struct schannel_multi_ssl_backend_data *mbackend; + unsigned char *CAinfo_blob_digest = NULL; + size_t CAinfo_blob_size = 0; + char *CAfile = NULL; + + DEBUGASSERT(multi); + + if(!multi) { + return false; + } + + if(!multi->ssl_backend_data) { + multi->ssl_backend_data = + calloc(1, sizeof(struct schannel_multi_ssl_backend_data)); + if(!multi->ssl_backend_data) { + return false; + } + } + + mbackend = (struct schannel_multi_ssl_backend_data *)multi->ssl_backend_data; + + + if(ca_info_blob) { + CAinfo_blob_digest = malloc(CURL_SHA256_DIGEST_LENGTH); + if(!CAinfo_blob_digest) { + return false; + } + schannel_sha256sum((const unsigned char *)ca_info_blob->data, + ca_info_blob->len, + CAinfo_blob_digest, + CURL_SHA256_DIGEST_LENGTH); + CAinfo_blob_size = ca_info_blob->len; + } + else { + if(conn_config->CAfile) { + CAfile = strdup(conn_config->CAfile); + if(!CAfile) { + return false; + } + } + } + + /* free old cache data */ + if(mbackend->cert_store) { + CertCloseStore(mbackend->cert_store, 0); + } + free(mbackend->CAinfo_blob_digest); + free(mbackend->CAfile); + + mbackend->time = Curl_now(); + mbackend->cert_store = cert_store; + mbackend->CAinfo_blob_digest = CAinfo_blob_digest; + mbackend->CAinfo_blob_size = CAinfo_blob_size; + mbackend->CAfile = CAfile; + return true; +} + +static void schannel_free_multi_ssl_backend_data( + struct multi_ssl_backend_data *msbd) +{ + struct schannel_multi_ssl_backend_data *mbackend = + (struct schannel_multi_ssl_backend_data*)msbd; + if(mbackend->cert_store) { + CertCloseStore(mbackend->cert_store, 0); + } + free(mbackend->CAinfo_blob_digest); + free(mbackend->CAfile); + free(mbackend); +} + const struct Curl_ssl Curl_ssl_schannel = { { CURLSSLBACKEND_SCHANNEL, "schannel" }, /* info */ @@ -2777,7 +2909,7 @@ const struct Curl_ssl Curl_ssl_schannel = { Curl_none_cert_status_request, /* cert_status_request */ schannel_connect, /* connect */ schannel_connect_nonblocking, /* connect_nonblocking */ - Curl_ssl_get_select_socks, /* getsock */ + Curl_ssl_adjust_pollset, /* adjust_pollset */ schannel_get_internals, /* get_internals */ schannel_close, /* close_one */ Curl_none_close_all, /* close_all */ @@ -2789,7 +2921,7 @@ const struct Curl_ssl Curl_ssl_schannel = { schannel_sha256sum, /* sha256sum */ NULL, /* associate_connection */ NULL, /* disassociate_connection */ - NULL, /* free_multi_ssl_backend_data */ + schannel_free_multi_ssl_backend_data, /* free_multi_ssl_backend_data */ schannel_recv, /* recv decrypted data */ schannel_send, /* send data to encrypt */ }; diff --git a/external/curl/lib/vtls/schannel_int.h b/external/curl/lib/vtls/schannel_int.h index a128e04f6..fe7450d45 100644 --- a/external/curl/lib/vtls/schannel_int.h +++ b/external/curl/lib/vtls/schannel_int.h @@ -149,5 +149,22 @@ struct schannel_ssl_backend_data { #endif }; +struct schannel_multi_ssl_backend_data { + unsigned char *CAinfo_blob_digest; /* CA info blob digest */ + size_t CAinfo_blob_size; /* CA info blob size */ + char *CAfile; /* CAfile path used to generate + certificate store */ + HCERTSTORE cert_store; /* cached certificate store or + NULL if none */ + struct curltime time; /* when the cached store was created */ +}; + +HCERTSTORE Curl_schannel_get_cached_cert_store(struct Curl_cfilter *cf, + const struct Curl_easy *data); + +bool Curl_schannel_set_cached_cert_store(struct Curl_cfilter *cf, + const struct Curl_easy *data, + HCERTSTORE cert_store); + #endif /* USE_SCHANNEL */ #endif /* HEADER_CURL_SCHANNEL_INT_H */ diff --git a/external/curl/lib/vtls/schannel_verify.c b/external/curl/lib/vtls/schannel_verify.c index a5d5c98bb..e7c8bc66b 100644 --- a/external/curl/lib/vtls/schannel_verify.c +++ b/external/curl/lib/vtls/schannel_verify.c @@ -470,7 +470,7 @@ CURLcode Curl_verify_host(struct Curl_cfilter *cf, CERT_CONTEXT *pCertContextServer = NULL; TCHAR *cert_hostname_buff = NULL; size_t cert_hostname_buff_index = 0; - const char *conn_hostname = connssl->hostname; + const char *conn_hostname = connssl->peer.hostname; size_t hostlen = strlen(conn_hostname); DWORD len = 0; DWORD actual_len = 0; @@ -600,6 +600,7 @@ CURLcode Curl_verify_certificate(struct Curl_cfilter *cf, const CERT_CHAIN_CONTEXT *pChainContext = NULL; HCERTCHAINENGINE cert_chain_engine = NULL; HCERTSTORE trust_store = NULL; + HCERTSTORE own_trust_store = NULL; DEBUGASSERT(BACKEND); @@ -630,31 +631,46 @@ CURLcode Curl_verify_certificate(struct Curl_cfilter *cf, result = CURLE_SSL_CACERT_BADFILE; } else { - /* Open the certificate store */ - trust_store = CertOpenStore(CERT_STORE_PROV_MEMORY, - 0, - (HCRYPTPROV)NULL, - CERT_STORE_CREATE_NEW_FLAG, - NULL); - if(!trust_store) { - char buffer[STRERROR_LEN]; - failf(data, "schannel: failed to create certificate store: %s", - Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer))); - result = CURLE_SSL_CACERT_BADFILE; + /* try cache */ + trust_store = Curl_schannel_get_cached_cert_store(cf, data); + + if(trust_store) { + infof(data, "schannel: reusing certificate store from cache"); } else { - const struct curl_blob *ca_info_blob = conn_config->ca_info_blob; - if(ca_info_blob) { - result = add_certs_data_to_store(trust_store, - (const char *)ca_info_blob->data, - ca_info_blob->len, - "(memory blob)", - data); + /* Open the certificate store */ + trust_store = CertOpenStore(CERT_STORE_PROV_MEMORY, + 0, + (HCRYPTPROV)NULL, + CERT_STORE_CREATE_NEW_FLAG, + NULL); + if(!trust_store) { + char buffer[STRERROR_LEN]; + failf(data, "schannel: failed to create certificate store: %s", + Curl_winapi_strerror(GetLastError(), buffer, sizeof(buffer))); + result = CURLE_SSL_CACERT_BADFILE; } else { - result = add_certs_file_to_store(trust_store, - conn_config->CAfile, - data); + const struct curl_blob *ca_info_blob = conn_config->ca_info_blob; + own_trust_store = trust_store; + + if(ca_info_blob) { + result = add_certs_data_to_store(trust_store, + (const char *)ca_info_blob->data, + ca_info_blob->len, + "(memory blob)", + data); + } + else { + result = add_certs_file_to_store(trust_store, + conn_config->CAfile, + data); + } + if(result == CURLE_OK) { + if(Curl_schannel_set_cached_cert_store(cf, data, trust_store)) { + own_trust_store = NULL; + } + } } } } @@ -754,8 +770,8 @@ CURLcode Curl_verify_certificate(struct Curl_cfilter *cf, CertFreeCertificateChainEngine(cert_chain_engine); } - if(trust_store) { - CertCloseStore(trust_store, 0); + if(own_trust_store) { + CertCloseStore(own_trust_store, 0); } if(pChainContext) diff --git a/external/curl/lib/vtls/sectransp.c b/external/curl/lib/vtls/sectransp.c index 3378f7619..0a22ff60b 100644 --- a/external/curl/lib/vtls/sectransp.c +++ b/external/curl/lib/vtls/sectransp.c @@ -46,8 +46,10 @@ #endif /* __clang__ */ #ifdef __GNUC__ +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Waddress" #pragma GCC diagnostic ignored "-Wundef" +#pragma GCC diagnostic ignored "-Wunreachable-code" #endif #include @@ -1013,7 +1015,7 @@ static CURLcode CopyCertSubject(struct Curl_easy *data, } else { size_t cbuf_size = ((size_t)CFStringGetLength(c) * 4) + 1; - cbuf = calloc(cbuf_size, 1); + cbuf = calloc(1, cbuf_size); if(cbuf) { if(!CFStringGetCString(c, cbuf, cbuf_size, kCFStringEncodingUTF8)) { @@ -1651,11 +1653,6 @@ static CURLcode sectransp_connect_step1(struct Curl_cfilter *cf, const bool verifypeer = conn_config->verifypeer; char * const ssl_cert = ssl_config->primary.clientcert; const struct curl_blob *ssl_cert_blob = ssl_config->primary.cert_blob; -#ifdef ENABLE_IPV6 - struct in6_addr addr; -#else - struct in_addr addr; -#endif /* ENABLE_IPV6 */ char *ciphers; OSStatus err = noErr; #if CURL_BUILD_MAC @@ -2003,13 +2000,9 @@ static CURLcode sectransp_connect_step1(struct Curl_cfilter *cf, * Both hostname check and SNI require SSLSetPeerDomainName(). * Also: the verifyhost setting influences SNI usage */ if(conn_config->verifyhost) { - size_t snilen; - char *snihost = Curl_ssl_snihost(data, connssl->hostname, &snilen); - if(!snihost) { - failf(data, "Failed to set SNI"); - return CURLE_SSL_CONNECT_ERROR; - } - err = SSLSetPeerDomainName(backend->ssl_ctx, snihost, snilen); + char *server = connssl->peer.sni? + connssl->peer.sni : connssl->peer.hostname; + err = SSLSetPeerDomainName(backend->ssl_ctx, server, strlen(server)); if(err != noErr) { failf(data, "SSL: SSLSetPeerDomainName() failed: OSStatus %d", @@ -2017,11 +2010,7 @@ static CURLcode sectransp_connect_step1(struct Curl_cfilter *cf, return CURLE_SSL_CONNECT_ERROR; } - if((Curl_inet_pton(AF_INET, connssl->hostname, &addr)) - #ifdef ENABLE_IPV6 - || (Curl_inet_pton(AF_INET6, connssl->hostname, &addr)) - #endif - ) { + if(connssl->peer.is_ip_address) { infof(data, "WARNING: using IP address, SNI is being disabled by " "the OS."); } @@ -2079,7 +2068,7 @@ static CURLcode sectransp_connect_step1(struct Curl_cfilter *cf, ssl_sessionid = aprintf("%s:%d:%d:%s:%d", ssl_cafile ? ssl_cafile : "(blob memory)", - verifypeer, conn_config->verifyhost, connssl->hostname, + verifypeer, conn_config->verifyhost, connssl->peer.hostname, connssl->port); ssl_sessionid_len = strlen(ssl_sessionid); @@ -2665,7 +2654,7 @@ static CURLcode sectransp_connect_step2(struct Curl_cfilter *cf, host name: */ case errSSLHostNameMismatch: failf(data, "SSL certificate peer verification failed, the " - "certificate did not match \"%s\"\n", connssl->dispname); + "certificate did not match \"%s\"\n", connssl->peer.dispname); return CURLE_PEER_FAILED_VERIFICATION; /* Problem with SSL / TLS negotiation */ @@ -2757,7 +2746,7 @@ static CURLcode sectransp_connect_step2(struct Curl_cfilter *cf, default: /* May also return codes listed in Security Framework Result Codes */ failf(data, "Unknown SSL protocol error in connection to %s:%d", - connssl->hostname, err); + connssl->peer.hostname, err); break; } return CURLE_SSL_CONNECT_ERROR; @@ -3415,7 +3404,6 @@ static ssize_t sectransp_recv(struct Curl_cfilter *cf, } *curlcode = CURLE_AGAIN; return -1L; - break; /* errSSLClosedGraceful - server gracefully shut down the SSL session errSSLClosedNoNotify - server hung up on us instead of sending a @@ -3425,7 +3413,6 @@ static ssize_t sectransp_recv(struct Curl_cfilter *cf, case errSSLClosedNoNotify: *curlcode = CURLE_OK; return 0; - break; /* The below is errSSLPeerAuthCompleted; it's not defined in Leopard's headers */ @@ -3445,7 +3432,6 @@ static ssize_t sectransp_recv(struct Curl_cfilter *cf, failf(data, "SSLRead() return error %d", err); *curlcode = CURLE_RECV_ERROR; return -1L; - break; } } return (ssize_t)processed; @@ -3483,7 +3469,7 @@ const struct Curl_ssl Curl_ssl_sectransp = { Curl_none_cert_status_request, /* cert_status_request */ sectransp_connect, /* connect */ sectransp_connect_nonblocking, /* connect_nonblocking */ - Curl_ssl_get_select_socks, /* getsock */ + Curl_ssl_adjust_pollset, /* adjust_pollset */ sectransp_get_internals, /* get_internals */ sectransp_close, /* close_one */ Curl_none_close_all, /* close_all */ @@ -3500,6 +3486,10 @@ const struct Curl_ssl Curl_ssl_sectransp = { sectransp_send, /* send data to encrypt */ }; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + #ifdef __clang__ #pragma clang diagnostic pop #endif diff --git a/external/curl/lib/vtls/vtls.c b/external/curl/lib/vtls/vtls.c index 494b660a9..34eda3e5a 100644 --- a/external/curl/lib/vtls/vtls.c +++ b/external/curl/lib/vtls/vtls.c @@ -67,6 +67,7 @@ #include "warnless.h" #include "curl_base64.h" #include "curl_printf.h" +#include "inet_pton.h" #include "strdup.h" /* The last #include files should be: */ @@ -131,9 +132,6 @@ static bool blobcmp(struct curl_blob *first, struct curl_blob *second) } #ifdef USE_SSL -static const struct alpn_spec ALPN_SPEC_H10 = { - { ALPN_HTTP_1_0 }, 1 -}; static const struct alpn_spec ALPN_SPEC_H11 = { { ALPN_HTTP_1_1 }, 1 }; @@ -147,51 +145,83 @@ static const struct alpn_spec *alpn_get_spec(int httpwant, bool use_alpn) { if(!use_alpn) return NULL; - if(httpwant == CURL_HTTP_VERSION_1_0) - return &ALPN_SPEC_H10; #ifdef USE_HTTP2 if(httpwant >= CURL_HTTP_VERSION_2) return &ALPN_SPEC_H2_H11; +#else + (void)httpwant; #endif + /* Use the ALPN protocol "http/1.1" for HTTP/1.x. + Avoid "http/1.0" because some servers don't support it. */ return &ALPN_SPEC_H11; } #endif /* USE_SSL */ -bool -Curl_ssl_config_matches(struct ssl_primary_config *data, - struct ssl_primary_config *needle) -{ - if((data->version == needle->version) && - (data->version_max == needle->version_max) && - (data->ssl_options == needle->ssl_options) && - (data->verifypeer == needle->verifypeer) && - (data->verifyhost == needle->verifyhost) && - (data->verifystatus == needle->verifystatus) && - blobcmp(data->cert_blob, needle->cert_blob) && - blobcmp(data->ca_info_blob, needle->ca_info_blob) && - blobcmp(data->issuercert_blob, needle->issuercert_blob) && - Curl_safecmp(data->CApath, needle->CApath) && - Curl_safecmp(data->CAfile, needle->CAfile) && - Curl_safecmp(data->issuercert, needle->issuercert) && - Curl_safecmp(data->clientcert, needle->clientcert) && +void Curl_ssl_easy_config_init(struct Curl_easy *data) +{ + /* + * libcurl 7.10 introduced SSL verification *by default*! This needs to be + * switched off unless wanted. + */ + data->set.ssl.primary.verifypeer = TRUE; + data->set.ssl.primary.verifyhost = TRUE; + data->set.ssl.primary.sessionid = TRUE; /* session ID caching by default */ +#ifndef CURL_DISABLE_PROXY + data->set.proxy_ssl = data->set.ssl; +#endif +} + +static bool +match_ssl_primary_config(struct Curl_easy *data, + struct ssl_primary_config *c1, + struct ssl_primary_config *c2) +{ + (void)data; + if((c1->version == c2->version) && + (c1->version_max == c2->version_max) && + (c1->ssl_options == c2->ssl_options) && + (c1->verifypeer == c2->verifypeer) && + (c1->verifyhost == c2->verifyhost) && + (c1->verifystatus == c2->verifystatus) && + blobcmp(c1->cert_blob, c2->cert_blob) && + blobcmp(c1->ca_info_blob, c2->ca_info_blob) && + blobcmp(c1->issuercert_blob, c2->issuercert_blob) && + Curl_safecmp(c1->CApath, c2->CApath) && + Curl_safecmp(c1->CAfile, c2->CAfile) && + Curl_safecmp(c1->issuercert, c2->issuercert) && + Curl_safecmp(c1->clientcert, c2->clientcert) && #ifdef USE_TLS_SRP - !Curl_timestrcmp(data->username, needle->username) && - !Curl_timestrcmp(data->password, needle->password) && + !Curl_timestrcmp(c1->username, c2->username) && + !Curl_timestrcmp(c1->password, c2->password) && #endif - strcasecompare(data->cipher_list, needle->cipher_list) && - strcasecompare(data->cipher_list13, needle->cipher_list13) && - strcasecompare(data->curves, needle->curves) && - strcasecompare(data->CRLfile, needle->CRLfile) && - strcasecompare(data->pinned_key, needle->pinned_key)) + strcasecompare(c1->cipher_list, c2->cipher_list) && + strcasecompare(c1->cipher_list13, c2->cipher_list13) && + strcasecompare(c1->curves, c2->curves) && + strcasecompare(c1->CRLfile, c2->CRLfile) && + strcasecompare(c1->pinned_key, c2->pinned_key)) return TRUE; return FALSE; } -bool -Curl_clone_primary_ssl_config(struct ssl_primary_config *source, - struct ssl_primary_config *dest) +bool Curl_ssl_conn_config_match(struct Curl_easy *data, + struct connectdata *candidate, + bool proxy) +{ +#ifndef CURL_DISABLE_PROXY + if(proxy) + return match_ssl_primary_config(data, &data->set.proxy_ssl.primary, + &candidate->proxy_ssl_config); +#else + (void)proxy; +#endif + return match_ssl_primary_config(data, &data->set.ssl.primary, + &candidate->ssl_config); +} + +static bool clone_ssl_primary_config(struct ssl_primary_config *source, + struct ssl_primary_config *dest) { dest->version = source->version; dest->version_max = source->version_max; @@ -221,7 +251,7 @@ Curl_clone_primary_ssl_config(struct ssl_primary_config *source, return TRUE; } -void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc) +static void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc) { Curl_safefree(sslc->CApath); Curl_safefree(sslc->CAfile); @@ -241,6 +271,111 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc) #endif } +CURLcode Curl_ssl_easy_config_complete(struct Curl_easy *data) +{ + data->set.ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH]; + data->set.ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE]; + data->set.ssl.primary.CRLfile = data->set.str[STRING_SSL_CRLFILE]; + data->set.ssl.primary.issuercert = data->set.str[STRING_SSL_ISSUERCERT]; + data->set.ssl.primary.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT]; + data->set.ssl.primary.cipher_list = + data->set.str[STRING_SSL_CIPHER_LIST]; + data->set.ssl.primary.cipher_list13 = + data->set.str[STRING_SSL_CIPHER13_LIST]; + data->set.ssl.primary.pinned_key = + data->set.str[STRING_SSL_PINNEDPUBLICKEY]; + data->set.ssl.primary.cert_blob = data->set.blobs[BLOB_CERT]; + data->set.ssl.primary.ca_info_blob = data->set.blobs[BLOB_CAINFO]; + data->set.ssl.primary.curves = data->set.str[STRING_SSL_EC_CURVES]; +#ifdef USE_TLS_SRP + data->set.ssl.primary.username = data->set.str[STRING_TLSAUTH_USERNAME]; + data->set.ssl.primary.password = data->set.str[STRING_TLSAUTH_PASSWORD]; +#endif + data->set.ssl.cert_type = data->set.str[STRING_CERT_TYPE]; + data->set.ssl.key = data->set.str[STRING_KEY]; + data->set.ssl.key_type = data->set.str[STRING_KEY_TYPE]; + data->set.ssl.key_passwd = data->set.str[STRING_KEY_PASSWD]; + data->set.ssl.primary.clientcert = data->set.str[STRING_CERT]; + data->set.ssl.key_blob = data->set.blobs[BLOB_KEY]; + +#ifndef CURL_DISABLE_PROXY + data->set.proxy_ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_PROXY]; + data->set.proxy_ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE_PROXY]; + data->set.proxy_ssl.primary.cipher_list = + data->set.str[STRING_SSL_CIPHER_LIST_PROXY]; + data->set.proxy_ssl.primary.cipher_list13 = + data->set.str[STRING_SSL_CIPHER13_LIST_PROXY]; + data->set.proxy_ssl.primary.pinned_key = + data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]; + data->set.proxy_ssl.primary.cert_blob = data->set.blobs[BLOB_CERT_PROXY]; + data->set.proxy_ssl.primary.ca_info_blob = + data->set.blobs[BLOB_CAINFO_PROXY]; + data->set.proxy_ssl.primary.issuercert = + data->set.str[STRING_SSL_ISSUERCERT_PROXY]; + data->set.proxy_ssl.primary.issuercert_blob = + data->set.blobs[BLOB_SSL_ISSUERCERT_PROXY]; + data->set.proxy_ssl.primary.CRLfile = + data->set.str[STRING_SSL_CRLFILE_PROXY]; + data->set.proxy_ssl.cert_type = data->set.str[STRING_CERT_TYPE_PROXY]; + data->set.proxy_ssl.key = data->set.str[STRING_KEY_PROXY]; + data->set.proxy_ssl.key_type = data->set.str[STRING_KEY_TYPE_PROXY]; + data->set.proxy_ssl.key_passwd = data->set.str[STRING_KEY_PASSWD_PROXY]; + data->set.proxy_ssl.primary.clientcert = data->set.str[STRING_CERT_PROXY]; + data->set.proxy_ssl.key_blob = data->set.blobs[BLOB_KEY_PROXY]; +#ifdef USE_TLS_SRP + data->set.proxy_ssl.primary.username = + data->set.str[STRING_TLSAUTH_USERNAME_PROXY]; + data->set.proxy_ssl.primary.password = + data->set.str[STRING_TLSAUTH_PASSWORD_PROXY]; +#endif +#endif /* CURL_DISABLE_PROXY */ + + return CURLE_OK; +} + +CURLcode Curl_ssl_conn_config_init(struct Curl_easy *data, + struct connectdata *conn) +{ + /* Clone "primary" SSL configurations from the esay handle to + * the connection. They are used for connection cache matching and + * probably outlive the easy handle */ + if(!clone_ssl_primary_config(&data->set.ssl.primary, &conn->ssl_config)) + return CURLE_OUT_OF_MEMORY; +#ifndef CURL_DISABLE_PROXY + if(!clone_ssl_primary_config(&data->set.proxy_ssl.primary, + &conn->proxy_ssl_config)) + return CURLE_OUT_OF_MEMORY; +#endif + return CURLE_OK; +} + +void Curl_ssl_conn_config_cleanup(struct connectdata *conn) +{ + Curl_free_primary_ssl_config(&conn->ssl_config); +#ifndef CURL_DISABLE_PROXY + Curl_free_primary_ssl_config(&conn->proxy_ssl_config); +#endif +} + +void Curl_ssl_conn_config_update(struct Curl_easy *data, bool for_proxy) +{ + /* May be called on an easy that has no connection yet */ + if(data->conn) { + struct ssl_primary_config *src, *dest; +#ifndef CURL_DISABLE_PROXY + src = for_proxy? &data->set.proxy_ssl.primary : &data->set.ssl.primary; + dest = for_proxy? &data->conn->proxy_ssl_config : &data->conn->ssl_config; +#else + (void)for_proxy; + src = &data->set.ssl.primary; + dest = &data->conn->ssl_config; +#endif + dest->verifyhost = src->verifyhost; + dest->verifypeer = src->verifypeer; + dest->verifystatus = src->verifystatus; + } +} + #ifdef USE_SSL static int multissl_setup(const struct Curl_ssl *backend); #endif @@ -432,7 +567,7 @@ bool Curl_ssl_getsessionid(struct Curl_cfilter *cf, if(!check->sessionid) /* not session ID means blank entry */ continue; - if(strcasecompare(connssl->hostname, check->name) && + if(strcasecompare(connssl->peer.hostname, check->name) && ((!cf->conn->bits.conn_to_host && !check->conn_to_host) || (cf->conn->bits.conn_to_host && check->conn_to_host && strcasecompare(cf->conn->conn_to_host.name, check->conn_to_host))) && @@ -441,7 +576,7 @@ bool Curl_ssl_getsessionid(struct Curl_cfilter *cf, cf->conn->conn_to_port == check->conn_to_port)) && (connssl->port == check->remote_port) && strcasecompare(cf->conn->handler->scheme, check->scheme) && - Curl_ssl_config_matches(conn_config, &check->ssl_config)) { + match_ssl_primary_config(data, conn_config, &check->ssl_config)) { /* yes, we have a session ID! */ (*general_age)++; /* increase general age */ check->age = *general_age; /* set this as used in this age */ @@ -456,7 +591,8 @@ bool Curl_ssl_getsessionid(struct Curl_cfilter *cf, DEBUGF(infof(data, "%s Session ID in cache for %s %s://%s:%d", no_match? "Didn't find": "Found", Curl_ssl_cf_is_proxy(cf) ? "proxy" : "host", - cf->conn->handler->scheme, connssl->hostname, connssl->port)); + cf->conn->handler->scheme, connssl->peer.hostname, + connssl->port)); return no_match; } @@ -532,7 +668,7 @@ CURLcode Curl_ssl_addsessionid(struct Curl_cfilter *cf, (void)ssl_config; DEBUGASSERT(ssl_config->primary.sessionid); - clone_host = strdup(connssl->hostname); + clone_host = strdup(connssl->peer.hostname); if(!clone_host) return CURLE_OUT_OF_MEMORY; /* bail out */ @@ -590,7 +726,7 @@ CURLcode Curl_ssl_addsessionid(struct Curl_cfilter *cf, store->remote_port = connssl->port; store->scheme = cf->conn->handler->scheme; - if(!Curl_clone_primary_ssl_config(conn_config, &store->ssl_config)) { + if(!clone_ssl_primary_config(conn_config, &store->ssl_config)) { Curl_free_primary_ssl_config(&store->ssl_config); store->sessionid = NULL; /* let caller free sessionid */ free(clone_host); @@ -629,22 +765,21 @@ void Curl_ssl_close_all(struct Curl_easy *data) Curl_ssl->close_all(data); } -int Curl_ssl_get_select_socks(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) +void Curl_ssl_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, + struct easy_pollset *ps) { - struct ssl_connect_data *connssl = cf->ctx; - curl_socket_t sock = Curl_conn_cf_get_socket(cf->next, data); - - if(sock == CURL_SOCKET_BAD) - return GETSOCK_BLANK; - - if(connssl->connecting_state == ssl_connect_2_writing) { - /* we are only interested in writing */ - socks[0] = sock; - return GETSOCK_WRITESOCK(0); + if(!cf->connected) { + struct ssl_connect_data *connssl = cf->ctx; + curl_socket_t sock = Curl_conn_cf_get_socket(cf->next, data); + if(sock != CURL_SOCKET_BAD) { + if(connssl->connecting_state == ssl_connect_2_writing) { + Curl_pollset_set_out_only(data, ps, sock); + } + else { + Curl_pollset_set_in_only(data, ps, sock); + } + } } - socks[0] = sock; - return GETSOCK_READSOCK(0); } /* Selects an SSL crypto engine @@ -785,32 +920,6 @@ CURLcode Curl_ssl_random(struct Curl_easy *data, return Curl_ssl->random(data, entropy, length); } -/* - * Curl_ssl_snihost() converts the input host name to a suitable SNI name put - * in data->state.buffer. Returns a pointer to the name (or NULL if a problem) - * and stores the new length in 'olen'. - * - * SNI fields must not have any trailing dot and while RFC 6066 section 3 says - * the SNI field is case insensitive, browsers always send the data lowercase - * and subsequently there are numerous servers out there that don't work - * unless the name is lowercased. - */ - -char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen) -{ - size_t len = strlen(host); - if(len && (host[len-1] == '.')) - len--; - if(len >= data->set.buffer_size) - return NULL; - - Curl_strntolower(data->state.buffer, host, len); - data->state.buffer[len] = 0; - if(olen) - *olen = len; - return data->state.buffer; -} - /* * Public key pem to der conversion */ @@ -1156,13 +1265,13 @@ static CURLcode multissl_connect_nonblocking(struct Curl_cfilter *cf, return Curl_ssl->connect_nonblocking(cf, data, done); } -static int multissl_get_select_socks(struct Curl_cfilter *cf, +static void multissl_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { if(multissl_setup(NULL)) - return 0; - return Curl_ssl->get_select_socks(cf, data, socks); + return; + Curl_ssl->adjust_pollset(cf, data, ps); } static void *multissl_get_internals(struct ssl_connect_data *connssl, @@ -1214,7 +1323,7 @@ static const struct Curl_ssl Curl_ssl_multi = { Curl_none_cert_status_request, /* cert_status_request */ multissl_connect, /* connect */ multissl_connect_nonblocking, /* connect_nonblocking */ - multissl_get_select_socks, /* getsock */ + multissl_adjust_pollset, /* adjust_pollset */ multissl_get_internals, /* get_internals */ multissl_close, /* close_one */ Curl_none_close_all, /* close_all */ @@ -1409,12 +1518,14 @@ CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name, #ifdef USE_SSL -static void free_hostname(struct ssl_connect_data *connssl) +void Curl_ssl_peer_cleanup(struct ssl_peer *peer) { - if(connssl->dispname != connssl->hostname) - free(connssl->dispname); - free(connssl->hostname); - connssl->hostname = connssl->dispname = NULL; + if(peer->dispname != peer->hostname) + free(peer->dispname); + free(peer->sni); + free(peer->hostname); + peer->hostname = peer->sni = peer->dispname = NULL; + peer->is_ip_address = FALSE; } static void cf_close(struct Curl_cfilter *cf, struct Curl_easy *data) @@ -1423,12 +1534,26 @@ static void cf_close(struct Curl_cfilter *cf, struct Curl_easy *data) if(connssl) { Curl_ssl->close(cf, data); connssl->state = ssl_connection_none; - free_hostname(connssl); + Curl_ssl_peer_cleanup(&connssl->peer); } cf->connected = FALSE; } -static CURLcode reinit_hostname(struct Curl_cfilter *cf) +static int is_ip_address(const char *hostname) +{ +#ifdef ENABLE_IPV6 + struct in6_addr addr; +#else + struct in_addr addr; +#endif + return (hostname && hostname[0] && (Curl_inet_pton(AF_INET, hostname, &addr) +#ifdef ENABLE_IPV6 + || Curl_inet_pton(AF_INET6, hostname, &addr) +#endif + )); +} + +CURLcode Curl_ssl_peer_init(struct ssl_peer *peer, struct Curl_cfilter *cf) { struct ssl_connect_data *connssl = cf->ctx; const char *ehostname, *edispname; @@ -1454,23 +1579,43 @@ static CURLcode reinit_hostname(struct Curl_cfilter *cf) } /* change if ehostname changed */ - if(ehostname && (!connssl->hostname - || strcmp(ehostname, connssl->hostname))) { - free_hostname(connssl); - connssl->hostname = strdup(ehostname); - if(!connssl->hostname) { - free_hostname(connssl); + if(ehostname && (!peer->hostname + || strcmp(ehostname, peer->hostname))) { + Curl_ssl_peer_cleanup(peer); + peer->hostname = strdup(ehostname); + if(!peer->hostname) { + Curl_ssl_peer_cleanup(peer); return CURLE_OUT_OF_MEMORY; } if(!edispname || !strcmp(ehostname, edispname)) - connssl->dispname = connssl->hostname; + peer->dispname = peer->hostname; else { - connssl->dispname = strdup(edispname); - if(!connssl->dispname) { - free_hostname(connssl); + peer->dispname = strdup(edispname); + if(!peer->dispname) { + Curl_ssl_peer_cleanup(peer); return CURLE_OUT_OF_MEMORY; } } + + peer->sni = NULL; + peer->is_ip_address = is_ip_address(peer->hostname)? TRUE : FALSE; + if(peer->hostname[0] && !peer->is_ip_address) { + /* not an IP address, normalize according to RCC 6066 ch. 3, + * max len of SNI is 2^16-1, no trailing dot */ + size_t len = strlen(peer->hostname); + if(len && (peer->hostname[len-1] == '.')) + len--; + if(len < USHRT_MAX) { + peer->sni = calloc(1, len + 1); + if(!peer->sni) { + Curl_ssl_peer_cleanup(peer); + return CURLE_OUT_OF_MEMORY; + } + Curl_strntolower(peer->sni, peer->hostname, len); + peer->sni[len] = 0; + } + } + } connssl->port = eport; return CURLE_OK; @@ -1525,7 +1670,7 @@ static CURLcode ssl_cf_connect(struct Curl_cfilter *cf, goto out; *done = FALSE; - result = reinit_hostname(cf); + result = Curl_ssl_peer_init(&connssl->peer, cf); if(result) goto out; @@ -1599,22 +1744,17 @@ static ssize_t ssl_cf_recv(struct Curl_cfilter *cf, return nread; } -static int ssl_cf_get_select_socks(struct Curl_cfilter *cf, +static void ssl_cf_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks) + struct easy_pollset *ps) { struct cf_call_data save; - int fds = GETSOCK_BLANK; - if(!cf->next->connected) { - fds = cf->next->cft->get_select_socks(cf->next, data, socks); - } - else if(!cf->connected) { + if(!cf->connected) { CF_DATA_SAVE(save, cf, data); - fds = Curl_ssl->get_select_socks(cf, data, socks); + Curl_ssl->adjust_pollset(cf, data, ps); CF_DATA_RESTORE(cf, save); } - return fds; } static CURLcode ssl_cf_cntrl(struct Curl_cfilter *cf, @@ -1705,7 +1845,7 @@ struct Curl_cftype Curl_cft_ssl = { ssl_cf_connect, ssl_cf_close, Curl_cf_def_get_host, - ssl_cf_get_select_socks, + ssl_cf_adjust_pollset, ssl_cf_data_pending, ssl_cf_send, ssl_cf_recv, @@ -1723,7 +1863,7 @@ struct Curl_cftype Curl_cft_ssl_proxy = { ssl_cf_connect, ssl_cf_close, Curl_cf_def_get_host, - ssl_cf_get_select_socks, + ssl_cf_adjust_pollset, ssl_cf_data_pending, ssl_cf_send, ssl_cf_recv, @@ -1837,6 +1977,16 @@ bool Curl_ssl_supports(struct Curl_easy *data, int option) return (Curl_ssl->supports & option)? TRUE : FALSE; } +static struct Curl_cfilter *get_ssl_filter(struct Curl_cfilter *cf) +{ + for(; cf; cf = cf->next) { + if(cf->cft == &Curl_cft_ssl || cf->cft == &Curl_cft_ssl_proxy) + return cf; + } + return NULL; +} + + void *Curl_ssl_get_internals(struct Curl_easy *data, int sockindex, CURLINFO info, int n) { @@ -1844,8 +1994,8 @@ void *Curl_ssl_get_internals(struct Curl_easy *data, int sockindex, (void)n; if(data->conn) { struct Curl_cfilter *cf; - /* get first filter in chain, if any is present */ - cf = Curl_ssl_cf_get_ssl(data->conn->cfilter[sockindex]); + /* get first SSL filter in chain, if any is present */ + cf = get_ssl_filter(data->conn->cfilter[sockindex]); if(cf) { struct cf_call_data save; CF_DATA_SAVE(save, cf, data); @@ -1875,23 +2025,6 @@ CURLcode Curl_ssl_cfilter_remove(struct Curl_easy *data, return result; } -static struct Curl_cfilter *get_ssl_cf_engaged(struct connectdata *conn, - int sockindex) -{ - struct Curl_cfilter *cf, *lowest_ssl_cf = NULL; - - for(cf = conn->cfilter[sockindex]; cf; cf = cf->next) { - if(cf->cft == &Curl_cft_ssl || cf->cft == &Curl_cft_ssl_proxy) { - lowest_ssl_cf = cf; - if(cf->connected || (cf->next && cf->next->connected)) { - /* connected or about to start */ - return cf; - } - } - } - return lowest_ssl_cf; -} - bool Curl_ssl_cf_is_proxy(struct Curl_cfilter *cf) { return (cf->cft == &Curl_cft_ssl_proxy); @@ -1908,17 +2041,6 @@ Curl_ssl_cf_get_config(struct Curl_cfilter *cf, struct Curl_easy *data) #endif } -struct ssl_config_data * -Curl_ssl_get_config(struct Curl_easy *data, int sockindex) -{ - struct Curl_cfilter *cf; - - (void)data; - DEBUGASSERT(data->conn); - cf = get_ssl_cf_engaged(data->conn, sockindex); - return cf? Curl_ssl_cf_get_config(cf, data) : &data->set.ssl; -} - struct ssl_primary_config * Curl_ssl_cf_get_primary_config(struct Curl_cfilter *cf) { @@ -1930,15 +2052,6 @@ Curl_ssl_cf_get_primary_config(struct Curl_cfilter *cf) #endif } -struct Curl_cfilter *Curl_ssl_cf_get_ssl(struct Curl_cfilter *cf) -{ - for(; cf; cf = cf->next) { - if(cf->cft == &Curl_cft_ssl || cf->cft == &Curl_cft_ssl_proxy) - return cf; - } - return NULL; -} - CURLcode Curl_alpn_to_proto_buf(struct alpn_proto_buf *buf, const struct alpn_spec *spec) { @@ -2005,10 +2118,6 @@ CURLcode Curl_alpn_set_negotiated(struct Curl_cfilter *cf, !memcmp(ALPN_HTTP_1_1, proto, ALPN_HTTP_1_1_LENGTH)) { *palpn = CURL_HTTP_VERSION_1_1; } - else if(proto_len == ALPN_HTTP_1_0_LENGTH && - !memcmp(ALPN_HTTP_1_0, proto, ALPN_HTTP_1_0_LENGTH)) { - *palpn = CURL_HTTP_VERSION_1_0; - } #ifdef USE_HTTP2 else if(proto_len == ALPN_H2_LENGTH && !memcmp(ALPN_H2, proto, ALPN_H2_LENGTH)) { diff --git a/external/curl/lib/vtls/vtls.h b/external/curl/lib/vtls/vtls.h index 8ad1cf6de..f1856bd33 100644 --- a/external/curl/lib/vtls/vtls.h +++ b/external/curl/lib/vtls/vtls.h @@ -65,15 +65,54 @@ CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name, #define CURL_SHA256_DIGEST_LENGTH 32 /* fixed size */ #endif -char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen); -bool Curl_ssl_config_matches(struct ssl_primary_config *data, - struct ssl_primary_config *needle); -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); - curl_sslbackend Curl_ssl_backend(void); +/** + * Init ssl config for a new easy handle. + */ +void Curl_ssl_easy_config_init(struct Curl_easy *data); + +/** + * Init the `data->set.ssl` and `data->set.proxy_ssl` for + * connection matching use. + */ +CURLcode Curl_ssl_easy_config_complete(struct Curl_easy *data); + +/** + * Init SSL configs (main + proxy) for a new connection from the easy handle. + */ +CURLcode Curl_ssl_conn_config_init(struct Curl_easy *data, + struct connectdata *conn); + +/** + * Free allocated resources in SSL configs (main + proxy) for + * the given connection. + */ +void Curl_ssl_conn_config_cleanup(struct connectdata *conn); + +/** + * Return TRUE iff SSL configuration from `conn` is functionally the + * same as the one on `candidate`. + * @param proxy match the proxy SSL config or the main one + */ +bool Curl_ssl_conn_config_match(struct Curl_easy *data, + struct connectdata *candidate, + bool proxy); + +/* Update certain connection SSL config flags after they have + * been changed on the easy handle. Will work for `verifypeer`, + * `verifyhost` and `verifystatus`. */ +void Curl_ssl_conn_config_update(struct Curl_easy *data, bool for_proxy); + +/** + * Init SSL peer information for filter. Can be called repeatedly. + */ +CURLcode Curl_ssl_peer_init(struct ssl_peer *peer, struct Curl_cfilter *cf); +/** + * Free all allocated data and reset peer information. + */ +void Curl_ssl_peer_cleanup(struct ssl_peer *peer); + #ifdef USE_SSL int Curl_ssl_init(void); void Curl_ssl_cleanup(void); @@ -159,18 +198,6 @@ CURLcode Curl_cf_ssl_proxy_insert_after(struct Curl_cfilter *cf_at, struct Curl_easy *data); #endif /* !CURL_DISABLE_PROXY */ -/** - * Get the SSL configuration that is used on the connection. - * This returns NULL if no SSL is configured. - * Otherwise it returns the config of the first (highest) one that is - * either connected, in handshake or about to start - * (e.g. all filters below it are connected). If SSL filters are present, - * but neither can start operating, return the config of the lowest one - * that will first come into effect when connecting. - */ -struct ssl_config_data *Curl_ssl_get_config(struct Curl_easy *data, - int sockindex); - /** * True iff the underlying SSL implementation supports the option. * Option is one of the defined SSLSUPP_* values. @@ -188,6 +215,18 @@ bool Curl_ssl_supports(struct Curl_easy *data, int ssl_option); void *Curl_ssl_get_internals(struct Curl_easy *data, int sockindex, CURLINFO info, int n); +/** + * Get the ssl_config_data in `data` that is relevant for cfilter `cf`. + */ +struct ssl_config_data *Curl_ssl_cf_get_config(struct Curl_cfilter *cf, + struct Curl_easy *data); + +/** + * Get the primary config relevant for the filter from its connection. + */ +struct ssl_primary_config * + Curl_ssl_cf_get_primary_config(struct Curl_cfilter *cf); + extern struct Curl_cftype Curl_cft_ssl; extern struct Curl_cftype Curl_cft_ssl_proxy; @@ -209,8 +248,9 @@ extern struct Curl_cftype Curl_cft_ssl_proxy; #define Curl_ssl_get_internals(a,b,c,d) NULL #define Curl_ssl_supports(a,b) FALSE #define Curl_ssl_cfilter_add(a,b,c) CURLE_NOT_BUILT_IN -#define Curl_ssl_get_config(a,b) NULL #define Curl_ssl_cfilter_remove(a,b) CURLE_OK +#define Curl_ssl_cf_get_config(a,b) NULL +#define Curl_ssl_cf_get_primary_config(a) NULL #endif #endif /* HEADER_CURL_VTLS_H */ diff --git a/external/curl/lib/vtls/vtls_int.h b/external/curl/lib/vtls/vtls_int.h index a6e4544a8..af7ae552e 100644 --- a/external/curl/lib/vtls/vtls_int.h +++ b/external/curl/lib/vtls/vtls_int.h @@ -32,8 +32,6 @@ /* see https://www.iana.org/assignments/tls-extensiontype-values/ */ #define ALPN_HTTP_1_1_LENGTH 8 #define ALPN_HTTP_1_1 "http/1.1" -#define ALPN_HTTP_1_0_LENGTH 8 -#define ALPN_HTTP_1_0 "http/1.0" #define ALPN_H2_LENGTH 2 #define ALPN_H2 "h2" #define ALPN_H3_LENGTH 2 @@ -70,14 +68,14 @@ CURLcode Curl_alpn_set_negotiated(struct Curl_cfilter *cf, struct ssl_connect_data { ssl_connection_state state; ssl_connect_state connecting_state; - char *hostname; /* hostname for verification */ - char *dispname; /* display version of hostname */ + struct ssl_peer peer; const struct alpn_spec *alpn; /* ALPN to use or NULL for none */ void *backend; /* vtls backend specific props */ struct cf_call_data call_data; /* data handle used in current call */ struct curltime handshake_done; /* time when handshake finished */ int port; /* remote port at origin */ BIT(use_alpn); /* if ALPN shall be used in handshake */ + BIT(reused_session); /* session-ID was reused for this */ }; @@ -118,14 +116,11 @@ struct Curl_ssl { struct Curl_easy *data, bool *done); - /* If the SSL backend wants to read or write on this connection during a - handshake, set socks[0] to the connection's FIRSTSOCKET, and return - a bitmap indicating read or write with GETSOCK_WRITESOCK(0) or - GETSOCK_READSOCK(0). Otherwise return GETSOCK_BLANK. - Mandatory. */ - int (*get_select_socks)(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks); - + /* During handshake, adjust the pollset to include the socket + * for POLLOUT or POLLIN as needed. + * Mandatory. */ + void (*adjust_pollset)(struct Curl_cfilter *cf, struct Curl_easy *data, + struct easy_pollset *ps); void *(*get_internals)(struct ssl_connect_data *connssl, CURLINFO info); void (*close)(struct Curl_cfilter *cf, struct Curl_easy *data); void (*close_all)(struct Curl_easy *data); @@ -169,25 +164,8 @@ CURLcode Curl_none_set_engine(struct Curl_easy *data, const char *engine); CURLcode Curl_none_set_engine_default(struct Curl_easy *data); struct curl_slist *Curl_none_engines_list(struct Curl_easy *data); bool Curl_none_false_start(void); -int Curl_ssl_get_select_socks(struct Curl_cfilter *cf, struct Curl_easy *data, - curl_socket_t *socks); - -/** - * Get the ssl_config_data in `data` that is relevant for cfilter `cf`. - */ -struct ssl_config_data *Curl_ssl_cf_get_config(struct Curl_cfilter *cf, - struct Curl_easy *data); - -/** - * Get the primary config relevant for the filter from its connection. - */ -struct ssl_primary_config * - Curl_ssl_cf_get_primary_config(struct Curl_cfilter *cf); - -/** - * Get the first SSL filter in the chain starting with `cf`, or NULL. - */ -struct Curl_cfilter *Curl_ssl_cf_get_ssl(struct Curl_cfilter *cf); +void Curl_ssl_adjust_pollset(struct Curl_cfilter *cf, struct Curl_easy *data, + struct easy_pollset *ps); /** * Get the SSL filter below the given one or NULL if there is none. diff --git a/external/curl/lib/vtls/wolfssl.c b/external/curl/lib/vtls/wolfssl.c index b1384a644..5890bb609 100644 --- a/external/curl/lib/vtls/wolfssl.c +++ b/external/curl/lib/vtls/wolfssl.c @@ -480,6 +480,7 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) return CURLE_SSL_CONNECT_ERROR; } #endif + default: break; } @@ -513,7 +514,7 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) } } -#ifndef NO_FILESYSTEM +#if !defined(NO_FILESYSTEM) && defined(WOLFSSL_SYS_CA_CERTS) /* load native CA certificates */ if(ssl_config->native_ca_store) { if(wolfSSL_CTX_load_system_CA_certs(backend->ctx) != WOLFSSL_SUCCESS) { @@ -608,24 +609,12 @@ wolfssl_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data) SSL_VERIFY_NONE, NULL); #ifdef HAVE_SNI - if(sni) { - struct in_addr addr4; -#ifdef ENABLE_IPV6 - struct in6_addr addr6; -#endif - size_t hostname_len = strlen(connssl->hostname); - - if((hostname_len < USHRT_MAX) && - !Curl_inet_pton(AF_INET, connssl->hostname, &addr4) -#ifdef ENABLE_IPV6 - && !Curl_inet_pton(AF_INET6, connssl->hostname, &addr6) -#endif - ) { - size_t snilen; - char *snihost = Curl_ssl_snihost(data, connssl->hostname, &snilen); - if(!snihost || - wolfSSL_CTX_UseSNI(backend->ctx, WOLFSSL_SNI_HOST_NAME, snihost, - (unsigned short)snilen) != 1) { + if(sni && connssl->peer.sni) { + size_t sni_len = strlen(connssl->peer.sni); + if((sni_len < USHRT_MAX)) { + if(wolfSSL_CTX_UseSNI(backend->ctx, WOLFSSL_SNI_HOST_NAME, + connssl->peer.sni, + (unsigned short)sni_len) != 1) { failf(data, "Failed to set SNI"); return CURLE_SSL_CONNECT_ERROR; } @@ -763,9 +752,9 @@ wolfssl_connect_step2(struct Curl_cfilter *cf, struct Curl_easy *data) /* Enable RFC2818 checks */ if(conn_config->verifyhost) { - char *snihost = Curl_ssl_snihost(data, connssl->hostname, NULL); - if(!snihost || - (wolfSSL_check_domain_name(backend->handle, snihost) == SSL_FAILURE)) + char *snihost = connssl->peer.sni? + connssl->peer.sni : connssl->peer.hostname; + if(wolfSSL_check_domain_name(backend->handle, snihost) == SSL_FAILURE) return CURLE_SSL_CONNECT_ERROR; } @@ -813,7 +802,7 @@ wolfssl_connect_step2(struct Curl_cfilter *cf, struct Curl_easy *data) else if(DOMAIN_NAME_MISMATCH == detail) { #if 1 failf(data, " subject alt name(s) or common name do not match \"%s\"", - connssl->dispname); + connssl->peer.dispname); return CURLE_PEER_FAILED_VERIFICATION; #else /* When the wolfssl_check_domain_name() is used and you desire to @@ -1398,7 +1387,7 @@ const struct Curl_ssl Curl_ssl_wolfssl = { Curl_none_cert_status_request, /* cert_status_request */ wolfssl_connect, /* connect */ wolfssl_connect_nonblocking, /* connect_nonblocking */ - Curl_ssl_get_select_socks, /* getsock */ + Curl_ssl_adjust_pollset, /* adjust_pollset */ wolfssl_get_internals, /* get_internals */ wolfssl_close, /* close_one */ Curl_none_close_all, /* close_all */ diff --git a/external/curl/lib/vtls/x509asn1.c b/external/curl/lib/vtls/x509asn1.c index c3fd3a30b..8b1eed63f 100644 --- a/external/curl/lib/vtls/x509asn1.c +++ b/external/curl/lib/vtls/x509asn1.c @@ -1317,16 +1317,16 @@ CURLcode Curl_verifyhost(struct Curl_cfilter *cf, if(Curl_parseX509(&cert, beg, end)) return CURLE_PEER_FAILED_VERIFICATION; - hostlen = strlen(connssl->hostname); + hostlen = strlen(connssl->peer.hostname); /* Get the server IP address. */ #ifdef ENABLE_IPV6 if(cf->conn->bits.ipv6_ip && - Curl_inet_pton(AF_INET6, connssl->hostname, &addr)) + Curl_inet_pton(AF_INET6, connssl->peer.hostname, &addr)) addrlen = sizeof(struct in6_addr); else #endif - if(Curl_inet_pton(AF_INET, connssl->hostname, &addr)) + if(Curl_inet_pton(AF_INET, connssl->peer.hostname, &addr)) addrlen = sizeof(struct in_addr); /* Process extensions. */ @@ -1361,7 +1361,7 @@ CURLcode Curl_verifyhost(struct Curl_cfilter *cf, name.beg, name.end); if(len > 0 && (size_t)len == strlen(dnsname)) matched = Curl_cert_hostcheck(dnsname, (size_t)len, - connssl->hostname, hostlen); + connssl->peer.hostname, hostlen); else matched = 0; free(dnsname); @@ -1421,7 +1421,7 @@ CURLcode Curl_verifyhost(struct Curl_cfilter *cf, if(strlen(dnsname) != (size_t) len) /* Nul byte in string ? */ failf(data, "SSL: illegal cert name field"); else if(Curl_cert_hostcheck((const char *) dnsname, - len, connssl->hostname, hostlen)) { + len, connssl->peer.hostname, hostlen)) { infof(data, " common name: %s (matched)", dnsname); free(dnsname); return CURLE_OK; diff --git a/external/curl/lib/warnless.c b/external/curl/lib/warnless.c index 7e077f8d8..c80937b84 100644 --- a/external/curl/lib/warnless.c +++ b/external/curl/lib/warnless.c @@ -37,7 +37,7 @@ #include "warnless.h" -#ifdef WIN32 +#ifdef _WIN32 #undef read #undef write #endif @@ -367,7 +367,7 @@ curl_socket_t curlx_sitosk(int i) #endif /* USE_WINSOCK */ -#if defined(WIN32) +#if defined(_WIN32) ssize_t curlx_read(int fd, void *buf, size_t count) { @@ -379,8 +379,8 @@ ssize_t curlx_write(int fd, const void *buf, size_t count) return (ssize_t)write(fd, buf, curlx_uztoui(count)); } -/* Ensure that warnless.h continues to have an effect in "unity" builds. */ -#undef HEADER_CURL_WARNLESS_H - -#endif /* WIN32 */ +#endif /* _WIN32 */ +/* Ensure that warnless.h redefinitions continue to have an effect + in "unity" builds. */ +#undef HEADER_CURL_WARNLESS_H_REDEFS diff --git a/external/curl/lib/warnless.h b/external/curl/lib/warnless.h index 2a5301628..e5a02c8d9 100644 --- a/external/curl/lib/warnless.h +++ b/external/curl/lib/warnless.h @@ -69,18 +69,13 @@ curl_socket_t curlx_sitosk(int i); #endif /* USE_WINSOCK */ -#if defined(WIN32) +#if defined(_WIN32) ssize_t curlx_read(int fd, void *buf, size_t count); ssize_t curlx_write(int fd, const void *buf, size_t count); -#undef read -#define read(fd, buf, count) curlx_read(fd, buf, count) -#undef write -#define write(fd, buf, count) curlx_write(fd, buf, count) - -#endif /* WIN32 */ +#endif /* _WIN32 */ #if defined(__INTEL_COMPILER) && defined(__unix__) @@ -97,3 +92,15 @@ unsigned short curlx_ntohs(unsigned short usnum); #endif /* __INTEL_COMPILER && __unix__ */ #endif /* HEADER_CURL_WARNLESS_H */ + +#ifndef HEADER_CURL_WARNLESS_H_REDEFS +#define HEADER_CURL_WARNLESS_H_REDEFS + +#if defined(_WIN32) +#undef read +#define read(fd, buf, count) curlx_read(fd, buf, count) +#undef write +#define write(fd, buf, count) curlx_write(fd, buf, count) +#endif + +#endif /* HEADER_CURL_WARNLESS_H_REDEFS */ diff --git a/external/curl/lib/ws.c b/external/curl/lib/ws.c index 3c1964b86..adde531f5 100644 --- a/external/curl/lib/ws.c +++ b/external/curl/lib/ws.c @@ -274,8 +274,8 @@ static CURLcode ws_dec_pass_payload(struct ws_decoder *dec, dec->payload_offset += (curl_off_t)nwritten; remain = dec->payload_len - dec->payload_offset; /* infof(data, "WS-DEC: passed %zd bytes payload, %" - CURL_FORMAT_CURL_OFF_T " remain", - nwritten, remain); */ + CURL_FORMAT_CURL_OFF_T " remain", + nwritten, remain); */ } return remain? CURLE_AGAIN : CURLE_OK; @@ -925,8 +925,8 @@ CURL_EXTERN CURLcode curl_ws_recv(struct Curl_easy *data, void *buffer, *metap = &ws->frame; *nread = ws->frame.len; /* infof(data, "curl_ws_recv(len=%zu) -> %zu bytes (frame at %" - CURL_FORMAT_CURL_OFF_T ", %" CURL_FORMAT_CURL_OFF_T " left)", - buflen, *nread, ws->frame.offset, ws->frame.bytesleft); */ + CURL_FORMAT_CURL_OFF_T ", %" CURL_FORMAT_CURL_OFF_T " left)", + buflen, *nread, ws->frame.offset, ws->frame.bytesleft); */ return CURLE_OK; } diff --git a/external/curl/m4/curl-amissl.m4 b/external/curl/m4/curl-amissl.m4 index 95208f0c2..48067e720 100644 --- a/external/curl/m4/curl-amissl.m4 +++ b/external/curl/m4/curl-amissl.m4 @@ -33,7 +33,7 @@ if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then #include ]],[[ #if defined(AMISSL_CURRENT_VERSION) && defined(AMISSL_V3xx) && \ - defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \ + (OPENSSL_VERSION_NUMBER >= 0x30000000L) && \ defined(PROTO_AMISSL_H) return 0; #else diff --git a/external/curl/m4/curl-compilers.m4 b/external/curl/m4/curl-compilers.m4 index caa2b14cb..35ba19866 100644 --- a/external/curl/m4/curl-compilers.m4 +++ b/external/curl/m4/curl-compilers.m4 @@ -48,7 +48,6 @@ AC_DEFUN([CURL_CHECK_COMPILER], [ CURL_CHECK_COMPILER_INTEL_C CURL_CHECK_COMPILER_CLANG CURL_CHECK_COMPILER_GNU_C - CURL_CHECK_COMPILER_LCC CURL_CHECK_COMPILER_SGI_MIPSPRO_C CURL_CHECK_COMPILER_SGI_MIPS_C CURL_CHECK_COMPILER_SUNPRO_C @@ -92,19 +91,40 @@ AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [ AC_MSG_RESULT([no]) compiler_id="CLANG" fi + AC_MSG_CHECKING([compiler version]) fullclangver=`$CC -v 2>&1 | grep version` + if echo $fullclangver | grep 'Apple' >/dev/null; then + appleclang=1 + else + appleclang=0 + fi clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*)/\1/'` if test -z "$clangver"; then - if echo $fullclangver | grep "Apple LLVM version " >/dev/null; then - dnl Starting with XCode 7 / clang 3.7, Apple clang won't tell its upstream version - clangver="3.7" - else - clangver=`echo $fullclangver | "$SED" 's/.*version \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/'` - fi + clangver=`echo $fullclangver | "$SED" 's/.*version \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/'` + oldapple=0 + else + oldapple=1 fi clangvhi=`echo $clangver | cut -d . -f1` clangvlo=`echo $clangver | cut -d . -f2` compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null` + if test "$appleclang" = '1' && test "$oldapple" = '0'; then + dnl Starting with Xcode 7 / clang 3.7, Apple clang won't tell its upstream version + if test "$compiler_num" -ge '1300'; then compiler_num='1200' + elif test "$compiler_num" -ge '1205'; then compiler_num='1101' + elif test "$compiler_num" -ge '1204'; then compiler_num='1000' + elif test "$compiler_num" -ge '1107'; then compiler_num='900' + elif test "$compiler_num" -ge '1103'; then compiler_num='800' + elif test "$compiler_num" -ge '1003'; then compiler_num='700' + elif test "$compiler_num" -ge '1001'; then compiler_num='600' + elif test "$compiler_num" -ge '904'; then compiler_num='500' + elif test "$compiler_num" -ge '902'; then compiler_num='400' + elif test "$compiler_num" -ge '803'; then compiler_num='309' + elif test "$compiler_num" -ge '703'; then compiler_num='308' + else compiler_num='307' + fi + fi + AC_MSG_RESULT([clang '$compiler_num' (raw: '$fullclangver' / '$clangver')]) flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4" flags_opt_yes="-O2" @@ -159,10 +179,17 @@ AC_DEFUN([CURL_CHECK_COMPILER_GNU_C], [ test "$compiler_id" = "unknown"; then AC_MSG_RESULT([yes]) compiler_id="GNU_C" - gccver=`$CC -dumpversion` + AC_MSG_CHECKING([compiler version]) + # strip '-suffix' parts, e.g. Ubuntu Windows cross-gcc returns '10-win32' + gccver=`$CC -dumpversion | sed -E 's/-.+$//'` gccvhi=`echo $gccver | cut -d . -f1` - gccvlo=`echo $gccver | cut -d . -f2` + if echo $gccver | grep -F '.' >/dev/null; then + gccvlo=`echo $gccver | cut -d . -f2` + else + gccvlo="0" + fi compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` + AC_MSG_RESULT([gcc '$compiler_num' (raw: '$gccver')]) flags_dbg_yes="-g" flags_opt_all="-O -O0 -O1 -O2 -O3 -Os -Og -Ofast" flags_opt_yes="-O2" @@ -232,7 +259,9 @@ AC_DEFUN([CURL_CHECK_COMPILER_INTEL_C], [ CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent]) if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then AC_MSG_RESULT([yes]) + AC_MSG_CHECKING([compiler version]) compiler_num="$curl_cv_def___INTEL_COMPILER" + AC_MSG_RESULT([Intel C '$compiler_num']) CURL_CHECK_DEF([__unix__], [], [silent]) if test "$curl_cv_have_def___unix__" = "yes"; then compiler_id="INTEL_UNIX_C" @@ -253,26 +282,6 @@ AC_DEFUN([CURL_CHECK_COMPILER_INTEL_C], [ ]) -dnl CURL_CHECK_COMPILER_LCC -dnl ------------------------------------------------- -dnl Verify if compiler being used is LCC. - -AC_DEFUN([CURL_CHECK_COMPILER_LCC], [ - AC_MSG_CHECKING([if compiler is LCC]) - CURL_CHECK_DEF([__LCC__], [], [silent]) - if test "$curl_cv_have_def___LCC__" = "yes"; then - AC_MSG_RESULT([yes]) - compiler_id="LCC" - flags_dbg_yes="-g" - flags_opt_all="" - flags_opt_yes="" - flags_opt_off="" - else - AC_MSG_RESULT([no]) - fi -]) - - dnl CURL_CHECK_COMPILER_SGI_MIPS_C dnl ------------------------------------------------- dnl Verify if compiler being used is SGI MIPS C. @@ -580,12 +589,6 @@ AC_DEFUN([CURL_SET_COMPILER_BASIC_OPTS], [ tmp_CFLAGS="$tmp_CFLAGS" ;; # - LCC) - # - dnl Disallow run-time dereferencing of null pointers - tmp_CFLAGS="$tmp_CFLAGS -n" - ;; - # SGI_MIPS_C) # dnl Placeholder @@ -787,7 +790,8 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-prototypes]) tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [float-equal]) - CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [no-multichar sign-compare]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sign-compare]) + tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar" CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [undef]) tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [endif-labels strict-prototypes]) @@ -801,29 +805,46 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused]) fi # + dnl Only clang 2.7 or later + if test "$compiler_num" -ge "207"; then + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [address]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [attributes]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [bad-function-cast]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [conversion]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [div-by-zero format-security]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [empty-body]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-field-initializers]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-noreturn]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [old-style-definition]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [redundant-decls]) + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [type-limits]) + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros]) # Not practical + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unreachable-code unused-parameter]) + fi + # dnl Only clang 2.8 or later if test "$compiler_num" -ge "208"; then + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [ignored-qualifiers]) CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [vla]) fi # dnl Only clang 2.9 or later if test "$compiler_num" -ge "209"; then + tmp_CFLAGS="$tmp_CFLAGS -Wno-sign-conversion" CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [shift-sign-overflow]) + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs fi # - dnl Only clang 3.0 or later (possibly earlier) + dnl Only clang 3.0 or later if test "$compiler_num" -ge "300"; then - CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [bad-function-cast]) - CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [conversion]) - CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [empty-body]) - CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [ignored-qualifiers]) - CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [type-limits]) - CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [no-sign-conversion]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [language-extension-token]) fi # dnl Only clang 3.2 or later if test "$compiler_num" -ge "302"; then CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [sometimes-uninitialized]) case $host_os in cygwin* | mingw*) dnl skip missing-variable-declarations warnings for cygwin and @@ -837,9 +858,16 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ # dnl Only clang 3.4 or later if test "$compiler_num" -ge "304"; then + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [header-guard]) CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-const-variable]) fi # + dnl Only clang 3.5 or later + if test "$compiler_num" -ge "305"; then + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [pragmas]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unreachable-code-break]) + fi + # dnl Only clang 3.6 or later if test "$compiler_num" -ge "306"; then CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [double-promotion]) @@ -877,7 +905,6 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ GNU_C) # if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -std=gnu89" # dnl Do not enable -pedantic when cross-compiling with a gcc older dnl than 3.0, to avoid warnings from third party system headers. @@ -958,6 +985,26 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3" fi # + dnl Only gcc 4.1 or later + if test "$compiler_num" -ge "401"; then + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [attributes]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [div-by-zero format-security]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-field-initializers]) + case $host in + *-*-msys*) + ;; + *) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-noreturn]) # Seen to clash with libtool-generated stub code + ;; + esac + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unreachable-code unused-parameter]) + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [padded]) # Not used because we cannot change public structs + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [pragmas]) + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [redundant-decls]) + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [switch-enum]) # Not used because this basically disallows default case + # CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [unused-macros]) # Not practical + fi + # dnl Only gcc 4.2 or later if test "$compiler_num" -ge "402"; then CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [cast-align]) @@ -965,6 +1012,7 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ # dnl Only gcc 4.3 or later if test "$compiler_num" -ge "403"; then + CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [address]) CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [type-limits old-style-declaration]) CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [missing-parameter-type empty-body]) CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [clobbered ignored-qualifiers]) @@ -1105,17 +1153,6 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ tmp_CFLAGS="$tmp_CFLAGS" ;; # - LCC) - # - if test "$want_warnings" = "yes"; then - dnl Highest warning level is double -A, next is single -A. - dnl Due to the big number of warnings these trigger on third - dnl party header files it is impractical for us to use any of - dnl them here. If you want them simply define it in CPPFLAGS. - tmp_CFLAGS="$tmp_CFLAGS" - fi - ;; - # SGI_MIPS_C) # if test "$want_warnings" = "yes"; then diff --git a/external/curl/m4/curl-functions.m4 b/external/curl/m4/curl-functions.m4 index 7fefa3967..28f4b8b9a 100644 --- a/external/curl/m4/curl-functions.m4 +++ b/external/curl/m4/curl-functions.m4 @@ -108,35 +108,6 @@ curl_includes_ifaddrs="\ ]) -dnl CURL_INCLUDES_INTTYPES -dnl ------------------------------------------------- -dnl Set up variable with list of headers that must be -dnl included when inttypes.h is to be included. - -AC_DEFUN([CURL_INCLUDES_INTTYPES], [ -curl_includes_inttypes="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -/* includes end */" - case $host_os in - irix*) - ac_cv_header_stdint_h="no" - ;; - esac - AC_CHECK_HEADERS( - sys/types.h stdint.h inttypes.h, - [], [], [$curl_includes_inttypes]) -]) - - dnl CURL_INCLUDES_LIBGEN dnl ------------------------------------------------- dnl Set up variable with list of headers that must be @@ -447,10 +418,10 @@ curl_includes_winsock2="\ # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # endif +# include #endif /* includes end */" CURL_CHECK_HEADER_WINDOWS @@ -470,13 +441,13 @@ curl_includes_ws2tcpip="\ # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif -# include # ifdef HAVE_WINSOCK2_H # include # ifdef HAVE_WS2TCPIP_H # include # endif # endif +# include #endif /* includes end */" CURL_CHECK_HEADER_WINDOWS diff --git a/external/curl/m4/curl-openssl.m4 b/external/curl/m4/curl-openssl.m4 index a4811d2a3..608653c5c 100644 --- a/external/curl/m4/curl-openssl.m4 +++ b/external/curl/m4/curl-openssl.m4 @@ -312,7 +312,7 @@ if test "x$OPT_OPENSSL" != xno; then AC_LANG_PROGRAM([[ #include ]],[[ - #if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) + #if (OPENSSL_VERSION_NUMBER >= 0x30000000L) return 0; #else #error older than 3 diff --git a/external/curl/projects/Windows/VC10/curl-all.sln b/external/curl/projects/Windows/VC10/curl-all.sln deleted file mode 100644 index bdd2e662a..000000000 --- a/external/curl/projects/Windows/VC10/curl-all.sln +++ /dev/null @@ -1,298 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}" - ProjectSection(ProjectDependencies) = postProject - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32 - DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64 - DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32 - DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64 - DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32 - DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Debug|x64 = DLL Debug|x64 - DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32 - DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64 - DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32 - DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64 - DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32 - DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64 - DLL Release|Win32 = DLL Release|Win32 - DLL Release|x64 = DLL Release|x64 - LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32 - LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64 - LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32 - LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64 - LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32 - LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64 - LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32 - LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64 - LIB Debug|Win32 = LIB Debug|Win32 - LIB Debug|x64 = LIB Debug|x64 - LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32 - LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64 - LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32 - LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64 - LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32 - LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64 - LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32 - LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64 - LIB Release|Win32 = LIB Release|Win32 - LIB Release|x64 = LIB Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/external/curl/projects/Windows/VC10/lib/libcurl.sln b/external/curl/projects/Windows/VC10/lib/libcurl.sln deleted file mode 100644 index 159ab7d0f..000000000 --- a/external/curl/projects/Windows/VC10/lib/libcurl.sln +++ /dev/null @@ -1,181 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32 - DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64 - DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32 - DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64 - DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32 - DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Debug|x64 = DLL Debug|x64 - DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32 - DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64 - DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32 - DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64 - DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32 - DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64 - DLL Release|Win32 = DLL Release|Win32 - DLL Release|x64 = DLL Release|x64 - LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32 - LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64 - LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32 - LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64 - LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32 - LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64 - LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32 - LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64 - LIB Debug|Win32 = LIB Debug|Win32 - LIB Debug|x64 = LIB Debug|x64 - LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32 - LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64 - LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32 - LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64 - LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32 - LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64 - LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32 - LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64 - LIB Release|Win32 = LIB Release|Win32 - LIB Release|x64 = LIB Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/external/curl/projects/Windows/VC10/lib/libcurl.vcxproj b/external/curl/projects/Windows/VC10/lib/libcurl.vcxproj deleted file mode 100644 index f973ac2cf..000000000 --- a/external/curl/projects/Windows/VC10/lib/libcurl.vcxproj +++ /dev/null @@ -1,2664 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - libcurl - - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - StaticLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - DynamicLibrary - false - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)lib\ - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC10/src/curl.sln b/external/curl/projects/Windows/VC10/src/curl.sln deleted file mode 100644 index 31bcc14c2..000000000 --- a/external/curl/projects/Windows/VC10/src/curl.sln +++ /dev/null @@ -1,181 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32 - DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64 - DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32 - DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64 - DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32 - DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Debug|x64 = DLL Debug|x64 - DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32 - DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64 - DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32 - DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64 - DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32 - DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64 - DLL Release|Win32 = DLL Release|Win32 - DLL Release|x64 = DLL Release|x64 - LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32 - LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64 - LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32 - LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64 - LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32 - LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64 - LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32 - LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64 - LIB Debug|Win32 = LIB Debug|Win32 - LIB Debug|x64 = LIB Debug|x64 - LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32 - LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64 - LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32 - LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64 - LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32 - LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64 - LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32 - LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64 - LIB Release|Win32 = LIB Release|Win32 - LIB Release|x64 = LIB Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/external/curl/projects/Windows/VC10/src/curl.vcxproj b/external/curl/projects/Windows/VC10/src/curl.vcxproj deleted file mode 100644 index 2ee31388b..000000000 --- a/external/curl/projects/Windows/VC10/src/curl.vcxproj +++ /dev/null @@ -1,2741 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {5228E9CE-A216-422F-A5E6-58E95E2DD71D} - curl - - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - Application - false - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - ..\..\..\..\build\Win32\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - ..\..\..\..\build\Win64\VC10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC11/curl-all.sln b/external/curl/projects/Windows/VC11/curl-all.sln deleted file mode 100644 index 4bc4caeb7..000000000 --- a/external/curl/projects/Windows/VC11/curl-all.sln +++ /dev/null @@ -1,298 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}" - ProjectSection(ProjectDependencies) = postProject - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32 - DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64 - DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32 - DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64 - DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32 - DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Debug|x64 = DLL Debug|x64 - DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32 - DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64 - DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32 - DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64 - DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32 - DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64 - DLL Release|Win32 = DLL Release|Win32 - DLL Release|x64 = DLL Release|x64 - LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32 - LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64 - LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32 - LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64 - LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32 - LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64 - LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32 - LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64 - LIB Debug|Win32 = LIB Debug|Win32 - LIB Debug|x64 = LIB Debug|x64 - LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32 - LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64 - LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32 - LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64 - LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32 - LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64 - LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32 - LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64 - LIB Release|Win32 = LIB Release|Win32 - LIB Release|x64 = LIB Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/external/curl/projects/Windows/VC11/lib/libcurl.vcxproj b/external/curl/projects/Windows/VC11/lib/libcurl.vcxproj deleted file mode 100644 index a3f6343e1..000000000 --- a/external/curl/projects/Windows/VC11/lib/libcurl.vcxproj +++ /dev/null @@ -1,2720 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - libcurl - - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - StaticLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - DynamicLibrary - false - Unicode - v110 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)lib\ - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC11/lib/libcurl.vcxproj.filters b/external/curl/projects/Windows/VC11/lib/libcurl.vcxproj.filters deleted file mode 100644 index 4d6341d74..000000000 --- a/external/curl/projects/Windows/VC11/lib/libcurl.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - \ No newline at end of file diff --git a/external/curl/projects/Windows/VC11/src/curl.sln b/external/curl/projects/Windows/VC11/src/curl.sln deleted file mode 100644 index 31fff6863..000000000 --- a/external/curl/projects/Windows/VC11/src/curl.sln +++ /dev/null @@ -1,181 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32 - DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64 - DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32 - DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64 - DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32 - DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Debug|x64 = DLL Debug|x64 - DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32 - DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64 - DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32 - DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64 - DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32 - DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64 - DLL Release|Win32 = DLL Release|Win32 - DLL Release|x64 = DLL Release|x64 - LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32 - LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64 - LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32 - LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64 - LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32 - LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64 - LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32 - LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64 - LIB Debug|Win32 = LIB Debug|Win32 - LIB Debug|x64 = LIB Debug|x64 - LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32 - LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64 - LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32 - LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64 - LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32 - LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64 - LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32 - LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64 - LIB Release|Win32 = LIB Release|Win32 - LIB Release|x64 = LIB Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/external/curl/projects/Windows/VC11/src/curl.vcxproj b/external/curl/projects/Windows/VC11/src/curl.vcxproj deleted file mode 100644 index d035e47cd..000000000 --- a/external/curl/projects/Windows/VC11/src/curl.vcxproj +++ /dev/null @@ -1,2797 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {5228E9CE-A216-422F-A5E6-58E95E2DD71D} - curl - - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - Application - false - Unicode - v110 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - ..\..\..\..\build\Win32\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - ..\..\..\..\build\Win64\VC11\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC11\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC11\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC11\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC11\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC11\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC11\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC11/src/curl.vcxproj.filters b/external/curl/projects/Windows/VC11/src/curl.vcxproj.filters deleted file mode 100644 index 4d6341d74..000000000 --- a/external/curl/projects/Windows/VC11/src/curl.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - \ No newline at end of file diff --git a/external/curl/projects/Windows/VC12/lib/libcurl.sln b/external/curl/projects/Windows/VC12/lib/libcurl.sln deleted file mode 100644 index 4d690de53..000000000 --- a/external/curl/projects/Windows/VC12/lib/libcurl.sln +++ /dev/null @@ -1,181 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32 - DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64 - DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32 - DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64 - DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32 - DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Debug|x64 = DLL Debug|x64 - DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32 - DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64 - DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32 - DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64 - DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32 - DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64 - DLL Release|Win32 = DLL Release|Win32 - DLL Release|x64 = DLL Release|x64 - LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32 - LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64 - LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32 - LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64 - LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32 - LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64 - LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32 - LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64 - LIB Debug|Win32 = LIB Debug|Win32 - LIB Debug|x64 = LIB Debug|x64 - LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32 - LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64 - LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32 - LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64 - LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32 - LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64 - LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32 - LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64 - LIB Release|Win32 = LIB Release|Win32 - LIB Release|x64 = LIB Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64 - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/external/curl/projects/Windows/VC12/lib/libcurl.vcxproj b/external/curl/projects/Windows/VC12/lib/libcurl.vcxproj deleted file mode 100644 index b7817b31b..000000000 --- a/external/curl/projects/Windows/VC12/lib/libcurl.vcxproj +++ /dev/null @@ -1,2720 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - libcurl - - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - StaticLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - DynamicLibrary - false - Unicode - v120 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)lib\ - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC12/lib/libcurl.vcxproj.filters b/external/curl/projects/Windows/VC12/lib/libcurl.vcxproj.filters deleted file mode 100644 index 4d6341d74..000000000 --- a/external/curl/projects/Windows/VC12/lib/libcurl.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - \ No newline at end of file diff --git a/external/curl/projects/Windows/VC12/src/curl.vcxproj b/external/curl/projects/Windows/VC12/src/curl.vcxproj deleted file mode 100644 index b0a9501c6..000000000 --- a/external/curl/projects/Windows/VC12/src/curl.vcxproj +++ /dev/null @@ -1,2797 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {5228E9CE-A216-422F-A5E6-58E95E2DD71D} - curl - - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - Application - false - Unicode - v120 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - ..\..\..\..\build\Win32\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - ..\..\..\..\build\Win64\VC12\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC12\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC12\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC12\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC12\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC12\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC12\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC12/src/curl.vcxproj.filters b/external/curl/projects/Windows/VC12/src/curl.vcxproj.filters deleted file mode 100644 index 4d6341d74..000000000 --- a/external/curl/projects/Windows/VC12/src/curl.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - \ No newline at end of file diff --git a/external/curl/projects/Windows/VC14.10/lib/libcurl.vcxproj b/external/curl/projects/Windows/VC14.10/lib/libcurl.vcxproj deleted file mode 100644 index 60ebdaccf..000000000 --- a/external/curl/projects/Windows/VC14.10/lib/libcurl.vcxproj +++ /dev/null @@ -1,2692 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - libcurl - - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - StaticLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - DynamicLibrary - false - Unicode - v141 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)lib\ - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC14.10/src/curl.vcxproj b/external/curl/projects/Windows/VC14.10/src/curl.vcxproj deleted file mode 100644 index 5798f8a06..000000000 --- a/external/curl/projects/Windows/VC14.10/src/curl.vcxproj +++ /dev/null @@ -1,2769 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {5228E9CE-A216-422F-A5E6-58E95E2DD71D} - curl - - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - Application - false - Unicode - v141 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.10\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC12/curl-all.sln b/external/curl/projects/Windows/VC14.20/curl-all.sln similarity index 99% rename from external/curl/projects/Windows/VC12/curl-all.sln rename to external/curl/projects/Windows/VC14.20/curl-all.sln index 1557b9e3b..3df7e1c30 100644 --- a/external/curl/projects/Windows/VC12/curl-all.sln +++ b/external/curl/projects/Windows/VC14.20/curl-all.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 +# Visual Studio 16 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}" ProjectSection(ProjectDependencies) = postProject {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} diff --git a/external/curl/projects/Windows/VC11/lib/libcurl.sln b/external/curl/projects/Windows/VC14.20/lib/libcurl.sln similarity index 98% rename from external/curl/projects/Windows/VC11/lib/libcurl.sln rename to external/curl/projects/Windows/VC14.20/lib/libcurl.sln index 34c1dd225..171bb83fa 100644 --- a/external/curl/projects/Windows/VC11/lib/libcurl.sln +++ b/external/curl/projects/Windows/VC14.20/lib/libcurl.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 +# Visual Studio 17 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}" EndProject Global diff --git a/external/curl/projects/Windows/VC10/lib/libcurl.vcxproj.filters b/external/curl/projects/Windows/VC14.20/lib/libcurl.vcxproj.filters similarity index 100% rename from external/curl/projects/Windows/VC10/lib/libcurl.vcxproj.filters rename to external/curl/projects/Windows/VC14.20/lib/libcurl.vcxproj.filters diff --git a/external/curl/projects/Windows/VC12/src/curl.sln b/external/curl/projects/Windows/VC14.20/src/curl.sln similarity index 98% rename from external/curl/projects/Windows/VC12/src/curl.sln rename to external/curl/projects/Windows/VC14.20/src/curl.sln index d4e38dc59..94c2fb737 100644 --- a/external/curl/projects/Windows/VC12/src/curl.sln +++ b/external/curl/projects/Windows/VC14.20/src/curl.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 +# Visual Studio 16 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}" EndProject Global diff --git a/external/curl/projects/Windows/VC10/src/curl.vcxproj.filters b/external/curl/projects/Windows/VC14.20/src/curl.vcxproj.filters similarity index 100% rename from external/curl/projects/Windows/VC10/src/curl.vcxproj.filters rename to external/curl/projects/Windows/VC14.20/src/curl.vcxproj.filters diff --git a/external/curl/projects/Windows/VC14.30/lib/libcurl.vcxproj b/external/curl/projects/Windows/VC14.30/lib/libcurl.vcxproj deleted file mode 100644 index ab2068616..000000000 --- a/external/curl/projects/Windows/VC14.30/lib/libcurl.vcxproj +++ /dev/null @@ -1,2692 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - libcurl - - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - StaticLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - DynamicLibrary - false - Unicode - v143 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)lib\ - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC14.30/src/curl.sln b/external/curl/projects/Windows/VC14.30/src/curl.sln index 16d22965f..ce5aa2c6f 100644 --- a/external/curl/projects/Windows/VC14.30/src/curl.sln +++ b/external/curl/projects/Windows/VC14.30/src/curl.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 +# Visual Studio 17 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}" EndProject Global diff --git a/external/curl/projects/Windows/VC14.30/src/curl.vcxproj b/external/curl/projects/Windows/VC14.30/src/curl.vcxproj deleted file mode 100644 index e1518436c..000000000 --- a/external/curl/projects/Windows/VC14.30/src/curl.vcxproj +++ /dev/null @@ -1,2769 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {5228E9CE-A216-422F-A5E6-58E95E2DD71D} - curl - - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - Application - false - Unicode - v143 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win32\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - ..\..\..\..\build\Win64\VC14.30\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC14/lib/libcurl.vcxproj b/external/curl/projects/Windows/VC14/lib/libcurl.vcxproj deleted file mode 100644 index 31602f23f..000000000 --- a/external/curl/projects/Windows/VC14/lib/libcurl.vcxproj +++ /dev/null @@ -1,2720 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} - libcurl - - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - StaticLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - DynamicLibrary - false - Unicode - v140 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)lib\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)lib\ - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\wolfssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - 4214 - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - 4214 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - %(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - Win32 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories) - $(IntDir)$(TargetFileName).intermediate.manifest - $(TargetDir)$(TargetName).lib - MachineX86 - - - - - NDEBUG;%(PreprocessorDefinitions) - true - X64 - $(OutDir)$(ProjectName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories) - $(TargetDir)$(TargetName).lib - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - _DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX86 - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories) - NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - $(OutDir)$(TargetName)$(TargetExt) - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/Windows/VC14/src/curl.vcxproj b/external/curl/projects/Windows/VC14/src/curl.vcxproj deleted file mode 100644 index 2e0f90dbc..000000000 --- a/external/curl/projects/Windows/VC14/src/curl.vcxproj +++ /dev/null @@ -1,2797 +0,0 @@ - - - - - DLL Debug - DLL wolfSSL - Win32 - - - DLL Debug - DLL wolfSSL - x64 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Debug - DLL OpenSSL - Win32 - - - DLL Debug - DLL OpenSSL - x64 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Debug - DLL Windows SSPI - Win32 - - - DLL Debug - DLL Windows SSPI - x64 - - - DLL Debug - Win32 - - - DLL Debug - x64 - - - DLL Release - DLL wolfSSL - Win32 - - - DLL Release - DLL wolfSSL - x64 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - DLL Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - DLL Release - DLL OpenSSL - Win32 - - - DLL Release - DLL OpenSSL - x64 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - DLL Release - DLL Windows SSPI - DLL WinIDN - x64 - - - DLL Release - DLL Windows SSPI - Win32 - - - DLL Release - DLL Windows SSPI - x64 - - - DLL Release - Win32 - - - DLL Release - x64 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Debug - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Debug - DLL OpenSSL - Win32 - - - LIB Debug - DLL OpenSSL - x64 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Debug - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Debug - DLL Windows SSPI - Win32 - - - LIB Debug - DLL Windows SSPI - x64 - - - LIB Debug - LIB wolfSSL - Win32 - - - LIB Debug - LIB wolfSSL - x64 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Debug - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Debug - LIB OpenSSL - Win32 - - - LIB Debug - LIB OpenSSL - x64 - - - LIB Debug - Win32 - - - LIB Debug - x64 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - Win32 - - - LIB Release - DLL OpenSSL - DLL LibSSH2 - x64 - - - LIB Release - DLL OpenSSL - Win32 - - - LIB Release - DLL OpenSSL - x64 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - Win32 - - - LIB Release - DLL Windows SSPI - DLL WinIDN - x64 - - - LIB Release - DLL Windows SSPI - Win32 - - - LIB Release - DLL Windows SSPI - x64 - - - LIB Release - LIB wolfSSL - Win32 - - - LIB Release - LIB wolfSSL - x64 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - Win32 - - - LIB Release - LIB OpenSSL - LIB LibSSH2 - x64 - - - LIB Release - LIB OpenSSL - Win32 - - - LIB Release - LIB OpenSSL - x64 - - - LIB Release - Win32 - - - LIB Release - x64 - - - - {5228E9CE-A216-422F-A5E6-58E95E2DD71D} - curl - - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - Application - false - Unicode - v140 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - ..\..\..\..\build\Win32\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - ..\..\..\..\build\Win64\VC14\$(Configuration)\ - $(OutDir)src\ - $(OutDir)src\ - false - false - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName)d - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - $(ProjectName) - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - true - $(TargetDir)$(TargetName).pdb - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - true - $(TargetDir)$(TargetName).pdb - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14\LIB Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Debug;%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14\DLL Release;%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - Disabled - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - _DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - ProgramDatabase - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - true - $(TargetDir)$(TargetName).pdb - Console - MachineX64 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win32\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX86 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - X64 - $(TargetDir)$(TargetName).tlb - - - - - MaxSpeed - OnlyExplicitInline - ..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level4 - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\..\..\..\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies) - $(OutDir)$(TargetName)$(TargetExt) - ..\..\..\..\build\Win64\VC14\$(Configuration);%(AdditionalLibraryDirectories) - Console - MachineX64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/external/curl/projects/generate.bat b/external/curl/projects/generate.bat index 45dd9e5dc..b453c69cc 100644 --- a/external/curl/projects/generate.bat +++ b/external/curl/projects/generate.bat @@ -56,7 +56,9 @@ rem *************************************************************************** set VERSION=VC14 ) else if /i "%~1" == "vc14.10" ( set VERSION=VC14.10 - ) else if /i "%~1" == "vc14.30" ( + ) else if /i "%~1" == "vc14.20" ( + set VERSION=VC14.20 + )else if /i "%~1" == "vc14.30" ( set VERSION=VC14.30 ) else if /i "%~1" == "-clean" ( set MODE=CLEAN @@ -88,6 +90,7 @@ rem *************************************************************************** if "%VERSION%" == "VC12" goto vc12 if "%VERSION%" == "VC14" goto vc14 if "%VERSION%" == "VC14.10" goto vc14.10 + if "%VERSION%" == "VC14.20" goto vc14.20 if "%VERSION%" == "VC14.30" goto vc14.30 :vc10 @@ -164,6 +167,21 @@ rem *************************************************************************** ) if not "%VERSION%" == "ALL" goto success + +:vc14.20 + echo. + + if "%MODE%" == "GENERATE" ( + echo Generating VC14.20 project files + call :generate vcxproj Windows\VC14.20\src\curl.tmpl Windows\VC14.20\src\curl.vcxproj + call :generate vcxproj Windows\VC14.20\lib\libcurl.tmpl Windows\VC14.20\lib\libcurl.vcxproj + ) else ( + echo Removing VC14.20 project files + call :clean Windows\VC14.20\src\curl.vcxproj + call :clean Windows\VC14.20\lib\libcurl.vcxproj + ) + + if not "%VERSION%" == "ALL" goto success :vc14.30 echo. @@ -182,7 +200,7 @@ rem *************************************************************************** rem Main generate function. rem -rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10 and VC14.30) +rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10, VC14.20 and VC14.30) rem %2 - Input template file rem %3 - Output project file rem @@ -263,7 +281,7 @@ rem rem Generates a single file xml element. rem -rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10 and VC14.30) +rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10, VC14.20 and VC14.30) rem %2 - Directory (src, lib, lib\vauth, lib\vquic, lib\vssh, lib\vtls) rem %3 - Source filename rem %4 - Output project file @@ -359,6 +377,7 @@ rem echo vc12 - Use Visual Studio 2013 echo vc14 - Use Visual Studio 2015 echo vc14.10 - Use Visual Studio 2017 + echo vc14.20 - Use Visual Studio 2019 echo vc14.30 - Use Visual Studio 2022 echo. echo -clean - Removes the project files diff --git a/external/curl/scripts/Makefile.am b/external/curl/scripts/Makefile.am index fcb78eabf..9d69cff9c 100644 --- a/external/curl/scripts/Makefile.am +++ b/external/curl/scripts/Makefile.am @@ -23,7 +23,7 @@ ########################################################################### EXTRA_DIST = updatemanpages.pl coverage.sh completion.pl firefox-db2pem.sh \ - checksrc.pl mk-ca-bundle.pl + checksrc.pl mk-ca-bundle.pl schemetable.c ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@ FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@ diff --git a/external/curl/scripts/Makefile.in b/external/curl/scripts/Makefile.in index cc87f5f99..cc65f8edf 100644 --- a/external/curl/scripts/Makefile.in +++ b/external/curl/scripts/Makefile.in @@ -389,7 +389,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = updatemanpages.pl coverage.sh completion.pl firefox-db2pem.sh \ - checksrc.pl mk-ca-bundle.pl + checksrc.pl mk-ca-bundle.pl schemetable.c ZSH_COMPLETION_FUNCTION_FILENAME = _curl FISH_COMPLETION_FUNCTION_FILENAME = curl.fish diff --git a/external/curl/scripts/checksrc.pl b/external/curl/scripts/checksrc.pl index b85b56b43..76f466081 100755 --- a/external/curl/scripts/checksrc.pl +++ b/external/curl/scripts/checksrc.pl @@ -59,6 +59,7 @@ 'ASTERISKSPACE' => 'pointer declared with space after asterisk', 'BADCOMMAND' => 'bad !checksrc! instruction', 'BANNEDFUNC' => 'a banned function was used', + 'BANNEDPREPROC' => 'a banned symbol was used on a preprocessor line', 'BRACEELSE' => '} else on the same line', 'BRACEPOS' => 'wrong position for an open brace', 'BRACEWHILE' => 'A single space between open brace and while', @@ -402,6 +403,13 @@ sub scanfile { checksrc($cmd, $line, $file, $l) } + if($l =~ /^#line (\d+) \"([^\"]*)\"/) { + # a #line instruction + $file = $2; + $line = $1; + next; + } + # check for a copyright statement and save the years if($l =~ /\* +copyright .* (\d\d\d\d|)/i) { my $count = 0; @@ -892,6 +900,18 @@ sub scanfile { "multiple spaces"); } preproc: + if($prep) { + # scan for use of banned symbols on a preprocessor line + if($l =~ /^(^|.*\W) + (WIN32) + (\W|$) + /x) { + checkwarn("BANNEDPREPROC", + $line, length($1), $file, $ol, + "use of $2 is banned from preprocessor lines" . + (($2 eq "WIN32") ? ", use _WIN32 instead" : "")); + } + } $line++; $prevp = $prep; $prevl = $ol if(!$prep); diff --git a/external/curl/scripts/schemetable.c b/external/curl/scripts/schemetable.c new file mode 100644 index 000000000..ae79eaa09 --- /dev/null +++ b/external/curl/scripts/schemetable.c @@ -0,0 +1,207 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +#include +#include + +/* + * Use this tool to generate an updated table for the Curl_getn_scheme_handler + * function in url.c. + */ + +struct detail { + const char *n; + const char *ifdef; +}; + +static const struct detail scheme[] = { + {"dict", "#ifndef CURL_DISABLE_DICT" }, + {"file", "#ifndef CURL_DISABLE_FILE" }, + {"ftp", "#ifndef CURL_DISABLE_FTP" }, + {"ftps", "#if defined(USE_SSL) && !defined(CURL_DISABLE_FTP)" }, + {"gopher", "#ifndef CURL_DISABLE_GOPHER" }, + {"gophers", "#if defined(USE_SSL) && !defined(CURL_DISABLE_GOPHER)" }, + {"http", "#ifndef CURL_DISABLE_HTTP" }, + {"https", "#if defined(USE_SSL) && !defined(CURL_DISABLE_HTTP)" }, + {"imap", "#ifndef CURL_DISABLE_IMAP" }, + {"imaps", "#if defined(USE_SSL) && !defined(CURL_DISABLE_IMAP)" }, + {"ldap", "#ifndef CURL_DISABLE_LDAP" }, + {"ldaps", "#if !defined(CURL_DISABLE_LDAP) && \\\n" + " !defined(CURL_DISABLE_LDAPS) && \\\n" + " ((defined(USE_OPENLDAP) && defined(USE_SSL)) || \\\n" + " (!defined(USE_OPENLDAP) && defined(HAVE_LDAP_SSL)))" }, + {"mqtt", "#ifndef CURL_DISABLE_MQTT" }, + {"pop3", "#ifndef CURL_DISABLE_POP3" }, + {"pop3s", "#if defined(USE_SSL) && !defined(CURL_DISABLE_POP3)" }, + {"rtmp", "#ifdef USE_LIBRTMP" }, + {"rtmpt", "#ifdef USE_LIBRTMP" }, + {"rtmpe", "#ifdef USE_LIBRTMP" }, + {"rtmpte", "#ifdef USE_LIBRTMP" }, + {"rtmps", "#ifdef USE_LIBRTMP" }, + {"rtmpts", "#ifdef USE_LIBRTMP" }, + {"rtsp", "#ifndef CURL_DISABLE_RTSP" }, + {"scp", "#if defined(USE_SSH) && !defined(USE_WOLFSSH)" }, + {"sftp", "#if defined(USE_SSH)" }, + {"smb", "#if !defined(CURL_DISABLE_SMB) && defined(USE_CURL_NTLM_CORE) && \\\n" + " (SIZEOF_CURL_OFF_T > 4)" }, + {"smbs", "#if defined(USE_SSL) && !defined(CURL_DISABLE_SMB) && \\\n" + " defined(USE_CURL_NTLM_CORE) && (SIZEOF_CURL_OFF_T > 4)" }, + {"smtp", "#ifndef CURL_DISABLE_SMTP" }, + {"smtps", "#if defined(USE_SSL) && !defined(CURL_DISABLE_SMTP)" }, + {"telnet", "#ifndef CURL_DISABLE_TELNET" }, + {"tftp", "#ifndef CURL_DISABLE_TFTP" }, + {"ws", "#if defined(USE_WEBSOCKETS) && !defined(CURL_DISABLE_HTTP)" }, + {"wss", "#if defined(USE_WEBSOCKETS) && \\\n" + " defined(USE_SSL) && !defined(CURL_DISABLE_HTTP)" }, + { NULL, NULL } +}; + +unsigned int calc(const char *s, int add, int shift) +{ + const char *so = s; + unsigned int c = add; + while(*s) { + c <<= shift; + c += *s; + s++; + } + return c; +} + +unsigned int num[100]; +unsigned int ix[100]; + +static void showtable(int try, int init, int shift) +{ + int nulls = 0; + int i; + for(i = 0; scheme[i].n; ++i) + num[i] = calc(scheme[i].n, init, shift); + for(i = 0; scheme[i].n; ++i) + ix[i] = num[i] % try; + printf("/*\n" + " unsigned int c = %d\n" + " while(l) {\n" + " c <<= %d;\n" + " c += Curl_raw_tolower(*s);\n" + " s++;\n" + " l--;\n" + " }\n" + "*/\n", init, shift); + + printf(" static const struct Curl_handler * const protocols[%d] = {", try); + + /* generate table */ + for(i=0; i < try; i++) { + int match = 0; + int j; + for(j=0; scheme[j].n; j++) { + if(ix[j] == i) { + printf("\n"); + printf("%s\n", scheme[j].ifdef); + printf(" &Curl_handler_%s,\n", scheme[j].n); + printf("#else\n NULL,\n"); + printf("#endif"); + match = 1; + nulls = 0; + break; + } + } + if(!match) { + if(!nulls || (nulls>10)) { + printf("\n "); + nulls = 0; + } + printf(" NULL,", nulls); + nulls++; + } + } + printf("\n };\n"); +} + +int main(void) +{ + int i; + int try; + int besttry = 9999; + int bestadd = 0; + int bestshift = 0; + int add; + int shift; + for(shift = 0; shift < 8; shift++) { + for(add = 0; add < 999; add++) { + for(i = 0; scheme[i].n; ++i) { + unsigned int v = calc(scheme[i].n, add, shift); + int j; + int badcombo = 0; + for(j=0; j < i; j++) { + + if(num[j] == v) { + /* + printf("NOPE: %u is a dupe (%s and %s)\n", + v, scheme[i], scheme[j]); + */ + badcombo = 1; + break; + } + } + if(badcombo) + break; + num[i] = v; + } +#if 0 + for(i = 0; scheme[i].n; ++i) { + printf("%u - %s\n", num[i], scheme[i].n); + } +#endif + /* try different remainders to find smallest possible table */ + for(try = 28; try < 199; try++) { + int good = 1; + for(i = 0; scheme[i].n; ++i) { + ix[i] = num[i] % try; + } + /* check for dupes */ + for(i = 0; scheme[i].n && good; ++i) { + int j; + for(j=0; j < i; j++) { + if(ix[j] == ix[i]) { + /* printf("NOPE, try %u causes dupes (%d and %d)\n", try, j, i); */ + good = 0; + break; + } + } + } + if(good) { + if(try < besttry) { + besttry = try; + bestadd = add; + bestshift = shift; + } + break; + } + } + } + } + + showtable(besttry, bestadd, bestshift); +} diff --git a/external/curl/src/.checksrc b/external/curl/src/.checksrc new file mode 100644 index 000000000..946367c49 --- /dev/null +++ b/external/curl/src/.checksrc @@ -0,0 +1 @@ +enable STDERR diff --git a/external/curl/src/Makefile.am b/external/curl/src/Makefile.am index ddeb70073..dced53e0f 100644 --- a/external/curl/src/Makefile.am +++ b/external/curl/src/Makefile.am @@ -61,6 +61,8 @@ curl_SOURCES += $(CURL_RCFILES) $(CURL_RCFILES): tool_version.h endif +curl_LDFLAGS = $(AM_LDFLAGS) $(CURL_LDFLAGS_BIN) + # This might hold -Werror CFLAGS += @CURL_CFLAG_EXTRAS@ @@ -89,7 +91,7 @@ CLEANFILES = tool_hugehelp.c NROFF=env LC_ALL=C @NROFF@ @MANOPT@ 2>/dev/null # figured out by the configure script EXTRA_DIST = mkhelp.pl \ - Makefile.mk curl.rc Makefile.inc CMakeLists.txt + Makefile.mk curl.rc Makefile.inc CMakeLists.txt .checksrc # Use absolute directory to disable VPATH MANPAGE=$(abs_top_builddir)/docs/curl.1 diff --git a/external/curl/src/Makefile.in b/external/curl/src/Makefile.in index b44afd62a..e17b739ff 100644 --- a/external/curl/src/Makefile.in +++ b/external/curl/src/Makefile.in @@ -168,12 +168,12 @@ am__libcurltool_la_SOURCES_DIST = slist_wc.c tool_binmode.c \ tool_dirhie.c tool_doswin.c tool_easysrc.c tool_filetime.c \ tool_findfile.c tool_formparse.c tool_getparam.c \ tool_getpass.c tool_help.c tool_helpers.c tool_hugehelp.c \ - tool_libinfo.c tool_listhelp.c tool_main.c tool_msgs.c \ - tool_operate.c tool_operhlp.c tool_paramhlp.c tool_parsecfg.c \ - tool_progress.c tool_setopt.c tool_sleep.c tool_stderr.c \ - tool_strdup.c tool_urlglob.c tool_util.c tool_vms.c \ - tool_writeout.c tool_writeout_json.c tool_xattr.c var.c \ - ../lib/base64.c ../lib/curl_multibyte.c ../lib/dynbuf.c \ + tool_ipfs.c tool_libinfo.c tool_listhelp.c tool_main.c \ + tool_msgs.c tool_operate.c tool_operhlp.c tool_paramhlp.c \ + tool_parsecfg.c tool_progress.c tool_setopt.c tool_sleep.c \ + tool_stderr.c tool_strdup.c tool_urlglob.c tool_util.c \ + tool_vms.c tool_writeout.c tool_writeout_json.c tool_xattr.c \ + var.c ../lib/base64.c ../lib/curl_multibyte.c ../lib/dynbuf.c \ ../lib/nonblock.c ../lib/strtoofft.c ../lib/timediff.c \ ../lib/version_win32.c ../lib/warnless.c slist_wc.h \ tool_binmode.h tool_bname.h tool_cb_dbg.h tool_cb_hdr.h \ @@ -181,12 +181,12 @@ am__libcurltool_la_SOURCES_DIST = slist_wc.c tool_binmode.c \ tool_cfgable.h tool_dirhie.h tool_doswin.h tool_easysrc.h \ tool_filetime.h tool_findfile.h tool_formparse.h \ tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \ - tool_hugehelp.h tool_libinfo.h tool_main.h tool_msgs.h \ - tool_operate.h tool_operhlp.h tool_paramhlp.h tool_parsecfg.h \ - tool_progress.h tool_sdecls.h tool_setopt.h tool_setup.h \ - tool_sleep.h tool_stderr.h tool_strdup.h tool_urlglob.h \ - tool_util.h tool_version.h tool_vms.h tool_writeout.h \ - tool_writeout_json.h tool_xattr.h var.h + tool_hugehelp.h tool_ipfs.h tool_libinfo.h tool_main.h \ + tool_msgs.h tool_operate.h tool_operhlp.h tool_paramhlp.h \ + tool_parsecfg.h tool_progress.h tool_sdecls.h tool_setopt.h \ + tool_setup.h tool_sleep.h tool_stderr.h tool_strdup.h \ + tool_urlglob.h tool_util.h tool_version.h tool_vms.h \ + tool_writeout.h tool_writeout_json.h tool_xattr.h var.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 \ @@ -199,10 +199,11 @@ am__objects_1 = libcurltool_la-slist_wc.lo \ libcurltool_la-tool_formparse.lo \ libcurltool_la-tool_getparam.lo libcurltool_la-tool_getpass.lo \ libcurltool_la-tool_help.lo libcurltool_la-tool_helpers.lo \ - libcurltool_la-tool_hugehelp.lo libcurltool_la-tool_libinfo.lo \ - libcurltool_la-tool_listhelp.lo libcurltool_la-tool_main.lo \ - libcurltool_la-tool_msgs.lo libcurltool_la-tool_operate.lo \ - libcurltool_la-tool_operhlp.lo libcurltool_la-tool_paramhlp.lo \ + libcurltool_la-tool_hugehelp.lo libcurltool_la-tool_ipfs.lo \ + libcurltool_la-tool_libinfo.lo libcurltool_la-tool_listhelp.lo \ + libcurltool_la-tool_main.lo libcurltool_la-tool_msgs.lo \ + libcurltool_la-tool_operate.lo libcurltool_la-tool_operhlp.lo \ + libcurltool_la-tool_paramhlp.lo \ libcurltool_la-tool_parsecfg.lo \ libcurltool_la-tool_progress.lo libcurltool_la-tool_setopt.lo \ libcurltool_la-tool_sleep.lo libcurltool_la-tool_stderr.lo \ @@ -238,26 +239,26 @@ am__curl_SOURCES_DIST = slist_wc.c tool_binmode.c tool_bname.c \ tool_cb_see.c tool_cb_wrt.c tool_cfgable.c tool_dirhie.c \ tool_doswin.c tool_easysrc.c tool_filetime.c tool_findfile.c \ tool_formparse.c tool_getparam.c tool_getpass.c tool_help.c \ - tool_helpers.c tool_hugehelp.c tool_libinfo.c tool_listhelp.c \ - tool_main.c tool_msgs.c tool_operate.c tool_operhlp.c \ - tool_paramhlp.c tool_parsecfg.c tool_progress.c tool_setopt.c \ - tool_sleep.c tool_stderr.c tool_strdup.c tool_urlglob.c \ - tool_util.c tool_vms.c tool_writeout.c tool_writeout_json.c \ - tool_xattr.c var.c ../lib/base64.c ../lib/curl_multibyte.c \ - ../lib/dynbuf.c ../lib/nonblock.c ../lib/strtoofft.c \ - ../lib/timediff.c ../lib/version_win32.c ../lib/warnless.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 \ - tool_cb_wrt.h tool_cfgable.h tool_dirhie.h tool_doswin.h \ - tool_easysrc.h tool_filetime.h tool_findfile.h \ + tool_helpers.c tool_hugehelp.c tool_ipfs.c tool_libinfo.c \ + tool_listhelp.c tool_main.c tool_msgs.c tool_operate.c \ + tool_operhlp.c tool_paramhlp.c tool_parsecfg.c tool_progress.c \ + tool_setopt.c tool_sleep.c tool_stderr.c tool_strdup.c \ + tool_urlglob.c tool_util.c tool_vms.c tool_writeout.c \ + tool_writeout_json.c tool_xattr.c var.c ../lib/base64.c \ + ../lib/curl_multibyte.c ../lib/dynbuf.c ../lib/nonblock.c \ + ../lib/strtoofft.c ../lib/timediff.c ../lib/version_win32.c \ + ../lib/warnless.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 tool_cb_wrt.h tool_cfgable.h tool_dirhie.h \ + tool_doswin.h tool_easysrc.h tool_filetime.h tool_findfile.h \ tool_formparse.h tool_getparam.h tool_getpass.h tool_help.h \ - tool_helpers.h tool_hugehelp.h tool_libinfo.h tool_main.h \ - tool_msgs.h tool_operate.h tool_operhlp.h tool_paramhlp.h \ - tool_parsecfg.h tool_progress.h tool_sdecls.h tool_setopt.h \ - tool_setup.h tool_sleep.h tool_stderr.h tool_strdup.h \ - tool_urlglob.h tool_util.h tool_version.h tool_vms.h \ - tool_writeout.h tool_writeout_json.h tool_xattr.h var.h \ - curl.rc + tool_helpers.h tool_hugehelp.h tool_ipfs.h tool_libinfo.h \ + tool_main.h tool_msgs.h tool_operate.h tool_operhlp.h \ + tool_paramhlp.h tool_parsecfg.h tool_progress.h tool_sdecls.h \ + tool_setopt.h tool_setup.h tool_sleep.h tool_stderr.h \ + tool_strdup.h tool_urlglob.h tool_util.h tool_version.h \ + tool_vms.h tool_writeout.h tool_writeout_json.h tool_xattr.h \ + var.h curl.rc am__objects_5 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \ tool_bname.$(OBJEXT) tool_cb_dbg.$(OBJEXT) \ tool_cb_hdr.$(OBJEXT) tool_cb_prg.$(OBJEXT) \ @@ -268,9 +269,9 @@ am__objects_5 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \ tool_findfile.$(OBJEXT) tool_formparse.$(OBJEXT) \ tool_getparam.$(OBJEXT) tool_getpass.$(OBJEXT) \ tool_help.$(OBJEXT) tool_helpers.$(OBJEXT) \ - tool_hugehelp.$(OBJEXT) tool_libinfo.$(OBJEXT) \ - tool_listhelp.$(OBJEXT) tool_main.$(OBJEXT) \ - tool_msgs.$(OBJEXT) tool_operate.$(OBJEXT) \ + tool_hugehelp.$(OBJEXT) tool_ipfs.$(OBJEXT) \ + tool_libinfo.$(OBJEXT) tool_listhelp.$(OBJEXT) \ + tool_main.$(OBJEXT) tool_msgs.$(OBJEXT) tool_operate.$(OBJEXT) \ tool_operhlp.$(OBJEXT) tool_paramhlp.$(OBJEXT) \ tool_parsecfg.$(OBJEXT) tool_progress.$(OBJEXT) \ tool_setopt.$(OBJEXT) tool_sleep.$(OBJEXT) \ @@ -292,6 +293,9 @@ curl_OBJECTS = $(am_curl_OBJECTS) @USE_EXPLICIT_LIB_DEPS_FALSE@ $(top_builddir)/lib/libcurl.la @USE_EXPLICIT_LIB_DEPS_TRUE@curl_DEPENDENCIES = \ @USE_EXPLICIT_LIB_DEPS_TRUE@ $(top_builddir)/lib/libcurl.la +curl_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(curl_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -341,6 +345,7 @@ am__depfiles_remade = ../lib/$(DEPDIR)/base64.Po \ ./$(DEPDIR)/libcurltool_la-tool_help.Plo \ ./$(DEPDIR)/libcurltool_la-tool_helpers.Plo \ ./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo \ + ./$(DEPDIR)/libcurltool_la-tool_ipfs.Plo \ ./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo \ ./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo \ ./$(DEPDIR)/libcurltool_la-tool_main.Plo \ @@ -371,16 +376,17 @@ am__depfiles_remade = ../lib/$(DEPDIR)/base64.Po \ ./$(DEPDIR)/tool_formparse.Po ./$(DEPDIR)/tool_getparam.Po \ ./$(DEPDIR)/tool_getpass.Po ./$(DEPDIR)/tool_help.Po \ ./$(DEPDIR)/tool_helpers.Po ./$(DEPDIR)/tool_hugehelp.Po \ - ./$(DEPDIR)/tool_libinfo.Po ./$(DEPDIR)/tool_listhelp.Po \ - ./$(DEPDIR)/tool_main.Po ./$(DEPDIR)/tool_msgs.Po \ - ./$(DEPDIR)/tool_operate.Po ./$(DEPDIR)/tool_operhlp.Po \ - ./$(DEPDIR)/tool_paramhlp.Po ./$(DEPDIR)/tool_parsecfg.Po \ - ./$(DEPDIR)/tool_progress.Po ./$(DEPDIR)/tool_setopt.Po \ - ./$(DEPDIR)/tool_sleep.Po ./$(DEPDIR)/tool_stderr.Po \ - ./$(DEPDIR)/tool_strdup.Po ./$(DEPDIR)/tool_urlglob.Po \ - ./$(DEPDIR)/tool_util.Po ./$(DEPDIR)/tool_vms.Po \ - ./$(DEPDIR)/tool_writeout.Po ./$(DEPDIR)/tool_writeout_json.Po \ - ./$(DEPDIR)/tool_xattr.Po ./$(DEPDIR)/var.Po + ./$(DEPDIR)/tool_ipfs.Po ./$(DEPDIR)/tool_libinfo.Po \ + ./$(DEPDIR)/tool_listhelp.Po ./$(DEPDIR)/tool_main.Po \ + ./$(DEPDIR)/tool_msgs.Po ./$(DEPDIR)/tool_operate.Po \ + ./$(DEPDIR)/tool_operhlp.Po ./$(DEPDIR)/tool_paramhlp.Po \ + ./$(DEPDIR)/tool_parsecfg.Po ./$(DEPDIR)/tool_progress.Po \ + ./$(DEPDIR)/tool_setopt.Po ./$(DEPDIR)/tool_sleep.Po \ + ./$(DEPDIR)/tool_stderr.Po ./$(DEPDIR)/tool_strdup.Po \ + ./$(DEPDIR)/tool_urlglob.Po ./$(DEPDIR)/tool_util.Po \ + ./$(DEPDIR)/tool_vms.Po ./$(DEPDIR)/tool_writeout.Po \ + ./$(DEPDIR)/tool_writeout_json.Po ./$(DEPDIR)/tool_xattr.Po \ + ./$(DEPDIR)/var.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -788,6 +794,7 @@ CURL_CFILES = \ tool_help.c \ tool_helpers.c \ tool_hugehelp.c \ + tool_ipfs.c \ tool_libinfo.c \ tool_listhelp.c \ tool_main.c \ @@ -831,6 +838,7 @@ CURL_HFILES = \ tool_help.h \ tool_helpers.h \ tool_hugehelp.h \ + tool_ipfs.h \ tool_libinfo.h \ tool_main.h \ tool_msgs.h \ @@ -861,6 +869,7 @@ CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES) # CURL_FILES comes from Makefile.inc curl_SOURCES = $(CURL_FILES) $(am__append_2) +curl_LDFLAGS = $(AM_LDFLAGS) $(CURL_LDFLAGS_BIN) @USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@ @USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@ @@ -874,7 +883,7 @@ curl_SOURCES = $(CURL_FILES) $(am__append_2) @BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(CURL_FILES) CLEANFILES = tool_hugehelp.c EXTRA_DIST = mkhelp.pl \ - Makefile.mk curl.rc Makefile.inc CMakeLists.txt + Makefile.mk curl.rc Makefile.inc CMakeLists.txt .checksrc # Use absolute directory to disable VPATH @@ -1031,7 +1040,7 @@ libcurltool.la: $(libcurltool_la_OBJECTS) $(libcurltool_la_DEPENDENCIES) $(EXTRA curl$(EXEEXT): $(curl_OBJECTS) $(curl_DEPENDENCIES) $(EXTRA_curl_DEPENDENCIES) @rm -f curl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(curl_OBJECTS) $(curl_LDADD) $(LIBS) + $(AM_V_CCLD)$(curl_LINK) $(curl_OBJECTS) $(curl_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -1078,6 +1087,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_help.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_helpers.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_ipfs.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_main.Plo@am__quote@ # am--include-marker @@ -1119,6 +1129,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_help.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_helpers.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_hugehelp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_ipfs.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_libinfo.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_listhelp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_main.Po@am__quote@ # am--include-marker @@ -1317,6 +1328,13 @@ libcurltool_la-tool_hugehelp.lo: tool_hugehelp.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_hugehelp.lo `test -f 'tool_hugehelp.c' || echo '$(srcdir)/'`tool_hugehelp.c +libcurltool_la-tool_ipfs.lo: tool_ipfs.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_ipfs.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_ipfs.Tpo -c -o libcurltool_la-tool_ipfs.lo `test -f 'tool_ipfs.c' || echo '$(srcdir)/'`tool_ipfs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_ipfs.Tpo $(DEPDIR)/libcurltool_la-tool_ipfs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tool_ipfs.c' object='libcurltool_la-tool_ipfs.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_ipfs.lo `test -f 'tool_ipfs.c' || echo '$(srcdir)/'`tool_ipfs.c + libcurltool_la-tool_libinfo.lo: tool_libinfo.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_libinfo.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_libinfo.Tpo -c -o libcurltool_la-tool_libinfo.lo `test -f 'tool_libinfo.c' || echo '$(srcdir)/'`tool_libinfo.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_libinfo.Tpo $(DEPDIR)/libcurltool_la-tool_libinfo.Plo @@ -1761,6 +1779,7 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/libcurltool_la-tool_help.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_helpers.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo + -rm -f ./$(DEPDIR)/libcurltool_la-tool_ipfs.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_main.Plo @@ -1802,6 +1821,7 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/tool_help.Po -rm -f ./$(DEPDIR)/tool_helpers.Po -rm -f ./$(DEPDIR)/tool_hugehelp.Po + -rm -f ./$(DEPDIR)/tool_ipfs.Po -rm -f ./$(DEPDIR)/tool_libinfo.Po -rm -f ./$(DEPDIR)/tool_listhelp.Po -rm -f ./$(DEPDIR)/tool_main.Po @@ -1904,6 +1924,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libcurltool_la-tool_help.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_helpers.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_hugehelp.Plo + -rm -f ./$(DEPDIR)/libcurltool_la-tool_ipfs.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_libinfo.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_listhelp.Plo -rm -f ./$(DEPDIR)/libcurltool_la-tool_main.Plo @@ -1945,6 +1966,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/tool_help.Po -rm -f ./$(DEPDIR)/tool_helpers.Po -rm -f ./$(DEPDIR)/tool_hugehelp.Po + -rm -f ./$(DEPDIR)/tool_ipfs.Po -rm -f ./$(DEPDIR)/tool_libinfo.Po -rm -f ./$(DEPDIR)/tool_listhelp.Po -rm -f ./$(DEPDIR)/tool_main.Po diff --git a/external/curl/src/Makefile.inc b/external/curl/src/Makefile.inc index 253893536..c1d202a06 100644 --- a/external/curl/src/Makefile.inc +++ b/external/curl/src/Makefile.inc @@ -79,6 +79,7 @@ CURL_CFILES = \ tool_help.c \ tool_helpers.c \ tool_hugehelp.c \ + tool_ipfs.c \ tool_libinfo.c \ tool_listhelp.c \ tool_main.c \ @@ -122,6 +123,7 @@ CURL_HFILES = \ tool_help.h \ tool_helpers.h \ tool_hugehelp.h \ + tool_ipfs.h \ tool_libinfo.h \ tool_main.h \ tool_msgs.h \ diff --git a/external/curl/src/curl.rc b/external/curl/src/curl.rc index 11d528429..6fcaf353e 100644 --- a/external/curl/src/curl.rc +++ b/external/curl/src/curl.rc @@ -53,7 +53,7 @@ BEGIN VALUE "OriginalFilename", "curl.exe\0" VALUE "ProductName", "The curl executable\0" VALUE "ProductVersion", CURL_VERSION "\0" - VALUE "LegalCopyright", "\xa9 " CURL_COPYRIGHT "\0" /* a9: Copyright symbol */ + VALUE "LegalCopyright", "Copyright (C) " CURL_COPYRIGHT "\0" VALUE "License", "https://curl.se/docs/copyright.html\0" END END diff --git a/external/curl/src/tool_cb_hdr.c b/external/curl/src/tool_cb_hdr.c index df44f7aa7..198a8d050 100644 --- a/external/curl/src/tool_cb_hdr.c +++ b/external/curl/src/tool_cb_hdr.c @@ -41,9 +41,9 @@ static char *parse_filename(const char *ptr, size_t len); -#ifdef WIN32 -#define BOLD -#define BOLDOFF +#ifdef _WIN32 +#define BOLD "\x1b[1m" +#define BOLDOFF "\x1b[22m" #else #define BOLD "\x1b[1m" /* Switch off bold by setting "all attributes off" since the explicit @@ -87,7 +87,7 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata) } #endif -#ifdef WIN32 +#ifdef _WIN32 /* Discard incomplete UTF-8 sequence buffered from body */ if(outs->utf8seq[0]) memset(outs->utf8seq, 0, sizeof(outs->utf8seq)); @@ -150,16 +150,19 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata) char *filename; size_t len; - while(*p && (p < end) && !ISALPHA(*p)) + while((p < end) && *p && !ISALPHA(*p)) p++; if(p > end - 9) break; if(memcmp(p, "filename=", 9)) { /* no match, find next parameter */ - while((p < end) && (*p != ';')) + while((p < end) && *p && (*p != ';')) p++; - continue; + if((p < end) && *p) + continue; + else + break; } p += 9; @@ -209,7 +212,11 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata) if(!outs->stream && !tool_create_output_file(outs, per->config)) return CURL_WRITEFUNC_ERROR; - if(hdrcbdata->global->isatty && hdrcbdata->global->styled_output) + if(hdrcbdata->global->isatty && +#ifdef _WIN32 + tool_term_has_bold && +#endif + hdrcbdata->global->styled_output) value = memchr(ptr, ':', cb); if(value) { size_t namelen = value - ptr; @@ -297,7 +304,7 @@ static char *parse_filename(const char *ptr, size_t len) if(copy != p) memmove(copy, p, strlen(p) + 1); -#if defined(MSDOS) || defined(WIN32) +#if defined(_WIN32) || defined(MSDOS) { char *sanitized; SANITIZEcode sc = sanitize_file_name(&sanitized, copy, 0); @@ -306,7 +313,7 @@ static char *parse_filename(const char *ptr, size_t len) return NULL; copy = sanitized; } -#endif /* MSDOS || WIN32 */ +#endif /* _WIN32 || MSDOS */ /* in case we built debug enabled, we allow an environment variable * named CURL_TESTDIR to prefix the given file name to put it into a diff --git a/external/curl/src/tool_cb_prg.c b/external/curl/src/tool_cb_prg.c index 47ec3ef39..ef47b42da 100644 --- a/external/curl/src/tool_cb_prg.c +++ b/external/curl/src/tool_cb_prg.c @@ -38,6 +38,8 @@ #include "memdebug.h" /* keep this as LAST include */ +#define MAX_BARLENGTH 256 + #ifdef HAVE_TERMIOS_H # include #elif defined(HAVE_TERMIO_H) @@ -78,11 +80,16 @@ static const unsigned int sinus[] = { static void fly(struct ProgressData *bar, bool moved) { - char buf[256]; + char buf[MAX_BARLENGTH + 2]; int pos; int check = bar->width - 2; - msnprintf(buf, sizeof(buf), "%*s\r", bar->width-1, " "); + /* bar->width is range checked when assigned */ + DEBUGASSERT(bar->width <= MAX_BARLENGTH); + memset(buf, ' ', bar->width); + buf[bar->width] = '\r'; + buf[bar->width + 1] = '\0'; + memcpy(&buf[bar->bar], "-=O=-", 5); pos = sinus[bar->tick%200] / (1000000 / check); @@ -114,8 +121,6 @@ static void fly(struct ProgressData *bar, bool moved) ** callback for CURLOPT_XFERINFOFUNCTION */ -#define MAX_BARLENGTH 256 - #if (SIZEOF_CURL_OFF_T < 8) #error "too small curl_off_t" #else @@ -249,7 +254,7 @@ void progressbarinit(struct ProgressData *bar, struct winsize ts; if(!ioctl(STDIN_FILENO, TIOCGWINSZ, &ts)) cols = ts.ws_col; -#elif defined(WIN32) +#elif defined(_WIN32) { HANDLE stderr_hnd = GetStdHandle(STD_ERROR_HANDLE); CONSOLE_SCREEN_BUFFER_INFO console_info; diff --git a/external/curl/src/tool_cb_rea.c b/external/curl/src/tool_cb_rea.c index d70a9b909..8cb5bbe8a 100644 --- a/external/curl/src/tool_cb_rea.c +++ b/external/curl/src/tool_cb_rea.c @@ -62,7 +62,7 @@ size_t tool_read_cb(char *buffer, size_t sz, size_t nmemb, void *userdata) if(msdelta > config->timeout_ms) /* timeout */ return 0; -#ifndef WIN32 +#ifndef _WIN32 /* this logic waits on read activity on a file descriptor that is not a socket which makes it not work with select() on Windows */ else { diff --git a/external/curl/src/tool_cb_see.c b/external/curl/src/tool_cb_see.c index 8351473c8..bce57bb28 100644 --- a/external/curl/src/tool_cb_see.c +++ b/external/curl/src/tool_cb_see.c @@ -93,21 +93,6 @@ int tool_seek_cb(void *userdata, curl_off_t offset, int whence) #ifdef USE_TOOL_FTRUNCATE -#ifdef __BORLANDC__ -/* 64-bit lseek-like function unavailable */ -# define _lseeki64(hnd,ofs,whence) lseek(hnd,ofs,whence) -#endif - -#ifdef __POCC__ -# if(__POCC__ < 450) -/* 64-bit lseek-like function unavailable */ -# define _lseeki64(hnd,ofs,whence) _lseek(hnd,ofs,whence) -# else -# undef _lseeki64 -# define _lseeki64(hnd,ofs,whence) _lseek64(hnd,ofs,whence) -# endif -#endif - #ifdef _WIN32_WCE /* 64-bit lseek-like function unavailable */ # undef _lseeki64 diff --git a/external/curl/src/tool_cb_see.h b/external/curl/src/tool_cb_see.h index 14bbc4264..b5d7bf985 100644 --- a/external/curl/src/tool_cb_see.h +++ b/external/curl/src/tool_cb_see.h @@ -25,7 +25,7 @@ ***************************************************************************/ #include "tool_setup.h" -#if defined(WIN32) && !defined(HAVE_FTRUNCATE) +#if defined(_WIN32) && !defined(HAVE_FTRUNCATE) int tool_ftruncate64(int fd, curl_off_t where); @@ -35,7 +35,7 @@ int tool_ftruncate64(int fd, curl_off_t where); #define HAVE_FTRUNCATE 1 #define USE_TOOL_FTRUNCATE 1 -#endif /* WIN32 && ! HAVE_FTRUNCATE */ +#endif /* _WIN32 && ! HAVE_FTRUNCATE */ /* ** callback for CURLOPT_SEEKFUNCTION diff --git a/external/curl/src/tool_cb_wrt.c b/external/curl/src/tool_cb_wrt.c index b7838664e..98063c39c 100644 --- a/external/curl/src/tool_cb_wrt.c +++ b/external/curl/src/tool_cb_wrt.c @@ -44,7 +44,7 @@ #ifndef O_BINARY #define O_BINARY 0 #endif -#ifdef WIN32 +#ifdef _WIN32 #define OPENMODE S_IREAD | S_IWRITE #else #define OPENMODE S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH @@ -159,7 +159,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata) struct OperationConfig *config = per->config; size_t bytes = sz * nmemb; bool is_tty = config->global->isatty; -#ifdef WIN32 +#ifdef _WIN32 CONSOLE_SCREEN_BUFFER_INFO console_info; intptr_t fhnd; #endif @@ -231,13 +231,13 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata) } } -#ifdef WIN32 +#ifdef _WIN32 fhnd = _get_osfhandle(fileno(outs->stream)); /* if windows console then UTF-8 must be converted to UTF-16 */ if(isatty(fileno(outs->stream)) && GetConsoleScreenBufferInfo((HANDLE)fhnd, &console_info)) { wchar_t *wc_buf; - DWORD wc_len; + DWORD wc_len, chars_written; unsigned char *rbuf = (unsigned char *)buffer; DWORD rlen = (DWORD)bytes; @@ -292,7 +292,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata) (HANDLE) fhnd, prefix, prefix[1] ? 2 : 1, - NULL, + &chars_written, NULL)) { return CURL_WRITEFUNC_ERROR; } @@ -351,7 +351,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata) (HANDLE) fhnd, wc_buf, wc_len, - NULL, + &chars_written, NULL)) { free(wc_buf); return CURL_WRITEFUNC_ERROR; diff --git a/external/curl/src/tool_dirhie.c b/external/curl/src/tool_dirhie.c index 16765c3a5..1cadbd0be 100644 --- a/external/curl/src/tool_dirhie.c +++ b/external/curl/src/tool_dirhie.c @@ -25,7 +25,7 @@ #include -#ifdef WIN32 +#ifdef _WIN32 # include #endif @@ -38,7 +38,7 @@ #include "memdebug.h" /* keep this as LAST include */ -#if defined(WIN32) || (defined(MSDOS) && !defined(__DJGPP__)) +#if defined(_WIN32) || (defined(MSDOS) && !defined(__DJGPP__)) # define mkdir(x,y) (mkdir)((x)) # ifndef F_OK # define F_OK 0 @@ -88,7 +88,7 @@ static void show_dir_errno(struct GlobalConfig *global, const char *name) * should create all the dir* automagically */ -#if defined(WIN32) || defined(__DJGPP__) +#if defined(_WIN32) || defined(__DJGPP__) /* systems that may use either or when specifying a path */ #define PATH_DELIMITERS "\\/" #else @@ -132,7 +132,7 @@ CURLcode create_dir_hierarchy(const char *outfile, struct GlobalConfig *global) msnprintf(&dirbuildup[dlen], outlen - dlen, "%s%s", DIR_CHAR, tempdir); else { if(outdup == tempdir) { -#if defined(MSDOS) || defined(WIN32) +#if defined(_WIN32) || defined(MSDOS) /* Skip creating a drive's current directory. It may seem as though that would harmlessly fail but it could be a corner case if X: did not exist, since we would be creating it diff --git a/external/curl/src/tool_doswin.c b/external/curl/src/tool_doswin.c index faa5755e6..db2b8b78a 100644 --- a/external/curl/src/tool_doswin.c +++ b/external/curl/src/tool_doswin.c @@ -23,13 +23,13 @@ ***************************************************************************/ #include "tool_setup.h" -#if defined(MSDOS) || defined(WIN32) +#if defined(_WIN32) || defined(MSDOS) #if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME) # include #endif -#ifdef WIN32 +#ifdef _WIN32 # include # include # include "tool_cfgable.h" @@ -42,7 +42,7 @@ #include "curlx.h" #include "memdebug.h" /* keep this as LAST include */ -#ifdef WIN32 +#ifdef _WIN32 # undef PATH_MAX # define PATH_MAX MAX_PATH #endif @@ -55,7 +55,7 @@ # endif #endif -#ifdef WIN32 +#ifdef _WIN32 # define _use_lfn(f) (1) /* long file names always available */ #elif !defined(__DJGPP__) || (__DJGPP__ < 2) /* DJGPP 2.0 has _use_lfn() */ # define _use_lfn(f) (0) /* long file names never available */ @@ -597,7 +597,7 @@ char **__crt0_glob_function(char *arg) #endif /* MSDOS && (__DJGPP__ || __GO32__) */ -#ifdef WIN32 +#ifdef _WIN32 /* * Function to find CACert bundle on a Win32 platform using SearchPath. @@ -714,6 +714,8 @@ static struct TerminalSettings { #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 #endif +bool tool_term_has_bold; + static void restore_terminal(void) { if(InterlockedExchange(&TerminalSettings.valid, (LONG)FALSE)) @@ -733,16 +735,23 @@ static BOOL WINAPI signal_handler(DWORD type) static void init_terminal(void) { TerminalSettings.hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); + /* * Enable VT (Virtual Terminal) output. * Note: VT mode flag can be set on any version of Windows, but VT - * processing only performed on Win10 >= Creators Update) + * processing only performed on Win10 >= version 1709 (OS build 16299) + * Creator's Update. Also, ANSI bold on/off supported since then. */ - if((TerminalSettings.hStdOut != INVALID_HANDLE_VALUE) && - GetConsoleMode(TerminalSettings.hStdOut, - &TerminalSettings.dwOutputMode) && - !(TerminalSettings.dwOutputMode & - ENABLE_VIRTUAL_TERMINAL_PROCESSING)) { + if(TerminalSettings.hStdOut == INVALID_HANDLE_VALUE || + !GetConsoleMode(TerminalSettings.hStdOut, + &TerminalSettings.dwOutputMode) || + !curlx_verify_windows_version(10, 0, 16299, PLATFORM_WINNT, + VERSION_GREATER_THAN_EQUAL)) + return; + + if((TerminalSettings.dwOutputMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING)) + tool_term_has_bold = true; + else { /* The signal handler is set before attempting to change the console mode because otherwise a signal would not be caught after the change but before the handler was installed. */ @@ -751,6 +760,7 @@ static void init_terminal(void) if(SetConsoleMode(TerminalSettings.hStdOut, (TerminalSettings.dwOutputMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING))) { + tool_term_has_bold = true; atexit(restore_terminal); } else { @@ -781,6 +791,6 @@ CURLcode win32_init(void) return CURLE_OK; } -#endif /* WIN32 */ +#endif /* _WIN32 */ -#endif /* MSDOS || WIN32 */ +#endif /* _WIN32 || MSDOS */ diff --git a/external/curl/src/tool_doswin.h b/external/curl/src/tool_doswin.h index 669fdb6ed..e07d89d95 100644 --- a/external/curl/src/tool_doswin.h +++ b/external/curl/src/tool_doswin.h @@ -25,7 +25,7 @@ ***************************************************************************/ #include "tool_setup.h" -#if defined(MSDOS) || defined(WIN32) +#if defined(_WIN32) || defined(MSDOS) #define SANITIZE_ALLOW_COLONS (1<<0) /* Allow colons */ #define SANITIZE_ALLOW_PATH (1<<1) /* Allow path separators and colons */ @@ -57,7 +57,7 @@ char **__crt0_glob_function(char *arg); #endif /* MSDOS && (__DJGPP__ || __GO32__) */ -#ifdef WIN32 +#ifdef _WIN32 CURLcode FindWin32CACert(struct OperationConfig *config, curl_sslbackend backend, @@ -65,8 +65,8 @@ CURLcode FindWin32CACert(struct OperationConfig *config, struct curl_slist *GetLoadedModulePaths(void); CURLcode win32_init(void); -#endif /* WIN32 */ +#endif /* _WIN32 */ -#endif /* MSDOS || WIN32 */ +#endif /* _WIN32 || MSDOS */ #endif /* HEADER_CURL_TOOL_DOSWIN_H */ diff --git a/external/curl/src/tool_filetime.c b/external/curl/src/tool_filetime.c index 9c2e80429..13113886e 100644 --- a/external/curl/src/tool_filetime.c +++ b/external/curl/src/tool_filetime.c @@ -41,7 +41,7 @@ int getfiletime(const char *filename, struct GlobalConfig *global, /* Windows stat() may attempt to adjust the unix GMT file time by a daylight saving time offset and since it's GMT that is bad behavior. When we have access to a 64-bit type we can bypass stat and get the times directly. */ -#if defined(WIN32) +#if defined(_WIN32) HANDLE hfile; TCHAR *tchar_filename = curlx_convert_UTF8_to_tchar((char *)filename); @@ -87,7 +87,7 @@ int getfiletime(const char *filename, struct GlobalConfig *global, return rc; } -#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || defined(WIN32) +#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || defined(_WIN32) void setfiletime(curl_off_t filetime, const char *filename, struct GlobalConfig *global) { @@ -95,7 +95,7 @@ void setfiletime(curl_off_t filetime, const char *filename, /* Windows utime() may attempt to adjust the unix GMT file time by a daylight saving time offset and since it's GMT that is bad behavior. When we have access to a 64-bit type we can bypass utime and set the times directly. */ -#if defined(WIN32) +#if defined(_WIN32) HANDLE hfile; TCHAR *tchar_filename = curlx_convert_UTF8_to_tchar((char *)filename); @@ -153,4 +153,4 @@ void setfiletime(curl_off_t filetime, const char *filename, } } #endif /* defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \ - defined(WIN32) */ + defined(_WIN32) */ diff --git a/external/curl/src/tool_filetime.h b/external/curl/src/tool_filetime.h index 908b2d72b..205e5cee2 100644 --- a/external/curl/src/tool_filetime.h +++ b/external/curl/src/tool_filetime.h @@ -31,12 +31,12 @@ int getfiletime(const char *filename, struct GlobalConfig *global, curl_off_t *stamp); #if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \ - (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) + (defined(_WIN32) && (SIZEOF_CURL_OFF_T >= 8)) void setfiletime(curl_off_t filetime, const char *filename, struct GlobalConfig *global); #else #define setfiletime(a,b,c) Curl_nop_stmt #endif /* defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \ - (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */ + (defined(_WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */ #endif /* HEADER_CURL_TOOL_FILETIME_H */ diff --git a/external/curl/src/tool_findfile.c b/external/curl/src/tool_findfile.c index 201d8f0a8..a1544a563 100644 --- a/external/curl/src/tool_findfile.c +++ b/external/curl/src/tool_findfile.c @@ -53,7 +53,7 @@ static const struct finder conf_list[] = { { "CURL_HOME", NULL, FALSE }, { "XDG_CONFIG_HOME", NULL, FALSE }, /* index == 1, used in the code */ { "HOME", NULL, FALSE }, -#ifdef WIN32 +#ifdef _WIN32 { "USERPROFILE", NULL, FALSE }, { "APPDATA", NULL, FALSE }, { "USERPROFILE", "\\Application Data", FALSE}, diff --git a/external/curl/src/tool_findfile.h b/external/curl/src/tool_findfile.h index faafd71cb..63d25195f 100644 --- a/external/curl/src/tool_findfile.h +++ b/external/curl/src/tool_findfile.h @@ -25,7 +25,7 @@ ***************************************************************************/ #include "tool_setup.h" -#ifdef WIN32 +#ifdef _WIN32 #define CURLRC_DOTSCORE 2 /* look for underscore-prefixed name too */ #else #define CURLRC_DOTSCORE 1 /* regular .curlrc check */ diff --git a/external/curl/src/tool_getparam.c b/external/curl/src/tool_getparam.c index d9772a309..5fa1ace10 100644 --- a/external/curl/src/tool_getparam.c +++ b/external/curl/src/tool_getparam.c @@ -437,7 +437,7 @@ void parse_cert_parameter(const char *cert_parameter, needs to work. In order not to break compatibility, we still use : as separator, but we try to detect when it is used for a file name! On windows. */ -#ifdef WIN32 +#ifdef _WIN32 if((param_place == &cert_parameter[1]) && (cert_parameter[2] == '\\' || cert_parameter[2] == '/') && (ISALPHA(cert_parameter[0])) ) { @@ -1043,6 +1043,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ break; } } + + if(denominator > numerator) { + err = PARAM_NUMBER_TOO_LARGE; + break; + } + global->ms_per_transfer = numerator/denominator; } break; diff --git a/external/curl/src/tool_getpass.c b/external/curl/src/tool_getpass.c index f5aa98c6a..8ccccdfb8 100644 --- a/external/curl/src/tool_getpass.c +++ b/external/curl/src/tool_getpass.c @@ -46,7 +46,7 @@ # include iodef #endif -#ifdef WIN32 +#ifdef _WIN32 # include #endif @@ -94,7 +94,7 @@ char *getpass_r(const char *prompt, char *buffer, size_t buflen) #define DONE #endif /* __VMS */ -#if defined(WIN32) +#if defined(_WIN32) char *getpass_r(const char *prompt, char *buffer, size_t buflen) { @@ -122,7 +122,7 @@ char *getpass_r(const char *prompt, char *buffer, size_t buflen) return buffer; /* we always return success */ } #define DONE -#endif /* WIN32 */ +#endif /* _WIN32 */ #ifndef DONE /* not previously provided */ diff --git a/external/curl/src/tool_help.c b/external/curl/src/tool_help.c index 8983a4ca0..c8aea295d 100644 --- a/external/curl/src/tool_help.c +++ b/external/curl/src/tool_help.c @@ -73,8 +73,6 @@ static const struct category_descriptors categories[] = { {NULL, NULL, CURLHELP_HIDDEN} }; -extern const struct helptxt helptext[]; - static void print_category(curlhelp_t category) { diff --git a/external/curl/src/tool_hugehelp.c b/external/curl/src/tool_hugehelp.c index ad26b0f3c..51a4087b0 100644 --- a/external/curl/src/tool_hugehelp.c +++ b/external/curl/src/tool_hugehelp.c @@ -268,7 +268,7 @@ void hugehelp(void) " completely with the -s, --silent option.\n" "\n" "VERSION\n" -" This man page describes curl 8.4.0. If you use a later version, chances\n" +" This man page describes curl 8.5.0. If you use a later version, chances\n" " are this man page does not fully document it. If you use an earlier\n" " version, this document tries to include version information about which\n" , stdout); @@ -2320,53 +2320,55 @@ void hugehelp(void) , stdout); fputs( " part of the header content: do not add newlines or carriage re-\n" -" turns, they only mess things up for you.\n" +" turns, they only mess things up for you. curl passes on the ver-\n" +" batim string you give it without any filter or other safe\n" +" guards. That includes white space and control characters.\n" "\n" -" This option can take an argument in @filename style, which then\n" -" adds a header for each line in the input file. Using @- makes\n" +" This option can take an argument in @filename style, which then\n" +" adds a header for each line in the input file. Using @- makes\n" +, stdout); + fputs( " curl read the header file from stdin. Added in 7.55.0.\n" "\n" " Please note that most anti-spam utilities check the presence and\n" -, stdout); - fputs( -" value of several MIME mail headers: these are \"From:\", \"To:\",\n" -" \"Date:\" and \"Subject:\" among others and should be added with\n" +" value of several MIME mail headers: these are \"From:\", \"To:\",\n" +" \"Date:\" and \"Subject:\" among others and should be added with\n" " this option.\n" "\n" -" You need --proxy-header to send custom headers intended for an\n" +" You need --proxy-header to send custom headers intended for an\n" " HTTP proxy. Added in 7.37.0.\n" "\n" -" Passing on a \"Transfer-Encoding: chunked\" header when doing an\n" -" HTTP request with a request body, makes curl send the data using\n" , stdout); fputs( +" Passing on a \"Transfer-Encoding: chunked\" header when doing an\n" +" HTTP request with a request body, makes curl send the data using\n" " chunked encoding.\n" "\n" -" WARNING: headers set with this option are set in all HTTP re-\n" -" quests - even after redirects are followed, like when told with\n" -" -L, --location. This can lead to the header being sent to other\n" -" hosts than the original host, so sensitive headers should be\n" +" WARNING: headers set with this option are set in all HTTP re-\n" +" quests - even after redirects are followed, like when told with\n" +" -L, --location. This can lead to the header being sent to other\n" +, stdout); + fputs( +" hosts than the original host, so sensitive headers should be\n" " used with caution combined with following redirects.\n" "\n" " -H, --header can be used several times in a command line\n" "\n" -, stdout); - fputs( " Examples:\n" " curl -H \"X-First-Name: Joe\" https://example.com\n" " curl -H \"User-Agent: yes-please/2000\" https://example.com\n" " curl -H \"Host:\" https://example.com\n" " curl -H @headers.txt https://example.com\n" "\n" +, stdout); + fputs( " See also -A, --user-agent and -e, --referer.\n" "\n" " -h, --help \n" -" Usage help. This lists all curl command line options within the\n" +" Usage help. This lists all curl command line options within the\n" " given category.\n" "\n" -, stdout); - fputs( -" If no argument is provided, curl displays only the most impor-\n" +" If no argument is provided, curl displays only the most impor-\n" " tant command line arguments.\n" "\n" " For category all, curl displays help for all options.\n" @@ -2374,65 +2376,65 @@ void hugehelp(void) " If category is specified, curl displays all available help cate-\n" " gories.\n" "\n" +, stdout); + fputs( " Example:\n" " curl --help all\n" "\n" " See also -v, --verbose.\n" "\n" " --hostpubmd5 \n" -" (SFTP SCP) Pass a string containing 32 hexadecimal digits. The\n" -, stdout); - fputs( -" string should be the 128 bit MD5 checksum of the remote host's\n" +" (SFTP SCP) Pass a string containing 32 hexadecimal digits. The\n" +" string should be the 128 bit MD5 checksum of the remote host's\n" " public key, curl refuses the connection with the host unless the\n" " md5sums match.\n" "\n" " If --hostpubmd5 is provided several times, the last set value is\n" " used.\n" "\n" +, stdout); + fputs( " Example:\n" " curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/\n" "\n" " See also --hostpubsha256.\n" "\n" " --hostpubsha256 \n" -, stdout); - fputs( " (SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash\n" -" of the remote host's public key. Curl refuses the connection\n" +" of the remote host's public key. Curl refuses the connection\n" " with the host unless the hashes match.\n" "\n" -" This feature requires libcurl to be built with libssh2 and does\n" +" This feature requires libcurl to be built with libssh2 and does\n" +, stdout); + fputs( " not work with other SSH backends.\n" "\n" " If --hostpubsha256 is provided several times, the last set value\n" " is used.\n" " Example:\n" -, stdout); - fputs( " curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/\n" "\n" " See also --hostpubmd5. Added in 7.80.0.\n" "\n" " --hsts \n" -" (HTTPS) This option enables HSTS for the transfer. If the file\n" -" name points to an existing HSTS cache file, that is used. After\n" -" a completed transfer, the cache is saved to the file name again\n" -" if it has been modified.\n" -"\n" +" (HTTPS) This option enables HSTS for the transfer. If the file\n" , stdout); fputs( -" If curl is told to use HTTP:// for a transfer involving a host\n" -" name that exists in the HSTS cache, it upgrades the transfer to\n" +" name points to an existing HSTS cache file, that is used. After\n" +" a completed transfer, the cache is saved to the file name again\n" +" if it has been modified.\n" +"\n" +" If curl is told to use HTTP:// for a transfer involving a host\n" +" name that exists in the HSTS cache, it upgrades the transfer to\n" " use HTTPS. Each HSTS cache entry has an individual life time af-\n" " ter which the upgrade is no longer performed.\n" "\n" +, stdout); + fputs( " Specify a \"\" file name (zero length) to avoid loading/saving and\n" " make curl just handle HSTS in memory.\n" "\n" -, stdout); - fputs( -" If this option is used several times, curl loads contents from\n" +" If this option is used several times, curl loads contents from\n" " all the files but the last one is used for saving.\n" " --hsts can be used several times in a command line\n" "\n" @@ -2442,12 +2444,12 @@ void hugehelp(void) " See also --proto. Added in 7.74.0.\n" "\n" " --http0.9\n" -" (HTTP) Tells curl to be fine with HTTP version 0.9 response.\n" -"\n" , stdout); fputs( -" HTTP/0.9 is a response without headers and therefore you can\n" -" also connect with this to non-HTTP servers and still get a re-\n" +" (HTTP) Tells curl to be fine with HTTP version 0.9 response.\n" +"\n" +" HTTP/0.9 is a response without headers and therefore you can\n" +" also connect with this to non-HTTP servers and still get a re-\n" " sponse since curl simply transparently downgrades - if allowed.\n" "\n" " HTTP/0.9 is disabled by default (added in 7.66.0)\n" @@ -2455,15 +2457,15 @@ void hugehelp(void) " Providing --http0.9 multiple times has no extra effect. Disable\n" " it again with --no-http0.9.\n" "\n" +, stdout); + fputs( " Example:\n" " curl --http0.9 https://example.com\n" "\n" -, stdout); - fputs( " See also --http1.1, --http2 and --http3. Added in 7.64.0.\n" "\n" " -0, --http1.0\n" -" (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" " Providing -0, --http1.0 multiple times has no extra effect.\n" @@ -2471,10 +2473,10 @@ void hugehelp(void) " Example:\n" " curl --http1.0 https://example.com\n" "\n" -" See also --http0.9 and --http1.1. This option is mutually exclu-\n" , stdout); fputs( -" sive to --http1.1 and --http2 and --http2-prior-knowledge and\n" +" See also --http0.9 and --http1.1. This option is mutually exclu-\n" +" sive to --http1.1 and --http2 and --http2-prior-knowledge and\n" " --http3.\n" "\n" " --http1.1\n" @@ -2485,30 +2487,30 @@ void hugehelp(void) " Example:\n" " curl --http1.1 https://example.com\n" "\n" -" See also -0, --http1.0 and --http0.9. This option is mutually\n" -" exclusive to -0, --http1.0 and --http2 and --http2-prior-knowl-\n" +" See also -0, --http1.0 and --http0.9. This option is mutually\n" , stdout); fputs( +" exclusive to -0, --http1.0 and --http2 and --http2-prior-knowl-\n" " edge and --http3.\n" "\n" " --http2-prior-knowledge\n" -" (HTTP) Tells curl to issue its non-TLS HTTP requests using\n" -" HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge\n" -" that the server supports HTTP/2 straight away. HTTPS requests\n" -" still do HTTP/2 the standard way with negotiated protocol ver-\n" +" (HTTP) Tells curl to issue its non-TLS HTTP requests using\n" +" HTTP/2 without HTTP/1.1 Upgrade. It requires prior knowledge\n" +" that the server supports HTTP/2 straight away. HTTPS requests\n" +" still do HTTP/2 the standard way with negotiated protocol ver-\n" " sion in the TLS handshake.\n" -"\n" , stdout); fputs( -" Providing --http2-prior-knowledge multiple times has no extra\n" +"\n" +" Providing --http2-prior-knowledge multiple times has no extra\n" " effect. Disable it again with --no-http2-prior-knowledge.\n" "\n" " Example:\n" " curl --http2-prior-knowledge https://example.com\n" "\n" -" See also --http2 and --http3. --http2-prior-knowledge requires\n" -" that the underlying libcurl was built to support HTTP/2. This\n" -" option is mutually exclusive to --http1.1 and -0, --http1.0 and\n" +" See also --http2 and --http3. --http2-prior-knowledge requires\n" +" that the underlying libcurl was built to support HTTP/2. This\n" +" option is mutually exclusive to --http1.1 and -0, --http1.0 and\n" , stdout); fputs( " --http2 and --http3.\n" @@ -2516,13 +2518,13 @@ void hugehelp(void) " --http2\n" " (HTTP) Tells curl to use HTTP version 2.\n" "\n" -" For HTTPS, this means curl negotiates HTTP/2 in the TLS hand-\n" +" For HTTPS, this means curl negotiates HTTP/2 in the TLS hand-\n" " shake. curl does this by default.\n" "\n" -" For HTTP, this means curl attempts to upgrade the request to\n" +" For HTTP, this means curl attempts to upgrade the request to\n" " HTTP/2 using the Upgrade: request header.\n" "\n" -" When curl uses HTTP/2 over HTTPS, it does not itself insist on\n" +" When curl uses HTTP/2 over HTTPS, it does not itself insist on\n" , stdout); fputs( " TLS 1.2 or higher even though that is required by the specifica-\n" @@ -2534,29 +2536,29 @@ void hugehelp(void) " curl --http2 https://example.com\n" "\n" " See also --http1.1, --http3 and --no-alpn. --http2 requires that\n" -" the underlying libcurl was built to support HTTP/2. This option\n" +" the underlying libcurl was built to support HTTP/2. This option\n" , stdout); fputs( " is mutually exclusive to --http1.1 and -0, --http1.0 and\n" " --http2-prior-knowledge and --http3.\n" "\n" " --http3-only\n" -" (HTTP) **WARNING**: this option is experimental. Do not use in\n" +" (HTTP) **WARNING**: this option is experimental. Do not use in\n" " production.\n" "\n" -" Instructs curl to use HTTP/3 to the host in the URL, with no\n" -" fallback to earlier HTTP versions. HTTP/3 can only be used for\n" -" HTTPS and not for HTTP URLs. For HTTP, this option triggers an\n" +" Instructs curl to use HTTP/3 to the host in the URL, with no\n" +" fallback to earlier HTTP versions. HTTP/3 can only be used for\n" +" HTTPS and not for HTTP URLs. For HTTP, this option triggers an\n" , stdout); fputs( " error.\n" "\n" -" This option allows a user to avoid using the Alt-Svc method of\n" -" upgrading to HTTP/3 when you know that the target speaks HTTP/3\n" +" This option allows a user to avoid using the Alt-Svc method of\n" +" upgrading to HTTP/3 when you know that the target speaks HTTP/3\n" " on the given host and port.\n" "\n" -" This option makes curl fail if a QUIC connection cannot be es-\n" -" tablished, it does not attempt any other HTTP versions on its\n" +" This option makes curl fail if a QUIC connection cannot be es-\n" +" tablished, it does not attempt any other HTTP versions on its\n" " own. Use --http3 for similar functionality with a fallback.\n" "\n" , stdout); @@ -2566,29 +2568,29 @@ void hugehelp(void) " Example:\n" " curl --http3-only https://example.com\n" "\n" -" See also --http1.1, --http2 and --http3. --http3-only requires\n" -" that the underlying libcurl was built to support HTTP/3. This\n" -" option is mutually exclusive to --http1.1 and -0, --http1.0 and\n" -" --http2 and --http2-prior-knowledge and --http3. Added in\n" +" See also --http1.1, --http2 and --http3. --http3-only requires\n" +" that the underlying libcurl was built to support HTTP/3. This\n" +" option is mutually exclusive to --http1.1 and -0, --http1.0 and\n" +" --http2 and --http2-prior-knowledge and --http3. Added in\n" " 7.88.0.\n" , stdout); fputs( " --http3\n" -" (HTTP) **WARNING**: this option is experimental. Do not use in\n" +" (HTTP) **WARNING**: this option is experimental. Do not use in\n" " production.\n" "\n" " Tells curl to try HTTP/3 to the host in the URL, but fallback to\n" -" earlier HTTP versions if the HTTP/3 connection establishment\n" +" earlier HTTP versions if the HTTP/3 connection establishment\n" " fails. HTTP/3 is only available for HTTPS and not for HTTP URLs.\n" -" This option allows a user to avoid using the Alt-Svc method of\n" +" This option allows a user to avoid using the Alt-Svc method of\n" , stdout); fputs( -" upgrading to HTTP/3 when you know that the target speaks HTTP/3\n" +" upgrading to HTTP/3 when you know that the target speaks HTTP/3\n" " on the given host and port.\n" "\n" -" When asked to use HTTP/3, curl issues a separate attempt to use\n" +" When asked to use HTTP/3, curl issues a separate attempt to use\n" " older HTTP versions with a slight delay, so if the HTTP/3 trans-\n" -" fer fails or is slow, curl still tries to proceed with an older\n" +" fer fails or is slow, curl still tries to proceed with an older\n" " HTTP version.\n" "\n" " Use --http3-only for similar functionality without a fallback.\n" @@ -2601,27 +2603,27 @@ void hugehelp(void) " curl --http3 https://example.com\n" "\n" " See also --http1.1 and --http2. --http3 requires that the under-\n" -" lying libcurl was built to support HTTP/3. This option is mutu-\n" -" ally exclusive to --http1.1 and -0, --http1.0 and --http2 and\n" +" lying libcurl was built to support HTTP/3. This option is mutu-\n" +" ally exclusive to --http1.1 and -0, --http1.0 and --http2 and\n" " --http2-prior-knowledge and --http3-only. Added in 7.66.0.\n" "\n" " --ignore-content-length\n" , stdout); fputs( -" (FTP HTTP) For HTTP, Ignore the Content-Length header. This is\n" -" particularly useful for servers running Apache 1.x, which re-\n" -" ports incorrect Content-Length for files larger than 2 giga-\n" +" (FTP HTTP) For HTTP, Ignore the Content-Length header. This is\n" +" particularly useful for servers running Apache 1.x, which re-\n" +" ports incorrect Content-Length for files larger than 2 giga-\n" " bytes.\n" "\n" " For FTP, this makes curl skip the SIZE command to figure out the\n" " size before downloading a file.\n" "\n" -" This option does not work for HTTP if libcurl was built to use\n" +" This option does not work for HTTP if libcurl was built to use\n" " hyper.\n" "\n" , stdout); fputs( -" Providing --ignore-content-length multiple times has no extra\n" +" Providing --ignore-content-length multiple times has no extra\n" " effect. Disable it again with --no-ignore-content-length.\n" "\n" " Example:\n" @@ -2630,8 +2632,8 @@ void hugehelp(void) " See also --ftp-skip-pasv-ip.\n" "\n" " -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" +" Include the HTTP response headers in the output. The HTTP re-\n" +" sponse headers can include things like server name, cookies,\n" , stdout); fputs( " date of the document, HTTP version and more...\n" @@ -2639,10 +2641,10 @@ void hugehelp(void) " To view the request headers, consider the -v, --verbose option.\n" "\n" " Prior to 7.75.0 curl did not print the headers if -f, --fail was\n" -" used in combination with this option and there was error re-\n" +" used in combination with this option and there was error re-\n" " ported by server.\n" "\n" -" Providing -i, --include multiple times has no extra effect.\n" +" Providing -i, --include multiple times has no extra effect.\n" " Disable it again with --no-include.\n" "\n" " Example:\n" @@ -2654,37 +2656,37 @@ void hugehelp(void) "\n" " -k, --insecure\n" " (TLS SFTP SCP) By default, every secure connection curl makes is\n" -" verified to be secure before the transfer takes place. This op-\n" -" tion makes curl skip the verification step and proceed without\n" +" verified to be secure before the transfer takes place. This op-\n" +" tion makes curl skip the verification step and proceed without\n" " checking.\n" "\n" " When this option is not used for protocols using TLS, curl veri-\n" , stdout); fputs( -" fies the server's TLS certificate before it continues: that the\n" -" certificate contains the right name which matches the host name\n" +" fies the server's TLS certificate before it continues: that the\n" +" certificate contains the right name which matches the host name\n" " used in the URL and that the certificate has been signed by a CA\n" " certificate present in the cert store. See this online resource\n" " for further details:\n" " https://curl.se/docs/sslcerts.html\n" "\n" -" For SFTP and SCP, this option makes curl skip the known_hosts\n" +" For SFTP and SCP, this option makes curl skip the known_hosts\n" , stdout); fputs( -" verification. known_hosts is a file normally stored in the\n" +" verification. known_hosts is a file normally stored in the\n" " user's home directory in the \".ssh\" subdirectory, which contains\n" " host names and their public keys.\n" "\n" " WARNING: using this option makes the transfer insecure.\n" "\n" -" When curl uses secure protocols it trusts responses and allows\n" -" for example HSTS and Alt-Svc information to be stored and used\n" +" When curl uses secure protocols it trusts responses and allows\n" +" for example HSTS and Alt-Svc information to be stored and used\n" , stdout); fputs( -" subsequently. Using -k, --insecure can make curl trust and use\n" +" subsequently. Using -k, --insecure can make curl trust and use\n" " such information from malicious servers.\n" "\n" -" Providing -k, --insecure multiple times has no extra effect.\n" +" Providing -k, --insecure multiple times has no extra effect.\n" " Disable it again with --no-insecure.\n" "\n" " Example:\n" @@ -2695,20 +2697,20 @@ void hugehelp(void) " --interface \n" , stdout); fputs( -" Perform an operation using a specified interface. You can enter\n" -" interface name, IP address or host name. An example could look\n" +" Perform an operation using a specified interface. You can enter\n" +" interface name, IP address or host name. An example could look\n" " like:\n" "\n" " curl --interface eth0:1 https://www.example.com/\n" "\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" +" 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" -" If --interface is provided several times, the last set value is\n" +" If --interface is provided several times, the last set value is\n" " used.\n" "\n" " Example:\n" @@ -2717,53 +2719,45 @@ void hugehelp(void) " See also --dns-interface.\n" "\n" " --ipfs-gateway \n" -" Specifies which gateway to use for IPFS and IPNS URLs. Not\n" -" specifying this argument will let cURL try to automatically\n" +" Specify which gateway to use for IPFS and IPNS URLs. Not speci-\n" +" fying this will instead make curl check if the IPFS_GATEWAY en-\n" , stdout); fputs( -" check if IPFS_GATEWAY environment variable is set, or if\n" -" ~/.ipfs/gateway plain text file exists.\n" +" vironment variable is set, or if a ~/.ipfs/gateway file holding\n" +" the gateway URL exists.\n" "\n" -" If you run a local IPFS node, this gateway is by default avail-\n" -" able under http://localhost:8080. A full example URL would look\n" +" If you run a local IPFS node, this gateway is by default avail-\n" +" able under http://localhost:8080. A full example URL would look\n" " like:\n" "\n" " curl --ipfs-gateway http://localhost:8080 ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi\n" "\n" +" There are many public IPFS gateways. See for example:\n" +"\n" , stdout); fputs( -" You can also specify publicly available gateways. One such gate-\n" -" way is https://ipfs.io. A full example url would look like:\n" -"\n" -" curl --ipfs-gateway https://ipfs.io ipfs://bafybeigagd5nmnn2iys2f3doro7ydrevyr2mzarwidgadawmamiteydbzi\n" -"\n" -" There are many public IPFS gateways. As a starting point to find\n" -" one that works for your case, consult this page:\n" -"\n" " https://ipfs.github.io/public-gateway-checker/\n" "\n" +" WARNING: If you opt to go for a remote gateway you should be\n" +" aware that you completely trust the gateway. This is fine in lo-\n" +" cal gateways as you host it yourself. With remote gateways there\n" +" could potentially be a malicious actor returning you data that\n" +" does not match the request you made, inspect or even interfere\n" , stdout); fputs( -" A word of caution! When you opt to go for a remote gateway you\n" -" should be aware that you completely trust the gateway. This is\n" -" fine in local gateways as you host it yourself. With remote\n" -" gateways there could potentially be a malicious actor returning\n" -" you data that does not match the request you made, inspect or\n" -" even interfere with the request. You won't notice this when us-\n" -, stdout); - fputs( -" ing cURL. A mitigation could be to go for a \"trustless\" gate-\n" -" way. This means you locally verify that the data. Consult the\n" -" docs page on trusted vs trustless: https://docs.ipfs.tech/refer-\n" +" with the request. You will not notice this when using curl. A\n" +" mitigation could be to go for a \"trustless\" gateway. This means\n" +" you locally verify that the data. Consult the docs page on\n" +" trusted vs trustless: https://docs.ipfs.tech/refer-\n" " ence/http/gateway/#trusted-vs-trustless\n" "\n" " If --ipfs-gateway is provided several times, the last set value\n" " is used.\n" " Example:\n" -" curl --ipfs-gateway https://example.com ipfs://\n" -"\n" , stdout); fputs( +" curl --ipfs-gateway https://example.com ipfs://\n" +"\n" " See also -h, --help and -M, --manual. Added in 8.4.0.\n" "\n" " -4, --ipv4\n" @@ -2775,12 +2769,12 @@ void hugehelp(void) " Example:\n" " curl --ipv4 https://example.com\n" "\n" +, stdout); + fputs( " See also --http1.1 and --http2. This option is mutually exclu-\n" " sive to -6, --ipv6.\n" "\n" " -6, --ipv6\n" -, stdout); - fputs( " This option tells curl to use IPv6 addresses only when resolving\n" " host names, and not for example try IPv4.\n" "\n" @@ -2790,12 +2784,12 @@ void hugehelp(void) " curl --ipv6 https://example.com\n" "\n" " See also --http1.1 and --http2. This option is mutually exclu-\n" +, stdout); + fputs( " sive to -4, --ipv4.\n" "\n" " --json \n" " (HTTP) Sends the specified JSON data in a POST request to the\n" -, stdout); - fputs( " HTTP server. --json works as a shortcut for passing on these\n" " three options:\n" "\n" @@ -2804,22 +2798,22 @@ void hugehelp(void) " --header \"Accept: application/json\"\n" "\n" " There is no verification that the passed in data is actual JSON\n" +, stdout); + fputs( " or that the syntax is correct.\n" "\n" " If you start the data with the letter @, the rest should be a\n" -, stdout); - fputs( " file name to read the data from, or a single dash (-) if you\n" " want curl to read the data from stdin. Posting data from a file\n" " named 'foobar' would thus be done with --json @foobar and to in-\n" " stead read the data from stdin, use --json @-.\n" "\n" +, stdout); + fputs( " If this option is used more than once on the same command line,\n" " the additional data pieces are concatenated to the previous be-\n" " fore sending.\n" "\n" -, stdout); - fputs( " The headers this option sets can be overridden with -H, --header\n" " as usual.\n" "\n" @@ -2827,49 +2821,51 @@ void hugehelp(void) "\n" " Examples:\n" " curl --json '{ \"drink\": \"coffe\" }' https://example.com\n" +, stdout); + fputs( " curl --json '{ \"drink\":' --json ' \"coffe\" }' https://example.com\n" " curl --json @prepared https://example.com\n" " curl --json @- https://example.com < json.txt\n" "\n" -, stdout); - fputs( " See also --data-binary and --data-raw. This option is mutually\n" " exclusive to -F, --form and -I, --head and -T, --upload-file.\n" " Added in 7.82.0.\n" "\n" " -j, --junk-session-cookies\n" +, stdout); + fputs( " (HTTP) When curl is told to read cookies from a given file, this\n" " option makes it discard all \"session cookies\". This has the same\n" " effect as if a new session is started. Typical browsers discard\n" -, stdout); - fputs( " session cookies when they are closed down.\n" "\n" " Providing -j, --junk-session-cookies multiple times has no extra\n" " effect. Disable it again with --no-junk-session-cookies.\n" "\n" " Example:\n" +, stdout); + fputs( " curl --junk-session-cookies -b cookies.txt https://example.com\n" "\n" " See also -b, --cookie and -c, --cookie-jar.\n" "\n" " --keepalive-time \n" " This option sets the time a connection needs to remain idle be-\n" -, stdout); - fputs( " 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" +, stdout); + fputs( " (meaning Linux, recent AIX, HP-UX and more). Keepalives are\n" " used by the TCP stack to detect broken networks on idle connec-\n" " tions. The number of missed keepalive probes before declaring\n" -, stdout); - fputs( " the connection down is OS dependent and is commonly 9 or 10.\n" " This option has no effect if --no-keepalive is used.\n" "\n" " If unspecified, the option defaults to 60 seconds.\n" "\n" +, stdout); + fputs( " If --keepalive-time is provided several times, the last set\n" " value is used.\n" "\n" @@ -2879,12 +2875,12 @@ void hugehelp(void) " See also --no-keepalive and -m, --max-time.\n" "\n" " --key-type \n" -, stdout); - fputs( " (TLS) Private key file type. Specify which type your --key pro-\n" " vided private key is. DER, PEM, and ENG are supported. If not\n" " specified, PEM is assumed.\n" "\n" +, stdout); + fputs( " If --key-type is provided several times, the last set value is\n" " used.\n" "\n" @@ -2894,63 +2890,61 @@ void hugehelp(void) " See also --key.\n" "\n" " --key \n" -, stdout); - fputs( " (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" " tries the following candidates in order: '~/.ssh/id_rsa',\n" +, stdout); + fputs( " '~/.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( " ify a private key located in a PKCS#11 device. A string begin-\n" " ning with \"pkcs11:\" is interpreted as a PKCS#11 URI. If a\n" " PKCS#11 URI is provided, then the --engine option is set as\n" +, stdout); + fputs( " \"pkcs11\" if none was provided and the --key-type option is set\n" " as \"ENG\" if none was provided.\n" "\n" " If curl is built against Secure Transport or Schannel then this\n" -, stdout); - fputs( " option is ignored for TLS protocols (HTTPS, etc). Those backends\n" " expect the private key to be already present in the keychain or\n" " PKCS#12 file containing the certificate.\n" "\n" " If --key is provided several times, the last set value is used.\n" "\n" +, stdout); + fputs( " Example:\n" " curl --cert certificate --key here https://example.com\n" "\n" " See also --key-type and -E, --cert.\n" "\n" " --krb \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' is used.\n" "\n" +, stdout); + fputs( " If --krb is provided several times, the last set value is used.\n" "\n" " Example:\n" " curl --krb clear ftp://example.com/\n" "\n" -, stdout); - fputs( " See also --delegation and --ssl. --krb requires that the under-\n" " lying libcurl was built to support Kerberos.\n" "\n" " --libcurl \n" " Append this option to any ordinary curl command line, and you\n" " get libcurl-using C source code written to the file that does\n" +, stdout); + fputs( " the equivalent of what your command-line operation does!\n" "\n" " This option is global and does not need to be specified for each\n" -, stdout); - fputs( " use of --next.\n" "\n" " If --libcurl is provided several times, the last set value is\n" @@ -2962,19 +2956,19 @@ void hugehelp(void) " See also -v, --verbose.\n" "\n" " --limit-rate \n" -" Specify the maximum transfer rate you want curl to use - for\n" -" both downloads and uploads. This feature is useful if you have a\n" , stdout); fputs( +" Specify the maximum transfer rate you want curl to use - for\n" +" both downloads and uploads. This feature is useful if you have a\n" " limited pipe and you would like your transfer not to use your\n" " entire 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' counts the number as kilobytes,\n" -" 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it giga-\n" -" bytes. The suffixes (k, M, G, T, P) are 1024 based. For example\n" , stdout); fputs( +" 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it giga-\n" +" bytes. The suffixes (k, M, G, T, P) are 1024 based. For example\n" " 1k is 1024. Examples: 200K, 3m and 1G.\n" "\n" " The rate limiting logic works on averaging the transfer speed to\n" @@ -2982,11 +2976,11 @@ void hugehelp(void) " onds.\n" "\n" " If you also use the -Y, --speed-limit option, that option takes\n" +, stdout); + fputs( " precedence and might cripple the rate-limiting slightly, to help\n" " keeping the speed-limit logic working.\n" "\n" -, stdout); - fputs( " If --limit-rate is provided several times, the last set value is\n" " used.\n" "\n" @@ -2995,40 +2989,40 @@ void hugehelp(void) " curl --limit-rate 1000 https://example.com\n" " curl --limit-rate 10M https://example.com\n" "\n" +, stdout); + fputs( " See also --rate, -Y, --speed-limit and -y, --speed-time.\n" "\n" " -l, --list-only\n" " (FTP POP3 SFTP) (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 does not use a standard look or for-\n" " mat. When used like this, the option causes an NLST command to\n" +, stdout); + fputs( " be sent 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" " (SFTP) When listing an SFTP directory, this switch forces a\n" " name-only view, one per line. This is especially useful if the\n" " user wants to machine-parse the contents of an SFTP directory\n" +, stdout); + fputs( " since the normal directory view provides more information than\n" " just file names.\n" "\n" -, stdout); - fputs( " (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" " 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" -" to send a UIDL command instead, so the user may use the email's\n" , stdout); fputs( +" to send a UIDL command instead, so the user may use the email's\n" " unique identifier rather than its message-id to make the re-\n" " quest.\n" "\n" @@ -3040,9 +3034,9 @@ void hugehelp(void) " See also -Q, --quote and -X, --request.\n" "\n" " --local-port \n" -" Set a preferred single number or range (FROM-TO) of local port\n" , stdout); fputs( +" 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 so setting this range to something\n" " too narrow might cause unnecessary connection setup failures.\n" @@ -3052,21 +3046,21 @@ void hugehelp(void) "\n" " Example:\n" " curl --local-port 1000-3000 https://example.com\n" +, stdout); + fputs( "\n" " See also -g, --globoff.\n" "\n" " --location-trusted\n" -, stdout); - fputs( " (HTTP) Like -L, --location, but allows sending the name + pass-\n" " word to all hosts that the site may redirect to. This may or may\n" " not introduce a security breach if the site redirects you to a\n" " site to which you send your authentication info (which is plain-\n" " text in the case of HTTP Basic authentication).\n" "\n" -" Providing --location-trusted multiple times has no extra effect.\n" , stdout); fputs( +" Providing --location-trusted multiple times has no extra effect.\n" " Disable it again with --no-location-trusted.\n" "\n" " Example:\n" @@ -3077,19 +3071,19 @@ 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 makes curl redo the request on\n" , stdout); fputs( +" 3XX response code), this option makes curl redo the request on\n" " the new place. If used together with -i, --include or -I,\n" " --head, headers from all requested pages are shown.\n" "\n" " When authentication is used, curl only sends its credentials to\n" " the initial host. If a redirect takes curl to a different host,\n" " it does not get the user+password pass on. See also --loca-\n" -" tion-trusted on how to change this.\n" -"\n" , stdout); fputs( +" tion-trusted on how to change this.\n" +"\n" " Limit the amount of redirects to follow by using the\n" " --max-redirs option.\n" "\n" @@ -3097,10 +3091,10 @@ void hugehelp(void) " sends the following request with a GET if the HTTP response was\n" " 301, 302, or 303. If the response code was any other 3xx code,\n" " curl resends the following request using the same unmodified\n" -" method.\n" -"\n" , stdout); fputs( +" method.\n" +"\n" " You can tell curl to not change POST requests to GET after a 30x\n" " response by using the dedicated options for that: --post301,\n" " --post302 and --post303.\n" @@ -5078,6 +5072,10 @@ void hugehelp(void) "\n" , stdout); fputs( +" curl passes on the verbatim string you give it its the request\n" +" without any filter or other safe guards. That includes white\n" +" space and control characters.\n" +"\n" " If --request-target is provided several times, the last set\n" " value is used.\n" "\n" @@ -5087,39 +5085,45 @@ void hugehelp(void) " See also -X, --request. Added in 7.55.0.\n" "\n" " -X, --request \n" +, stdout); + fputs( " Change the method to use when starting the transfer.\n" "\n" +" curl passes on the verbatim string you give it its the request\n" +" without any filter or other safe guards. That includes white\n" +" space and control characters.\n" +"\n" " HTTP Specifies a custom request method to use when\n" +" communicating with the HTTP server. The specified\n" , stdout); fputs( -" communicating with the HTTP server. The specified\n" " request method is used instead of the method oth-\n" " erwise used (which defaults to GET). Read the\n" " HTTP 1.1 specification for details and explana-\n" " tions. Common additional HTTP requests include\n" " PUT and DELETE, but related technologies like\n" -, stdout); - fputs( " WebDAV offers PROPFIND, COPY, MOVE and more.\n" "\n" +, stdout); + fputs( " Normally you do not need this option. All sorts\n" " of GET, HEAD, POST and PUT requests are rather\n" " invoked by using dedicated command line options.\n" "\n" " This option only changes the actual word used in\n" " the HTTP request, it does not alter the way curl\n" +" behaves. So for example if you want to make a\n" , stdout); fputs( -" behaves. So for example if you want to make a\n" " proper HEAD request, using -X HEAD does not suf-\n" " fice. You need to use the -I, --head option.\n" "\n" " The method string you set with -X, --request is\n" " used for all requests, which if you for example\n" " use -L, --location may cause unintended side-ef-\n" +" fects when curl does not change request method\n" , stdout); fputs( -" fects when curl does not change request method\n" " according to the HTTP 30x response codes - and\n" " similar.\n" "\n" @@ -5129,9 +5133,9 @@ void hugehelp(void) " POP3 Specifies a custom POP3 command to use instead of\n" " LIST or RETR.\n" "\n" +" IMAP Specifies a custom IMAP command to use instead of\n" , stdout); fputs( -" IMAP Specifies a custom IMAP command to use instead of\n" " LIST.\n" "\n" " SMTP Specifies a custom SMTP command to use instead of\n" @@ -5144,19 +5148,19 @@ void hugehelp(void) " curl -X \"DELETE\" https://example.com\n" " curl -X NLST ftp://example.com/\n" "\n" -, stdout); - fputs( " See also --request-target.\n" "\n" " --resolve <[+]host:port:addr[,addr]...>\n" +, stdout); + fputs( " 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" " 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 is used for. It means you need\n" , stdout); fputs( -" the specific protocol the host is used for. It means you need\n" " several entries if you want to provide address for the same host\n" " but different ports.\n" "\n" @@ -5165,19 +5169,19 @@ void hugehelp(void) " solved last so any --resolve with a specific host and port is\n" " used first.\n" "\n" +" The provided address set by this option is used even if -4,\n" , stdout); fputs( -" The provided address set by this option is used even if -4,\n" " --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n" " By prefixing the host with a '+' you can make the entry time out\n" " after curl's default timeout (1 minute). Note that this only\n" " makes sense for long running parallel transfers with a lot of\n" " files. In such cases, if this option is used curl tries to re-\n" -, stdout); - fputs( " solve the host as it normally would once the timeout has ex-\n" " pired.\n" "\n" +, stdout); + fputs( " Support for providing the IP address within [brackets] was added\n" " in 7.57.0.\n" "\n" @@ -5188,14 +5192,11 @@ void hugehelp(void) "\n" " Support for the '+' prefix was was added in 7.75.0.\n" "\n" -, stdout); - fputs( -" This option can be used many times to add many host names to re-\n" -" solve.\n" -"\n" " --resolve can be used several times in a command line\n" "\n" " Example:\n" +, stdout); + fputs( " curl --resolve example.com:443:127.0.0.1 https://example.com\n" "\n" " See also --connect-to and --alt-svc.\n" @@ -5203,43 +5204,41 @@ void hugehelp(void) " --retry-all-errors\n" " Retry on any error. This option is used together with --retry.\n" "\n" -, stdout); - fputs( " This option is the \"sledgehammer\" of retrying. Do not use this\n" " option by default (for example in your curlrc), there may be un-\n" " intended consequences such as sending or receiving duplicate\n" +, stdout); + fputs( " data. Do not use with redirected input or output. You'd be much\n" " better off handling your unique problems in shell script. Please\n" " read the example below.\n" "\n" -, stdout); - fputs( " WARNING: For server compatibility curl attempts to retry failed\n" " flaky transfers as close as possible to how they were started,\n" " but this is not possible with redirected input or output. For\n" +, stdout); + fputs( " example, before retrying it removes output data from a failed\n" " partial transfer that was written to an output file. However\n" " this is not true of data redirected to a | pipe or > file, which\n" -, stdout); - fputs( " are not reset. We strongly suggest you do not parse or record\n" " output via redirect in combination with this option, since you\n" " may receive duplicate data.\n" "\n" +, stdout); + fputs( " By default curl does not return error for transfers with an HTTP\n" " response code that indicates an HTTP error, if the transfer was\n" " successful. For example, if a server replies 404 Not Found and\n" -, stdout); - fputs( " the reply is fully received then that is not an error. When\n" " --retry is used then curl retries on some HTTP response codes\n" " that indicate transient HTTP errors, but that does not include\n" +, stdout); + fputs( " most 4xx response codes such as 404. If you want to retry on all\n" " response codes that indicate HTTP errors (4xx and 5xx) then com-\n" " bine with -f, --fail.\n" "\n" -, stdout); - fputs( " Providing --retry-all-errors multiple times has no extra effect.\n" " Disable it again with --no-retry-all-errors.\n" "\n" @@ -5248,47 +5247,47 @@ void hugehelp(void) "\n" " See also --retry. Added in 7.71.0.\n" "\n" +, stdout); + fputs( " --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" " with --retry.\n" "\n" -, stdout); - fputs( " Providing --retry-connrefused multiple times has no extra ef-\n" " fect. Disable it again with --no-retry-connrefused.\n" "\n" " Example:\n" " curl --retry-connrefused --retry 7 https://example.com\n" "\n" +, stdout); + fputs( " See also --retry and --retry-all-errors. Added in 7.52.0.\n" "\n" " --retry-delay \n" " Make curl sleep this amount of time before each retry when a\n" -, stdout); - fputs( " 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 makes curl use the default backoff time.\n" "\n" +, stdout); + fputs( " If --retry-delay is provided several times, the last set value\n" " is used.\n" " Example:\n" " curl --retry-delay 5 --retry 7 https://example.com\n" "\n" -, stdout); - fputs( " See also --retry.\n" "\n" " --retry-max-time \n" " The retry timer is reset before the first transfer attempt. Re-\n" " tries are done as usual (see --retry) as long as the timer has\n" " not reached this given limit. Notice that if the timer has not\n" -" reached the limit, the request is made and while performing, it\n" -" may take longer than this given time period. To limit a single\n" , stdout); fputs( +" reached the limit, the request is made and while performing, it\n" +" may take longer than this given time period. To limit a single\n" " request's maximum time, use -m, --max-time. Set this option to\n" " zero to not timeout retries.\n" "\n" @@ -5298,32 +5297,32 @@ void hugehelp(void) " Example:\n" " curl --retry-max-time 30 --retry 10 https://example.com\n" "\n" +, stdout); + fputs( " See also --retry.\n" "\n" " --retry \n" " If a transient error is returned when curl tries to perform a\n" -, stdout); - fputs( " transfer, it retries this number of times before giving up. Set-\n" " ting the number to 0 makes curl do no retries (which is the de-\n" " fault). Transient error means either: a timeout, an FTP 4xx re-\n" " sponse code or an HTTP 408, 429, 500, 502, 503 or 504 response\n" " code.\n" "\n" -" When curl is about to retry a transfer, it first waits one sec-\n" -" ond and then for all forthcoming retries it doubles the waiting\n" , stdout); fputs( +" When curl is about to retry a transfer, it first waits one sec-\n" +" ond and then for all forthcoming retries it doubles the waiting\n" " time until it reaches 10 minutes which then remains delay be-\n" " tween the rest of the retries. By using --retry-delay you dis-\n" " able this exponential backoff algorithm. See also\n" " --retry-max-time to limit the total time allowed for retries.\n" "\n" +, stdout); + fputs( " curl complies with the Retry-After: response header if one was\n" " present to know when to issue the next retry (added in 7.66.0).\n" "\n" -, stdout); - fputs( " If --retry is provided several times, the last set value is\n" " used.\n" "\n" @@ -5334,22 +5333,22 @@ void hugehelp(void) "\n" " --sasl-authzid \n" " Use this authorization identity (authzid), during SASL PLAIN au-\n" +, stdout); + fputs( " thentication, in addition to the authentication identity (auth-\n" " cid) as specified by -u, --user.\n" "\n" -, stdout); - fputs( " If the option is not specified, the server derives the authzid\n" " from the authcid, but if specified, and depending on the server\n" " implementation, it may be used to access another user's inbox,\n" " that the user has been granted access to, or a shared mailbox\n" " for example.\n" "\n" +, stdout); + fputs( " If --sasl-authzid is provided several times, the last set value\n" " is used.\n" " Example:\n" -, stdout); - fputs( " curl --sasl-authzid zid imap://example.com/\n" "\n" " See also --login-options. Added in 7.66.0.\n" @@ -5361,13 +5360,13 @@ void hugehelp(void) " it again with --no-sasl-ir.\n" "\n" " Example:\n" +, stdout); + fputs( " curl --sasl-ir imap://example.com/\n" "\n" " See also --sasl-authzid.\n" "\n" " --service-name \n" -, stdout); - fputs( " This option allows you to change the service name for SPNEGO.\n" "\n" " If --service-name is provided several times, the last set value\n" @@ -5378,11 +5377,11 @@ void hugehelp(void) " See also --negotiate and --proxy-service-name.\n" "\n" " -S, --show-error\n" +, stdout); + fputs( " When used with -s, --silent, it makes curl show an error message\n" " if it fails.\n" "\n" -, stdout); - fputs( " This option is global and does not need to be specified for each\n" " use of --next.\n" "\n" @@ -5395,9 +5394,9 @@ void hugehelp(void) " See also --no-progress-meter.\n" "\n" " -s, --silent\n" -" Silent or quiet mode. Do not show progress meter or error mes-\n" , stdout); fputs( +" Silent or quiet mode. Do not show progress meter or error mes-\n" " sages. Makes Curl mute. It still outputs the data you ask for,\n" " potentially even to the terminal/stdout unless you redirect it.\n" "\n" @@ -5405,13 +5404,13 @@ void hugehelp(void) " progress meter but still show error messages.\n" "\n" " Providing -s, --silent multiple times has no extra effect. Dis-\n" +, stdout); + fputs( " able it again with --no-silent.\n" "\n" " Example:\n" " curl -s https://example.com\n" "\n" -, stdout); - fputs( " See also -v, --verbose, --stderr and --no-progress-meter.\n" "\n" " --socks4 \n" @@ -5420,9 +5419,9 @@ void hugehelp(void) " curl resolve the host name and passing the address on to the\n" " proxy.\n" "\n" -" To specify proxy on a unix domain socket, use localhost for\n" , stdout); fputs( +" To specify proxy on a unix domain socket, use localhost for\n" " host, e.g. socks4://localhost/path/to/socket.sock\n" "\n" " This option overrides any previous use of -x, --proxy, as they\n" @@ -5432,9 +5431,9 @@ void hugehelp(void) " with -x, --proxy using a socks4:// protocol prefix.\n" "\n" " --preproxy can be used to specify a SOCKS proxy at the same time\n" -" proxy is used with an HTTP/HTTPS proxy (added in 7.52.0). In\n" , stdout); fputs( +" proxy is used with an HTTP/HTTPS proxy (added in 7.52.0). In\n" " such a case, curl first connects to the SOCKS proxy and then\n" " connects (through SOCKS) to the HTTP or HTTPS proxy.\n" "\n" @@ -5446,9 +5445,9 @@ void hugehelp(void) "\n" " See also --socks4a, --socks5 and --socks5-hostname.\n" "\n" -" --socks4a \n" , stdout); fputs( +" --socks4a \n" " Use the specified SOCKS4a proxy. If the port number is not spec-\n" " ified, it is assumed at port 1080. This asks the proxy to re-\n" " solve the host name.\n" @@ -6846,42 +6845,43 @@ void hugehelp(void) "\n" , stdout); fputs( -" json A JSON object with all available keys.\n" +" json A JSON object with all available keys. (Added in\n" +" 7.70.0)\n" "\n" -" 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.\n" "\n" -" local_port The local port number of the most recently done\n" +" local_port The local port number of the most recently done\n" " connection.\n" "\n" -" method The http method used in the most recent HTTP re-\n" , stdout); fputs( +" method The http method used in the most recent HTTP re-\n" " quest. (Added in 7.72.0)\n" "\n" " num_certs Number of server certificates received in the TLS\n" " handshake. Supported only by the OpenSSL, GnuTLS,\n" -" Schannel and Secure Transport backends. (Added\n" +" Schannel and Secure Transport backends. (Added\n" " in 7.88.0)\n" "\n" -" num_connects Number of new connects made in the recent trans-\n" -" fer.\n" -"\n" +" num_connects Number of new connects made in the recent trans-\n" , stdout); fputs( +" fer.\n" +"\n" " num_headers The number of response headers in the most recent\n" -" request (restarted at each redirect). Note that\n" -" the status line IS NOT a header. (Added in\n" +" request (restarted at each redirect). Note that\n" +" the status line IS NOT a header. (Added in\n" " 7.73.0)\n" "\n" " num_redirects Number of redirects that were followed in the re-\n" " quest.\n" "\n" -" onerror The rest of the output is only shown if the\n" , stdout); fputs( -" transfer returned a non-zero error. (Added in\n" +" onerror The rest of the output is only shown if the\n" +" transfer returned a non-zero error. (Added in\n" " 7.75.0)\n" "\n" " proxy_ssl_verify_result\n" @@ -6889,58 +6889,58 @@ void hugehelp(void) " 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" , stdout); fputs( +" redirect_url When an HTTP request was made without -L, --loca-\n" " tion to follow redirects (or when --max-redirs is\n" -" met), this variable shows the actual URL a redi-\n" +" met), this variable shows the actual URL a redi-\n" " rect would have gone to.\n" "\n" -" referer The Referer: header, if there was any. (Added in\n" +" referer The Referer: header, if there was any. (Added in\n" " 7.76.0)\n" "\n" -" remote_ip The remote IP address of the most recently done\n" -" connection - can be either IPv4 or IPv6.\n" -"\n" +" remote_ip The remote IP address of the most recently done\n" , stdout); fputs( -" remote_port The remote port number of the most recently done\n" +" connection - can be either IPv4 or IPv6.\n" +"\n" +" remote_port The remote port number of the most recently done\n" " connection.\n" "\n" " response_code The numerical response code that was found in the\n" " last transfer (formerly known as \"http_code\").\n" "\n" -" scheme The URL scheme (sometimes called protocol) that\n" +" scheme The URL scheme (sometimes called protocol) that\n" " was effectively used. (Added in 7.52.0)\n" "\n" , stdout); fputs( -" size_download The total amount of bytes that were downloaded.\n" +" size_download The total amount of bytes that were downloaded.\n" " This is the size of the body/data that was trans-\n" " ferred, excluding headers.\n" "\n" " size_header The total amount of bytes of the downloaded head-\n" " ers.\n" "\n" -" 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" , stdout); fputs( -" size_upload The total amount of bytes that were uploaded.\n" +" size_upload The total amount of bytes that were uploaded.\n" " This is the size of the body/data that was trans-\n" " ferred, excluding headers.\n" "\n" " 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" , stdout); fputs( " the complete upload. Bytes per second.\n" "\n" " 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" " was successful.\n" "\n" @@ -6955,25 +6955,25 @@ void hugehelp(void) " 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" +" The time, in seconds, it took from the start un-\n" +" til the SSL/SSH/etc connect/handshake to the re-\n" , stdout); fputs( " mote host was completed.\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" " 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" , stdout); fputs( -" The time, in seconds, it took from the start un-\n" -" til the file transfer was just about to begin.\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" " tiations that are specific to the particular pro-\n" " tocol(s) involved.\n" @@ -6982,24 +6982,24 @@ void hugehelp(void) , 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" +" and transfer before the final transaction was\n" +" started. time_redirect shows the complete execu-\n" " tion time for multiple redirections.\n" "\n" " time_starttransfer\n" -" The time, in seconds, it took from the start un-\n" -" til the first byte is received. This includes\n" +" The time, in seconds, it took from the start un-\n" +" til the first byte is received. This includes\n" , stdout); fputs( -" time_pretransfer and also the time the server\n" +" time_pretransfer and also the time the server\n" " needed to calculate the result.\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 The URL that was fetched. (Added in 7.75.0)\n" "\n" -" url.scheme The scheme part of the URL that was fetched.\n" +" url.scheme The scheme part of the URL that was fetched.\n" " (Added in 8.1.0)\n" "\n" , stdout); @@ -7007,10 +7007,10 @@ void hugehelp(void) " url.user The user part of the URL that was fetched. (Added\n" " in 8.1.0)\n" "\n" -" url.password The password part of the URL that was fetched.\n" +" url.password The password part of the URL that was fetched.\n" " (Added in 8.1.0)\n" "\n" -" url.options The options part of the URL that was fetched.\n" +" url.options The options part of the URL that was fetched.\n" " (Added in 8.1.0)\n" "\n" " url.host The host part of the URL that was fetched. (Added\n" @@ -7018,34 +7018,34 @@ void hugehelp(void) "\n" , stdout); fputs( -" url.port The port number of the URL that was fetched. If\n" -" no port number was specified, but the URL scheme\n" -" is known, that scheme's default port number is\n" +" url.port The port number of the URL that was fetched. If\n" +" no port number was specified, but the URL scheme\n" +" is known, that scheme's default port number is\n" " shown. (Added in 8.1.0)\n" "\n" " url.path The path part of the URL that was fetched. (Added\n" " in 8.1.0)\n" "\n" -" url.query The query part of the URL that was fetched.\n" +" url.query The query part of the URL that was fetched.\n" , stdout); fputs( " (Added in 8.1.0)\n" "\n" -" url.fragment The fragment part of the URL that was fetched.\n" +" url.fragment The fragment part of the URL that was fetched.\n" " (Added in 8.1.0)\n" "\n" -" url.zoneid The zone id part of the URL that was fetched.\n" +" url.zoneid The zone id part of the URL that was fetched.\n" " (Added in 8.1.0)\n" "\n" -" urle.scheme The scheme part of the effective (last) URL that\n" +" urle.scheme The scheme part of the effective (last) URL that\n" " was fetched. (Added in 8.1.0)\n" "\n" , stdout); fputs( -" urle.user The user part of the effective (last) URL that\n" +" urle.user The user part of the effective (last) URL that\n" " was fetched. (Added in 8.1.0)\n" "\n" -" urle.password The password part of the effective (last) URL\n" +" urle.password The password part of the effective (last) URL\n" " that was fetched. (Added in 8.1.0)\n" "\n" " urle.options The options part of the effective (last) URL that\n" @@ -7053,23 +7053,23 @@ void hugehelp(void) "\n" , stdout); fputs( -" urle.host The host part of the effective (last) URL that\n" +" urle.host The host part of the effective (last) URL that\n" " was fetched. (Added in 8.1.0)\n" "\n" -" urle.port The port number of the effective (last) URL that\n" +" urle.port The port number of the effective (last) URL that\n" " was fetched. If no port number was specified, but\n" -" the URL scheme is known, that scheme's default\n" +" the URL scheme is known, that scheme's default\n" " port number is shown. (Added in 8.1.0)\n" "\n" , stdout); fputs( -" urle.path The path part of the effective (last) URL that\n" +" urle.path The path part of the effective (last) URL that\n" " was fetched. (Added in 8.1.0)\n" "\n" -" urle.query The query part of the effective (last) URL that\n" +" urle.query The query part of the effective (last) URL that\n" " was fetched. (Added in 8.1.0)\n" "\n" -" urle.fragment The fragment part of the effective (last) URL\n" +" urle.fragment The fragment part of the effective (last) URL\n" " that was fetched. (Added in 8.1.0)\n" "\n" , stdout); @@ -7084,7 +7084,7 @@ void hugehelp(void) " url_effective The URL that was fetched last. This is most mean-\n" , stdout); fputs( -" ingful if you have told curl to follow location:\n" +" ingful if you have told curl to follow location:\n" " headers.\n" "\n" " If -w, --write-out is provided several times, the last set value\n" @@ -7095,16 +7095,16 @@ void hugehelp(void) " See also -v, --verbose and -I, --head.\n" "\n" " --xattr\n" -" When saving output to a file, this option tells curl to store\n" +" When saving output to a file, this option tells curl to store\n" , stdout); fputs( -" certain file metadata in extended file attributes. Currently,\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" +" 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" -" Providing --xattr multiple times has no extra effect. Disable\n" +" Providing --xattr multiple times has no extra effect. Disable\n" " it again with --no-xattr.\n" "\n" " Example:\n" @@ -7125,7 +7125,7 @@ void hugehelp(void) "\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://][:port]\n" @@ -7134,95 +7134,95 @@ void hugehelp(void) " Sets the proxy server to use for HTTPS.\n" "\n" " [url-protocol]_PROXY [protocol://][:port]\n" -" Sets the proxy server to use for [url-protocol], where the pro-\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" +" 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://][: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" " set.\n" "\n" " NO_PROXY \n" -" list of host names that should not go through any proxy. If set\n" +" list of host names that should not 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" +" 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" +" rect.example.com accesses the target URL directly, and\n" , stdout); fputs( -" NO_PROXY=direct.example.com curl -x http://proxy.example.com\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" +" dresses, and IPv6 versions should then be given without enclos-\n" " ing brackets.\n" "\n" -" IP addresses can be specified using CIDR notation: an appended\n" +" IP addresses can be specified using CIDR notation: an appended\n" , stdout); fputs( -" slash and number specifies the number of \"network bits\" out of\n" -" the address to use in the comparison (added in 7.86.0). For ex-\n" -" ample \"192.168.0.0/16\" would match all addresses starting with\n" +" slash and number specifies the number of \"network bits\" out of\n" +" the address to use in the comparison (added in 7.86.0). For ex-\n" +" ample \"192.168.0.0/16\" would match all addresses starting with\n" " \"192.168\".\n" "\n" " APPDATA \n" -" On Windows, this variable is used when trying to find the home\n" +" On Windows, this variable is used when trying to find the home\n" " directory. If the primary home variable are all unset.\n" "\n" " COLUMNS \n" , stdout); fputs( " If set, the specified number of characters is used as the termi-\n" -" nal width when the alternative progress-bar is shown. If not\n" +" nal width when the alternative progress-bar is shown. If not\n" " set, curl tries to figure it out using other ways.\n" "\n" " CURL_CA_BUNDLE \n" " If set, it is used as the --cacert value.\n" "\n" " CURL_HOME \n" -" If set, is the first variable curl checks when trying to find\n" -" its home directory. If not set, it continues to check XDG_CON-\n" +" If set, is the first variable curl checks when trying to find\n" +" its home directory. If not set, it continues to check XDG_CON-\n" , stdout); fputs( " FIG_HOME\n" "\n" " CURL_SSL_BACKEND \n" -" If curl was built with support for \"MultiSSL\", meaning that it\n" -" has built-in support for more than one TLS backend, this envi-\n" -" ronment variable can be set to the case insensitive name of the\n" -" particular backend to use when curl is invoked. Setting a name\n" -" that is not a built-in alternative makes curl stay with the de-\n" +" If curl was built with support for \"MultiSSL\", meaning that it\n" +" has built-in support for more than one TLS backend, this envi-\n" +" ronment variable can be set to the case insensitive name of the\n" +" particular backend to use when curl is invoked. Setting a name\n" +" that is not a built-in alternative makes curl stay with the de-\n" " fault.\n" "\n" , stdout); fputs( -" SSL backend names (case-insensitive): bearssl, gnutls, mbedtls,\n" +" SSL backend names (case-insensitive): bearssl, gnutls, mbedtls,\n" " openssl, rustls, schannel, secure-transport, wolfssl\n" "\n" " HOME \n" -" If set, this is used to find the home directory when that is\n" +" If set, this is used to find the home directory when that is\n" " needed. Like when looking for the default .curlrc. CURL_HOME and\n" " XDG_CONFIG_HOME have preference.\n" "\n" " QLOGDIR \n" -" If curl was built with HTTP/3 support, setting this environment\n" +" If curl was built with HTTP/3 support, setting this environment\n" , stdout); fputs( -" variable to a local directory makes curl produce qlogs in that\n" -" directory, using file names named after the destination connec-\n" -" tion id (in hex). Do note that these files can become rather\n" +" variable to a local directory makes curl produce qlogs in that\n" +" directory, using file names named after the destination connec-\n" +" tion id (in hex). Do note that these files can become rather\n" " large. Works with the ngtcp2 and quiche QUIC backends.\n" "\n" -" SHELL Used on VMS when trying to detect if using a DCL or a unix\n" +" SHELL Used on VMS when trying to detect if using a DCL or a unix\n" " shell.\n" "\n" " SSL_CERT_DIR \n" @@ -7235,7 +7235,7 @@ void hugehelp(void) "\n" " SSLKEYLOGFILE \n" " If you set this environment variable to a file name, curl stores\n" -" TLS secrets from its connections in that file when invoked to\n" +" TLS secrets from its connections in that file when invoked to\n" " enable you to analyze the TLS traffic in real time using network\n" " analyzing tools such as Wireshark. This works with the following\n" , stdout); @@ -7243,27 +7243,27 @@ void hugehelp(void) " TLS backends: OpenSSL, libressl, BoringSSL, GnuTLS and wolfSSL.\n" "\n" " USERPROFILE \n" -" On Windows, this variable is used when trying to find the home\n" -" directory. If the other, primary, variable are all unset. If\n" +" On Windows, this variable is used when trying to find the home\n" +" directory. If the other, primary, variable are all unset. If\n" " set, curl uses the path \"$USERPROFILE\\Application Data\".\n" "\n" " XDG_CONFIG_HOME \n" -" If CURL_HOME is not set, this variable is checked when looking\n" +" If CURL_HOME is not set, this variable is checked when looking\n" " for a default .curlrc file.\n" "\n" , stdout); fputs( "PROXY PROTOCOL PREFIXES\n" -" The proxy string may be specified with a protocol:// prefix to specify\n" +" The proxy string may be specified with a protocol:// prefix to specify\n" " alternative proxy protocols.\n" "\n" -" If no protocol is specified in the proxy string or if the string does\n" +" If no protocol is specified in the proxy string or if the string does\n" " not match a supported one, the proxy is treated as an HTTP proxy.\n" "\n" " 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" @@ -7284,13 +7284,13 @@ void hugehelp(void) " 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" , stdout); fputs( -" ror messages that may appear under error conditions. At the time of\n" +" ror messages that may appear under error conditions. At the time of\n" " this writing, the exit codes are:\n" "\n" -" 0 Success. The operation completed successfully according to the\n" +" 0 Success. The operation completed successfully according to the\n" " instructions.\n" "\n" " 1 Unsupported protocol. This build of curl has no support for this\n" @@ -7302,15 +7302,15 @@ void hugehelp(void) "\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" +" 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" -" 5 Could not resolve proxy. The given proxy host could not be re-\n" +" 5 Could not resolve proxy. The given proxy host could not be re-\n" " solved.\n" "\n" -" 6 Could not resolve host. The given remote host could not be re-\n" +" 6 Could not resolve host. The given remote host could not be re-\n" " solved.\n" "\n" , stdout); @@ -7319,21 +7319,21 @@ void hugehelp(void) "\n" " 8 Weird server reply. The server sent data curl could not 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 does not exist on\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 does not exist on\n" " the server.\n" "\n" -" 10 FTP accept failed. While waiting for the server to connect back\n" +" 10 FTP accept failed. While waiting for the server to connect back\n" , stdout); fputs( -" when an active FTP session is used, an error code was sent over\n" +" when an active FTP session is used, an error code was sent over\n" " the control connection or similar.\n" "\n" " 11 FTP weird PASS reply. Curl could not parse the reply sent to the\n" " PASS request.\n" "\n" -" 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 could not parse the reply sent to the\n" @@ -7341,7 +7341,7 @@ void hugehelp(void) "\n" , stdout); fputs( -" 14 FTP weird 227 format. Curl could not parse the 227-line the\n" +" 14 FTP weird 227 format. Curl could not parse the 227-line the\n" " server sent.\n" "\n" " 15 FTP cannot use host. Could not resolve the host IP we got in the\n" @@ -7351,7 +7351,7 @@ void hugehelp(void) " This is somewhat generic and can be one out of several problems,\n" " see the error message for details.\n" "\n" -" 17 FTP could not set binary. Could not change transfer method to\n" +" 17 FTP could not set binary. Could not change transfer method to\n" , stdout); fputs( " binary.\n" @@ -7362,17 +7362,17 @@ void hugehelp(void) " lar) command failed.\n" "\n" " 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" , stdout); fputs( " above. This return code only appears if -f, --fail is used.\n" "\n" -" 23 Write error. Curl could not write data to a local filesystem or\n" +" 23 Write error. Curl could not write data to a local filesystem or\n" " similar.\n" "\n" -" 25 FTP could not STOR file. The server denied the STOR operation,\n" -" used for FTP uploading.\n" +" 25 Failed starting the upload. For FTP, the server typically denied\n" +" the STOR command.\n" "\n" " 26 Read error. Various reading problems.\n" "\n" @@ -7566,5815 +7566,5824 @@ 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 279255 - to 69669 bytes. You can disable the use of compressed help + Thanks to this operation, the size of this data shrank from 279414 + to 69777 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, 0xec, 0xbd, 0x7b, 0x77, 0xdc, 0xc6, 0x95, 0x2f, 0xfa, 0xbf, 0x3f, 0x05, 0xa6, 0x73, - 0x72, 0x48, 0x26, 0x8d, 0xe6, 0x43, 0x4f, 0x33, 0xb4, 0xaf, 0x69, 0x8a, + 0x72, 0x48, 0x26, 0x8d, 0xe6, 0x4b, 0x2f, 0x33, 0xb4, 0xaf, 0x69, 0x8a, 0xb2, 0x39, 0x91, 0x44, 0x46, 0xa4, 0x62, 0x67, 0x6c, 0x2f, 0x2d, 0x74, 0x37, 0x9a, 0x84, 0xd5, 0x0d, 0x74, 0x00, 0x34, 0x29, 0x3a, 0x27, 0xf7, - 0xb3, 0xdf, 0xfd, 0xac, 0x2a, 0xa0, 0x0a, 0x4d, 0x36, 0x45, 0x5a, 0x33, + 0xb3, 0xdf, 0xfd, 0xac, 0x2a, 0xa0, 0x0a, 0x4d, 0x36, 0x45, 0x59, 0x33, 0x67, 0xdd, 0x39, 0x27, 0xb2, 0x44, 0x02, 0x55, 0x85, 0xaa, 0x5d, 0xfb, - 0xbd, 0x7f, 0x3b, 0x8a, 0x6e, 0xfa, 0xbf, 0xf7, 0xf4, 0xbf, 0xf7, 0xf0, - 0x7f, 0xf0, 0xdf, 0x2f, 0xa2, 0xe8, 0xa4, 0x2c, 0x7e, 0x4d, 0x47, 0x75, - 0xf8, 0xd9, 0xf7, 0xef, 0xff, 0x4f, 0xc4, 0xff, 0x0f, 0xde, 0xf9, 0x19, - 0xfe, 0xfb, 0xc5, 0xd2, 0xb1, 0x37, 0x23, 0xfb, 0xc2, 0xff, 0x79, 0xbf, - 0x11, 0xdd, 0xf4, 0xc2, 0xff, 0x89, 0xd6, 0xe9, 0x85, 0xf7, 0x32, 0xc3, - 0x1e, 0xfe, 0xfd, 0xfd, 0xfb, 0xe5, 0x93, 0xfc, 0x8c, 0xab, 0xc2, 0x3f, - 0x36, 0xf1, 0xbd, 0x9f, 0xdf, 0xe3, 0x5f, 0xe1, 0x27, 0x5f, 0x7c, 0xf1, - 0x66, 0xff, 0xf5, 0xa1, 0xbe, 0x3a, 0x5a, 0x94, 0xd3, 0x28, 0x8e, 0xea, - 0x32, 0xc9, 0xab, 0x49, 0x5a, 0x46, 0x49, 0xf4, 0xee, 0xed, 0xab, 0x2f, - 0xbe, 0x38, 0xfd, 0xc7, 0x9b, 0xe3, 0x93, 0xd3, 0xa3, 0xd3, 0xc6, 0x63, + 0xbd, 0x7f, 0x3b, 0x8a, 0x6e, 0xfb, 0xbf, 0x77, 0xf4, 0xbf, 0x77, 0xf0, + 0x7f, 0xf0, 0xdf, 0x2f, 0xa2, 0xe8, 0xb4, 0x2c, 0x7e, 0x4d, 0x47, 0x75, + 0xf8, 0xd9, 0x77, 0xef, 0xfe, 0x4f, 0xc4, 0xff, 0x0f, 0xde, 0xf9, 0x19, + 0xfe, 0xfb, 0xc5, 0xd2, 0xb1, 0x37, 0x23, 0xfb, 0xc2, 0xff, 0x79, 0xb7, + 0x11, 0xdd, 0xf6, 0xc2, 0xff, 0x89, 0xd6, 0xe9, 0x85, 0x77, 0x32, 0xc3, + 0x3e, 0xfe, 0xfd, 0xdd, 0xbb, 0xe5, 0x93, 0xfc, 0x8c, 0xab, 0xc2, 0x3f, + 0x36, 0xf1, 0xbd, 0x9f, 0xdf, 0xe1, 0x5f, 0xe1, 0x27, 0x5f, 0x7c, 0xf1, + 0xfa, 0xe0, 0xd5, 0x91, 0xbe, 0x3a, 0x5a, 0x94, 0xd3, 0x28, 0x8e, 0xea, + 0x32, 0xc9, 0xab, 0x49, 0x5a, 0x46, 0x49, 0xf4, 0xf6, 0xcd, 0xcb, 0x2f, + 0xbe, 0x38, 0xfb, 0xc7, 0xeb, 0x93, 0xd3, 0xb3, 0xe3, 0xb3, 0xc6, 0x63, 0x3f, 0x15, 0xf3, 0x3a, 0x2b, 0xf2, 0x0a, 0x96, 0x0f, 0x0f, 0x55, 0xbf, - 0x7c, 0xf1, 0xc5, 0x8b, 0xc3, 0xd3, 0x83, 0xb7, 0x47, 0x27, 0x67, 0x47, - 0xc7, 0x6f, 0x1a, 0x4f, 0x66, 0x15, 0x0c, 0x54, 0x17, 0xc5, 0x34, 0x9a, - 0x14, 0xa5, 0x19, 0xbc, 0xcc, 0xf2, 0xf3, 0x68, 0x9c, 0xd4, 0x49, 0x34, - 0x29, 0x8b, 0x59, 0x84, 0xbf, 0x29, 0xe0, 0xb9, 0x2a, 0x2d, 0x2f, 0x61, - 0xe6, 0x45, 0x85, 0xbf, 0xc6, 0x81, 0x07, 0xd1, 0x51, 0xad, 0xc3, 0x55, - 0x8b, 0xf9, 0xbc, 0x28, 0xeb, 0x2a, 0xaa, 0x2f, 0xd2, 0x2a, 0x8d, 0xe6, - 0x65, 0x51, 0x17, 0xa3, 0x62, 0x5a, 0xed, 0x46, 0x2f, 0x8e, 0x0e, 0xce, - 0xfa, 0xd1, 0xcb, 0xa3, 0x57, 0x87, 0xf0, 0xe7, 0xd9, 0x09, 0xfd, 0x71, - 0xda, 0x8f, 0xbe, 0x3b, 0x3e, 0xf9, 0xfe, 0xf0, 0xad, 0xfe, 0x17, 0x7e, - 0xf0, 0xfd, 0x19, 0xfc, 0x52, 0x87, 0xc3, 0x7f, 0xc0, 0xcf, 0xa2, 0xa3, - 0xd7, 0xfb, 0xf0, 0x06, 0xfe, 0x09, 0xff, 0x7a, 0xf5, 0x02, 0xff, 0x81, - 0x7f, 0xc2, 0x3f, 0x5e, 0xff, 0xed, 0x0c, 0x86, 0x3d, 0x39, 0x3e, 0x79, - 0xc4, 0x7f, 0xc2, 0x8f, 0xde, 0x9e, 0xbd, 0x3e, 0xe1, 0x3f, 0xe9, 0x1f, - 0xa7, 0x76, 0xb8, 0xd3, 0x03, 0xf8, 0xc5, 0x29, 0xcd, 0x7e, 0xfa, 0xfa, - 0x5b, 0xfa, 0xe3, 0x14, 0xff, 0xe4, 0x1f, 0xd0, 0x54, 0x67, 0x87, 0xaf, - 0xde, 0x1c, 0xc2, 0x88, 0x67, 0xf4, 0xd4, 0x0f, 0xa7, 0x51, 0x92, 0x8f, - 0xe1, 0x3f, 0xa7, 0x83, 0x2f, 0xda, 0x3b, 0x36, 0x2f, 0xae, 0xd2, 0x32, - 0x1d, 0x47, 0xc3, 0xeb, 0x28, 0x9a, 0x66, 0x43, 0xfa, 0x31, 0xed, 0x5f, - 0x94, 0x4c, 0xe1, 0x6f, 0xba, 0x8b, 0x71, 0x99, 0x4e, 0x93, 0x1a, 0x9e, - 0x8b, 0x26, 0x69, 0x52, 0x2f, 0xca, 0x14, 0xf6, 0x2b, 0x3a, 0x4d, 0x53, - 0x1d, 0x4e, 0x5e, 0x5d, 0x7f, 0xb4, 0x41, 0x2f, 0x8f, 0xd3, 0x3a, 0xc9, - 0xa6, 0x15, 0x4c, 0x87, 0x07, 0x2b, 0xcf, 0x9c, 0x5d, 0xa4, 0x11, 0x6e, - 0x35, 0xec, 0xef, 0x75, 0x5e, 0x27, 0x1f, 0x69, 0x7a, 0xd9, 0xda, 0x78, - 0x9c, 0xce, 0xd3, 0x7c, 0x9c, 0xe6, 0xf5, 0x20, 0xfa, 0x47, 0xb1, 0x88, - 0x26, 0x19, 0x2c, 0x38, 0x91, 0x71, 0x60, 0xda, 0x71, 0x5a, 0x8d, 0xca, - 0x8c, 0x28, 0x41, 0x87, 0xcb, 0xf2, 0xe8, 0xed, 0xcb, 0x83, 0xe8, 0xd1, - 0x97, 0xcf, 0x9f, 0xda, 0xcf, 0x3a, 0x9a, 0x44, 0xd7, 0xf0, 0x3a, 0x0c, - 0x7b, 0x99, 0x8d, 0x53, 0x26, 0xac, 0xe8, 0x2a, 0xab, 0x2f, 0x8a, 0x45, - 0x0d, 0xff, 0x9a, 0xa6, 0xc9, 0x18, 0x0f, 0x5c, 0xa7, 0xdd, 0xdd, 0xdc, - 0x8c, 0xaa, 0xd1, 0x45, 0x3a, 0x4b, 0xfb, 0xbc, 0x23, 0xe7, 0x8b, 0xb4, - 0xaa, 0xd2, 0x4a, 0x87, 0xbb, 0xba, 0x48, 0x6a, 0xf3, 0x30, 0x8d, 0x7c, - 0x95, 0xe0, 0x12, 0x8f, 0x6a, 0x24, 0x8d, 0x1c, 0x96, 0x35, 0x49, 0x16, - 0x53, 0x24, 0x94, 0x82, 0x8f, 0x39, 0x8a, 0x86, 0x30, 0x51, 0x94, 0x54, - 0xd5, 0x62, 0x96, 0x56, 0x51, 0x54, 0xc0, 0x63, 0xa5, 0x19, 0x6e, 0x98, - 0x54, 0xb8, 0x85, 0x45, 0x0e, 0xff, 0x9b, 0xd4, 0x69, 0x1e, 0x2f, 0xe8, - 0xdf, 0x17, 0x45, 0x05, 0xef, 0xe4, 0xc9, 0x0c, 0x49, 0x2d, 0x9d, 0x64, - 0x1f, 0x71, 0x77, 0x5f, 0xc2, 0x36, 0xa6, 0x1f, 0x93, 0xd9, 0x7c, 0x0a, - 0x6b, 0xc3, 0x3d, 0xa5, 0xa7, 0xf0, 0x21, 0x33, 0x5c, 0x55, 0x27, 0x65, - 0x8d, 0x9f, 0x83, 0x1f, 0x18, 0xf5, 0x26, 0xf5, 0x7c, 0xd0, 0xe3, 0xcf, - 0xd0, 0xf9, 0x75, 0xc5, 0x48, 0xa6, 0x76, 0x93, 0x70, 0x83, 0x47, 0x49, - 0x1e, 0x55, 0xf3, 0x74, 0x94, 0x4d, 0xae, 0x81, 0x38, 0xe0, 0x7f, 0xb3, - 0x62, 0x01, 0xcf, 0x15, 0x13, 0x3a, 0xa2, 0x8a, 0x17, 0x59, 0xe3, 0x89, - 0x8d, 0x8a, 0xd9, 0x0c, 0xc9, 0x07, 0xce, 0x38, 0x4f, 0x07, 0x74, 0x8c, - 0x40, 0x2b, 0x49, 0x69, 0xce, 0x7e, 0x92, 0xd6, 0xb0, 0x85, 0x63, 0x3a, - 0x11, 0xd8, 0x63, 0xb8, 0x5a, 0xff, 0x5c, 0xc0, 0x41, 0x66, 0xc9, 0x34, - 0x82, 0x17, 0x73, 0xb8, 0x65, 0xf0, 0x0b, 0x1c, 0x8a, 0xe7, 0xcb, 0xe0, - 0xd1, 0xa2, 0x1c, 0xe3, 0xe5, 0xcb, 0xa7, 0xb0, 0xdb, 0xb4, 0x48, 0xd8, - 0x08, 0x1d, 0x2e, 0xfe, 0xaf, 0x7e, 0x14, 0xc7, 0xf3, 0xa4, 0x04, 0x02, - 0x4c, 0xa7, 0x03, 0x6f, 0xb5, 0xba, 0x1e, 0x5c, 0x4e, 0xa4, 0xcc, 0x01, - 0x7f, 0x40, 0xeb, 0x9e, 0xc1, 0xee, 0x8d, 0xf1, 0x9f, 0x0e, 0x99, 0xe0, - 0xf7, 0xf1, 0x8c, 0x05, 0x2f, 0xc4, 0x1d, 0xa2, 0x75, 0x25, 0x92, 0xba, - 0x4e, 0x67, 0x73, 0x3e, 0xd1, 0x32, 0x85, 0x65, 0xc1, 0xc3, 0xf0, 0x0d, - 0x23, 0x9e, 0xe6, 0x8a, 0x0e, 0xbd, 0xc0, 0x3d, 0x8f, 0x66, 0x70, 0xf0, - 0x19, 0x9c, 0x8e, 0xbd, 0x24, 0x15, 0xdc, 0xf1, 0xaa, 0xd0, 0xe1, 0x6a, - 0xa4, 0x9d, 0xe8, 0x3c, 0xad, 0x6b, 0x7e, 0x1c, 0x57, 0x31, 0x01, 0x62, - 0xae, 0x98, 0x11, 0xd1, 0x86, 0xe0, 0x91, 0x0b, 0x27, 0x1a, 0x17, 0x51, - 0x5e, 0xd4, 0xb8, 0x11, 0x76, 0x64, 0x98, 0x3a, 0xd6, 0xe1, 0x70, 0x0d, - 0xfc, 0x9d, 0x55, 0x5a, 0x2f, 0xe6, 0xd1, 0x05, 0xfc, 0xb5, 0xba, 0x48, - 0x3e, 0x20, 0xad, 0x9c, 0x5d, 0xc0, 0x55, 0xca, 0x66, 0x48, 0xf5, 0x30, - 0x3c, 0x6c, 0x54, 0x3a, 0x1e, 0x44, 0x07, 0x66, 0xdd, 0x91, 0x7c, 0x09, - 0x6e, 0xa3, 0x0e, 0x57, 0xe4, 0x53, 0x38, 0xc5, 0x21, 0xfc, 0x70, 0x5c, - 0xc0, 0x3e, 0x12, 0x85, 0xd1, 0x06, 0xda, 0x43, 0xc2, 0x1f, 0x01, 0xa3, - 0x84, 0xd5, 0x4f, 0x9b, 0x5b, 0x06, 0x7b, 0x7a, 0x59, 0x8c, 0x12, 0xf7, - 0x32, 0xe2, 0xaf, 0x60, 0x74, 0xfc, 0x02, 0x18, 0x73, 0x9e, 0x96, 0xf0, - 0xf2, 0x0c, 0xd9, 0x4a, 0x5a, 0x5f, 0xa5, 0xb0, 0x67, 0x55, 0x8a, 0x07, - 0x5a, 0xa7, 0xbc, 0xc9, 0xe5, 0x22, 0xaf, 0xec, 0xbe, 0x9f, 0xe8, 0x65, - 0xcd, 0xa3, 0xa3, 0x93, 0xcb, 0xa7, 0xd1, 0x6f, 0xb8, 0xa0, 0x6c, 0xac, - 0x54, 0xa3, 0x37, 0x18, 0x27, 0x89, 0x22, 0xe0, 0x03, 0xc9, 0x1c, 0x89, - 0x0d, 0xe6, 0x18, 0x01, 0x95, 0x25, 0xe7, 0xb0, 0xf8, 0x2a, 0x3b, 0xcf, - 0x07, 0x3a, 0xdc, 0xab, 0xec, 0x03, 0xae, 0xf0, 0x0b, 0x2b, 0xa7, 0x7a, - 0x17, 0x75, 0x3d, 0x87, 0xab, 0xfe, 0xd3, 0x24, 0x7d, 0xbe, 0xb5, 0xbb, - 0xfb, 0xe8, 0x8f, 0x3b, 0x4f, 0xd2, 0xfa, 0x62, 0xeb, 0x97, 0xcd, 0x9e, - 0x79, 0xe8, 0x10, 0x8e, 0xe0, 0xba, 0xbe, 0xa0, 0x93, 0x12, 0xe6, 0x31, - 0x0e, 0x51, 0x0b, 0x9f, 0x2a, 0xec, 0x36, 0x7e, 0x69, 0xd2, 0xa6, 0x45, - 0x73, 0x58, 0xb4, 0xeb, 0xb0, 0x7d, 0x19, 0x1e, 0x59, 0x79, 0x0e, 0x77, - 0x31, 0xaf, 0xfb, 0xcd, 0xab, 0x49, 0xd2, 0x0a, 0xbf, 0x0d, 0xdf, 0xaf, - 0x4b, 0xe0, 0xaa, 0xf0, 0x33, 0x18, 0x13, 0x4e, 0x60, 0x31, 0xba, 0x80, - 0xdd, 0xf9, 0xee, 0xd5, 0xf1, 0xb7, 0xdf, 0x1e, 0xbd, 0xf9, 0xae, 0xeb, - 0xd6, 0x1a, 0x2a, 0xa1, 0x63, 0x83, 0xc9, 0x60, 0x87, 0x61, 0x0c, 0xb8, - 0xc1, 0xf4, 0x03, 0x60, 0xe8, 0x57, 0x65, 0x46, 0xb4, 0x37, 0xcd, 0x2a, - 0xf8, 0x05, 0x6d, 0x62, 0x66, 0x4e, 0x6c, 0x58, 0x26, 0xa3, 0x94, 0xde, - 0x03, 0xea, 0x3d, 0x87, 0xbf, 0xf1, 0xaf, 0xe9, 0xe7, 0x1f, 0xd2, 0x1a, - 0xa8, 0xea, 0x07, 0xf8, 0x74, 0x14, 0x02, 0x35, 0x52, 0x57, 0xef, 0x7c, - 0x5a, 0x0c, 0x87, 0x30, 0x5a, 0x2f, 0x70, 0x70, 0x34, 0x03, 0x1f, 0x52, - 0x7d, 0x51, 0xa6, 0x69, 0x34, 0xce, 0x26, 0x70, 0x1f, 0xe0, 0xa3, 0x99, - 0x61, 0xc1, 0xef, 0x3f, 0xa4, 0x34, 0xce, 0x6e, 0xe0, 0x58, 0xaa, 0xac, - 0x4e, 0x07, 0xff, 0x82, 0x43, 0xef, 0xd7, 0x57, 0x45, 0x9f, 0x06, 0xf8, - 0xf7, 0x00, 0x76, 0xd6, 0x9e, 0x0e, 0x2c, 0xf2, 0x5a, 0xbe, 0x1e, 0xee, - 0x93, 0x30, 0x18, 0x5a, 0xfd, 0x04, 0xc4, 0xd4, 0x1c, 0xae, 0x02, 0x6c, - 0x69, 0x99, 0x8d, 0xf0, 0x2e, 0x65, 0x29, 0x7d, 0x3b, 0x0b, 0xf6, 0x9f, - 0x7e, 0xc1, 0x0d, 0xcd, 0xf2, 0xc6, 0xb4, 0x13, 0x9a, 0x15, 0xb9, 0xa5, - 0xf0, 0x57, 0x9c, 0x6c, 0x13, 0xaf, 0xe6, 0x4f, 0xdb, 0xf1, 0xf6, 0xd6, - 0xd6, 0x2f, 0x83, 0xfa, 0x63, 0xdd, 0xbb, 0xe5, 0x1b, 0x5b, 0x5b, 0xce, - 0x3b, 0xf8, 0xf0, 0x3a, 0x6d, 0x83, 0x0a, 0x9a, 0xdf, 0xd2, 0xb2, 0xa8, - 0x36, 0x6e, 0x39, 0x56, 0x12, 0xff, 0xd6, 0x9a, 0xfb, 0x4d, 0x5a, 0x91, - 0xd0, 0xb5, 0x5f, 0x8c, 0x8c, 0x97, 0x88, 0x4f, 0x74, 0x94, 0x74, 0xdc, - 0x27, 0x91, 0xa3, 0xfb, 0x83, 0xf7, 0xbc, 0x4a, 0x81, 0x9a, 0x81, 0xfb, - 0xc2, 0x96, 0x02, 0xa1, 0xa6, 0x1f, 0x8d, 0x5e, 0x03, 0x3c, 0x2d, 0x4d, - 0x46, 0x17, 0x2c, 0x95, 0x42, 0x47, 0xe1, 0x2e, 0x29, 0x29, 0x47, 0x17, - 0xd9, 0x25, 0xec, 0xc9, 0x97, 0x5f, 0x3e, 0x8d, 0xe1, 0x8f, 0x2f, 0x7f, - 0xd9, 0xbc, 0x2c, 0xa6, 0xb0, 0x45, 0x8f, 0x7f, 0xd9, 0x44, 0x52, 0xfb, - 0x57, 0xd2, 0x1f, 0xf6, 0x47, 0xff, 0x1e, 0x5c, 0xd4, 0xb3, 0x69, 0xaf, - 0x5b, 0xb6, 0x80, 0x94, 0x4a, 0xe7, 0x70, 0x51, 0x40, 0xba, 0x00, 0x97, - 0x23, 0xcd, 0x0c, 0xee, 0x94, 0xd0, 0x1c, 0x2c, 0x08, 0x0f, 0x14, 0xd7, - 0x0b, 0xdc, 0xe8, 0x0d, 0x5e, 0x72, 0x38, 0xca, 0x61, 0x5a, 0x3a, 0x27, - 0x3f, 0x05, 0x0e, 0x7a, 0xf3, 0x6a, 0xed, 0xf1, 0xed, 0x6e, 0x07, 0x4e, - 0xb0, 0xeb, 0x0d, 0xd8, 0xf2, 0xdd, 0x9d, 0xd6, 0xe3, 0x3f, 0x20, 0x93, - 0xb7, 0x04, 0x04, 0x4b, 0xf8, 0xd7, 0xbf, 0x9d, 0x13, 0x20, 0x19, 0x80, - 0x1c, 0xf0, 0x03, 0xf2, 0x48, 0x64, 0xe5, 0x2d, 0x3e, 0x00, 0xfc, 0x03, - 0x24, 0x88, 0x51, 0xd7, 0x44, 0x1f, 0x19, 0x26, 0x43, 0xe0, 0xb8, 0x17, - 0xc9, 0x65, 0x8a, 0x5f, 0x3d, 0x5f, 0x90, 0x06, 0x11, 0x4d, 0x16, 0x70, - 0xc1, 0x94, 0xc3, 0x65, 0x28, 0x5b, 0x16, 0x43, 0xb8, 0xd2, 0xff, 0x5c, - 0x14, 0x35, 0x6f, 0x4f, 0x72, 0x59, 0x00, 0x2b, 0x84, 0x47, 0x8d, 0xd0, - 0xbf, 0x48, 0xe1, 0x15, 0x9a, 0x37, 0xc3, 0x2d, 0x85, 0x7b, 0x66, 0x54, - 0x80, 0xac, 0x16, 0x59, 0x90, 0x4c, 0x2b, 0x50, 0x48, 0xce, 0x0b, 0x24, - 0x18, 0x52, 0xe6, 0xe8, 0xc4, 0x41, 0x00, 0x5c, 0x00, 0x17, 0x1e, 0xd5, - 0x8e, 0x4a, 0x42, 0x9c, 0x07, 0x3e, 0x84, 0xce, 0x2b, 0x99, 0xf6, 0xf9, - 0xaa, 0x4e, 0xac, 0xf2, 0x11, 0xad, 0xfd, 0xef, 0xb5, 0x7e, 0xb4, 0xf6, - 0xff, 0xac, 0x11, 0xa3, 0x5a, 0xfb, 0xd3, 0x9a, 0xbd, 0xff, 0xa7, 0x30, - 0x29, 0x52, 0xd3, 0x64, 0x12, 0x29, 0x77, 0xe0, 0x75, 0xc4, 0xe7, 0x28, - 0xc2, 0xf1, 0x67, 0xf0, 0x3b, 0x78, 0xfe, 0xef, 0xfb, 0x6f, 0x8f, 0xf6, - 0xbf, 0x7d, 0x75, 0xd8, 0xd4, 0xec, 0xad, 0x9a, 0xdd, 0xd4, 0x31, 0xa2, - 0xcb, 0xa4, 0xcc, 0x60, 0xb7, 0x60, 0xf1, 0xeb, 0xc9, 0x18, 0x19, 0x31, - 0x6c, 0xcc, 0xf3, 0xc1, 0xa3, 0xc1, 0xd6, 0xc6, 0x00, 0x74, 0xce, 0xda, - 0xfe, 0xde, 0xa8, 0x69, 0x34, 0x69, 0xac, 0x3f, 0x27, 0xa6, 0xf3, 0x15, - 0x08, 0xcf, 0x1a, 0x39, 0x10, 0x7c, 0x4a, 0xeb, 0x57, 0xdf, 0xe0, 0xd1, - 0xc3, 0x45, 0x85, 0x2d, 0x49, 0xe1, 0x42, 0xc2, 0x3f, 0x7a, 0x0d, 0xd9, - 0x08, 0x12, 0xac, 0xaa, 0xe1, 0xfa, 0x46, 0xd9, 0x04, 0x85, 0xad, 0x18, - 0x0c, 0x2c, 0x07, 0xc7, 0x49, 0x75, 0x11, 0xad, 0xc7, 0x1b, 0x1b, 0x76, - 0x1b, 0xfe, 0xae, 0x63, 0x47, 0x32, 0x65, 0x45, 0xa3, 0x81, 0xac, 0xfa, - 0x38, 0x87, 0x8f, 0xe2, 0xf5, 0xb3, 0xa2, 0x82, 0x3c, 0x1a, 0x16, 0x80, - 0x07, 0x20, 0x04, 0xd6, 0xfb, 0xd7, 0xbf, 0x70, 0x49, 0xff, 0xfe, 0x77, - 0x4f, 0x87, 0x5b, 0x57, 0x75, 0x15, 0xe9, 0x83, 0x09, 0x61, 0x03, 0x57, - 0x82, 0xff, 0x94, 0x51, 0x48, 0x55, 0x24, 0xed, 0x99, 0xb4, 0xc5, 0xb1, - 0xec, 0x40, 0xd4, 0x8b, 0x63, 0x9e, 0x33, 0xee, 0x0d, 0xac, 0xd6, 0x0d, - 0x0f, 0xe2, 0x2d, 0xab, 0x22, 0x91, 0x66, 0xb2, 0xc6, 0x82, 0x87, 0x34, - 0x3b, 0xd3, 0xc3, 0x51, 0x7b, 0xb0, 0x56, 0x60, 0xa2, 0xc4, 0x56, 0x48, - 0xfc, 0x0f, 0xa7, 0x49, 0xfe, 0x01, 0xa6, 0xb7, 0x5a, 0x0d, 0xef, 0x21, - 0x50, 0x6a, 0xca, 0x52, 0x30, 0xfd, 0x88, 0xcc, 0x3f, 0x41, 0x71, 0xa6, - 0x63, 0x81, 0x96, 0x78, 0x44, 0xc3, 0x44, 0xf8, 0x7d, 0xb0, 0xb9, 0x70, - 0xbf, 0x87, 0xa0, 0x2f, 0xcc, 0x58, 0x47, 0x74, 0xa9, 0xb9, 0x26, 0xea, - 0x05, 0x86, 0xcd, 0xdf, 0x82, 0xff, 0xc8, 0x44, 0x94, 0xc0, 0xe4, 0x20, - 0x8a, 0xaa, 0x29, 0xec, 0xb8, 0x90, 0x65, 0xef, 0x67, 0x18, 0xad, 0xa9, - 0xc7, 0xc2, 0x3e, 0x27, 0xa3, 0x11, 0xaa, 0x91, 0x48, 0x3f, 0xfc, 0xf5, - 0x51, 0x9a, 0x5f, 0x66, 0x65, 0x91, 0xa3, 0xd4, 0x75, 0x88, 0x69, 0x88, - 0xfa, 0x57, 0x09, 0x6b, 0x05, 0x4d, 0xa9, 0x60, 0xc5, 0x19, 0x56, 0x32, - 0x1b, 0xb8, 0xc3, 0x31, 0xef, 0x4a, 0xa7, 0x68, 0x73, 0x23, 0xb7, 0xcc, - 0xe8, 0xde, 0x94, 0x70, 0xf9, 0xb3, 0x32, 0xa5, 0x8f, 0x0f, 0x8d, 0x8d, - 0x8f, 0x22, 0xd1, 0xa4, 0x48, 0x6d, 0xee, 0xbd, 0xc7, 0xd1, 0xac, 0x2d, - 0x22, 0xd6, 0x02, 0xbc, 0x36, 0x5d, 0xa0, 0x8a, 0x02, 0xbf, 0x06, 0x6e, - 0x9d, 0x19, 0x7d, 0x02, 0xae, 0x2d, 0xdc, 0xc6, 0xf1, 0x35, 0xf2, 0x7b, - 0xb8, 0xc9, 0xd1, 0xc9, 0x34, 0xb1, 0xf2, 0xda, 0xa1, 0xe1, 0xe8, 0x8f, - 0x74, 0x02, 0xf2, 0x1d, 0x55, 0xf3, 0x18, 0x51, 0x64, 0x03, 0x45, 0xac, - 0xe1, 0x23, 0x6b, 0x24, 0x1a, 0xe0, 0x80, 0xea, 0x4a, 0xb6, 0xd4, 0x0c, - 0x07, 0x86, 0x31, 0xea, 0x27, 0x13, 0x56, 0x68, 0x82, 0x1f, 0xa5, 0x5a, - 0x8e, 0x2c, 0x8a, 0xd6, 0x74, 0x56, 0x34, 0xbe, 0xc7, 0x28, 0x3c, 0x8d, - 0x0f, 0x9b, 0x38, 0xdf, 0x04, 0x6f, 0xf5, 0x49, 0x28, 0x39, 0xeb, 0xff, - 0x63, 0xe3, 0x7e, 0x22, 0x9d, 0xc9, 0x6f, 0xcd, 0x70, 0xf6, 0xb1, 0x6f, - 0xe4, 0x31, 0x7b, 0xea, 0x87, 0xc2, 0xc3, 0xa3, 0xe8, 0x3b, 0xd8, 0x6f, - 0x56, 0x11, 0x4f, 0x0f, 0xdf, 0x76, 0x7c, 0x43, 0x0e, 0x47, 0x23, 0x5a, - 0x24, 0x98, 0x51, 0x60, 0x4c, 0xe2, 0xf2, 0xf0, 0x79, 0x63, 0x1f, 0x98, - 0x75, 0x3a, 0x22, 0xc6, 0x59, 0xec, 0xda, 0x1f, 0xf1, 0xe9, 0x35, 0xe7, - 0x57, 0x72, 0xc5, 0x90, 0x85, 0x7d, 0xc5, 0x92, 0xa5, 0x6a, 0x8b, 0xce, - 0x79, 0xb6, 0xf9, 0xaf, 0x7f, 0xe1, 0x7b, 0xff, 0xfe, 0xf7, 0x26, 0x5c, - 0xf7, 0x8b, 0x62, 0xdc, 0x12, 0x2f, 0x3c, 0x06, 0x92, 0xa0, 0xa1, 0x4f, - 0xd1, 0x0f, 0x0d, 0x53, 0x4c, 0x88, 0x9e, 0xc8, 0x22, 0x9b, 0x2c, 0x72, - 0x31, 0x40, 0xc4, 0xaa, 0x70, 0x98, 0xd5, 0x0c, 0x4c, 0x80, 0xa8, 0x45, - 0x02, 0x7a, 0xc5, 0x67, 0x45, 0x49, 0xff, 0xba, 0x4c, 0xf3, 0x0c, 0xb7, - 0x05, 0xf6, 0x02, 0x8e, 0x82, 0xcc, 0x57, 0xa4, 0x4c, 0xb8, 0x7b, 0x33, - 0xd5, 0x54, 0x5c, 0x45, 0x1e, 0xec, 0x99, 0x6c, 0x4a, 0xcc, 0xfc, 0x02, - 0x54, 0x33, 0x10, 0x0d, 0xa0, 0x29, 0x8a, 0x76, 0x07, 0x6f, 0xf4, 0xf1, - 0x74, 0xf1, 0x75, 0xe0, 0x51, 0x28, 0xc6, 0xd4, 0x4a, 0x54, 0xd6, 0x97, - 0xe0, 0xff, 0x74, 0xb8, 0xff, 0x3c, 0x3d, 0x7e, 0x13, 0x31, 0x17, 0x1b, - 0xeb, 0x65, 0xa7, 0x91, 0x7e, 0xad, 0x8a, 0xbc, 0x4f, 0x92, 0x0f, 0xa4, - 0x6a, 0x31, 0xe6, 0xbb, 0xe5, 0x3e, 0x80, 0x7b, 0x01, 0x94, 0x81, 0x26, - 0xf3, 0xd3, 0xc7, 0x86, 0x6a, 0xf9, 0x59, 0xe5, 0x10, 0xc3, 0xa7, 0x8f, - 0xd9, 0x3e, 0x4c, 0xe6, 0x73, 0x10, 0xae, 0xba, 0x4d, 0x64, 0x8d, 0x83, - 0x21, 0x6a, 0x2f, 0x0c, 0x6d, 0x77, 0x95, 0xe1, 0x94, 0x11, 0x88, 0x14, - 0x87, 0x99, 0xcd, 0x70, 0xe9, 0x53, 0xb4, 0x91, 0xd4, 0x44, 0x19, 0x47, - 0x42, 0x32, 0x65, 0x76, 0x7e, 0x01, 0x84, 0x81, 0xb4, 0xde, 0xe2, 0x95, - 0x03, 0xcb, 0xf3, 0x5d, 0x13, 0x8d, 0xc8, 0xf9, 0xa2, 0x98, 0xd2, 0xb9, - 0xe6, 0x28, 0xd9, 0x87, 0xd7, 0x24, 0xc6, 0xf1, 0xcc, 0x54, 0x6f, 0xe3, - 0x4f, 0x18, 0xb3, 0x1a, 0x61, 0x24, 0xc4, 0x28, 0xc1, 0x3b, 0x42, 0x97, - 0x72, 0xd0, 0x22, 0xf4, 0x5d, 0x52, 0x91, 0xda, 0xac, 0x3b, 0x21, 0x5b, - 0x52, 0x6f, 0xfb, 0xff, 0xfa, 0xfe, 0xf8, 0xf5, 0xe1, 0xe6, 0xa0, 0x4a, - 0x47, 0x25, 0x3c, 0x4b, 0x44, 0xaf, 0x1b, 0xd0, 0xbc, 0x53, 0xfa, 0x02, - 0x8a, 0xbd, 0x8f, 0x3d, 0xb8, 0x43, 0xaf, 0x89, 0x7c, 0xaa, 0x45, 0x99, - 0x2a, 0x6d, 0x39, 0x33, 0xe1, 0xe5, 0xc0, 0x23, 0x9f, 0xb1, 0x49, 0x8d, - 0x36, 0x97, 0x19, 0x0e, 0x8d, 0xaf, 0x58, 0x3f, 0xa6, 0xc2, 0x87, 0xe1, - 0xe0, 0x4f, 0x8e, 0x4f, 0xcf, 0xc8, 0xd9, 0xe6, 0xaa, 0x6b, 0xee, 0xcd, - 0xc7, 0x75, 0xba, 0xbf, 0x91, 0xbb, 0x64, 0x1e, 0x80, 0x55, 0x7d, 0xf3, - 0xaf, 0x7f, 0xe1, 0x53, 0x70, 0x73, 0xe4, 0x7b, 0x02, 0xcf, 0x93, 0x3f, - 0x0f, 0x44, 0x0b, 0x3c, 0xbe, 0x8b, 0x0b, 0xdc, 0x05, 0x6a, 0x71, 0x44, - 0x68, 0x14, 0x85, 0x6e, 0xa5, 0x59, 0xd2, 0x81, 0xab, 0xad, 0x59, 0xf9, - 0x60, 0x04, 0x48, 0xc5, 0xb6, 0x3e, 0x6a, 0x07, 0x46, 0xff, 0x50, 0x15, - 0x04, 0xf8, 0xd0, 0xf1, 0xbb, 0xb3, 0x93, 0x77, 0x67, 0x8e, 0xc7, 0x09, - 0x8f, 0xb5, 0x86, 0x63, 0x67, 0x2d, 0xeb, 0x2a, 0xab, 0xd4, 0x9b, 0x84, - 0x06, 0x58, 0xca, 0xfc, 0xb9, 0x4c, 0x47, 0x29, 0x68, 0xd3, 0x63, 0x76, - 0x45, 0xc2, 0xf9, 0x80, 0x86, 0x01, 0x17, 0x88, 0xee, 0x62, 0x4b, 0xf7, - 0x40, 0x11, 0x5c, 0x97, 0x8b, 0x11, 0x69, 0xfe, 0x78, 0x92, 0xf8, 0x6f, - 0xb8, 0xa5, 0x51, 0x45, 0xca, 0x23, 0x1e, 0x12, 0x0d, 0x42, 0xc7, 0x0c, - 0xb6, 0x17, 0x98, 0xe2, 0x53, 0xa2, 0x86, 0xbe, 0xe8, 0x14, 0x8e, 0x7c, - 0x8d, 0x0b, 0xd4, 0xc4, 0xe4, 0xa6, 0xa2, 0x26, 0x74, 0x8c, 0xff, 0x2e, - 0xd3, 0x19, 0x5c, 0xc8, 0x98, 0xa4, 0x88, 0x78, 0x50, 0x06, 0xf8, 0x21, - 0xac, 0x96, 0x91, 0xbe, 0x00, 0x6b, 0xcd, 0xad, 0x8f, 0x43, 0x87, 0x63, - 0xd7, 0x10, 0xae, 0xc9, 0xf8, 0x6e, 0x03, 0x46, 0x32, 0x71, 0x88, 0x2a, - 0x9b, 0x65, 0xd3, 0xa4, 0x84, 0x6b, 0x99, 0xa7, 0xe9, 0xb8, 0xb2, 0xe6, - 0x6a, 0xcb, 0x4c, 0xae, 0x48, 0xd9, 0x64, 0x5d, 0x0c, 0xb7, 0x85, 0xbf, - 0x11, 0xc5, 0x72, 0x43, 0x59, 0x34, 0xea, 0x06, 0x5c, 0x52, 0xb8, 0x29, - 0xf0, 0x8a, 0xd9, 0xec, 0xa8, 0xb7, 0x80, 0x3b, 0x04, 0x82, 0x1d, 0xe6, - 0xef, 0x35, 0xc8, 0x17, 0xd7, 0x21, 0xaa, 0x8f, 0x95, 0xcb, 0x72, 0x28, - 0xc4, 0xa7, 0x78, 0x63, 0x50, 0x5d, 0xa9, 0x75, 0x06, 0xbe, 0xa0, 0xb8, - 0x8d, 0xe4, 0xc7, 0xe4, 0xbf, 0xf7, 0xd5, 0x57, 0x05, 0xf4, 0x31, 0xcd, - 0x46, 0x59, 0x3d, 0xbd, 0x36, 0xd7, 0xaa, 0xfa, 0xc0, 0x2c, 0x83, 0x38, - 0x12, 0x50, 0x4b, 0x36, 0x22, 0x26, 0x12, 0x72, 0x53, 0xc1, 0x37, 0x9d, - 0xbc, 0x3d, 0x3e, 0x3b, 0x3e, 0x38, 0x7e, 0xd5, 0x54, 0x85, 0x0d, 0xd3, - 0x27, 0x43, 0xb6, 0x58, 0x58, 0xc7, 0x68, 0x45, 0x7a, 0x18, 0x9e, 0x1e, - 0x50, 0x20, 0x39, 0x4f, 0x41, 0x79, 0x9c, 0x55, 0xbb, 0x91, 0xf8, 0x2d, - 0xd1, 0x0f, 0x0b, 0x1c, 0xd0, 0x7c, 0x1d, 0x5a, 0x66, 0xd9, 0x68, 0x01, - 0x3b, 0x0f, 0xb2, 0x3f, 0x03, 0x9a, 0x9c, 0x25, 0xd7, 0xae, 0xbd, 0xc8, - 0x3c, 0x0f, 0x98, 0x80, 0xdd, 0x5f, 0xf4, 0x69, 0xa3, 0xdf, 0x04, 0xf7, - 0x09, 0x95, 0x96, 0x69, 0x51, 0x7c, 0x58, 0xcc, 0xa3, 0xab, 0xa2, 0x1c, - 0xab, 0x96, 0x5a, 0xe4, 0xf4, 0x19, 0xf0, 0x6d, 0xf8, 0x1d, 0x09, 0x1a, - 0xd9, 0xf6, 0x7d, 0xf4, 0x86, 0xc3, 0x7f, 0xde, 0x22, 0x89, 0x92, 0x30, - 0xa7, 0x1d, 0x8e, 0x84, 0x30, 0xd9, 0xe7, 0x35, 0x50, 0x9d, 0xdf, 0x9c, - 0xa3, 0xae, 0x87, 0xb5, 0x37, 0x47, 0x02, 0xa9, 0x46, 0x01, 0xaf, 0xa1, - 0x7b, 0x16, 0xbf, 0x99, 0xe9, 0x75, 0x7a, 0xcd, 0xa6, 0x2e, 0x71, 0xce, - 0x72, 0x91, 0xe7, 0xbc, 0xb2, 0xe8, 0x75, 0x36, 0x02, 0x23, 0xbb, 0x98, - 0xd4, 0xd1, 0x0f, 0x59, 0x3e, 0x2e, 0xae, 0x2a, 0x34, 0xde, 0xe2, 0xd6, - 0x70, 0x72, 0x2f, 0x40, 0x77, 0xad, 0x81, 0xb4, 0xa3, 0x77, 0x6f, 0x0e, - 0x50, 0x68, 0x94, 0x05, 0x9a, 0xc3, 0xf0, 0xa5, 0x1f, 0xdc, 0xef, 0x39, - 0x3b, 0x59, 0x3f, 0xdd, 0xf0, 0x6c, 0x14, 0x12, 0x73, 0x2f, 0x91, 0xe9, - 0x9e, 0x29, 0xed, 0x9f, 0xa8, 0x67, 0x58, 0xf4, 0xd5, 0x69, 0x41, 0x1e, - 0xd4, 0xfa, 0x2a, 0x4d, 0x3e, 0x54, 0xad, 0x05, 0x10, 0x2d, 0xa0, 0xa1, - 0x8b, 0x9e, 0x15, 0x7c, 0x1c, 0xa9, 0x5e, 0x34, 0x7d, 0xde, 0xe4, 0xb3, - 0x57, 0x8e, 0x7f, 0x9e, 0x23, 0x09, 0xb0, 0x8e, 0xd6, 0x30, 0x6f, 0x53, - 0xe0, 0x77, 0x30, 0x8c, 0x6c, 0xeb, 0x17, 0x6e, 0x8c, 0xc1, 0x7f, 0xba, - 0x49, 0x5c, 0xe4, 0xa0, 0xa6, 0xa5, 0x1a, 0x32, 0x73, 0xfd, 0xa7, 0xc4, - 0x09, 0x95, 0x19, 0x34, 0xb9, 0x92, 0x6a, 0xeb, 0x73, 0xf8, 0x30, 0x1e, - 0x06, 0x3f, 0x04, 0x45, 0xed, 0xd6, 0xe0, 0xcb, 0x7e, 0xb4, 0x3d, 0xd8, - 0xc2, 0x3f, 0xb6, 0xfb, 0xd1, 0x0e, 0x8d, 0xf4, 0x28, 0x62, 0x77, 0xbe, - 0x1c, 0x10, 0x13, 0xa2, 0x73, 0xef, 0x1b, 0xd7, 0x9f, 0x34, 0x0e, 0xba, - 0xb4, 0x65, 0x89, 0x6a, 0x77, 0xc7, 0xc5, 0x51, 0x76, 0xfb, 0x7a, 0x3f, - 0xf0, 0x9d, 0xef, 0x68, 0x03, 0x69, 0x98, 0x19, 0xea, 0x78, 0x65, 0xcb, - 0xcf, 0x2f, 0xfc, 0x18, 0xb5, 0x96, 0x1e, 0x50, 0x48, 0x3e, 0x2d, 0x12, - 0x60, 0x15, 0x29, 0x3e, 0x4b, 0xfc, 0xa7, 0x35, 0x1c, 0xdc, 0x82, 0x5b, - 0x1d, 0x12, 0x46, 0x6f, 0x3a, 0x36, 0x1d, 0xa7, 0x1a, 0x17, 0x70, 0x63, - 0xf0, 0x9b, 0x8a, 0xf2, 0x5a, 0x6e, 0x15, 0x73, 0x3b, 0x18, 0xbf, 0xcf, - 0x07, 0xe1, 0x8c, 0xdf, 0x18, 0x19, 0x03, 0x42, 0xde, 0xf9, 0xd1, 0x0f, - 0x75, 0xe3, 0x1f, 0x0d, 0xa2, 0x17, 0xf2, 0x25, 0xb4, 0xcd, 0xe8, 0x43, - 0xa6, 0x07, 0xc0, 0x56, 0x01, 0xf3, 0x3f, 0xea, 0x55, 0x8b, 0x61, 0x7b, - 0xc3, 0x31, 0x86, 0x32, 0x04, 0x1b, 0x8f, 0xe4, 0x46, 0x5d, 0xcc, 0xb3, - 0x11, 0xaa, 0x78, 0x40, 0xd1, 0x8b, 0xb9, 0x8c, 0xb3, 0x39, 0x2f, 0x2a, - 0xb2, 0x8c, 0x74, 0x94, 0xf9, 0x62, 0x38, 0xcd, 0xaa, 0x8b, 0x1e, 0x9e, - 0x63, 0xd2, 0x3e, 0x3f, 0x1c, 0x61, 0xc0, 0xb3, 0xd2, 0xfc, 0xf0, 0x09, - 0x46, 0x9f, 0x56, 0xf7, 0x54, 0xb4, 0x7e, 0x9d, 0xd6, 0x8e, 0xb5, 0x8c, - 0xe1, 0x2d, 0x7f, 0xcf, 0xdc, 0x4f, 0x11, 0x9f, 0xca, 0xbc, 0x98, 0x3f, - 0x52, 0xe7, 0xf8, 0x2c, 0x85, 0x1b, 0x67, 0x7d, 0xe9, 0x49, 0x44, 0xc7, - 0x0c, 0x4c, 0x85, 0x0e, 0x29, 0xf2, 0x0e, 0x70, 0xc9, 0x99, 0x61, 0x44, - 0xcd, 0x9f, 0x9f, 0x62, 0x53, 0xc0, 0xc1, 0x40, 0x46, 0xa1, 0x65, 0xf5, - 0x1a, 0x58, 0x52, 0x72, 0x4e, 0x73, 0x99, 0x3b, 0x4e, 0x72, 0x71, 0x0e, - 0xca, 0x06, 0x5c, 0x13, 0xf4, 0x9d, 0x53, 0xec, 0x06, 0x25, 0x16, 0x2e, - 0xb1, 0xbd, 0xd1, 0xe8, 0x56, 0x99, 0xe1, 0xfb, 0xa0, 0x3a, 0x65, 0x09, - 0xbb, 0xc7, 0x2d, 0x59, 0xf0, 0xb7, 0xa2, 0xbb, 0xc6, 0x59, 0xd6, 0xe9, - 0x89, 0x77, 0xe0, 0xf4, 0x43, 0xb8, 0x5c, 0xe6, 0x15, 0xe7, 0x22, 0x9c, - 0x1e, 0x9c, 0xf8, 0x37, 0xfc, 0xf4, 0xf4, 0x7b, 0x43, 0x20, 0x3b, 0x70, - 0xdc, 0x73, 0x1b, 0x9b, 0x70, 0xde, 0x7c, 0x79, 0xe6, 0x4f, 0x45, 0x3f, - 0x5c, 0x1f, 0x97, 0x09, 0xb0, 0xd1, 0x27, 0x1b, 0x1c, 0x14, 0xa0, 0x33, - 0x6d, 0x0c, 0xe9, 0x0c, 0xf2, 0xfa, 0x5b, 0xc3, 0x24, 0xed, 0x20, 0xaf, - 0xbf, 0x35, 0xcf, 0x6e, 0x13, 0xa5, 0x33, 0x61, 0xd1, 0xf7, 0xeb, 0x37, - 0xb8, 0x63, 0x84, 0x78, 0xd6, 0x3b, 0xa5, 0x45, 0xab, 0xef, 0x22, 0xbd, - 0xe6, 0xf4, 0xb8, 0x12, 0x84, 0x50, 0x04, 0x2a, 0x9e, 0x63, 0x26, 0x09, - 0xf4, 0xb7, 0x10, 0x51, 0xb4, 0x86, 0xfb, 0x61, 0xd9, 0x35, 0xe3, 0x38, - 0x69, 0x74, 0x96, 0x4e, 0xc9, 0xde, 0xa1, 0xaf, 0x81, 0xc9, 0x28, 0xa2, - 0x85, 0x57, 0x24, 0x9d, 0xe6, 0xa0, 0x4f, 0xa3, 0x08, 0xa2, 0x58, 0x1b, - 0x32, 0x2b, 0xf6, 0xba, 0x25, 0x23, 0x12, 0x23, 0x15, 0x8a, 0xae, 0xa2, - 0xcd, 0x26, 0x59, 0x99, 0x21, 0xe5, 0x03, 0xd7, 0x57, 0x49, 0x1c, 0x91, - 0x7e, 0x80, 0x9c, 0x89, 0xa3, 0x6b, 0xec, 0x62, 0xc2, 0x9d, 0x61, 0x2d, - 0xa4, 0xe2, 0xa7, 0x1c, 0xe5, 0x4d, 0x89, 0x89, 0x3f, 0x99, 0x87, 0x72, - 0x69, 0xe6, 0xcc, 0x39, 0x48, 0xe1, 0x37, 0xf4, 0x23, 0x43, 0x2d, 0x34, - 0x3a, 0x1f, 0x81, 0xe8, 0x1e, 0xdf, 0xbd, 0x3d, 0x3c, 0x3d, 0x8d, 0x5e, - 0x1f, 0x9e, 0x59, 0x03, 0x98, 0x5e, 0xcf, 0x8b, 0x72, 0x06, 0x4a, 0xc1, - 0x35, 0x30, 0xac, 0x6a, 0x3e, 0x4d, 0xae, 0xd1, 0xfc, 0x04, 0xe6, 0x79, - 0x5e, 0xa2, 0xd2, 0x43, 0x0e, 0xab, 0x68, 0xbc, 0x20, 0xe3, 0x0c, 0x58, - 0x32, 0x7c, 0x3e, 0x71, 0xe5, 0x3e, 0x8a, 0x55, 0xd2, 0x77, 0x1c, 0xf1, - 0x4d, 0x62, 0x52, 0xa2, 0x89, 0x64, 0xbc, 0x9a, 0x40, 0x3c, 0xaa, 0xb3, - 0xa8, 0xb8, 0xf6, 0x1d, 0xed, 0x91, 0x62, 0x55, 0xa2, 0x7a, 0x03, 0xe3, - 0x99, 0xb1, 0xfd, 0x05, 0x77, 0xd0, 0x04, 0x96, 0xd3, 0x49, 0xdd, 0x8f, - 0xe0, 0x3c, 0x06, 0x74, 0x47, 0xdb, 0x6b, 0xd2, 0xd5, 0xe2, 0xac, 0x66, - 0x50, 0x0a, 0x34, 0xa1, 0xa3, 0x89, 0xcd, 0x2f, 0x34, 0x5b, 0x8c, 0xbf, - 0x09, 0x14, 0xba, 0x7c, 0xcc, 0x51, 0x4c, 0xa0, 0xdb, 0x09, 0x05, 0x5b, - 0xa3, 0xf5, 0x0f, 0xfd, 0xe8, 0x75, 0x3f, 0xfa, 0xae, 0x1f, 0x61, 0x14, - 0x7e, 0x83, 0x6c, 0xb5, 0xed, 0xad, 0x9d, 0xc7, 0x1c, 0xb0, 0x6d, 0xc4, - 0x62, 0xa3, 0xed, 0x0f, 0xc0, 0x08, 0x74, 0x38, 0x7e, 0x08, 0x67, 0x19, - 0x44, 0xdb, 0xaf, 0x91, 0x43, 0x6c, 0x6f, 0x3d, 0x7e, 0xfe, 0xe4, 0xd9, - 0x53, 0xf9, 0x61, 0x4b, 0x87, 0xb5, 0xab, 0x85, 0x27, 0xd5, 0x10, 0xa0, - 0xa5, 0x83, 0x4e, 0x97, 0xe5, 0x09, 0x1a, 0x8c, 0xea, 0x25, 0xea, 0x47, - 0xe8, 0xc2, 0xcd, 0x26, 0xec, 0x48, 0x12, 0x87, 0x73, 0xd3, 0x7f, 0x0a, - 0x2f, 0x8f, 0xe9, 0x66, 0x98, 0x23, 0xa1, 0x8d, 0x64, 0xe7, 0x4b, 0x32, - 0x24, 0x1f, 0x62, 0x21, 0xda, 0x58, 0x68, 0x36, 0xe3, 0xa2, 0x86, 0x37, - 0x60, 0x6d, 0x6c, 0x05, 0xd5, 0xfe, 0x2e, 0x83, 0xa6, 0x6c, 0x95, 0x6d, - 0xb4, 0xbd, 0x8b, 0x05, 0x2a, 0x96, 0xf8, 0x00, 0xe8, 0x89, 0xe4, 0x97, - 0x24, 0x0a, 0x36, 0x2e, 0x09, 0xf6, 0xe3, 0xb5, 0x47, 0x81, 0xa5, 0xc1, - 0x3f, 0xe7, 0x40, 0x38, 0xbc, 0x1c, 0x2f, 0x6a, 0x4f, 0x91, 0x6a, 0x8f, - 0xee, 0x90, 0x8d, 0x90, 0xca, 0x41, 0xc6, 0x25, 0xfc, 0x03, 0x8c, 0x2f, - 0xf2, 0xc8, 0x01, 0xc1, 0x00, 0x09, 0xe2, 0x8b, 0x68, 0x61, 0xc0, 0xc7, - 0xe9, 0x70, 0x40, 0x69, 0x24, 0x76, 0xc5, 0xf0, 0x92, 0x29, 0xc5, 0x08, - 0x22, 0xd9, 0xe7, 0x5a, 0x4b, 0xec, 0x50, 0x37, 0xef, 0x44, 0xeb, 0x5f, - 0x6f, 0xf4, 0xc9, 0x70, 0xb2, 0x9e, 0x37, 0x6b, 0x3f, 0x89, 0x55, 0xe3, - 0xdc, 0x41, 0x72, 0xaf, 0x92, 0x56, 0xcb, 0xde, 0x32, 0xf2, 0x44, 0xc0, - 0x24, 0x78, 0x11, 0x95, 0xfb, 0x89, 0x0b, 0xc0, 0x1e, 0x93, 0xd5, 0x82, - 0xe7, 0xb0, 0x9f, 0x85, 0xdd, 0x3a, 0x0c, 0x12, 0x37, 0x36, 0xa9, 0x7d, - 0x66, 0x81, 0x54, 0x87, 0x94, 0x53, 0x68, 0xcc, 0xb6, 0x45, 0xbd, 0x61, - 0x52, 0xf6, 0xac, 0xd9, 0xc8, 0xb7, 0x10, 0xaf, 0x65, 0x99, 0x9e, 0x93, - 0x65, 0xc0, 0x3b, 0x8b, 0x5f, 0xf9, 0x07, 0xe7, 0x2b, 0x75, 0x80, 0x78, - 0x88, 0x8f, 0x64, 0x64, 0x0c, 0xc0, 0xf6, 0x83, 0xba, 0x89, 0x37, 0x46, - 0x03, 0x3b, 0x14, 0x5a, 0x10, 0x6a, 0x09, 0x10, 0x8b, 0xa1, 0xd0, 0x02, - 0x6f, 0x0b, 0x2a, 0xed, 0x1a, 0x17, 0x4c, 0xa3, 0xb8, 0x42, 0xe3, 0xb3, - 0x82, 0xbd, 0x47, 0xb7, 0x3c, 0x69, 0x76, 0x18, 0x1c, 0x38, 0x7c, 0x7b, - 0xea, 0xa4, 0xf2, 0xd0, 0x86, 0xce, 0xd0, 0x6f, 0x8a, 0xa1, 0x5d, 0xce, - 0xfb, 0x18, 0xc2, 0x6e, 0x11, 0xc9, 0x3f, 0x1f, 0x3c, 0x06, 0x13, 0x5c, - 0x3f, 0x1d, 0x5d, 0x26, 0xa0, 0x74, 0x27, 0x48, 0x25, 0x22, 0x76, 0xfa, - 0x18, 0xe2, 0xc0, 0x30, 0x8d, 0xd9, 0xd0, 0x92, 0x03, 0x8f, 0xce, 0x90, - 0xba, 0xf7, 0x18, 0x7b, 0x81, 0xeb, 0x56, 0x8c, 0x28, 0x3c, 0x4b, 0xc1, - 0x93, 0x23, 0xbd, 0x6e, 0x14, 0x2e, 0x27, 0x99, 0x02, 0x26, 0x6c, 0x66, - 0x3f, 0xcb, 0x4c, 0xc3, 0x57, 0x58, 0xdf, 0xad, 0x29, 0xec, 0x08, 0x47, - 0x95, 0xe5, 0xa3, 0xe9, 0x62, 0x9c, 0x1a, 0x29, 0x98, 0xe5, 0x18, 0x08, - 0x97, 0xbb, 0x49, 0x37, 0x12, 0x14, 0xae, 0xd1, 0xc5, 0x17, 0x56, 0xa1, - 0xc6, 0x60, 0xfb, 0xc8, 0x3c, 0xcf, 0xe1, 0xe5, 0xbc, 0x2e, 0x8b, 0xf1, - 0x62, 0x84, 0x56, 0xe4, 0x05, 0x05, 0xca, 0xfc, 0xdc, 0x8d, 0x64, 0x7a, - 0x85, 0x9c, 0x64, 0x0a, 0xeb, 0xcb, 0x79, 0x4c, 0xda, 0x62, 0xdc, 0x8c, - 0xaa, 0xe6, 0xcd, 0x32, 0x6b, 0x20, 0xd7, 0xb7, 0x18, 0x4c, 0x8e, 0x5f, - 0x86, 0x1e, 0x52, 0x47, 0x09, 0xfe, 0x63, 0x50, 0xa5, 0x9b, 0xb8, 0xe0, - 0x2f, 0xdc, 0x8c, 0x1d, 0x31, 0xfd, 0x74, 0x30, 0xf2, 0x84, 0xb9, 0xdb, - 0x49, 0xd1, 0x26, 0x5a, 0x4b, 0x75, 0x51, 0x5c, 0xa9, 0x99, 0x25, 0xeb, - 0x80, 0xed, 0x48, 0xac, 0xcb, 0x28, 0xa7, 0x7d, 0xd8, 0xf5, 0xe6, 0x84, - 0x6d, 0xac, 0x36, 0x61, 0x40, 0x1c, 0x8f, 0xc2, 0x89, 0x5f, 0x7c, 0x71, - 0x4c, 0xe9, 0x5d, 0xc6, 0x48, 0x3e, 0x16, 0x33, 0x85, 0xc5, 0xb0, 0x86, - 0x3b, 0x48, 0x47, 0x29, 0xc1, 0xdc, 0x2a, 0x28, 0x2c, 0x83, 0x4c, 0xf8, - 0x35, 0xe5, 0x7a, 0xb8, 0xc1, 0x92, 0xca, 0x78, 0xef, 0xad, 0x39, 0x93, - 0x8c, 0xc7, 0x19, 0x19, 0xb2, 0x53, 0x71, 0x59, 0x63, 0x90, 0x54, 0x6e, - 0xda, 0x8c, 0xa8, 0xc0, 0xe4, 0x00, 0xd4, 0xf8, 0x1b, 0x7b, 0x5d, 0xdd, - 0xe9, 0x8d, 0x3a, 0x3c, 0xa6, 0x08, 0x05, 0xb3, 0x5d, 0xb8, 0x8e, 0x18, - 0xdf, 0x1f, 0x4b, 0x48, 0xc0, 0x04, 0xf7, 0xd3, 0x31, 0x87, 0x48, 0x40, - 0x97, 0x18, 0x34, 0xf6, 0x17, 0xb7, 0x8d, 0x02, 0x25, 0x1c, 0x60, 0x8a, - 0x71, 0xb0, 0x1e, 0x45, 0xed, 0x66, 0x51, 0xeb, 0x4b, 0xe0, 0xf6, 0x8c, - 0xdd, 0xd0, 0x5c, 0x9f, 0x8c, 0xfb, 0xa1, 0x91, 0x0a, 0xa4, 0x91, 0xb6, - 0xcd, 0x8a, 0x44, 0xfc, 0xb7, 0x9a, 0x89, 0x81, 0x39, 0x06, 0x24, 0x24, - 0x2a, 0xfe, 0xf6, 0x3e, 0x1c, 0x1f, 0x3e, 0x79, 0x7e, 0xa1, 0x8f, 0x3a, - 0x9e, 0xf1, 0x04, 0xfd, 0x56, 0x60, 0x8f, 0xa5, 0x39, 0x7b, 0xf9, 0xc8, - 0x43, 0x5a, 0x94, 0x2c, 0x8b, 0xa7, 0x05, 0xc6, 0xaf, 0x38, 0x62, 0x29, - 0xcb, 0xc6, 0x55, 0xe3, 0x2a, 0xf1, 0x9e, 0x73, 0xce, 0x9d, 0x55, 0xcd, - 0xcd, 0xa2, 0xe5, 0x3c, 0xaa, 0x1b, 0x97, 0xe6, 0x68, 0x8a, 0xb4, 0x47, - 0x86, 0x06, 0xe5, 0x60, 0xd9, 0x15, 0xc6, 0x79, 0x33, 0x24, 0x02, 0xf0, - 0xf0, 0xdd, 0xc3, 0xe5, 0x61, 0x34, 0x1c, 0xd7, 0xda, 0xa8, 0x88, 0xfc, - 0x9a, 0x60, 0xf1, 0x22, 0x8f, 0x32, 0x14, 0x60, 0xe3, 0xe3, 0x81, 0x50, - 0xe8, 0x75, 0x33, 0xb8, 0x6d, 0xc8, 0x89, 0x92, 0x24, 0x2c, 0xc1, 0x91, - 0x93, 0x8d, 0x13, 0x3b, 0xe2, 0xcb, 0x08, 0x19, 0x3f, 0x70, 0x24, 0x3c, - 0xfe, 0xf8, 0xf8, 0xd5, 0xa5, 0xc3, 0xc0, 0x31, 0x9b, 0x21, 0xc7, 0x48, - 0x7d, 0x9f, 0x86, 0x18, 0x16, 0x05, 0x5c, 0x67, 0xfb, 0x79, 0xc8, 0xba, - 0xd2, 0x1c, 0xf9, 0xec, 0x58, 0x23, 0x9c, 0x12, 0xff, 0xc3, 0x91, 0xc1, - 0xaa, 0x8a, 0x92, 0x73, 0x27, 0x40, 0x24, 0x3c, 0xd9, 0x3c, 0x9b, 0x17, - 0xf2, 0x38, 0x9e, 0x16, 0x25, 0xad, 0xf4, 0x0d, 0xd7, 0x34, 0xc9, 0x47, - 0x1a, 0x51, 0xe4, 0x98, 0x1e, 0xba, 0x57, 0x8c, 0x23, 0x89, 0xe2, 0x71, - 0xac, 0xb4, 0x4a, 0x74, 0x11, 0x46, 0x44, 0x97, 0xf1, 0xf7, 0xc5, 0x15, - 0xfa, 0x31, 0xfa, 0x9c, 0xa0, 0x93, 0x55, 0x92, 0xfd, 0x01, 0xa6, 0x37, - 0xd8, 0x8e, 0xb0, 0x97, 0x94, 0x5a, 0x44, 0x3f, 0x73, 0xd2, 0xb0, 0x90, - 0x39, 0xb0, 0x10, 0xd0, 0x8f, 0x68, 0x70, 0x14, 0xd7, 0xdf, 0x47, 0x01, - 0x92, 0x78, 0x17, 0x69, 0x88, 0x4e, 0x25, 0xab, 0xe8, 0xc0, 0xe8, 0x86, - 0x01, 0xd9, 0xa4, 0x12, 0xf1, 0x22, 0x47, 0x60, 0x89, 0x57, 0xb2, 0xe6, - 0x7b, 0x86, 0x1f, 0xc7, 0x17, 0xb4, 0xb1, 0x2f, 0xe2, 0x9b, 0x19, 0x39, - 0x7b, 0xcb, 0x2f, 0x81, 0x5a, 0xf9, 0x71, 0x94, 0xce, 0x6b, 0x93, 0x94, - 0xa0, 0x1b, 0x2f, 0x8e, 0x70, 0xdc, 0x7f, 0xce, 0x7b, 0x49, 0xa6, 0x36, - 0x9e, 0xfa, 0x1d, 0xfd, 0xdb, 0x61, 0x2e, 0x75, 0xc2, 0x89, 0x4a, 0x59, - 0xa9, 0xe4, 0x86, 0x8b, 0x41, 0xfb, 0x84, 0xec, 0x68, 0xf4, 0xa3, 0x82, - 0x51, 0x05, 0x2b, 0xb5, 0x9f, 0xd4, 0xe2, 0x00, 0x93, 0x62, 0x3a, 0x65, - 0xd6, 0x69, 0x97, 0x40, 0x93, 0xf3, 0xdc, 0xbb, 0xf0, 0x16, 0x46, 0xae, - 0x62, 0x94, 0x45, 0xd7, 0x38, 0x86, 0x64, 0x5b, 0x9a, 0x3c, 0xb9, 0xd8, - 0x6a, 0xcb, 0xd3, 0xd8, 0x90, 0x75, 0x9f, 0x73, 0xe9, 0x9c, 0x64, 0x3a, - 0x96, 0xf8, 0x9e, 0xb0, 0xe7, 0x9f, 0x94, 0xfc, 0x4a, 0x14, 0x9f, 0x3a, - 0x3a, 0x01, 0x1e, 0x5b, 0x4c, 0x61, 0x09, 0x12, 0xdd, 0xf5, 0x18, 0xfe, - 0xce, 0x7f, 0xbb, 0x06, 0x52, 0x13, 0xc5, 0x08, 0x7f, 0x50, 0x63, 0x3a, - 0x51, 0x9c, 0x54, 0xa3, 0x2c, 0xb3, 0xff, 0x04, 0x5d, 0x7b, 0x92, 0x9d, - 0x3b, 0xc3, 0xf1, 0x8f, 0xb3, 0x71, 0x65, 0x9f, 0x41, 0x65, 0xdf, 0xfc, - 0x4b, 0xee, 0x0c, 0xfe, 0x1b, 0x43, 0xc6, 0x45, 0xe5, 0xf0, 0x80, 0x38, - 0x4e, 0x86, 0x15, 0x3e, 0x55, 0xc7, 0x8b, 0x3c, 0xfb, 0x18, 0x57, 0x05, - 0xe6, 0x29, 0x45, 0x7b, 0xf3, 0xa4, 0xbe, 0xf8, 0xba, 0x65, 0x32, 0xad, - 0xa3, 0xc2, 0xb8, 0x11, 0x69, 0x0e, 0x1c, 0x9e, 0x68, 0xc9, 0x2c, 0x0e, - 0xc5, 0x30, 0x8f, 0x12, 0xbd, 0x83, 0x51, 0x80, 0x7d, 0xcc, 0xf0, 0xfc, - 0x78, 0xb0, 0xbe, 0xea, 0x4c, 0xad, 0xe1, 0x80, 0x44, 0x8d, 0x67, 0x1d, - 0x38, 0x45, 0x8d, 0x0e, 0x43, 0xb8, 0x08, 0x6f, 0x8a, 0x3a, 0xdd, 0xc5, - 0x7f, 0x23, 0x39, 0x11, 0x85, 0x2b, 0x65, 0x92, 0x74, 0x9a, 0xb0, 0x06, - 0x91, 0xf8, 0x6e, 0x18, 0x9e, 0x5f, 0x26, 0x8d, 0xbc, 0x30, 0xfe, 0xda, - 0x37, 0x6b, 0xfd, 0xe8, 0x82, 0x6f, 0x19, 0x0d, 0xc8, 0xdf, 0x68, 0x32, - 0xc9, 0xda, 0xc3, 0x5d, 0x90, 0x3e, 0x8e, 0x5c, 0x90, 0xd3, 0x4b, 0xe8, - 0x4e, 0x8a, 0x07, 0xcc, 0x64, 0x7c, 0x0c, 0xbe, 0x68, 0xbd, 0x06, 0x52, - 0xae, 0x63, 0x4b, 0x39, 0x2f, 0x97, 0xe5, 0x9f, 0xe6, 0x12, 0x91, 0x51, - 0x86, 0x16, 0x1f, 0x29, 0x92, 0xd3, 0xa4, 0xf2, 0x56, 0x91, 0x9a, 0xf8, - 0x2f, 0xdf, 0x57, 0x6f, 0x42, 0x8d, 0x67, 0xb5, 0x13, 0xc8, 0x39, 0x1b, - 0x3c, 0xbc, 0x14, 0xfe, 0x0f, 0x6d, 0x68, 0x20, 0xa4, 0xd3, 0x9e, 0xe1, - 0x34, 0x4d, 0x59, 0x3f, 0x8d, 0xdd, 0x41, 0x06, 0xd1, 0xbe, 0x46, 0x71, - 0x9e, 0x0d, 0x9e, 0x70, 0x0c, 0xc7, 0xd2, 0xd4, 0xb4, 0x8e, 0xab, 0xcb, - 0x51, 0xb4, 0x47, 0xe1, 0x34, 0xe4, 0x82, 0x41, 0x5a, 0x3a, 0xdd, 0x50, - 0x55, 0x5f, 0x38, 0x08, 0x33, 0x66, 0x3e, 0x6f, 0x1d, 0x43, 0x38, 0x12, - 0x06, 0xf6, 0x51, 0xb3, 0xc1, 0x1d, 0xf6, 0xad, 0x79, 0x33, 0x4f, 0x34, - 0x2f, 0x32, 0xeb, 0xdc, 0xa0, 0x2c, 0x0a, 0x3c, 0x30, 0x1d, 0x6c, 0x04, - 0x82, 0x28, 0x8d, 0xc4, 0x52, 0xb1, 0xc9, 0xa4, 0x6d, 0xb7, 0x32, 0xed, - 0x74, 0xb4, 0x4f, 0x0c, 0x26, 0x31, 0x5a, 0xf7, 0xd8, 0x18, 0xc3, 0x7d, - 0xf6, 0xad, 0xd2, 0x60, 0xb0, 0x7c, 0x0c, 0xaf, 0x98, 0x00, 0x27, 0x8e, - 0xdd, 0x1a, 0x8e, 0x16, 0x46, 0xec, 0x53, 0xc2, 0xf8, 0x17, 0x20, 0xb6, - 0x86, 0x28, 0x9c, 0x67, 0xc5, 0x98, 0xd2, 0x42, 0xbd, 0x63, 0x3d, 0x35, - 0x99, 0x5e, 0xbd, 0x9e, 0xf3, 0x75, 0xeb, 0x98, 0xfa, 0x06, 0x64, 0x98, - 0x9f, 0xd7, 0x17, 0x1b, 0x36, 0x93, 0x49, 0xfd, 0x8c, 0xb0, 0x10, 0xfa, - 0xda, 0xbc, 0x7d, 0xd7, 0x28, 0x9e, 0x4d, 0x24, 0xf1, 0xeb, 0xa2, 0xaa, - 0x29, 0xcd, 0x55, 0x0c, 0x0d, 0xf9, 0x08, 0x58, 0x4a, 0x3a, 0x2b, 0xca, - 0xeb, 0x10, 0x41, 0x33, 0xed, 0xeb, 0x19, 0x09, 0x21, 0x1a, 0x1a, 0x16, - 0x12, 0xa6, 0xc1, 0xd9, 0x3f, 0x62, 0x3c, 0x4c, 0xe8, 0x73, 0x6c, 0x3b, - 0xec, 0x45, 0xaa, 0x73, 0xce, 0xee, 0x50, 0x12, 0x72, 0x90, 0xf2, 0x49, - 0xf1, 0xd4, 0xc1, 0x51, 0x78, 0xf0, 0xc7, 0x78, 0x0b, 0xb2, 0xd4, 0x85, - 0x4a, 0x03, 0x68, 0x83, 0xfe, 0x6a, 0x28, 0x3d, 0xb9, 0xe1, 0xf2, 0x5e, - 0xf5, 0xd6, 0xc8, 0x0c, 0xf0, 0x3f, 0xcc, 0x62, 0x5b, 0xf1, 0x96, 0x80, - 0x04, 0x28, 0xa6, 0x97, 0xc2, 0x76, 0x63, 0xc9, 0x74, 0x8e, 0xeb, 0xa2, - 0x71, 0x65, 0x9e, 0x3e, 0x1e, 0x6c, 0x37, 0xae, 0x4c, 0x7e, 0x9d, 0x2c, - 0xea, 0x8b, 0x30, 0xcb, 0x45, 0x57, 0x5a, 0x65, 0x1d, 0x69, 0xd9, 0x39, - 0x46, 0x96, 0x49, 0x0f, 0x5d, 0x60, 0xc6, 0x7c, 0x9d, 0x71, 0xde, 0x70, - 0xc4, 0x59, 0x11, 0x68, 0x98, 0x80, 0xba, 0x97, 0x4e, 0x27, 0xfd, 0x40, - 0xb8, 0x44, 0x35, 0x15, 0xd4, 0x2b, 0xd0, 0x73, 0x43, 0x43, 0xe5, 0xa9, - 0x98, 0xf5, 0x18, 0x12, 0x8a, 0x30, 0x77, 0x14, 0x44, 0x7b, 0x92, 0xcd, - 0x24, 0x2e, 0x29, 0xbe, 0xc8, 0x81, 0xe7, 0xdf, 0x45, 0xba, 0x60, 0x53, - 0x1d, 0xd3, 0x9d, 0xb1, 0xdc, 0x81, 0x93, 0x81, 0x34, 0x9d, 0x3b, 0x51, - 0x9f, 0x02, 0x3b, 0x6b, 0x2f, 0xd2, 0xd1, 0x07, 0xe5, 0xf8, 0x65, 0xea, - 0x71, 0x70, 0x32, 0xd0, 0xe3, 0x0b, 0x60, 0xb2, 0x9c, 0xf6, 0x5d, 0x5f, - 0x2c, 0xd0, 0xd1, 0x54, 0x54, 0x55, 0x86, 0x69, 0x7e, 0xe8, 0x17, 0x5b, - 0x8c, 0x68, 0x5c, 0x92, 0x01, 0x70, 0xbd, 0xe1, 0x42, 0x52, 0x16, 0x37, - 0x09, 0x8f, 0xd6, 0x70, 0x20, 0x9b, 0xf2, 0x31, 0x48, 0xc0, 0x6c, 0xae, - 0xb9, 0xdc, 0x42, 0x5c, 0x6a, 0xc2, 0x17, 0x94, 0x88, 0xc6, 0xfc, 0xc1, - 0x1a, 0x8d, 0xba, 0xa5, 0xed, 0xd5, 0xc9, 0x16, 0xcb, 0x1e, 0xf7, 0xc5, - 0x3c, 0x54, 0xe5, 0x75, 0x5c, 0xa8, 0x86, 0x38, 0x4c, 0xaa, 0x6c, 0x44, - 0xaa, 0x7a, 0x06, 0x36, 0x26, 0x89, 0xf1, 0xbc, 0x9e, 0xce, 0x42, 0x47, - 0x81, 0x7a, 0xcb, 0x79, 0x51, 0xa3, 0x5a, 0xe1, 0x91, 0x39, 0x07, 0x5f, - 0x0c, 0x5d, 0x68, 0x04, 0xc0, 0xb5, 0x1c, 0x32, 0x36, 0xd8, 0x61, 0x6a, - 0xf1, 0x46, 0xb2, 0x93, 0x9f, 0x5c, 0xa0, 0xed, 0xe9, 0x60, 0xb4, 0x11, - 0xb9, 0x99, 0xd0, 0xb8, 0x51, 0xdb, 0x4d, 0x5d, 0x21, 0x94, 0x65, 0x85, - 0x06, 0xf7, 0x55, 0x26, 0xda, 0x02, 0xd5, 0x61, 0x48, 0x0e, 0xca, 0x34, - 0xf3, 0xa5, 0xe3, 0x0c, 0xb9, 0x08, 0x99, 0x62, 0x92, 0xa8, 0x55, 0xa6, - 0xa0, 0x6a, 0x8d, 0x95, 0x3b, 0xb3, 0xe1, 0x20, 0x22, 0x34, 0x29, 0xd1, - 0xc3, 0x45, 0xf1, 0x45, 0x13, 0x11, 0x69, 0xb3, 0x6f, 0xbb, 0x6e, 0x7a, - 0x5d, 0x5c, 0x3c, 0xd6, 0xb5, 0x33, 0x91, 0xc2, 0x97, 0xf6, 0x1e, 0x11, - 0xdb, 0x05, 0x06, 0x8e, 0xf9, 0x64, 0xbc, 0xff, 0x0b, 0xdc, 0x70, 0x38, - 0x66, 0x5f, 0x34, 0x73, 0x62, 0x75, 0x73, 0x57, 0x4d, 0xfc, 0x9c, 0xf9, - 0x06, 0xf2, 0x65, 0x0c, 0x56, 0x13, 0x5d, 0xa5, 0x93, 0x09, 0xdc, 0xdb, - 0x95, 0x05, 0xae, 0x8c, 0xcc, 0x8b, 0x00, 0x6a, 0xd9, 0x9d, 0x5f, 0x8d, - 0x57, 0x64, 0x20, 0xa0, 0x27, 0x7c, 0xbc, 0xd6, 0x91, 0xfa, 0x4a, 0x53, - 0x42, 0x32, 0x4c, 0x56, 0x0e, 0xeb, 0x48, 0xf0, 0x89, 0x64, 0x8e, 0xa1, - 0xc1, 0x36, 0xf7, 0x40, 0x77, 0x19, 0xc6, 0x20, 0x36, 0x58, 0xfd, 0x17, - 0xea, 0xc7, 0xcb, 0xc3, 0x3b, 0x2c, 0x1e, 0x17, 0xe1, 0xec, 0x28, 0x24, - 0x84, 0xcb, 0x04, 0x87, 0x53, 0xa7, 0x19, 0x68, 0x4c, 0xa0, 0x44, 0x90, - 0x50, 0x72, 0xae, 0x12, 0xc6, 0x35, 0x34, 0x37, 0x5e, 0xbc, 0x3e, 0x0e, - 0x4b, 0x09, 0x48, 0xc5, 0x66, 0xae, 0xa3, 0x9a, 0xfa, 0x23, 0xb6, 0xeb, - 0x07, 0xa4, 0x07, 0xb2, 0x84, 0xa6, 0x35, 0x4e, 0xa6, 0xc9, 0x39, 0xfe, - 0x3e, 0x3b, 0xcf, 0x0b, 0x2e, 0xad, 0x6a, 0x53, 0x78, 0x01, 0xf2, 0x91, - 0x02, 0x2e, 0xec, 0xda, 0xaf, 0xa2, 0x75, 0xf6, 0x1b, 0xe1, 0x82, 0x8e, - 0xe1, 0x73, 0x4e, 0x4f, 0xbf, 0xdf, 0x58, 0x46, 0x14, 0xce, 0x3e, 0xde, - 0x86, 0x2e, 0xa2, 0xe8, 0x45, 0xe6, 0x05, 0xc4, 0x39, 0x3d, 0x4e, 0x6c, - 0x25, 0xc7, 0x66, 0xe4, 0x61, 0x57, 0xa5, 0x25, 0x3e, 0xa4, 0x98, 0x76, - 0x9a, 0xe3, 0xfe, 0x66, 0x81, 0x13, 0x2f, 0xf3, 0xba, 0x9b, 0x9e, 0xc8, - 0xb6, 0xa0, 0xdc, 0x70, 0x26, 0xa1, 0x83, 0x3e, 0x8b, 0x25, 0x38, 0xaa, - 0x05, 0x58, 0x17, 0x75, 0x43, 0x0c, 0x5d, 0x55, 0x71, 0x95, 0x9d, 0x5f, - 0x3e, 0x06, 0xf5, 0x98, 0xb5, 0xd5, 0x72, 0xfb, 0xa7, 0x5d, 0xfd, 0xeb, - 0xce, 0x4f, 0xbb, 0x65, 0x7a, 0x0e, 0xb4, 0xf2, 0xd3, 0x2e, 0x6e, 0x32, - 0x70, 0x8b, 0x5f, 0x7e, 0xf9, 0xe5, 0x6b, 0xff, 0x56, 0x46, 0xfb, 0x3f, - 0x9c, 0x46, 0x7f, 0x7f, 0x4c, 0x25, 0x24, 0x54, 0xd8, 0xd6, 0x16, 0x54, - 0x52, 0x85, 0xa2, 0xfa, 0x94, 0xb7, 0x31, 0x12, 0x95, 0xa0, 0x49, 0x8d, - 0x86, 0xce, 0xbe, 0x13, 0x49, 0x67, 0xd3, 0x92, 0x11, 0xa2, 0x69, 0x10, - 0x3c, 0x1c, 0x21, 0x99, 0x9e, 0x17, 0x40, 0x82, 0x17, 0x33, 0x3f, 0x76, - 0x94, 0x33, 0x65, 0x51, 0x54, 0x77, 0x51, 0x9f, 0x93, 0x78, 0x6a, 0x2d, - 0x4a, 0x04, 0x4f, 0x70, 0x31, 0xfc, 0xd9, 0x4b, 0x96, 0xe2, 0xe8, 0x9d, - 0xa0, 0x51, 0x82, 0x19, 0x98, 0xcc, 0x2f, 0xf0, 0xce, 0xc2, 0xa4, 0xbe, - 0xdd, 0x43, 0x72, 0xb1, 0x2a, 0x16, 0x25, 0xa6, 0xbe, 0x8f, 0xc0, 0x50, - 0x95, 0x92, 0xa2, 0x75, 0x9e, 0x26, 0xc6, 0xfc, 0xaf, 0x0d, 0x5e, 0x75, - 0x6d, 0x27, 0x97, 0x04, 0xe5, 0xf6, 0x70, 0xb3, 0xac, 0xae, 0x35, 0x69, - 0x9e, 0x73, 0x69, 0xc7, 0xb4, 0x98, 0xe0, 0x77, 0xc8, 0xb1, 0xdd, 0xf2, - 0x43, 0x4c, 0xee, 0x1f, 0x1e, 0x46, 0x9b, 0xd6, 0xd9, 0x94, 0x19, 0x5e, - 0x93, 0x1b, 0xa0, 0x58, 0x8c, 0xa3, 0x75, 0x19, 0xbc, 0xbd, 0x7c, 0x9d, - 0x53, 0x13, 0xac, 0x65, 0xc5, 0x21, 0x19, 0xb0, 0x74, 0xfd, 0xa8, 0x8a, - 0xba, 0x14, 0x1a, 0xb2, 0xa8, 0x44, 0x1b, 0x35, 0x4a, 0xa5, 0x6b, 0x40, - 0x85, 0x94, 0xfc, 0x55, 0xb9, 0xbb, 0x99, 0xbc, 0x07, 0x7f, 0xdd, 0x4d, - 0x66, 0xbf, 0xed, 0x2e, 0xaa, 0x38, 0x85, 0x99, 0xe2, 0x9d, 0xdd, 0xb4, - 0xea, 0x29, 0xdb, 0xef, 0x7d, 0x48, 0xaf, 0x77, 0x39, 0xd1, 0xae, 0xb7, - 0x22, 0xf3, 0x77, 0x78, 0xbd, 0x95, 0x65, 0xae, 0xe6, 0xf8, 0xec, 0x49, - 0xd3, 0xd8, 0xa2, 0x17, 0x6e, 0xa3, 0x37, 0xa2, 0xe6, 0x47, 0x31, 0x9f, - 0x6f, 0x79, 0x8a, 0x26, 0xf5, 0x9b, 0x80, 0x42, 0x40, 0x33, 0x23, 0x16, - 0x8e, 0xa5, 0x92, 0x56, 0x93, 0xc2, 0x27, 0x35, 0xf5, 0x9a, 0x35, 0x06, - 0x2b, 0x48, 0xe8, 0x5a, 0x2e, 0x28, 0xf2, 0x49, 0x27, 0xd9, 0x1e, 0x0e, - 0x93, 0xbe, 0xfa, 0xad, 0x42, 0x45, 0xe4, 0x9a, 0xb0, 0x46, 0x94, 0x22, - 0x25, 0x27, 0x42, 0x83, 0x01, 0x7f, 0x99, 0x15, 0x8b, 0x6a, 0x7a, 0xcd, - 0x39, 0xe0, 0x3c, 0x36, 0xd2, 0xa8, 0x6f, 0x24, 0x57, 0x94, 0xbe, 0x60, - 0x0b, 0xa4, 0x3a, 0x14, 0xe3, 0x75, 0xac, 0x02, 0x23, 0x9f, 0x21, 0xeb, - 0x64, 0x24, 0x4e, 0xdb, 0xab, 0x63, 0xad, 0x8d, 0x0a, 0x1c, 0x8c, 0x7a, - 0xb6, 0x71, 0x8f, 0xba, 0x07, 0x1f, 0xf0, 0xbd, 0x6b, 0x1e, 0x0b, 0xba, - 0x5f, 0xbb, 0xf3, 0xa4, 0xaa, 0x30, 0xc9, 0xcc, 0x4c, 0x74, 0x17, 0xd5, - 0x83, 0xde, 0x74, 0x69, 0x6c, 0x94, 0xc4, 0x9c, 0xe3, 0xd5, 0xa6, 0xb3, - 0xb3, 0x57, 0xa7, 0x21, 0x32, 0x43, 0xea, 0x38, 0xd8, 0x07, 0xbe, 0x82, - 0xb9, 0xd2, 0xe6, 0x66, 0x6b, 0x9e, 0x98, 0x2a, 0x76, 0x9e, 0x1e, 0x58, - 0x5d, 0x83, 0x3a, 0x31, 0x23, 0x4d, 0x03, 0xe8, 0x00, 0xed, 0x5f, 0xf2, - 0xfc, 0xa4, 0x78, 0x03, 0xbe, 0x75, 0x82, 0xb8, 0x34, 0x95, 0x8d, 0x9e, - 0xc2, 0x8c, 0xc8, 0xc5, 0x0e, 0xf6, 0x3d, 0x97, 0x10, 0x4e, 0x6f, 0x78, - 0x04, 0x59, 0x85, 0x52, 0x71, 0x42, 0x32, 0x15, 0xd3, 0xea, 0x4c, 0x2e, - 0x51, 0x5f, 0xaa, 0x8c, 0xaf, 0x6c, 0xa1, 0x52, 0x5b, 0xff, 0x71, 0x49, - 0xbc, 0x96, 0x42, 0x21, 0xaa, 0xf7, 0x63, 0x3f, 0xa7, 0x7c, 0x93, 0x7c, - 0xc5, 0x1a, 0x3c, 0x7b, 0x95, 0x03, 0xf3, 0x81, 0x15, 0x07, 0x58, 0xb1, - 0x63, 0x51, 0x4b, 0xd9, 0x28, 0x25, 0xcc, 0x71, 0x65, 0x11, 0x7f, 0x5f, - 0x6e, 0x52, 0xef, 0x68, 0x4d, 0x98, 0xf0, 0xa5, 0xd9, 0xe6, 0xad, 0xe1, - 0x58, 0xbd, 0x79, 0x35, 0x60, 0x35, 0xaf, 0xfd, 0x36, 0x86, 0xaa, 0xe8, - 0x5d, 0xb2, 0xe5, 0x28, 0x08, 0x77, 0x8a, 0x21, 0xb0, 0x9c, 0x7c, 0x97, - 0xf8, 0x55, 0x6d, 0x56, 0xcc, 0xd5, 0xe8, 0x11, 0xd7, 0xbf, 0x4e, 0x33, - 0x49, 0x54, 0xe6, 0x03, 0xc6, 0x19, 0x68, 0xc1, 0xb4, 0xeb, 0x4e, 0xf6, - 0x9f, 0x9e, 0xb7, 0xf7, 0xb1, 0x1c, 0x57, 0x97, 0x25, 0xb0, 0x33, 0xee, - 0xaa, 0x98, 0x4e, 0x60, 0xc1, 0x91, 0xd4, 0x54, 0x39, 0xd0, 0x00, 0x76, - 0x8b, 0x4d, 0x99, 0x52, 0x6b, 0x38, 0x29, 0x5a, 0x5a, 0x76, 0xc5, 0x0c, - 0xb9, 0xde, 0x4e, 0x91, 0x5b, 0x45, 0x93, 0x33, 0x43, 0xaf, 0x2a, 0x3a, - 0xec, 0x9a, 0x56, 0xbb, 0x91, 0x23, 0xa0, 0xb0, 0x92, 0xcc, 0xc8, 0x51, - 0x42, 0x2e, 0x3b, 0x12, 0x0d, 0x1f, 0xf0, 0x07, 0x58, 0x55, 0x84, 0xf6, - 0xbb, 0x23, 0x1e, 0x9e, 0x0f, 0x76, 0x9a, 0xd2, 0x81, 0x5f, 0x67, 0x4f, - 0xdc, 0xd7, 0x2b, 0xdc, 0x5e, 0x5b, 0xb1, 0x8c, 0xef, 0xa3, 0x65, 0x9c, - 0x88, 0x1a, 0x6f, 0x6f, 0xa7, 0x77, 0x3f, 0xd2, 0x48, 0x2e, 0xab, 0xb8, - 0xe0, 0xf1, 0x69, 0xb2, 0x38, 0x51, 0xdb, 0xc4, 0x7d, 0x34, 0xc7, 0x01, - 0xc4, 0xe2, 0x8c, 0x4b, 0xd5, 0xd6, 0x6d, 0xa2, 0x76, 0x7e, 0xbf, 0x5e, - 0x6d, 0xb0, 0xc9, 0x39, 0x24, 0x57, 0xd5, 0xc9, 0xe1, 0xeb, 0x88, 0x23, - 0xc0, 0x68, 0x26, 0x48, 0x8e, 0x8d, 0x62, 0x2f, 0x18, 0x52, 0xf7, 0xc5, - 0xbd, 0x53, 0x2d, 0x44, 0x4b, 0xe3, 0x10, 0x05, 0x86, 0x70, 0xaa, 0xa2, - 0x2d, 0xc0, 0xea, 0xeb, 0x79, 0x36, 0xa2, 0x81, 0x25, 0x25, 0xcd, 0x73, - 0x64, 0xd5, 0xe4, 0x47, 0xc6, 0x60, 0x99, 0x33, 0x66, 0x07, 0xf1, 0xa3, - 0xd9, 0x7e, 0x9e, 0x67, 0xbf, 0xc9, 0x8d, 0x09, 0x56, 0xd5, 0x20, 0xfb, - 0x1e, 0x47, 0x6b, 0x07, 0xef, 0xde, 0xbe, 0x7a, 0x7f, 0xb0, 0xff, 0xfe, - 0xdb, 0x77, 0x6f, 0x5e, 0xbc, 0x3a, 0x5c, 0x6b, 0x67, 0xdc, 0x6a, 0x19, - 0x10, 0x95, 0x00, 0x89, 0x3f, 0x87, 0x07, 0xe5, 0xec, 0x72, 0x26, 0x11, - 0xca, 0x34, 0x22, 0x87, 0xb9, 0x14, 0x2d, 0xc0, 0x7e, 0xd3, 0x86, 0xb6, - 0x86, 0x1b, 0x2e, 0xd0, 0x11, 0x28, 0x52, 0x5d, 0x3e, 0x5e, 0x45, 0xb0, - 0x84, 0x02, 0x4d, 0x79, 0x46, 0x48, 0x9d, 0x8c, 0xae, 0x34, 0x39, 0xd8, - 0x09, 0x3c, 0xb1, 0x05, 0xb9, 0xa8, 0x0b, 0x0c, 0xd1, 0xf3, 0x1e, 0x62, - 0x9e, 0x66, 0x25, 0xb5, 0xef, 0x72, 0xf4, 0x55, 0x97, 0x0b, 0x17, 0xf6, - 0x00, 0x47, 0xc0, 0x0b, 0x23, 0xcb, 0x1b, 0x95, 0xf5, 0x5a, 0x5f, 0xcb, - 0xc6, 0x14, 0xf6, 0x80, 0xca, 0xe5, 0x4c, 0x22, 0x68, 0x52, 0x05, 0xf6, - 0x7d, 0x90, 0x7e, 0x4c, 0x49, 0x92, 0xcb, 0x3b, 0x07, 0x8b, 0x92, 0xb4, - 0x83, 0x1f, 0x80, 0xd3, 0x22, 0xa3, 0x78, 0x61, 0x79, 0x3f, 0x3f, 0x44, - 0xa1, 0xce, 0x49, 0x31, 0x1d, 0xa7, 0xa5, 0x77, 0xdc, 0x18, 0x97, 0xa5, - 0xdc, 0x8d, 0x93, 0xfd, 0xb3, 0xef, 0xbd, 0xcd, 0x58, 0xcf, 0x8e, 0x4f, - 0xd9, 0xa9, 0x33, 0x4b, 0x46, 0xf0, 0x57, 0xe4, 0x90, 0x1b, 0x26, 0xfb, - 0xdf, 0x90, 0x25, 0x71, 0x13, 0xa0, 0xe3, 0x53, 0xf6, 0xbb, 0x51, 0xce, - 0x33, 0x72, 0xbe, 0xbe, 0x7f, 0x95, 0xf2, 0x36, 0x45, 0xda, 0xe4, 0x4f, - 0x2a, 0x3e, 0xc5, 0x32, 0xbe, 0xab, 0x04, 0x04, 0x3d, 0xf9, 0xa7, 0x61, - 0xa7, 0x87, 0xd9, 0x34, 0xab, 0xaf, 0x99, 0xc3, 0xb6, 0x6d, 0x04, 0x2e, - 0x54, 0x25, 0x8e, 0x9b, 0xe6, 0xe7, 0x59, 0x4e, 0x41, 0x07, 0x14, 0x77, - 0x59, 0xed, 0x46, 0x3a, 0xb8, 0xdc, 0xce, 0xd8, 0xee, 0x66, 0xee, 0xb6, - 0x3f, 0x5b, 0x4b, 0xd0, 0x6a, 0x23, 0x6e, 0x0c, 0x15, 0xba, 0xb7, 0xda, - 0x9c, 0x15, 0x8b, 0x75, 0xaa, 0x45, 0x45, 0xf5, 0xa8, 0x35, 0xdc, 0x5f, - 0xd3, 0x6b, 0x10, 0x47, 0x54, 0xc3, 0x58, 0x44, 0x2a, 0xf8, 0x8d, 0xe4, - 0x57, 0x4f, 0x5b, 0xa6, 0x59, 0x54, 0xa9, 0xa4, 0xbd, 0x89, 0x4e, 0x57, - 0x4c, 0xda, 0x76, 0x09, 0x0d, 0xa0, 0x6e, 0x46, 0x1c, 0x02, 0x44, 0xb1, - 0xcb, 0xc4, 0x68, 0x32, 0xff, 0x04, 0x55, 0x26, 0xca, 0xd9, 0x9d, 0x2d, - 0xdb, 0x7d, 0xf3, 0x6c, 0x66, 0xc4, 0x6c, 0x6b, 0xb8, 0x67, 0x54, 0x65, - 0x4d, 0x59, 0x34, 0xb6, 0xde, 0xf6, 0xd9, 0xe0, 0xe9, 0x16, 0x15, 0xdc, - 0x2e, 0x1d, 0x1c, 0x4f, 0xb6, 0x2d, 0x8e, 0xe8, 0xa4, 0x9b, 0x07, 0xcd, - 0x39, 0x09, 0x74, 0xb2, 0x78, 0xb0, 0x72, 0xae, 0x7f, 0x31, 0x3e, 0x19, - 0xe6, 0x13, 0xec, 0x31, 0xf4, 0x14, 0x7a, 0xf6, 0x20, 0x1a, 0x85, 0x40, - 0xbe, 0x61, 0x4d, 0x54, 0x26, 0xb8, 0xc4, 0x65, 0x01, 0x87, 0xdc, 0x38, - 0xcc, 0x75, 0x47, 0xe5, 0x6f, 0xdf, 0x5d, 0x67, 0x4b, 0x36, 0xc2, 0x31, - 0x31, 0x91, 0x43, 0x37, 0xd8, 0x6c, 0x6c, 0xb4, 0x71, 0x8d, 0x1e, 0x9b, - 0x6d, 0xf7, 0x63, 0xb7, 0xc9, 0xec, 0x07, 0xfb, 0xe4, 0x4c, 0xb9, 0x83, - 0x4f, 0xbf, 0x5b, 0xf6, 0x36, 0x64, 0x2d, 0x3d, 0xb4, 0x07, 0x6c, 0x29, - 0x2c, 0x6a, 0x45, 0xd6, 0xde, 0x52, 0xd8, 0x5a, 0xee, 0xe6, 0x49, 0x1f, - 0x4f, 0x3b, 0x7e, 0xad, 0x82, 0x15, 0x57, 0x50, 0x69, 0x68, 0xc4, 0xee, - 0x35, 0xf9, 0xe6, 0x25, 0xd5, 0x24, 0xa4, 0xd9, 0xc2, 0xf5, 0x64, 0xbc, - 0x9b, 0xdd, 0x5e, 0xb4, 0x9e, 0x0e, 0xce, 0x41, 0x84, 0xf7, 0x70, 0xa8, - 0xed, 0x5d, 0xfc, 0x73, 0x87, 0xfe, 0x7c, 0xd4, 0xdb, 0xe0, 0x1c, 0x95, - 0x06, 0x59, 0xa0, 0x5c, 0x6e, 0x4b, 0x15, 0x2a, 0xb7, 0x72, 0xc4, 0x34, - 0x4b, 0xaa, 0xac, 0x8b, 0x1b, 0x8a, 0xfa, 0xca, 0x24, 0xe0, 0x1b, 0x64, - 0xba, 0x0b, 0x33, 0x0e, 0x5d, 0x5d, 0xa6, 0x1c, 0x3b, 0x83, 0x6f, 0xc3, - 0x22, 0x97, 0x74, 0xec, 0x84, 0x91, 0x47, 0xef, 0xcb, 0xf4, 0x02, 0x8b, - 0xc9, 0x17, 0x35, 0x5f, 0x12, 0xb8, 0x59, 0xed, 0xe1, 0x58, 0xa1, 0xa5, - 0xaf, 0x35, 0x7a, 0xb3, 0x94, 0x3a, 0x98, 0x23, 0xe4, 0xdc, 0x96, 0x04, - 0x33, 0x08, 0x8c, 0x76, 0x1d, 0x0b, 0xaa, 0x53, 0x50, 0xc0, 0xe3, 0x45, - 0xe2, 0xa2, 0x51, 0x7c, 0xd2, 0x45, 0xb7, 0x99, 0xa1, 0xc9, 0x49, 0x35, - 0xa3, 0xa0, 0x6f, 0x66, 0x23, 0x74, 0xa6, 0x63, 0x2e, 0xe3, 0x05, 0xc1, - 0x4a, 0xf8, 0x47, 0x61, 0x6f, 0xca, 0x44, 0x32, 0x3b, 0xe4, 0xdf, 0x5c, - 0x99, 0xc8, 0x7a, 0x54, 0xc5, 0xc0, 0x37, 0x6d, 0x25, 0x2a, 0x70, 0xf1, - 0xda, 0x32, 0x44, 0xb8, 0xb6, 0xd1, 0x59, 0xe4, 0x7b, 0x4d, 0x8c, 0x59, - 0xdc, 0xab, 0x5d, 0x77, 0x98, 0x1e, 0xfe, 0x6c, 0x77, 0x98, 0x66, 0xdf, - 0x24, 0x4f, 0xe8, 0xa6, 0xbd, 0x1c, 0x77, 0x51, 0xa7, 0x6f, 0xba, 0xc8, - 0xf0, 0x48, 0x8c, 0xf9, 0x07, 0x8b, 0x6a, 0xd9, 0x3d, 0xd6, 0x6b, 0xec, - 0xdc, 0x46, 0x7e, 0x49, 0x53, 0xcc, 0x24, 0xc9, 0xdc, 0x39, 0xa4, 0xf6, - 0x4d, 0xb9, 0x76, 0x88, 0xf7, 0xc0, 0xb9, 0xfb, 0xa7, 0x3c, 0xce, 0x5b, - 0x89, 0x9e, 0xad, 0x27, 0x1f, 0x92, 0x41, 0x74, 0x7c, 0x70, 0x7a, 0x82, - 0x33, 0xcc, 0x31, 0xaf, 0x7e, 0x03, 0x93, 0xee, 0x5b, 0xc3, 0x81, 0x5d, - 0x93, 0x52, 0xa1, 0xe5, 0x2d, 0x48, 0x41, 0x93, 0xa0, 0xb4, 0x52, 0xa8, - 0x91, 0x10, 0x4f, 0x19, 0xf9, 0x70, 0x78, 0x19, 0x70, 0x0e, 0x62, 0x07, - 0xde, 0x44, 0x73, 0xd8, 0xff, 0xf1, 0x86, 0x49, 0xab, 0xed, 0x2b, 0xbd, - 0x9a, 0x3c, 0xdb, 0x6a, 0x71, 0x8e, 0x9e, 0x94, 0x4a, 0x7d, 0xf8, 0xee, - 0x6e, 0xf8, 0x35, 0x4b, 0xf2, 0xd9, 0x64, 0xa0, 0xf1, 0xf5, 0x86, 0x91, - 0x08, 0x0d, 0x84, 0x74, 0xb3, 0xbc, 0xb0, 0x03, 0x63, 0xd9, 0xef, 0x94, - 0xb8, 0x88, 0x96, 0x7f, 0x06, 0xb4, 0x27, 0x3e, 0x13, 0x75, 0xff, 0x84, - 0xc3, 0x47, 0xea, 0xca, 0x1a, 0xb1, 0x5a, 0xa8, 0x49, 0x56, 0x68, 0xf2, - 0xa6, 0xa8, 0x9a, 0xb3, 0xcc, 0x66, 0x9a, 0x16, 0x1e, 0xc0, 0x2a, 0x5e, - 0xf4, 0x5d, 0xbe, 0xf0, 0x37, 0x1f, 0xc5, 0x36, 0x6e, 0xde, 0x12, 0xcb, - 0xb4, 0x49, 0x5a, 0x0d, 0xb4, 0x2b, 0x32, 0x4f, 0xf9, 0xf3, 0x3d, 0x3f, - 0x50, 0xab, 0xaa, 0x47, 0xd2, 0x84, 0x43, 0xc6, 0xa9, 0x1d, 0x7c, 0xe5, - 0xdb, 0xe5, 0xac, 0x6b, 0x45, 0x97, 0x51, 0x06, 0xcc, 0x6e, 0x3c, 0x5f, - 0x0c, 0x3f, 0xa4, 0xd7, 0xde, 0x25, 0x02, 0x33, 0x2a, 0x8d, 0xf6, 0xf0, - 0xcf, 0x1b, 0x8d, 0x4f, 0x2e, 0xd4, 0xc0, 0xe7, 0xeb, 0x0b, 0xc7, 0x6b, - 0x23, 0x01, 0xc8, 0x86, 0x3d, 0x18, 0xe4, 0x28, 0x98, 0x2c, 0x80, 0x32, - 0xa7, 0x1f, 0xbd, 0x40, 0xd4, 0xc0, 0xc3, 0x37, 0xdf, 0xd1, 0x61, 0x9d, - 0x6c, 0xef, 0x50, 0xde, 0x97, 0x31, 0xc1, 0xc6, 0x34, 0x49, 0xd8, 0xcd, - 0x6f, 0xf8, 0x22, 0xad, 0x83, 0xeb, 0xed, 0x2a, 0xad, 0xc6, 0xc5, 0x42, - 0x2c, 0x39, 0x64, 0x96, 0x67, 0xd6, 0xcd, 0x89, 0xd3, 0xb6, 0x86, 0xd3, - 0x54, 0x23, 0xd2, 0x8d, 0x5a, 0xea, 0x3e, 0xbd, 0x6e, 0x74, 0x48, 0xca, - 0x06, 0x44, 0x55, 0x0d, 0x96, 0x3a, 0x10, 0x37, 0xf7, 0x61, 0xdf, 0x97, - 0x0b, 0xa2, 0x3f, 0x81, 0x65, 0xf7, 0x61, 0x54, 0x6d, 0x6f, 0xef, 0x46, - 0xef, 0xde, 0x1e, 0xb1, 0x0a, 0x8e, 0xdf, 0xda, 0xf2, 0xc9, 0xe2, 0x07, - 0x74, 0x78, 0xd0, 0xed, 0xc1, 0x7c, 0x06, 0x0f, 0xba, 0x9d, 0x1c, 0xd5, - 0x03, 0xf9, 0x2a, 0x92, 0x6d, 0x2b, 0x51, 0xdd, 0x61, 0x5f, 0xde, 0xc5, - 0xff, 0x02, 0xe1, 0x49, 0x70, 0x14, 0xfe, 0x16, 0x37, 0xbf, 0xdc, 0x3e, - 0x19, 0xed, 0x39, 0x14, 0xf4, 0x93, 0x71, 0x94, 0xfe, 0x72, 0x37, 0xaf, - 0x48, 0x98, 0x2c, 0x03, 0x61, 0x4e, 0xf2, 0xdd, 0x9d, 0x9b, 0x3c, 0x03, - 0xfa, 0x54, 0xba, 0xb1, 0x02, 0x60, 0x89, 0x58, 0x97, 0x84, 0x0a, 0x93, - 0x1b, 0x5d, 0x3e, 0x66, 0x48, 0x43, 0xaa, 0xb3, 0xf4, 0xd2, 0x10, 0x8a, - 0xa9, 0xba, 0x57, 0xdc, 0x99, 0x5d, 0xef, 0xc8, 0x5f, 0x0f, 0x4e, 0xff, - 0x00, 0x44, 0xcf, 0xaa, 0x17, 0xf2, 0x65, 0x16, 0x31, 0x4c, 0x84, 0x6d, - 0xa2, 0x37, 0x16, 0x28, 0x15, 0x81, 0x18, 0x8d, 0xcd, 0xbe, 0x46, 0xb9, - 0xdf, 0xb4, 0x32, 0xb6, 0x30, 0x06, 0x92, 0x12, 0x44, 0x6e, 0xdc, 0x50, - 0xf1, 0x29, 0xe6, 0xb5, 0x19, 0x2f, 0xb4, 0x16, 0x2e, 0xea, 0xbe, 0x69, - 0x98, 0x17, 0xc4, 0x5a, 0xa9, 0x70, 0x78, 0x72, 0xbd, 0x6a, 0x5f, 0x2e, - 0x70, 0x71, 0x46, 0x3b, 0x14, 0xac, 0xf9, 0xba, 0x82, 0xf9, 0x96, 0x04, - 0x3c, 0x54, 0x5c, 0x19, 0x56, 0x05, 0xe4, 0xc2, 0xbc, 0xcc, 0x2e, 0xf1, - 0x39, 0xa5, 0x19, 0xd2, 0x1a, 0xf9, 0x28, 0x1b, 0x36, 0x62, 0x91, 0xe3, - 0x7f, 0x73, 0x8e, 0x45, 0x23, 0xdd, 0x75, 0x5e, 0x49, 0x43, 0x79, 0x54, - 0xb7, 0x28, 0x79, 0x5b, 0xa4, 0x51, 0x83, 0x51, 0xa5, 0x00, 0x9c, 0xd3, - 0x40, 0x66, 0x95, 0xca, 0x16, 0x97, 0x2e, 0xbf, 0xc6, 0x7c, 0x97, 0xb2, - 0xb6, 0x29, 0xbc, 0x0e, 0xd2, 0x1d, 0x46, 0x4a, 0xe8, 0x9c, 0x19, 0xae, - 0x2f, 0xf0, 0x71, 0x26, 0x2f, 0x91, 0xf4, 0x78, 0x90, 0x25, 0xbd, 0x9f, - 0xe1, 0xbf, 0xe4, 0xdc, 0x4a, 0x6a, 0x17, 0x13, 0xc7, 0x61, 0x86, 0x54, - 0xb2, 0xef, 0x67, 0xd4, 0x99, 0x13, 0x1c, 0xa7, 0xd3, 0x6c, 0x96, 0x61, - 0xae, 0x63, 0x74, 0xaa, 0xe8, 0x03, 0xde, 0x5a, 0xda, 0xb3, 0xff, 0xdc, - 0x6b, 0xfb, 0x4f, 0x70, 0x2d, 0x3f, 0x87, 0xd6, 0xe2, 0x2c, 0x25, 0x21, - 0xc5, 0x43, 0x46, 0x5c, 0x9a, 0x63, 0xb9, 0xdc, 0x90, 0x40, 0xe0, 0xd4, - 0x32, 0x41, 0xb7, 0x8e, 0x9e, 0x30, 0x93, 0xae, 0x30, 0xce, 0xb6, 0x4b, - 0x0d, 0x66, 0xbd, 0x04, 0x05, 0x01, 0x85, 0xaa, 0xb8, 0x34, 0x12, 0xb9, - 0x44, 0xdb, 0xc4, 0x62, 0xd7, 0x11, 0x11, 0xf5, 0xd9, 0x93, 0xed, 0x9d, - 0x8d, 0x46, 0xca, 0x99, 0x9c, 0xb6, 0x57, 0x13, 0x4f, 0x59, 0x7b, 0x2e, - 0x2d, 0xa1, 0xc2, 0x5a, 0x6b, 0xfc, 0x41, 0x07, 0x1e, 0xa7, 0x18, 0x13, - 0x1d, 0x44, 0xfb, 0x06, 0xae, 0x09, 0x06, 0x86, 0x45, 0xb6, 0x87, 0xa3, - 0x7c, 0x67, 0xcd, 0x15, 0x17, 0xc6, 0xdf, 0x63, 0x71, 0x41, 0x01, 0x88, - 0x79, 0x49, 0x99, 0x89, 0x0c, 0x10, 0x13, 0xb9, 0xeb, 0xa6, 0x8b, 0xda, - 0x0e, 0x3e, 0xbb, 0xdf, 0xe5, 0x70, 0xff, 0xbe, 0x7a, 0x9c, 0x52, 0xc2, - 0x03, 0xe1, 0xdd, 0x32, 0xf1, 0x89, 0xac, 0x12, 0x75, 0xde, 0xf3, 0xb2, - 0xc9, 0x8a, 0x7a, 0xe4, 0x98, 0xcc, 0x31, 0x09, 0xec, 0x2a, 0x71, 0x64, - 0x8a, 0x6e, 0xbf, 0xcb, 0xf6, 0x1b, 0xc6, 0x48, 0x80, 0x4a, 0x40, 0x96, - 0xf5, 0x82, 0xa3, 0x85, 0x7d, 0x6e, 0xab, 0xba, 0xdc, 0x6e, 0xf4, 0xb9, - 0x35, 0xcc, 0x5b, 0x3d, 0x1b, 0x3c, 0x77, 0xf1, 0x3f, 0x0e, 0x53, 0x0b, - 0xd7, 0x45, 0x90, 0x31, 0xf2, 0x78, 0x20, 0x5f, 0x2c, 0xdd, 0x54, 0x6e, - 0x43, 0xec, 0xa6, 0xe9, 0x0d, 0xc3, 0x3a, 0x5e, 0x0c, 0x15, 0x7f, 0x10, - 0xef, 0x17, 0x31, 0x60, 0x93, 0xe8, 0xec, 0xfb, 0x9b, 0x95, 0xaf, 0x1b, - 0x78, 0x18, 0x77, 0x99, 0x84, 0x23, 0x63, 0x39, 0x9b, 0x53, 0x73, 0x45, - 0xe5, 0x7f, 0x61, 0x6f, 0x38, 0xd2, 0x0b, 0xbb, 0xe8, 0x4d, 0x84, 0x4e, - 0x54, 0x61, 0x37, 0x2a, 0x06, 0xa2, 0x38, 0x21, 0xb8, 0x66, 0x50, 0xb6, - 0x2d, 0x4a, 0x50, 0x9b, 0x0e, 0x06, 0x9b, 0x3d, 0xc9, 0xb8, 0xa6, 0x0a, - 0x06, 0x06, 0x86, 0x35, 0xf9, 0xa9, 0x98, 0xb2, 0xbe, 0xa8, 0x4c, 0x94, - 0x39, 0x01, 0xaa, 0x1e, 0x7d, 0xc0, 0x1d, 0xbc, 0xd1, 0x0b, 0x77, 0xe0, - 0xb1, 0xe6, 0xca, 0xc8, 0x3a, 0x2b, 0x8c, 0x29, 0x09, 0x81, 0x36, 0xce, - 0xb7, 0x53, 0x4a, 0xae, 0x26, 0x36, 0x9e, 0xf0, 0x86, 0xbc, 0xe6, 0x80, - 0x15, 0x4c, 0xfb, 0x4a, 0xaa, 0xa3, 0x4f, 0x5e, 0xfe, 0xe8, 0x14, 0xdb, - 0x7b, 0xae, 0x03, 0x72, 0xd2, 0xfd, 0xc5, 0x64, 0xfd, 0x31, 0x56, 0x98, - 0x84, 0xae, 0x13, 0x0d, 0x77, 0x62, 0x06, 0xe4, 0x86, 0xad, 0xed, 0xc3, - 0xad, 0xee, 0xed, 0xd1, 0xef, 0xda, 0x71, 0x70, 0xc1, 0x7b, 0xfd, 0xfa, - 0x67, 0xfe, 0x35, 0x67, 0x4a, 0xff, 0xbc, 0x57, 0x5f, 0x2c, 0x66, 0x43, - 0x38, 0xce, 0xbc, 0xfe, 0xba, 0xc7, 0xc9, 0x75, 0x13, 0xde, 0xcd, 0xd6, - 0xfa, 0x3d, 0x34, 0x0e, 0x0d, 0xc2, 0x98, 0x40, 0x6a, 0x63, 0xdf, 0x78, - 0x7d, 0x7d, 0x01, 0x2f, 0x34, 0x95, 0x43, 0x51, 0x8f, 0xfd, 0xe2, 0x9e, - 0x2c, 0x7f, 0x07, 0xe4, 0xf9, 0xf3, 0xeb, 0x7f, 0xfc, 0xfc, 0xe5, 0xa3, - 0xc7, 0xc9, 0xb3, 0x64, 0xf4, 0x74, 0xf2, 0x3c, 0x79, 0x32, 0x7e, 0xf2, - 0xec, 0xcb, 0x9d, 0xe7, 0x4f, 0x92, 0x67, 0x8f, 0x27, 0xc9, 0xd3, 0xed, - 0x74, 0xfb, 0xcb, 0xc9, 0xce, 0xa3, 0xf1, 0x78, 0x92, 0x3e, 0x1f, 0x3f, - 0x4b, 0xb0, 0x8c, 0x05, 0x34, 0x13, 0x5d, 0xbb, 0xcf, 0x66, 0x8d, 0xba, - 0x0c, 0xdf, 0x71, 0xfa, 0xfd, 0x7e, 0xbc, 0x1d, 0x5d, 0xa4, 0x1f, 0x0d, - 0x3e, 0x55, 0x23, 0x9f, 0xb2, 0x4a, 0x19, 0xcb, 0xad, 0xf3, 0x63, 0x15, - 0x0c, 0x3b, 0x7a, 0x69, 0xea, 0x3c, 0x78, 0x0f, 0x75, 0x53, 0xb9, 0xd4, - 0xc7, 0xba, 0x56, 0x77, 0x23, 0xf5, 0xff, 0xe3, 0x77, 0xb5, 0x2f, 0xff, - 0x2b, 0x74, 0x2a, 0xbc, 0x4e, 0x46, 0x17, 0x84, 0xb4, 0xa3, 0x4f, 0x9e, - 0x72, 0xe6, 0x4a, 0x3f, 0x92, 0xbf, 0x80, 0x5e, 0xec, 0x8c, 0xf1, 0x5d, - 0x59, 0x2c, 0xe6, 0x27, 0xc5, 0x34, 0x1b, 0x5d, 0x2f, 0x1b, 0xce, 0x79, - 0x8c, 0xee, 0xa9, 0xfb, 0xbb, 0x43, 0x66, 0xe1, 0x59, 0x15, 0xd4, 0xd5, - 0x1d, 0xdd, 0xf5, 0xb6, 0x9a, 0xfa, 0xfd, 0x7a, 0x5c, 0x70, 0x66, 0xfc, - 0x83, 0xb8, 0x04, 0xeb, 0x38, 0xf0, 0xbf, 0xd5, 0xb5, 0x75, 0xcb, 0xfe, - 0x6f, 0x54, 0xd7, 0xe3, 0x51, 0x36, 0x47, 0x74, 0xef, 0x68, 0x8f, 0x8a, - 0x9d, 0x30, 0x9c, 0xc4, 0x3f, 0x08, 0xab, 0xe9, 0xa7, 0xc2, 0x03, 0x2a, - 0xa1, 0x1f, 0x7d, 0x5b, 0x74, 0xf6, 0x4c, 0x71, 0x94, 0xd4, 0x1f, 0x27, - 0x45, 0x76, 0x99, 0xe7, 0xb3, 0xc4, 0xac, 0x2c, 0x7d, 0x59, 0xd2, 0x5b, - 0x55, 0x97, 0x8b, 0xd8, 0x11, 0x22, 0xbf, 0x1d, 0x30, 0x26, 0xcf, 0x62, - 0x8e, 0x7a, 0x2b, 0x2a, 0x1b, 0xfc, 0xf3, 0xf6, 0xd5, 0xc6, 0xc5, 0x0b, - 0x8d, 0xb2, 0x82, 0x0b, 0x27, 0xf8, 0xee, 0xed, 0xab, 0xdd, 0xf6, 0x26, - 0x05, 0xcb, 0x36, 0xab, 0x6a, 0xaa, 0xfb, 0x20, 0xa5, 0x9b, 0x21, 0x6f, - 0x9c, 0xac, 0xf6, 0x36, 0xa4, 0xf1, 0x00, 0xb4, 0x21, 0xb3, 0x1f, 0x1e, - 0xbc, 0xf8, 0xfe, 0x30, 0x86, 0x3f, 0x4f, 0xf7, 0xe3, 0xfd, 0xc3, 0xd3, - 0x9d, 0x27, 0x4f, 0xe3, 0x83, 0x83, 0xd7, 0xcf, 0x57, 0xa4, 0x8f, 0x7a, - 0x5a, 0x5d, 0x6e, 0x0f, 0x1e, 0xf5, 0xf9, 0xaf, 0xdb, 0x8f, 0xcc, 0xf0, - 0x4c, 0x27, 0x9c, 0x95, 0xa2, 0x3b, 0xe2, 0x12, 0x4b, 0x31, 0x23, 0x06, - 0x9f, 0x8e, 0xe3, 0xaa, 0xf2, 0x92, 0xe7, 0x11, 0xcd, 0x83, 0xd3, 0x5f, - 0x0f, 0xa5, 0xb0, 0x84, 0x54, 0x82, 0x38, 0xcb, 0x09, 0x80, 0x43, 0x5f, - 0x26, 0xb2, 0x30, 0xde, 0x20, 0x93, 0xb2, 0xde, 0x0f, 0x44, 0xbd, 0x12, - 0x11, 0x6d, 0x7f, 0x71, 0x1d, 0x5a, 0x18, 0xe0, 0x2e, 0x4a, 0x83, 0x09, - 0x35, 0x2e, 0x1a, 0x78, 0x12, 0x41, 0x27, 0x50, 0x63, 0xd9, 0xd1, 0xad, - 0x92, 0x81, 0x6e, 0xef, 0x04, 0x6a, 0x0c, 0xbe, 0xf2, 0xb9, 0x36, 0x97, - 0x56, 0xad, 0x92, 0x68, 0xea, 0xbc, 0xdc, 0x2c, 0x0f, 0x7a, 0xda, 0xca, - 0x49, 0x30, 0x8f, 0x85, 0xd3, 0xd6, 0xd4, 0xeb, 0x99, 0x44, 0xf6, 0x49, - 0xeb, 0xff, 0x53, 0xf0, 0x2c, 0x03, 0x20, 0x68, 0xb2, 0x3e, 0xab, 0x65, - 0x40, 0x4d, 0x6c, 0x0c, 0x34, 0xc3, 0xd2, 0x88, 0x44, 0xc6, 0x13, 0xb8, - 0x08, 0x67, 0xde, 0x96, 0xbd, 0xd5, 0xa9, 0x25, 0x43, 0xd4, 0xc0, 0x0e, - 0x6a, 0xf9, 0x0e, 0x1b, 0xf9, 0x54, 0x06, 0x44, 0x68, 0xf5, 0x0c, 0x31, - 0x51, 0xb7, 0x31, 0xfd, 0x55, 0x59, 0x72, 0x14, 0xf7, 0x9e, 0x85, 0x48, - 0x24, 0xb9, 0x48, 0x67, 0x99, 0xd4, 0xa6, 0x02, 0x9f, 0xf2, 0xe7, 0x78, - 0xa4, 0x19, 0x21, 0x27, 0x26, 0xbe, 0x52, 0x92, 0x26, 0xa5, 0x66, 0xf1, - 0x27, 0xd7, 0x26, 0x8f, 0xb3, 0x85, 0x38, 0xb8, 0x5e, 0xd5, 0xd9, 0x74, - 0xba, 0xe1, 0xec, 0xe8, 0x5f, 0x22, 0xc6, 0x29, 0xf2, 0xb5, 0x88, 0x09, - 0x16, 0xd2, 0x49, 0x99, 0x92, 0x02, 0x95, 0x92, 0x4f, 0xd6, 0xee, 0x57, - 0x38, 0x44, 0x10, 0xae, 0x14, 0xea, 0xf2, 0x30, 0x2f, 0x72, 0x1b, 0xf7, - 0xf4, 0xd5, 0x0f, 0xc5, 0x88, 0x63, 0x6c, 0xfb, 0x54, 0xe0, 0x3b, 0x73, - 0x81, 0x73, 0x0c, 0x5c, 0x57, 0xbd, 0xa0, 0x72, 0x43, 0x03, 0xe6, 0x71, - 0xc7, 0x7d, 0x05, 0x03, 0x97, 0x7a, 0x05, 0x60, 0x35, 0xc4, 0x92, 0xef, - 0x6b, 0x24, 0x18, 0x59, 0xba, 0xbc, 0xef, 0x54, 0xf1, 0x25, 0x2b, 0xb8, - 0xf5, 0xd5, 0x5d, 0x55, 0x3a, 0x77, 0x70, 0x8c, 0xf8, 0xaf, 0x92, 0x29, - 0x3e, 0xc9, 0xce, 0xc3, 0x19, 0x44, 0x5a, 0xa6, 0x86, 0x8a, 0x29, 0x15, - 0xf5, 0x8b, 0x41, 0x41, 0x4a, 0x6b, 0x22, 0x29, 0x63, 0xea, 0xc1, 0xe0, - 0xfa, 0x14, 0x09, 0x21, 0x72, 0x71, 0x96, 0x27, 0x35, 0xf3, 0xd4, 0x7d, - 0x1c, 0x2b, 0x78, 0x4c, 0xae, 0x38, 0x0e, 0x4f, 0xa3, 0xe3, 0xed, 0x63, - 0xc2, 0xaa, 0x9c, 0x7b, 0x86, 0xb1, 0xb9, 0xf6, 0xcd, 0x58, 0xd2, 0x73, - 0xc0, 0xdb, 0x5c, 0x83, 0x86, 0x20, 0xe4, 0x9a, 0x95, 0x2e, 0xae, 0xb4, - 0x6f, 0x73, 0x14, 0x4e, 0x1e, 0x0a, 0x95, 0x98, 0x79, 0xd7, 0x48, 0xeb, - 0xdc, 0xfa, 0x0e, 0x0a, 0x2a, 0x36, 0x10, 0x40, 0xfc, 0x57, 0xaa, 0xd1, - 0xef, 0x33, 0x4a, 0xaa, 0xb1, 0xfc, 0x04, 0x1e, 0xac, 0xd1, 0x78, 0xc1, - 0x28, 0x94, 0xc8, 0xf3, 0x2c, 0x50, 0x35, 0x87, 0x78, 0xf9, 0x07, 0xc4, - 0xca, 0x86, 0x9a, 0x00, 0x64, 0x63, 0x16, 0x72, 0x70, 0x41, 0xa7, 0xa4, - 0x83, 0x86, 0x9d, 0xe5, 0x19, 0xb5, 0x15, 0x11, 0x94, 0x74, 0x06, 0x7d, - 0xd0, 0x80, 0x6d, 0x55, 0x48, 0xad, 0x23, 0xc1, 0xb9, 0x62, 0xd5, 0x3e, - 0xad, 0xb1, 0x7d, 0x57, 0x0d, 0x02, 0x7a, 0xc3, 0x43, 0x82, 0x6d, 0x17, - 0x14, 0xdd, 0xa0, 0xf2, 0xb3, 0x4a, 0xec, 0x66, 0x06, 0x56, 0x17, 0x00, - 0xa2, 0xa0, 0x95, 0x20, 0xf6, 0x2e, 0x4f, 0x01, 0xb7, 0xac, 0xb5, 0x2a, - 0x59, 0x87, 0x67, 0xc8, 0x90, 0xd5, 0xce, 0x68, 0x08, 0xce, 0x02, 0x14, - 0x15, 0xc1, 0x9c, 0x72, 0x38, 0x68, 0x96, 0xda, 0x07, 0x6c, 0xf8, 0xd5, - 0x9e, 0x21, 0xe1, 0xd7, 0x30, 0x8c, 0x95, 0xd6, 0xc4, 0x33, 0xf2, 0xed, - 0xfa, 0x6e, 0x1b, 0x83, 0x8b, 0xac, 0x2e, 0x7b, 0xc4, 0xd1, 0xfa, 0x57, - 0x1b, 0xe4, 0x0e, 0xf5, 0x69, 0x0b, 0x4c, 0xfc, 0x69, 0xa1, 0xb8, 0x13, - 0x06, 0xc0, 0xbe, 0x35, 0x9c, 0xc0, 0xd9, 0xaf, 0x63, 0x54, 0xfe, 0x87, - 0x20, 0xd0, 0x3d, 0xd2, 0x9f, 0xb1, 0x8e, 0xc4, 0xad, 0x66, 0x31, 0xf7, - 0xdb, 0xfc, 0x08, 0xad, 0x25, 0xe3, 0x08, 0xdb, 0x8d, 0x7e, 0xfe, 0xb9, - 0x1f, 0xfd, 0xdc, 0x83, 0xff, 0x01, 0x67, 0xfd, 0x19, 0x68, 0xf4, 0x67, - 0x06, 0x1b, 0xfa, 0xf9, 0x12, 0x7d, 0x56, 0x06, 0x43, 0x5c, 0xfc, 0x02, - 0x7e, 0x1c, 0xdb, 0xba, 0x8d, 0xb9, 0xd5, 0xc0, 0x0d, 0xc1, 0x65, 0xbe, - 0x2b, 0x58, 0x3a, 0x98, 0x17, 0x79, 0xcc, 0xf8, 0xe8, 0xb0, 0x91, 0x8b, - 0x59, 0x2e, 0x4e, 0x16, 0xa6, 0x65, 0x6e, 0x94, 0x82, 0x5c, 0x7f, 0xed, - 0x0f, 0x6b, 0x51, 0xf7, 0x79, 0xf7, 0x59, 0x06, 0xea, 0xe3, 0x0d, 0xb0, - 0x10, 0x2e, 0xa0, 0xf3, 0xa5, 0xfc, 0x31, 0x67, 0xe1, 0x32, 0xcc, 0x66, - 0xe1, 0xf8, 0xbf, 0xe6, 0x28, 0x87, 0x2f, 0xae, 0x2b, 0x54, 0x1a, 0xb4, - 0x55, 0x8b, 0x8a, 0x57, 0x5c, 0x14, 0xa5, 0x94, 0x44, 0xfb, 0x7e, 0xc5, - 0x1d, 0x26, 0x1a, 0xeb, 0x12, 0xa4, 0xe6, 0x4e, 0x21, 0x4c, 0x80, 0x78, - 0x29, 0x27, 0x80, 0xf2, 0x00, 0xb6, 0xb7, 0x30, 0x23, 0xe7, 0x3c, 0x11, - 0x64, 0xad, 0x75, 0x2a, 0xd6, 0xf3, 0xb2, 0x5e, 0x77, 0x42, 0x59, 0xaf, - 0x86, 0x01, 0xd7, 0x9a, 0x70, 0xc9, 0x98, 0x13, 0x30, 0x4b, 0x83, 0x7b, - 0xc3, 0x97, 0xaf, 0xc5, 0x6b, 0xf8, 0x63, 0x5b, 0x0a, 0x5c, 0xfa, 0x35, - 0xf9, 0xca, 0xb2, 0x9c, 0x8a, 0x3c, 0x6f, 0x4a, 0xc7, 0x1b, 0x5f, 0xb8, - 0x25, 0x80, 0xb6, 0x39, 0x05, 0x42, 0xbb, 0xc9, 0x16, 0x35, 0x98, 0x50, - 0x9f, 0x7c, 0x52, 0x6d, 0xb5, 0x3a, 0xd5, 0x44, 0x24, 0x63, 0x6f, 0x61, - 0x3c, 0xcc, 0x86, 0xc5, 0x63, 0x02, 0x05, 0xe7, 0xb3, 0x60, 0x25, 0x8e, - 0x52, 0xd5, 0xae, 0x11, 0x36, 0x6a, 0x3e, 0x6d, 0x27, 0xa1, 0x6a, 0x09, - 0x9a, 0x36, 0xb9, 0xa1, 0x5c, 0x6d, 0x4e, 0xc5, 0xe6, 0x56, 0x4b, 0xa7, - 0x05, 0x63, 0x6d, 0x53, 0xd2, 0x1b, 0x25, 0x26, 0x46, 0x0a, 0x40, 0x15, - 0xf0, 0x93, 0xb5, 0xdb, 0xab, 0xb0, 0xbd, 0xd4, 0x04, 0x29, 0x6f, 0x98, - 0x6e, 0xbd, 0xf6, 0xc3, 0xd1, 0x1f, 0xe0, 0x0b, 0x62, 0x95, 0xdd, 0x91, - 0x98, 0xd2, 0xb1, 0xff, 0x54, 0x6d, 0x34, 0x1a, 0xa1, 0xd0, 0xf6, 0x23, - 0x32, 0xad, 0x23, 0xd3, 0xdb, 0x5e, 0x76, 0x85, 0xe3, 0x82, 0xa7, 0x70, - 0x51, 0xc8, 0x2d, 0xa5, 0x93, 0x48, 0xe4, 0x59, 0x7c, 0x65, 0x9c, 0x9c, - 0xa3, 0x6e, 0xf8, 0x15, 0x82, 0x5a, 0x62, 0xee, 0x3a, 0xfe, 0x6b, 0x73, - 0x7b, 0xb0, 0x15, 0xfa, 0x02, 0xdc, 0x75, 0xc1, 0xef, 0x93, 0x30, 0x15, - 0xee, 0x6d, 0x5d, 0x14, 0x37, 0xaf, 0xd1, 0x07, 0x22, 0xf2, 0x56, 0x13, - 0x1f, 0xb7, 0x7f, 0x42, 0x1e, 0x2f, 0x98, 0xe5, 0x2b, 0xd3, 0x64, 0x24, - 0x2f, 0x08, 0x00, 0x10, 0x74, 0xb4, 0xe9, 0xb4, 0xd1, 0xe4, 0xa5, 0xd7, - 0xb1, 0xdf, 0x39, 0x55, 0x25, 0xa6, 0xed, 0x6d, 0x6f, 0x03, 0x19, 0x52, - 0xb6, 0xbf, 0x81, 0x68, 0x96, 0x0e, 0x24, 0x44, 0x21, 0xeb, 0x52, 0xa0, - 0x12, 0xff, 0x93, 0xeb, 0x44, 0x2a, 0xc5, 0xef, 0x47, 0xd9, 0xb6, 0xc1, - 0xc5, 0xcc, 0x55, 0x20, 0x11, 0xce, 0x26, 0x19, 0x3b, 0xfc, 0xc1, 0xa6, - 0xea, 0x66, 0x14, 0x5b, 0x23, 0xd5, 0x06, 0xee, 0x03, 0x21, 0x99, 0x48, - 0xcd, 0x01, 0x5c, 0x58, 0x3f, 0xc2, 0x24, 0xd7, 0x47, 0xe1, 0x1f, 0x48, - 0x79, 0x0a, 0x8d, 0x8f, 0x79, 0x0c, 0xb8, 0x22, 0x89, 0xa9, 0xf1, 0xf5, - 0xf3, 0x56, 0xa7, 0xc2, 0x60, 0x3e, 0xa5, 0xba, 0x05, 0xc5, 0x9a, 0x21, - 0x8d, 0xd9, 0x23, 0xf3, 0xed, 0x8d, 0xa8, 0xf7, 0xbf, 0x28, 0x1d, 0x99, - 0x81, 0xd0, 0x71, 0x97, 0xca, 0x91, 0x47, 0x1e, 0x3b, 0xf8, 0xd8, 0x8f, - 0x2f, 0xbe, 0x7b, 0x7f, 0x70, 0xfc, 0xe6, 0xe5, 0xd1, 0x77, 0xfc, 0xb0, - 0x3c, 0x1b, 0xad, 0xbb, 0x85, 0x4b, 0x98, 0xb7, 0xdf, 0x7e, 0xfb, 0x11, - 0xbe, 0xbd, 0x74, 0xfc, 0xc7, 0x1b, 0x9a, 0x9e, 0xb8, 0x1b, 0xf5, 0xa8, - 0x6f, 0xc0, 0xc9, 0xdb, 0x63, 0x84, 0x47, 0xfe, 0xe3, 0xcf, 0x5d, 0xaf, - 0x3c, 0x69, 0xbc, 0xb2, 0x7f, 0x72, 0xf2, 0x62, 0xff, 0x6c, 0xbf, 0xfb, - 0xf1, 0xa7, 0xdd, 0x33, 0xec, 0xcf, 0x11, 0x9a, 0x9a, 0xb3, 0x48, 0x5e, - 0x00, 0xf1, 0x75, 0x8e, 0xf1, 0x6c, 0x03, 0x18, 0x63, 0x1e, 0x9b, 0x71, - 0xd0, 0xfb, 0x74, 0x9e, 0xd6, 0xf3, 0xab, 0x45, 0x36, 0xe6, 0xa2, 0x7d, - 0xb1, 0x82, 0x2e, 0x0a, 0x37, 0x71, 0xb9, 0x3d, 0xcc, 0xf3, 0x0d, 0x90, - 0x43, 0xba, 0x9a, 0xbe, 0xa4, 0x7b, 0xe3, 0xbb, 0x64, 0x55, 0xc8, 0xe4, - 0x5a, 0x7b, 0xcb, 0x1c, 0x56, 0x05, 0x7a, 0xe4, 0xb6, 0x8e, 0x68, 0x60, - 0xd3, 0x62, 0x78, 0x68, 0x58, 0x5c, 0x22, 0xff, 0x45, 0xce, 0x47, 0x84, - 0x2b, 0x91, 0xd7, 0xb4, 0x9d, 0x4f, 0xad, 0x61, 0x80, 0x29, 0x5c, 0x1d, - 0x6f, 0xb8, 0xd1, 0xa2, 0xd6, 0x4b, 0x40, 0x14, 0x34, 0x0e, 0x08, 0x51, - 0x53, 0x76, 0x82, 0x8a, 0x9b, 0x0a, 0x24, 0x36, 0x99, 0x95, 0x40, 0x51, - 0xa0, 0xaa, 0x9b, 0x76, 0x37, 0x32, 0x5f, 0x15, 0xc0, 0xad, 0x78, 0xcf, - 0xbf, 0xea, 0x47, 0x9a, 0xf7, 0x6b, 0x10, 0x89, 0x29, 0x4e, 0x4d, 0xa5, - 0x06, 0xc7, 0x98, 0xae, 0x6d, 0x12, 0xd0, 0xa5, 0xc9, 0x5e, 0x38, 0x29, - 0xd7, 0xbd, 0x21, 0x32, 0x34, 0xc5, 0x19, 0x7c, 0x90, 0x09, 0x57, 0x76, - 0x3e, 0x1c, 0xce, 0x84, 0xab, 0x40, 0xac, 0x9c, 0x93, 0xea, 0xb2, 0xa5, - 0xa6, 0x77, 0x45, 0x00, 0x27, 0x60, 0x89, 0xa8, 0xe3, 0xef, 0x4d, 0x08, - 0x58, 0x95, 0x02, 0xf3, 0x8c, 0xd4, 0xe9, 0xf9, 0x52, 0x5f, 0x27, 0x1f, - 0xb3, 0xd9, 0x62, 0x46, 0x5f, 0x85, 0x1f, 0x25, 0x8f, 0x49, 0x1c, 0x9d, - 0xe2, 0x48, 0x92, 0x0b, 0x89, 0x0b, 0x5f, 0xa3, 0xde, 0x42, 0xb6, 0x0f, - 0x9e, 0x2f, 0x34, 0x41, 0xc5, 0x18, 0xd8, 0x2a, 0x27, 0xd2, 0xab, 0x28, - 0x88, 0x5c, 0xb5, 0xbc, 0xb1, 0xa0, 0x56, 0x25, 0x98, 0x3b, 0x06, 0x9f, - 0xa3, 0xc9, 0xa1, 0x6e, 0xeb, 0x07, 0xa3, 0x21, 0x8c, 0x6a, 0xd3, 0x49, - 0xcd, 0xa9, 0x74, 0x48, 0xcb, 0xac, 0x18, 0xb3, 0x2c, 0xe7, 0x5a, 0x66, - 0xe0, 0xd5, 0x1c, 0x39, 0x24, 0xef, 0x05, 0x75, 0x68, 0x09, 0x27, 0x7d, - 0xa9, 0x05, 0x30, 0x42, 0xa4, 0xaa, 0x0a, 0xdd, 0x1a, 0xd9, 0x4c, 0x61, - 0xeb, 0x2a, 0xe5, 0xb1, 0xce, 0xcf, 0x22, 0x81, 0xdb, 0xf7, 0x3f, 0x75, - 0xe8, 0x64, 0x2a, 0x49, 0xbe, 0x04, 0x68, 0xe1, 0x20, 0x3c, 0x06, 0x1b, - 0xa8, 0x73, 0xe9, 0x28, 0xc6, 0x0c, 0x82, 0x15, 0x52, 0x63, 0x83, 0x0b, - 0xa9, 0xe8, 0xf6, 0xf3, 0x7a, 0x29, 0x58, 0x45, 0x62, 0x81, 0x2f, 0x3f, - 0xbb, 0x7d, 0x86, 0xa9, 0x49, 0xc7, 0x60, 0xf9, 0x6b, 0x61, 0xe3, 0x82, - 0x79, 0x4c, 0xed, 0x3d, 0x26, 0xf9, 0x00, 0xb7, 0x03, 0x0b, 0xaa, 0x19, - 0x47, 0x9f, 0x20, 0x6d, 0x6c, 0x91, 0xee, 0x8b, 0x37, 0xa7, 0x82, 0xa6, - 0x1d, 0x00, 0xaa, 0x10, 0x17, 0x0b, 0xbc, 0x78, 0x86, 0x6d, 0x52, 0x31, - 0x11, 0x0a, 0x3e, 0xe5, 0x6f, 0xef, 0x8e, 0x0e, 0x9c, 0x8e, 0x89, 0x74, - 0xc5, 0x11, 0x08, 0xa4, 0x23, 0x79, 0xb4, 0x45, 0x96, 0xb7, 0xc3, 0x43, - 0x8a, 0x02, 0x51, 0xe2, 0x5b, 0x01, 0x22, 0x55, 0x4b, 0xee, 0x5c, 0x63, - 0x1d, 0x3b, 0x5b, 0xc1, 0x6b, 0x77, 0xbb, 0x97, 0x1f, 0x0d, 0xb6, 0x1f, - 0xaf, 0x76, 0x6b, 0xa9, 0xe8, 0x74, 0x96, 0x7c, 0xa4, 0x21, 0x82, 0xd7, - 0xb6, 0x88, 0xf6, 0xbe, 0x3f, 0x3e, 0x3d, 0xdb, 0xde, 0x3d, 0x39, 0x7e, - 0x0b, 0x7f, 0xe2, 0xdf, 0x77, 0xe8, 0xef, 0x3b, 0x5f, 0xb7, 0x87, 0x7d, - 0x49, 0x2d, 0x65, 0x23, 0x03, 0xb2, 0xc2, 0x4d, 0x24, 0x70, 0xef, 0xc4, - 0x17, 0xe0, 0x0c, 0x84, 0xf1, 0xd1, 0x0c, 0x51, 0xc9, 0x46, 0x06, 0xbe, - 0xab, 0x4d, 0xcc, 0xce, 0x54, 0x5a, 0x45, 0x30, 0x88, 0xfc, 0x5a, 0x85, - 0xac, 0x56, 0x95, 0x5f, 0xd0, 0x5d, 0x15, 0x37, 0xb6, 0x4d, 0x39, 0xb5, - 0x8b, 0xab, 0xc2, 0xce, 0xb7, 0x7e, 0x44, 0xc9, 0xe5, 0xcd, 0x5f, 0x8d, - 0xa6, 0x60, 0x01, 0xa7, 0x98, 0xe5, 0x39, 0x4e, 0x85, 0xa7, 0x4e, 0xfd, - 0x66, 0x03, 0xf8, 0x04, 0x41, 0xb6, 0x94, 0x8c, 0xf7, 0xdf, 0x5a, 0x97, - 0xd6, 0x24, 0x92, 0xb4, 0x85, 0xd5, 0x24, 0x04, 0xb1, 0x2e, 0xdb, 0x91, - 0xa7, 0x5e, 0x11, 0x32, 0x96, 0x5b, 0x46, 0x8d, 0xc8, 0x10, 0xe1, 0xf3, - 0x13, 0x2a, 0xc5, 0x9b, 0xe3, 0xb3, 0x28, 0x21, 0xdf, 0x9d, 0x88, 0xec, - 0xaa, 0x46, 0x29, 0xb6, 0x29, 0xbd, 0x1e, 0x08, 0x79, 0x20, 0x10, 0x43, - 0x21, 0xb9, 0x02, 0x97, 0x63, 0x13, 0xc3, 0x42, 0x9c, 0x45, 0x7f, 0xfa, - 0xe6, 0xa8, 0xdf, 0x08, 0x39, 0xbb, 0x79, 0xa9, 0x1b, 0x78, 0x8b, 0x04, - 0x27, 0xaf, 0xbd, 0x77, 0x8e, 0xde, 0x61, 0xba, 0x56, 0x0c, 0xa2, 0x1e, - 0x1d, 0x68, 0x8f, 0xb3, 0x50, 0x7b, 0x74, 0xae, 0x3d, 0xae, 0xb0, 0xa3, - 0xa4, 0x7b, 0xfa, 0x56, 0xec, 0xb4, 0x7a, 0xed, 0x83, 0xa3, 0x91, 0x33, - 0x55, 0x01, 0xf4, 0x7a, 0x68, 0x9e, 0xe3, 0x67, 0xd1, 0x27, 0xf5, 0x64, - 0xe0, 0x1d, 0x1e, 0x98, 0xc6, 0x85, 0xbf, 0xe3, 0xb0, 0x44, 0xb4, 0xc3, - 0x50, 0xae, 0x91, 0x4c, 0xe4, 0x0c, 0x1e, 0x99, 0xe1, 0x61, 0x6d, 0x94, - 0x60, 0x20, 0xe5, 0xe4, 0x44, 0x1d, 0x6b, 0xd4, 0x2f, 0x24, 0x3b, 0xc7, - 0x94, 0x2e, 0x2f, 0x55, 0xd2, 0x2c, 0xa4, 0x4d, 0xe1, 0xfb, 0x60, 0x00, - 0xc0, 0x6f, 0x7b, 0x8e, 0x73, 0xa4, 0xf6, 0x6a, 0xf5, 0xa8, 0x2e, 0xa6, - 0x54, 0xfb, 0x5e, 0x97, 0x83, 0x42, 0xa5, 0x0e, 0x18, 0x9b, 0x15, 0x5b, - 0xc1, 0xb5, 0x80, 0xbb, 0x92, 0xbd, 0xac, 0xc8, 0x28, 0x7a, 0x91, 0x10, - 0x50, 0x54, 0xdb, 0x35, 0xf0, 0xd6, 0x72, 0xf6, 0x47, 0x7b, 0x38, 0xee, - 0x90, 0x89, 0x0c, 0x5e, 0x0a, 0xcb, 0x7b, 0xdb, 0x3b, 0xcf, 0x06, 0x5b, - 0xf0, 0xff, 0xe0, 0x5c, 0xc4, 0xab, 0x47, 0xdd, 0x08, 0x4d, 0x9f, 0x61, - 0xfb, 0x64, 0xfa, 0xd1, 0x73, 0x09, 0x13, 0xfb, 0x28, 0xca, 0xf3, 0x5e, - 0x00, 0xf5, 0xca, 0xe1, 0x0f, 0x0f, 0xaa, 0x90, 0xe8, 0x24, 0x0e, 0x37, - 0xdb, 0x7d, 0xfc, 0xf8, 0xd1, 0xae, 0xfe, 0x1b, 0xae, 0xd2, 0xee, 0x73, - 0xf8, 0xc1, 0xa7, 0x80, 0x62, 0x7d, 0x8f, 0x4c, 0x90, 0x83, 0x29, 0x0e, - 0x0b, 0x6c, 0xe3, 0x92, 0x44, 0x7b, 0xc5, 0x64, 0x02, 0xec, 0xbf, 0xad, - 0xad, 0x1c, 0xc8, 0x23, 0x9b, 0x6f, 0x09, 0x15, 0x96, 0x38, 0xa0, 0x82, - 0x05, 0x88, 0x03, 0xda, 0x36, 0x41, 0xaf, 0x1d, 0x8d, 0x81, 0x87, 0x1b, - 0x04, 0xe4, 0xa5, 0xfb, 0x7b, 0xcd, 0xa4, 0x85, 0xef, 0x82, 0xfb, 0xcf, - 0x9d, 0x33, 0x91, 0xf1, 0xb4, 0xda, 0x4e, 0x45, 0xd5, 0x87, 0x6c, 0x3e, - 0xf7, 0x93, 0xcf, 0xa9, 0x29, 0x27, 0x5d, 0x02, 0xf2, 0xa1, 0xf0, 0x1d, - 0xa0, 0xd4, 0x2e, 0xbe, 0x1a, 0x8a, 0x1b, 0xcd, 0xf0, 0x1f, 0xbc, 0xdc, - 0x61, 0x3a, 0x41, 0x67, 0x50, 0x16, 0xe0, 0x2b, 0x2e, 0xd0, 0xbb, 0x00, - 0xf0, 0x8c, 0x11, 0xd4, 0x9d, 0x61, 0x7f, 0xc9, 0xa9, 0x6a, 0x11, 0x6a, - 0x15, 0x08, 0x4a, 0x25, 0xe8, 0xcb, 0xb3, 0x93, 0x30, 0xec, 0xbd, 0x92, - 0xc8, 0xe9, 0xd1, 0x7f, 0x1d, 0x6a, 0xbe, 0x8b, 0x22, 0xa9, 0x90, 0x3b, - 0x23, 0x00, 0x77, 0x80, 0x9d, 0x10, 0x0f, 0xe0, 0x98, 0x28, 0x25, 0xa5, - 0x46, 0x78, 0x6f, 0xcd, 0x8e, 0x6d, 0x06, 0xd5, 0xc8, 0xd2, 0x61, 0x50, - 0x66, 0xd0, 0x35, 0x36, 0x09, 0xa2, 0xb4, 0xf0, 0x4a, 0x7a, 0xe8, 0xe4, - 0x1a, 0x18, 0x30, 0xa6, 0xff, 0x77, 0xab, 0xa2, 0x55, 0x9c, 0x1a, 0x9b, - 0x59, 0x4e, 0x8d, 0xd1, 0x08, 0x39, 0xce, 0x47, 0x26, 0x12, 0x50, 0x34, - 0x86, 0x04, 0x5f, 0x74, 0x80, 0x87, 0x1c, 0xf4, 0xa3, 0x16, 0x89, 0x49, - 0xff, 0x89, 0x9b, 0x33, 0x2b, 0xee, 0x53, 0x07, 0x39, 0x00, 0x2d, 0xf0, - 0xd6, 0x3a, 0xc7, 0x41, 0xf4, 0x78, 0x6b, 0x6b, 0xb5, 0xcb, 0x66, 0x01, - 0x7f, 0x9c, 0xdb, 0x35, 0xe2, 0xdb, 0x55, 0x7c, 0xc8, 0xd2, 0xf8, 0xd7, - 0xa4, 0xe4, 0x78, 0x4e, 0x27, 0x34, 0xe3, 0x86, 0xf1, 0x2c, 0x22, 0xd8, - 0x3d, 0xa5, 0x56, 0x10, 0xa5, 0x1a, 0x44, 0x79, 0x3d, 0x7b, 0xf6, 0x97, - 0x52, 0x5b, 0x7b, 0x1e, 0xdc, 0xd3, 0x02, 0x08, 0x45, 0x91, 0x32, 0x97, - 0x0c, 0x8e, 0xa2, 0x45, 0xf6, 0x1a, 0x60, 0x42, 0x8d, 0xe9, 0xe9, 0x85, - 0xc3, 0xc8, 0x28, 0xd2, 0x8c, 0xd5, 0x53, 0x2a, 0xb2, 0x3c, 0x66, 0xa4, - 0x42, 0x79, 0x90, 0xb2, 0x7e, 0x10, 0x32, 0x5b, 0x2e, 0x07, 0xd3, 0x0c, - 0xbb, 0x5c, 0x6a, 0xc5, 0x93, 0xa1, 0x4b, 0x47, 0x73, 0x06, 0xbb, 0xe5, - 0x0c, 0xa4, 0xe1, 0x98, 0x99, 0x1b, 0xef, 0xf7, 0x87, 0xbc, 0xb8, 0xca, - 0x31, 0xa8, 0x28, 0x7d, 0xc1, 0x2a, 0x5a, 0x64, 0x9d, 0x4a, 0x0a, 0x89, - 0x38, 0x5d, 0xda, 0x97, 0x5f, 0x1c, 0xcd, 0xd6, 0x7b, 0xf9, 0x26, 0xad, - 0x25, 0x9f, 0x95, 0x97, 0xab, 0x85, 0xe7, 0x54, 0xbc, 0x6e, 0xb2, 0xf4, - 0x2a, 0x69, 0xba, 0xd8, 0x09, 0x6b, 0xd9, 0xee, 0x96, 0xda, 0x87, 0xcb, - 0xd8, 0xd3, 0xd0, 0x8c, 0x5d, 0xb4, 0x2c, 0x51, 0x5a, 0xa1, 0xb5, 0x3f, - 0x36, 0x74, 0x2f, 0x9c, 0x42, 0x7d, 0x2b, 0x62, 0x39, 0x1a, 0xd9, 0xa6, - 0x98, 0x86, 0x92, 0x45, 0xee, 0x83, 0x85, 0xa7, 0x55, 0x51, 0xe3, 0xaf, - 0x37, 0xcd, 0x9d, 0xa4, 0x48, 0xa0, 0x49, 0x31, 0x64, 0x6f, 0xf9, 0x99, - 0x06, 0x08, 0xf9, 0xb9, 0xbe, 0x66, 0xd8, 0xb7, 0xc5, 0xde, 0xd0, 0xae, - 0x41, 0xc1, 0xed, 0xa3, 0x6f, 0x0b, 0x2c, 0x7c, 0x95, 0x70, 0x9d, 0xdb, - 0x16, 0xd9, 0xf8, 0x31, 0x82, 0x95, 0xf8, 0xa4, 0x2f, 0x06, 0xfa, 0x20, - 0x45, 0xd4, 0x76, 0x24, 0xd1, 0x88, 0x89, 0x4c, 0x26, 0x39, 0xb0, 0x6c, - 0x01, 0x13, 0x32, 0x5a, 0x67, 0x61, 0x7f, 0x39, 0x36, 0xc0, 0x8a, 0xf2, - 0x39, 0x4c, 0x22, 0x81, 0xc5, 0xf3, 0x05, 0xc5, 0x09, 0x3d, 0x34, 0x25, - 0x2e, 0x98, 0xae, 0xbb, 0x82, 0x23, 0x32, 0x0c, 0x9e, 0x83, 0x6d, 0x09, - 0xaf, 0xe4, 0xa6, 0xfd, 0xc1, 0x6a, 0x42, 0xed, 0x2b, 0x94, 0xfd, 0x5f, - 0x5d, 0x14, 0x5e, 0xd4, 0x88, 0x97, 0x6d, 0x91, 0xf5, 0x9c, 0x2e, 0x0b, - 0xd4, 0xc8, 0x13, 0x83, 0x69, 0x78, 0x83, 0x38, 0xe2, 0x6e, 0x02, 0xee, - 0x84, 0xf4, 0x5c, 0xa2, 0xa7, 0x24, 0x08, 0x53, 0xe8, 0x82, 0x0b, 0x73, - 0x6f, 0xb8, 0x04, 0x4b, 0x96, 0x49, 0xe2, 0x49, 0x83, 0x0e, 0xed, 0xa9, - 0x6d, 0x92, 0xf3, 0x43, 0x04, 0xcf, 0xbe, 0x82, 0xcb, 0x0c, 0x01, 0x1f, - 0xe1, 0x18, 0x41, 0x5b, 0xc3, 0x48, 0x13, 0xdd, 0x11, 0xc4, 0x9c, 0x93, - 0xf6, 0x1b, 0x78, 0x90, 0x06, 0x15, 0x12, 0x38, 0xca, 0x05, 0x2a, 0x60, - 0x59, 0xbd, 0x08, 0xde, 0xee, 0xa0, 0x35, 0x1a, 0x20, 0x6d, 0x5b, 0x70, - 0xf4, 0x3b, 0x5a, 0xa3, 0x23, 0x4e, 0x5a, 0x8c, 0xc9, 0x53, 0xdf, 0xe5, - 0x01, 0xba, 0xdd, 0x9b, 0xf1, 0x90, 0x6e, 0x54, 0x0c, 0x8b, 0xad, 0x56, - 0x4c, 0xcf, 0x73, 0xe8, 0xd4, 0x11, 0x18, 0x2e, 0xf5, 0xee, 0x21, 0x0f, - 0xfc, 0x3f, 0x37, 0x48, 0x8c, 0x93, 0x44, 0xf2, 0x68, 0xdc, 0x16, 0x1b, - 0x04, 0x38, 0x25, 0x5a, 0x87, 0xc2, 0x30, 0xf0, 0x98, 0xa2, 0xff, 0x81, - 0xd8, 0x0f, 0x64, 0x8a, 0x52, 0x66, 0x08, 0x6c, 0xe8, 0xf4, 0xda, 0x8e, - 0xe8, 0x00, 0x42, 0x99, 0xc6, 0x8f, 0x86, 0xad, 0xd8, 0x29, 0xda, 0x29, - 0xef, 0xbd, 0x53, 0x30, 0xfe, 0x78, 0x4e, 0xcc, 0x9c, 0xe7, 0x28, 0x90, - 0x54, 0x7b, 0xe1, 0xb0, 0x0a, 0x80, 0xc0, 0x7a, 0xbe, 0x9b, 0x45, 0xcb, - 0x6c, 0xba, 0x3d, 0xdc, 0x9b, 0xfd, 0xd7, 0x87, 0xdb, 0x5f, 0xfd, 0x7d, - 0xff, 0xd5, 0xbb, 0xc3, 0xed, 0xbf, 0x44, 0x11, 0xfe, 0x73, 0x87, 0xff, - 0xb9, 0xd3, 0x53, 0x73, 0x59, 0xb0, 0x14, 0x0d, 0x36, 0x82, 0x73, 0x85, - 0xdb, 0xb6, 0x0f, 0xed, 0x82, 0xa2, 0x6f, 0x65, 0x06, 0x3d, 0xd7, 0x69, - 0x8a, 0x48, 0x1f, 0x05, 0x92, 0xd1, 0xe0, 0xd6, 0xa9, 0x99, 0xb2, 0x5e, - 0x6d, 0x0c, 0x02, 0x6a, 0x8e, 0xad, 0x2a, 0x54, 0xc3, 0x3c, 0x32, 0xbe, - 0x99, 0x68, 0xbc, 0x48, 0x45, 0x65, 0x73, 0xf0, 0xb1, 0xfa, 0x12, 0x1a, - 0xf0, 0x22, 0xf1, 0xda, 0xc0, 0xa5, 0x72, 0xda, 0xb4, 0xf4, 0x39, 0xe1, - 0x02, 0x57, 0xc4, 0x3d, 0x54, 0x69, 0xd1, 0x74, 0xa4, 0x58, 0x34, 0x42, - 0xa9, 0x11, 0xa1, 0x4b, 0x07, 0x92, 0x74, 0xed, 0xab, 0xb5, 0xa8, 0xba, - 0x9e, 0x0d, 0x8b, 0xa9, 0x03, 0xc6, 0xda, 0xaa, 0x72, 0xe1, 0xca, 0x10, - 0xd3, 0x66, 0x45, 0x42, 0xb7, 0x7e, 0xa1, 0x40, 0x62, 0xa3, 0x9d, 0x9a, - 0x6d, 0xe2, 0x22, 0x86, 0xd5, 0x05, 0xfb, 0xb9, 0x58, 0xe8, 0x4a, 0xde, - 0x89, 0xb1, 0x1a, 0x3d, 0x74, 0x0f, 0xcc, 0xd9, 0x5a, 0x26, 0x07, 0x58, - 0x05, 0x72, 0x10, 0x32, 0x85, 0xf1, 0x67, 0x79, 0x00, 0x5d, 0x81, 0xdb, - 0x6c, 0x89, 0x60, 0xd3, 0x37, 0x29, 0x45, 0x03, 0xbd, 0x65, 0xd7, 0x0a, - 0xdc, 0xca, 0x79, 0x2c, 0xac, 0x28, 0xd0, 0x27, 0x93, 0x8a, 0x34, 0xf4, - 0x44, 0x43, 0x2e, 0x9c, 0xda, 0xb6, 0x7c, 0x79, 0x45, 0x78, 0xf5, 0xe2, - 0x41, 0x37, 0xb8, 0x2d, 0x25, 0xa6, 0x1e, 0x9a, 0xc3, 0xa7, 0x00, 0x1d, - 0xea, 0xd6, 0xb1, 0x87, 0xee, 0x54, 0x56, 0x8d, 0xec, 0x15, 0x0e, 0x7a, - 0x0d, 0x6c, 0x18, 0x5e, 0x95, 0x0e, 0xba, 0x89, 0x64, 0x06, 0x71, 0xce, - 0x36, 0xd6, 0x63, 0xf9, 0x15, 0xd1, 0xa0, 0x88, 0x6c, 0x48, 0x9a, 0x96, - 0x9e, 0x1a, 0xf7, 0xe3, 0x6a, 0x74, 0xd7, 0x5d, 0x12, 0x50, 0x36, 0xea, - 0x94, 0x94, 0x9e, 0x15, 0xce, 0x3a, 0xea, 0xa6, 0x9e, 0x20, 0xc3, 0xf0, - 0x85, 0x45, 0xdf, 0xab, 0xdb, 0xcc, 0x5b, 0xbd, 0x58, 0xc8, 0x71, 0x4c, - 0xaa, 0x5e, 0xb4, 0x6e, 0xaf, 0x7f, 0x44, 0x00, 0xfb, 0x1b, 0x6a, 0x98, - 0xab, 0x6a, 0xb6, 0xf9, 0xba, 0xf8, 0x2d, 0x9b, 0x4e, 0x93, 0xf0, 0x05, - 0x75, 0x15, 0xb6, 0xce, 0x95, 0xb7, 0x55, 0x27, 0x97, 0x77, 0x36, 0xd4, - 0xa6, 0x84, 0xea, 0x76, 0xb8, 0x3d, 0xea, 0x9b, 0xc2, 0x33, 0x1d, 0xf9, - 0x23, 0xd9, 0xbe, 0x74, 0x74, 0xb9, 0x86, 0xde, 0xc4, 0x69, 0xee, 0x6d, - 0xc5, 0x09, 0x65, 0x5a, 0xc0, 0x67, 0x60, 0x24, 0x9c, 0xe9, 0x0c, 0xe4, - 0xdd, 0x4b, 0xb7, 0x7d, 0x85, 0xb3, 0x57, 0xee, 0x89, 0x70, 0xa7, 0x39, - 0xa7, 0x92, 0x8f, 0xc9, 0x61, 0xec, 0x55, 0x27, 0xce, 0xa4, 0x6d, 0x43, - 0xee, 0x5e, 0x21, 0xd3, 0x0c, 0x3c, 0xaf, 0x05, 0x87, 0x98, 0x58, 0x3a, - 0xf7, 0x08, 0xc8, 0x53, 0x4e, 0xc9, 0xab, 0x47, 0xd8, 0x6a, 0xa6, 0xbd, - 0xbf, 0x05, 0x36, 0x1e, 0x91, 0xfc, 0x4c, 0xc2, 0x69, 0x42, 0x25, 0x40, - 0x5f, 0xc5, 0x34, 0x5e, 0xbb, 0x5e, 0xd2, 0xe8, 0xd6, 0x19, 0x77, 0x5a, - 0x1a, 0xfe, 0x78, 0xe1, 0x2b, 0xec, 0x22, 0x84, 0x1e, 0xcc, 0x21, 0x8f, - 0x50, 0x11, 0x29, 0x70, 0x64, 0x29, 0x01, 0x5d, 0x62, 0xd7, 0xec, 0x83, - 0xd1, 0xda, 0x3b, 0x0e, 0x1e, 0xd3, 0xff, 0xd1, 0x9f, 0x35, 0xc1, 0x03, - 0x22, 0x7b, 0x08, 0x73, 0x21, 0x50, 0x2f, 0xf5, 0xa9, 0x35, 0xb1, 0x01, - 0x60, 0x36, 0x96, 0xfc, 0xba, 0x92, 0xb1, 0x34, 0xb7, 0xe5, 0xb7, 0x48, - 0xe5, 0x71, 0x3a, 0x6a, 0x55, 0x85, 0xb0, 0x09, 0x9a, 0xa0, 0x41, 0x5b, - 0xe4, 0x4d, 0x59, 0x7e, 0xf0, 0x6e, 0x7c, 0xaf, 0xa1, 0xfd, 0x8a, 0x36, - 0x1c, 0x20, 0x8a, 0xc6, 0x14, 0x9f, 0xee, 0x6c, 0xea, 0x52, 0x7e, 0x86, - 0xf2, 0xc5, 0x9d, 0xf5, 0x04, 0x37, 0xbf, 0x05, 0x6a, 0xd0, 0x0d, 0x63, - 0x74, 0x2a, 0x3d, 0x6d, 0x15, 0x90, 0xb6, 0xf2, 0x57, 0xfc, 0xe1, 0xaf, - 0x8b, 0xfc, 0x43, 0x2c, 0x4d, 0x08, 0x63, 0xd5, 0xe8, 0x5d, 0x4f, 0x3d, - 0x89, 0xa4, 0x18, 0x24, 0x63, 0x15, 0xca, 0x26, 0x50, 0xb1, 0x06, 0xac, - 0xef, 0x57, 0xc5, 0x4f, 0xb5, 0xac, 0xbb, 0xd1, 0x3a, 0x5a, 0x72, 0x5a, - 0x38, 0xf0, 0xe5, 0xc3, 0x6e, 0x1a, 0x59, 0x94, 0xa7, 0x88, 0x74, 0x92, - 0x50, 0xc3, 0x53, 0xf4, 0x36, 0x3a, 0xe0, 0x17, 0x19, 0x1c, 0x48, 0x39, - 0xba, 0x40, 0x04, 0x2c, 0xf2, 0x6e, 0x72, 0x8e, 0x00, 0x09, 0xba, 0x90, - 0x36, 0x2c, 0x26, 0x83, 0xe8, 0x69, 0x32, 0x0c, 0x12, 0x1d, 0x0a, 0x5f, - 0xf8, 0xbd, 0x72, 0xb0, 0xc0, 0x5a, 0xc3, 0xc3, 0xa1, 0xc0, 0x6a, 0xbc, - 0x45, 0xe5, 0x6b, 0x46, 0x3b, 0xc7, 0x0b, 0xcb, 0xae, 0x29, 0x1d, 0x09, - 0xf7, 0x8d, 0x0c, 0xee, 0x90, 0x4f, 0xd9, 0x0c, 0xa7, 0x99, 0x2c, 0x56, - 0x18, 0x91, 0x57, 0x28, 0x2f, 0xdc, 0xd2, 0x34, 0xcc, 0x73, 0x98, 0x2c, - 0x05, 0x8d, 0xc9, 0x38, 0xe1, 0x42, 0x3e, 0xce, 0x66, 0x33, 0x0b, 0xe4, - 0xb4, 0x33, 0x9c, 0x1a, 0xab, 0x8a, 0x3f, 0xdd, 0xf6, 0x39, 0x8a, 0xa5, - 0xd5, 0x7e, 0x7c, 0x06, 0x52, 0x86, 0x3f, 0x70, 0x86, 0xc1, 0x8b, 0xad, - 0x67, 0x4f, 0xb6, 0x50, 0xb6, 0x62, 0xa3, 0x8c, 0x88, 0xc5, 0x4d, 0x30, - 0xff, 0x92, 0xeb, 0xb3, 0x02, 0xd1, 0xc9, 0x42, 0x7d, 0x08, 0x91, 0x22, - 0x67, 0x37, 0xa6, 0x74, 0xd1, 0x29, 0xc9, 0xbd, 0xc7, 0x59, 0x85, 0x58, - 0xe4, 0x00, 0x6a, 0x59, 0x79, 0xed, 0x31, 0x82, 0x49, 0x3d, 0x77, 0xe9, - 0x75, 0x79, 0x52, 0xb3, 0x7d, 0xae, 0x1b, 0x99, 0x42, 0x41, 0xf7, 0x57, - 0x2f, 0x4b, 0x58, 0xb2, 0x8a, 0x9b, 0xbc, 0xd2, 0xce, 0xc2, 0x0c, 0x41, - 0x1a, 0x18, 0x98, 0xcd, 0x3b, 0xd4, 0x23, 0xb5, 0xb6, 0x45, 0xca, 0x4c, - 0x1c, 0x02, 0xf5, 0xaf, 0x3b, 0xce, 0x12, 0xd3, 0x21, 0xef, 0xe1, 0x9f, - 0x9e, 0x0d, 0x44, 0xd0, 0xe3, 0x58, 0x71, 0x82, 0x89, 0x23, 0x1b, 0x0e, - 0x12, 0xa7, 0x6a, 0xba, 0xe8, 0xb8, 0xe7, 0xa3, 0xe5, 0xe6, 0x17, 0xda, - 0x7f, 0x3b, 0x08, 0x03, 0xc4, 0xf9, 0x87, 0xea, 0x2a, 0x36, 0x69, 0xf2, - 0x4e, 0x03, 0xf3, 0x46, 0x29, 0x3c, 0x2a, 0xef, 0x7c, 0xa7, 0xa9, 0xa6, - 0xd4, 0xf3, 0xb7, 0xd2, 0x35, 0x24, 0x45, 0x74, 0x0d, 0x17, 0xbf, 0xc6, - 0x2d, 0x76, 0x6b, 0x55, 0x03, 0xd5, 0x5d, 0xc6, 0x10, 0xd9, 0xf8, 0x43, - 0xea, 0x1f, 0x64, 0xd1, 0xdd, 0x03, 0x77, 0x55, 0x93, 0x90, 0xb6, 0x9e, - 0x3e, 0x7e, 0xbc, 0x34, 0xca, 0x5e, 0x73, 0x70, 0x18, 0x14, 0xd4, 0x51, - 0x0d, 0xbc, 0x4b, 0x1c, 0xea, 0xa8, 0xc1, 0x8b, 0xce, 0xdf, 0x11, 0x2f, - 0x6e, 0x6f, 0xfb, 0x92, 0x3a, 0xa7, 0x7b, 0xb0, 0xd0, 0x6f, 0xa0, 0x3d, - 0xbb, 0x8c, 0xad, 0x67, 0xcf, 0x9e, 0x45, 0xf1, 0x19, 0xd3, 0x1f, 0x2b, - 0x7f, 0x7e, 0x8d, 0x4c, 0x9e, 0x5e, 0xdd, 0x9e, 0xfa, 0x96, 0xa2, 0x3b, - 0x8f, 0xca, 0xe9, 0x44, 0x80, 0xfc, 0x5f, 0xa3, 0x91, 0x7d, 0x50, 0xe4, - 0x97, 0x58, 0x96, 0x47, 0x22, 0x7c, 0xa2, 0xe1, 0xac, 0x51, 0x52, 0x96, - 0x19, 0x7a, 0x41, 0xcb, 0xb4, 0x5e, 0x94, 0x39, 0xe8, 0xc5, 0x8b, 0xca, - 0x79, 0xc4, 0xcf, 0x4d, 0xe7, 0x40, 0x01, 0x02, 0x5f, 0xa5, 0x93, 0xc5, - 0x94, 0xbc, 0x79, 0xaf, 0xff, 0x7e, 0x1a, 0xad, 0x1f, 0x9f, 0x6e, 0x3e, - 0xfa, 0x32, 0x90, 0x67, 0xba, 0x4e, 0x7d, 0x82, 0x1d, 0x20, 0xbb, 0xc7, - 0x5b, 0x81, 0x64, 0xae, 0x26, 0x37, 0x81, 0x85, 0xdf, 0xb6, 0x38, 0x42, - 0x98, 0x46, 0x5b, 0xfe, 0x79, 0x2c, 0x64, 0x3a, 0x59, 0xfd, 0xfc, 0x60, - 0x19, 0x70, 0x5c, 0xac, 0xce, 0xae, 0x50, 0xcc, 0xf4, 0xad, 0x80, 0x39, - 0x73, 0xfb, 0xad, 0xf6, 0x91, 0xe0, 0x68, 0x4b, 0x30, 0x55, 0x79, 0x23, - 0x52, 0xd5, 0xfd, 0x98, 0x5f, 0x3b, 0xe8, 0x1a, 0x92, 0x2a, 0xee, 0x22, - 0x3e, 0xbd, 0x4d, 0x2f, 0x81, 0xa2, 0x82, 0x42, 0xf6, 0x15, 0x16, 0x13, - 0x92, 0x4e, 0x8b, 0x66, 0xa4, 0x6a, 0xe0, 0x08, 0xfc, 0xd6, 0x2c, 0xf0, - 0x35, 0xb1, 0x29, 0x4e, 0xcc, 0x0d, 0xa4, 0xd2, 0x68, 0xfe, 0x87, 0x60, - 0x2b, 0x75, 0x01, 0xc4, 0xc8, 0x07, 0xde, 0x3a, 0x38, 0x72, 0xaf, 0x00, - 0x31, 0x32, 0x79, 0x99, 0xfe, 0x8a, 0x8e, 0x87, 0x3b, 0x61, 0xf5, 0x39, - 0xb8, 0x1c, 0x8c, 0x1a, 0xd6, 0x38, 0xbe, 0x45, 0x79, 0x09, 0x9b, 0xb5, - 0x67, 0xca, 0xc6, 0xa8, 0x58, 0xf3, 0x36, 0x28, 0x30, 0x1a, 0x1d, 0xb6, - 0x89, 0x0b, 0x3c, 0x94, 0x81, 0x55, 0xd6, 0x6e, 0xce, 0xa7, 0xa7, 0xaf, - 0x3c, 0x06, 0x2c, 0x55, 0xe8, 0x26, 0x33, 0x81, 0xc0, 0x5f, 0x93, 0x11, - 0x7a, 0x11, 0xc8, 0x64, 0x29, 0x22, 0x84, 0x99, 0x78, 0xfe, 0x78, 0x67, - 0xa7, 0x1f, 0x3d, 0x19, 0x6c, 0xc3, 0xbd, 0x30, 0x98, 0x7e, 0x4e, 0x2f, - 0x3a, 0xf9, 0x3f, 0x2d, 0x78, 0x53, 0xed, 0xbc, 0x0b, 0xe7, 0x4f, 0xa0, - 0xfd, 0x14, 0x3f, 0x02, 0xfd, 0x5f, 0x21, 0x38, 0xaf, 0xde, 0x8f, 0x3b, - 0x4f, 0x9e, 0x6c, 0x7f, 0xb9, 0x7b, 0x12, 0x3f, 0xd9, 0xd9, 0xc6, 0x7a, - 0x02, 0xe9, 0xc0, 0x60, 0x0a, 0x1f, 0x5c, 0x8c, 0x8c, 0x28, 0x1b, 0xb3, - 0xe7, 0x68, 0x3a, 0xbd, 0x0e, 0xe7, 0x99, 0xf6, 0x8a, 0x79, 0x9a, 0x57, - 0xd5, 0x34, 0xaa, 0xde, 0x33, 0xb4, 0xca, 0x66, 0xf5, 0x9e, 0xfd, 0x73, - 0x3d, 0x01, 0xe6, 0xcb, 0x02, 0xf8, 0x4b, 0xe6, 0x64, 0x44, 0x9a, 0x25, - 0x06, 0xce, 0x43, 0x80, 0xf7, 0xcc, 0x39, 0x84, 0x91, 0xf6, 0x82, 0x45, - 0x24, 0xc6, 0x7b, 0x41, 0x12, 0x62, 0xfd, 0xf0, 0x60, 0x83, 0x0f, 0xcd, - 0x49, 0x69, 0x92, 0xe6, 0x11, 0xbc, 0xd2, 0x3e, 0x23, 0x16, 0xf8, 0x02, - 0x39, 0x2f, 0x72, 0xf2, 0xa6, 0x60, 0xa2, 0x01, 0x86, 0xbf, 0xe4, 0xbb, - 0xd8, 0xeb, 0xa8, 0x38, 0xf1, 0x14, 0x4c, 0xba, 0x19, 0x7a, 0x8d, 0x61, - 0xf8, 0x78, 0x49, 0x2a, 0x46, 0x95, 0x96, 0xb8, 0x72, 0x58, 0x51, 0x8c, - 0xb3, 0xdc, 0x13, 0xe5, 0xba, 0x29, 0x78, 0xcf, 0x97, 0x14, 0x54, 0xd8, - 0xed, 0x6c, 0xde, 0xe2, 0xdf, 0xed, 0x1a, 0xf3, 0xe4, 0x4c, 0x58, 0xab, - 0x5e, 0x60, 0xad, 0xb4, 0x6e, 0x25, 0x0f, 0xbb, 0xb7, 0x18, 0x5d, 0xb7, - 0xcc, 0x9a, 0xd9, 0x39, 0xdd, 0xe1, 0x93, 0xd6, 0x32, 0x41, 0x6a, 0x7b, - 0x46, 0x1d, 0x7e, 0xb3, 0x84, 0x73, 0x5f, 0x6d, 0x3f, 0xd5, 0x00, 0x25, - 0x3a, 0xa3, 0x3f, 0x5c, 0xb2, 0x85, 0x33, 0xc9, 0x37, 0x77, 0xd0, 0x61, - 0xe9, 0x75, 0xb0, 0x96, 0x08, 0xe8, 0x46, 0xfe, 0x59, 0x26, 0x57, 0xda, - 0x26, 0x08, 0xff, 0x09, 0xf3, 0x30, 0x5a, 0x88, 0xb7, 0x73, 0xfc, 0xde, - 0xcd, 0x5b, 0x07, 0x86, 0x5c, 0x2d, 0x5d, 0xd5, 0xf5, 0x2a, 0x25, 0x55, - 0xdb, 0xdd, 0xe5, 0x98, 0x05, 0x81, 0x3e, 0x21, 0x68, 0xba, 0x32, 0xc0, - 0x43, 0x52, 0x57, 0x05, 0xee, 0x60, 0x90, 0x5e, 0x39, 0x0e, 0xca, 0xad, - 0x80, 0x8d, 0xcb, 0xdf, 0x58, 0x95, 0x52, 0x44, 0xf4, 0x4d, 0x5f, 0x41, - 0x06, 0x6b, 0xc7, 0x0b, 0x98, 0x04, 0x5c, 0x76, 0x84, 0x2e, 0x42, 0x29, - 0xdb, 0x91, 0x7c, 0x86, 0xed, 0x00, 0xc0, 0xc5, 0x1e, 0x33, 0xc4, 0x19, - 0x21, 0x45, 0xd4, 0x69, 0xad, 0x8b, 0xd1, 0xb0, 0xbe, 0x07, 0x22, 0x42, - 0x0d, 0x4d, 0x49, 0xba, 0x82, 0x62, 0x87, 0x27, 0xcd, 0x16, 0x43, 0x4b, - 0xeb, 0x62, 0x8b, 0x10, 0x2b, 0x29, 0x91, 0x2b, 0x08, 0x66, 0xbe, 0x2f, - 0x83, 0x4d, 0xa2, 0x32, 0x55, 0x11, 0x93, 0xfb, 0x2b, 0x98, 0x35, 0xf9, - 0x0a, 0x1b, 0xe5, 0x3a, 0x4b, 0xab, 0x9b, 0x99, 0xff, 0xe8, 0x56, 0x65, - 0x44, 0x1d, 0xee, 0xdd, 0x55, 0x68, 0x36, 0x38, 0x71, 0x24, 0xff, 0x12, - 0x3b, 0x19, 0x65, 0x9b, 0x1f, 0xe3, 0xab, 0xab, 0xab, 0x18, 0x75, 0x11, - 0x4b, 0x22, 0xe3, 0x41, 0xd4, 0x42, 0x8d, 0x71, 0x43, 0x39, 0x7e, 0x0a, - 0x98, 0x53, 0x52, 0x55, 0x0e, 0xb3, 0x1a, 0xf1, 0x96, 0x22, 0xa1, 0x2a, - 0x7a, 0x49, 0xd8, 0xaa, 0xac, 0x87, 0x7c, 0x82, 0x55, 0x6a, 0xca, 0x92, - 0xfd, 0xe4, 0x3e, 0xfd, 0x1a, 0x4e, 0x62, 0x44, 0x63, 0x21, 0x45, 0x40, - 0x42, 0x98, 0x66, 0xb6, 0x8b, 0x74, 0xfb, 0x3d, 0x0a, 0x96, 0x03, 0xf9, - 0xee, 0x33, 0x78, 0x72, 0xd7, 0xf9, 0xaa, 0x90, 0xda, 0xb4, 0xe9, 0x0e, - 0xd1, 0xbb, 0xb9, 0x5c, 0x59, 0x10, 0x4a, 0xc2, 0x9a, 0x4e, 0x81, 0x67, - 0x6e, 0xeb, 0x27, 0x42, 0xa1, 0x7a, 0x2c, 0x5e, 0x93, 0xee, 0x4c, 0xb4, - 0x01, 0x94, 0xfe, 0xab, 0x09, 0xf8, 0x40, 0x79, 0x37, 0x33, 0x1c, 0xd9, - 0xbe, 0x07, 0xe6, 0x38, 0x32, 0xcb, 0x37, 0x26, 0x7c, 0x72, 0x07, 0xb6, - 0xe3, 0xe9, 0xc4, 0x86, 0xfb, 0xac, 0xc2, 0x51, 0x2a, 0xc5, 0x13, 0xa3, - 0x72, 0x35, 0x4b, 0xe9, 0xdc, 0x87, 0x43, 0x4a, 0x54, 0x03, 0x7b, 0x4d, - 0xec, 0x27, 0x99, 0x5a, 0x00, 0xac, 0xc4, 0x05, 0x4c, 0xfb, 0x66, 0x09, - 0x74, 0x98, 0xb3, 0xd0, 0x87, 0xf3, 0x6b, 0xda, 0x39, 0x7a, 0x17, 0xa0, - 0x3f, 0x16, 0xbd, 0x15, 0x12, 0x8c, 0xed, 0xab, 0xdf, 0x24, 0x35, 0xfe, - 0xff, 0x15, 0xdb, 0x07, 0x05, 0x68, 0xac, 0x2d, 0x0b, 0x96, 0x1e, 0x51, - 0xfb, 0x8c, 0xfa, 0x86, 0x5d, 0x0a, 0x83, 0xe1, 0xec, 0x73, 0xe7, 0xb0, - 0x24, 0x11, 0x23, 0xa4, 0x7d, 0x71, 0x16, 0x1d, 0x32, 0x4f, 0xed, 0xdc, - 0x23, 0xb1, 0xfb, 0xb4, 0x44, 0xde, 0x43, 0x80, 0x28, 0x0c, 0x67, 0x15, - 0x6a, 0xf4, 0x79, 0x46, 0x46, 0xcc, 0xc1, 0x77, 0x47, 0x54, 0x9f, 0x0e, - 0x72, 0x3b, 0x17, 0xec, 0x62, 0x5e, 0x3f, 0x6a, 0xa7, 0x8e, 0x10, 0x38, - 0xcf, 0x72, 0xd3, 0x42, 0x9e, 0x3b, 0xae, 0x06, 0x8b, 0x9f, 0x44, 0x45, - 0x4e, 0x9c, 0x8c, 0x7c, 0x82, 0x85, 0x30, 0x61, 0x57, 0xd5, 0xed, 0x13, - 0x8b, 0x16, 0x13, 0xdc, 0x2f, 0x9a, 0x5d, 0xb5, 0x6f, 0x0e, 0x7b, 0xa2, - 0x1d, 0xce, 0xf1, 0xde, 0x16, 0x40, 0x85, 0xe5, 0x1b, 0xd5, 0x75, 0x5e, - 0x27, 0x1f, 0x53, 0xbf, 0xa4, 0x50, 0xa6, 0x6f, 0x53, 0x85, 0xe3, 0x4d, - 0x71, 0x62, 0x8f, 0x66, 0xdb, 0xd2, 0x06, 0xca, 0x03, 0x81, 0x80, 0x71, - 0x0c, 0x1e, 0x33, 0x2c, 0x0a, 0xaf, 0x88, 0x5c, 0xfe, 0xef, 0x3f, 0xb5, - 0x79, 0x23, 0xc8, 0x2f, 0xb2, 0xfe, 0x15, 0x94, 0xcf, 0x1d, 0xcc, 0x74, - 0xe7, 0xd3, 0xd6, 0x1d, 0x49, 0x7e, 0x1d, 0x1e, 0xee, 0x2b, 0x74, 0x41, - 0x7e, 0x23, 0x71, 0x5d, 0x84, 0xd9, 0xa8, 0xd4, 0x56, 0xfd, 0x20, 0x7e, - 0x66, 0xfe, 0x6a, 0xc9, 0xb9, 0xb5, 0xfb, 0x12, 0x1e, 0x8e, 0x09, 0x6c, - 0x94, 0xa0, 0xbb, 0x77, 0x98, 0xc2, 0xbe, 0xfd, 0x47, 0x7b, 0xaf, 0xbe, - 0xfa, 0x3d, 0x37, 0x8b, 0x3b, 0xd1, 0x49, 0x8d, 0x33, 0x7c, 0xab, 0x0d, - 0x5f, 0x53, 0x99, 0x09, 0x75, 0x18, 0xb4, 0x61, 0xec, 0x20, 0x77, 0x47, - 0x62, 0xbc, 0x97, 0x35, 0x13, 0xcd, 0x35, 0x16, 0xde, 0xb1, 0x85, 0x79, - 0x13, 0x33, 0x53, 0x5b, 0x23, 0x27, 0x0c, 0x24, 0x95, 0x7e, 0x04, 0x1a, - 0xaf, 0x4d, 0x29, 0xb2, 0x9d, 0x6c, 0x1c, 0x1e, 0x4e, 0x9c, 0xe6, 0xde, - 0x77, 0x19, 0x09, 0xb2, 0xe4, 0xa3, 0xdc, 0xaf, 0xa2, 0x9e, 0x9e, 0xc4, - 0x33, 0x4c, 0xd6, 0x86, 0x93, 0xad, 0x67, 0xbb, 0x35, 0x76, 0xac, 0x22, - 0xbf, 0x36, 0xda, 0xd7, 0x46, 0xbf, 0xb9, 0x45, 0xd8, 0x84, 0x85, 0x44, - 0xae, 0xee, 0x4d, 0x46, 0xae, 0xcd, 0xa0, 0x71, 0xaa, 0xae, 0xaa, 0xe3, - 0xd3, 0xb3, 0xe0, 0x49, 0xdd, 0xe6, 0xab, 0x6e, 0xfd, 0x51, 0x9f, 0xe5, - 0xab, 0x98, 0x68, 0xed, 0x91, 0x73, 0x3e, 0x56, 0xce, 0xd8, 0x03, 0x0c, - 0x3d, 0xc0, 0x7a, 0x0a, 0xa6, 0x64, 0x61, 0x26, 0xee, 0xd4, 0x4b, 0xe3, - 0x73, 0x12, 0x19, 0x32, 0x06, 0x9c, 0xf8, 0xca, 0x2a, 0x8a, 0xec, 0x0c, - 0x55, 0xb0, 0x1c, 0x87, 0xd2, 0xb4, 0xc9, 0x57, 0xd7, 0xde, 0x2d, 0xa5, - 0xbd, 0x4e, 0x32, 0xf3, 0xe4, 0xd7, 0x43, 0x4b, 0x6e, 0x3b, 0x13, 0x7d, - 0x38, 0x18, 0xc5, 0xab, 0x0a, 0x70, 0x3b, 0xc2, 0x57, 0xfc, 0x5f, 0x12, - 0x7b, 0x77, 0x1e, 0xc4, 0x90, 0xe5, 0xdd, 0x87, 0xa0, 0xd7, 0x29, 0x0d, - 0xe1, 0x6e, 0xea, 0x84, 0x6b, 0x55, 0x82, 0x7a, 0xe2, 0x68, 0x17, 0xf6, - 0x91, 0x6e, 0xbd, 0x22, 0x8a, 0x5e, 0xff, 0xed, 0xec, 0x6c, 0x03, 0x47, - 0xce, 0xc7, 0x55, 0xd4, 0x82, 0x52, 0xe6, 0xfc, 0x5a, 0x02, 0x47, 0x05, - 0xf2, 0x35, 0x5e, 0x36, 0x56, 0x38, 0x42, 0xc9, 0x1d, 0x5a, 0x4a, 0xe4, - 0x86, 0xb6, 0xaf, 0x92, 0x6b, 0xf1, 0x7f, 0x46, 0xc3, 0xb2, 0xb8, 0xaa, - 0xc8, 0xaa, 0x4a, 0xa5, 0x75, 0x5a, 0xc2, 0x61, 0x91, 0x8b, 0x24, 0xd0, - 0x74, 0x68, 0x6a, 0x7a, 0xe2, 0x7e, 0x7f, 0xf6, 0xfa, 0x15, 0x39, 0x68, - 0x05, 0x4e, 0x13, 0x11, 0x71, 0x44, 0x80, 0x2d, 0x86, 0x33, 0xb8, 0x7c, - 0xa0, 0x97, 0xd6, 0xac, 0x14, 0x28, 0x0f, 0x08, 0x25, 0x57, 0xce, 0x43, - 0x69, 0x70, 0x62, 0x06, 0x39, 0x9d, 0x2a, 0x5c, 0x0b, 0x6e, 0x99, 0x15, - 0xd3, 0x61, 0xab, 0x1d, 0x70, 0xcd, 0x0b, 0x69, 0xce, 0x2f, 0xf1, 0x08, - 0xf0, 0x89, 0x65, 0xfa, 0x2e, 0xba, 0xf0, 0xa6, 0xd4, 0xf4, 0xdb, 0xec, - 0x19, 0xea, 0xd9, 0x46, 0xce, 0x53, 0x63, 0x8d, 0xa4, 0xa9, 0x5b, 0x7b, - 0xd9, 0xbd, 0xcb, 0x74, 0x6d, 0x54, 0xd8, 0x50, 0x71, 0x94, 0xac, 0xba, - 0xf9, 0xa2, 0x24, 0x48, 0x2b, 0xf5, 0x50, 0x04, 0xa0, 0x1f, 0x34, 0xf1, - 0xce, 0x24, 0x7b, 0x99, 0x5c, 0x96, 0x86, 0xa5, 0xa2, 0x79, 0xbf, 0x30, - 0x7e, 0x53, 0x30, 0x06, 0xe3, 0x3c, 0x04, 0x17, 0x42, 0xa7, 0x08, 0xc4, - 0x05, 0xa3, 0x13, 0x52, 0x71, 0x42, 0xe9, 0x37, 0x4b, 0xdc, 0x22, 0xd6, - 0x28, 0x24, 0xe0, 0x12, 0xfa, 0xba, 0x2a, 0x35, 0x59, 0xc6, 0x1a, 0xc3, - 0xb3, 0x98, 0x1d, 0x05, 0xe6, 0xb1, 0xb8, 0x59, 0x54, 0x51, 0xa8, 0xcd, - 0x0e, 0xd5, 0x69, 0x4d, 0x09, 0x53, 0xd2, 0xa6, 0x31, 0x66, 0x18, 0xcd, - 0x77, 0xe8, 0x9f, 0xe2, 0xc8, 0x69, 0x79, 0xae, 0xee, 0x14, 0xa3, 0x9c, - 0x86, 0xf2, 0xca, 0xfe, 0x77, 0xcc, 0x1a, 0x08, 0x52, 0xe1, 0x82, 0xd2, - 0x7f, 0xf0, 0xa7, 0x6b, 0xf1, 0x98, 0x99, 0xd5, 0x38, 0xc9, 0xe1, 0xab, - 0xe1, 0x56, 0x62, 0x79, 0xca, 0x74, 0xfa, 0xd5, 0xb4, 0x58, 0x54, 0xd7, - 0x6b, 0x58, 0xed, 0x06, 0x3b, 0xed, 0x35, 0xba, 0xcc, 0x31, 0x0b, 0x98, - 0x7a, 0x6d, 0xe2, 0xb9, 0x8d, 0x2e, 0x16, 0xf9, 0x07, 0x01, 0x4e, 0xa1, - 0x7e, 0x5d, 0x53, 0xf4, 0x40, 0xac, 0x39, 0xe3, 0xfe, 0x6f, 0x77, 0xd0, - 0xc1, 0xc3, 0x3b, 0x71, 0xa2, 0x46, 0x7a, 0x9f, 0x19, 0x10, 0x25, 0x2d, - 0x77, 0xe8, 0xd4, 0x54, 0x3a, 0x5b, 0x92, 0x40, 0xde, 0x83, 0x0e, 0x64, - 0x13, 0xa1, 0x4c, 0xae, 0xcb, 0xe1, 0x5c, 0x34, 0x10, 0x99, 0x45, 0x45, - 0x9e, 0x72, 0x2b, 0xc3, 0x93, 0x46, 0x2f, 0xb2, 0x49, 0x51, 0x0c, 0x93, - 0x72, 0xcd, 0xab, 0x1e, 0xc4, 0x65, 0x53, 0x83, 0xfa, 0xa1, 0x64, 0x56, - 0x72, 0x9c, 0xca, 0xb2, 0xc3, 0x6f, 0xf8, 0x4d, 0x69, 0xca, 0x88, 0xbf, - 0xd0, 0xdf, 0x04, 0xaa, 0x7c, 0x8a, 0xe9, 0xd8, 0x2e, 0x3d, 0x6a, 0xac, - 0x83, 0x4e, 0x01, 0x4f, 0xa5, 0x1f, 0x70, 0x38, 0x21, 0x1a, 0x4a, 0x7a, - 0x15, 0x07, 0x70, 0xb4, 0xd8, 0xbf, 0x84, 0xc5, 0x70, 0x58, 0xa5, 0x44, - 0xb9, 0xff, 0x9a, 0xed, 0x25, 0xa9, 0x5c, 0xc6, 0xc9, 0x03, 0xd7, 0xd8, - 0x01, 0xef, 0xf6, 0xa3, 0xc7, 0x21, 0xd6, 0x60, 0x59, 0x81, 0x73, 0xb1, - 0x88, 0xcf, 0x48, 0xe1, 0x68, 0xb8, 0xbd, 0x02, 0x1f, 0x80, 0xf4, 0xdd, - 0x73, 0x5c, 0xe2, 0x26, 0x73, 0xb4, 0xc5, 0x30, 0xad, 0xd3, 0x71, 0x15, - 0x6c, 0x2f, 0x26, 0x05, 0xd7, 0x84, 0xb9, 0xa4, 0x56, 0x01, 0xf8, 0x95, - 0xd8, 0x06, 0x1b, 0x68, 0xa7, 0x7d, 0xb5, 0x66, 0x38, 0x60, 0xca, 0x9d, - 0xcb, 0xb9, 0xb1, 0xf4, 0x5c, 0x97, 0x22, 0x21, 0x75, 0x9d, 0xd2, 0xd2, - 0xa1, 0x81, 0x01, 0x2a, 0x43, 0xd9, 0x27, 0x51, 0x98, 0x23, 0x5b, 0x02, - 0x79, 0x38, 0x3d, 0x66, 0x1c, 0xf5, 0xd8, 0xe8, 0x80, 0x7f, 0xad, 0xe0, - 0x7d, 0x68, 0xbe, 0x86, 0xff, 0xac, 0x8b, 0x62, 0xfa, 0xd5, 0x68, 0x36, - 0xc6, 0x35, 0xac, 0x34, 0xd0, 0xca, 0xde, 0x25, 0xc9, 0xc1, 0x6d, 0xb9, - 0xb5, 0x7d, 0x45, 0xa6, 0xa5, 0x87, 0x90, 0x2c, 0x6e, 0xe7, 0x4e, 0x18, - 0xaa, 0x9a, 0x2d, 0x6a, 0x06, 0x1c, 0x4e, 0x3f, 0x62, 0x45, 0x31, 0x36, - 0xdf, 0x6c, 0xc8, 0x4b, 0xae, 0xa3, 0x8d, 0x8f, 0x68, 0xa2, 0x0b, 0xba, - 0x79, 0x3e, 0x06, 0x45, 0x7c, 0xd6, 0x6f, 0xf6, 0x62, 0x6f, 0xb8, 0x56, - 0xd2, 0x69, 0x7a, 0xce, 0xf7, 0x60, 0xef, 0xd5, 0xe1, 0xdf, 0x0f, 0x5f, - 0x79, 0xfa, 0xcf, 0x77, 0xa7, 0xa7, 0x9b, 0x1f, 0xd2, 0x72, 0x98, 0x96, - 0x45, 0x45, 0x1a, 0x10, 0xb0, 0x46, 0x7a, 0xd2, 0x94, 0xd1, 0x39, 0xe4, - 0x7e, 0x65, 0xb1, 0xf1, 0x93, 0x60, 0x42, 0x36, 0x16, 0x5d, 0xf3, 0x94, - 0x52, 0xbb, 0x4f, 0xf0, 0x07, 0xb3, 0x54, 0x11, 0x6f, 0x4b, 0xcc, 0xe1, - 0xa0, 0xf8, 0x5c, 0x12, 0xe8, 0x78, 0x43, 0x98, 0xea, 0x51, 0xf4, 0x82, - 0xef, 0x3f, 0x43, 0x3a, 0xa0, 0xbc, 0xb3, 0x5f, 0xe1, 0xbd, 0x32, 0x67, - 0xe0, 0xe2, 0x17, 0x32, 0x29, 0x21, 0xee, 0xe1, 0xae, 0x71, 0xab, 0x1c, - 0xd6, 0x02, 0x8e, 0xff, 0x1a, 0xef, 0x9f, 0xc6, 0x2f, 0x0e, 0x5f, 0x1d, - 0x7e, 0xb7, 0x7f, 0x76, 0x18, 0x4d, 0xa6, 0xc9, 0xb9, 0x01, 0x8d, 0xef, - 0x32, 0x2c, 0x84, 0x23, 0xff, 0x55, 0x76, 0x26, 0x32, 0x5d, 0xc2, 0xe1, - 0x0a, 0x8c, 0x3e, 0x50, 0x7c, 0xcc, 0xf4, 0xfd, 0x4b, 0xd0, 0x75, 0xc0, - 0xe5, 0xdf, 0xe1, 0xe1, 0x80, 0x69, 0x4e, 0x67, 0xb2, 0x54, 0xef, 0x0b, - 0x92, 0x29, 0xe8, 0x86, 0x55, 0xf4, 0x2e, 0x47, 0x4c, 0x8b, 0xcc, 0x00, - 0xe6, 0xf1, 0xd7, 0xbb, 0x2e, 0x6a, 0xbb, 0xb5, 0xe1, 0x8c, 0x14, 0xe7, - 0xac, 0x3f, 0x43, 0xe3, 0x14, 0x67, 0xf6, 0x1e, 0x9e, 0xe3, 0x8a, 0x8e, - 0xc1, 0x46, 0xaf, 0x2b, 0xb9, 0x45, 0x55, 0x35, 0x6d, 0xd0, 0x72, 0x86, - 0x0d, 0x9b, 0xc2, 0x7e, 0x41, 0x05, 0xd0, 0x25, 0xfd, 0xfb, 0x05, 0x3d, - 0xd8, 0xaa, 0x21, 0x70, 0x20, 0x39, 0x73, 0xdb, 0x7f, 0x3b, 0x80, 0x8a, - 0x4f, 0xbe, 0xf6, 0x6a, 0x74, 0x91, 0x12, 0x4e, 0x19, 0xd9, 0x8d, 0x98, - 0xb8, 0x4f, 0x59, 0xe2, 0x9c, 0x40, 0x28, 0x9d, 0x27, 0x48, 0x08, 0x0e, - 0x53, 0xf2, 0x9b, 0xa1, 0xfb, 0x03, 0x1b, 0x93, 0x06, 0xa4, 0xfa, 0x55, - 0x56, 0x32, 0x56, 0xf8, 0x94, 0x80, 0x50, 0xd3, 0x8f, 0x35, 0xa5, 0xb5, - 0x98, 0xa4, 0x7a, 0xce, 0x29, 0x6c, 0x37, 0x39, 0xcf, 0xa9, 0x6f, 0x6c, - 0xfb, 0xaa, 0x9b, 0x0e, 0xde, 0x26, 0x79, 0x89, 0xf3, 0xa4, 0xe8, 0x47, - 0xc4, 0xce, 0xd4, 0x18, 0xc7, 0x15, 0x2e, 0x07, 0xf9, 0xe5, 0xed, 0x5c, - 0x29, 0x05, 0xa6, 0x2d, 0x94, 0xfc, 0x2c, 0x3a, 0x1e, 0xf4, 0x93, 0x5b, - 0x83, 0xcb, 0xda, 0x56, 0xa2, 0x20, 0xb3, 0x37, 0x7d, 0x83, 0xc8, 0x2c, - 0xc3, 0x30, 0x35, 0x01, 0x23, 0xc1, 0x53, 0x1f, 0x34, 0xbb, 0x5b, 0xfb, - 0xb5, 0x3d, 0x1d, 0x4c, 0xd9, 0x6d, 0x7c, 0x4f, 0xdd, 0xd9, 0xf5, 0xaf, - 0xda, 0x83, 0xbd, 0x49, 0xaa, 0xb4, 0x5f, 0x71, 0x3a, 0xf7, 0x5a, 0xda, - 0xae, 0x13, 0xe0, 0xf3, 0x99, 0x5b, 0x9f, 0xac, 0xd8, 0x5d, 0x22, 0xcc, - 0xd5, 0x78, 0x39, 0x3c, 0x79, 0x7b, 0xc6, 0x88, 0xec, 0xf8, 0x17, 0x11, - 0xb7, 0x55, 0xa8, 0x7d, 0x0f, 0x67, 0x95, 0x53, 0x7d, 0x48, 0x4a, 0x59, - 0x97, 0x5a, 0xb4, 0x5c, 0x49, 0xfd, 0x6a, 0xae, 0x5d, 0x88, 0x25, 0x0c, - 0x04, 0xdc, 0x6a, 0x86, 0xc8, 0x32, 0xe1, 0xbe, 0x0b, 0x34, 0xb1, 0x16, - 0x7d, 0x4b, 0x6e, 0xd0, 0xf1, 0xdb, 0x33, 0xae, 0x8f, 0xb3, 0x95, 0x40, - 0x9a, 0x1e, 0x9c, 0xd5, 0x9c, 0xfc, 0x8a, 0xcf, 0xb4, 0xf5, 0x0c, 0xc6, - 0x04, 0x06, 0x06, 0x37, 0xe0, 0x51, 0xf9, 0xfa, 0x99, 0x3e, 0x70, 0xc6, - 0x6b, 0x2f, 0xc0, 0x0b, 0x92, 0x33, 0xaa, 0x69, 0x84, 0xfd, 0x00, 0xd6, - 0x8b, 0xd1, 0x9a, 0x08, 0x20, 0x83, 0x93, 0x0b, 0x15, 0x74, 0x83, 0x57, - 0x98, 0x0a, 0x2f, 0x20, 0x63, 0x68, 0x22, 0x29, 0xce, 0x09, 0xb6, 0x5b, - 0xf4, 0xf3, 0xcc, 0x12, 0x44, 0xde, 0x44, 0xd6, 0x2d, 0xf6, 0x79, 0xae, - 0x35, 0xdf, 0xca, 0x89, 0xe9, 0xab, 0x74, 0xf3, 0x03, 0xf6, 0x2b, 0x9e, - 0x70, 0xbb, 0xed, 0x8a, 0x53, 0x1a, 0xc5, 0x6b, 0x91, 0xa3, 0x64, 0xf0, - 0x64, 0xa6, 0x9a, 0x22, 0x44, 0x1b, 0xbc, 0x3b, 0x4e, 0x0e, 0x40, 0x83, - 0x90, 0x3a, 0x42, 0x84, 0xb6, 0xb6, 0xac, 0x22, 0xc4, 0x20, 0xa7, 0xe5, - 0xe4, 0xd1, 0xc9, 0xe5, 0xd3, 0x66, 0x26, 0xa6, 0x5e, 0x6f, 0xba, 0xd8, - 0x7e, 0xd1, 0x92, 0x9e, 0x91, 0x4d, 0xe8, 0x46, 0x36, 0xe9, 0x4d, 0xcc, - 0xec, 0x00, 0x67, 0xa0, 0x17, 0x48, 0xd6, 0xb2, 0xea, 0xca, 0x2c, 0x52, - 0x28, 0x71, 0x98, 0x82, 0x66, 0x9e, 0x21, 0x1a, 0xf2, 0x91, 0x63, 0x06, - 0x05, 0xb2, 0x3f, 0x81, 0xa6, 0x46, 0xd2, 0x0b, 0x1a, 0x99, 0x00, 0xbe, - 0xcb, 0xf9, 0xca, 0xf4, 0x16, 0x21, 0x30, 0xd6, 0x85, 0x82, 0x00, 0x44, - 0xf1, 0x49, 0x5f, 0x92, 0x14, 0xa9, 0x04, 0xd4, 0xd3, 0x95, 0x61, 0xe7, - 0x46, 0xa6, 0x11, 0x88, 0x3e, 0x99, 0x54, 0x97, 0x4b, 0x93, 0x8b, 0xdd, - 0x8d, 0x6e, 0xf3, 0xc4, 0x4f, 0x4f, 0x2e, 0x5e, 0x7a, 0x8c, 0x37, 0x09, - 0x56, 0x77, 0x65, 0x2b, 0xc1, 0x9d, 0xdb, 0x37, 0xab, 0x4b, 0xa6, 0xbb, - 0xc6, 0xce, 0x85, 0x19, 0x56, 0x75, 0x19, 0x64, 0x58, 0xb7, 0xe4, 0x58, - 0xa7, 0x7f, 0x37, 0x76, 0x81, 0x70, 0xa6, 0x90, 0x93, 0x40, 0x0f, 0x79, - 0x15, 0x56, 0xa5, 0x59, 0x6c, 0xed, 0xcd, 0xc3, 0x29, 0x85, 0x55, 0x9d, - 0xec, 0x9f, 0xfe, 0x7d, 0x09, 0x93, 0x32, 0x9c, 0xa3, 0x06, 0xba, 0xc6, - 0xf7, 0x82, 0xd7, 0x19, 0xb6, 0xea, 0x16, 0xd7, 0x19, 0x26, 0xf5, 0xae, - 0xb3, 0xb7, 0x73, 0xcb, 0xae, 0x73, 0x80, 0x1c, 0x8f, 0x26, 0xed, 0xdb, - 0x9c, 0xd3, 0x0d, 0x26, 0x70, 0x96, 0x25, 0xd7, 0x98, 0x2f, 0xee, 0xe9, - 0xdf, 0xfd, 0xd9, 0x57, 0xb8, 0xc6, 0xf0, 0x41, 0xde, 0x35, 0xd6, 0x63, - 0x0a, 0xdf, 0xe3, 0xae, 0x6b, 0x5c, 0x17, 0x7a, 0xff, 0xe9, 0x0a, 0xbb, - 0x37, 0xd8, 0xbf, 0xbd, 0x37, 0xa9, 0x28, 0x0e, 0x01, 0x87, 0x73, 0xfe, - 0xef, 0xde, 0x87, 0x60, 0xe9, 0x59, 0xdc, 0xfa, 0x4e, 0xc2, 0xc2, 0xee, - 0x78, 0x27, 0x35, 0x05, 0xb4, 0xeb, 0x4e, 0xba, 0xf8, 0x79, 0x3e, 0xa5, - 0x68, 0xb5, 0x9e, 0x05, 0x26, 0xb6, 0xd9, 0x90, 0x01, 0x97, 0x83, 0xa6, - 0xf3, 0x31, 0xa8, 0xa0, 0x1f, 0xdc, 0x35, 0x18, 0xb8, 0x6c, 0x18, 0x71, - 0xe3, 0xb3, 0x64, 0x2c, 0x5d, 0xa0, 0xa4, 0xc5, 0x1c, 0xb9, 0x3e, 0x5d, - 0xe4, 0x41, 0x24, 0x6a, 0x1f, 0xd4, 0xd1, 0x69, 0x2a, 0x12, 0xc6, 0x02, - 0xad, 0x52, 0x2c, 0x09, 0x8a, 0x9a, 0x89, 0xaf, 0xe6, 0xfc, 0xb3, 0x82, - 0x6c, 0x9d, 0x67, 0x83, 0x27, 0x5b, 0x83, 0xad, 0x46, 0x8f, 0x84, 0x54, - 0x70, 0xfa, 0x2f, 0x88, 0xed, 0x5b, 0xb0, 0xf1, 0xe8, 0x9f, 0xdc, 0x2c, - 0x1e, 0x97, 0x1d, 0x50, 0xc0, 0xa7, 0x2d, 0x6c, 0xf2, 0xc8, 0x03, 0x25, - 0x0c, 0xd0, 0xde, 0x3f, 0xfb, 0x0e, 0x01, 0x3e, 0x14, 0xed, 0xad, 0x48, - 0x76, 0xff, 0x5c, 0x4d, 0x21, 0x76, 0x4e, 0xaa, 0xcd, 0xea, 0xd1, 0xb6, - 0x24, 0x5d, 0x19, 0xf7, 0x03, 0xcc, 0x2e, 0x74, 0x60, 0x2c, 0xc9, 0x89, - 0xa9, 0x1b, 0x69, 0xc6, 0x08, 0x5c, 0x48, 0xc0, 0xf6, 0xe2, 0x14, 0xc3, - 0x84, 0x06, 0xac, 0xe6, 0xd5, 0x50, 0x3c, 0x6d, 0x60, 0xe2, 0x2b, 0x96, - 0x25, 0xe7, 0xbc, 0x89, 0xfa, 0x2d, 0x59, 0x9f, 0x43, 0x2c, 0x6c, 0x44, - 0x69, 0x5f, 0x91, 0x70, 0xc7, 0x70, 0xbf, 0xc1, 0xfc, 0x23, 0x9c, 0xe6, - 0x8a, 0x4d, 0xac, 0x2e, 0xf7, 0x1a, 0x98, 0x67, 0x25, 0x02, 0x1a, 0xcd, - 0x52, 0xa7, 0x04, 0xfc, 0x46, 0x49, 0x1f, 0xfa, 0xfe, 0x65, 0x96, 0x50, - 0x3b, 0xe3, 0xce, 0x2f, 0x0d, 0x08, 0x1e, 0x71, 0x68, 0x9a, 0xbb, 0xb0, - 0x9a, 0xe0, 0x72, 0x57, 0xec, 0x82, 0x8b, 0x2a, 0x75, 0x23, 0x63, 0xf5, - 0xe9, 0x76, 0x2b, 0x63, 0x35, 0xaf, 0x62, 0x72, 0x9d, 0x4e, 0x10, 0x36, - 0x7e, 0xcf, 0xfc, 0xd5, 0xf3, 0x18, 0xbd, 0x78, 0x73, 0xda, 0x32, 0x60, - 0xaa, 0x94, 0x21, 0x95, 0xb8, 0xfc, 0x1f, 0xa1, 0x1a, 0x9d, 0xd2, 0xfe, - 0xfa, 0xa2, 0x2c, 0x16, 0xe7, 0xa0, 0xde, 0xed, 0x05, 0x63, 0x36, 0x34, - 0x45, 0xcb, 0x28, 0x53, 0x98, 0xe9, 0x05, 0x79, 0x72, 0xd1, 0x5b, 0x4f, - 0x16, 0x98, 0x5d, 0xdd, 0x3a, 0xfb, 0x5e, 0x50, 0xa2, 0x87, 0xba, 0xe0, - 0xb0, 0x58, 0xc4, 0x75, 0x72, 0x86, 0x0c, 0xf2, 0x0f, 0xea, 0xaa, 0x2e, - 0xbd, 0xbc, 0x14, 0xd1, 0x3e, 0xc9, 0xa5, 0x4b, 0x21, 0x0d, 0x1a, 0x8a, - 0x0c, 0xaf, 0x4b, 0xd3, 0x0e, 0x29, 0xf3, 0xdd, 0xe8, 0xf0, 0xbc, 0x34, - 0xb6, 0x6e, 0x25, 0xe7, 0x8b, 0x2f, 0xb4, 0xd9, 0xf9, 0xb2, 0x1a, 0x8d, - 0x34, 0xe6, 0x4f, 0xeb, 0x8b, 0xad, 0xd5, 0xdd, 0x9a, 0x38, 0xc4, 0xfc, - 0xf2, 0x71, 0x8c, 0x5f, 0x1a, 0xa9, 0x1b, 0x93, 0x7f, 0xf8, 0x94, 0x7e, - 0x38, 0x68, 0x4f, 0xe4, 0xf9, 0x94, 0x09, 0x41, 0xde, 0x69, 0xa8, 0xbd, - 0xc8, 0xc7, 0x69, 0x39, 0xa5, 0x96, 0x2f, 0xd3, 0x6c, 0xc8, 0x4d, 0x94, - 0xa9, 0x7f, 0x36, 0x27, 0x8f, 0x13, 0xa6, 0x3a, 0x73, 0x76, 0xf8, 0x92, - 0xd8, 0xc7, 0xfb, 0xaf, 0x3c, 0xf2, 0x34, 0x0b, 0xdc, 0x93, 0x03, 0x09, - 0x13, 0x27, 0x53, 0xa7, 0x13, 0x70, 0x19, 0x12, 0xba, 0x71, 0xe1, 0x82, - 0x3a, 0x1e, 0x9d, 0x98, 0xda, 0x6d, 0x62, 0x38, 0xb3, 0xe4, 0x83, 0xcf, - 0x66, 0x40, 0xfd, 0x7a, 0x4c, 0xf4, 0xac, 0xe4, 0xdc, 0x6f, 0x24, 0x23, - 0xb9, 0xbf, 0x51, 0x1b, 0xb6, 0x4e, 0x0d, 0xb0, 0x9a, 0x9f, 0xe3, 0xca, - 0x13, 0x32, 0x51, 0x6a, 0x79, 0x99, 0x1b, 0x63, 0x52, 0x08, 0x25, 0x9a, - 0x57, 0x9f, 0xee, 0x26, 0x39, 0xb3, 0x1d, 0x9f, 0x89, 0xe4, 0xcc, 0xfc, - 0xdb, 0x5b, 0x83, 0xed, 0xc1, 0xce, 0xe0, 0xd1, 0xdd, 0xc8, 0xce, 0xde, - 0xc0, 0x65, 0x64, 0xa7, 0x93, 0x7d, 0x16, 0xb2, 0x7b, 0xfa, 0x7b, 0x93, - 0xdd, 0xd3, 0xcf, 0x44, 0x76, 0x4f, 0x6f, 0x45, 0x76, 0x4f, 0x3f, 0x33, - 0xd9, 0xc9, 0xfc, 0x3b, 0xc9, 0xd6, 0xe3, 0xdd, 0xc7, 0xe9, 0xe3, 0x9d, - 0xdd, 0xdd, 0x27, 0x4f, 0xb7, 0xef, 0x95, 0xf8, 0x1e, 0xb7, 0x89, 0xef, - 0xe9, 0x67, 0x22, 0x3e, 0x71, 0x6d, 0x19, 0xd2, 0x4b, 0x3d, 0xe2, 0x3b, - 0x95, 0xb4, 0x75, 0x6d, 0x48, 0x88, 0xe4, 0xa1, 0x6f, 0x71, 0x1a, 0x93, - 0x94, 0xfc, 0x6b, 0xb5, 0xac, 0xdb, 0xe6, 0xd5, 0x57, 0xdf, 0x49, 0x5f, - 0xd7, 0x12, 0x2b, 0x33, 0xa8, 0xa5, 0x5b, 0xcc, 0x0d, 0x30, 0xa4, 0x63, - 0x3b, 0x07, 0x91, 0xe6, 0x13, 0xcc, 0x31, 0x00, 0xc2, 0x3b, 0xc1, 0xef, - 0xe5, 0xca, 0xda, 0xca, 0xe2, 0xb6, 0x86, 0xda, 0x03, 0xc1, 0x5e, 0xed, - 0xee, 0xe1, 0xf6, 0xc4, 0xfc, 0xf8, 0xd7, 0x41, 0xb8, 0xbe, 0x34, 0x01, - 0xe9, 0x6f, 0x97, 0xd4, 0x4d, 0xab, 0xba, 0x0f, 0x2b, 0x36, 0x21, 0xbc, - 0x37, 0x5a, 0xd5, 0xf9, 0xb7, 0xbf, 0xdc, 0x19, 0x6c, 0x3f, 0x7d, 0x8e, - 0xc0, 0xab, 0x7d, 0xfb, 0xf7, 0x9d, 0xd5, 0x48, 0xb6, 0x4d, 0xb1, 0x4b, - 0x08, 0x56, 0xe7, 0xf5, 0x41, 0x1b, 0x6e, 0x49, 0xb0, 0x4c, 0xaf, 0xa8, - 0xdb, 0x09, 0xb5, 0x8e, 0x62, 0x8f, 0x3a, 0x8b, 0x0b, 0x6e, 0x9c, 0x59, - 0xd5, 0x49, 0xed, 0xe1, 0xee, 0x9c, 0x52, 0x34, 0xa2, 0xd2, 0xe6, 0x9a, - 0xfc, 0x0c, 0x99, 0x69, 0x06, 0x9f, 0xef, 0x45, 0xf1, 0x3d, 0x71, 0xce, - 0x18, 0x23, 0x27, 0x31, 0xf5, 0x9b, 0xdf, 0x58, 0xae, 0xba, 0x37, 0x67, - 0x5c, 0x1a, 0xbb, 0xb8, 0x83, 0x51, 0xd6, 0x1c, 0x7d, 0x65, 0x45, 0xbd, - 0xb5, 0x38, 0xfe, 0x89, 0xab, 0xa9, 0xc3, 0xbf, 0xb5, 0x35, 0xc8, 0xaa, - 0x45, 0x0d, 0x30, 0x92, 0x06, 0xc7, 0x9a, 0x65, 0x67, 0xad, 0xd6, 0x85, - 0xee, 0x83, 0x5d, 0x07, 0xd2, 0x0c, 0xb5, 0x7d, 0xca, 0x89, 0xb4, 0x26, - 0xbc, 0x7f, 0x33, 0xd9, 0xfd, 0xec, 0x3b, 0x1c, 0x87, 0x59, 0xd8, 0x7d, - 0x9f, 0x05, 0xda, 0x71, 0x37, 0x1d, 0x03, 0xce, 0xb6, 0x07, 0x26, 0x6c, - 0xb8, 0x27, 0x9d, 0x6d, 0x09, 0xdb, 0xdc, 0x6e, 0xd8, 0xfe, 0xe2, 0xfb, - 0x0d, 0x27, 0xe6, 0xcb, 0x21, 0x19, 0x4e, 0xbd, 0x21, 0x88, 0xe2, 0x00, - 0x38, 0x35, 0xb5, 0xb0, 0x70, 0xf1, 0x10, 0x9c, 0x44, 0x3e, 0x75, 0xc0, - 0x90, 0xe7, 0x43, 0x86, 0x28, 0xa3, 0x59, 0x8a, 0x8e, 0xbe, 0xac, 0x9a, - 0x85, 0xd0, 0x86, 0xd1, 0xee, 0x56, 0x13, 0x89, 0x16, 0xe5, 0xb7, 0x75, - 0xc2, 0x26, 0x21, 0xd4, 0x5d, 0x56, 0x33, 0xd0, 0x88, 0x9f, 0xa0, 0xaf, - 0x0f, 0x99, 0x28, 0x92, 0x12, 0xfc, 0xbd, 0x74, 0x70, 0x8e, 0x09, 0x57, - 0x92, 0xac, 0xb0, 0x40, 0xd4, 0x09, 0xc9, 0xce, 0x22, 0x2f, 0xd1, 0x4a, - 0x19, 0xeb, 0xbf, 0x22, 0x74, 0x06, 0x6e, 0xe6, 0x11, 0x51, 0x80, 0x95, - 0x66, 0x05, 0xe9, 0xf4, 0x7d, 0x71, 0x95, 0x52, 0x92, 0x65, 0x20, 0xd1, - 0xae, 0x0b, 0xcf, 0x1c, 0xd7, 0x86, 0xb9, 0x54, 0xb6, 0x41, 0x66, 0x96, - 0x5f, 0xa4, 0x88, 0x79, 0x34, 0xa6, 0x6b, 0x40, 0xf8, 0x2a, 0x81, 0xda, - 0xaf, 0xb2, 0xa0, 0x2c, 0x4c, 0xa7, 0x11, 0xe6, 0x65, 0x96, 0xb4, 0x49, - 0x4c, 0x98, 0xf1, 0x0d, 0x3c, 0xe4, 0xac, 0x5d, 0xd1, 0xb5, 0xc8, 0x09, - 0xd2, 0x79, 0x42, 0x61, 0x31, 0x02, 0x2c, 0x17, 0x1b, 0xb5, 0xd7, 0xb3, - 0x0d, 0x2a, 0x2b, 0x75, 0x87, 0xb4, 0x4f, 0xcb, 0x6d, 0x5f, 0xf3, 0xfc, - 0x49, 0x00, 0xf1, 0x80, 0x05, 0xa1, 0x50, 0xe3, 0xe7, 0xe9, 0xc4, 0xfb, - 0x3b, 0x70, 0xc1, 0xa7, 0x3b, 0x8d, 0xeb, 0xf7, 0x82, 0x3c, 0xa7, 0x8b, - 0xd9, 0x5c, 0x30, 0xbc, 0x6f, 0xc0, 0x12, 0xa6, 0xa0, 0xe3, 0x46, 0xf4, - 0x03, 0x81, 0x5f, 0x71, 0xe6, 0x9f, 0xa0, 0x37, 0x6a, 0x1c, 0xd2, 0xa0, - 0xb5, 0x69, 0xf2, 0x57, 0x47, 0x63, 0x40, 0xc6, 0x40, 0x63, 0x2c, 0x41, - 0xb7, 0x17, 0xab, 0x0e, 0xd8, 0x6f, 0x06, 0x4c, 0xac, 0x3f, 0x5f, 0x50, - 0x8f, 0xbc, 0x70, 0xa7, 0x90, 0x44, 0x10, 0x2f, 0xb6, 0x01, 0xe6, 0xc4, - 0x00, 0x3b, 0x17, 0x1c, 0x52, 0x11, 0xe6, 0x61, 0x3a, 0xd2, 0x72, 0xba, - 0x1d, 0xa3, 0xb6, 0xd9, 0x26, 0x1b, 0x5e, 0xa7, 0x10, 0xa2, 0x3a, 0x59, - 0x76, 0x4f, 0xda, 0x4c, 0x2e, 0x24, 0x4d, 0x0f, 0x5b, 0xc7, 0x72, 0x7b, - 0x43, 0x6f, 0x1d, 0xdf, 0x27, 0x97, 0x24, 0x0b, 0x1c, 0xde, 0xaf, 0x21, - 0x1d, 0x4e, 0xa4, 0xc1, 0xa4, 0x1e, 0x02, 0x73, 0x99, 0x58, 0x5c, 0xd7, - 0x2a, 0x5a, 0xcf, 0x06, 0xb0, 0x57, 0xfe, 0xe5, 0x05, 0x2a, 0xa7, 0xb4, - 0x08, 0x7c, 0x2b, 0xde, 0xed, 0x53, 0x84, 0xfd, 0x23, 0x16, 0xb4, 0x27, - 0xf0, 0xad, 0x1b, 0x7d, 0x29, 0x0d, 0xa8, 0x18, 0x38, 0xc0, 0x54, 0x95, - 0x52, 0x86, 0x2b, 0xc1, 0x91, 0x79, 0xc0, 0x06, 0x4e, 0x6b, 0xcb, 0x24, - 0xe2, 0xce, 0x7d, 0xc1, 0x06, 0x9b, 0x54, 0x94, 0xfe, 0x82, 0xdd, 0xbe, - 0x0e, 0xed, 0x3c, 0x28, 0x02, 0x77, 0xe7, 0x9d, 0x71, 0x16, 0x40, 0x78, - 0x7a, 0xab, 0xc3, 0x4c, 0x38, 0xe0, 0x58, 0xae, 0x64, 0x4a, 0xcf, 0x39, - 0x49, 0x6c, 0x19, 0x3a, 0xc8, 0x8b, 0x14, 0x2b, 0x8a, 0x18, 0xb9, 0x97, - 0xe9, 0x73, 0xdd, 0x41, 0x56, 0x79, 0xfe, 0x18, 0x1b, 0xfd, 0x59, 0x47, - 0x7d, 0x2d, 0x39, 0x61, 0x18, 0x3e, 0xf2, 0x12, 0x33, 0xc7, 0x44, 0xc4, - 0xec, 0x8f, 0x2b, 0x14, 0x70, 0x68, 0x62, 0xb5, 0x4b, 0xba, 0x0b, 0x60, - 0x4a, 0x98, 0xa2, 0x63, 0x20, 0x12, 0x41, 0x10, 0xe8, 0xec, 0x25, 0x68, - 0x50, 0xbc, 0x34, 0xfb, 0x96, 0x42, 0x8f, 0x39, 0xb0, 0xe9, 0xf9, 0x75, - 0x14, 0x7d, 0x97, 0x20, 0x99, 0x12, 0x45, 0xbe, 0x48, 0xd2, 0x19, 0x25, - 0xf3, 0x14, 0x98, 0xb1, 0x15, 0x92, 0x74, 0xf2, 0x2b, 0xa7, 0xb6, 0x96, - 0xdd, 0x99, 0x12, 0x69, 0x00, 0x3a, 0x1e, 0x83, 0x4d, 0x2d, 0x18, 0x9b, - 0x28, 0xd5, 0xa8, 0xa1, 0x3a, 0x61, 0x3a, 0x84, 0x91, 0xba, 0x83, 0xfc, - 0xd7, 0xec, 0xf9, 0x6d, 0xed, 0xe5, 0x7b, 0xe5, 0xbf, 0x66, 0xf6, 0x4d, - 0xfe, 0x9c, 0x4d, 0x6a, 0x52, 0xba, 0x62, 0x77, 0x04, 0x7a, 0xd3, 0xcb, - 0x2e, 0x94, 0x8d, 0xd9, 0x0b, 0xb2, 0x56, 0x22, 0x25, 0x18, 0x64, 0xaa, - 0x6d, 0x4a, 0x14, 0x19, 0x62, 0x54, 0x5e, 0xcf, 0x31, 0x8c, 0x20, 0x08, - 0xd6, 0x4c, 0x04, 0xb8, 0xb9, 0x8c, 0xab, 0xb0, 0x14, 0x08, 0xfd, 0x1d, - 0x25, 0xf3, 0xca, 0xab, 0x64, 0x9b, 0x52, 0xe2, 0x2b, 0x36, 0xa1, 0x4e, - 0x8c, 0xad, 0x8a, 0xd4, 0x35, 0xa6, 0x06, 0x36, 0x36, 0x72, 0xd4, 0xf6, - 0xe0, 0xd3, 0x08, 0x95, 0x5b, 0x1d, 0x24, 0x29, 0x87, 0x40, 0xeb, 0x98, - 0x42, 0xa5, 0x00, 0x71, 0x98, 0xca, 0xb6, 0x61, 0xa1, 0xae, 0xf4, 0x45, - 0xcf, 0xc8, 0x25, 0x13, 0xd6, 0x62, 0x90, 0xd8, 0xb0, 0x44, 0x07, 0xf8, - 0x85, 0x7c, 0xc2, 0xe7, 0x01, 0xbf, 0x50, 0x82, 0x9e, 0x26, 0x97, 0xb0, - 0xed, 0x77, 0x02, 0xbf, 0x50, 0xf8, 0x1a, 0x82, 0xd1, 0x68, 0xd0, 0x44, - 0x9d, 0x9c, 0xc7, 0xd2, 0xf1, 0xa4, 0x83, 0xc9, 0x38, 0x91, 0x25, 0xe1, - 0x2f, 0x5c, 0xb0, 0x46, 0x55, 0xae, 0x26, 0xf1, 0x86, 0x44, 0xb3, 0x16, - 0xdb, 0x48, 0x17, 0x1a, 0x94, 0xbc, 0x5e, 0xca, 0x1e, 0xf9, 0xd5, 0x0e, - 0xcf, 0x92, 0xf3, 0x46, 0x76, 0x7a, 0xa3, 0xcf, 0x10, 0x47, 0x36, 0x19, - 0x7b, 0x26, 0x67, 0xd3, 0x05, 0x01, 0xff, 0x41, 0xc7, 0xf5, 0x52, 0x84, - 0x8f, 0x26, 0xf1, 0x1b, 0x38, 0xf3, 0xf8, 0x35, 0x55, 0x83, 0x0a, 0x0f, - 0xb6, 0xea, 0xb4, 0x00, 0xf7, 0xe2, 0x74, 0x83, 0x60, 0xbb, 0xa3, 0x51, - 0x51, 0x4a, 0xd3, 0x21, 0x2c, 0x5c, 0x83, 0x43, 0x24, 0x30, 0x98, 0xca, - 0x34, 0x7f, 0x68, 0xd6, 0x16, 0xd1, 0xc2, 0xb4, 0x6d, 0x6f, 0x08, 0x6c, - 0x3c, 0x69, 0x34, 0x6a, 0xb5, 0xf9, 0x81, 0xe3, 0xb4, 0xa2, 0x76, 0xad, - 0xbc, 0x92, 0x28, 0xda, 0xcf, 0x4d, 0xc3, 0x1b, 0x0d, 0xe3, 0xfa, 0x15, - 0xc1, 0xa2, 0x4c, 0x1a, 0xbd, 0x22, 0xf8, 0x15, 0xef, 0x4c, 0x67, 0x1c, - 0x55, 0x53, 0xe5, 0x50, 0x51, 0x09, 0x90, 0x5e, 0x16, 0x18, 0x6f, 0xa6, - 0x7f, 0x12, 0xeb, 0xc5, 0xad, 0x97, 0x8a, 0x00, 0xdf, 0xdf, 0xc0, 0x3a, - 0x48, 0x5f, 0xdb, 0x56, 0xe7, 0x52, 0x44, 0xe3, 0xe0, 0xaf, 0x15, 0xda, - 0x20, 0x47, 0x10, 0xb5, 0x2a, 0xad, 0xd4, 0x23, 0xad, 0xa3, 0x4d, 0xd9, - 0x38, 0x19, 0xe3, 0x64, 0x2c, 0x86, 0xdc, 0x5a, 0xd0, 0x34, 0x78, 0xea, - 0xba, 0x6a, 0x2e, 0x45, 0xfe, 0xfe, 0x2e, 0xcb, 0xc6, 0xf4, 0xf8, 0x8f, - 0x3b, 0x40, 0x46, 0xd9, 0xfd, 0xa7, 0x6b, 0xf7, 0x1b, 0xca, 0x76, 0x5c, - 0x35, 0x86, 0x77, 0xc7, 0x4d, 0x55, 0xf8, 0x79, 0xd3, 0x12, 0xb5, 0x6f, - 0xde, 0xf6, 0x2e, 0xe2, 0xc3, 0x15, 0xd7, 0x9b, 0xc1, 0x05, 0xa4, 0xfd, - 0x6e, 0xab, 0xbd, 0xa2, 0xe8, 0x02, 0xd1, 0x85, 0x4e, 0x87, 0x78, 0x1a, - 0x5e, 0xaf, 0x64, 0x74, 0x21, 0x70, 0xe0, 0x53, 0x52, 0x26, 0xe4, 0x36, - 0x61, 0x51, 0x10, 0x67, 0x58, 0x72, 0x99, 0x88, 0x02, 0x9f, 0x74, 0xd1, - 0x4e, 0x07, 0x58, 0x37, 0x53, 0x42, 0xc5, 0xb9, 0xb7, 0x0d, 0x34, 0x8f, - 0x7e, 0x53, 0x73, 0x26, 0x24, 0x59, 0x85, 0xcd, 0x0c, 0xca, 0x67, 0xb3, - 0x47, 0xab, 0xe5, 0x4d, 0xdf, 0x13, 0x33, 0x36, 0xb3, 0x13, 0x6f, 0xf9, - 0x04, 0x02, 0x11, 0x22, 0x5b, 0x4e, 0x0f, 0x54, 0xe0, 0xba, 0xbd, 0xb5, - 0x65, 0xfb, 0x2f, 0x76, 0x34, 0x5d, 0x14, 0xd2, 0x58, 0xda, 0x7b, 0x91, - 0x60, 0xc2, 0x29, 0x51, 0xdd, 0xf4, 0x5b, 0x49, 0x32, 0xe6, 0xd6, 0xed, - 0x98, 0x39, 0x4e, 0xa9, 0x9d, 0x6d, 0x22, 0x6b, 0x9b, 0x70, 0x14, 0x84, - 0x1b, 0x7a, 0x52, 0x07, 0x46, 0x38, 0xba, 0x43, 0x5a, 0x63, 0xb5, 0xdb, - 0x78, 0x27, 0x8c, 0x4b, 0x9f, 0x71, 0xfb, 0x64, 0x65, 0x00, 0xd1, 0xb7, - 0xd7, 0x36, 0xe3, 0x84, 0x5d, 0x99, 0xf8, 0x6b, 0x86, 0xab, 0xe4, 0x95, - 0x4b, 0xa8, 0x39, 0x5c, 0x93, 0xd1, 0xd1, 0x72, 0xf1, 0x3f, 0x1c, 0xb8, - 0x4c, 0x38, 0xa4, 0x79, 0x45, 0xe3, 0x52, 0x17, 0x2f, 0x6e, 0xef, 0xe8, - 0x6b, 0x2b, 0xd4, 0xee, 0x31, 0xa9, 0xb4, 0x04, 0xc1, 0x7c, 0x2f, 0x3a, - 0xc4, 0x86, 0x29, 0x35, 0xb0, 0x60, 0x9b, 0x30, 0x58, 0x88, 0xd4, 0xec, - 0xee, 0x68, 0xba, 0x82, 0x75, 0xb6, 0x72, 0x24, 0xdc, 0x6e, 0x79, 0x29, - 0x6c, 0x00, 0xa1, 0x68, 0x6a, 0xf5, 0x76, 0xbc, 0x55, 0x37, 0x47, 0xaf, - 0x47, 0xcb, 0x0d, 0xdd, 0x1d, 0xf9, 0x42, 0x79, 0x44, 0x76, 0xc3, 0xc5, - 0x7a, 0x18, 0x6c, 0x4c, 0x7f, 0x19, 0x3b, 0x83, 0x27, 0x06, 0x6c, 0x71, - 0x45, 0xb5, 0xa7, 0xd9, 0x59, 0xd1, 0xbd, 0x52, 0xd8, 0x97, 0x24, 0xa6, - 0xee, 0x23, 0x6d, 0x7d, 0x00, 0x1b, 0x96, 0x20, 0xc3, 0xa6, 0x8c, 0x19, - 0x83, 0x65, 0x8a, 0xc2, 0x73, 0x9c, 0xd6, 0x52, 0x67, 0xae, 0x1e, 0x32, - 0x6a, 0x63, 0x32, 0x58, 0xd2, 0xff, 0xd9, 0xc1, 0x69, 0x75, 0x71, 0xf4, - 0xad, 0xb1, 0x1d, 0x4a, 0xfb, 0x0a, 0x64, 0xec, 0xdb, 0xdc, 0x6f, 0x31, - 0xc7, 0xa9, 0x4e, 0x94, 0x22, 0x2a, 0xac, 0x2d, 0x81, 0x05, 0xde, 0xe7, - 0x1b, 0x83, 0x0a, 0x53, 0x41, 0xed, 0x28, 0xe0, 0x5e, 0x75, 0x85, 0x8a, - 0xb8, 0x6b, 0xaf, 0x60, 0xbd, 0x21, 0x20, 0x3f, 0x7e, 0x88, 0x12, 0x3e, - 0x3a, 0xc6, 0xb0, 0x7c, 0x14, 0xd3, 0x33, 0xc9, 0xb2, 0x97, 0x28, 0x0f, - 0x2b, 0x03, 0xed, 0xb2, 0xc0, 0x84, 0x5b, 0xdb, 0xad, 0x21, 0x06, 0x3a, - 0x65, 0x32, 0xd3, 0x3e, 0x95, 0x33, 0xf2, 0x5f, 0x10, 0x5a, 0x0b, 0xf7, - 0x7a, 0xa1, 0xd4, 0x60, 0x6d, 0x70, 0x43, 0x95, 0x86, 0x03, 0xf4, 0x49, - 0xb6, 0x75, 0x7c, 0x82, 0xee, 0xc1, 0xd3, 0x59, 0x94, 0x52, 0x6e, 0xd8, - 0xbb, 0xc8, 0x80, 0x35, 0xe6, 0x3d, 0x6a, 0xcf, 0x6e, 0xf5, 0x07, 0x99, - 0x0d, 0x93, 0x8f, 0x6c, 0x3a, 0xea, 0x17, 0xc1, 0x56, 0x32, 0x0d, 0x4c, - 0xa6, 0x7e, 0xd4, 0xee, 0x2b, 0xa0, 0x65, 0x8f, 0xb2, 0x52, 0xf7, 0xcc, - 0x3b, 0x1a, 0xa7, 0x31, 0x23, 0xc5, 0x55, 0x92, 0x07, 0x77, 0x9c, 0x12, - 0xf2, 0x41, 0x6e, 0xda, 0x0c, 0x24, 0x33, 0x4c, 0x83, 0xc1, 0x7f, 0xd1, - 0xfe, 0x71, 0x41, 0x4a, 0xe2, 0x79, 0xf7, 0xa5, 0x43, 0x5c, 0xa8, 0xd8, - 0x90, 0x84, 0xfb, 0x55, 0x72, 0x4d, 0x78, 0xd2, 0x66, 0x5a, 0xb3, 0x2f, - 0xe7, 0x60, 0x80, 0x79, 0xd7, 0xdc, 0xd0, 0x27, 0x6e, 0xd4, 0xa8, 0xcc, - 0xe6, 0x35, 0x6b, 0xfc, 0x5d, 0x09, 0x56, 0xae, 0x02, 0x61, 0xf2, 0x6c, - 0x33, 0xb8, 0x57, 0xd7, 0x51, 0x3c, 0xe9, 0xcb, 0x25, 0xd1, 0x66, 0x13, - 0xa3, 0x84, 0x5b, 0xa8, 0x19, 0xca, 0xf5, 0x1c, 0xc2, 0xd4, 0xea, 0x87, - 0x7a, 0x81, 0x34, 0xeb, 0x2d, 0xd7, 0xa4, 0xc2, 0x47, 0x42, 0x2c, 0x54, - 0x23, 0x1d, 0xfd, 0x03, 0x84, 0x10, 0xa6, 0xec, 0x0a, 0x38, 0x77, 0x80, - 0xb0, 0xb0, 0xd5, 0xb3, 0x38, 0xaa, 0xfb, 0xd1, 0x05, 0x7b, 0x8e, 0x71, - 0x85, 0xa9, 0xb3, 0x38, 0x85, 0x4c, 0x39, 0x9f, 0x16, 0xc3, 0x84, 0xaf, - 0x2d, 0x37, 0xda, 0xf3, 0xd5, 0x92, 0x09, 0x37, 0x38, 0x20, 0xa5, 0x9d, - 0xb7, 0xc8, 0x3a, 0xaa, 0x96, 0xee, 0x0c, 0xfc, 0xcd, 0x19, 0xde, 0xec, - 0x93, 0xa6, 0xc7, 0x0e, 0x1b, 0x2a, 0x56, 0xc1, 0x61, 0xce, 0x40, 0x81, - 0x46, 0x31, 0xe9, 0x9a, 0xcc, 0x0d, 0x96, 0x59, 0xb6, 0x74, 0xeb, 0x1a, - 0x1f, 0x2f, 0x1e, 0xdd, 0x11, 0x97, 0xb1, 0x43, 0xaf, 0xca, 0x92, 0x9d, - 0x45, 0x05, 0xf8, 0xaf, 0xf9, 0x19, 0x1c, 0x98, 0xfa, 0x88, 0xbb, 0x79, - 0xb2, 0x3d, 0x3a, 0xb6, 0x45, 0x69, 0x6c, 0x5c, 0x64, 0x3c, 0x2c, 0xc6, - 0xd7, 0x0d, 0x2d, 0xe8, 0x49, 0xd3, 0x41, 0xdc, 0x7a, 0x34, 0xac, 0xf8, - 0xbc, 0x65, 0xa8, 0x62, 0xf7, 0x2e, 0x6b, 0xd1, 0x2f, 0x73, 0x38, 0xea, - 0x1f, 0x68, 0x9b, 0x08, 0x19, 0x19, 0xef, 0x65, 0xd7, 0x8e, 0xc5, 0xce, - 0xc7, 0x46, 0x79, 0x84, 0x87, 0x7e, 0x4e, 0xda, 0x68, 0xb9, 0x31, 0x88, - 0x8e, 0x72, 0x49, 0x78, 0x17, 0x44, 0x21, 0x86, 0x83, 0xc8, 0x5d, 0x1c, - 0x89, 0xc0, 0xd5, 0xa8, 0xa4, 0x18, 0x30, 0xc3, 0xd5, 0xa0, 0x16, 0x30, - 0xb2, 0xcd, 0x69, 0x1c, 0x1e, 0x44, 0x80, 0x11, 0xfa, 0x4b, 0xba, 0x33, - 0x7e, 0xaa, 0x09, 0x6c, 0xa4, 0x24, 0xd3, 0x71, 0xb3, 0x08, 0xda, 0x5a, - 0xc5, 0x85, 0xc3, 0xf5, 0x5c, 0xd3, 0xee, 0x22, 0x03, 0xdf, 0x10, 0x56, - 0x22, 0x05, 0x94, 0x0c, 0x83, 0x1a, 0x6c, 0xdf, 0x85, 0xd1, 0x2a, 0x81, - 0x41, 0x67, 0xae, 0xc1, 0xa6, 0x62, 0x62, 0x80, 0x01, 0x39, 0xdc, 0x82, - 0x53, 0x51, 0xf1, 0x3c, 0x6d, 0x34, 0xed, 0x6a, 0x6b, 0xb8, 0x9d, 0x9d, - 0xf0, 0x7d, 0xd2, 0xcc, 0xfa, 0x1a, 0x53, 0x22, 0x29, 0xd7, 0xdc, 0x1a, - 0x93, 0x48, 0x17, 0x4a, 0x18, 0xc2, 0x70, 0xdc, 0x76, 0x47, 0x21, 0x4e, - 0x63, 0xbc, 0x0b, 0xd4, 0x84, 0x22, 0x2b, 0x61, 0xc7, 0x60, 0xb7, 0x72, - 0x84, 0x41, 0xd0, 0x6a, 0x02, 0xd4, 0x1e, 0x2a, 0xf6, 0x74, 0x3b, 0xf0, - 0x18, 0xcb, 0x63, 0xa3, 0x4d, 0x2a, 0x8b, 0x6e, 0x73, 0x0d, 0x6f, 0x1f, - 0x1b, 0x6d, 0x51, 0xfb, 0x5d, 0xee, 0xa1, 0x5d, 0xda, 0x4a, 0xba, 0x50, - 0xf0, 0xde, 0x31, 0x37, 0xf0, 0xe3, 0x5b, 0xa6, 0x9c, 0xce, 0x07, 0xad, - 0x74, 0x8a, 0xeb, 0xcc, 0x90, 0xcb, 0xa2, 0xaa, 0xe6, 0xa1, 0xf0, 0x7d, - 0x25, 0x6d, 0x6b, 0x82, 0x2a, 0x84, 0x82, 0x7e, 0x0a, 0x09, 0x26, 0xec, - 0xd7, 0x6b, 0xdf, 0x5f, 0x53, 0x10, 0xea, 0x73, 0x58, 0x54, 0x04, 0x88, - 0x88, 0xa5, 0xde, 0xa3, 0x21, 0x02, 0x17, 0x95, 0x49, 0xac, 0xa1, 0xca, - 0xb1, 0x71, 0x0a, 0xb7, 0x97, 0xa6, 0xc4, 0xb5, 0xf9, 0xad, 0xa0, 0x44, - 0xdf, 0xba, 0xd5, 0x5d, 0x0f, 0xdc, 0xee, 0xb6, 0x60, 0x5e, 0xe5, 0xae, - 0xd3, 0xf5, 0xd6, 0xfb, 0xcd, 0x17, 0x3c, 0xd8, 0x59, 0x6a, 0xf9, 0x7d, - 0xa7, 0xeb, 0x6e, 0x4a, 0x60, 0x89, 0x80, 0xc8, 0xdb, 0x13, 0x6e, 0xaf, - 0x58, 0x9b, 0x06, 0x37, 0xdc, 0x99, 0xdd, 0xde, 0xed, 0xce, 0xdb, 0x3c, - 0x4b, 0xe1, 0x7e, 0x8d, 0x55, 0x00, 0xd3, 0x1e, 0x80, 0x41, 0x3c, 0x91, - 0x94, 0x2c, 0x51, 0x23, 0x39, 0x7c, 0x55, 0x8c, 0x60, 0xef, 0x28, 0x50, - 0xc0, 0xec, 0xd7, 0x2f, 0x20, 0x8f, 0x1d, 0x65, 0xce, 0x9a, 0x5d, 0xc8, - 0x84, 0x41, 0xab, 0x9c, 0x66, 0x73, 0xcd, 0x47, 0xee, 0x47, 0xa9, 0x00, - 0x46, 0x80, 0x2c, 0xe2, 0xa3, 0x58, 0xc4, 0x7e, 0xf5, 0x80, 0xa9, 0x1f, - 0xe6, 0xae, 0x5f, 0x97, 0x18, 0x3e, 0x1f, 0x47, 0xeb, 0xad, 0x81, 0x1f, - 0x6f, 0x6d, 0xd3, 0x5a, 0x1f, 0x6f, 0x3d, 0x5b, 0x9a, 0xc1, 0x62, 0xaf, - 0xce, 0x6d, 0x52, 0x57, 0xa2, 0x95, 0x85, 0xf2, 0x5d, 0xd8, 0xc0, 0xaa, - 0xad, 0x29, 0x9a, 0x9c, 0xa3, 0x83, 0x05, 0x34, 0x31, 0x0e, 0xbc, 0x4f, - 0x08, 0x94, 0xd7, 0x76, 0xf1, 0x33, 0xfc, 0xcd, 0xb4, 0x4a, 0x63, 0x42, - 0x6d, 0x09, 0xc7, 0x18, 0x18, 0x05, 0xdd, 0xca, 0x1e, 0x8a, 0x27, 0xe0, - 0x4b, 0x02, 0xf5, 0x22, 0xb0, 0xe7, 0xc8, 0xb7, 0xe1, 0x05, 0x6a, 0x72, - 0x56, 0x5d, 0x80, 0x44, 0x18, 0x78, 0xf6, 0x9a, 0x7d, 0x87, 0xcb, 0xfa, - 0x51, 0x74, 0xb3, 0x98, 0x4f, 0xe8, 0x55, 0x86, 0xd5, 0xe6, 0x47, 0x2a, - 0xe3, 0x4b, 0x5e, 0x02, 0x8f, 0x24, 0x58, 0xb3, 0x5c, 0x9f, 0x46, 0xb9, - 0x08, 0xd7, 0xc6, 0x93, 0xac, 0x1a, 0xed, 0xcb, 0x2c, 0xcf, 0xaa, 0x0b, - 0xf4, 0x8f, 0xcd, 0xb0, 0x5a, 0xeb, 0x9c, 0x8b, 0x75, 0xbc, 0x84, 0x2a, - 0x91, 0x3e, 0x49, 0x04, 0xe4, 0x8b, 0xe6, 0x13, 0x70, 0x24, 0xa6, 0x5b, - 0x81, 0xab, 0xe4, 0x5f, 0x72, 0x37, 0x6f, 0xfb, 0x85, 0xc1, 0xfc, 0x83, - 0x8c, 0x77, 0x0b, 0x91, 0xc2, 0xe1, 0x20, 0x18, 0x2a, 0x01, 0x8f, 0x1e, - 0x79, 0x87, 0x05, 0x0b, 0x3c, 0xe5, 0xc4, 0x86, 0x33, 0x82, 0x15, 0xc7, - 0x14, 0xb0, 0x75, 0xbf, 0x5c, 0xfa, 0xf8, 0x14, 0xf8, 0xf4, 0x16, 0x2a, - 0x35, 0xe8, 0xe2, 0x2b, 0x09, 0xf5, 0x06, 0x7e, 0xf6, 0x23, 0x66, 0x04, - 0x7f, 0x69, 0x7e, 0xbc, 0x41, 0x3d, 0xa3, 0xd2, 0x7c, 0x7c, 0x83, 0xc2, - 0x6a, 0xce, 0xf9, 0x01, 0xfa, 0xbb, 0x38, 0xa3, 0xaf, 0x7e, 0x4b, 0xec, - 0xc2, 0x56, 0xbb, 0x2c, 0xf5, 0x68, 0x1e, 0xa3, 0x48, 0x42, 0xc0, 0xf9, - 0x06, 0x49, 0x23, 0x5c, 0x56, 0x4a, 0x2d, 0xbc, 0xba, 0x70, 0x4e, 0x1b, - 0x25, 0x37, 0x84, 0xd9, 0x25, 0xe5, 0x4b, 0x14, 0x23, 0xe5, 0xfd, 0xc1, - 0x05, 0x59, 0x28, 0xa9, 0x2a, 0x00, 0x0e, 0xc2, 0xad, 0x5c, 0xa4, 0x3d, - 0x17, 0x9c, 0x41, 0x05, 0x36, 0xf6, 0x05, 0xcf, 0xcc, 0xe0, 0x79, 0x26, - 0x63, 0x08, 0xa8, 0x68, 0x84, 0x80, 0x5f, 0x9d, 0x78, 0xa7, 0xe4, 0xd9, - 0x71, 0x16, 0xfe, 0x59, 0x72, 0x2a, 0xdd, 0xf9, 0xe3, 0x97, 0xd1, 0x1a, - 0x7d, 0xf8, 0xcf, 0x06, 0x15, 0x66, 0x4d, 0x7e, 0x38, 0x4d, 0xbf, 0xfa, - 0x06, 0xf1, 0x50, 0x7a, 0x68, 0xad, 0xaf, 0xad, 0x76, 0x68, 0x16, 0xad, - 0xcc, 0xd5, 0x45, 0x9e, 0xb7, 0xaa, 0x65, 0x68, 0x21, 0x92, 0xaa, 0x43, - 0xf1, 0xcf, 0xaf, 0xf8, 0x1f, 0x1d, 0x19, 0x26, 0xd4, 0x9e, 0x24, 0x3a, - 0x7a, 0xbd, 0x8f, 0x67, 0x7b, 0x2a, 0x90, 0xb5, 0x2d, 0xb0, 0x17, 0x17, - 0xc7, 0x1b, 0x37, 0x30, 0xb4, 0x6b, 0x32, 0xa3, 0x2a, 0xac, 0x8c, 0x01, - 0xd5, 0xe8, 0x83, 0xc0, 0x51, 0xec, 0x69, 0x56, 0xe3, 0x79, 0x20, 0x3f, - 0x8e, 0x5e, 0xc1, 0x09, 0x93, 0x32, 0xb0, 0xf6, 0xcd, 0x5a, 0xa0, 0xa0, - 0x7e, 0x6d, 0x6f, 0xcd, 0xa2, 0x2b, 0x55, 0x26, 0x50, 0x13, 0xad, 0xfd, - 0x05, 0xb1, 0xdf, 0xb0, 0x23, 0x26, 0xcf, 0x29, 0x5c, 0x81, 0x3d, 0x72, - 0x04, 0xb9, 0x94, 0x17, 0x1d, 0xc0, 0xc7, 0xc0, 0xc8, 0x12, 0x2c, 0x03, - 0x1b, 0x44, 0x0d, 0xa4, 0x0b, 0xee, 0x64, 0x97, 0x52, 0x9e, 0x57, 0xe3, - 0xcb, 0xd5, 0x57, 0x14, 0xaa, 0x9f, 0xbd, 0x96, 0x58, 0x2c, 0xb6, 0x65, - 0xb8, 0x76, 0x42, 0x68, 0xbc, 0x28, 0x5e, 0x0d, 0x65, 0x14, 0x8f, 0x46, - 0xd4, 0xf8, 0x81, 0x64, 0x0b, 0x72, 0xc7, 0x73, 0xaf, 0x29, 0x05, 0xe3, - 0x7c, 0xe3, 0x36, 0x20, 0x67, 0xc2, 0xef, 0x9e, 0x80, 0x1d, 0x46, 0x4e, - 0x10, 0x34, 0xa9, 0x97, 0xc1, 0xd4, 0xb9, 0xc7, 0xfd, 0x70, 0xf8, 0xd7, - 0xee, 0x2c, 0x3d, 0x94, 0x1c, 0xbd, 0xbb, 0x92, 0xae, 0xa5, 0x54, 0xbb, - 0xcb, 0x7b, 0x2e, 0xd0, 0xeb, 0x2d, 0xe8, 0x14, 0xc3, 0x99, 0xf4, 0x53, - 0x93, 0x06, 0x35, 0x49, 0x80, 0x70, 0xaf, 0xa5, 0x14, 0x79, 0x9a, 0xaa, - 0x36, 0x98, 0xce, 0x3c, 0x09, 0x3f, 0x65, 0xdc, 0x36, 0xc6, 0x2f, 0x8c, - 0x61, 0x5f, 0xf8, 0x9c, 0x73, 0x31, 0xc8, 0x04, 0xf0, 0x90, 0xb9, 0x3a, - 0x23, 0x19, 0x8e, 0x35, 0xe8, 0x47, 0x58, 0x86, 0xed, 0xe4, 0x24, 0x41, - 0x36, 0x14, 0xf9, 0x25, 0x0e, 0x24, 0x2b, 0xf1, 0x09, 0x98, 0x91, 0x44, - 0xad, 0x8d, 0xd4, 0xba, 0x58, 0xec, 0xed, 0x70, 0xbd, 0x72, 0xcf, 0x4d, - 0xda, 0x71, 0x06, 0x90, 0x6c, 0xb7, 0x3a, 0xd9, 0x79, 0xf4, 0xfc, 0x79, - 0x30, 0xc4, 0xcb, 0xad, 0x86, 0xe0, 0x84, 0x71, 0x9b, 0xbc, 0x96, 0x57, - 0xec, 0x34, 0xa2, 0x1b, 0x50, 0x69, 0x6c, 0x13, 0xbb, 0x4e, 0x27, 0x38, - 0xab, 0xaf, 0x22, 0x10, 0x0f, 0x9f, 0x91, 0x46, 0xc8, 0xc2, 0x9f, 0x1c, - 0x5e, 0x28, 0x72, 0x67, 0x59, 0x87, 0x33, 0x49, 0xf1, 0x2d, 0x18, 0xf2, - 0x89, 0xb0, 0x9c, 0x27, 0x0a, 0x6d, 0xcf, 0xfc, 0x3e, 0xad, 0x47, 0x04, - 0x47, 0xc8, 0x48, 0x08, 0xbc, 0xaf, 0x6b, 0x1d, 0xa8, 0xf6, 0x6b, 0x91, - 0x16, 0xd8, 0x0d, 0x53, 0xd3, 0xd2, 0x11, 0x6f, 0x6a, 0xf6, 0xb1, 0xd5, - 0x6e, 0x95, 0xc1, 0xff, 0x72, 0xc4, 0x52, 0xce, 0xce, 0x09, 0xef, 0xb0, - 0x35, 0x1c, 0x35, 0xb1, 0x38, 0x4f, 0x6b, 0x1f, 0x14, 0xd8, 0xc1, 0x8b, - 0x5b, 0x32, 0x78, 0x08, 0x12, 0x4f, 0xf0, 0x8c, 0xa3, 0x3d, 0xd3, 0x13, - 0x39, 0x9b, 0x28, 0x13, 0x41, 0x0b, 0xec, 0x0a, 0x63, 0x29, 0xdf, 0xd0, - 0x71, 0xec, 0xc9, 0xde, 0x0b, 0x94, 0xf7, 0x37, 0x5e, 0x8e, 0x06, 0xe7, - 0x18, 0xd0, 0x9c, 0xd4, 0xad, 0xbb, 0xae, 0x93, 0xd1, 0x85, 0xd5, 0x77, - 0x08, 0x64, 0x90, 0x3a, 0xf7, 0x4a, 0x08, 0x9d, 0x37, 0x98, 0x91, 0x9e, - 0xbc, 0x1a, 0x6c, 0x42, 0xfa, 0x36, 0x83, 0x22, 0xac, 0x8f, 0x00, 0x3a, - 0xe2, 0x52, 0x42, 0x3b, 0x51, 0x09, 0xd7, 0x46, 0x06, 0x06, 0x4f, 0x7b, - 0x82, 0x1a, 0xdf, 0x75, 0xf6, 0xc9, 0x3f, 0x7b, 0x5b, 0x5c, 0x64, 0xbb, - 0xce, 0xf2, 0x1e, 0xdb, 0xe6, 0xb5, 0xae, 0x44, 0x97, 0x4f, 0x1d, 0x86, - 0x3b, 0xb8, 0xc5, 0xf8, 0xa9, 0xb6, 0x13, 0x05, 0x51, 0xd6, 0x79, 0x91, - 0xf2, 0x2a, 0xa9, 0x93, 0xa7, 0xee, 0x2a, 0xa6, 0x0c, 0xd6, 0xe5, 0x02, - 0x9b, 0x1d, 0x71, 0x3c, 0x82, 0x66, 0x0a, 0x8b, 0xf3, 0x7e, 0xf3, 0x8b, - 0xb1, 0x7a, 0x77, 0x41, 0xe7, 0x45, 0xbb, 0x3c, 0x4b, 0x67, 0x45, 0xa9, - 0xc8, 0x0e, 0xb0, 0x2e, 0x03, 0x27, 0xe1, 0xd7, 0x90, 0xb3, 0xd7, 0x9f, - 0x82, 0x7b, 0x55, 0xf6, 0x1b, 0xc7, 0xbd, 0x05, 0x10, 0x4c, 0x93, 0x73, - 0x28, 0xaa, 0x86, 0x4a, 0x65, 0xf4, 0x02, 0x08, 0x2a, 0x67, 0xfd, 0x97, - 0xe8, 0x6d, 0xad, 0xf2, 0x1b, 0x98, 0x1a, 0xf0, 0x44, 0x96, 0x99, 0x68, - 0x29, 0x96, 0xe9, 0xf9, 0x02, 0xe5, 0x30, 0xe3, 0x3b, 0x83, 0xdd, 0x78, - 0xc1, 0xc7, 0x2f, 0x52, 0x35, 0x9b, 0x6b, 0x4d, 0xb1, 0x87, 0x61, 0x01, - 0x6f, 0x6d, 0x44, 0xa6, 0x71, 0xec, 0x62, 0xf8, 0x2b, 0xe5, 0x38, 0x15, - 0xf2, 0xb1, 0x1c, 0x39, 0x1b, 0xbb, 0x7d, 0xa2, 0xe9, 0xb8, 0xf0, 0xe4, - 0x43, 0x1d, 0x8f, 0x67, 0x19, 0x37, 0x5f, 0x42, 0x21, 0xf2, 0x17, 0x27, - 0x11, 0x9a, 0x74, 0x79, 0xfa, 0x7a, 0x4a, 0x14, 0xfe, 0x90, 0x17, 0x57, - 0xb9, 0xda, 0x12, 0x02, 0x53, 0x43, 0x0e, 0x74, 0x4f, 0x47, 0x40, 0xeb, - 0xa4, 0x1f, 0xd1, 0x07, 0x8d, 0xa5, 0xc3, 0x08, 0x45, 0xc9, 0xe1, 0xeb, - 0x08, 0x44, 0xb3, 0xe2, 0xd0, 0x0e, 0xb3, 0x7c, 0xb2, 0xb1, 0xb9, 0x9b, - 0x15, 0xa3, 0xcf, 0xb7, 0xf5, 0x3e, 0xe0, 0x72, 0x9d, 0x1a, 0x33, 0x97, - 0xfe, 0x02, 0x53, 0xc8, 0x66, 0xc2, 0xbb, 0x9a, 0x0e, 0x8d, 0xbe, 0x98, - 0x4f, 0x6b, 0xc0, 0x26, 0x71, 0x9b, 0xd7, 0xe4, 0x8e, 0x06, 0x80, 0xad, - 0x2d, 0x1a, 0x7d, 0x89, 0x99, 0x66, 0x78, 0x1d, 0x30, 0x9e, 0x4c, 0xf2, - 0xc2, 0xf0, 0x0a, 0xb4, 0x43, 0xca, 0x04, 0x38, 0xe3, 0xaf, 0xf3, 0x73, - 0x65, 0xb5, 0x7e, 0x23, 0xdd, 0xf9, 0xa2, 0xf6, 0x10, 0xec, 0x45, 0xc6, - 0xbe, 0x8c, 0x64, 0x25, 0x5f, 0x7d, 0xd3, 0x18, 0x2b, 0x20, 0x67, 0x37, - 0xa5, 0x09, 0xdd, 0xe8, 0x3c, 0xeb, 0xfc, 0x7c, 0xfe, 0x7e, 0xca, 0x75, - 0x37, 0xf0, 0x5b, 0xd5, 0x45, 0x91, 0xca, 0xb1, 0xe5, 0x14, 0x7a, 0xb0, - 0xcc, 0xa1, 0x0a, 0xa3, 0x06, 0xf3, 0x5e, 0x75, 0x2f, 0x99, 0x04, 0xf7, - 0x7f, 0x16, 0x17, 0x39, 0xfe, 0x03, 0x87, 0xc7, 0xd1, 0xbf, 0xda, 0x0e, - 0x56, 0xbc, 0x6d, 0x2e, 0x3f, 0x2a, 0x5a, 0x2a, 0x4a, 0x1a, 0x6e, 0xdb, - 0xee, 0x32, 0xae, 0x46, 0xa4, 0x65, 0x40, 0x58, 0xc8, 0x51, 0xa0, 0xe9, - 0x1d, 0x25, 0x77, 0x50, 0x63, 0x6b, 0xe7, 0x65, 0x86, 0x5d, 0x09, 0x72, - 0xbc, 0xcc, 0xb0, 0x7f, 0x8a, 0x3a, 0x07, 0x0c, 0x94, 0xee, 0x0f, 0xef, - 0x61, 0x4a, 0xc4, 0xf5, 0x57, 0x7b, 0x17, 0x8b, 0x73, 0x6a, 0xa1, 0x8b, - 0x99, 0x11, 0xbd, 0x5b, 0x7d, 0xb5, 0x06, 0x85, 0xd8, 0xc1, 0x55, 0x3b, - 0x85, 0x99, 0x84, 0x61, 0xd8, 0xd0, 0x0e, 0x22, 0x5b, 0x67, 0x81, 0xd7, - 0x22, 0xc4, 0x2d, 0xd7, 0x58, 0x17, 0xee, 0xf3, 0xa6, 0x49, 0x6b, 0x1e, - 0xdb, 0x7a, 0x62, 0xc9, 0x17, 0x5c, 0xa5, 0xc3, 0xaf, 0xbe, 0xc1, 0xb8, - 0xde, 0xc7, 0xc1, 0x45, 0x3d, 0x9b, 0xb2, 0x52, 0x8d, 0x1b, 0xb7, 0x89, - 0xff, 0xec, 0x45, 0x4b, 0x14, 0xbb, 0xa2, 0xec, 0x1e, 0xd6, 0x41, 0xbd, - 0x75, 0x86, 0x9c, 0x14, 0xc5, 0xd2, 0x11, 0x71, 0x57, 0x68, 0x5b, 0x78, - 0x5f, 0x1c, 0x64, 0x1b, 0x41, 0x1e, 0x35, 0xf5, 0x17, 0x4c, 0x12, 0x56, - 0x8a, 0xf0, 0x5d, 0x08, 0x35, 0x99, 0x18, 0x5e, 0x6b, 0x5d, 0x85, 0x11, - 0x27, 0x5f, 0xf5, 0x15, 0x15, 0x36, 0xab, 0x96, 0x6c, 0x8d, 0xda, 0x69, - 0xd2, 0xa8, 0xf2, 0x2f, 0xe6, 0x75, 0xfc, 0x23, 0xcb, 0x51, 0x1e, 0x2f, - 0xfd, 0x1a, 0xb0, 0x48, 0xf5, 0x95, 0x4d, 0x4a, 0x08, 0xd6, 0x44, 0xba, - 0x68, 0xad, 0xcf, 0x2a, 0xfe, 0x5f, 0xd6, 0xc8, 0x4f, 0xaa, 0xc5, 0x2c, - 0xff, 0x5c, 0x14, 0x12, 0xd3, 0x8c, 0xc6, 0x85, 0xa7, 0xb3, 0x22, 0x2c, - 0x0b, 0x3d, 0xc1, 0xc8, 0xc2, 0x37, 0x2e, 0xfc, 0xe7, 0x1e, 0x2d, 0xbd, - 0x8f, 0xff, 0xfa, 0xb9, 0x67, 0x57, 0xff, 0x33, 0x1d, 0xce, 0x5f, 0xb2, - 0xfc, 0x2f, 0xf8, 0x05, 0x3f, 0xf7, 0xee, 0x7a, 0xc6, 0x62, 0xc7, 0x3a, - 0xb3, 0x38, 0x93, 0x34, 0xe6, 0xe8, 0xad, 0x45, 0xdd, 0x98, 0xa7, 0x94, - 0xe1, 0x2a, 0x71, 0x63, 0x44, 0xed, 0x48, 0xa2, 0xd6, 0xae, 0x01, 0x1b, - 0xb5, 0x1b, 0x03, 0xfb, 0x62, 0xf7, 0xa1, 0x1f, 0xe8, 0xaa, 0xe1, 0x3e, - 0x80, 0x7b, 0x6c, 0xbc, 0x0a, 0xa4, 0xc2, 0x65, 0xb6, 0x61, 0x2b, 0x91, - 0x91, 0xee, 0x3c, 0x9b, 0xec, 0x63, 0x5f, 0xba, 0x98, 0xd7, 0x3d, 0x11, - 0xf3, 0x37, 0x98, 0xc1, 0x80, 0x35, 0x10, 0xb9, 0x0e, 0x05, 0x89, 0x5c, - 0xe1, 0xc0, 0x72, 0xce, 0x6b, 0x16, 0xd4, 0x5e, 0xfc, 0x36, 0x4c, 0x44, - 0xe8, 0xc8, 0xa6, 0xac, 0xd2, 0x59, 0x06, 0x6a, 0x3a, 0x85, 0x80, 0xa7, - 0x6c, 0x11, 0x6f, 0x22, 0xfb, 0x27, 0xfc, 0xa3, 0x6a, 0x9e, 0x60, 0xb0, - 0x07, 0xfd, 0x55, 0x62, 0x2c, 0xf3, 0x67, 0xf2, 0xc6, 0x2c, 0xa1, 0xe1, - 0x35, 0x1c, 0xb2, 0xac, 0xbe, 0xea, 0x81, 0x86, 0xf3, 0x17, 0x8c, 0xeb, - 0xa5, 0xf9, 0x5f, 0x80, 0x90, 0x16, 0x70, 0x54, 0xf6, 0x56, 0x7e, 0x8c, - 0x67, 0xd7, 0xb0, 0xf0, 0xb5, 0x5b, 0xde, 0xcc, 0xf1, 0x58, 0x53, 0x53, - 0xa3, 0x76, 0xe1, 0x09, 0xdf, 0x4a, 0xe7, 0xc6, 0xc9, 0xef, 0xbf, 0xea, - 0x7b, 0x08, 0xcb, 0x1f, 0x3c, 0xe3, 0xd3, 0x65, 0xab, 0x64, 0x64, 0x7d, - 0x75, 0xfc, 0xd7, 0xbf, 0xe8, 0x00, 0x3f, 0xf7, 0x7e, 0x8c, 0xf9, 0xa7, - 0x04, 0xf9, 0xbe, 0x1b, 0x1d, 0xff, 0x75, 0x75, 0xca, 0x5d, 0x36, 0xc1, - 0x37, 0xfc, 0x17, 0x22, 0xe3, 0x65, 0xc3, 0xa2, 0x92, 0xaf, 0xef, 0x44, - 0x1f, 0xd2, 0x6b, 0x42, 0x84, 0x24, 0x03, 0x7f, 0x3e, 0x47, 0x00, 0x4d, - 0x85, 0x38, 0xaf, 0x19, 0xe2, 0x9c, 0xb4, 0x97, 0x64, 0x88, 0xd8, 0xc8, - 0x14, 0xd1, 0xf7, 0x6a, 0x68, 0x86, 0xd4, 0xa4, 0xe9, 0x9f, 0x42, 0x4c, - 0x44, 0x40, 0xe8, 0x14, 0x21, 0x45, 0xb6, 0x59, 0xa3, 0x93, 0x8c, 0x9b, - 0x76, 0xca, 0x21, 0x66, 0x10, 0x86, 0x91, 0xab, 0xc5, 0xbc, 0xaf, 0x58, - 0xd7, 0xa2, 0xee, 0x71, 0x68, 0x1c, 0xad, 0xfd, 0x61, 0x4d, 0x8a, 0xc8, - 0x66, 0x33, 0x92, 0x7f, 0xa4, 0x05, 0x72, 0x13, 0xc4, 0xbf, 0x84, 0xa2, - 0xf9, 0x92, 0xc5, 0x26, 0x1e, 0x85, 0x49, 0x31, 0x1d, 0x4b, 0xca, 0x05, - 0x50, 0x39, 0x1f, 0xb0, 0x9a, 0x38, 0xa8, 0x47, 0xe0, 0x56, 0x48, 0x1a, - 0x86, 0x4c, 0x1b, 0xb0, 0x49, 0x24, 0x5f, 0x8e, 0x63, 0x16, 0x36, 0x69, - 0x38, 0x89, 0x98, 0xc8, 0xff, 0x82, 0x69, 0xc2, 0xc3, 0x94, 0x1c, 0x5b, - 0x06, 0xaf, 0x3b, 0x96, 0x40, 0x52, 0xc0, 0x3b, 0x14, 0x99, 0x3b, 0xa2, - 0x97, 0x84, 0x03, 0x31, 0x0a, 0xdc, 0x8d, 0x41, 0x8a, 0xef, 0x29, 0x3e, - 0xa3, 0xd0, 0x8e, 0x5c, 0xd9, 0x85, 0x92, 0x23, 0xfc, 0xb1, 0x26, 0xe5, - 0x19, 0x77, 0xc8, 0xbf, 0x59, 0xd1, 0x1f, 0x24, 0xea, 0xe4, 0x64, 0x46, - 0xd3, 0xd7, 0xcb, 0x61, 0xf9, 0x7d, 0x70, 0x7e, 0x94, 0x4a, 0x99, 0x78, - 0x7b, 0xd7, 0x98, 0xe0, 0x89, 0x3c, 0x1e, 0x1e, 0xde, 0x6d, 0x79, 0xa4, - 0x89, 0x84, 0x95, 0x6c, 0xff, 0x92, 0xf1, 0x77, 0xcc, 0xf8, 0x3e, 0xcc, - 0x6f, 0x92, 0x73, 0x66, 0x5c, 0x78, 0xda, 0x33, 0x5b, 0x47, 0xad, 0x41, - 0x03, 0xeb, 0xc1, 0x75, 0xad, 0x7f, 0xcd, 0x87, 0x93, 0x96, 0x44, 0xe4, - 0xa9, 0x4f, 0x3f, 0x06, 0xec, 0xf6, 0x31, 0xa7, 0x72, 0xf3, 0x77, 0x78, - 0x38, 0xdb, 0xb1, 0xa8, 0xd4, 0x42, 0x58, 0x05, 0xdc, 0x45, 0xe0, 0xef, - 0xbb, 0x9c, 0x43, 0x65, 0xdb, 0xac, 0x64, 0x2e, 0x7e, 0x98, 0x45, 0x58, - 0x0f, 0xf6, 0xd3, 0x56, 0xdc, 0x88, 0xbe, 0x37, 0x15, 0x30, 0x5e, 0x6e, - 0x97, 0xc6, 0x51, 0x11, 0xbe, 0x09, 0xeb, 0x6b, 0xe2, 0x0f, 0xc1, 0x89, - 0x12, 0x8e, 0x69, 0x0a, 0xf0, 0x3e, 0xf6, 0xbf, 0x4a, 0xaf, 0xc4, 0x0b, - 0x13, 0x07, 0x54, 0x8a, 0x5d, 0xca, 0xaa, 0x34, 0x77, 0x82, 0xdb, 0x62, - 0x51, 0xf9, 0x96, 0x1a, 0xbc, 0xdc, 0x57, 0xb0, 0xd1, 0x0a, 0xcb, 0x37, - 0x6f, 0x9d, 0x2d, 0x96, 0xc1, 0xd8, 0xaa, 0xb4, 0x70, 0x05, 0x49, 0xb4, - 0xf6, 0xd5, 0xc6, 0x5a, 0x77, 0xa3, 0x6f, 0xa3, 0x3a, 0x37, 0xbb, 0x64, - 0xa9, 0x87, 0xaf, 0xa2, 0x42, 0x34, 0x18, 0x9a, 0x3c, 0x42, 0x33, 0x4c, - 0x90, 0x4d, 0xe9, 0x30, 0xa9, 0xc8, 0xae, 0x0a, 0xf6, 0x47, 0xe0, 0x56, - 0x1e, 0x59, 0x4e, 0x37, 0x93, 0x3b, 0x1e, 0x31, 0x79, 0xbb, 0xc9, 0x0c, - 0xdc, 0x85, 0xb9, 0xda, 0x75, 0xd5, 0x6c, 0xdf, 0xb7, 0x8f, 0x21, 0x5f, - 0x42, 0x83, 0x17, 0x47, 0x86, 0xe3, 0x87, 0x58, 0xa6, 0x53, 0xaf, 0x7d, - 0xb5, 0xce, 0xb2, 0xc9, 0x7a, 0xc1, 0x9c, 0xb9, 0xd7, 0xa2, 0x9f, 0x83, - 0x18, 0xd6, 0xf4, 0xa2, 0xb3, 0x1c, 0xa1, 0xd7, 0xa5, 0x8f, 0x47, 0x7b, - 0x18, 0xca, 0xfb, 0x9a, 0x42, 0xd3, 0xf2, 0xfc, 0xde, 0x26, 0xfd, 0xa8, - 0xa5, 0x05, 0x2f, 0x1d, 0x65, 0x83, 0x9d, 0xfa, 0x5f, 0x7d, 0x83, 0x8f, - 0xab, 0x11, 0xb0, 0x16, 0x0d, 0x06, 0xc0, 0x7a, 0xaa, 0x59, 0x1b, 0x7b, - 0xcf, 0xc3, 0x38, 0x24, 0xdd, 0x80, 0x04, 0x2b, 0xaa, 0x21, 0xd2, 0xcb, - 0x87, 0x3c, 0x31, 0x9a, 0x09, 0xc7, 0x2e, 0x43, 0xfe, 0x55, 0xf9, 0xd5, - 0x20, 0xda, 0x37, 0x55, 0x3c, 0xa9, 0x67, 0x59, 0x72, 0x6c, 0x84, 0x25, - 0x86, 0xb8, 0xdc, 0x90, 0x12, 0x9e, 0x0f, 0x33, 0x71, 0xdc, 0x73, 0xef, - 0x02, 0xca, 0x7b, 0x4f, 0xa7, 0x95, 0x34, 0xe3, 0x00, 0x91, 0x1e, 0xee, - 0xca, 0x48, 0xc5, 0x22, 0x18, 0x49, 0xa6, 0xdf, 0x1b, 0x9b, 0x44, 0x56, - 0x16, 0x1f, 0x4a, 0x2c, 0xc6, 0x24, 0xce, 0x3f, 0xc3, 0x79, 0x4c, 0x4b, - 0x30, 0x2f, 0xa9, 0x42, 0x7a, 0x52, 0x47, 0xcf, 0x63, 0x7c, 0xce, 0x3a, - 0xf5, 0x95, 0xda, 0x9b, 0xc9, 0xa6, 0x7d, 0x51, 0xfb, 0x62, 0xaa, 0x9f, - 0x0a, 0xc0, 0x0c, 0x12, 0xff, 0x1f, 0x26, 0x55, 0xfa, 0xf4, 0xb1, 0x4e, - 0xca, 0xbb, 0x54, 0xa9, 0xce, 0xd5, 0x70, 0x9a, 0x4a, 0xaf, 0x01, 0xfb, - 0x41, 0x6d, 0x0d, 0x8c, 0x30, 0xb5, 0x51, 0xfd, 0x02, 0xbb, 0xa9, 0x66, - 0xc0, 0x09, 0x94, 0xa1, 0xa0, 0x2a, 0x9e, 0xd7, 0x84, 0x1b, 0xf9, 0xec, - 0xa9, 0xb3, 0xe8, 0x1b, 0x7c, 0x0e, 0x2d, 0xfe, 0x29, 0x5f, 0xd8, 0xfe, - 0xa2, 0x88, 0xa9, 0x15, 0xc9, 0xcf, 0x2b, 0x2e, 0x40, 0x87, 0x05, 0x37, - 0xd7, 0x93, 0x6f, 0x34, 0x0e, 0xc1, 0x9b, 0x2e, 0x90, 0x7b, 0x03, 0xfe, - 0xa2, 0x84, 0xd3, 0x9e, 0x7a, 0x29, 0x51, 0x3b, 0x56, 0x8f, 0xbe, 0xcf, - 0x8b, 0x60, 0xc2, 0xbe, 0x99, 0xae, 0xd1, 0xe9, 0x3f, 0x59, 0x94, 0x24, - 0x73, 0xe4, 0x31, 0x56, 0x0d, 0xc6, 0x29, 0xe3, 0x2f, 0x8a, 0x26, 0xfe, - 0x7a, 0xff, 0xcd, 0xbb, 0x7d, 0xbf, 0x96, 0xd2, 0x09, 0x0b, 0x3c, 0x6c, - 0x38, 0xa3, 0xd9, 0xb2, 0x41, 0x7e, 0x64, 0x03, 0x74, 0x28, 0x22, 0x7a, - 0xab, 0x02, 0xf7, 0x98, 0x16, 0x15, 0xfd, 0x56, 0xcc, 0x44, 0x92, 0x11, - 0x6c, 0x8c, 0xd0, 0x64, 0x23, 0x04, 0x63, 0xf3, 0xdd, 0x60, 0xdf, 0xad, - 0xbe, 0x52, 0x47, 0x7d, 0xed, 0xbf, 0xc0, 0x0d, 0x19, 0xce, 0x3c, 0x21, - 0xd8, 0xd5, 0x7f, 0x01, 0x71, 0x3d, 0xf1, 0x92, 0x60, 0x0a, 0x6f, 0xb8, - 0xff, 0x14, 0xd7, 0x9e, 0x4b, 0x2a, 0x90, 0x53, 0xbd, 0x9d, 0x54, 0x1f, - 0xd8, 0x7f, 0xd2, 0xd3, 0xf7, 0x39, 0x20, 0xc4, 0x00, 0x38, 0x06, 0xf0, - 0x3d, 0x74, 0x65, 0x0d, 0x90, 0xba, 0x29, 0x36, 0xd0, 0x38, 0xad, 0xc8, - 0xe4, 0x86, 0x53, 0xb0, 0x98, 0x38, 0x70, 0x11, 0xad, 0xe1, 0xf6, 0x0f, - 0x0e, 0xba, 0xc1, 0xaf, 0x39, 0x20, 0xec, 0x7c, 0xe0, 0x67, 0x09, 0x08, - 0x3b, 0xf3, 0xf7, 0x66, 0xe5, 0xa0, 0x2c, 0x86, 0x45, 0xdd, 0x5b, 0x09, - 0x93, 0xd5, 0x00, 0xc7, 0x7b, 0x07, 0x67, 0xc5, 0x62, 0x5c, 0x17, 0x8c, - 0xbb, 0xbf, 0x27, 0xbb, 0x11, 0x3e, 0x47, 0xaa, 0x38, 0x73, 0xfb, 0x0e, - 0xa8, 0x65, 0x40, 0xf8, 0x0d, 0xa7, 0x87, 0x6f, 0xe9, 0x80, 0x4e, 0xf6, - 0x4f, 0x4f, 0x0d, 0x9e, 0xbb, 0xa4, 0x7e, 0x7b, 0xd6, 0x2a, 0x45, 0x61, - 0x29, 0xd8, 0x25, 0xdb, 0x6f, 0xab, 0x01, 0xa4, 0xa7, 0x3c, 0x65, 0xa3, - 0xc3, 0x7d, 0x38, 0x5b, 0xcc, 0x80, 0xdd, 0x80, 0x95, 0x30, 0x5e, 0xab, - 0x22, 0xc9, 0xda, 0x68, 0xeb, 0x9f, 0x26, 0x87, 0xc3, 0x34, 0x60, 0x66, - 0x30, 0x8d, 0x97, 0x08, 0x39, 0x62, 0xca, 0x49, 0x24, 0xbd, 0xc5, 0xc1, - 0xcf, 0xe8, 0x07, 0xbd, 0x61, 0xbd, 0xd3, 0xa3, 0xb3, 0xc3, 0x68, 0xff, - 0xdd, 0xd9, 0xf7, 0x3d, 0xc1, 0x06, 0x6d, 0xf6, 0xa9, 0x00, 0x73, 0xa2, - 0xcc, 0xd2, 0x4b, 0x83, 0x0f, 0x4d, 0xb8, 0x95, 0x4e, 0x5d, 0x66, 0x37, - 0x5e, 0xc7, 0x12, 0x22, 0x0b, 0x1c, 0xc6, 0x2d, 0x08, 0xce, 0xdb, 0xd7, - 0xfa, 0xd3, 0x6a, 0x4a, 0xba, 0x96, 0xd2, 0x7b, 0xf7, 0xe4, 0x51, 0x19, - 0xa0, 0xbb, 0x65, 0x99, 0x54, 0x0e, 0xe9, 0x12, 0x9b, 0xe9, 0x24, 0x44, - 0xae, 0x5e, 0x8b, 0xc7, 0xa0, 0xa7, 0x07, 0xc8, 0x0e, 0x06, 0x65, 0xe2, - 0x63, 0xf2, 0x10, 0x36, 0x82, 0x81, 0x4a, 0xfc, 0xef, 0xbb, 0xb7, 0xaf, - 0x36, 0x0d, 0xec, 0x02, 0x03, 0xf5, 0x27, 0x5c, 0x3e, 0x1f, 0x68, 0xd0, - 0x69, 0x5b, 0x12, 0x99, 0xec, 0xa0, 0xf4, 0x23, 0x55, 0x55, 0xe7, 0x8d, - 0xfa, 0x3a, 0x8e, 0xc0, 0xc3, 0xa2, 0x93, 0x72, 0x6c, 0xe0, 0xa1, 0x7d, - 0xbb, 0x41, 0xeb, 0x56, 0xb0, 0x66, 0x94, 0x92, 0x3b, 0xdf, 0x09, 0x9f, - 0x71, 0x80, 0xb9, 0xc5, 0x2b, 0x6b, 0x7a, 0xac, 0xb9, 0x80, 0xdf, 0xed, - 0xe1, 0x68, 0x1b, 0x38, 0x5c, 0x82, 0x2e, 0x9a, 0x0c, 0x0b, 0x6d, 0x0b, - 0xa0, 0xb4, 0xea, 0x86, 0x3c, 0xdc, 0xe6, 0x16, 0xde, 0x73, 0x1e, 0x6e, - 0x73, 0xf0, 0xbb, 0xd0, 0x93, 0xbb, 0x36, 0xad, 0x4e, 0xf2, 0x19, 0x58, - 0x99, 0xce, 0x40, 0xc1, 0x20, 0x97, 0xdd, 0x26, 0x3e, 0xb2, 0xac, 0x58, - 0x29, 0xb4, 0x1e, 0x9e, 0x4b, 0x72, 0x2d, 0xf7, 0xf8, 0xbf, 0x61, 0x2e, - 0x86, 0x7a, 0x68, 0x59, 0x4c, 0xd9, 0x53, 0x2e, 0x2f, 0x70, 0xed, 0x1b, - 0xe3, 0xbe, 0x51, 0x05, 0x2f, 0x85, 0x20, 0x29, 0x94, 0x4f, 0xeb, 0xa5, - 0xe2, 0xb9, 0x76, 0x50, 0x10, 0x46, 0x5b, 0xc7, 0x04, 0x3d, 0x0d, 0x29, - 0x9c, 0x51, 0x60, 0x9c, 0xc6, 0x0b, 0xc0, 0x10, 0x7a, 0x1d, 0x89, 0x43, - 0xf6, 0x93, 0x73, 0xf7, 0x7c, 0xe7, 0x01, 0x1d, 0xec, 0xe8, 0xaa, 0xa3, - 0x4f, 0xac, 0x6d, 0xba, 0x65, 0x8a, 0xaa, 0x0f, 0x7e, 0x78, 0x61, 0x31, - 0x49, 0x4c, 0xc9, 0x45, 0xc4, 0xf7, 0x83, 0xcd, 0xb3, 0xc8, 0x0b, 0x75, - 0xba, 0xe1, 0x69, 0x53, 0x31, 0x35, 0xa0, 0xd4, 0x80, 0x71, 0x9a, 0xce, - 0xa3, 0x8b, 0x0c, 0x06, 0x2c, 0x47, 0x17, 0x04, 0x75, 0xc4, 0xf9, 0xad, - 0x98, 0x0b, 0x30, 0xc3, 0x5c, 0x96, 0x00, 0x40, 0x9e, 0x09, 0x4f, 0x83, - 0x30, 0xb0, 0x4d, 0x6a, 0x2e, 0x8a, 0x2b, 0xca, 0x42, 0xd8, 0x7e, 0xf6, - 0xe8, 0x39, 0xa8, 0xaa, 0xd7, 0xd4, 0x5d, 0xd5, 0xee, 0xd5, 0x98, 0xcb, - 0xb2, 0x02, 0x95, 0x8c, 0x56, 0x9a, 0xba, 0xe8, 0x4f, 0x18, 0x9d, 0xa1, - 0x4b, 0x8b, 0xc6, 0x34, 0xb9, 0x64, 0x05, 0xd2, 0xdd, 0x6f, 0xc1, 0x04, - 0xfb, 0xa7, 0x97, 0x92, 0x36, 0x0b, 0xef, 0x06, 0xee, 0x13, 0xa7, 0x51, - 0xbb, 0xbd, 0xcb, 0x4e, 0x8f, 0xfe, 0xeb, 0xb0, 0x1f, 0xbd, 0x3d, 0x3c, - 0x7b, 0xdb, 0x8f, 0x4e, 0xcf, 0x8e, 0xdf, 0x62, 0xde, 0x41, 0x57, 0x1b, - 0xd9, 0x31, 0x6d, 0x95, 0x26, 0x28, 0x32, 0xff, 0x69, 0x74, 0x52, 0xa3, - 0xdd, 0xa7, 0x44, 0x6d, 0xe9, 0x6d, 0x78, 0xfb, 0xbd, 0x22, 0x8a, 0x01, - 0x5e, 0xbf, 0xf4, 0xc3, 0xf8, 0xc4, 0x6f, 0x41, 0x1c, 0x48, 0x86, 0xf8, - 0xbd, 0x46, 0x6e, 0xd3, 0x8a, 0x6b, 0x20, 0x58, 0x90, 0x1d, 0xca, 0x73, - 0xae, 0x4d, 0x3d, 0x7b, 0x47, 0x8b, 0x63, 0xae, 0xac, 0xa3, 0xd2, 0x53, - 0x21, 0x15, 0xf6, 0x55, 0xf7, 0xb4, 0xbf, 0x41, 0x2f, 0x5a, 0xa7, 0x18, - 0x89, 0xe8, 0xe9, 0x37, 0x90, 0x2e, 0xd8, 0x06, 0x1b, 0xf6, 0x83, 0xab, - 0x62, 0x96, 0x72, 0x18, 0x8b, 0xbc, 0xa1, 0x86, 0x15, 0xb3, 0xb6, 0xc0, - 0xbd, 0xc8, 0xc9, 0x62, 0xeb, 0x58, 0xdd, 0x1a, 0x9d, 0xf2, 0x5a, 0xa3, - 0xb8, 0xc1, 0x7c, 0xe9, 0x3c, 0xcd, 0xe1, 0x92, 0x51, 0x93, 0xc9, 0x35, - 0x5d, 0xd5, 0x5a, 0xb7, 0x5c, 0xb6, 0xc9, 0xdb, 0x0f, 0xd5, 0x71, 0xaa, - 0x5a, 0xc6, 0x3b, 0x65, 0x7a, 0x5d, 0x68, 0x80, 0x6f, 0xc2, 0x91, 0x6d, - 0xe3, 0x1f, 0x3b, 0xcc, 0x35, 0x6f, 0x1c, 0x8a, 0x6f, 0xc0, 0xa7, 0x8f, - 0x63, 0x08, 0xee, 0xe6, 0xb1, 0x3a, 0x39, 0xf9, 0x14, 0x35, 0x02, 0x84, - 0x35, 0x89, 0xd1, 0xda, 0x6f, 0xf3, 0x72, 0x6c, 0x6a, 0x12, 0x56, 0x43, - 0x09, 0xc3, 0x41, 0xdb, 0x37, 0x50, 0x16, 0xb3, 0x66, 0x0c, 0x72, 0x67, - 0x3f, 0xd1, 0x20, 0x31, 0xa5, 0xea, 0x44, 0x9e, 0x0a, 0xc6, 0xe5, 0x09, - 0x6b, 0x12, 0xc1, 0x38, 0x0c, 0x1f, 0x91, 0xeb, 0xd5, 0x17, 0xdc, 0xc0, - 0x96, 0x38, 0x6f, 0x18, 0x93, 0xbe, 0x00, 0x47, 0x9d, 0xb3, 0xc4, 0x16, - 0x85, 0x09, 0xd5, 0x13, 0x64, 0x05, 0xc2, 0x24, 0xb6, 0xba, 0xb9, 0xcc, - 0x83, 0x6d, 0xde, 0xde, 0xa6, 0x54, 0xac, 0x4c, 0x1e, 0xfc, 0x3c, 0x4a, - 0x73, 0xca, 0x6c, 0x1a, 0x9b, 0x4f, 0xc4, 0x06, 0x6b, 0x98, 0xc4, 0xcc, - 0xca, 0xcb, 0xb8, 0x20, 0x61, 0x8d, 0x2b, 0xa4, 0xee, 0xaa, 0x8b, 0x2a, - 0xd0, 0x16, 0xc0, 0xa6, 0xca, 0xc8, 0x68, 0xd6, 0x7f, 0x31, 0xaa, 0xdb, - 0xab, 0x22, 0xa1, 0xef, 0x2b, 0x19, 0xee, 0x06, 0x4b, 0xc2, 0x17, 0x15, - 0x39, 0x51, 0x5a, 0x4b, 0x99, 0x49, 0xd1, 0x2a, 0x35, 0xd7, 0x30, 0x76, - 0xb4, 0x78, 0x5b, 0x03, 0xfe, 0x3c, 0x5a, 0x14, 0xf7, 0x30, 0x59, 0xe4, - 0x53, 0xac, 0x7e, 0x6d, 0x35, 0x9a, 0xe8, 0x52, 0x59, 0x3d, 0x65, 0x07, - 0x09, 0x23, 0xba, 0xff, 0xaa, 0xbf, 0xae, 0x3e, 0x3a, 0xb7, 0x50, 0x71, - 0x68, 0x45, 0x77, 0x6e, 0x5e, 0x63, 0xd4, 0xb1, 0xd6, 0xb1, 0x74, 0xc2, - 0x31, 0xbf, 0xe4, 0x02, 0x3e, 0xa4, 0x99, 0xb4, 0x29, 0x08, 0xb3, 0x3c, - 0xc3, 0x6e, 0x5d, 0x45, 0xb9, 0x89, 0xd7, 0x0a, 0x3b, 0xcc, 0x46, 0x11, - 0xe8, 0x3a, 0x69, 0x25, 0x48, 0x04, 0xa1, 0x6a, 0x7e, 0x63, 0x6d, 0xd1, - 0x5e, 0xa0, 0x56, 0x33, 0x08, 0xa0, 0xd7, 0xd0, 0xd7, 0xa2, 0x6a, 0xe4, - 0x74, 0x3f, 0x19, 0x84, 0x4a, 0xce, 0x38, 0x45, 0x2d, 0x60, 0x36, 0xc9, - 0xb5, 0xa4, 0x98, 0xa8, 0x71, 0xa8, 0x91, 0x49, 0x86, 0x86, 0x5d, 0x17, - 0xe8, 0x9c, 0xc2, 0x49, 0x33, 0x6c, 0x11, 0xb6, 0x11, 0xa5, 0x74, 0xb5, - 0xe6, 0xf5, 0x27, 0x6f, 0x42, 0x73, 0x36, 0xe0, 0xc6, 0x8b, 0xb9, 0xaf, - 0xb3, 0x1d, 0x9d, 0xd8, 0x21, 0xc5, 0x9d, 0x50, 0x70, 0x9a, 0x39, 0xd2, - 0x84, 0xb3, 0x4a, 0x6c, 0x27, 0x60, 0x0e, 0xc0, 0xaa, 0x26, 0x1e, 0x88, - 0x0d, 0x2a, 0x75, 0x9e, 0xa6, 0xd6, 0x05, 0x22, 0xaf, 0xd5, 0x61, 0x83, - 0xf3, 0x41, 0xd4, 0x43, 0x20, 0xfb, 0x1e, 0x2d, 0x55, 0x90, 0xbf, 0xa4, - 0xe3, 0xa2, 0xbe, 0x0b, 0xbb, 0xd2, 0x58, 0xad, 0xdf, 0xc1, 0x59, 0xfe, - 0x4f, 0xfa, 0xd5, 0xd0, 0xe9, 0xac, 0xbf, 0xcb, 0xb3, 0x8f, 0xe4, 0x3c, - 0xf5, 0xc1, 0x12, 0x0d, 0xa0, 0xf0, 0xb2, 0x55, 0x29, 0x7c, 0x2f, 0x62, - 0x9e, 0x37, 0x56, 0x47, 0xc1, 0x15, 0xec, 0x07, 0xeb, 0x0e, 0x14, 0x40, - 0xeb, 0x5c, 0xd2, 0x81, 0x9e, 0x67, 0x98, 0x5d, 0x0f, 0xf0, 0xb9, 0xc1, - 0xb8, 0x98, 0xc1, 0x0d, 0xf4, 0xe6, 0x98, 0x11, 0xae, 0x8a, 0x27, 0x35, - 0x62, 0x9b, 0xe6, 0xa8, 0xfa, 0xdb, 0x3c, 0x43, 0x42, 0xd2, 0xc2, 0x46, - 0x07, 0x7a, 0x9c, 0x31, 0xdb, 0x2a, 0xed, 0x69, 0x4f, 0x6c, 0x25, 0xbc, - 0x22, 0x95, 0x1b, 0x23, 0xb1, 0x09, 0xac, 0xe8, 0xf8, 0xa2, 0xc3, 0x46, - 0x72, 0x20, 0x0e, 0xa9, 0x77, 0x5a, 0xbb, 0x0b, 0x57, 0xe3, 0x41, 0xb1, - 0xf6, 0xa2, 0x8e, 0x4e, 0x74, 0xa4, 0x38, 0x71, 0x3b, 0x3a, 0xe5, 0x9f, - 0x4e, 0x82, 0x23, 0x0d, 0xaf, 0xe9, 0x8d, 0x5e, 0xb3, 0xb4, 0x16, 0x8f, - 0x92, 0xce, 0x66, 0x22, 0x29, 0xf0, 0xd5, 0x3f, 0xff, 0x79, 0xb0, 0x34, - 0x6b, 0x88, 0x91, 0x06, 0xa3, 0xde, 0xee, 0x4f, 0x14, 0xb8, 0xfa, 0x25, - 0xfe, 0x09, 0xfe, 0xf9, 0x4b, 0xcf, 0x80, 0x0e, 0x72, 0x73, 0x3b, 0x0b, - 0x0d, 0x96, 0x8c, 0xbd, 0x2a, 0x7a, 0xdc, 0xec, 0x3e, 0x7b, 0x69, 0x6a, - 0xd3, 0x30, 0x83, 0x34, 0xb7, 0xb3, 0x83, 0x13, 0xbe, 0x58, 0x25, 0xe7, - 0xdd, 0x10, 0x71, 0x22, 0x5b, 0x21, 0x93, 0x0b, 0x45, 0x49, 0xa0, 0x1f, - 0xb9, 0x10, 0x41, 0xe2, 0xbc, 0xd9, 0xb7, 0xc9, 0x55, 0x57, 0x7c, 0xaf, - 0x13, 0x30, 0x40, 0xce, 0xd1, 0x2d, 0xcc, 0x00, 0xda, 0x83, 0x68, 0x5f, - 0x95, 0xdf, 0x36, 0x5b, 0xa3, 0xdf, 0x47, 0xd4, 0x48, 0x8f, 0xb0, 0x4a, - 0xae, 0x60, 0x89, 0x7d, 0xe9, 0xba, 0xce, 0xe5, 0xf1, 0x8a, 0xed, 0x97, - 0xe5, 0x68, 0x52, 0x2a, 0x2f, 0x2d, 0xb3, 0xea, 0x83, 0x6f, 0xec, 0x0b, - 0xa0, 0x80, 0x93, 0xbf, 0x48, 0xab, 0xc4, 0xd0, 0x3d, 0x0a, 0x65, 0x17, - 0x1e, 0x2d, 0xa8, 0x4d, 0x36, 0x59, 0xfb, 0x6a, 0x50, 0x79, 0x5d, 0xae, - 0xc4, 0xd5, 0x14, 0xca, 0x13, 0xb8, 0x43, 0x24, 0xa3, 0x6e, 0x6c, 0x20, - 0x7c, 0xc2, 0x4d, 0x36, 0x6e, 0xfb, 0xb0, 0x8b, 0xf8, 0xed, 0xbd, 0xb3, - 0xdc, 0x41, 0x44, 0x82, 0x53, 0xb0, 0x65, 0x83, 0x4d, 0xe4, 0xe4, 0xb1, - 0x32, 0xad, 0x97, 0xf4, 0x6d, 0x6b, 0x76, 0x6a, 0x49, 0xa2, 0x13, 0x30, - 0xda, 0xcc, 0x8d, 0x72, 0xba, 0xa7, 0x31, 0xf8, 0x1d, 0x2a, 0x2c, 0x1b, - 0xed, 0x0b, 0x74, 0x90, 0x96, 0x14, 0x8a, 0xb7, 0x2e, 0x6a, 0xc2, 0x36, - 0xcb, 0xb0, 0x78, 0x6c, 0x5c, 0xc2, 0x1a, 0x30, 0x51, 0x5a, 0xf0, 0xf0, - 0x15, 0x25, 0x83, 0xca, 0x31, 0xc5, 0x36, 0xf1, 0x22, 0x5f, 0xaa, 0x0e, - 0xa1, 0xd9, 0x67, 0xcd, 0x2a, 0x02, 0xf1, 0xe3, 0x10, 0x1b, 0x13, 0x24, - 0xfe, 0x97, 0xe4, 0x14, 0x02, 0x26, 0x5c, 0xe5, 0xe8, 0x65, 0xaf, 0x7c, - 0x9b, 0x9c, 0x16, 0x4f, 0x12, 0x77, 0x69, 0x85, 0x99, 0xec, 0xd4, 0x43, - 0x54, 0x5f, 0xca, 0xd0, 0x77, 0x52, 0x8e, 0x70, 0x49, 0xab, 0x28, 0x47, - 0x2d, 0xe5, 0x94, 0xa3, 0x1e, 0x9e, 0x76, 0xc6, 0x3f, 0xab, 0x3e, 0x64, - 0xfc, 0x8b, 0x38, 0x9b, 0xdf, 0xdc, 0x8a, 0x54, 0x7b, 0x2c, 0xe2, 0x1d, - 0x6b, 0xc8, 0x0b, 0xa3, 0x39, 0x54, 0x8b, 0xf3, 0x73, 0x6a, 0x3c, 0xe1, - 0xa7, 0x80, 0xa3, 0xd3, 0xce, 0x14, 0xc6, 0xa2, 0xa6, 0x80, 0x15, 0x59, - 0x15, 0x9f, 0x4d, 0xa3, 0x2b, 0x20, 0xcd, 0x26, 0x92, 0xa4, 0x32, 0x66, - 0x89, 0xdf, 0x95, 0xcc, 0x18, 0x29, 0x47, 0xc2, 0xf4, 0xe9, 0xc5, 0x32, - 0x5d, 0x28, 0x27, 0x6a, 0xcb, 0x35, 0x4a, 0x00, 0x13, 0xa1, 0xe6, 0xcb, - 0x93, 0x6a, 0x89, 0x34, 0xbb, 0x09, 0xb7, 0x83, 0x8b, 0x2e, 0x38, 0x45, - 0x4e, 0x54, 0x49, 0x17, 0x14, 0xf5, 0x19, 0x81, 0xa2, 0x2e, 0x45, 0x7b, - 0x6e, 0xf6, 0xec, 0xcb, 0x26, 0xd2, 0x53, 0x95, 0x3b, 0x68, 0x96, 0x6c, - 0x25, 0x68, 0xfd, 0x96, 0x08, 0xb9, 0xb6, 0x2e, 0x35, 0xa1, 0xbd, 0xbc, - 0x91, 0xc4, 0xdd, 0x23, 0xbf, 0x7f, 0x67, 0xa7, 0x3b, 0xfa, 0x5d, 0xa8, - 0xbd, 0xb1, 0xba, 0x95, 0x4c, 0x82, 0x4e, 0x12, 0xaf, 0xa6, 0xf1, 0x68, - 0x34, 0x8a, 0x49, 0xd3, 0xdd, 0x63, 0xf5, 0x7b, 0x53, 0xd4, 0xdf, 0xb0, - 0x69, 0x70, 0x9a, 0x0a, 0xdd, 0x1d, 0x1c, 0x1c, 0x88, 0xa2, 0x7e, 0x76, - 0xd1, 0x52, 0x99, 0x2d, 0x8c, 0x0d, 0x9b, 0x0c, 0x69, 0x28, 0x74, 0x51, - 0x5d, 0x2c, 0x6a, 0x64, 0x4b, 0x7d, 0xe9, 0x40, 0x67, 0xdc, 0xd8, 0x0c, - 0x3c, 0x66, 0x80, 0x25, 0x6c, 0x0b, 0xef, 0x02, 0xf6, 0xb5, 0x6f, 0xf0, - 0x5f, 0x02, 0xdd, 0xab, 0xca, 0x14, 0x51, 0x73, 0xd4, 0x39, 0x26, 0xe3, - 0xb3, 0x94, 0x77, 0xd3, 0xb3, 0xcf, 0x2e, 0x1a, 0x96, 0x06, 0x4e, 0x9d, - 0xf9, 0x51, 0x4e, 0xf2, 0x41, 0x35, 0x06, 0xa2, 0x4b, 0x68, 0x16, 0x97, - 0xc8, 0x74, 0xed, 0xe1, 0x6f, 0x24, 0x31, 0x77, 0xcb, 0xef, 0x9f, 0xc4, - 0x9c, 0xd1, 0xef, 0x44, 0x62, 0xee, 0xea, 0x64, 0x93, 0x1a, 0xbf, 0x41, - 0xba, 0xab, 0x56, 0x23, 0x3c, 0x79, 0xb3, 0x83, 0xf6, 0x96, 0xb8, 0x61, - 0x90, 0xc4, 0xa2, 0xf5, 0x03, 0xea, 0xfe, 0x1d, 0x1d, 0x08, 0x1b, 0x3c, - 0xb8, 0xc0, 0x14, 0xf2, 0x29, 0x50, 0x22, 0x9c, 0x4b, 0x45, 0x92, 0x8d, - 0x6b, 0xae, 0x4f, 0x5f, 0x6d, 0x9e, 0xbd, 0x3a, 0xf5, 0xaa, 0xe9, 0xae, - 0x31, 0x22, 0x4c, 0x91, 0xdf, 0x66, 0x74, 0x91, 0xe9, 0xa0, 0x4c, 0x2b, - 0x83, 0x17, 0x65, 0x58, 0x1b, 0xcf, 0x10, 0x6c, 0xc9, 0xb2, 0xc8, 0x1d, - 0x50, 0x03, 0x74, 0xd7, 0xe4, 0x69, 0x4e, 0xa8, 0xbc, 0x98, 0xcf, 0x47, - 0x4c, 0x8b, 0xc1, 0x5d, 0xa2, 0x37, 0xfb, 0x67, 0x58, 0x6e, 0x5e, 0x4b, - 0x0a, 0xaa, 0xf8, 0xe5, 0x03, 0xd9, 0x61, 0xa6, 0x93, 0x6b, 0x32, 0xd2, - 0x66, 0xeb, 0xd6, 0xe6, 0xa6, 0x63, 0x40, 0x85, 0x8e, 0xaf, 0xd7, 0xcd, - 0xfe, 0x0b, 0x3d, 0xa5, 0xee, 0x32, 0xf0, 0x4f, 0x27, 0xae, 0x4f, 0xa0, - 0xab, 0x20, 0xf5, 0x74, 0x12, 0x0f, 0xbc, 0xe4, 0x88, 0xe8, 0x30, 0x69, - 0x3b, 0xbf, 0xe3, 0xe3, 0xeb, 0x70, 0x68, 0xb0, 0x76, 0x25, 0x44, 0x62, - 0xb8, 0x0b, 0xc5, 0x00, 0xa7, 0xc5, 0x79, 0x46, 0xe1, 0x34, 0x26, 0x34, - 0x52, 0xab, 0x34, 0xdf, 0xa7, 0xbd, 0x43, 0xfb, 0x7c, 0xba, 0x91, 0xb6, - 0xed, 0x70, 0x69, 0x0a, 0x63, 0x72, 0xc8, 0xca, 0x50, 0x77, 0x33, 0x54, - 0xc1, 0x6e, 0x43, 0x03, 0xd8, 0xe5, 0xe3, 0x61, 0xe1, 0x51, 0x64, 0xa3, - 0x0c, 0x5e, 0xc0, 0xe4, 0xda, 0x97, 0x8c, 0x62, 0xe2, 0x94, 0x28, 0x29, - 0x0e, 0xa2, 0x30, 0x42, 0xc3, 0x5b, 0x31, 0x2d, 0xd2, 0x4b, 0x01, 0x44, - 0xa5, 0x46, 0xbe, 0xf1, 0x96, 0xb4, 0x22, 0x34, 0xff, 0x30, 0x8c, 0x88, - 0x07, 0xbf, 0x33, 0xbd, 0xc8, 0xda, 0x56, 0x89, 0x0c, 0xc3, 0x7b, 0x0e, - 0x6d, 0x7c, 0x87, 0xda, 0xde, 0xb9, 0xa7, 0xdf, 0x1b, 0xfc, 0xff, 0x66, - 0x6b, 0x60, 0xa9, 0x48, 0x04, 0x9d, 0x8e, 0x93, 0x32, 0x0d, 0xa0, 0x18, - 0x7f, 0x99, 0xcd, 0x9d, 0xf1, 0x52, 0x58, 0xf0, 0xa7, 0xb1, 0x24, 0xb5, - 0x71, 0xb7, 0x62, 0xfc, 0x01, 0x7c, 0x0d, 0x67, 0x28, 0x35, 0x7b, 0x49, - 0x99, 0x3a, 0xaf, 0xef, 0xc0, 0x92, 0x08, 0xb6, 0x19, 0x42, 0x9e, 0xd4, - 0x6e, 0x3a, 0x45, 0x75, 0xba, 0x8a, 0xe9, 0xcc, 0x49, 0xdc, 0x98, 0xc1, - 0x74, 0x95, 0x01, 0xa3, 0xbc, 0xd2, 0xd8, 0x56, 0x28, 0x0b, 0xe4, 0x4c, - 0x5d, 0xd7, 0xc8, 0x9b, 0xc8, 0x2e, 0x4f, 0x4d, 0xc1, 0x12, 0xb6, 0x2b, - 0xd1, 0x74, 0xce, 0xff, 0x67, 0x6d, 0x39, 0x36, 0xa5, 0xae, 0x9e, 0xb1, - 0xe2, 0x98, 0x07, 0xf2, 0xc6, 0x98, 0x1c, 0x9f, 0xbe, 0x5d, 0xa9, 0xce, - 0x18, 0x56, 0xc7, 0x96, 0xac, 0xe3, 0xfb, 0xc3, 0xfd, 0x17, 0x9d, 0xa8, - 0xc4, 0x8e, 0x2c, 0xd5, 0xa3, 0xbd, 0xb5, 0xaf, 0x36, 0x90, 0xa5, 0x17, - 0x20, 0xdd, 0xf3, 0x6e, 0x3b, 0xa4, 0x33, 0x98, 0x82, 0xab, 0x08, 0xe5, - 0x61, 0x75, 0x3f, 0x1d, 0x8f, 0xa3, 0x5e, 0x5d, 0x14, 0x53, 0x4d, 0xee, - 0x82, 0x7f, 0x26, 0xe7, 0xe9, 0x57, 0xc5, 0x74, 0xdc, 0x5b, 0x75, 0xa4, - 0xa3, 0xf6, 0x60, 0x2b, 0x95, 0xbd, 0xb7, 0xb2, 0xb5, 0x7e, 0xc4, 0x7f, - 0x7a, 0x9b, 0x1f, 0x9f, 0xd3, 0x5e, 0x4f, 0x8b, 0x61, 0x31, 0x99, 0x2c, - 0xd1, 0xf5, 0xb9, 0x8b, 0x35, 0x41, 0x02, 0x30, 0xcd, 0xf6, 0xf0, 0x5c, - 0xf1, 0xbd, 0x21, 0xb7, 0x2e, 0x2f, 0x81, 0x87, 0xf5, 0xa4, 0x12, 0x56, - 0x1a, 0xde, 0x78, 0x02, 0xd1, 0xc9, 0x6f, 0xb8, 0x16, 0x97, 0x92, 0x3a, - 0x6f, 0x2c, 0x8a, 0xa3, 0x49, 0x6e, 0x47, 0x7f, 0x06, 0x61, 0x49, 0x01, - 0x4b, 0xfe, 0xd7, 0xbf, 0x7f, 0xfa, 0xa5, 0x35, 0x9c, 0x46, 0xe8, 0x10, - 0x74, 0x81, 0xd2, 0x8f, 0x29, 0xab, 0xa2, 0xae, 0xd2, 0xe9, 0x84, 0x7d, - 0xa1, 0x64, 0x3f, 0x62, 0x3f, 0x0c, 0x17, 0xce, 0x9e, 0x83, 0xa8, 0x30, - 0x6e, 0xa0, 0xb4, 0xd6, 0x36, 0xc0, 0x11, 0x40, 0xaa, 0x69, 0x7a, 0x0e, - 0x7f, 0xe2, 0x87, 0x9a, 0xd2, 0x3d, 0x89, 0x18, 0x23, 0x64, 0x3a, 0xbb, - 0x76, 0xf1, 0x6a, 0x86, 0x33, 0x62, 0x31, 0x15, 0xbd, 0x9d, 0x08, 0xfa, - 0xee, 0xed, 0x91, 0x09, 0x4b, 0x2e, 0x65, 0xe2, 0xe7, 0x84, 0xd6, 0x26, - 0xe7, 0x72, 0xef, 0x1d, 0xa4, 0x64, 0xdc, 0x15, 0x99, 0x37, 0xf6, 0x41, - 0x09, 0xd4, 0x18, 0xfe, 0xeb, 0xa7, 0x5f, 0xfe, 0x0d, 0xff, 0xd7, 0xbb, - 0x55, 0xcb, 0x65, 0xa6, 0x45, 0xb7, 0x89, 0xb7, 0x2b, 0xee, 0x2f, 0x80, - 0x79, 0x5c, 0xc7, 0xe9, 0x75, 0x3a, 0x04, 0x4e, 0x5d, 0x29, 0xaa, 0x6c, - 0x3c, 0xab, 0xa2, 0xbd, 0x59, 0x36, 0x9d, 0x66, 0x1d, 0x98, 0xcc, 0xdf, - 0xe3, 0x6b, 0xd1, 0xa1, 0xbc, 0x66, 0x60, 0xf0, 0xce, 0x8b, 0x12, 0xbe, - 0x78, 0x26, 0xb0, 0x5b, 0x0e, 0xc0, 0xab, 0xf5, 0xd5, 0x47, 0x54, 0xd3, - 0x1d, 0x6a, 0x6f, 0xca, 0x4e, 0x7e, 0x6a, 0xfd, 0xe8, 0xb4, 0xf8, 0x13, - 0xbf, 0xcc, 0x22, 0x99, 0xa2, 0x07, 0x67, 0xf4, 0x81, 0x3c, 0xd7, 0x55, - 0x1f, 0xa3, 0xf8, 0x78, 0x6e, 0xdc, 0x29, 0x32, 0x50, 0xe0, 0x21, 0x30, - 0x39, 0xda, 0x64, 0xd0, 0x48, 0x1f, 0x71, 0x36, 0x22, 0x74, 0x8d, 0xf3, - 0x7d, 0x03, 0x6d, 0x7a, 0x4f, 0x03, 0x76, 0x04, 0x36, 0xf0, 0xfa, 0x88, - 0x07, 0x51, 0xbe, 0x87, 0x79, 0xae, 0xa9, 0x37, 0x43, 0x6a, 0x87, 0x0d, - 0xec, 0x73, 0x64, 0x25, 0x59, 0xd2, 0xa0, 0xc3, 0xf8, 0x9b, 0x31, 0x2b, - 0x23, 0x19, 0x9b, 0xee, 0x21, 0x6e, 0xbf, 0x55, 0x42, 0x2a, 0x49, 0x10, - 0x3c, 0x25, 0x9d, 0xb2, 0x1e, 0x1b, 0xc4, 0x6f, 0xb5, 0xae, 0x03, 0x11, - 0x8c, 0xc0, 0x6d, 0xe0, 0x94, 0x19, 0xc9, 0x49, 0x92, 0x12, 0x8a, 0x3c, - 0x35, 0xae, 0xf6, 0xa0, 0x43, 0x92, 0x46, 0x67, 0x0f, 0x30, 0xec, 0x8c, - 0xb8, 0x56, 0x08, 0xdf, 0x99, 0x30, 0xe8, 0x18, 0x7d, 0x1a, 0xdf, 0xa6, - 0x94, 0x69, 0xd4, 0xce, 0x9b, 0x14, 0xd0, 0x8e, 0x92, 0xbe, 0x3c, 0x88, - 0x9e, 0x3e, 0x79, 0xf2, 0x84, 0x13, 0x46, 0x7a, 0x47, 0x34, 0xf1, 0xdb, - 0xc3, 0x83, 0xe3, 0xd7, 0xaf, 0x0f, 0xdf, 0xbc, 0x38, 0x7c, 0xa1, 0x59, - 0xdc, 0xce, 0xda, 0x9d, 0x7c, 0x2b, 0x2f, 0x76, 0x83, 0xf5, 0x3e, 0x40, - 0x1a, 0xdb, 0x4f, 0xb6, 0xe2, 0x9d, 0x27, 0x5b, 0xd1, 0x0c, 0x45, 0xaf, - 0x62, 0x45, 0x24, 0x53, 0xc4, 0x47, 0x8c, 0x2e, 0x16, 0x60, 0xce, 0x60, - 0x0f, 0xe7, 0x1a, 0x11, 0x31, 0x15, 0xbe, 0x3f, 0x4f, 0x6b, 0x74, 0x2a, - 0xb7, 0xad, 0x18, 0x2c, 0xa6, 0xee, 0x99, 0x2e, 0x83, 0x36, 0xc5, 0x4c, - 0xec, 0x04, 0xa2, 0xd8, 0x9d, 0x2d, 0x9c, 0x68, 0x10, 0xbd, 0x04, 0x45, - 0x77, 0x52, 0x7c, 0x64, 0xe2, 0x3c, 0xb8, 0x00, 0xf3, 0x34, 0xf5, 0x93, - 0xcb, 0x9a, 0xef, 0xe3, 0xeb, 0x8f, 0xf8, 0xf5, 0x70, 0x23, 0x80, 0xee, - 0x4b, 0x77, 0x53, 0x93, 0x9f, 0x10, 0x50, 0xf1, 0x27, 0xa7, 0x12, 0x76, - 0x2f, 0xe7, 0xc9, 0xd6, 0xd6, 0x6a, 0x12, 0x70, 0x86, 0x6c, 0x66, 0x96, - 0x7c, 0xe4, 0xa6, 0x27, 0xd2, 0x9a, 0xa3, 0x85, 0x58, 0xdd, 0xc0, 0x43, - 0xfd, 0xb2, 0x89, 0x66, 0x04, 0x4b, 0x29, 0x8b, 0x8f, 0xd7, 0x31, 0x47, - 0x1b, 0x7d, 0x47, 0x21, 0x83, 0x52, 0x91, 0xd7, 0xc4, 0x64, 0x89, 0x1e, - 0x9d, 0xe0, 0x58, 0xdf, 0xef, 0x9f, 0xe0, 0x9b, 0xd1, 0xc9, 0xdb, 0xe3, - 0x1f, 0xff, 0x61, 0x91, 0x62, 0x2e, 0xb7, 0x4d, 0xbd, 0x57, 0x94, 0x04, - 0xa2, 0xef, 0x40, 0x6c, 0x60, 0xae, 0xe4, 0x02, 0x5e, 0x22, 0x76, 0x6b, - 0x97, 0x2b, 0x0e, 0x33, 0xab, 0x60, 0xa7, 0xb3, 0xb1, 0xd3, 0x0f, 0xd7, - 0xbd, 0xb1, 0x69, 0x65, 0xea, 0x4c, 0xb3, 0x7c, 0x9c, 0x71, 0xe7, 0x22, - 0x42, 0x72, 0x00, 0x51, 0x9d, 0x79, 0x4e, 0x16, 0x98, 0x90, 0xc2, 0x74, - 0x40, 0x39, 0x8f, 0x49, 0x80, 0x9e, 0x53, 0x87, 0xd0, 0x5c, 0x5b, 0xfe, - 0xc0, 0x65, 0xfc, 0x69, 0x6b, 0x30, 0xd8, 0x79, 0xf2, 0xe4, 0x17, 0x0c, - 0x7c, 0x48, 0x5a, 0xf8, 0x55, 0x89, 0x35, 0x54, 0xb9, 0xef, 0xf6, 0x54, - 0xac, 0xf6, 0x12, 0xbb, 0x26, 0x61, 0x46, 0xb5, 0xf6, 0x9a, 0x73, 0x1a, - 0x4f, 0xe9, 0x7c, 0xc8, 0x10, 0xc6, 0xc4, 0xca, 0xb8, 0xaa, 0x2f, 0x50, - 0x12, 0x48, 0x0a, 0x31, 0x36, 0xb8, 0x53, 0xd4, 0xa6, 0xdf, 0xd2, 0xb2, - 0x48, 0xad, 0xc4, 0x9e, 0x63, 0x0d, 0x53, 0x2d, 0x30, 0x6d, 0x93, 0xb2, - 0x60, 0x6c, 0x68, 0xed, 0xad, 0xea, 0xad, 0x0e, 0xa4, 0xb2, 0x84, 0x85, - 0x2e, 0x8b, 0x6c, 0xec, 0xe0, 0x29, 0x71, 0x75, 0xdd, 0x64, 0x51, 0x19, - 0x15, 0xb8, 0x18, 0xd5, 0x88, 0xdd, 0x24, 0x43, 0x0d, 0x96, 0xf1, 0xe4, - 0x94, 0x80, 0x3d, 0x51, 0xc1, 0x1f, 0x92, 0xe7, 0xc9, 0xd9, 0x74, 0xde, - 0x72, 0x5c, 0xd3, 0x63, 0xa0, 0x80, 0x8f, 0x89, 0x6e, 0xcf, 0x38, 0x3b, - 0x07, 0x9d, 0xa5, 0x4d, 0x58, 0x0b, 0xd0, 0xa1, 0x4b, 0xaa, 0xbb, 0xa5, - 0xf0, 0x15, 0xe5, 0x39, 0x11, 0xf6, 0xe5, 0x2c, 0x93, 0xad, 0xe3, 0x9a, - 0x5d, 0x8b, 0xf5, 0x22, 0x19, 0x7a, 0xb4, 0x4d, 0xfd, 0x80, 0xa6, 0x24, - 0xd5, 0x6a, 0x84, 0xe3, 0x4f, 0x2c, 0x0a, 0xdb, 0x8e, 0xd1, 0xb6, 0x2f, - 0xf8, 0x9b, 0xa7, 0x74, 0x38, 0x08, 0xfc, 0x3d, 0x92, 0x34, 0x46, 0x6e, - 0x2f, 0x18, 0xba, 0xe6, 0x25, 0xf2, 0x63, 0x1d, 0x8c, 0x10, 0x47, 0x94, - 0x57, 0x63, 0x89, 0x17, 0x58, 0xcf, 0xe4, 0x5a, 0xe2, 0x13, 0x62, 0x59, - 0x51, 0x17, 0xb8, 0x89, 0xbc, 0x87, 0x3e, 0xdd, 0xc1, 0x66, 0x90, 0xba, - 0x34, 0x44, 0xff, 0x1b, 0x6d, 0xa0, 0x52, 0x06, 0xec, 0xe3, 0xf6, 0x8e, - 0x8f, 0x37, 0x74, 0xac, 0xe6, 0x11, 0x95, 0x62, 0x47, 0x4d, 0x04, 0x2a, - 0x5e, 0x97, 0x96, 0x33, 0x99, 0x64, 0x01, 0x72, 0x88, 0x23, 0xdb, 0xf4, - 0x6d, 0xc6, 0x2a, 0x54, 0xe5, 0x06, 0x62, 0x42, 0x37, 0xa1, 0x72, 0x99, - 0x81, 0xb9, 0xcc, 0xd9, 0x44, 0xec, 0xcc, 0xac, 0xd6, 0x14, 0x1b, 0xb8, - 0xaa, 0x58, 0xfe, 0x52, 0x5e, 0xfb, 0x81, 0x5b, 0x55, 0x74, 0x09, 0x43, - 0x06, 0xb1, 0x43, 0xab, 0x9b, 0x7c, 0xeb, 0xf3, 0x12, 0x28, 0xa4, 0xcc, - 0xa6, 0xd7, 0x2a, 0xf7, 0x28, 0x48, 0x60, 0x3a, 0xf5, 0x50, 0x5e, 0x9f, - 0x6d, 0x78, 0xed, 0xcf, 0xc8, 0xb8, 0x8a, 0x7c, 0xdd, 0x2f, 0xb3, 0x11, - 0x31, 0x64, 0x94, 0x3f, 0x94, 0x2f, 0x5a, 0xd1, 0x15, 0xcf, 0xc7, 0xe1, - 0xe6, 0x1f, 0x01, 0xde, 0xf7, 0x79, 0x3a, 0xbe, 0x79, 0xab, 0xf8, 0x5f, - 0x47, 0x27, 0xdd, 0xfc, 0xfe, 0x23, 0xf2, 0x7b, 0x7a, 0xc1, 0x61, 0xeb, - 0xcf, 0x07, 0x3b, 0x61, 0xae, 0xae, 0x07, 0xd9, 0xc5, 0xd5, 0x29, 0x24, - 0xd8, 0xcd, 0xc8, 0x85, 0x8f, 0x0b, 0xf0, 0x9a, 0xe5, 0xdc, 0x3e, 0x79, - 0xf3, 0x03, 0x6e, 0xe0, 0x46, 0x33, 0x16, 0xc9, 0xee, 0xc6, 0xc2, 0xe6, - 0x82, 0x7a, 0x7b, 0x26, 0x63, 0xd5, 0x20, 0xa4, 0x93, 0x94, 0xef, 0x40, - 0xa0, 0xdc, 0x1d, 0x5c, 0xc7, 0x47, 0x6e, 0x19, 0x6a, 0xb8, 0x4c, 0x33, - 0x2d, 0xa6, 0x2e, 0x17, 0x8d, 0x08, 0x90, 0x66, 0xc1, 0x0c, 0x3e, 0x85, - 0xe4, 0x88, 0xe2, 0x0c, 0xc1, 0xa1, 0xf2, 0x9c, 0x04, 0x10, 0x5b, 0xb2, - 0x91, 0x68, 0x77, 0xdc, 0x67, 0x42, 0x92, 0x7d, 0x79, 0xb7, 0x96, 0x3a, - 0xd0, 0xbd, 0x0b, 0x76, 0xaf, 0x7e, 0xab, 0xf6, 0xe8, 0x77, 0xa5, 0x44, - 0xdb, 0xfc, 0x72, 0x15, 0x4d, 0x24, 0x48, 0x99, 0xcf, 0x06, 0x4f, 0xb7, - 0x1a, 0xa4, 0x69, 0x9c, 0x2d, 0x41, 0x14, 0x3a, 0xf4, 0x67, 0xbe, 0x3c, - 0x7a, 0x75, 0xb8, 0x11, 0xbd, 0x4c, 0x6b, 0x41, 0xff, 0xd1, 0x52, 0x7d, - 0x4c, 0xdc, 0xf9, 0x0f, 0xf2, 0x3c, 0x99, 0x1e, 0xd7, 0x02, 0xe2, 0x17, - 0x2c, 0xaf, 0x94, 0x20, 0x33, 0xf9, 0x63, 0x14, 0x4a, 0x88, 0xc9, 0x91, - 0xce, 0x15, 0x9d, 0x0f, 0x5a, 0xae, 0xa9, 0x29, 0xd2, 0x42, 0xee, 0x81, - 0x02, 0x76, 0x85, 0x57, 0x1e, 0x38, 0xbd, 0x37, 0x8b, 0xdc, 0x29, 0xb8, - 0xc0, 0x45, 0x0b, 0x78, 0x80, 0x66, 0x50, 0x67, 0x15, 0x30, 0xd6, 0xeb, - 0x2a, 0x14, 0x3b, 0xa2, 0x84, 0x60, 0x03, 0x6e, 0x45, 0x4c, 0x65, 0x56, - 0x8c, 0x6d, 0xb7, 0x5a, 0xd2, 0xe5, 0x9a, 0x79, 0x9f, 0x01, 0xfb, 0xf9, - 0x88, 0xec, 0x67, 0x2a, 0x4e, 0xbb, 0xef, 0x84, 0x3f, 0x1c, 0x74, 0x45, - 0xea, 0x39, 0x5a, 0x8d, 0x5a, 0xd4, 0xff, 0x05, 0xff, 0xb9, 0xc4, 0xbf, - 0xc2, 0x79, 0x0e, 0x09, 0x2c, 0x8f, 0x34, 0x58, 0x58, 0xf7, 0x28, 0x8d, - 0x93, 0x6a, 0x94, 0x65, 0x0e, 0xed, 0x7c, 0xaf, 0xb4, 0x83, 0xd5, 0x58, - 0xfc, 0xdf, 0xcd, 0x6f, 0x3a, 0x7b, 0x5b, 0x31, 0x48, 0x1f, 0x16, 0x68, - 0x6f, 0xc0, 0xd2, 0x71, 0x27, 0xe4, 0x55, 0xe2, 0x28, 0xa0, 0xdc, 0x71, - 0xe8, 0x0c, 0xff, 0xc7, 0x55, 0xd7, 0x64, 0x14, 0xb1, 0x9c, 0xec, 0xf0, - 0xb7, 0xaa, 0xe1, 0xa9, 0x1e, 0x50, 0x61, 0x14, 0x2a, 0x1e, 0x39, 0x2a, - 0x2c, 0x86, 0xa5, 0x42, 0x8c, 0x75, 0x39, 0x48, 0x0d, 0xa8, 0x41, 0x40, - 0xe5, 0x85, 0xf1, 0x69, 0xf1, 0x0a, 0x39, 0xf8, 0xfa, 0xe8, 0xf5, 0xa1, - 0xe0, 0xf0, 0xa4, 0x63, 0xae, 0x7a, 0xe5, 0x3e, 0x9a, 0x7c, 0x62, 0xb6, - 0xa2, 0x33, 0x5c, 0xee, 0x58, 0x69, 0xa3, 0x16, 0x86, 0x5c, 0x6c, 0xfa, - 0x2e, 0xb9, 0x5b, 0x1d, 0x52, 0x14, 0xcd, 0x62, 0x51, 0xc6, 0x89, 0x6e, - 0xfc, 0xe1, 0x2e, 0xb1, 0x0b, 0x32, 0xef, 0x1f, 0x55, 0xb5, 0xd7, 0x2a, - 0x1e, 0x68, 0x59, 0xd2, 0xe4, 0x62, 0x0a, 0xa2, 0x73, 0x4a, 0x15, 0xea, - 0xc6, 0xdf, 0x9f, 0x10, 0x19, 0xb6, 0xcb, 0x96, 0x93, 0xab, 0xe6, 0x77, - 0x55, 0x8d, 0xc6, 0xc6, 0x4f, 0x9e, 0x86, 0x62, 0xeb, 0x98, 0xaa, 0x85, - 0xb9, 0x45, 0x26, 0x29, 0x0a, 0xd4, 0x23, 0xeb, 0x64, 0x48, 0x9d, 0xa3, - 0xd6, 0x2e, 0x8f, 0x0e, 0x06, 0x4e, 0x20, 0xb7, 0x4a, 0x9c, 0x5c, 0x88, - 0xbe, 0x92, 0x28, 0xfc, 0x8a, 0x92, 0x0a, 0xbe, 0x77, 0x91, 0x38, 0x29, - 0x07, 0xb9, 0xf4, 0x52, 0xb7, 0x25, 0x2b, 0x5d, 0x89, 0xd3, 0x45, 0xae, - 0xa9, 0xa1, 0x57, 0x5a, 0x3b, 0xd3, 0x17, 0x10, 0xae, 0x8f, 0xfc, 0xc8, - 0x94, 0xd0, 0x5c, 0x1c, 0x1c, 0x8a, 0x40, 0x32, 0x5e, 0xcb, 0x8d, 0xee, - 0x8e, 0xde, 0x0c, 0xd8, 0xa1, 0xb7, 0x11, 0x8e, 0x94, 0x92, 0x00, 0xa9, - 0xad, 0x13, 0x28, 0x8c, 0xa3, 0x0f, 0x5e, 0x21, 0x0d, 0xb5, 0x95, 0x5d, - 0x90, 0x83, 0x33, 0xc9, 0xdd, 0xe5, 0x69, 0x75, 0x02, 0x9c, 0x18, 0x37, - 0x56, 0x31, 0x1b, 0x43, 0xd1, 0x1a, 0x51, 0x13, 0x3b, 0x3e, 0x76, 0x7a, - 0x2d, 0xe5, 0x9d, 0xca, 0xac, 0xd5, 0x73, 0x89, 0xc8, 0x75, 0xe4, 0x3c, - 0x4d, 0x4b, 0x3c, 0x7e, 0x04, 0x5c, 0xc7, 0xa4, 0x93, 0x2b, 0x69, 0x21, - 0xd6, 0x66, 0x47, 0x25, 0x6a, 0xeb, 0x14, 0xdc, 0x7c, 0x9b, 0xce, 0x0a, - 0x6a, 0x7a, 0x67, 0x3f, 0x59, 0xad, 0x4a, 0x04, 0x71, 0x12, 0x67, 0x14, - 0x22, 0x4a, 0xc8, 0xca, 0x90, 0x68, 0xbb, 0xdc, 0xa7, 0x0a, 0x1e, 0x61, - 0x4b, 0x32, 0x24, 0x83, 0x0f, 0x1b, 0x22, 0x5b, 0xfd, 0x85, 0x2c, 0x84, - 0x3e, 0x2b, 0x8e, 0xbb, 0xc0, 0x6e, 0xda, 0xb5, 0x8f, 0xdf, 0x17, 0x55, - 0xbd, 0xdb, 0x23, 0xcf, 0x15, 0xbb, 0x7f, 0x05, 0x2f, 0xb7, 0x49, 0x33, - 0x6c, 0x8a, 0x00, 0x13, 0x95, 0x56, 0x71, 0xe4, 0x9a, 0x8a, 0x7c, 0x0b, - 0x48, 0x3f, 0xc7, 0x58, 0x53, 0x3e, 0x46, 0x85, 0x41, 0x2e, 0x12, 0x48, - 0x3f, 0x58, 0x59, 0xfc, 0x7d, 0xd4, 0xfb, 0x31, 0x3e, 0x58, 0x78, 0xac, - 0x1c, 0x56, 0x10, 0x7f, 0x4f, 0x43, 0xfe, 0xa5, 0x67, 0xf2, 0xbd, 0xf8, - 0x51, 0xfb, 0x2b, 0x58, 0xfd, 0x17, 0xa1, 0x4a, 0x3d, 0x0e, 0x1d, 0xd9, - 0x56, 0x95, 0x64, 0x69, 0xc9, 0x02, 0xa9, 0xd3, 0xdb, 0x78, 0xbc, 0xa9, - 0xd6, 0x12, 0xb1, 0x11, 0xaa, 0x1f, 0xee, 0x82, 0xee, 0x04, 0x25, 0x00, - 0x6d, 0x3b, 0x58, 0x40, 0x5c, 0x4c, 0x62, 0xc2, 0xbb, 0x00, 0x95, 0xeb, - 0x03, 0x96, 0x0f, 0xd2, 0xbe, 0x31, 0x5d, 0x51, 0x8b, 0x69, 0xe2, 0x0c, - 0xe3, 0xb1, 0xf8, 0x2f, 0x2b, 0x4f, 0xf0, 0x72, 0x21, 0x96, 0x10, 0xbf, - 0x62, 0xe6, 0xf0, 0x69, 0xee, 0x4a, 0xae, 0x22, 0xbd, 0x9f, 0xa7, 0x57, - 0x0c, 0x29, 0x80, 0x4d, 0xa2, 0x04, 0xdb, 0x26, 0xc0, 0x7a, 0x09, 0xeb, - 0xa6, 0xcf, 0xde, 0x6d, 0x02, 0x3f, 0x9f, 0x71, 0x8e, 0x13, 0xa5, 0x9d, - 0x2d, 0xe6, 0xda, 0xbe, 0x7e, 0xa9, 0xd9, 0x82, 0x26, 0x18, 0xf5, 0xa6, - 0x47, 0x07, 0xac, 0xd6, 0xb2, 0x01, 0xbb, 0xfa, 0xc6, 0x40, 0x5f, 0x55, - 0xf5, 0x35, 0x2a, 0x02, 0xd2, 0x7c, 0x21, 0x50, 0x2a, 0x04, 0x2b, 0xe6, - 0x46, 0x89, 0x4a, 0x03, 0xa6, 0xfe, 0x8c, 0x36, 0x4b, 0x1c, 0x12, 0x59, - 0x8e, 0x3d, 0x2c, 0xb8, 0xe1, 0x22, 0x97, 0x4f, 0x7e, 0x13, 0xf3, 0x49, - 0x85, 0x8e, 0x90, 0x50, 0x8c, 0x9c, 0x5d, 0xe2, 0x5a, 0x42, 0x03, 0x0f, - 0xda, 0x74, 0x02, 0x3d, 0x71, 0x75, 0x32, 0x55, 0x2d, 0xa6, 0x98, 0xe7, - 0xe9, 0x64, 0x7f, 0xce, 0x08, 0x15, 0x15, 0x4c, 0x92, 0xb8, 0x9a, 0x27, - 0xb3, 0x08, 0x2c, 0xde, 0x69, 0x56, 0xa3, 0x4a, 0x3e, 0xba, 0x48, 0x25, - 0xbb, 0x98, 0xfd, 0x1e, 0x0c, 0xc6, 0x14, 0xb4, 0x89, 0xd0, 0xb7, 0x29, - 0x66, 0x14, 0x89, 0x17, 0x12, 0x12, 0xc2, 0x24, 0x76, 0xb5, 0xdc, 0x8b, - 0x60, 0x85, 0x7a, 0x2f, 0x61, 0xad, 0xbb, 0x3d, 0x10, 0x55, 0xbd, 0xb3, - 0x02, 0xfe, 0xdb, 0xbe, 0x7c, 0x2f, 0xe0, 0x62, 0xec, 0xf6, 0xc4, 0x67, - 0xdd, 0x3b, 0x65, 0xe4, 0x4d, 0xfa, 0xc1, 0xac, 0x40, 0x4e, 0x40, 0x6e, - 0x81, 0x4a, 0x61, 0x18, 0x25, 0xa0, 0xc8, 0x12, 0x39, 0x48, 0xa6, 0xe6, - 0x40, 0x83, 0xf2, 0x85, 0x1a, 0x33, 0x89, 0x3a, 0x1b, 0x5b, 0xbd, 0x81, - 0x2e, 0x55, 0xe3, 0xba, 0x5b, 0x23, 0x53, 0xeb, 0xd8, 0x72, 0x0f, 0xac, - 0x85, 0x81, 0x94, 0x5b, 0x7a, 0xf1, 0xa3, 0x67, 0xa1, 0x33, 0x48, 0xb8, - 0xc0, 0x95, 0x8b, 0x2a, 0x61, 0x27, 0xda, 0x78, 0x20, 0xbb, 0x0c, 0xe3, - 0x99, 0x62, 0xa0, 0x4d, 0xd8, 0x0d, 0xb2, 0x17, 0x62, 0x9a, 0x1d, 0x53, - 0x6b, 0xd0, 0x55, 0x78, 0x8a, 0xfe, 0x13, 0xd1, 0x58, 0xfa, 0x6e, 0x01, - 0x83, 0x61, 0x67, 0x16, 0x4d, 0xb9, 0x4d, 0x67, 0x3c, 0x75, 0xd4, 0x09, - 0x14, 0xff, 0xc3, 0xfe, 0xdb, 0x37, 0x47, 0x6f, 0xbe, 0xdb, 0x35, 0x7b, - 0x83, 0x32, 0x41, 0xaa, 0xe9, 0xec, 0x05, 0xa2, 0xb6, 0xf2, 0x29, 0xdd, - 0x19, 0xae, 0xfa, 0xd3, 0x26, 0x4a, 0x41, 0x45, 0x09, 0x1d, 0x13, 0x2c, - 0xd0, 0x38, 0x0b, 0xa6, 0x4c, 0x39, 0x65, 0x94, 0xfd, 0x62, 0x0a, 0x12, - 0x24, 0xb0, 0x83, 0xb4, 0x19, 0x35, 0xb6, 0x15, 0x0f, 0x9c, 0x79, 0xfc, - 0x8a, 0x6a, 0xaa, 0x0a, 0x81, 0x0d, 0xe2, 0x4b, 0x8d, 0xb7, 0x79, 0x4a, - 0x57, 0xa7, 0x70, 0x6f, 0xcf, 0x30, 0x25, 0x70, 0xb8, 0x94, 0xab, 0x07, - 0x98, 0xb8, 0x02, 0x09, 0xfd, 0x15, 0xd7, 0xda, 0x69, 0xd7, 0x5c, 0x90, - 0x2a, 0x19, 0x4a, 0x2a, 0xfa, 0x5d, 0x1f, 0x5b, 0xb0, 0xc0, 0x08, 0x55, - 0x46, 0xae, 0x22, 0xb3, 0x25, 0x1d, 0xe5, 0x12, 0x46, 0xbf, 0x44, 0x8c, - 0x6b, 0x66, 0x34, 0xdc, 0xd5, 0x4c, 0x7e, 0x6a, 0x41, 0x88, 0xcc, 0x0e, - 0xf8, 0xd8, 0x1e, 0xae, 0x86, 0xfc, 0xe9, 0xe8, 0x1e, 0x5d, 0x11, 0x63, - 0x12, 0x41, 0x2f, 0x31, 0x32, 0x12, 0xbf, 0x01, 0x7e, 0xb7, 0x1b, 0xfd, - 0x67, 0x91, 0xae, 0x10, 0xf8, 0x85, 0xd7, 0xdf, 0x81, 0x05, 0x17, 0xef, - 0x9f, 0x13, 0x17, 0xbf, 0x4e, 0xab, 0x78, 0x4e, 0xbc, 0x67, 0x73, 0x67, - 0x6b, 0x6b, 0x6b, 0xb5, 0x81, 0x58, 0x24, 0xaf, 0xf2, 0xca, 0x37, 0xaa, - 0x1a, 0xae, 0xdc, 0x6a, 0x75, 0x5f, 0x8b, 0xf4, 0xe3, 0xe4, 0x3c, 0xd5, - 0xca, 0xfd, 0x94, 0x43, 0xce, 0x08, 0x74, 0xec, 0x16, 0xef, 0x5f, 0xf0, - 0x41, 0x4c, 0xe7, 0xd1, 0x1e, 0x7a, 0x2e, 0xce, 0x8b, 0xf2, 0xfa, 0x6b, - 0xaf, 0xab, 0x20, 0xca, 0x28, 0x7c, 0x46, 0x48, 0x11, 0xf3, 0x9f, 0x39, - 0x7f, 0x43, 0xb2, 0x64, 0xed, 0x01, 0x69, 0x0f, 0x3b, 0x35, 0x40, 0x02, - 0x7a, 0x27, 0xd7, 0x23, 0xeb, 0x64, 0x41, 0x8f, 0x17, 0x36, 0xd1, 0xb0, - 0x12, 0xab, 0x72, 0xb0, 0x41, 0xb8, 0x06, 0x56, 0x2d, 0x56, 0x92, 0x8c, - 0xa4, 0xd2, 0xa3, 0x04, 0xc8, 0x66, 0xf3, 0xa2, 0xf4, 0x04, 0x29, 0xd6, - 0xd5, 0x34, 0x56, 0xa8, 0x03, 0x87, 0x2d, 0x1a, 0x5d, 0x17, 0x7e, 0x5e, - 0x7b, 0x3a, 0xda, 0x26, 0x4a, 0x49, 0xc4, 0x5e, 0x4d, 0xfc, 0xa1, 0xa1, - 0xf5, 0x9b, 0x31, 0xb0, 0x0e, 0x56, 0xc3, 0x8b, 0xed, 0xc1, 0x70, 0x0c, - 0xdb, 0x8c, 0x9d, 0x86, 0xc6, 0xf7, 0xbc, 0x8e, 0x00, 0x61, 0xf0, 0x80, - 0x9b, 0x1c, 0x24, 0x38, 0x1c, 0xcc, 0xd0, 0x4d, 0x23, 0xae, 0x2d, 0xdb, - 0x70, 0xc8, 0xc1, 0x4e, 0xce, 0x17, 0xc3, 0xd9, 0xf8, 0x49, 0xb4, 0x07, - 0x7f, 0x78, 0x06, 0x2b, 0x01, 0x36, 0x9c, 0x1e, 0x80, 0xa9, 0x8a, 0x22, - 0x00, 0x55, 0x3f, 0xf1, 0xf7, 0x72, 0xa6, 0x00, 0xfe, 0xf5, 0xd1, 0x4e, - 0xc3, 0xab, 0x2e, 0x6e, 0x75, 0x06, 0x47, 0x0f, 0xf7, 0x8a, 0x70, 0xe3, - 0xf7, 0x78, 0x9c, 0xdb, 0x3b, 0xcf, 0xd1, 0xff, 0x1c, 0xbd, 0x7e, 0xf1, - 0x84, 0x65, 0x78, 0xb5, 0x98, 0xa9, 0x6e, 0xc5, 0x18, 0x03, 0xc4, 0xb8, - 0x3c, 0x0c, 0x6d, 0x58, 0xf8, 0x34, 0x1b, 0x21, 0x24, 0x63, 0x5f, 0x75, - 0x8d, 0x89, 0x49, 0xc4, 0x76, 0x22, 0x8a, 0xa6, 0x6e, 0x9a, 0x6a, 0x9d, - 0xa4, 0x92, 0xd1, 0xa7, 0x54, 0xf8, 0x7e, 0x98, 0x18, 0xc3, 0xb0, 0xf5, - 0xe8, 0x22, 0x5c, 0x5e, 0xec, 0x6c, 0xd7, 0x03, 0x96, 0x17, 0x77, 0x1e, - 0xb3, 0x9d, 0x3d, 0x7d, 0x32, 0xda, 0x1e, 0x3d, 0xfe, 0x72, 0x6b, 0x67, - 0xeb, 0xe9, 0xe3, 0xad, 0xe4, 0x49, 0x32, 0xdc, 0x9a, 0xec, 0x6c, 0x3d, - 0x7a, 0xfc, 0xfc, 0xc9, 0xe3, 0xd1, 0xa3, 0x9d, 0xed, 0xe4, 0x79, 0x54, - 0xad, 0x94, 0xc7, 0x2c, 0x23, 0x57, 0x17, 0xc9, 0x0e, 0xd8, 0xb6, 0x3e, - 0x7d, 0xf0, 0x2f, 0xa2, 0x3d, 0xfe, 0xef, 0x5d, 0xa8, 0x24, 0x89, 0xbe, - 0x25, 0x34, 0xa9, 0x58, 0x01, 0xcf, 0x4e, 0xbf, 0xdf, 0xc7, 0x21, 0xc1, - 0x88, 0xbd, 0xf0, 0xdd, 0xb6, 0xde, 0xc9, 0x3b, 0x67, 0x0d, 0x94, 0x75, - 0x20, 0x8d, 0x56, 0xf9, 0xb4, 0xdb, 0x3e, 0xde, 0x50, 0x08, 0x26, 0x70, - 0xfa, 0x34, 0x75, 0xda, 0x75, 0xdc, 0xd2, 0x57, 0x50, 0x1c, 0x79, 0x52, - 0x45, 0x52, 0x99, 0x50, 0x31, 0x07, 0xd8, 0x1d, 0x67, 0x07, 0xfc, 0xa2, - 0xaa, 0x2e, 0x76, 0x96, 0xa5, 0x51, 0x63, 0x00, 0x40, 0xe2, 0x5a, 0x04, - 0x92, 0x75, 0x7a, 0xfa, 0xbd, 0x76, 0x21, 0xaa, 0x96, 0x92, 0x9b, 0xec, - 0xfe, 0xef, 0xdf, 0x28, 0xbe, 0x39, 0xff, 0x9b, 0x17, 0x7f, 0xff, 0xf0, - 0xfa, 0xec, 0x6f, 0x1f, 0x5f, 0x7f, 0xf7, 0xb7, 0xed, 0xe3, 0x17, 0xe3, - 0xd9, 0xeb, 0x5f, 0xff, 0xf6, 0xe8, 0xf5, 0xaf, 0xa3, 0xdf, 0xfe, 0xf1, - 0xeb, 0xfe, 0xf5, 0xf1, 0xd9, 0x3f, 0x9e, 0xbc, 0x9e, 0xbd, 0xfd, 0xf0, - 0xfa, 0xd7, 0xbf, 0xcf, 0xde, 0xbc, 0xf8, 0xdb, 0x57, 0x77, 0xa3, 0x3f, - 0xa0, 0xec, 0x66, 0x8b, 0x9b, 0xad, 0x56, 0xf8, 0x00, 0x05, 0xd1, 0x9e, - 0x69, 0xd1, 0x10, 0x74, 0xaf, 0x9d, 0x36, 0x7b, 0xc7, 0x6b, 0x6b, 0x8a, - 0xef, 0x4f, 0xcf, 0x6c, 0x7a, 0xaa, 0xc9, 0x42, 0x25, 0xf1, 0x63, 0xb0, - 0x10, 0x42, 0x10, 0xf0, 0xd1, 0x1c, 0x54, 0x58, 0x76, 0xb9, 0x13, 0x96, - 0x28, 0xd7, 0x02, 0xf1, 0x70, 0xd8, 0x4e, 0x3e, 0x15, 0xef, 0x6a, 0x23, - 0xa9, 0x22, 0xda, 0x47, 0x95, 0xb0, 0x6d, 0x5c, 0x31, 0x12, 0x42, 0xea, - 0xf6, 0x58, 0x96, 0xe6, 0x04, 0x34, 0x0e, 0x4a, 0x8f, 0xe4, 0xd2, 0x3a, - 0xc0, 0x6c, 0x27, 0x0a, 0x76, 0x83, 0xb6, 0x4f, 0x94, 0xba, 0x63, 0x1b, - 0x3c, 0x2d, 0xf6, 0xd3, 0x76, 0x84, 0x94, 0x04, 0xd0, 0xa6, 0x62, 0x15, - 0x54, 0xca, 0x4e, 0x71, 0xb3, 0xe0, 0x84, 0x24, 0xe9, 0xde, 0xa6, 0xc5, - 0x52, 0x47, 0x39, 0xbe, 0xb2, 0x78, 0x2c, 0xa1, 0x4d, 0x91, 0x18, 0x43, - 0xc6, 0x45, 0x37, 0xdc, 0x70, 0xd4, 0x6c, 0x08, 0x79, 0x1d, 0x17, 0xf3, - 0xf3, 0x32, 0x19, 0xa7, 0xad, 0x94, 0xdb, 0x70, 0x4d, 0x25, 0x9d, 0xda, - 0x20, 0x3a, 0x44, 0x3b, 0xd3, 0xd9, 0x57, 0x90, 0xd9, 0x20, 0x53, 0xf1, - 0x03, 0xc9, 0xd9, 0x32, 0xce, 0x80, 0xf2, 0x11, 0x27, 0x74, 0x9a, 0x4d, - 0xd8, 0x9f, 0x0c, 0x8a, 0x77, 0x20, 0x93, 0xcc, 0xc1, 0xe7, 0x97, 0x45, - 0x70, 0x84, 0x30, 0x9a, 0x82, 0x39, 0x06, 0xbf, 0x96, 0xde, 0x64, 0x81, - 0x9d, 0x3a, 0x35, 0xc5, 0x8c, 0xbd, 0x9e, 0xb3, 0xfb, 0xeb, 0x18, 0x4c, - 0x15, 0x48, 0xc0, 0x0d, 0x1b, 0xb7, 0x96, 0x4e, 0x27, 0x9b, 0xda, 0x04, - 0xcd, 0x33, 0x34, 0xc9, 0xe3, 0x45, 0x3b, 0x4f, 0xbd, 0x37, 0xb0, 0x03, - 0xda, 0x54, 0xf6, 0xc9, 0x34, 0x9e, 0x08, 0x9e, 0x96, 0xdb, 0xcf, 0xd9, - 0x44, 0xaa, 0x5a, 0x17, 0x9e, 0xc6, 0xe5, 0xca, 0x33, 0x0b, 0x6d, 0x5f, - 0x7a, 0xda, 0x25, 0x6a, 0x1d, 0x4a, 0x4b, 0x26, 0x81, 0x8e, 0x39, 0x05, - 0x3a, 0x0a, 0x75, 0x70, 0x24, 0x01, 0xfe, 0x0e, 0x0f, 0xb4, 0x94, 0xef, - 0xdc, 0xc3, 0x21, 0xf2, 0xc9, 0xf0, 0x70, 0xe0, 0xab, 0x2b, 0xbe, 0x1c, - 0x10, 0x6a, 0x36, 0xe8, 0x7c, 0xdc, 0xe2, 0x18, 0x30, 0xde, 0xd6, 0xe0, - 0xcb, 0x70, 0x9c, 0xb1, 0xd9, 0xd1, 0x0c, 0xa1, 0x5d, 0x0d, 0x38, 0x31, - 0x99, 0x7e, 0xda, 0x8d, 0x1e, 0x1b, 0xc7, 0x69, 0x15, 0x99, 0x77, 0x62, - 0xf8, 0xe4, 0x26, 0x3e, 0x41, 0x18, 0xbf, 0xa6, 0xd8, 0x4c, 0x7d, 0x7c, - 0x6a, 0x5e, 0x39, 0x8d, 0x23, 0xa9, 0xb6, 0x91, 0x3c, 0x4e, 0xb8, 0xaf, - 0xc1, 0xf6, 0x97, 0x9a, 0x25, 0xe7, 0x18, 0xa9, 0x82, 0x2f, 0xee, 0x74, - 0xb2, 0x50, 0xe0, 0xe5, 0x0c, 0x0e, 0x99, 0xba, 0xc7, 0x04, 0x4c, 0x55, - 0x59, 0x0d, 0x57, 0xc0, 0xb2, 0x39, 0xcd, 0x3d, 0xb0, 0xe9, 0x4e, 0xce, - 0x13, 0xcd, 0x57, 0x2a, 0xae, 0x72, 0xb9, 0xb0, 0x84, 0x9e, 0x9b, 0xb0, - 0xf5, 0xba, 0xf4, 0x63, 0x25, 0x87, 0xb0, 0xb3, 0x00, 0xed, 0x29, 0x3a, - 0xc9, 0x97, 0x06, 0x1d, 0xf9, 0x6c, 0xee, 0x39, 0xd3, 0x58, 0x46, 0x5d, - 0x59, 0xb7, 0x92, 0xc5, 0xac, 0x46, 0x80, 0xf8, 0xf4, 0xf6, 0x60, 0xbb, - 0x2f, 0x7f, 0xdd, 0x91, 0x30, 0x11, 0xfe, 0xfd, 0x51, 0x33, 0xda, 0xd8, - 0xa4, 0xcb, 0xad, 0xbe, 0x79, 0x79, 0xeb, 0x36, 0xb4, 0xa9, 0x6c, 0xd2, - 0x90, 0x24, 0xbc, 0xe7, 0xba, 0xe0, 0xa5, 0xe0, 0x3c, 0xe0, 0xcd, 0x75, - 0x3c, 0xe1, 0xdc, 0xec, 0x0c, 0x1b, 0xdf, 0xb8, 0x43, 0x2d, 0x8b, 0x0b, - 0xbb, 0xcb, 0xbc, 0x55, 0x48, 0x78, 0xf5, 0x3d, 0xc7, 0x91, 0x57, 0xdf, - 0x73, 0x3c, 0x29, 0xbb, 0xd5, 0x70, 0x02, 0xc1, 0x26, 0x9f, 0x16, 0x46, - 0xd3, 0xbb, 0x16, 0xe8, 0xf9, 0x20, 0x0f, 0x8a, 0x19, 0x21, 0x72, 0x06, - 0x74, 0xcf, 0x71, 0x07, 0xf1, 0x53, 0xc1, 0xd0, 0xc4, 0x88, 0x01, 0x50, - 0xfb, 0x79, 0xc8, 0xa7, 0xa8, 0x27, 0xde, 0x62, 0x3c, 0x30, 0xea, 0x1d, - 0x0f, 0x77, 0x7b, 0x70, 0xd3, 0xc5, 0xc1, 0x15, 0x3f, 0xd4, 0x89, 0x6c, - 0xaf, 0x76, 0x22, 0x0d, 0x2a, 0xb1, 0x1b, 0x87, 0x97, 0xf0, 0x2e, 0xdd, - 0x97, 0x09, 0xee, 0xb4, 0x63, 0xcc, 0xce, 0x83, 0x69, 0x1f, 0xb0, 0x1e, - 0x54, 0xd7, 0xd1, 0x78, 0xa7, 0x7a, 0x9b, 0x83, 0x82, 0xf5, 0x57, 0x18, - 0x39, 0xa1, 0xb2, 0x62, 0x64, 0xc6, 0x58, 0xf2, 0x64, 0xbc, 0x84, 0xea, - 0x15, 0x0c, 0x79, 0x28, 0x89, 0x6f, 0xee, 0x38, 0x91, 0x1f, 0xfa, 0x01, - 0x51, 0xdd, 0x3b, 0x56, 0x52, 0x06, 0x94, 0xf5, 0x64, 0xec, 0x0c, 0x5a, - 0x5d, 0xd4, 0xb5, 0x3a, 0xdb, 0x73, 0x50, 0x2b, 0xa0, 0x09, 0xc9, 0xbd, - 0xd2, 0x79, 0x2a, 0x84, 0xc8, 0xa7, 0x40, 0x52, 0x72, 0x95, 0xa0, 0xc1, - 0x44, 0x2a, 0x96, 0x5d, 0xa4, 0x67, 0x96, 0xa3, 0x08, 0xc1, 0xb0, 0x85, - 0x0e, 0xd0, 0x40, 0x53, 0x84, 0x21, 0xa4, 0x81, 0x75, 0x7a, 0x5e, 0x50, - 0x01, 0xe7, 0xd8, 0xc9, 0xc6, 0x49, 0x4b, 0xff, 0x72, 0xe1, 0x15, 0xcc, - 0x43, 0xdd, 0x6d, 0x6f, 0x20, 0x6a, 0xff, 0xae, 0xb5, 0x48, 0xbc, 0xd5, - 0x74, 0xb5, 0x7d, 0xe8, 0x2d, 0x61, 0xd1, 0x25, 0x1e, 0xbc, 0x69, 0xee, - 0x72, 0x4d, 0xfc, 0xb5, 0xae, 0x88, 0x19, 0x1c, 0x92, 0x18, 0x5d, 0x43, - 0x2b, 0x5d, 0x74, 0xd1, 0xc1, 0x22, 0x07, 0x25, 0x63, 0x7a, 0xcd, 0x08, - 0xd6, 0x6c, 0xa1, 0x5e, 0xa1, 0x65, 0x40, 0xf6, 0x29, 0x52, 0xae, 0x62, - 0xfd, 0xcb, 0x01, 0x87, 0x81, 0xfa, 0x9c, 0x6b, 0xda, 0x81, 0x42, 0x6c, - 0x18, 0x04, 0xad, 0xba, 0x7d, 0x49, 0x83, 0x5c, 0x71, 0x67, 0xe9, 0x35, - 0xbc, 0x13, 0x7f, 0xdc, 0x09, 0xba, 0xf2, 0x88, 0xc6, 0xfb, 0x2e, 0xbe, - 0x21, 0x0d, 0x60, 0x88, 0xd6, 0xdc, 0x8e, 0x4c, 0xfd, 0xe2, 0x74, 0x7d, - 0x91, 0x3a, 0x3d, 0x0a, 0x26, 0x6a, 0x75, 0x10, 0xf8, 0x68, 0x50, 0xab, - 0xe7, 0x04, 0xe7, 0xa7, 0xe1, 0xfb, 0xaa, 0xbe, 0xf3, 0x0a, 0x78, 0x08, - 0xb7, 0xfe, 0x41, 0x6d, 0x12, 0xf6, 0x70, 0x48, 0xd9, 0x59, 0x11, 0x66, - 0x17, 0xb6, 0x73, 0xa4, 0x30, 0x89, 0x5d, 0xf3, 0x4a, 0x47, 0x4e, 0xd7, - 0x0f, 0x06, 0xcb, 0x80, 0x3c, 0x23, 0x32, 0x0e, 0x01, 0xeb, 0xca, 0xf6, - 0x64, 0x4e, 0xea, 0x83, 0x54, 0xec, 0xa0, 0x22, 0x81, 0x88, 0xaa, 0x91, - 0xe7, 0x3a, 0xc1, 0x0d, 0xda, 0x1e, 0xec, 0x60, 0xf0, 0x52, 0x10, 0x5c, - 0x38, 0x82, 0x7f, 0x81, 0xed, 0xca, 0x8d, 0xc9, 0x2b, 0xc4, 0x49, 0x8a, - 0xa0, 0x53, 0x62, 0x11, 0x6e, 0x3f, 0x8d, 0xe0, 0x2f, 0x04, 0x4f, 0x3b, - 0x62, 0x14, 0x7a, 0xde, 0x2e, 0x3d, 0x59, 0x19, 0x8a, 0x1c, 0xc1, 0x72, - 0x67, 0xeb, 0x69, 0x75, 0x09, 0x6b, 0xb8, 0x99, 0x77, 0x3c, 0x90, 0x38, - 0xdc, 0xf9, 0x34, 0x95, 0xf0, 0x91, 0x90, 0x3f, 0xb0, 0x9e, 0x64, 0x3a, - 0xcf, 0xcd, 0x15, 0xb7, 0xac, 0x3e, 0x00, 0x7a, 0x4b, 0xd4, 0x79, 0xd3, - 0x9d, 0xd6, 0x2b, 0xad, 0x37, 0xda, 0x51, 0x80, 0x7c, 0xe7, 0x8f, 0xbd, - 0xd0, 0x2d, 0x49, 0xdb, 0x56, 0x80, 0xe8, 0x56, 0x3b, 0xd7, 0xba, 0xfb, - 0x5e, 0x87, 0xf4, 0xa2, 0xae, 0x7b, 0xfe, 0x28, 0x0e, 0xf4, 0x06, 0xd0, - 0xc6, 0xd2, 0x7f, 0xfa, 0x93, 0xc4, 0xe7, 0xfe, 0xf4, 0xa7, 0xdd, 0x46, - 0x04, 0x94, 0x50, 0x2e, 0x3e, 0x82, 0xc1, 0x9e, 0xcd, 0xa8, 0x8d, 0xee, - 0x20, 0x7a, 0x61, 0xf1, 0x40, 0x3c, 0x87, 0x08, 0x88, 0xa4, 0xf1, 0x22, - 0x9c, 0xae, 0x7f, 0xa4, 0xed, 0x22, 0x3d, 0x9e, 0xb2, 0xf9, 0xc8, 0x04, - 0xd8, 0x28, 0xa6, 0xa0, 0xac, 0xe1, 0xdd, 0xdb, 0x57, 0xfd, 0xc8, 0xa4, - 0x4c, 0x78, 0xb8, 0x42, 0xd3, 0x29, 0x21, 0xa2, 0xd1, 0x06, 0x62, 0x93, - 0xf9, 0x4c, 0x2e, 0x98, 0x12, 0x72, 0x35, 0xd0, 0xd1, 0x91, 0xcc, 0x29, - 0x6e, 0xa1, 0xe6, 0x33, 0x58, 0x7f, 0x81, 0xdb, 0x7e, 0x4a, 0xbb, 0x87, - 0xdf, 0x36, 0xd1, 0x1e, 0xb7, 0x58, 0x96, 0x37, 0x30, 0x9c, 0xad, 0x59, - 0x52, 0x4b, 0xdd, 0x84, 0xcf, 0xc5, 0xae, 0x6c, 0x4b, 0x41, 0xec, 0xa4, - 0xb0, 0x1c, 0xf8, 0x43, 0x73, 0x73, 0xa4, 0xe9, 0xad, 0xf1, 0x69, 0x58, - 0x86, 0xb3, 0x3f, 0xad, 0xe3, 0xd3, 0xcb, 0x91, 0x62, 0xe3, 0x7a, 0xd0, - 0x4a, 0xcc, 0xc6, 0xa4, 0xba, 0x4e, 0x3e, 0xf5, 0x4a, 0xeb, 0x0f, 0x91, - 0x24, 0xac, 0x6c, 0x12, 0x9c, 0x52, 0xe0, 0x0a, 0x09, 0xb6, 0x79, 0xe4, - 0x87, 0x3d, 0x4c, 0x36, 0x7a, 0x94, 0x63, 0x45, 0x17, 0x1c, 0xdf, 0xd7, - 0xac, 0xd9, 0xa5, 0x1f, 0xe2, 0xc4, 0x89, 0x11, 0xed, 0x89, 0x6c, 0xd7, - 0xe8, 0x6f, 0xef, 0x8e, 0x0e, 0x5c, 0xff, 0xbf, 0xad, 0xd6, 0xf2, 0x7b, - 0x2e, 0x98, 0x0a, 0xa9, 0x26, 0x6b, 0xd4, 0xaa, 0x2c, 0xcc, 0xe1, 0x62, - 0x6f, 0x2d, 0xab, 0x79, 0x7a, 0xbe, 0x1c, 0x09, 0xf7, 0xcd, 0x2d, 0xb0, - 0xa3, 0x07, 0x04, 0xb2, 0xa0, 0xb7, 0x7f, 0x52, 0xd8, 0xae, 0x7c, 0x93, - 0x45, 0x4e, 0x0b, 0x4a, 0xa8, 0x71, 0xb4, 0xc4, 0xbd, 0x95, 0x98, 0x6e, - 0x64, 0x70, 0x7c, 0x87, 0x1e, 0x88, 0xcb, 0xc9, 0xe0, 0x77, 0x51, 0x61, - 0xba, 0xed, 0xdf, 0xc6, 0xd0, 0xf7, 0xac, 0xc2, 0x3c, 0xfa, 0x5d, 0x55, - 0x18, 0x61, 0x8d, 0x1d, 0x8c, 0xcf, 0xfd, 0x2d, 0xae, 0x8b, 0xed, 0xfe, - 0x00, 0x4e, 0xf3, 0xb3, 0xc1, 0x73, 0x84, 0xdc, 0x6a, 0xf1, 0xc6, 0xcf, - 0xc6, 0x16, 0x9b, 0x6a, 0x16, 0x7a, 0x5b, 0xc3, 0x2c, 0x51, 0x4a, 0xc9, - 0x19, 0x85, 0xc1, 0x30, 0x3f, 0x4f, 0x6b, 0x09, 0x32, 0x42, 0x4a, 0x6e, - 0x24, 0x96, 0x2a, 0x63, 0x37, 0x4a, 0xfd, 0x4c, 0x85, 0x62, 0x20, 0x4b, - 0x8e, 0xba, 0x10, 0x18, 0x3e, 0x9a, 0x49, 0xf8, 0xd7, 0xc6, 0x50, 0x95, - 0x51, 0x76, 0xb1, 0xce, 0xff, 0x5b, 0x19, 0xa0, 0x60, 0xea, 0x57, 0x1f, - 0xd2, 0x71, 0x53, 0x92, 0xf5, 0x15, 0xdd, 0xbe, 0x5a, 0x30, 0xa2, 0xb8, - 0xd4, 0x7b, 0x19, 0x66, 0xc6, 0x4f, 0xb7, 0x67, 0x9e, 0x8e, 0xbd, 0x33, - 0xd3, 0x34, 0xbf, 0x29, 0x19, 0x91, 0xe3, 0x74, 0x9a, 0x5c, 0x53, 0xd6, - 0x88, 0x40, 0x66, 0x28, 0x95, 0x84, 0x3a, 0x07, 0xa3, 0x9b, 0x9f, 0x4e, - 0x0e, 0x95, 0x46, 0x0c, 0x69, 0xc0, 0x3e, 0xcb, 0xc2, 0xd8, 0xcc, 0x14, - 0x14, 0xda, 0x02, 0x09, 0x73, 0x94, 0x9a, 0x9c, 0xc2, 0x5c, 0x56, 0x12, - 0xca, 0x14, 0xea, 0xf2, 0x54, 0x39, 0x7c, 0x96, 0x79, 0xcc, 0x72, 0x66, - 0x8b, 0x86, 0xf7, 0x2a, 0xfc, 0xf6, 0xa1, 0x58, 0xed, 0xdd, 0x14, 0x4a, - 0xd7, 0xf3, 0x61, 0x58, 0x6b, 0x53, 0x8b, 0xb4, 0x7c, 0xb4, 0x7d, 0x2a, - 0xcc, 0x57, 0x6f, 0xa1, 0x47, 0x3e, 0x0a, 0x3a, 0xd2, 0x62, 0x3f, 0xac, - 0xb0, 0x02, 0x5b, 0x6d, 0x30, 0xcf, 0x3b, 0x2a, 0x94, 0x8c, 0x36, 0xdd, - 0xf0, 0xa8, 0x3e, 0x6d, 0x7a, 0xfa, 0xb9, 0xa9, 0x61, 0x2c, 0xd1, 0x90, - 0x98, 0xe3, 0x35, 0xc1, 0xde, 0x14, 0xc2, 0x5f, 0xad, 0x66, 0x75, 0x44, - 0xaf, 0x32, 0xfa, 0x96, 0xbc, 0xfe, 0x8a, 0x3b, 0x40, 0x89, 0x99, 0xa5, - 0x45, 0x43, 0x81, 0x24, 0xd0, 0x6c, 0x84, 0xd9, 0xf4, 0xb6, 0x6a, 0x87, - 0x48, 0x50, 0xdc, 0xf3, 0xe5, 0x82, 0xeb, 0x49, 0xf7, 0xe7, 0x14, 0xd0, - 0x02, 0x53, 0xea, 0x23, 0xb7, 0x6e, 0xc7, 0xf4, 0x4b, 0xdf, 0x57, 0xcf, - 0x2e, 0x1c, 0xcc, 0x61, 0x17, 0xc8, 0xe7, 0xf6, 0x6a, 0x38, 0x91, 0x8f, - 0x63, 0x39, 0x54, 0x09, 0x58, 0x72, 0x96, 0xd7, 0x0e, 0xf0, 0x8d, 0x73, - 0xcf, 0xda, 0x1a, 0x5e, 0xd7, 0x69, 0x38, 0xe9, 0xe5, 0xa5, 0x51, 0x27, - 0xdd, 0x34, 0xbb, 0x0f, 0xd9, 0x9c, 0x01, 0x9f, 0x8e, 0xfe, 0xeb, 0xd0, - 0x44, 0x74, 0xb0, 0x4f, 0x46, 0x76, 0x8e, 0x21, 0x70, 0x41, 0x64, 0xf7, - 0x7c, 0x3d, 0xbf, 0xa5, 0x0a, 0xd7, 0xa8, 0x60, 0x88, 0x1c, 0x3b, 0x0c, - 0x77, 0x8c, 0x77, 0x68, 0xcb, 0xe8, 0x5a, 0x14, 0x17, 0x37, 0xbc, 0x1b, - 0x78, 0x8c, 0x4f, 0xa6, 0xda, 0x0e, 0xb9, 0x9d, 0xea, 0x76, 0x3d, 0x5f, - 0x5a, 0xd8, 0xd4, 0x45, 0x16, 0x3e, 0xa8, 0x83, 0x7b, 0xb7, 0xef, 0xe0, - 0x55, 0x0a, 0xce, 0xb2, 0x2a, 0x73, 0x08, 0x2f, 0x75, 0x35, 0x66, 0xd1, - 0x0d, 0x87, 0x17, 0x67, 0x78, 0x27, 0xa5, 0xc0, 0xc4, 0xb3, 0x8f, 0xb8, - 0xec, 0x44, 0x99, 0xbb, 0x0d, 0x63, 0xd9, 0x64, 0x52, 0x86, 0x0f, 0x58, - 0xd4, 0x73, 0x2c, 0xdc, 0x66, 0x98, 0x80, 0xae, 0xfc, 0x48, 0x79, 0xd7, - 0xc6, 0xbe, 0xa8, 0xd9, 0x9d, 0xa9, 0x6d, 0x91, 0xb4, 0x66, 0x4a, 0x8c, - 0x14, 0x07, 0x26, 0x06, 0x5a, 0x41, 0x4a, 0x14, 0xc5, 0x07, 0x10, 0x0e, - 0xed, 0x14, 0xdb, 0x31, 0xca, 0x30, 0x49, 0x0a, 0xb1, 0x65, 0x20, 0x0d, - 0x8f, 0x10, 0x92, 0x2a, 0x36, 0x1e, 0x18, 0x0c, 0x06, 0x81, 0x46, 0x97, - 0x97, 0x59, 0x7a, 0xd5, 0x70, 0xb8, 0xc8, 0xc2, 0xfa, 0xdc, 0x16, 0x91, - 0x0b, 0x2a, 0xd2, 0x56, 0xc1, 0x4f, 0x47, 0x12, 0xee, 0x09, 0x39, 0x66, - 0xb1, 0x33, 0xdc, 0xe0, 0xd9, 0x13, 0x60, 0x6e, 0x92, 0xe5, 0xc5, 0x0a, - 0x08, 0x75, 0x5a, 0x6b, 0x14, 0x87, 0x01, 0x35, 0xc7, 0x13, 0x2a, 0x83, - 0xa1, 0x96, 0x70, 0x49, 0x28, 0x0d, 0x28, 0x88, 0xfe, 0xd3, 0x48, 0x4c, - 0x35, 0xa1, 0xc3, 0x88, 0xee, 0x04, 0x9b, 0x78, 0x5d, 0x2c, 0x44, 0xca, - 0x1a, 0x6f, 0x42, 0xcd, 0x23, 0x82, 0xb0, 0x14, 0x71, 0xef, 0x38, 0x27, - 0x32, 0xee, 0x8a, 0x97, 0x20, 0x5b, 0x8d, 0xde, 0x3b, 0xd2, 0xda, 0x3e, - 0x30, 0xa9, 0x57, 0xa1, 0xc6, 0x53, 0xeb, 0xe8, 0xd4, 0xb2, 0x09, 0x4b, - 0xdf, 0x1a, 0xa7, 0x5e, 0x1f, 0x9d, 0x5b, 0xe5, 0xb5, 0x42, 0x90, 0xb9, - 0xf6, 0xa3, 0x2d, 0x45, 0xf0, 0x64, 0x00, 0x55, 0xfa, 0x4a, 0xff, 0xe7, - 0x61, 0xaa, 0x2f, 0x0b, 0x47, 0x6c, 0x24, 0x3f, 0xd4, 0x34, 0x00, 0xd5, - 0x2a, 0xd8, 0xb8, 0x48, 0x10, 0x12, 0x44, 0xe6, 0x6a, 0xf1, 0x65, 0x9e, - 0x49, 0x2a, 0xf1, 0xaa, 0x3a, 0x65, 0x04, 0x5a, 0x57, 0x8b, 0x82, 0xdb, - 0xe9, 0x65, 0x46, 0xa7, 0xa3, 0x0f, 0xc1, 0x8c, 0x68, 0x4a, 0x48, 0x6e, - 0x4a, 0x7a, 0x31, 0x21, 0x38, 0x1d, 0x40, 0x1d, 0xfc, 0x95, 0xe8, 0xc4, - 0xb0, 0x6b, 0xa2, 0xc6, 0xe1, 0x3a, 0x3c, 0xad, 0x4f, 0x3b, 0x0b, 0x30, - 0xd9, 0xad, 0x55, 0xe4, 0x3a, 0x74, 0xba, 0x68, 0xe9, 0x8e, 0x64, 0xb5, - 0xb6, 0x03, 0x4e, 0x29, 0xcf, 0x3e, 0xa9, 0x6f, 0x68, 0xbf, 0x65, 0xbb, - 0x67, 0x0b, 0xd0, 0x33, 0x6a, 0xa4, 0x94, 0x97, 0xc1, 0x72, 0x94, 0xb2, - 0xb7, 0x64, 0xf2, 0x2e, 0x28, 0x73, 0xbd, 0x64, 0x0a, 0x89, 0xc5, 0x8d, - 0x52, 0x44, 0x5f, 0x72, 0xe7, 0x32, 0xd9, 0x34, 0xd8, 0x22, 0x56, 0x3b, - 0xbc, 0x1e, 0xec, 0x2f, 0x59, 0x9d, 0x00, 0x2c, 0xe8, 0xe8, 0xf8, 0x2b, - 0x38, 0x1b, 0xe4, 0x44, 0x4c, 0xa6, 0xbc, 0xc5, 0xdc, 0x5b, 0x15, 0x1e, - 0x2d, 0x16, 0xa5, 0x57, 0xab, 0x84, 0xbb, 0xad, 0x7d, 0x13, 0xa5, 0x55, - 0xa2, 0x77, 0x39, 0xf4, 0x52, 0xe0, 0x01, 0x0c, 0xaa, 0x74, 0x13, 0xd8, - 0x60, 0xb5, 0x59, 0x55, 0x53, 0x9c, 0xaf, 0x1a, 0x60, 0xc3, 0xd2, 0x90, - 0x9c, 0x27, 0x2a, 0xc7, 0x8f, 0x05, 0x4a, 0x0f, 0x41, 0xb2, 0x71, 0x5a, - 0x10, 0x11, 0x18, 0x9b, 0x68, 0xa8, 0x7a, 0xe5, 0xef, 0x29, 0x81, 0x3c, - 0x48, 0xe6, 0x9a, 0xa1, 0xde, 0x78, 0x92, 0xfd, 0x8b, 0x89, 0xb6, 0x93, - 0x31, 0xf5, 0x5a, 0xb4, 0x0d, 0xba, 0xef, 0xfe, 0x89, 0x20, 0x91, 0x5c, - 0x60, 0xed, 0xb5, 0x45, 0x5a, 0x96, 0x4d, 0xec, 0x0d, 0xaa, 0xea, 0xa2, - 0x07, 0x7a, 0xe9, 0xd0, 0xfc, 0x4a, 0x8b, 0x56, 0x3a, 0x3a, 0xa9, 0x9b, - 0x83, 0xaf, 0xb4, 0x09, 0x4e, 0x56, 0x3a, 0x19, 0x83, 0x55, 0x77, 0x41, - 0x80, 0xdf, 0x2f, 0x84, 0xb7, 0xa6, 0x89, 0x14, 0x28, 0x9c, 0xe4, 0x26, - 0x77, 0xbb, 0x5c, 0x7e, 0x7b, 0x75, 0xb0, 0x3d, 0x41, 0xb9, 0xc0, 0x3d, - 0x52, 0x81, 0xaa, 0x89, 0x20, 0x6c, 0x7f, 0x06, 0x28, 0xc1, 0xb4, 0xab, - 0xe6, 0x4c, 0x21, 0x7c, 0x58, 0x4d, 0x51, 0xb7, 0x1e, 0x54, 0xb8, 0x0d, - 0x6f, 0x31, 0x3e, 0x14, 0x28, 0xd1, 0x83, 0x0d, 0x64, 0x54, 0x89, 0x1a, - 0x55, 0x67, 0xae, 0xd4, 0x69, 0xb2, 0x46, 0x12, 0xcc, 0x36, 0x4f, 0x89, - 0xd6, 0x2a, 0x0b, 0xf4, 0x95, 0x2d, 0xaa, 0xf4, 0x72, 0xd7, 0x40, 0x45, - 0x3c, 0x70, 0xd6, 0xd9, 0x88, 0xda, 0xa6, 0x88, 0xd6, 0xbb, 0x54, 0xe4, - 0x7c, 0x10, 0x91, 0xa3, 0x30, 0x8f, 0xcb, 0xd4, 0xb0, 0xbb, 0x88, 0x9c, - 0x8e, 0x73, 0xba, 0x49, 0xf1, 0xd2, 0xf5, 0xac, 0x9c, 0x7d, 0xf4, 0xf1, - 0xda, 0xbc, 0x4c, 0x38, 0x5b, 0x09, 0x31, 0x00, 0x41, 0xbb, 0x49, 0xb0, - 0xa7, 0x54, 0xc3, 0x44, 0xd1, 0x36, 0x11, 0xd1, 0x5e, 0x28, 0x7d, 0xf1, - 0x84, 0x33, 0xd3, 0xd0, 0x16, 0x76, 0xdb, 0xe3, 0xb1, 0x3a, 0x6d, 0x71, - 0xab, 0xcc, 0x28, 0x03, 0xd3, 0x1c, 0x00, 0x73, 0xe5, 0x3c, 0xd3, 0xd9, - 0xce, 0x26, 0xea, 0x95, 0x0b, 0x4a, 0x80, 0x11, 0x1d, 0xbd, 0x34, 0x60, - 0x56, 0xd9, 0x2e, 0xe9, 0x23, 0xca, 0xcc, 0x9e, 0x82, 0x26, 0xe6, 0xf5, - 0x99, 0xff, 0xd0, 0xd9, 0x81, 0xd6, 0xf9, 0x32, 0x44, 0xa1, 0xdf, 0xb5, - 0x09, 0x04, 0x57, 0x57, 0x57, 0x83, 0x65, 0x39, 0xa0, 0xc7, 0x79, 0xf4, - 0x0a, 0x84, 0xc1, 0x47, 0xa7, 0xbf, 0x36, 0x71, 0x6b, 0xa7, 0xc1, 0x44, - 0x12, 0xfd, 0xfd, 0xed, 0xcb, 0xbe, 0x49, 0x5e, 0xd3, 0x26, 0xc7, 0x54, - 0x0a, 0xe5, 0x79, 0x13, 0xd1, 0x1f, 0x9f, 0x11, 0x2b, 0x45, 0x6c, 0x3a, - 0xb0, 0xe7, 0xf6, 0x4f, 0xde, 0xbf, 0x39, 0x3c, 0x7b, 0xff, 0x76, 0xff, - 0x87, 0x88, 0xf5, 0x36, 0x98, 0x01, 0xec, 0x32, 0xac, 0xe9, 0x2b, 0x8b, - 0x02, 0x54, 0xd9, 0xd7, 0x24, 0x96, 0x98, 0xac, 0xc3, 0xd2, 0x38, 0x19, - 0x52, 0xc8, 0x9e, 0xd7, 0x89, 0x8b, 0xd9, 0x75, 0x38, 0x32, 0x7e, 0xe0, - 0x87, 0xb4, 0xcc, 0xd3, 0xe9, 0xa0, 0x28, 0xcf, 0x91, 0x31, 0x6f, 0xbe, - 0x10, 0x1d, 0x35, 0x38, 0xdc, 0xa6, 0x20, 0x51, 0x61, 0xea, 0xe0, 0x65, - 0x39, 0xc1, 0xa4, 0xb7, 0x30, 0x08, 0x88, 0xdd, 0xd2, 0xcf, 0x90, 0x69, - 0xde, 0x3c, 0xcf, 0x15, 0xef, 0xc5, 0x38, 0xaf, 0xec, 0x00, 0x0d, 0xfa, - 0x9f, 0x4f, 0xaa, 0xf8, 0x1c, 0xc4, 0x26, 0x66, 0x14, 0xec, 0x81, 0x24, - 0xfe, 0x3a, 0x98, 0x81, 0x89, 0xba, 0x04, 0xb3, 0x7b, 0x7d, 0x56, 0xdc, - 0x5c, 0xc4, 0x1f, 0x8f, 0x4e, 0x5e, 0x9e, 0x1a, 0x84, 0xb8, 0x37, 0xa7, - 0x91, 0xc4, 0x49, 0x22, 0xac, 0xa8, 0x0e, 0xe3, 0xbe, 0x30, 0x64, 0x0b, - 0x29, 0x5c, 0xa6, 0xca, 0x04, 0xb8, 0x06, 0xa6, 0x3c, 0x4c, 0xb1, 0x36, - 0x78, 0x84, 0x3a, 0x41, 0x4d, 0xc0, 0x31, 0x88, 0x3b, 0x5b, 0x20, 0x7b, - 0x1b, 0x05, 0x52, 0x54, 0xb8, 0xbc, 0x90, 0x1c, 0x9a, 0xb8, 0x88, 0xf7, - 0xdf, 0xed, 0x9f, 0x1d, 0xfe, 0xb0, 0xff, 0x0f, 0xbc, 0x7d, 0x97, 0x59, - 0x59, 0xe4, 0x3c, 0xf0, 0x65, 0x52, 0x66, 0xdc, 0xe7, 0x99, 0xeb, 0x51, - 0x41, 0xaf, 0x44, 0xca, 0x83, 0xd7, 0x5a, 0xc3, 0xfd, 0xbf, 0x9b, 0x03, - 0xdc, 0x90, 0x4d, 0xfd, 0x48, 0xa7, 0x95, 0x39, 0x49, 0x52, 0xce, 0xaf, - 0x0d, 0x66, 0x88, 0xa2, 0x8f, 0x91, 0x88, 0x38, 0xa2, 0xa6, 0xcd, 0xbc, - 0x27, 0x79, 0x31, 0x4e, 0x45, 0xca, 0xeb, 0x90, 0x8d, 0xa0, 0x35, 0xbb, - 0x4e, 0x83, 0x48, 0x0b, 0xe4, 0x33, 0xa2, 0x53, 0x86, 0x43, 0xa6, 0x21, - 0x91, 0x39, 0xec, 0x3e, 0xdf, 0x7a, 0xbe, 0x85, 0xf1, 0x5a, 0x6a, 0xc2, - 0xa6, 0x0c, 0x82, 0x30, 0x45, 0xb9, 0x7c, 0x63, 0x65, 0x2e, 0xe1, 0x9e, - 0x7f, 0x70, 0xb6, 0x08, 0x1f, 0x81, 0x9f, 0x0e, 0x93, 0xc9, 0xf5, 0x30, - 0xcd, 0xce, 0x93, 0xf3, 0xf1, 0x93, 0x7c, 0x96, 0xe7, 0x3b, 0xd9, 0x75, - 0xb5, 0x33, 0x79, 0x34, 0x2e, 0xca, 0xe2, 0xd9, 0x35, 0x70, 0xb0, 0xcb, - 0xeb, 0x72, 0x67, 0xf6, 0x5b, 0x52, 0x5e, 0x65, 0xe3, 0xf3, 0x64, 0x9c, - 0x5c, 0xcd, 0x12, 0x44, 0x67, 0xba, 0x1e, 0x0f, 0x7f, 0xcb, 0x96, 0x36, - 0x50, 0x51, 0x9e, 0xc2, 0xba, 0x41, 0xc3, 0x9d, 0x2c, 0xeb, 0x02, 0x52, - 0x3a, 0x06, 0x5d, 0x8d, 0x84, 0xdd, 0x79, 0xa0, 0x40, 0x47, 0xb6, 0x55, - 0x6f, 0x04, 0xae, 0x77, 0x90, 0x15, 0xde, 0x2e, 0xd9, 0xfa, 0x75, 0xdc, - 0xa4, 0x15, 0xb7, 0xc5, 0x19, 0xf8, 0x01, 0x36, 0xe4, 0x8c, 0x0c, 0x49, - 0x2c, 0x52, 0xa4, 0xfe, 0x8f, 0xa2, 0x26, 0x11, 0x09, 0xd9, 0x3d, 0xd8, - 0xe7, 0x2a, 0x0e, 0x74, 0x70, 0x61, 0x95, 0x7c, 0x91, 0x71, 0xc1, 0xe1, - 0x24, 0xf3, 0x9c, 0x77, 0x06, 0x51, 0x90, 0x9b, 0xb6, 0x48, 0xa5, 0x32, - 0x03, 0x67, 0xb1, 0x81, 0x4d, 0x40, 0x78, 0x17, 0x84, 0xb6, 0x7d, 0x1e, - 0xd8, 0x85, 0xc6, 0x17, 0x9f, 0x03, 0xf3, 0x5e, 0x0c, 0xe1, 0xc3, 0x37, - 0x79, 0x5d, 0xba, 0x2f, 0x31, 0x5d, 0xbe, 0xb4, 0xf4, 0x04, 0xc8, 0x3e, - 0x75, 0x8b, 0x19, 0x53, 0xd5, 0x88, 0x14, 0x28, 0xfe, 0x87, 0x45, 0x42, - 0x2d, 0xd8, 0xeb, 0x7d, 0x5e, 0x18, 0x68, 0x79, 0xaa, 0x29, 0xd1, 0xcd, - 0xee, 0x04, 0x5d, 0xc0, 0x12, 0xdd, 0xab, 0x44, 0xab, 0xce, 0x09, 0x30, - 0x55, 0x72, 0xf7, 0x29, 0x75, 0x76, 0x51, 0xb1, 0x2c, 0x92, 0x71, 0x06, - 0x1a, 0x5d, 0xf0, 0x78, 0x2f, 0x25, 0x14, 0x53, 0x54, 0x99, 0x2f, 0xaa, - 0xd9, 0x61, 0x74, 0xe0, 0xf3, 0x3d, 0xe6, 0x20, 0x0b, 0x4d, 0x52, 0x62, - 0x3a, 0xc6, 0x20, 0xfa, 0x01, 0x15, 0x1a, 0x5e, 0x69, 0xbb, 0x3a, 0x4c, - 0xdf, 0x66, 0x67, 0x00, 0xcb, 0xea, 0x79, 0x81, 0xee, 0xa2, 0x8c, 0x74, - 0x6e, 0x5c, 0xb7, 0xa3, 0x92, 0x11, 0x08, 0x22, 0xfa, 0x09, 0xb0, 0xbe, - 0xdc, 0xcf, 0x4a, 0xa3, 0x14, 0x64, 0xaa, 0xaa, 0x15, 0x4b, 0xcc, 0xb8, - 0xe4, 0xc8, 0xaa, 0x6a, 0xb8, 0x4c, 0xa8, 0x6d, 0x5d, 0x82, 0x1c, 0x06, - 0x14, 0x1e, 0x04, 0x17, 0x8a, 0xbc, 0x38, 0x36, 0xe5, 0x86, 0x30, 0xe3, - 0xc7, 0xd5, 0x99, 0xba, 0x1b, 0x05, 0xbe, 0xa5, 0xab, 0x78, 0x55, 0xe4, - 0x6b, 0x84, 0x70, 0xc3, 0x58, 0x45, 0x88, 0x8b, 0x45, 0xf1, 0x0c, 0x1f, - 0x38, 0x80, 0xd8, 0xf6, 0x88, 0x1a, 0x99, 0xe2, 0x31, 0x03, 0x3d, 0x03, - 0xf9, 0x4b, 0x01, 0xaa, 0x9c, 0x91, 0x7b, 0xb4, 0x3d, 0x3a, 0x16, 0x2c, - 0xee, 0xe9, 0x75, 0x5d, 0x5c, 0x31, 0xbb, 0x4d, 0x33, 0x23, 0x3e, 0x14, - 0xd8, 0x36, 0x81, 0xeb, 0x32, 0x36, 0x21, 0x6d, 0xca, 0x80, 0xfc, 0xaf, - 0x44, 0xbd, 0x01, 0x0b, 0x06, 0x2d, 0x30, 0x22, 0x68, 0x0a, 0xdd, 0xe0, - 0xd4, 0x20, 0x9d, 0x2f, 0xab, 0xc8, 0xac, 0x62, 0xd7, 0x10, 0x36, 0x3e, - 0x4a, 0xac, 0x7e, 0x50, 0xa7, 0xa3, 0x8b, 0x4d, 0xca, 0xc2, 0xf5, 0xf2, - 0x15, 0xf3, 0x51, 0xba, 0x89, 0x2f, 0xa8, 0x38, 0xd8, 0xfc, 0x83, 0x0c, - 0x1a, 0x5f, 0x56, 0xb1, 0x19, 0xb4, 0x43, 0x55, 0x70, 0x19, 0xc8, 0xef, - 0x5f, 0x25, 0x14, 0xe4, 0x5f, 0x8e, 0xaa, 0xa0, 0x3c, 0xac, 0x5b, 0x65, - 0xb0, 0x55, 0xa9, 0xa4, 0x3a, 0xbf, 0x66, 0xec, 0xc8, 0x7c, 0x81, 0xb1, - 0x4d, 0x07, 0x4c, 0xac, 0x99, 0x43, 0xfd, 0x98, 0x2c, 0x99, 0xf9, 0xe5, - 0xe3, 0x25, 0x3e, 0xe6, 0xda, 0x4b, 0x24, 0x6b, 0xa1, 0x34, 0x52, 0xd8, - 0x88, 0x28, 0x10, 0xad, 0x73, 0xaa, 0x7b, 0xe9, 0xb4, 0x2d, 0xfb, 0x8d, - 0x40, 0xa3, 0x72, 0x7a, 0x54, 0x1c, 0x10, 0x96, 0x70, 0x59, 0x3c, 0xc9, - 0x2c, 0xf5, 0x01, 0x42, 0x4a, 0x34, 0xec, 0x3d, 0x44, 0x94, 0x5a, 0x61, - 0x9f, 0x76, 0xc2, 0x50, 0x30, 0x83, 0x1a, 0x03, 0x3f, 0x4f, 0xe5, 0xdb, - 0xdc, 0xb2, 0x41, 0xf3, 0xb3, 0x55, 0x8f, 0xe6, 0xe9, 0x43, 0x1c, 0xcd, - 0xe3, 0x65, 0x47, 0x63, 0x96, 0xfa, 0x30, 0x47, 0xf3, 0xf4, 0xae, 0x29, - 0x15, 0x4b, 0x0f, 0xe7, 0x16, 0xc9, 0xed, 0x78, 0x34, 0x86, 0xec, 0x5c, - 0x25, 0xfc, 0xd7, 0x0a, 0xc6, 0xd8, 0x43, 0x06, 0xf7, 0x75, 0x37, 0xfa, - 0x5e, 0xd5, 0xc2, 0x4a, 0xfe, 0xcf, 0xd3, 0xe3, 0x37, 0x82, 0x3d, 0x8f, - 0x5a, 0x27, 0x41, 0xd1, 0x1b, 0xd1, 0xc0, 0xcd, 0xe4, 0x3c, 0x0e, 0xc9, - 0xd1, 0x01, 0x6d, 0x0e, 0xa3, 0x33, 0x8b, 0x9a, 0x20, 0x60, 0xa8, 0x17, - 0x45, 0x59, 0x8f, 0x16, 0x7c, 0x6a, 0x73, 0xc1, 0x98, 0xe0, 0x50, 0x78, - 0xe5, 0xe7, 0x3c, 0x97, 0xa9, 0xa9, 0x37, 0xf7, 0xb5, 0x08, 0x81, 0x5b, - 0xff, 0x09, 0x34, 0xfc, 0x5f, 0xfc, 0xdf, 0x09, 0xf4, 0x40, 0x4f, 0x03, - 0x6a, 0x67, 0xd7, 0xf3, 0x74, 0x17, 0xe1, 0xf2, 0xa7, 0xe2, 0xd3, 0xda, - 0xc4, 0xc5, 0xf5, 0xba, 0x5f, 0xdc, 0x27, 0x60, 0xcb, 0xd0, 0x2b, 0x41, - 0xed, 0x8a, 0x2b, 0xce, 0x1a, 0x1e, 0x5b, 0x23, 0x5c, 0xf0, 0x3b, 0x99, - 0xa3, 0x99, 0xf6, 0x01, 0x23, 0x3c, 0xce, 0x88, 0x76, 0xd9, 0x03, 0x4b, - 0x75, 0x92, 0xbd, 0xaf, 0xc1, 0xa6, 0xfc, 0x88, 0x2f, 0x48, 0x80, 0xb0, - 0xd3, 0x36, 0x60, 0xcd, 0x2d, 0xb2, 0xa8, 0x19, 0x46, 0x16, 0x33, 0xaa, - 0x7b, 0xf4, 0x4d, 0x5f, 0x31, 0xb6, 0xdc, 0x16, 0xde, 0x49, 0x08, 0x0e, - 0x8e, 0x0b, 0xfe, 0x0a, 0x8b, 0xe3, 0x42, 0x03, 0xa2, 0xef, 0xa7, 0x1f, - 0x91, 0xe0, 0x95, 0xc6, 0xe5, 0xf0, 0xf3, 0xea, 0x02, 0x88, 0x28, 0xde, - 0xe8, 0x02, 0xb4, 0xa2, 0x9e, 0x97, 0xe6, 0xc6, 0xfb, 0xe3, 0x29, 0x20, - 0xcc, 0x49, 0xc1, 0x35, 0x96, 0xf6, 0x17, 0x49, 0x57, 0x79, 0xe6, 0x38, - 0x5a, 0x9b, 0x14, 0xc5, 0x30, 0x29, 0xd7, 0x44, 0xdb, 0x26, 0xf0, 0x1e, - 0xe9, 0x46, 0xae, 0x9e, 0x21, 0xa2, 0xbb, 0x6f, 0xf8, 0xb9, 0x48, 0x82, - 0x9a, 0x99, 0x87, 0x1a, 0xcf, 0xb5, 0x34, 0x5d, 0xab, 0xea, 0x13, 0x87, - 0xd2, 0xb1, 0xe2, 0xd0, 0xce, 0xb7, 0xbc, 0xe9, 0xe4, 0xc6, 0x98, 0x71, - 0x14, 0x80, 0x72, 0x00, 0x47, 0xa9, 0x66, 0x79, 0x10, 0x60, 0x97, 0x41, - 0x02, 0x44, 0xdf, 0x70, 0x3f, 0x94, 0x00, 0x0a, 0xac, 0x30, 0xe3, 0x0c, - 0x06, 0x5e, 0xcd, 0x3c, 0x43, 0x88, 0x53, 0xd2, 0xdc, 0x41, 0xad, 0x46, - 0xf7, 0x33, 0x83, 0x32, 0x49, 0xb6, 0x8e, 0xe9, 0x5f, 0x3c, 0xf4, 0x74, - 0x1f, 0x72, 0xbd, 0x0b, 0x94, 0x64, 0x10, 0xf1, 0x5b, 0xc3, 0x55, 0xee, - 0x37, 0x54, 0xa9, 0x2d, 0xfc, 0x93, 0x36, 0xc9, 0xe3, 0x54, 0xdd, 0x6d, - 0x0e, 0xa0, 0x47, 0xdb, 0xa0, 0xc4, 0x4f, 0x47, 0xc9, 0xed, 0x81, 0x80, - 0xf0, 0xe6, 0x3d, 0x1c, 0xfc, 0x07, 0x8f, 0xbf, 0xf6, 0xaf, 0xa8, 0x37, - 0x2e, 0xb3, 0xfc, 0x43, 0x6f, 0x37, 0xea, 0x8d, 0x0a, 0x60, 0xdc, 0xbd, - 0xe8, 0xdf, 0x6b, 0x2b, 0xb4, 0x7f, 0x68, 0x8f, 0xb2, 0x66, 0x7e, 0xf6, - 0x09, 0xe3, 0x7d, 0x83, 0xf8, 0x76, 0x09, 0x3a, 0x6b, 0x57, 0x7d, 0x31, - 0x0e, 0xaa, 0x54, 0x7b, 0x11, 0xfe, 0x36, 0xe4, 0x3d, 0x72, 0x1d, 0x31, - 0x4e, 0xfb, 0x14, 0x69, 0xd8, 0x88, 0x3f, 0x29, 0x93, 0xab, 0xa6, 0x44, - 0xb9, 0x7d, 0x5d, 0x0e, 0x61, 0xfa, 0x29, 0xa8, 0x1f, 0x0d, 0x69, 0x70, - 0x33, 0xf9, 0x9f, 0x67, 0x84, 0x45, 0x42, 0xc8, 0x79, 0x31, 0x67, 0x00, - 0xb4, 0xcc, 0x35, 0xa7, 0xb8, 0xbb, 0x89, 0x0d, 0xfb, 0x2b, 0xbe, 0xf9, - 0xeb, 0x22, 0xff, 0x10, 0x83, 0xf0, 0xc7, 0xa0, 0x6e, 0x2c, 0xe1, 0xe0, - 0xb0, 0x94, 0xb2, 0xae, 0x77, 0xa7, 0xac, 0x99, 0x6e, 0xaf, 0xbc, 0xa6, - 0x9c, 0x83, 0x53, 0xaa, 0xb4, 0x48, 0xbb, 0x2b, 0x61, 0x50, 0xa2, 0x7b, - 0x35, 0x56, 0x35, 0x8e, 0xb0, 0xe8, 0x05, 0x2b, 0x67, 0x7b, 0xb2, 0x12, - 0x1d, 0xb2, 0x27, 0xdb, 0xe6, 0x02, 0xef, 0x05, 0x93, 0x05, 0x08, 0xaa, - 0x0d, 0x33, 0x51, 0xf3, 0xf4, 0x2a, 0xd2, 0x41, 0x30, 0x19, 0x0a, 0xd9, - 0x32, 0x75, 0xb4, 0xba, 0x9e, 0xa3, 0x8b, 0x29, 0x1a, 0x96, 0xc5, 0x55, - 0x45, 0x21, 0x72, 0x99, 0xd7, 0x03, 0x75, 0x6d, 0x2c, 0x40, 0x70, 0x84, - 0x10, 0x25, 0x8c, 0xb8, 0xc0, 0xb4, 0xc0, 0x5b, 0x84, 0x79, 0x17, 0xcb, - 0x54, 0x9c, 0xce, 0x9d, 0x5d, 0xa6, 0xf2, 0xdc, 0x21, 0x09, 0x22, 0x34, - 0xc5, 0xaa, 0x2a, 0x53, 0x70, 0x99, 0xf1, 0x50, 0x37, 0x60, 0xf5, 0x1a, - 0xe1, 0x21, 0xf7, 0xbf, 0xc0, 0xb7, 0x99, 0x42, 0x47, 0xf6, 0x07, 0xf1, - 0xaf, 0x89, 0x8b, 0x8d, 0x13, 0x7f, 0x48, 0xe1, 0x8e, 0x4e, 0x81, 0x5e, - 0x18, 0xb4, 0x7e, 0xaf, 0xa3, 0xe5, 0x45, 0x23, 0x93, 0xb0, 0xd2, 0xbe, - 0x7d, 0x5c, 0x91, 0xee, 0x86, 0x8d, 0xc9, 0x41, 0xcd, 0x64, 0x89, 0x5d, - 0x49, 0xa3, 0x0c, 0xeb, 0xbf, 0x97, 0x33, 0xe7, 0xc8, 0x2c, 0x01, 0x8d, - 0xb8, 0xa1, 0x8d, 0x67, 0x71, 0x80, 0xc4, 0xc1, 0x1c, 0xb7, 0x05, 0xf1, - 0xad, 0xe1, 0xda, 0x23, 0x10, 0xda, 0x65, 0x56, 0x39, 0xcd, 0x09, 0xf8, - 0x2c, 0xf1, 0x89, 0xc2, 0x44, 0x1a, 0x10, 0x54, 0xea, 0x1a, 0x44, 0xe0, - 0xcc, 0x87, 0xa6, 0x07, 0x6b, 0x55, 0x3c, 0xa8, 0x58, 0x32, 0x73, 0x70, - 0xf2, 0xfe, 0xaf, 0x87, 0x87, 0x27, 0x47, 0x2f, 0x5e, 0x1d, 0x8a, 0x17, - 0xd6, 0xfc, 0xe8, 0xcd, 0xd9, 0xdf, 0x5f, 0x01, 0xc9, 0x16, 0xa3, 0x0f, - 0xe8, 0x55, 0x15, 0x4d, 0xad, 0x7d, 0x7b, 0xd1, 0xf8, 0xc6, 0xe1, 0xc8, - 0x9b, 0xde, 0x87, 0xad, 0x19, 0xa1, 0xd7, 0x74, 0xff, 0xe8, 0xc7, 0x7e, - 0xf4, 0xfd, 0x49, 0xfc, 0xee, 0x47, 0x19, 0x14, 0x05, 0xe7, 0x06, 0x1a, - 0xfe, 0x7f, 0xd5, 0xcf, 0x21, 0xef, 0x6d, 0x30, 0xb2, 0xab, 0x75, 0x27, - 0xd8, 0xc0, 0x98, 0x3b, 0x83, 0x60, 0x57, 0xc3, 0xb4, 0xa6, 0xc6, 0xe5, - 0x65, 0xf1, 0x21, 0xcd, 0xb5, 0xfd, 0x03, 0x1a, 0x15, 0x7c, 0x0c, 0xdd, - 0x0d, 0x39, 0x04, 0x35, 0xdd, 0xed, 0x0e, 0x42, 0xfa, 0x9a, 0xdd, 0x57, - 0x3d, 0x1a, 0x8d, 0x69, 0x23, 0x86, 0xfa, 0x34, 0x29, 0x7d, 0xfb, 0xa4, - 0x85, 0x4b, 0x12, 0x71, 0x53, 0x3d, 0xe2, 0xb6, 0xc7, 0xa7, 0xf0, 0x16, - 0x01, 0x9e, 0x0a, 0x60, 0x13, 0x69, 0x75, 0xb3, 0x19, 0x19, 0x3d, 0x5f, - 0xa2, 0x62, 0xb5, 0xbd, 0xb5, 0x0c, 0x30, 0xda, 0x6b, 0xdd, 0x49, 0x37, - 0xd0, 0xae, 0xb1, 0x0b, 0xf3, 0x1b, 0x1b, 0x4e, 0xe5, 0x0e, 0x48, 0x11, - 0x25, 0xf5, 0x48, 0x3e, 0x96, 0xd3, 0xf3, 0xe2, 0xe9, 0x56, 0xa4, 0xfd, - 0x50, 0x82, 0xc0, 0x24, 0xad, 0x9b, 0xe2, 0xfa, 0x1c, 0x8c, 0x50, 0x57, - 0xaf, 0x03, 0x6f, 0x03, 0xf9, 0x1d, 0xee, 0x1b, 0xa2, 0xbc, 0xb5, 0x8c, - 0x9d, 0x55, 0x23, 0x15, 0x8d, 0x2d, 0x23, 0xee, 0xd0, 0x68, 0x5b, 0xd1, - 0xe4, 0x0d, 0xd7, 0x71, 0x0d, 0x56, 0x43, 0xb4, 0x87, 0x7f, 0x7e, 0x1d, - 0x48, 0x2a, 0xd9, 0xa0, 0xe4, 0xa0, 0x4b, 0xcc, 0x0a, 0x80, 0x87, 0x59, - 0x79, 0xc6, 0x67, 0x07, 0x06, 0x58, 0x42, 0x90, 0x29, 0x70, 0x14, 0x72, - 0x91, 0xd2, 0xa8, 0xb8, 0x73, 0x1e, 0xd2, 0x38, 0xed, 0xe4, 0xdc, 0x19, - 0x2d, 0x03, 0xb2, 0x7c, 0x71, 0xf8, 0xb6, 0x1f, 0x9d, 0x1c, 0xbe, 0x66, - 0x63, 0xf7, 0xf0, 0xcd, 0x77, 0x0c, 0x50, 0x28, 0xf9, 0x9b, 0x28, 0x56, - 0x04, 0x4d, 0x2b, 0x1c, 0x07, 0xa1, 0xf3, 0x86, 0xd7, 0xc9, 0xe2, 0xa8, - 0xaa, 0xc5, 0xac, 0x13, 0x7f, 0xde, 0x7c, 0xeb, 0xe7, 0x08, 0x3d, 0x99, - 0xc9, 0xe1, 0x73, 0x65, 0x87, 0xc8, 0xa4, 0x5a, 0xed, 0x64, 0x11, 0x27, - 0xa8, 0x79, 0x7a, 0xd1, 0x1e, 0xfc, 0xf1, 0x75, 0x30, 0x19, 0xe8, 0xf4, - 0xfb, 0x0d, 0xff, 0xe8, 0x24, 0x32, 0xda, 0x00, 0xb1, 0x95, 0xbd, 0xe0, - 0xd3, 0x9b, 0xfb, 0x69, 0x30, 0xf6, 0xb8, 0x24, 0xb9, 0xc6, 0xa4, 0x60, - 0x33, 0x5a, 0x26, 0x25, 0x65, 0x9c, 0x82, 0xee, 0x0c, 0x17, 0x16, 0x9d, - 0x15, 0xce, 0xc1, 0xd0, 0xe7, 0xb7, 0xf9, 0x07, 0xa5, 0x4a, 0x2b, 0x40, - 0x8d, 0xc1, 0xd9, 0x43, 0x15, 0x7a, 0x9c, 0x8d, 0xa9, 0xa4, 0x91, 0x7c, - 0xcb, 0xd4, 0x51, 0x63, 0x37, 0x8a, 0xd6, 0xfe, 0xdf, 0x4d, 0x4c, 0x9d, - 0xd8, 0xcc, 0xc6, 0xef, 0xcb, 0x2a, 0x59, 0x6b, 0x1b, 0x15, 0xce, 0xaf, - 0xc7, 0xf8, 0xeb, 0x68, 0x6d, 0x60, 0x1e, 0x95, 0xbf, 0xe3, 0xcf, 0x83, - 0x10, 0x67, 0xa2, 0x68, 0x71, 0x36, 0xa6, 0x36, 0xd5, 0x39, 0x06, 0x06, - 0x76, 0x7a, 0xfa, 0x0a, 0xf3, 0x35, 0xcb, 0x04, 0x93, 0x34, 0x54, 0x58, - 0xa5, 0xf9, 0x39, 0x39, 0xbe, 0xe7, 0x1f, 0x46, 0xd5, 0xf6, 0xb6, 0xef, - 0x64, 0x34, 0x51, 0x17, 0xd3, 0x20, 0xe9, 0xe4, 0xaf, 0x07, 0xa7, 0x7f, - 0xd8, 0xde, 0xa6, 0x26, 0x5d, 0xeb, 0xd8, 0x34, 0xe8, 0xd9, 0x93, 0xed, - 0x9d, 0x8d, 0x50, 0x48, 0xd8, 0x73, 0x13, 0xc3, 0xc5, 0xc2, 0xec, 0x13, - 0xf7, 0xb6, 0x10, 0x96, 0xa2, 0x34, 0x05, 0x34, 0x43, 0x8f, 0x53, 0xc4, - 0xc7, 0xc7, 0x48, 0x8d, 0xa0, 0x53, 0x51, 0xdb, 0x80, 0xf6, 0x70, 0x24, - 0x9c, 0x48, 0xa7, 0xe9, 0xf1, 0xea, 0x77, 0x7b, 0xc4, 0xb0, 0x4d, 0x5b, - 0x33, 0x64, 0x71, 0x09, 0x27, 0xbc, 0xe8, 0xc8, 0xb8, 0x6a, 0xb9, 0x7c, - 0x6d, 0xbd, 0xc9, 0x7d, 0xa4, 0xd9, 0xc6, 0xa1, 0xaf, 0x08, 0xbc, 0x94, - 0x7a, 0x18, 0xcb, 0x96, 0x59, 0xfb, 0x11, 0xaf, 0x95, 0x97, 0x2e, 0x28, - 0x6b, 0xea, 0x31, 0x01, 0xa1, 0x89, 0x9b, 0x38, 0x37, 0x54, 0xb7, 0xdf, - 0xb9, 0x44, 0xae, 0x86, 0xef, 0x33, 0x5f, 0x78, 0xb9, 0x07, 0x7c, 0x24, - 0x3c, 0x5c, 0x37, 0x92, 0x90, 0x47, 0x08, 0xa7, 0x9c, 0x3e, 0x41, 0xa8, - 0xa0, 0x94, 0x4b, 0x8e, 0x74, 0xae, 0xed, 0x5e, 0x6b, 0x4d, 0x35, 0x0b, - 0x6b, 0xde, 0x98, 0x58, 0x4d, 0x89, 0xaf, 0x9c, 0x77, 0x86, 0x17, 0xd2, - 0x26, 0xd0, 0xac, 0x4b, 0xd5, 0x6a, 0x5a, 0x8f, 0x36, 0x50, 0x2e, 0x63, - 0x62, 0xa6, 0x42, 0x66, 0x79, 0x86, 0x0a, 0x45, 0x25, 0xd8, 0x12, 0xb6, - 0xa4, 0xc0, 0x11, 0x7f, 0x69, 0xc0, 0xdd, 0x4e, 0xd7, 0x82, 0x07, 0x60, - 0x95, 0x7c, 0x85, 0x82, 0x07, 0xb7, 0xc3, 0xbc, 0xc0, 0xc1, 0x31, 0x6b, - 0xa5, 0x8c, 0x75, 0x89, 0xc7, 0xeb, 0x95, 0x59, 0xe7, 0x9d, 0x98, 0x25, - 0xa5, 0x9b, 0xb8, 0xf9, 0x68, 0x9f, 0xc2, 0x30, 0x99, 0x62, 0x48, 0x0c, - 0x1e, 0xf6, 0x65, 0xf0, 0x06, 0x13, 0x2d, 0x87, 0xd1, 0x1e, 0x21, 0xa8, - 0x87, 0x5b, 0x58, 0x47, 0x87, 0x84, 0xb5, 0x05, 0x2a, 0x5b, 0x09, 0xaa, - 0x53, 0x51, 0xb5, 0x9a, 0xb8, 0x6a, 0x9a, 0x12, 0xeb, 0x57, 0x34, 0x8e, - 0x36, 0x49, 0xf2, 0x82, 0x21, 0x70, 0xd7, 0x84, 0x9e, 0xad, 0x77, 0x4a, - 0x90, 0xcd, 0xd7, 0xa8, 0x9d, 0x2c, 0x72, 0xac, 0x2a, 0x99, 0xa4, 0xf8, - 0x5f, 0xea, 0x6e, 0x37, 0xe6, 0x18, 0xd8, 0x5a, 0xdf, 0x3f, 0xca, 0x35, - 0xa1, 0x87, 0x35, 0x90, 0xc4, 0x3c, 0x1a, 0xb2, 0x73, 0xf4, 0xe7, 0x24, - 0xb2, 0x0c, 0x81, 0x61, 0xaf, 0x04, 0x53, 0x1c, 0x67, 0x52, 0xf0, 0xed, - 0xca, 0xf3, 0xcd, 0x98, 0xe1, 0x96, 0x29, 0x59, 0xbc, 0x5b, 0xbf, 0x0b, - 0x0d, 0xe0, 0x44, 0xdc, 0x62, 0xf7, 0x76, 0x90, 0x6b, 0xc6, 0x3b, 0x90, - 0x62, 0x8f, 0x45, 0x73, 0x32, 0xdc, 0xe3, 0x55, 0xc6, 0x5b, 0xa9, 0xac, - 0x64, 0x69, 0x55, 0x89, 0x12, 0x83, 0x4b, 0x48, 0xfa, 0xc2, 0x5e, 0xa8, - 0x47, 0xc2, 0x3e, 0xf5, 0x30, 0x6d, 0x78, 0xa2, 0x08, 0x7b, 0x0d, 0x3b, - 0xc0, 0x8e, 0xd9, 0x97, 0xd1, 0x80, 0x21, 0x65, 0xff, 0x99, 0x98, 0x0d, - 0xbe, 0xd3, 0x11, 0x2b, 0xaf, 0x74, 0x85, 0xb1, 0xa0, 0xe4, 0x1c, 0xa0, - 0x95, 0x82, 0x99, 0x98, 0xd4, 0x2a, 0xd2, 0xf4, 0xd1, 0x72, 0x71, 0xd7, - 0xe8, 0xbb, 0x03, 0x38, 0x7e, 0x24, 0xdd, 0x60, 0x6f, 0xe0, 0xc4, 0x52, - 0xee, 0x73, 0xa5, 0x90, 0xf1, 0xa5, 0xae, 0x28, 0x16, 0x60, 0x54, 0xcd, - 0xe0, 0xc2, 0x51, 0xfe, 0xe3, 0x86, 0x7e, 0x43, 0xd2, 0x9e, 0x40, 0xc1, - 0x03, 0xa5, 0xa1, 0x91, 0xcd, 0x2a, 0x36, 0x8e, 0x78, 0x05, 0xe4, 0x0e, - 0xc0, 0xa8, 0x15, 0x64, 0x04, 0x80, 0xf1, 0x1e, 0xa6, 0x47, 0xdd, 0xf4, - 0xdb, 0xd0, 0x24, 0x63, 0xe6, 0x0b, 0x4e, 0xfc, 0xbd, 0x68, 0x75, 0xa6, - 0xc5, 0x1e, 0x75, 0xc9, 0x19, 0x8c, 0xee, 0x25, 0xcd, 0x3b, 0xa6, 0xa6, - 0x5c, 0x31, 0x29, 0x58, 0x7b, 0xb0, 0x47, 0xe9, 0xf8, 0xeb, 0x0e, 0x48, - 0x37, 0x56, 0xa1, 0x40, 0xaf, 0xcf, 0x66, 0x8b, 0x59, 0xe4, 0x00, 0xd2, - 0xd1, 0xbb, 0xc8, 0x0e, 0xc8, 0x39, 0xed, 0x46, 0xa3, 0xe2, 0x40, 0xa5, - 0x36, 0x35, 0x90, 0xd2, 0x32, 0x17, 0xb6, 0xcd, 0xd9, 0xd7, 0x55, 0x89, - 0x67, 0x48, 0xf1, 0x22, 0xf9, 0x2a, 0x63, 0x3d, 0x50, 0xc6, 0x98, 0xfc, - 0x94, 0x8c, 0x96, 0x78, 0xc9, 0x32, 0xdc, 0x53, 0x6c, 0x9e, 0x09, 0xdf, - 0xa5, 0x85, 0x70, 0xd6, 0x08, 0x16, 0x47, 0x10, 0x55, 0x99, 0xb5, 0x12, - 0x6b, 0x92, 0x3a, 0x18, 0xa2, 0xf4, 0xd2, 0x67, 0x9b, 0xd8, 0x8b, 0x7b, - 0x08, 0x23, 0x5d, 0x65, 0xe3, 0xfa, 0x62, 0x80, 0xb5, 0x0f, 0x94, 0xdd, - 0x99, 0xd5, 0x54, 0x87, 0xa7, 0xf5, 0x42, 0x59, 0xa8, 0xc9, 0x71, 0xb8, - 0x13, 0x24, 0x7b, 0xcf, 0x68, 0x6f, 0x23, 0x0e, 0x9d, 0x23, 0x18, 0x3f, - 0x69, 0x56, 0x54, 0x5f, 0xb4, 0xc9, 0x66, 0x62, 0x5f, 0x71, 0x35, 0x13, - 0xb8, 0xf8, 0x93, 0x49, 0xf6, 0xd1, 0xa7, 0x1a, 0xed, 0x4d, 0x3c, 0xd0, - 0x2b, 0x8e, 0x57, 0x71, 0xed, 0xc3, 0x1a, 0xea, 0x0a, 0x6b, 0x7f, 0x5d, - 0xc3, 0xa0, 0x7e, 0x2e, 0xae, 0x14, 0xb1, 0xbd, 0x51, 0xcb, 0xfa, 0x90, - 0xc1, 0xcd, 0xc0, 0x89, 0x3c, 0x2e, 0x3c, 0x5b, 0xe3, 0xbc, 0xaa, 0xb5, - 0xd7, 0x6b, 0xd6, 0x7b, 0x37, 0x03, 0x8e, 0xc6, 0x8f, 0xa3, 0xb1, 0x05, - 0xf7, 0x78, 0xed, 0x9c, 0x27, 0xf8, 0xce, 0x79, 0xa8, 0xbb, 0x58, 0x8a, - 0xbe, 0x99, 0x3f, 0x00, 0x1e, 0x5d, 0xff, 0xd0, 0x8f, 0xc0, 0xd8, 0xfa, - 0xae, 0x1f, 0x9d, 0x81, 0xe1, 0xb4, 0x41, 0xd6, 0xd6, 0xf6, 0xd6, 0xce, - 0x63, 0xd8, 0x61, 0x02, 0x79, 0x7c, 0xe9, 0xa4, 0xeb, 0xb6, 0x86, 0xdb, - 0xfe, 0x80, 0xbb, 0x85, 0x0f, 0x0f, 0xac, 0xd7, 0x1a, 0x3b, 0x49, 0xfe, - 0xb5, 0x1f, 0x3d, 0x62, 0xcf, 0xe9, 0xf6, 0x77, 0xc1, 0x1d, 0x27, 0x82, - 0x24, 0xc2, 0x20, 0xd6, 0x5a, 0x9c, 0x67, 0xa3, 0xc8, 0xb8, 0x2e, 0x12, - 0xbc, 0xae, 0xe7, 0xaa, 0x86, 0x18, 0xca, 0xe0, 0xe3, 0xf1, 0xea, 0x71, - 0x11, 0x26, 0x87, 0x02, 0x10, 0x0e, 0x16, 0x78, 0x45, 0x7d, 0x79, 0x81, - 0xb3, 0x5f, 0xa0, 0xcb, 0x94, 0x80, 0x41, 0x12, 0x84, 0x44, 0xcc, 0xa8, - 0xc6, 0xd5, 0x3a, 0x04, 0x2b, 0x5f, 0xd1, 0xee, 0xf2, 0x06, 0x50, 0x1f, - 0x06, 0xbc, 0xa6, 0x48, 0x97, 0xa4, 0x7e, 0xfe, 0x03, 0xaf, 0x2b, 0x2d, - 0x8a, 0x6f, 0xa8, 0xe9, 0x3c, 0xcc, 0xfd, 0xb5, 0x15, 0xc2, 0x20, 0xd0, - 0x31, 0x60, 0x8e, 0xfe, 0xa0, 0xb1, 0x22, 0xf7, 0x47, 0x33, 0xca, 0xf6, - 0x1f, 0x95, 0xd9, 0x9c, 0x9c, 0x94, 0xb2, 0x3d, 0xb1, 0xd9, 0x1e, 0x2e, - 0x50, 0x9d, 0x82, 0xe5, 0x01, 0xf7, 0x02, 0xf3, 0x07, 0x02, 0xbe, 0x30, - 0xdd, 0x2d, 0x77, 0x3d, 0x76, 0x5b, 0x43, 0x01, 0x11, 0x61, 0x97, 0x86, - 0xb5, 0x3c, 0xa0, 0x11, 0x5c, 0x75, 0xf3, 0x4b, 0x33, 0xfd, 0x36, 0x50, - 0xcd, 0x0a, 0x51, 0x83, 0xe6, 0x9b, 0x5b, 0x77, 0x7d, 0xf3, 0xf5, 0x8a, - 0xfa, 0x23, 0xbe, 0xd6, 0x0f, 0x1c, 0x3d, 0xa9, 0x16, 0xd7, 0xf6, 0xa7, - 0x2d, 0xbf, 0xca, 0x94, 0xa0, 0xef, 0xb3, 0xaa, 0x0e, 0x02, 0x84, 0x60, - 0xfd, 0xc2, 0xc9, 0xf1, 0xc9, 0x23, 0xaa, 0x64, 0xd8, 0x10, 0x35, 0x93, - 0x3c, 0xff, 0x53, 0xc1, 0x61, 0x95, 0x4e, 0x57, 0x4e, 0xa1, 0x00, 0xdb, - 0xdd, 0xd4, 0x32, 0xdb, 0x77, 0xb4, 0x52, 0x3f, 0xc1, 0x84, 0x63, 0x87, - 0x5c, 0x32, 0x8c, 0xb5, 0x61, 0xb6, 0x29, 0x5c, 0x4a, 0x92, 0x96, 0x42, - 0xeb, 0x96, 0x7f, 0x93, 0xfa, 0x53, 0x79, 0x81, 0x2e, 0x94, 0x18, 0x15, - 0xb7, 0xb6, 0x19, 0x5d, 0x80, 0xc8, 0x8f, 0xa9, 0x11, 0xb7, 0x62, 0x4f, - 0x33, 0x24, 0x27, 0xb6, 0xec, 0x02, 0x52, 0xa7, 0xb2, 0x53, 0x5b, 0xe7, - 0xc0, 0x70, 0x8c, 0x21, 0x67, 0xa1, 0x34, 0xbf, 0x76, 0x9e, 0xa5, 0xda, - 0x35, 0xa3, 0x13, 0xb0, 0xd2, 0x6a, 0x90, 0xb9, 0x28, 0xb7, 0x10, 0xcb, - 0x47, 0x7c, 0x20, 0xf4, 0x59, 0xd2, 0x68, 0x0a, 0x46, 0xf2, 0x04, 0xb7, - 0xa6, 0xe1, 0xf2, 0x1b, 0x25, 0x54, 0xb7, 0x00, 0x4b, 0x7c, 0xf3, 0x0a, - 0x23, 0xfa, 0x46, 0xa7, 0xf2, 0x78, 0x09, 0x95, 0x36, 0x71, 0x0e, 0xa0, - 0x83, 0x3b, 0xe6, 0x20, 0x10, 0xbe, 0x3a, 0x3a, 0x3d, 0xf3, 0xa8, 0x1c, - 0x9b, 0x1c, 0xed, 0x02, 0x99, 0x60, 0x99, 0x07, 0x6f, 0x82, 0x96, 0xc6, - 0xd2, 0x01, 0x46, 0x9c, 0xe3, 0xc1, 0x05, 0xad, 0x6c, 0x92, 0x65, 0xa5, - 0xad, 0x3d, 0xf4, 0x16, 0x81, 0x8b, 0xfc, 0x0b, 0x87, 0x3f, 0xa4, 0xc5, - 0x8a, 0x16, 0xaf, 0x55, 0x8b, 0x61, 0xac, 0x7b, 0x96, 0x89, 0xd7, 0xbc, - 0xba, 0x9e, 0x0d, 0x0b, 0x4c, 0x6d, 0x04, 0x7d, 0xec, 0x83, 0xcf, 0xb9, - 0xd6, 0x4f, 0x83, 0xd4, 0x74, 0xda, 0x3c, 0x2b, 0x83, 0xe7, 0xc4, 0x14, - 0xe5, 0x10, 0x51, 0x20, 0x1a, 0xcd, 0x14, 0x45, 0x47, 0xd6, 0x27, 0x23, - 0x02, 0xbb, 0xcd, 0xa0, 0x36, 0xa8, 0x09, 0x82, 0x4b, 0x28, 0x2c, 0x50, - 0x20, 0x73, 0x5b, 0x0a, 0x23, 0x12, 0x6b, 0xad, 0xdb, 0x4b, 0x09, 0x41, - 0x96, 0xda, 0xa0, 0xb1, 0x16, 0x89, 0x09, 0x87, 0xab, 0x58, 0x62, 0x34, - 0x4a, 0x4d, 0x2e, 0x3c, 0x88, 0x19, 0x02, 0xb4, 0x35, 0x5e, 0xb2, 0xc0, - 0xde, 0xe2, 0xa5, 0x95, 0xbd, 0x2d, 0x53, 0x74, 0x63, 0x5d, 0x36, 0xaa, - 0x18, 0x46, 0x51, 0x4a, 0x0d, 0x57, 0x28, 0x44, 0x87, 0xcf, 0xb6, 0xb6, - 0xb9, 0xfb, 0xe2, 0x22, 0x99, 0xb9, 0xc5, 0xc9, 0xc3, 0xd4, 0x02, 0xfa, - 0xba, 0xe4, 0xf8, 0xf6, 0xf0, 0xec, 0xed, 0x2a, 0x65, 0xdb, 0xce, 0x35, - 0xb7, 0xdb, 0x5e, 0x01, 0x7b, 0xa3, 0x30, 0x9e, 0x59, 0x36, 0xf6, 0xe5, - 0xf1, 0x12, 0x07, 0x92, 0xf3, 0x34, 0xce, 0xc6, 0x8a, 0x87, 0xac, 0x31, - 0x7e, 0xbe, 0x21, 0xb8, 0x4c, 0xb2, 0x10, 0xa8, 0x50, 0x9a, 0xda, 0xb1, - 0x75, 0xdd, 0x12, 0x8e, 0x68, 0x36, 0x7a, 0x6b, 0xc4, 0x3f, 0x72, 0x17, - 0x07, 0xe9, 0xe6, 0x56, 0xb7, 0xba, 0xfd, 0x88, 0x67, 0xcc, 0xaf, 0x81, - 0xa8, 0xb8, 0x81, 0xe6, 0xbb, 0xa3, 0x17, 0xaf, 0xcc, 0x66, 0xc9, 0xe6, - 0x10, 0x8e, 0x83, 0xf9, 0x54, 0x6c, 0x57, 0xa6, 0x62, 0x9b, 0xcf, 0xc4, - 0x03, 0xd9, 0x5f, 0xe4, 0xd9, 0x3f, 0xc9, 0x0c, 0x20, 0x0b, 0x7b, 0x92, - 0x89, 0xd6, 0x4c, 0x25, 0x16, 0xac, 0x57, 0x50, 0xe7, 0x58, 0xec, 0xbd, - 0xca, 0xfb, 0xa0, 0xcd, 0xbe, 0x38, 0xc1, 0x24, 0xd8, 0x3b, 0x65, 0x59, - 0xb4, 0xb2, 0x29, 0x11, 0x42, 0x21, 0x4a, 0x8b, 0xff, 0x17, 0xad, 0x5e, - 0x23, 0x64, 0x46, 0x5e, 0xdd, 0x82, 0xd1, 0x25, 0xf9, 0x66, 0x36, 0xdc, - 0xa5, 0xcd, 0x4e, 0xd1, 0xf8, 0x37, 0xfc, 0xa0, 0x7f, 0x2e, 0x30, 0xef, - 0x98, 0x84, 0xa1, 0x7b, 0xa6, 0x0d, 0x63, 0x06, 0x93, 0x51, 0x63, 0x32, - 0x9a, 0xf7, 0x40, 0x03, 0xde, 0xa4, 0xc6, 0xbe, 0x9e, 0x41, 0x83, 0x86, - 0x19, 0x79, 0x3b, 0x15, 0xcb, 0x55, 0xd2, 0x6f, 0x34, 0x5e, 0x55, 0x4a, - 0x43, 0xe0, 0xf5, 0x97, 0x6f, 0x8f, 0x5f, 0xc7, 0x67, 0xc7, 0x1b, 0x78, - 0x1b, 0x38, 0xf9, 0x18, 0x87, 0x6e, 0x73, 0x2d, 0x69, 0xd2, 0xec, 0x14, - 0x58, 0x34, 0x7b, 0x27, 0xac, 0x57, 0x18, 0x85, 0x7b, 0x63, 0x7a, 0x2f, - 0xd1, 0xf2, 0xf4, 0xad, 0xe1, 0xb5, 0xc7, 0x04, 0xc9, 0xfa, 0x41, 0x45, - 0x19, 0x2e, 0xcd, 0x28, 0x41, 0x13, 0x5b, 0xab, 0x1e, 0xb9, 0xeb, 0x4c, - 0x5d, 0x9b, 0x7a, 0x3b, 0x5e, 0x27, 0x21, 0xfb, 0x14, 0x88, 0xb2, 0x12, - 0x88, 0x9f, 0x15, 0xc0, 0xe5, 0x93, 0xb2, 0x2c, 0xae, 0x54, 0x13, 0x44, - 0x79, 0x05, 0x14, 0x69, 0x7b, 0xfd, 0x3a, 0xd1, 0x35, 0x18, 0x1c, 0x3b, - 0x65, 0x01, 0x0d, 0xc3, 0x1a, 0x3a, 0xe2, 0x56, 0xce, 0x1e, 0x7f, 0x86, - 0xd0, 0x86, 0x33, 0x3b, 0xaa, 0x66, 0xf1, 0xa3, 0xad, 0x55, 0xbb, 0xaa, - 0x9f, 0x53, 0x77, 0x4a, 0x30, 0x89, 0x8a, 0xc9, 0xa4, 0x4d, 0x3b, 0xb8, - 0x09, 0xb1, 0x24, 0x0d, 0x77, 0x40, 0x0a, 0xbd, 0x42, 0x2d, 0xa0, 0xd9, - 0x6e, 0x88, 0x0b, 0xab, 0x04, 0x0e, 0xc7, 0x74, 0x9b, 0xbd, 0x90, 0xbc, - 0xaf, 0x3f, 0x53, 0xb6, 0x9a, 0x97, 0x4a, 0x8d, 0x09, 0xf7, 0xe8, 0x94, - 0x99, 0x4e, 0xa5, 0xdb, 0x90, 0xcd, 0x51, 0x03, 0x83, 0x96, 0xb8, 0x8a, - 0x36, 0x03, 0x8a, 0x10, 0xa0, 0x9b, 0xd3, 0xae, 0x13, 0x74, 0xe1, 0xe0, - 0x7f, 0x02, 0xbd, 0x11, 0xb2, 0xbc, 0x26, 0x9c, 0x22, 0x22, 0x1c, 0xf4, - 0x26, 0x23, 0x68, 0xcb, 0xb0, 0xa4, 0xde, 0x63, 0xc2, 0x9b, 0x69, 0x68, - 0xdb, 0x65, 0x89, 0xf2, 0xdc, 0x82, 0x8d, 0x70, 0xf1, 0x39, 0xf8, 0x05, - 0x47, 0xdb, 0x4c, 0x43, 0x3c, 0x32, 0xa6, 0x5b, 0x1e, 0x49, 0x14, 0x73, - 0xd1, 0x3a, 0x3f, 0x98, 0x55, 0x5c, 0x81, 0xe3, 0x43, 0xca, 0x7f, 0xb4, - 0xe5, 0xbd, 0x09, 0xfb, 0x59, 0x28, 0xb5, 0xf1, 0xdb, 0xa4, 0x02, 0x89, - 0xd0, 0x1c, 0x71, 0x63, 0x29, 0xaa, 0x4c, 0xfb, 0x94, 0xee, 0xb7, 0xcb, - 0x6e, 0x7b, 0xf4, 0xbb, 0x50, 0x67, 0x63, 0x75, 0x31, 0x39, 0x49, 0xcb, - 0x5d, 0x24, 0x01, 0x3a, 0xf2, 0x95, 0x48, 0x75, 0xa1, 0x5d, 0x89, 0x1c, - 0x3a, 0x6d, 0x50, 0x5e, 0x07, 0x8d, 0x6a, 0x47, 0x06, 0x11, 0xa0, 0x65, - 0xca, 0xb0, 0x28, 0x86, 0xc2, 0x84, 0x73, 0xa2, 0xdb, 0x84, 0xfa, 0x14, - 0x25, 0xa8, 0xb2, 0x5c, 0x86, 0xa4, 0x60, 0x02, 0x3a, 0x0e, 0x66, 0x2f, - 0xa0, 0xde, 0xaa, 0x93, 0x46, 0xeb, 0xb6, 0x35, 0xbc, 0xa0, 0x1c, 0xbd, - 0x92, 0x5f, 0xed, 0x9a, 0xb6, 0xd2, 0x28, 0x3c, 0x5b, 0xc3, 0x3d, 0xfa, - 0xf1, 0x47, 0xab, 0x98, 0xa2, 0xd7, 0x70, 0xa3, 0xb3, 0xa0, 0x1a, 0x48, - 0xb4, 0x90, 0x66, 0x8e, 0x9a, 0x20, 0xeb, 0x7d, 0x2c, 0x2b, 0x62, 0xa0, - 0x76, 0x29, 0x1e, 0x00, 0x7d, 0x36, 0x67, 0x33, 0xd4, 0xc5, 0x79, 0xca, - 0xe2, 0x95, 0xe1, 0x07, 0x1b, 0xc0, 0x1d, 0x78, 0x83, 0xe2, 0xa3, 0xfe, - 0x17, 0xa1, 0x3c, 0xd5, 0xbe, 0x49, 0xe3, 0xe3, 0xd4, 0xa7, 0xe9, 0xb4, - 0xb5, 0x59, 0x9c, 0x3b, 0x08, 0xa6, 0x7f, 0x20, 0x5f, 0x88, 0xb4, 0x8f, - 0xf6, 0xf5, 0xa8, 0xa4, 0xcb, 0x3a, 0x7d, 0x17, 0xc9, 0xbe, 0x8a, 0x92, - 0x83, 0x51, 0xe2, 0x8f, 0xca, 0x54, 0x7c, 0xee, 0xa1, 0x06, 0xe8, 0xf4, - 0x81, 0x59, 0x9e, 0xe1, 0xef, 0x89, 0x47, 0x50, 0xab, 0x8d, 0xc4, 0x61, - 0x0b, 0x76, 0xc3, 0x5a, 0x47, 0x45, 0x3d, 0xca, 0x7c, 0x9c, 0x77, 0x63, - 0x03, 0x9d, 0xa7, 0xb5, 0x51, 0x60, 0xfe, 0x6c, 0x68, 0x93, 0x18, 0x15, - 0xee, 0xf4, 0xa0, 0x95, 0x4f, 0x8d, 0x27, 0x1f, 0xca, 0xf3, 0x30, 0x64, - 0x8e, 0xd9, 0x14, 0x08, 0xd7, 0x55, 0x44, 0x18, 0xb1, 0x3a, 0x67, 0x33, - 0xc9, 0xdb, 0x9f, 0x57, 0x64, 0xcd, 0xca, 0x87, 0x61, 0x6f, 0xbf, 0x05, - 0x26, 0xb3, 0x92, 0xfa, 0x6d, 0x79, 0x12, 0xf1, 0x23, 0x0e, 0xd4, 0x72, - 0x3b, 0x50, 0x71, 0x38, 0xfb, 0xfa, 0x3d, 0x27, 0x19, 0xd0, 0x9b, 0x9d, - 0xfd, 0xfe, 0x6c, 0x8a, 0x1b, 0x0f, 0x59, 0xb9, 0xfb, 0x47, 0x2a, 0xdd, - 0xa4, 0x51, 0xa2, 0x23, 0x65, 0xf8, 0x98, 0x9c, 0x4d, 0x8d, 0x75, 0xbd, - 0x5c, 0x32, 0x3c, 0x3a, 0x76, 0x71, 0x3b, 0x3d, 0xdb, 0x1a, 0x4d, 0xf8, - 0xbe, 0x3b, 0x3c, 0x73, 0x41, 0xbe, 0x9c, 0x76, 0x06, 0x5e, 0x28, 0xf2, - 0xd1, 0xd6, 0x76, 0x1f, 0xfe, 0xd8, 0xa1, 0x2c, 0xe0, 0x47, 0x5b, 0x8f, - 0x06, 0x9c, 0x03, 0x9b, 0x36, 0xaf, 0x09, 0x05, 0x05, 0x2c, 0x88, 0x62, - 0xf4, 0xe8, 0xe3, 0xc7, 0x88, 0x7e, 0xd1, 0x0f, 0xf5, 0x8a, 0x8c, 0x28, - 0x3c, 0xa7, 0xab, 0x74, 0x43, 0xde, 0xba, 0x4e, 0x0b, 0xd0, 0x46, 0x49, - 0xb4, 0x8b, 0x5c, 0xfb, 0x9e, 0xb4, 0xcd, 0x5f, 0x82, 0x6d, 0x1b, 0x74, - 0x15, 0x03, 0x62, 0xf1, 0x81, 0x21, 0x3e, 0x24, 0x2a, 0x39, 0x7a, 0x4a, - 0x6c, 0x77, 0xdb, 0xac, 0xe3, 0x86, 0x70, 0x7f, 0xbf, 0x04, 0x3e, 0xf2, - 0x63, 0xbb, 0x4d, 0xb0, 0x7e, 0xea, 0xf0, 0xda, 0x59, 0x19, 0x68, 0x14, - 0xc2, 0x61, 0x4c, 0x7b, 0x34, 0x2e, 0x5d, 0x45, 0x1e, 0xb6, 0x8b, 0x67, - 0x3f, 0x07, 0x12, 0xc7, 0xfd, 0xf3, 0x88, 0x82, 0x7f, 0xa1, 0x30, 0x8a, - 0xfc, 0xaf, 0x47, 0x61, 0xcf, 0xac, 0x00, 0xd3, 0xb1, 0xab, 0x5e, 0x38, - 0xc5, 0x8f, 0x94, 0x9c, 0xa9, 0x7b, 0x25, 0x49, 0xbb, 0x82, 0x66, 0x20, - 0xcf, 0x07, 0xd2, 0x0c, 0xd8, 0x03, 0x6c, 0x3d, 0xc2, 0x55, 0x3a, 0x65, - 0xc1, 0x4d, 0xd1, 0xba, 0x25, 0x02, 0xad, 0xc1, 0xce, 0x6f, 0x80, 0xea, - 0x8e, 0xee, 0x2e, 0xd0, 0x56, 0x14, 0x64, 0xaf, 0x56, 0xf5, 0x5c, 0x51, - 0x75, 0x89, 0xa2, 0x8d, 0x25, 0xd3, 0x3a, 0xae, 0x2e, 0x47, 0x4d, 0xe5, - 0x0a, 0xf3, 0x04, 0xf4, 0x28, 0xf7, 0xe4, 0x2f, 0x5e, 0x0c, 0x94, 0x3a, - 0x63, 0x47, 0xaf, 0x5e, 0xe0, 0x9f, 0xe4, 0xb4, 0x92, 0x1e, 0xdf, 0x1a, - 0x83, 0x20, 0xad, 0x12, 0x87, 0x32, 0x54, 0x21, 0x5a, 0xf7, 0x78, 0x11, - 0xc8, 0x1d, 0x53, 0xfb, 0xb1, 0xc1, 0x91, 0x3b, 0xe9, 0x19, 0x87, 0xf1, - 0xc6, 0x36, 0xc5, 0xae, 0x8a, 0xd5, 0xee, 0xd8, 0xb1, 0xe1, 0xec, 0x3c, - 0x8e, 0x83, 0xa2, 0xa2, 0x86, 0xb6, 0x25, 0xcb, 0x23, 0x5e, 0x5d, 0x7b, - 0x21, 0xd1, 0x7e, 0x6d, 0x82, 0xe9, 0x24, 0x18, 0xf0, 0xeb, 0xdb, 0xf4, - 0x4c, 0xbb, 0x40, 0xf8, 0x23, 0xd8, 0x2c, 0x5c, 0x23, 0x82, 0x8d, 0x75, - 0xb2, 0x17, 0xdd, 0xf3, 0x39, 0x70, 0xcd, 0x7d, 0x3b, 0x5c, 0x42, 0x2f, - 0xda, 0x3b, 0xc5, 0xcd, 0x19, 0xc9, 0x4a, 0xc7, 0x8c, 0x91, 0x9d, 0x47, - 0xcf, 0x1f, 0xf7, 0xe9, 0x6f, 0x4f, 0xb6, 0xbe, 0xdc, 0x31, 0xc9, 0x10, - 0x47, 0x87, 0x67, 0x2f, 0xa3, 0x71, 0x09, 0x97, 0xf8, 0x8b, 0x70, 0xdd, - 0x29, 0xe6, 0x44, 0x63, 0x5f, 0xf7, 0x0f, 0xa0, 0xaa, 0x64, 0x69, 0x3d, - 0x31, 0x75, 0xfc, 0x08, 0xab, 0xb2, 0x49, 0x6f, 0xc6, 0x69, 0x52, 0x5e, - 0x24, 0x65, 0x1d, 0x63, 0x10, 0xb1, 0x9a, 0xd5, 0xf3, 0x78, 0xcb, 0xcb, - 0xce, 0x3b, 0x25, 0x17, 0xcb, 0xf3, 0xc1, 0xce, 0x60, 0xab, 0xcf, 0x5d, - 0xd2, 0x0d, 0x2a, 0x7f, 0xfb, 0xe4, 0xa3, 0xde, 0xfe, 0xbb, 0xb3, 0xef, - 0xbf, 0xfa, 0xf3, 0xab, 0xe3, 0xef, 0x8e, 0xde, 0xf4, 0x40, 0x60, 0xfd, - 0xd0, 0xd1, 0x08, 0xd6, 0x38, 0xce, 0x1d, 0x90, 0x11, 0x4a, 0x70, 0xa0, - 0x52, 0xf1, 0x75, 0x64, 0x5c, 0xa7, 0xfb, 0xa7, 0xaf, 0x36, 0x22, 0x1a, - 0x89, 0x67, 0x15, 0x7b, 0x3f, 0x58, 0x9b, 0x39, 0x69, 0xb8, 0x26, 0xc6, - 0x97, 0x98, 0x38, 0x80, 0x63, 0xe2, 0x20, 0xde, 0x09, 0x47, 0x07, 0x9c, - 0x5e, 0x46, 0x21, 0x73, 0xdf, 0x1d, 0x48, 0x12, 0x3c, 0xe7, 0x04, 0x24, - 0x0f, 0x45, 0x85, 0x9b, 0x55, 0xd7, 0x22, 0x73, 0x38, 0x5d, 0x4a, 0x25, - 0x35, 0xb2, 0xa5, 0x80, 0xb6, 0x20, 0x29, 0x9a, 0x38, 0x9e, 0xad, 0x84, - 0x17, 0xd3, 0xa1, 0x09, 0x15, 0x27, 0x9f, 0xc1, 0x7b, 0x4c, 0xdf, 0xd2, - 0xae, 0xcd, 0x64, 0x9e, 0xe2, 0xee, 0x15, 0x6f, 0xd0, 0x7a, 0x3a, 0x38, - 0x1f, 0x70, 0x22, 0x17, 0x6e, 0x48, 0x6d, 0x17, 0x55, 0xe5, 0x45, 0x81, - 0xa1, 0x82, 0x8d, 0x2e, 0xbb, 0xd1, 0x65, 0x01, 0xbf, 0x7f, 0x89, 0x65, - 0x73, 0xfe, 0x35, 0x22, 0x9f, 0x3f, 0xad, 0x45, 0xd9, 0x2c, 0x99, 0x7f, - 0x8a, 0x3e, 0x1e, 0xa3, 0xc7, 0x27, 0xc6, 0x83, 0x8f, 0xf6, 0xa4, 0xf0, - 0xce, 0xef, 0xed, 0xd7, 0x60, 0x62, 0xa6, 0xdc, 0x47, 0x1e, 0xb7, 0xae, - 0xf3, 0x36, 0x6c, 0x07, 0xee, 0x44, 0xe2, 0xd5, 0xa6, 0x35, 0x13, 0x42, - 0x04, 0x8c, 0x64, 0x9d, 0x7d, 0x4b, 0xf5, 0x35, 0x39, 0x2b, 0x30, 0x84, - 0x38, 0x9c, 0x61, 0x48, 0x7e, 0xac, 0x6e, 0xa5, 0xc8, 0x64, 0x68, 0x78, - 0x74, 0xc8, 0x4a, 0xcc, 0x34, 0xb9, 0xe6, 0xd9, 0x93, 0x9c, 0x15, 0x8d, - 0x0e, 0xf8, 0x33, 0xce, 0x6f, 0xb4, 0x5f, 0xfd, 0x19, 0x9c, 0x00, 0x76, - 0x72, 0x3c, 0x8c, 0x6f, 0x9c, 0xb3, 0x03, 0xd3, 0xfc, 0x8c, 0x1b, 0x51, - 0x23, 0x8b, 0xb9, 0x7d, 0xf3, 0x3c, 0x1a, 0xb1, 0x1c, 0xcd, 0x15, 0x78, - 0x86, 0xfe, 0x8d, 0x26, 0x80, 0x77, 0xd2, 0x64, 0x17, 0xdc, 0xf1, 0xa4, - 0xad, 0x05, 0xc6, 0x31, 0x61, 0x5a, 0xa8, 0xe9, 0xe4, 0x79, 0x9e, 0x06, - 0xd4, 0xcd, 0x3a, 0x6a, 0xae, 0xc2, 0x3f, 0x04, 0x5a, 0xd0, 0xe7, 0x3a, - 0x04, 0x9a, 0xbc, 0x7d, 0x08, 0xf7, 0x79, 0x06, 0x78, 0xca, 0xde, 0x19, - 0xe0, 0x43, 0x31, 0xf9, 0x5b, 0x08, 0x26, 0x37, 0x7c, 0x08, 0xa4, 0xfa, - 0xab, 0x37, 0x86, 0x8a, 0xbf, 0xd0, 0xab, 0xaa, 0x0a, 0x16, 0x18, 0x00, - 0xd9, 0x1c, 0xf3, 0x28, 0x60, 0x87, 0x1c, 0x7c, 0x8f, 0x80, 0x6a, 0x07, - 0x62, 0x14, 0x05, 0x10, 0xc9, 0xdf, 0x51, 0x91, 0x63, 0xe8, 0x45, 0x4c, - 0x3b, 0x0c, 0x1b, 0x60, 0x66, 0x4c, 0x9a, 0x54, 0xad, 0x8c, 0xa7, 0xc8, - 0x19, 0xbf, 0xad, 0xa4, 0x73, 0xbc, 0xe8, 0xed, 0xc1, 0xc9, 0x59, 0x74, - 0x76, 0xec, 0xfa, 0xe1, 0x19, 0x62, 0x80, 0x5a, 0x24, 0x76, 0xc0, 0xcf, - 0x53, 0x9e, 0x3c, 0x2f, 0x14, 0xae, 0xed, 0x45, 0x72, 0x99, 0x15, 0xa6, - 0x17, 0x34, 0x6b, 0xdf, 0x84, 0xb7, 0xa6, 0x55, 0xa0, 0xcd, 0xdd, 0xf2, - 0x12, 0x8f, 0x64, 0xf7, 0xda, 0x39, 0x37, 0x8c, 0x9f, 0x28, 0xc0, 0x70, - 0xc6, 0xc0, 0xe4, 0xfc, 0x42, 0x5e, 0x59, 0x15, 0x02, 0xa0, 0x6d, 0x40, - 0x11, 0x4b, 0xef, 0x51, 0xc9, 0xf7, 0x03, 0xa2, 0xcb, 0xc6, 0xce, 0x8e, - 0x04, 0xa9, 0x99, 0xba, 0x85, 0xdb, 0x67, 0x0c, 0x3c, 0x7f, 0xc4, 0x5b, - 0x85, 0x7b, 0xa5, 0x7e, 0x49, 0xd1, 0x4b, 0x30, 0x57, 0x64, 0x9a, 0x9c, - 0xfb, 0xd4, 0xdc, 0x6e, 0x20, 0xcc, 0xa0, 0xc9, 0x72, 0x8e, 0x04, 0xcf, - 0xea, 0x9d, 0x25, 0xa7, 0x3e, 0xf1, 0x09, 0x04, 0xf3, 0x95, 0x08, 0x2d, - 0x12, 0x23, 0xeb, 0x19, 0xb6, 0x97, 0x24, 0xb2, 0x97, 0x38, 0x1e, 0xdd, - 0xad, 0xd6, 0x71, 0x2e, 0x75, 0x61, 0x85, 0x48, 0xf8, 0x06, 0x37, 0x96, - 0x8f, 0x10, 0x7d, 0x53, 0x21, 0x51, 0x68, 0x92, 0x3b, 0xdd, 0xf0, 0xf6, - 0x42, 0xdd, 0x7b, 0x0a, 0x76, 0x51, 0xdd, 0xb8, 0xf8, 0xfe, 0x85, 0xbf, - 0xcd, 0x7d, 0x6f, 0x62, 0x12, 0x7f, 0xd9, 0xc4, 0x24, 0xb6, 0xb3, 0xad, - 0xca, 0x74, 0x39, 0x3e, 0x26, 0x2f, 0xf5, 0x39, 0x58, 0x43, 0x1e, 0x59, - 0xf2, 0xa0, 0x66, 0x53, 0xce, 0xbb, 0x0b, 0x76, 0xe7, 0x84, 0xbd, 0x7d, - 0x9b, 0xce, 0x53, 0x46, 0x56, 0x74, 0xcb, 0x39, 0xdd, 0x5a, 0x4b, 0x0d, - 0x12, 0x35, 0xd9, 0x4a, 0xfb, 0xa8, 0x3a, 0x89, 0x9e, 0xf8, 0x93, 0x04, - 0xde, 0x24, 0x70, 0xaa, 0x62, 0xa2, 0x51, 0xf4, 0xbc, 0xfe, 0xf7, 0xb7, - 0x2f, 0xff, 0xa1, 0x84, 0xb5, 0xd1, 0x57, 0xf6, 0xd2, 0x31, 0x4f, 0xa3, - 0x31, 0xb4, 0x93, 0xf4, 0x26, 0xe5, 0x76, 0x8d, 0x4d, 0xb0, 0xff, 0xf0, - 0xaf, 0xf3, 0xb8, 0xa0, 0x7a, 0xab, 0x75, 0x4c, 0x66, 0xc6, 0x3e, 0xbb, - 0x12, 0x20, 0x78, 0x34, 0x78, 0x42, 0xa1, 0x41, 0xb4, 0x10, 0x1e, 0xed, - 0x6c, 0x6f, 0xdc, 0xfc, 0x55, 0x8d, 0xad, 0xc6, 0x0c, 0x63, 0xbc, 0x69, - 0xeb, 0x87, 0x3f, 0x9e, 0xbc, 0x69, 0x7d, 0x13, 0xdd, 0x7d, 0x2f, 0x33, - 0x1d, 0x3f, 0xc9, 0xe6, 0xaf, 0xda, 0xef, 0xb1, 0xae, 0x82, 0xc6, 0xf8, - 0x0a, 0xd3, 0x46, 0xd8, 0x43, 0x81, 0xdc, 0xef, 0x97, 0x65, 0x86, 0xea, - 0x74, 0x0f, 0x3f, 0xbf, 0xf7, 0xaa, 0xc8, 0xc7, 0x45, 0x1e, 0x1f, 0x4f, - 0x60, 0xaf, 0xd3, 0x5e, 0xa0, 0xd8, 0xd6, 0xd2, 0xde, 0xc3, 0x35, 0xef, - 0xb4, 0x73, 0x34, 0xc4, 0x68, 0x8e, 0x68, 0xf7, 0x77, 0xba, 0x4d, 0xc1, - 0x0b, 0xef, 0xe2, 0x81, 0xb4, 0xc6, 0x78, 0x2d, 0x20, 0x21, 0x2f, 0xb8, - 0xcd, 0x3a, 0xa3, 0x80, 0x2e, 0xa4, 0x7d, 0x3d, 0x5b, 0x10, 0x2b, 0x7f, - 0x12, 0x4d, 0x73, 0xab, 0x54, 0xc4, 0xbe, 0x93, 0xd8, 0xc8, 0x62, 0x1f, - 0xed, 0xc8, 0xb4, 0xc9, 0x01, 0x3e, 0x52, 0x1d, 0x2c, 0x85, 0x7f, 0xf7, - 0x28, 0xcb, 0x2c, 0x94, 0x3c, 0xcd, 0xde, 0xb6, 0xd7, 0x7f, 0x3b, 0x3b, - 0x6b, 0xfa, 0x0b, 0x34, 0x63, 0x91, 0x5e, 0x5f, 0xd7, 0xa4, 0x3b, 0x51, - 0x93, 0x39, 0x51, 0xb5, 0xf0, 0x88, 0x9f, 0xd3, 0x13, 0x07, 0xd6, 0x95, - 0x4e, 0x0f, 0x5a, 0x57, 0x70, 0xd6, 0x44, 0x0f, 0xe7, 0x06, 0x4c, 0xa8, - 0x5b, 0xf5, 0x03, 0x8e, 0x4a, 0x93, 0x64, 0x66, 0x6c, 0x30, 0xc6, 0x16, - 0xc0, 0xef, 0x15, 0x77, 0x37, 0xc9, 0x1d, 0x66, 0xdf, 0xe9, 0x47, 0x02, - 0x78, 0x1d, 0xa7, 0xd1, 0x53, 0xdf, 0x6d, 0xb5, 0xcf, 0x9f, 0x21, 0x1e, - 0x3b, 0x0e, 0x3e, 0x0b, 0x5d, 0xb2, 0x1b, 0x40, 0x88, 0xa5, 0xdf, 0x4a, - 0x10, 0xe4, 0x34, 0xbf, 0xbf, 0xae, 0xb5, 0x99, 0x06, 0x27, 0x0c, 0x8a, - 0x2f, 0xdd, 0xa4, 0x0c, 0xda, 0x8c, 0x41, 0xca, 0x11, 0xc4, 0xe4, 0xbf, - 0x70, 0x86, 0x60, 0xdb, 0x0b, 0xb6, 0x34, 0x5f, 0x50, 0xf2, 0x03, 0x3b, - 0x72, 0xf9, 0x28, 0x99, 0xaf, 0x75, 0xaa, 0x8e, 0x58, 0x78, 0xf2, 0x3c, - 0xd0, 0x09, 0xf5, 0xcd, 0xf1, 0xd9, 0xe1, 0xae, 0xad, 0x21, 0xa4, 0xbd, - 0x24, 0x88, 0x9b, 0xbe, 0xa9, 0xf2, 0xe5, 0x83, 0xe3, 0xcc, 0x01, 0xde, - 0x7b, 0x82, 0x5d, 0xe5, 0xe6, 0x80, 0x7e, 0xbc, 0x43, 0x4f, 0xbe, 0xcf, - 0x20, 0xf4, 0xc8, 0x45, 0x38, 0xb5, 0xa6, 0xf6, 0x0b, 0x07, 0xb5, 0x72, - 0x90, 0x1d, 0x03, 0x3e, 0x38, 0x9d, 0x4d, 0x84, 0xd6, 0xf3, 0x27, 0x4b, - 0x7e, 0x31, 0x17, 0x93, 0xcb, 0x23, 0x20, 0x36, 0x0a, 0x28, 0xe7, 0xcb, - 0x6f, 0xac, 0xac, 0x38, 0x62, 0x4c, 0x24, 0xee, 0xa7, 0x36, 0x60, 0xae, - 0xad, 0x92, 0x63, 0xa1, 0x57, 0x27, 0xbe, 0x23, 0x9b, 0xa2, 0x82, 0x8a, - 0xd1, 0x6a, 0x72, 0x19, 0xc5, 0x4f, 0x65, 0x5a, 0x7b, 0x07, 0xed, 0xf8, - 0xc6, 0x75, 0xbc, 0xad, 0xdd, 0x71, 0x8f, 0x76, 0x7c, 0x63, 0xfe, 0xce, - 0xc4, 0xbe, 0x6e, 0x46, 0x69, 0x53, 0xf4, 0xda, 0x4c, 0x46, 0x42, 0x09, - 0x98, 0x39, 0xd0, 0x81, 0xeb, 0xc2, 0xb9, 0x03, 0x26, 0x07, 0xda, 0x16, - 0xb8, 0x6a, 0x4c, 0x41, 0xfd, 0x86, 0xec, 0x76, 0x97, 0xec, 0xb1, 0xf8, - 0x95, 0xef, 0xa5, 0x36, 0x2e, 0x5f, 0x13, 0x20, 0x72, 0x5c, 0x2a, 0xe2, - 0xc9, 0x27, 0x2d, 0xd3, 0xf5, 0xe0, 0x63, 0x30, 0x9f, 0x10, 0xe7, 0xbc, - 0xd3, 0x94, 0xe8, 0x49, 0x9f, 0x43, 0x26, 0x06, 0x8d, 0x5b, 0xea, 0x46, - 0x29, 0xee, 0x22, 0xf5, 0x50, 0x30, 0xcd, 0x93, 0x2d, 0xfb, 0xc6, 0x00, - 0x3f, 0x29, 0xe4, 0x37, 0xb3, 0x75, 0x03, 0xf1, 0xb6, 0xc9, 0x47, 0xc1, - 0xae, 0xe4, 0xb9, 0xa4, 0x5c, 0x77, 0x53, 0x87, 0xec, 0xe3, 0x67, 0xb1, - 0x49, 0xcd, 0xec, 0x8f, 0xdc, 0x4d, 0x5e, 0x89, 0x42, 0x1a, 0x2e, 0x79, - 0x87, 0x46, 0x1a, 0x75, 0xad, 0xd1, 0xde, 0x04, 0xe4, 0x94, 0x40, 0x8b, - 0x74, 0x14, 0xb9, 0xbf, 0x16, 0x3a, 0xe1, 0xfa, 0xde, 0x5c, 0x1f, 0xb3, - 0x80, 0x78, 0x24, 0xa9, 0xa9, 0x16, 0x21, 0x6a, 0x34, 0x78, 0x67, 0xc7, - 0x60, 0xb8, 0xfb, 0x4e, 0x46, 0xed, 0x51, 0x4d, 0x9f, 0x0c, 0x21, 0x19, - 0x24, 0x0f, 0x72, 0x11, 0x0e, 0x09, 0x75, 0xee, 0xd7, 0x62, 0x28, 0x11, - 0x4c, 0xb4, 0x0a, 0xf1, 0x97, 0x7e, 0x22, 0xfe, 0x05, 0x82, 0xe5, 0xc1, - 0x95, 0xa7, 0x40, 0x3f, 0xa6, 0xb6, 0x3b, 0x15, 0xde, 0x25, 0x27, 0xfc, - 0x45, 0xe7, 0x05, 0x19, 0xcf, 0xd4, 0x91, 0xab, 0x81, 0x76, 0x91, 0x78, - 0xa9, 0xcd, 0x88, 0xed, 0x53, 0x61, 0x19, 0x77, 0x86, 0x99, 0x71, 0x74, - 0xa6, 0xdd, 0xc0, 0x9b, 0xc0, 0x09, 0xc9, 0x70, 0xc1, 0xc4, 0xb6, 0x6b, - 0x2f, 0x17, 0x7b, 0x1d, 0x03, 0x0a, 0xf0, 0x8b, 0x0d, 0xad, 0x7b, 0x33, - 0x42, 0xdc, 0x8b, 0x41, 0x12, 0x08, 0xcc, 0x02, 0x6b, 0x9d, 0xb8, 0x8b, - 0x22, 0xd2, 0x13, 0xed, 0x27, 0xfd, 0xaa, 0xc9, 0x06, 0x2b, 0xc9, 0xa3, - 0x1b, 0x1b, 0xd0, 0xdf, 0x40, 0x05, 0x88, 0x4c, 0x6d, 0xcf, 0x19, 0x36, - 0x87, 0xef, 0x0f, 0xeb, 0xa8, 0x84, 0x71, 0xda, 0xc8, 0xbf, 0x75, 0xac, - 0xf3, 0xc6, 0xd7, 0x5b, 0xec, 0x02, 0x73, 0x0b, 0x14, 0x88, 0x78, 0x0c, - 0x62, 0x68, 0x7d, 0xb0, 0xc1, 0x45, 0x90, 0xf2, 0x92, 0xe7, 0xfa, 0xa1, - 0xaa, 0x57, 0x14, 0xdb, 0x31, 0x89, 0x2d, 0x76, 0x80, 0x63, 0x0e, 0x92, - 0x36, 0x6c, 0x50, 0x7f, 0x34, 0x4a, 0x64, 0x4a, 0xed, 0x21, 0x45, 0x80, - 0x4d, 0x09, 0x2f, 0xf1, 0x5c, 0x3c, 0x7a, 0x32, 0x68, 0xf0, 0xee, 0x36, - 0xe9, 0xfb, 0x7e, 0x38, 0xfb, 0x8a, 0x29, 0xdb, 0x66, 0xf6, 0xed, 0x55, - 0x92, 0xae, 0xcd, 0x5b, 0x3b, 0x83, 0x2f, 0x57, 0x6d, 0x35, 0x29, 0xc9, - 0x4f, 0xf4, 0x3e, 0x35, 0x37, 0x22, 0x1d, 0xb4, 0x49, 0x03, 0x0d, 0x39, - 0x91, 0xd6, 0x09, 0xde, 0x8d, 0x65, 0x78, 0x16, 0x5c, 0x01, 0xca, 0x48, - 0x42, 0x9c, 0x1e, 0xd9, 0x02, 0x63, 0x7e, 0x2d, 0x83, 0x98, 0xc4, 0xae, - 0xf6, 0x55, 0x37, 0x0f, 0x68, 0xc0, 0xc7, 0xed, 0x15, 0x9f, 0x99, 0x88, - 0x76, 0x69, 0xf3, 0x7c, 0x40, 0xa0, 0x57, 0x28, 0x7b, 0xb8, 0x7b, 0xbc, - 0x07, 0x03, 0x89, 0xad, 0x36, 0x50, 0x83, 0xea, 0x60, 0xda, 0x3a, 0xdd, - 0x6a, 0x87, 0x7e, 0x4f, 0x75, 0x4d, 0x66, 0x76, 0x52, 0x96, 0x56, 0x3a, - 0xbe, 0xff, 0x42, 0x92, 0x45, 0x9a, 0x9e, 0x4e, 0xd3, 0xa9, 0x7b, 0x4c, - 0xa6, 0x63, 0x6d, 0x58, 0x8e, 0x73, 0x95, 0x65, 0x15, 0xbd, 0xd1, 0xc7, - 0xa2, 0xf5, 0xd3, 0x93, 0x37, 0x87, 0xdf, 0x1d, 0x6f, 0xdc, 0x14, 0x2d, - 0x6c, 0xb6, 0x40, 0x33, 0x35, 0x7e, 0x89, 0x16, 0x70, 0x4b, 0xf5, 0x1e, - 0x29, 0x69, 0xdf, 0x9d, 0x9e, 0xc6, 0xfb, 0x27, 0x47, 0x54, 0xc9, 0x7b, - 0x0a, 0xff, 0x85, 0xc3, 0x0c, 0x35, 0x1b, 0x19, 0x70, 0x17, 0xae, 0x28, - 0xfe, 0x3b, 0x85, 0x9e, 0xf5, 0x7a, 0x73, 0x5a, 0x1f, 0xa6, 0x61, 0xa0, - 0xa3, 0x91, 0xb9, 0xbb, 0x6a, 0x06, 0x26, 0x2e, 0xd6, 0x1a, 0x4e, 0x66, - 0xdc, 0xa4, 0xe9, 0x70, 0x5a, 0xfa, 0xa8, 0x8e, 0xf6, 0x67, 0x81, 0x88, - 0x13, 0x21, 0x94, 0x62, 0x62, 0x32, 0x6d, 0xaf, 0x96, 0xea, 0x63, 0xc3, - 0x2f, 0x4c, 0x7a, 0x33, 0xe1, 0x8f, 0x70, 0x15, 0x32, 0x86, 0x0e, 0x10, - 0x13, 0x25, 0xa9, 0x53, 0x89, 0x5c, 0x34, 0x22, 0x15, 0x64, 0xd2, 0xc0, - 0x90, 0x73, 0x6c, 0x51, 0x48, 0x19, 0x26, 0x6c, 0x9e, 0x78, 0x79, 0x42, - 0x6b, 0x31, 0x08, 0x88, 0xdd, 0x35, 0x16, 0x75, 0x69, 0x4e, 0x7d, 0x72, - 0x89, 0x53, 0x36, 0x1d, 0x18, 0xd4, 0xb9, 0x43, 0x63, 0x4f, 0xec, 0x90, - 0xbb, 0xa0, 0x45, 0x7a, 0xba, 0x16, 0xbd, 0xa3, 0x0a, 0x32, 0x18, 0x0a, - 0xd4, 0x9c, 0x72, 0x24, 0xf0, 0x7f, 0x41, 0x8a, 0x75, 0xdd, 0x75, 0x86, - 0x94, 0x1e, 0x00, 0xdd, 0xd0, 0x8e, 0x0d, 0xdf, 0xbc, 0xbb, 0x22, 0xeb, - 0x1a, 0x62, 0xf2, 0x1c, 0x1e, 0x49, 0x5e, 0x4f, 0x89, 0x77, 0x83, 0x62, - 0x48, 0x41, 0x11, 0xc9, 0x7c, 0x20, 0x68, 0x7d, 0x33, 0x43, 0xf3, 0x76, - 0xd4, 0xe5, 0x88, 0x94, 0x68, 0xae, 0x1f, 0x0d, 0x21, 0xe9, 0xb7, 0xaa, - 0x2b, 0xb5, 0x25, 0x1c, 0xea, 0x83, 0x79, 0x5f, 0xc7, 0xe8, 0x23, 0xb6, - 0x55, 0x8a, 0x00, 0xc1, 0x14, 0x5b, 0x22, 0xd1, 0x2e, 0x54, 0x13, 0x4a, - 0x66, 0x42, 0x30, 0x7f, 0xb8, 0x83, 0xc9, 0xb0, 0x2a, 0xa6, 0x0b, 0xec, - 0x4b, 0xc2, 0xc8, 0xba, 0xd3, 0x04, 0x91, 0x74, 0x36, 0x22, 0xf5, 0xa8, - 0xd2, 0xd0, 0x4e, 0x0d, 0x69, 0xc0, 0x29, 0x2f, 0x2e, 0x21, 0x2a, 0x85, - 0xd6, 0x00, 0x3e, 0x27, 0x57, 0x09, 0x93, 0x45, 0x6f, 0xbc, 0x33, 0xce, - 0x9c, 0x2a, 0x2d, 0x2e, 0xbb, 0xb2, 0x21, 0x8e, 0x80, 0x20, 0x86, 0x94, - 0xe6, 0x01, 0xea, 0xb3, 0xee, 0x0f, 0x7f, 0x7c, 0x42, 0x89, 0xed, 0xc6, - 0xf1, 0x14, 0x66, 0xa0, 0xce, 0x86, 0x7e, 0x06, 0xad, 0xd7, 0x99, 0x9d, - 0x3f, 0x79, 0x25, 0x3a, 0x72, 0x4f, 0xd3, 0x5e, 0x71, 0x26, 0xa2, 0xbf, - 0x32, 0xd0, 0x53, 0x3e, 0xc9, 0xce, 0x07, 0x4d, 0xde, 0xe7, 0x0b, 0xfc, - 0x8e, 0x5e, 0xa1, 0x76, 0x78, 0x9f, 0x02, 0x75, 0x87, 0xbd, 0x34, 0x00, - 0xa6, 0x35, 0x46, 0x4b, 0x73, 0xd7, 0xc7, 0x0d, 0x0c, 0x42, 0x8d, 0x46, - 0x06, 0xfc, 0xe5, 0x0b, 0x0c, 0x75, 0x06, 0xd9, 0x93, 0x94, 0x06, 0x33, - 0x32, 0x73, 0x3e, 0x4e, 0xa8, 0x6c, 0x43, 0xbc, 0xa2, 0xce, 0x1c, 0x6e, - 0x67, 0xb5, 0x1b, 0xd8, 0x42, 0x83, 0x46, 0xc2, 0xbc, 0xe1, 0xce, 0x79, - 0x3b, 0xcd, 0xd1, 0xef, 0x46, 0x10, 0x66, 0x6d, 0x2b, 0xc1, 0xa7, 0xba, - 0xe4, 0x74, 0x03, 0x68, 0xaa, 0x73, 0xc6, 0x1e, 0xcf, 0x6d, 0x9f, 0xb8, - 0xdd, 0x61, 0xcf, 0x48, 0xb2, 0xed, 0xf3, 0x28, 0xad, 0xcc, 0x1e, 0x26, - 0xdf, 0xa7, 0xdc, 0xf0, 0x7d, 0xbf, 0xdb, 0x8d, 0x6f, 0xd5, 0x70, 0x8e, - 0x88, 0x27, 0x20, 0x6c, 0x8c, 0xbd, 0x66, 0xd8, 0x38, 0xd5, 0xcb, 0x26, - 0xdc, 0xcb, 0x0f, 0x33, 0x18, 0xdf, 0xe5, 0xd9, 0xc7, 0x41, 0xc0, 0x60, - 0xe1, 0x94, 0x52, 0x4e, 0x0f, 0x93, 0xfe, 0xf4, 0x2c, 0x85, 0x53, 0xd1, - 0x22, 0x58, 0x28, 0xf9, 0xc9, 0x1f, 0xb0, 0xa9, 0xed, 0xd8, 0x02, 0x7e, - 0xd7, 0xfa, 0x93, 0x0d, 0x89, 0x37, 0x4d, 0xea, 0xf9, 0xfa, 0xf6, 0x06, - 0x67, 0xb6, 0x49, 0xdb, 0x22, 0xad, 0x7d, 0xa1, 0x6f, 0xe7, 0x64, 0x9e, - 0x41, 0x74, 0x40, 0x0d, 0xd2, 0xfc, 0x4a, 0x7a, 0xca, 0xba, 0x43, 0x50, - 0x75, 0x82, 0x46, 0x9b, 0x30, 0xb7, 0xa4, 0x37, 0x8d, 0xa7, 0x91, 0x8a, - 0xa6, 0x25, 0x66, 0x40, 0x46, 0x02, 0xb2, 0x42, 0x84, 0xe3, 0x0a, 0x01, - 0x8b, 0x65, 0xcd, 0xf0, 0x41, 0x2e, 0x6d, 0x40, 0x60, 0x03, 0xa7, 0x63, - 0xb4, 0x42, 0xca, 0xe8, 0xbc, 0x2c, 0x40, 0x89, 0x41, 0x20, 0x10, 0xfc, - 0xf4, 0x0d, 0xae, 0xf6, 0x95, 0xde, 0x0d, 0x5e, 0xf9, 0x1c, 0xba, 0x32, - 0x4c, 0x2b, 0x87, 0xde, 0xf7, 0xc7, 0xaf, 0x0f, 0x7b, 0x6e, 0x96, 0x03, - 0x02, 0xe1, 0x4b, 0xcf, 0x29, 0xf7, 0x50, 0x07, 0x81, 0xfe, 0x26, 0x3f, - 0xc0, 0xa3, 0x98, 0xbc, 0x09, 0xf6, 0x69, 0xa4, 0x02, 0xab, 0xb2, 0x9d, - 0xc6, 0x69, 0x00, 0xb7, 0x38, 0x90, 0xb2, 0x6e, 0x18, 0xee, 0x7e, 0xdc, - 0xbe, 0x24, 0x42, 0x5c, 0x78, 0x00, 0xef, 0x85, 0xad, 0x48, 0x25, 0x88, - 0x1a, 0xa2, 0x54, 0x0a, 0x55, 0x0e, 0xa2, 0x63, 0x6a, 0xeb, 0x6a, 0x3a, - 0xba, 0x16, 0xb4, 0x8e, 0xd8, 0xf7, 0x15, 0x57, 0x3a, 0x15, 0x1d, 0xe4, - 0x7b, 0xe1, 0x23, 0xa1, 0xfa, 0x98, 0x7d, 0x2c, 0xde, 0xc9, 0xb0, 0x03, - 0x06, 0x9d, 0x3f, 0x08, 0x55, 0x6a, 0xdc, 0xa3, 0x60, 0xcb, 0xc5, 0x44, - 0xd3, 0x68, 0xb9, 0x10, 0x23, 0xd1, 0xc5, 0x72, 0xa1, 0x40, 0x71, 0x15, - 0x4a, 0xf8, 0x84, 0xdf, 0x21, 0x01, 0x8b, 0xec, 0x94, 0x32, 0x37, 0xce, - 0x17, 0xe6, 0x20, 0x0e, 0x45, 0xe6, 0x88, 0x7c, 0x99, 0x4e, 0xe9, 0x72, - 0x44, 0x6b, 0xb3, 0x6b, 0xaf, 0x0a, 0x2b, 0x9d, 0x4e, 0xd6, 0x9a, 0x7a, - 0xd5, 0x1a, 0x18, 0x18, 0x60, 0x0c, 0xad, 0x39, 0x3d, 0x6d, 0x1c, 0x55, - 0xc0, 0x87, 0x10, 0xee, 0x98, 0xbe, 0xfd, 0x18, 0xdf, 0xd2, 0xd9, 0x35, - 0xce, 0xd8, 0xfe, 0x9d, 0xcd, 0x27, 0xa2, 0xa9, 0x97, 0xb5, 0x42, 0x72, - 0xd8, 0xf6, 0x2d, 0x74, 0x33, 0x62, 0xb8, 0xc1, 0xde, 0x1d, 0x5d, 0x0c, - 0xf8, 0x4e, 0x7c, 0x77, 0x55, 0xfc, 0x34, 0xc3, 0x6d, 0xfb, 0x0d, 0x79, - 0xcb, 0x02, 0xd8, 0x66, 0x1c, 0xdd, 0x4d, 0xfa, 0xba, 0xba, 0x01, 0xab, - 0x85, 0x5d, 0x92, 0x25, 0xde, 0xed, 0x0b, 0xf6, 0xc5, 0xd2, 0x0e, 0xd7, - 0x52, 0x3d, 0xab, 0x98, 0x5c, 0x16, 0xa2, 0x43, 0xeb, 0x9e, 0xac, 0xbb, - 0x52, 0xda, 0xc4, 0x79, 0x78, 0x49, 0x55, 0x31, 0xca, 0x1a, 0xa9, 0xbd, - 0x46, 0xb5, 0x90, 0x12, 0x1a, 0x53, 0x97, 0x42, 0xe1, 0x55, 0x55, 0xa2, - 0x70, 0xb8, 0x8e, 0x5a, 0x38, 0xd0, 0xad, 0xc8, 0xe9, 0xa3, 0xb9, 0x07, - 0x59, 0x89, 0x4d, 0xe4, 0x6d, 0xaa, 0xa6, 0xcc, 0xd3, 0x77, 0x91, 0xcd, - 0x25, 0x48, 0xe8, 0xa3, 0x39, 0xd9, 0x2c, 0x7a, 0x63, 0x6b, 0x90, 0x47, - 0x6c, 0x04, 0x76, 0x11, 0x5c, 0x24, 0x93, 0xd9, 0xac, 0x30, 0x22, 0x7e, - 0xdc, 0x70, 0xb7, 0x1f, 0xc9, 0x56, 0x72, 0x36, 0x76, 0xcd, 0x9f, 0x26, - 0xee, 0x1b, 0xcd, 0x40, 0xc3, 0xe3, 0x20, 0x95, 0x55, 0x80, 0x4b, 0x40, - 0x63, 0xad, 0x88, 0x5d, 0xfb, 0x9a, 0x33, 0x7c, 0x0f, 0x3b, 0xd4, 0x60, - 0xc9, 0xe5, 0x25, 0xa1, 0x4e, 0x5e, 0x72, 0xcb, 0x6d, 0x62, 0x7f, 0xf6, - 0x10, 0x1a, 0xce, 0x62, 0xfc, 0x15, 0xac, 0x25, 0x20, 0x9a, 0x71, 0x61, - 0x54, 0xcc, 0x58, 0x4a, 0x57, 0x73, 0xb0, 0x1c, 0x79, 0x11, 0x36, 0x33, - 0xd4, 0xf4, 0xb4, 0xc4, 0x70, 0x9d, 0x13, 0xaf, 0xf3, 0x86, 0xa3, 0x78, - 0x5d, 0x5f, 0xff, 0x12, 0x27, 0xd5, 0x28, 0xcb, 0x84, 0xd6, 0x30, 0x08, - 0x89, 0x79, 0x9f, 0x01, 0x4e, 0xd8, 0x88, 0x55, 0x5d, 0x8b, 0x06, 0x3f, - 0x2e, 0x18, 0x1e, 0x84, 0x93, 0xe8, 0xa9, 0x86, 0x84, 0xd3, 0xc9, 0x29, - 0xc8, 0x6a, 0x50, 0xb2, 0xe1, 0x42, 0xf9, 0xa5, 0xda, 0x12, 0x7d, 0xed, - 0xe8, 0x10, 0x73, 0x75, 0x75, 0xb5, 0x3d, 0x68, 0xa4, 0x28, 0xf1, 0x36, - 0xc4, 0xd8, 0xfb, 0xa3, 0xaa, 0xb9, 0x89, 0xc6, 0xd5, 0xd5, 0xce, 0x60, - 0xc9, 0xa5, 0xb5, 0x37, 0xe4, 0xe1, 0x00, 0x98, 0x43, 0x38, 0xc5, 0xb7, - 0x59, 0x6a, 0x90, 0x1f, 0x1d, 0x2d, 0x1b, 0xae, 0xfd, 0x2b, 0xe0, 0x0b, - 0x9b, 0xb7, 0x74, 0xb4, 0xf8, 0xb6, 0x81, 0xab, 0xd9, 0x17, 0x71, 0x32, - 0x9d, 0x07, 0x2b, 0x93, 0x10, 0xde, 0x51, 0x75, 0x5e, 0x6e, 0x10, 0xff, - 0xea, 0xe4, 0x0d, 0xa1, 0x95, 0xc1, 0x82, 0xd2, 0xbc, 0xe2, 0xa4, 0x68, - 0xfc, 0x19, 0x16, 0x79, 0xe7, 0xec, 0xed, 0xa2, 0xe4, 0x2c, 0x2f, 0xff, - 0x85, 0x72, 0xa0, 0x82, 0x6d, 0x8e, 0x4d, 0x2b, 0x74, 0x44, 0xd5, 0x33, - 0x5e, 0x19, 0x31, 0x50, 0x3b, 0xdc, 0x26, 0x38, 0xe7, 0x20, 0x32, 0x53, - 0xd3, 0xb1, 0x52, 0xdf, 0x4a, 0x1d, 0x9e, 0xde, 0x36, 0xb9, 0xc8, 0xd4, - 0xe5, 0x7b, 0x87, 0xca, 0x1e, 0xc8, 0xba, 0xf6, 0x64, 0x4a, 0x9d, 0xea, - 0x33, 0xea, 0xbf, 0x33, 0x59, 0x51, 0x92, 0x38, 0x2c, 0x91, 0x36, 0x3a, - 0x04, 0x45, 0x28, 0x0e, 0x57, 0x35, 0x6b, 0xce, 0xa0, 0x68, 0xaf, 0x64, - 0x1e, 0x9f, 0x13, 0xfb, 0x14, 0xb5, 0x9c, 0xc5, 0xb9, 0x36, 0xf5, 0x25, - 0x70, 0x18, 0xb4, 0x88, 0x3b, 0xfd, 0xdb, 0x78, 0x3a, 0xb8, 0x76, 0x71, - 0xc1, 0xd3, 0xb7, 0x2f, 0x35, 0x74, 0xf8, 0x40, 0x6f, 0x2d, 0x61, 0x71, - 0x54, 0xbf, 0xf4, 0xa8, 0x21, 0x5f, 0x71, 0xbc, 0x95, 0x65, 0xab, 0x2c, - 0x63, 0xd5, 0x5e, 0x10, 0x28, 0xcb, 0xe7, 0x79, 0xbb, 0xf3, 0xbb, 0x8e, - 0x16, 0x02, 0xe9, 0xf2, 0x34, 0x3c, 0x74, 0x58, 0xdd, 0x08, 0xd2, 0x05, - 0x64, 0xec, 0x5c, 0x83, 0x37, 0x7d, 0x9e, 0x64, 0xb8, 0x40, 0x61, 0x12, - 0xb6, 0xfb, 0xf8, 0x34, 0xf9, 0x09, 0x6a, 0xda, 0x30, 0x71, 0xfa, 0x43, - 0x23, 0xc0, 0x62, 0x9a, 0xcc, 0x06, 0xd1, 0x51, 0xae, 0x68, 0x03, 0x94, - 0xb8, 0x5d, 0x65, 0x75, 0x7b, 0x7d, 0x8b, 0x44, 0xa4, 0x9b, 0x4d, 0x70, - 0x77, 0xf0, 0x2d, 0x78, 0x7c, 0x24, 0x17, 0x1e, 0x57, 0x06, 0xd6, 0x1b, - 0x71, 0x91, 0x84, 0xd2, 0xdd, 0x4c, 0x68, 0x9b, 0x1e, 0x42, 0xf4, 0x19, - 0x7a, 0xb9, 0xb2, 0xb0, 0xfe, 0xe8, 0x84, 0xbe, 0x58, 0xe4, 0x1f, 0x60, - 0x5a, 0x06, 0xda, 0xe2, 0x6a, 0xe2, 0x2c, 0x00, 0x7e, 0x9e, 0x8c, 0x6a, - 0xed, 0x42, 0x62, 0x5e, 0x4f, 0x40, 0xdb, 0xbe, 0xc4, 0x6c, 0x80, 0x77, - 0x5e, 0xf3, 0x50, 0x9b, 0x7a, 0x4e, 0xb3, 0xb7, 0xb3, 0x95, 0x75, 0xbb, - 0xc2, 0x97, 0xc5, 0xb4, 0xc3, 0x95, 0x50, 0x59, 0xd7, 0x7d, 0x71, 0xaf, - 0xcb, 0xb2, 0x60, 0x10, 0x4f, 0xe7, 0x5c, 0x17, 0x7b, 0x5c, 0x44, 0xd1, - 0xcb, 0x6e, 0x4e, 0x93, 0x06, 0xee, 0xb7, 0x0a, 0x9f, 0xc7, 0xbc, 0xc3, - 0x1d, 0x92, 0xc5, 0xac, 0xa4, 0xa3, 0xfe, 0xa1, 0xcf, 0xee, 0xc4, 0x73, - 0x4c, 0x4e, 0x8b, 0x87, 0x4d, 0xc0, 0x6f, 0x18, 0x73, 0x04, 0xba, 0xc3, - 0xd0, 0xa3, 0x72, 0x75, 0x32, 0xa3, 0xa2, 0x87, 0x96, 0x1a, 0x88, 0x8a, - 0x5f, 0x17, 0xb9, 0xa0, 0x38, 0xb3, 0x35, 0xcd, 0x2a, 0x4a, 0x41, 0xfa, - 0x05, 0x53, 0x18, 0xcc, 0xf4, 0x9f, 0x5c, 0xdb, 0xef, 0x49, 0x78, 0x38, - 0x5e, 0xe9, 0x96, 0x10, 0x73, 0x92, 0x57, 0x7c, 0xcc, 0x4f, 0xd2, 0x6f, - 0x24, 0xef, 0x8b, 0xe2, 0x65, 0xee, 0xcf, 0x62, 0xca, 0x2b, 0x0d, 0x37, - 0x89, 0xae, 0x8c, 0x25, 0x9f, 0x5c, 0x16, 0x19, 0x96, 0xcc, 0xa1, 0x5a, - 0x85, 0x50, 0x76, 0xa4, 0x40, 0x69, 0xe2, 0x47, 0x52, 0x1b, 0xec, 0x4b, - 0xc2, 0xa7, 0xc0, 0x3b, 0x19, 0xec, 0x7c, 0xd1, 0x97, 0xd0, 0x1e, 0x2b, - 0x2e, 0x92, 0x1c, 0x70, 0x8e, 0xea, 0x9f, 0x02, 0x77, 0x19, 0x0f, 0x27, - 0x65, 0xe0, 0x4d, 0xa4, 0x44, 0xcf, 0xef, 0xcb, 0xc1, 0x54, 0x7c, 0x65, - 0x13, 0xf9, 0xc0, 0x12, 0x42, 0x1a, 0xee, 0x63, 0xf6, 0x48, 0x6d, 0x6d, - 0xe0, 0xc1, 0xf6, 0xd6, 0x96, 0xd4, 0xd6, 0x49, 0x05, 0x76, 0xdd, 0xe9, - 0x27, 0xa0, 0x11, 0xa8, 0x8e, 0x90, 0x9b, 0x0a, 0xdc, 0x59, 0xd6, 0x34, - 0x44, 0x4d, 0x97, 0xac, 0xa1, 0x26, 0x22, 0x72, 0x89, 0x84, 0x3e, 0xf8, - 0x16, 0x11, 0x10, 0x09, 0x57, 0x82, 0xf3, 0x8f, 0x61, 0xaf, 0xfb, 0x26, - 0x96, 0x79, 0xdb, 0xd3, 0x27, 0x97, 0x74, 0xa7, 0x4f, 0xb6, 0x25, 0xbe, - 0x74, 0xfe, 0x7b, 0xb5, 0x11, 0x65, 0xd0, 0x3b, 0x5c, 0x41, 0x5d, 0x8e, - 0xd2, 0x3c, 0xdb, 0x05, 0x04, 0x80, 0xd1, 0x19, 0x01, 0xeb, 0xba, 0x9a, - 0x45, 0xdf, 0x0e, 0x43, 0x22, 0xae, 0x7d, 0x27, 0x1a, 0xb9, 0xb5, 0xcf, - 0x1f, 0x35, 0x73, 0x6b, 0x5d, 0xec, 0xee, 0x65, 0x32, 0x4a, 0xa0, 0x11, - 0x2d, 0xce, 0xb7, 0xd4, 0x94, 0x90, 0x4f, 0xc4, 0x80, 0xda, 0xbb, 0x38, - 0xed, 0x83, 0x90, 0xa7, 0xc2, 0x96, 0x47, 0xaa, 0xe7, 0x0c, 0x7e, 0x30, - 0x73, 0xd2, 0xef, 0x1f, 0x9a, 0xa7, 0x13, 0x51, 0x32, 0x4d, 0xda, 0x6f, - 0x71, 0xa8, 0xd2, 0xfc, 0xf0, 0x26, 0x8a, 0x72, 0x76, 0xe2, 0x5e, 0x2b, - 0x36, 0xbb, 0x17, 0x70, 0x33, 0x59, 0xd9, 0x35, 0xad, 0x8a, 0x5a, 0xeb, - 0x02, 0xc0, 0xb7, 0xc8, 0x23, 0xef, 0xd4, 0xe4, 0x69, 0xe2, 0x1c, 0x6d, - 0x1f, 0x56, 0x39, 0xde, 0x9c, 0xbc, 0xe9, 0x87, 0xb2, 0xe4, 0x44, 0x93, - 0xe0, 0xb8, 0x34, 0x90, 0x61, 0x6b, 0x38, 0x20, 0xca, 0xa7, 0xa1, 0xb8, - 0x74, 0xc3, 0x4e, 0xc0, 0xc1, 0x23, 0x32, 0x14, 0x5c, 0x4b, 0x81, 0x7e, - 0xda, 0xb6, 0x14, 0xd4, 0x32, 0xf0, 0x60, 0x22, 0xbb, 0xec, 0x04, 0x07, - 0x7c, 0xbb, 0xa5, 0xe6, 0xbf, 0x41, 0xa3, 0x80, 0x66, 0x0e, 0x46, 0x69, - 0xa2, 0x55, 0x4c, 0x84, 0xa6, 0x49, 0x10, 0x8a, 0x02, 0xdf, 0xd1, 0x44, - 0x68, 0x11, 0x66, 0x7e, 0x5b, 0x45, 0xfd, 0x96, 0x9a, 0x7a, 0x7e, 0x27, - 0x45, 0x3d, 0xbf, 0x9b, 0x9e, 0x4e, 0x1a, 0xb9, 0xaf, 0xa8, 0xe7, 0x0f, - 0xa8, 0xa7, 0xe3, 0xf8, 0x46, 0xb3, 0x99, 0xa5, 0x7e, 0x07, 0xf0, 0x63, - 0x13, 0xdb, 0x16, 0xf4, 0xb2, 0x62, 0x32, 0x11, 0x80, 0x6c, 0x7e, 0x2b, - 0xa2, 0xb7, 0x54, 0xbb, 0xc6, 0x6d, 0xc3, 0x34, 0x92, 0xd9, 0x82, 0x74, - 0x08, 0x2f, 0x3c, 0x61, 0x59, 0x60, 0xc2, 0x1d, 0x44, 0x10, 0x29, 0x3d, - 0xa1, 0xc6, 0xa2, 0x0c, 0x47, 0x60, 0x0b, 0x78, 0x31, 0xa8, 0xa4, 0x6c, - 0x96, 0xa0, 0xe7, 0xa2, 0xb8, 0xf2, 0xbd, 0x2f, 0x55, 0x46, 0x20, 0xba, - 0xc1, 0x70, 0xd5, 0xc3, 0x71, 0xcf, 0xe6, 0x96, 0x39, 0xea, 0x71, 0x60, - 0x67, 0x6e, 0xd4, 0x93, 0xfd, 0x33, 0xb8, 0x59, 0x57, 0x5e, 0xb1, 0x20, - 0xa6, 0x39, 0xfc, 0x1d, 0x28, 0xba, 0xb5, 0xbe, 0x18, 0xc8, 0xa1, 0x2e, - 0x56, 0x05, 0x08, 0x77, 0xf3, 0xde, 0x99, 0xce, 0xab, 0xbe, 0x39, 0xc2, - 0x66, 0x11, 0xcc, 0x33, 0x4f, 0x50, 0x0b, 0x07, 0xc8, 0xc6, 0xe1, 0xb6, - 0x19, 0x86, 0x5f, 0xe2, 0x9a, 0xd7, 0x2a, 0x15, 0xd9, 0xc8, 0xdd, 0xb4, - 0x15, 0xd0, 0xd1, 0x0b, 0x38, 0x54, 0x74, 0xcf, 0x9f, 0x0f, 0xa2, 0x6f, - 0x0d, 0xaf, 0x6c, 0xeb, 0x3a, 0xa0, 0x2e, 0x6b, 0xca, 0x1c, 0x63, 0x9d, - 0x50, 0x1b, 0x38, 0x5b, 0x6e, 0x81, 0x43, 0x80, 0x56, 0x61, 0xd5, 0x45, - 0x4e, 0xfa, 0x46, 0x1d, 0x33, 0x00, 0x3f, 0xa5, 0xd1, 0x24, 0x92, 0x13, - 0x0c, 0x24, 0x7d, 0xb1, 0xc0, 0xb6, 0x7a, 0xc8, 0x3b, 0xeb, 0x3a, 0x9d, - 0xcd, 0x19, 0xcc, 0x0a, 0xab, 0xdf, 0x70, 0xc9, 0xcd, 0xf5, 0x56, 0x81, - 0x9e, 0x6e, 0xd4, 0xe8, 0x27, 0x9d, 0x09, 0x70, 0x9d, 0xf4, 0xa6, 0xc1, - 0xd7, 0x28, 0x96, 0x42, 0x3d, 0xe3, 0xa5, 0xc2, 0x98, 0xcd, 0xcd, 0xab, - 0x8c, 0x5a, 0xda, 0x25, 0x75, 0x00, 0x35, 0x49, 0xb8, 0x8a, 0xb6, 0xa6, - 0x10, 0xc3, 0x53, 0x14, 0xe0, 0x9c, 0x7b, 0x42, 0x68, 0x37, 0x66, 0xe6, - 0x21, 0x23, 0xac, 0x71, 0x7b, 0x68, 0x3f, 0x8d, 0x73, 0xd1, 0xcc, 0xa9, - 0xbb, 0x6a, 0x4a, 0xe0, 0x40, 0x97, 0x45, 0x49, 0x1a, 0xd4, 0x13, 0xd9, - 0xbb, 0xe5, 0xaa, 0x2c, 0x77, 0x84, 0x4c, 0x32, 0xc3, 0xde, 0xe1, 0x4a, - 0xd9, 0x25, 0xad, 0x74, 0x89, 0x3e, 0x30, 0x92, 0x0f, 0x25, 0xbe, 0xb5, - 0xb4, 0x15, 0xca, 0x78, 0x89, 0xf6, 0xf8, 0xba, 0x7e, 0xbc, 0x26, 0xb8, - 0xb9, 0x76, 0x5a, 0xcb, 0x01, 0xba, 0x66, 0x63, 0x8d, 0x5f, 0x8c, 0xb9, - 0x6a, 0x88, 0xe2, 0x6e, 0xea, 0xd3, 0x67, 0x43, 0x8a, 0x52, 0x2e, 0x35, - 0xdc, 0x11, 0xd1, 0x78, 0xfd, 0x40, 0x8e, 0x3f, 0x15, 0x7d, 0x12, 0xe8, - 0xa2, 0x31, 0x46, 0xa4, 0x50, 0x93, 0x5b, 0xaf, 0x02, 0xf1, 0x51, 0x2b, - 0xb4, 0xac, 0xb2, 0x75, 0x69, 0x7f, 0xc2, 0x5a, 0x4d, 0x4c, 0x1e, 0x4e, - 0xcb, 0x40, 0x01, 0x05, 0x95, 0x5d, 0xd6, 0x94, 0x9c, 0x6f, 0xb0, 0xc1, - 0xb8, 0x2b, 0x88, 0x6d, 0x3a, 0x85, 0x08, 0x99, 0xae, 0x97, 0x24, 0x95, - 0x15, 0x7a, 0x99, 0xf4, 0x94, 0x59, 0xcc, 0xf6, 0x92, 0xd4, 0x18, 0xd0, - 0xf7, 0x12, 0x92, 0x18, 0xce, 0x41, 0x75, 0x61, 0x12, 0xe5, 0x4d, 0xb4, - 0xe6, 0x8b, 0x17, 0x31, 0xf2, 0x03, 0xba, 0xd8, 0xbf, 0xa1, 0x92, 0x88, - 0x6d, 0x55, 0xb3, 0xc5, 0x2d, 0x51, 0x1f, 0xfd, 0x01, 0x21, 0x19, 0x52, - 0x07, 0xee, 0x06, 0xb4, 0x73, 0x1f, 0x43, 0x7e, 0x5e, 0xc6, 0x70, 0x32, - 0x25, 0x87, 0xb4, 0xd8, 0xb9, 0xdc, 0x2f, 0x9b, 0x6c, 0x21, 0xfc, 0x71, - 0xdf, 0xfe, 0x75, 0xf7, 0xf9, 0x16, 0xef, 0xc0, 0xd5, 0xd5, 0xd5, 0xc0, - 0x3e, 0xe0, 0x79, 0x86, 0x6a, 0xc6, 0x37, 0x80, 0x87, 0xe0, 0xbf, 0xe6, - 0xb9, 0xc1, 0x32, 0xdc, 0xf8, 0x26, 0xbe, 0x8b, 0x04, 0xb2, 0x1b, 0x81, - 0x6b, 0x51, 0x39, 0x2c, 0x6f, 0x48, 0xfd, 0xc2, 0x57, 0xa0, 0xba, 0xf5, - 0xb5, 0xbc, 0x78, 0x4f, 0x7f, 0xe5, 0x08, 0xea, 0xda, 0x9b, 0xe3, 0xf7, - 0x27, 0x6f, 0x8f, 0x7f, 0xfc, 0xc7, 0xda, 0x86, 0xd5, 0x7d, 0xb1, 0x8e, - 0xe5, 0x11, 0x6a, 0xbb, 0x82, 0xf3, 0x53, 0x06, 0x12, 0x80, 0xb0, 0xfc, - 0x37, 0xb0, 0x0c, 0x59, 0x00, 0xe7, 0x0f, 0x0b, 0x39, 0x6a, 0xd8, 0x84, - 0x53, 0x32, 0x05, 0x98, 0x34, 0xb8, 0x3a, 0x3a, 0x75, 0x20, 0xe7, 0x5e, - 0x0f, 0xff, 0xd4, 0x8f, 0x8e, 0x02, 0x75, 0x26, 0x47, 0x27, 0x4e, 0xfb, - 0x60, 0x5b, 0x6e, 0x47, 0x7e, 0x0b, 0x0f, 0x39, 0xb3, 0x95, 0xd8, 0x7c, - 0x70, 0xf4, 0xe2, 0xad, 0xef, 0x79, 0x90, 0xc8, 0x94, 0xbb, 0x09, 0xa4, - 0xf2, 0xef, 0x52, 0xc5, 0xa3, 0x3a, 0x46, 0xaa, 0x29, 0xb6, 0x3e, 0xa5, - 0x0c, 0x1d, 0xf6, 0x9b, 0xd0, 0xdc, 0x9e, 0x98, 0xcf, 0xd2, 0x06, 0xbc, - 0x39, 0x5c, 0xdc, 0x9e, 0x82, 0x5e, 0x0c, 0x81, 0xf2, 0x7a, 0xa8, 0x87, - 0xa9, 0x63, 0xc5, 0x14, 0xdd, 0x2b, 0xde, 0x7b, 0x16, 0x82, 0x10, 0xc3, - 0xfc, 0x09, 0xd8, 0x63, 0xec, 0x04, 0xe9, 0x06, 0xa5, 0xa2, 0xde, 0xf6, - 0x97, 0x3b, 0x83, 0xed, 0xa7, 0xcf, 0x41, 0x10, 0x6f, 0x6d, 0x6e, 0x3f, - 0xed, 0x35, 0xa8, 0x14, 0x6f, 0x66, 0x32, 0xf6, 0x14, 0x50, 0xdd, 0x36, - 0xad, 0xd5, 0xe1, 0x1e, 0x38, 0x32, 0x50, 0xaf, 0xa3, 0x88, 0x5f, 0xf9, - 0x56, 0xa3, 0xb3, 0xcd, 0xef, 0x96, 0x3a, 0x26, 0x93, 0xf7, 0xf0, 0xd6, - 0xc8, 0xa7, 0xf7, 0x56, 0x63, 0xc8, 0x1f, 0xfb, 0x9a, 0x6c, 0xd8, 0xe0, - 0xc6, 0xf5, 0x74, 0x16, 0x5f, 0x0d, 0x6f, 0x48, 0xbf, 0x3d, 0x7b, 0xf5, - 0x1a, 0xe4, 0x11, 0xfa, 0xad, 0x04, 0xf1, 0xb5, 0xbe, 0x9e, 0xa6, 0xf2, - 0x36, 0xe9, 0xb4, 0x9c, 0xf2, 0x75, 0x41, 0xb1, 0xd2, 0x30, 0xe6, 0x49, - 0x2b, 0xcb, 0xd4, 0x80, 0x2b, 0x4b, 0x80, 0x5a, 0x5a, 0x77, 0x46, 0x38, - 0x22, 0x25, 0x47, 0xba, 0xed, 0x87, 0x43, 0x5e, 0x37, 0x34, 0x28, 0x3f, - 0x82, 0x70, 0x21, 0x74, 0xbb, 0x8b, 0x94, 0x5b, 0x10, 0xde, 0xe4, 0x63, - 0xe2, 0x8f, 0x7d, 0x88, 0x04, 0x51, 0x19, 0xf9, 0xd3, 0x70, 0x04, 0x79, - 0x3f, 0x1b, 0x69, 0xa1, 0xf0, 0x83, 0xf6, 0x71, 0x99, 0x22, 0x27, 0x3d, - 0x1e, 0x3e, 0x1f, 0x3f, 0xaf, 0x89, 0xe4, 0x1b, 0xfd, 0xae, 0xf9, 0xab, - 0x20, 0x7e, 0x18, 0x59, 0x61, 0xc0, 0x60, 0xb3, 0xf3, 0x9c, 0x6d, 0xf4, - 0xd7, 0xd9, 0xa8, 0x2c, 0xaa, 0x62, 0x62, 0x7a, 0xf6, 0x69, 0xb8, 0xed, - 0xe8, 0xe8, 0x34, 0xba, 0x4a, 0x87, 0x8a, 0x6f, 0x3d, 0xf0, 0x73, 0x34, - 0x49, 0x8a, 0x62, 0x0a, 0x71, 0x99, 0xa5, 0x35, 0x1e, 0xab, 0xc2, 0x32, - 0x61, 0x13, 0x44, 0x7c, 0x27, 0x95, 0x1e, 0x50, 0x14, 0xf0, 0x80, 0x21, - 0x47, 0x53, 0x56, 0x3c, 0xe7, 0xa9, 0x27, 0x7d, 0xe6, 0x92, 0x11, 0x61, - 0xd4, 0x46, 0x27, 0xb3, 0x9e, 0x9a, 0x13, 0x48, 0x26, 0x56, 0x56, 0xe2, - 0xd1, 0xa1, 0x51, 0x2f, 0x29, 0x18, 0x1f, 0x30, 0x6d, 0xa9, 0x98, 0x78, - 0x28, 0x2a, 0x02, 0xc7, 0x60, 0x54, 0x5e, 0x94, 0x45, 0x43, 0x94, 0x29, - 0xe3, 0xa2, 0xa4, 0x02, 0x2f, 0x82, 0xd1, 0xe4, 0x5f, 0xa6, 0xf9, 0xa8, - 0x58, 0x94, 0x88, 0xca, 0x82, 0xeb, 0xbb, 0x06, 0x2d, 0xc2, 0x53, 0x04, - 0x0a, 0x71, 0xab, 0xe0, 0x36, 0x5b, 0xeb, 0x93, 0x70, 0xfe, 0xe6, 0x8b, - 0x21, 0x62, 0x72, 0x93, 0x4e, 0x60, 0xf5, 0x49, 0xf7, 0xa0, 0x42, 0xde, - 0x6e, 0x3d, 0x0f, 0x0b, 0x62, 0x8c, 0x17, 0x0f, 0x0e, 0xe7, 0x45, 0x76, - 0x1e, 0xc2, 0x13, 0x36, 0xb5, 0x3a, 0xd4, 0xd6, 0xc3, 0x9a, 0x78, 0xb4, - 0x22, 0x51, 0x8a, 0x4b, 0x91, 0x2f, 0x4d, 0x3a, 0xe0, 0x8e, 0x64, 0xc1, - 0x78, 0x4a, 0x88, 0xfa, 0x3a, 0x2e, 0xd4, 0x03, 0xdd, 0xa6, 0x4f, 0xbb, - 0x4a, 0xcd, 0x4f, 0x30, 0x37, 0xc7, 0xfa, 0x27, 0x8c, 0xb9, 0x8d, 0xd8, - 0x5f, 0xb9, 0xba, 0x24, 0x6e, 0xf4, 0x46, 0xb5, 0x1c, 0x14, 0x77, 0x6c, - 0x56, 0xcf, 0x29, 0xe1, 0x26, 0xd1, 0x47, 0x1d, 0x4f, 0xd2, 0xb7, 0x98, - 0x8e, 0x59, 0x21, 0xda, 0x38, 0x55, 0xdc, 0x65, 0x01, 0x05, 0xfe, 0x60, - 0x27, 0x1e, 0xa6, 0x60, 0xf4, 0x95, 0xd1, 0x5e, 0x8d, 0x86, 0xd5, 0x2d, - 0x01, 0xda, 0x22, 0xe9, 0x7a, 0xef, 0x54, 0x5d, 0x7f, 0xcb, 0xc3, 0x9c, - 0x91, 0x79, 0x86, 0xd4, 0x72, 0x8c, 0x80, 0x4b, 0xad, 0xe1, 0x76, 0x06, - 0x5b, 0x1d, 0x20, 0x6d, 0xc4, 0x63, 0x1a, 0x63, 0x28, 0xa3, 0x70, 0x42, - 0x49, 0x41, 0x2a, 0x77, 0x43, 0x4b, 0xb6, 0x58, 0x40, 0x74, 0x5a, 0x56, - 0x5b, 0x1a, 0xa8, 0x08, 0x88, 0x64, 0x2e, 0x1a, 0x83, 0x5f, 0x38, 0x80, - 0x4e, 0xeb, 0xd2, 0xcd, 0x8a, 0xd6, 0x8c, 0xa5, 0x50, 0xf5, 0x57, 0x63, - 0xb9, 0xd2, 0xa8, 0x4b, 0x6b, 0x15, 0x4a, 0x4d, 0xe6, 0xe4, 0x8b, 0x3a, - 0x1a, 0x51, 0x23, 0xa6, 0x73, 0x4e, 0x71, 0x7e, 0xfb, 0xf2, 0xa0, 0x35, - 0xdc, 0xd3, 0x67, 0x4f, 0xb6, 0xc2, 0x99, 0xe6, 0xcd, 0x53, 0xfa, 0xfd, - 0x51, 0xb4, 0x9a, 0xf3, 0xf7, 0x66, 0x2f, 0xdf, 0x7f, 0x39, 0xf8, 0xf6, - 0xc9, 0x24, 0x7e, 0x3c, 0xd8, 0xfe, 0xcf, 0x7f, 0xbe, 0xee, 0x7d, 0x4a, - 0x09, 0x43, 0x83, 0x4e, 0x1b, 0x94, 0x49, 0xbe, 0x35, 0x6c, 0x4e, 0x10, - 0xed, 0xc1, 0x1f, 0x4b, 0x7b, 0x09, 0x9b, 0xc3, 0x55, 0xc3, 0xc8, 0x66, - 0x85, 0x1a, 0xd3, 0x86, 0x03, 0x7b, 0x06, 0x55, 0xc2, 0x0b, 0xe5, 0x61, - 0x23, 0x3d, 0xa9, 0x20, 0xf7, 0xe2, 0x29, 0x44, 0x0f, 0x8d, 0xa8, 0x4b, - 0x99, 0x86, 0x35, 0xaf, 0x33, 0x03, 0xf3, 0x24, 0x4f, 0x3a, 0x2b, 0xa9, - 0x6c, 0xf2, 0x31, 0xaa, 0x92, 0xef, 0xde, 0xbe, 0xe2, 0x7c, 0x30, 0x13, - 0xa4, 0xef, 0x08, 0x58, 0x6a, 0x76, 0xb0, 0x9b, 0x60, 0x44, 0x31, 0xc1, - 0x05, 0x5c, 0x9d, 0xa9, 0x24, 0x0e, 0x97, 0x70, 0xe8, 0x36, 0x57, 0x29, - 0xc8, 0xd7, 0xa5, 0x99, 0x8b, 0x2a, 0xf7, 0x58, 0x88, 0xee, 0xae, 0xcf, - 0x64, 0x0f, 0x53, 0xbc, 0x53, 0xdb, 0x5d, 0x48, 0x92, 0x99, 0x97, 0x8a, - 0x83, 0x59, 0xcb, 0xd2, 0xba, 0x28, 0x8e, 0x39, 0xcc, 0x18, 0x6b, 0x01, - 0xb0, 0x36, 0xb5, 0xe9, 0xa8, 0x9b, 0x70, 0x4e, 0xf6, 0x33, 0xd4, 0x4d, - 0x38, 0xb3, 0xf7, 0xea, 0xd9, 0xbc, 0x07, 0xa7, 0xbd, 0x1a, 0xfd, 0x7a, - 0xc4, 0x41, 0x14, 0xfc, 0x9f, 0x7d, 0x27, 0x06, 0xed, 0xc4, 0x2c, 0x07, - 0xd2, 0xba, 0x3d, 0x58, 0x9c, 0xd7, 0x8c, 0xcc, 0xb9, 0x04, 0x16, 0xec, - 0xf0, 0xf6, 0x43, 0x89, 0x08, 0xdd, 0xf2, 0x04, 0xf0, 0x10, 0x7e, 0xc8, - 0xed, 0xde, 0x50, 0xd5, 0x63, 0xf8, 0xf5, 0xc0, 0x74, 0x17, 0x2a, 0xd5, - 0x89, 0xf7, 0xaf, 0x7f, 0xfb, 0x6e, 0xe9, 0x9f, 0x7e, 0xa1, 0xa8, 0x72, - 0x8a, 0x2a, 0x86, 0x11, 0xbb, 0xaa, 0x5a, 0x54, 0x0d, 0xd5, 0x85, 0x51, - 0xf8, 0xf1, 0x48, 0x24, 0xbf, 0x33, 0xd0, 0x30, 0x8e, 0x8c, 0x52, 0x32, - 0xb9, 0xd6, 0xfe, 0xb0, 0x26, 0x39, 0x89, 0x9a, 0x52, 0x25, 0x96, 0x9b, - 0x28, 0xfc, 0xb2, 0x6e, 0xa5, 0x45, 0x4a, 0x73, 0x4d, 0xfc, 0xfe, 0xc6, - 0x62, 0x03, 0x53, 0x09, 0x2f, 0xa1, 0x3d, 0x3b, 0x38, 0x53, 0xd2, 0x94, - 0x5b, 0x3b, 0x92, 0x6a, 0x1e, 0x2a, 0x2d, 0x8f, 0x91, 0x16, 0x3c, 0x5f, - 0x31, 0xb9, 0x3e, 0x06, 0x0c, 0xe5, 0x9e, 0xe5, 0x1d, 0x29, 0x83, 0x3d, - 0x24, 0x05, 0xa0, 0x84, 0x7f, 0x81, 0x76, 0xd6, 0x07, 0x13, 0xf3, 0xdf, - 0x6e, 0xc2, 0x5d, 0x0f, 0x5d, 0xc0, 0x3d, 0x5c, 0xfc, 0xfb, 0x3f, 0x6c, - 0x63, 0x47, 0xf5, 0x5e, 0x7b, 0x10, 0xc6, 0xd7, 0x31, 0xa4, 0x6c, 0xdd, - 0x09, 0xe8, 0xcb, 0xbf, 0x69, 0x4a, 0xc4, 0x5f, 0xef, 0xa3, 0x4f, 0xe5, - 0xdf, 0x03, 0xfc, 0xf3, 0xa7, 0xed, 0xf8, 0xc9, 0x2f, 0xd6, 0x3c, 0xc3, - 0xa9, 0xff, 0xb0, 0xfd, 0xfe, 0x0f, 0x3b, 0xbd, 0x10, 0x96, 0xa9, 0xd3, - 0x90, 0xc2, 0xc1, 0x85, 0xa8, 0x08, 0x37, 0x40, 0x54, 0xa9, 0xa4, 0x6d, - 0x44, 0x13, 0x03, 0xf2, 0xcf, 0x11, 0xb3, 0x51, 0x5b, 0xb0, 0x22, 0xd2, - 0x8b, 0xcd, 0x20, 0x14, 0x5e, 0x15, 0xfc, 0xb2, 0x30, 0x26, 0x86, 0x14, - 0xee, 0x00, 0xd0, 0x64, 0x6e, 0x75, 0xed, 0xe0, 0xad, 0x62, 0x1f, 0x29, - 0xed, 0xaa, 0xd3, 0xb1, 0x27, 0xf0, 0xb1, 0x49, 0x12, 0x35, 0x12, 0x18, - 0x8b, 0x68, 0x38, 0x8c, 0x9c, 0xbc, 0xc5, 0x2f, 0x3c, 0x17, 0xca, 0x58, - 0x98, 0x3f, 0x7b, 0x70, 0xd5, 0x21, 0x00, 0x2f, 0xba, 0xc9, 0xb7, 0x42, - 0xc3, 0x0e, 0x34, 0x26, 0xc9, 0x67, 0xcf, 0x29, 0x47, 0x9d, 0x5a, 0x4c, - 0xdc, 0x49, 0xf8, 0x6b, 0x81, 0xc4, 0x68, 0x72, 0x9e, 0xe9, 0x67, 0x7a, - 0x1f, 0x50, 0x4d, 0x24, 0xc0, 0x51, 0xfc, 0x8b, 0xaf, 0x56, 0x24, 0x43, - 0xb0, 0x64, 0x1b, 0x1c, 0x9c, 0xb6, 0x83, 0x38, 0xca, 0xd0, 0x76, 0x52, - 0x4c, 0xaa, 0xf0, 0x7e, 0xb8, 0x3b, 0xe1, 0x82, 0x05, 0xf1, 0x3e, 0xd1, - 0xde, 0x2c, 0x89, 0xb3, 0x71, 0x6b, 0x5b, 0x97, 0x49, 0xdb, 0xe2, 0x4d, - 0xc9, 0x10, 0xb1, 0x85, 0xe6, 0x22, 0x10, 0xda, 0x92, 0x88, 0xba, 0x03, - 0x8d, 0xaf, 0x81, 0xa5, 0x71, 0x21, 0x8d, 0x69, 0xce, 0xad, 0x21, 0x02, - 0x95, 0x8c, 0x55, 0xb4, 0x16, 0xaf, 0x45, 0xeb, 0x4e, 0xe6, 0xee, 0x38, - 0xa9, 0x2e, 0x36, 0xbe, 0xf0, 0xf3, 0xfd, 0xc5, 0xab, 0x63, 0xf9, 0x99, - 0x70, 0x2f, 0x4f, 0xa6, 0x16, 0x52, 0xfb, 0x4a, 0x8e, 0x1d, 0x8b, 0x1d, - 0x1d, 0x0d, 0x8b, 0x71, 0x46, 0x8d, 0xd2, 0xaf, 0xc5, 0xa5, 0x6e, 0x41, - 0x31, 0xac, 0x50, 0xf5, 0x70, 0x7e, 0x36, 0xc7, 0xe9, 0xe5, 0x66, 0xbe, - 0x98, 0x4e, 0x77, 0x6f, 0xde, 0x6b, 0xd8, 0x59, 0xf3, 0xb8, 0x57, 0xa1, - 0xc2, 0x51, 0x02, 0xa9, 0x52, 0xb9, 0xdd, 0x60, 0x30, 0x8e, 0x97, 0x60, - 0xec, 0xb2, 0xfd, 0x07, 0x4b, 0x31, 0x8e, 0x8b, 0xe8, 0x96, 0x69, 0x26, - 0x77, 0xe3, 0x83, 0xf7, 0xc3, 0xd8, 0x56, 0x5c, 0xb9, 0xfe, 0x6e, 0x27, - 0x94, 0xd7, 0xbc, 0x54, 0x80, 0x7b, 0x29, 0x64, 0x81, 0xf4, 0x31, 0x62, - 0x28, 0x46, 0xae, 0xdf, 0x94, 0x9b, 0xe4, 0xaa, 0xae, 0x9a, 0x32, 0x1d, - 0x67, 0xb3, 0x19, 0xd0, 0xa3, 0x5f, 0x90, 0xce, 0x59, 0x72, 0x63, 0xc2, - 0xd9, 0x88, 0x4c, 0x82, 0xb5, 0x89, 0xc0, 0x35, 0x53, 0x2a, 0x34, 0x65, - 0x5f, 0xcb, 0x31, 0x7c, 0x51, 0x99, 0x19, 0xb4, 0x34, 0xe9, 0x2f, 0xc4, - 0xa5, 0x4d, 0xa8, 0xbd, 0x51, 0x8c, 0x19, 0x54, 0x45, 0x02, 0x8a, 0xb6, - 0x99, 0x3a, 0x5c, 0x46, 0xa5, 0x33, 0x7b, 0x99, 0xcc, 0xc0, 0xc9, 0x46, - 0xa9, 0x0e, 0x46, 0x50, 0x45, 0x57, 0x49, 0xa6, 0x31, 0x3b, 0x69, 0xee, - 0x84, 0x4d, 0x18, 0x6c, 0xcc, 0x50, 0x08, 0x37, 0x84, 0x43, 0x90, 0x58, - 0x9c, 0xc3, 0x8f, 0x48, 0xd6, 0x94, 0x89, 0xca, 0x5d, 0x19, 0x05, 0x73, - 0xd6, 0xcd, 0x20, 0xfa, 0x9c, 0xed, 0x5e, 0x1b, 0xf1, 0x33, 0xff, 0x10, - 0xa3, 0x7b, 0xc7, 0x6b, 0xf4, 0xe7, 0x58, 0x55, 0x9b, 0x0d, 0xac, 0x32, - 0xfe, 0xaf, 0x65, 0x77, 0x65, 0x7b, 0xe9, 0x45, 0x5a, 0xa9, 0x16, 0xc0, - 0x4e, 0x3e, 0x4b, 0x3e, 0x36, 0x23, 0xd9, 0xcf, 0x9b, 0x91, 0x6c, 0xf7, - 0xc1, 0x20, 0xd2, 0x12, 0x37, 0xd1, 0xa8, 0x3e, 0xf0, 0x49, 0x8e, 0x8b, - 0xe0, 0xa5, 0x60, 0x4d, 0xb6, 0xb9, 0x12, 0xe9, 0x7f, 0x16, 0xc6, 0x26, - 0xc0, 0x5e, 0x6f, 0x25, 0x76, 0x43, 0x77, 0x11, 0xe1, 0xa4, 0x03, 0x05, - 0x6a, 0x07, 0x86, 0x7a, 0x79, 0xce, 0x2a, 0xc3, 0xf3, 0x4d, 0x72, 0xef, - 0xae, 0x13, 0xa2, 0xc7, 0xef, 0x45, 0x9a, 0x8e, 0x0d, 0x17, 0xc2, 0x9a, - 0x91, 0x54, 0xa7, 0x2a, 0x0a, 0xfb, 0x0a, 0xda, 0x9b, 0xfd, 0xfb, 0xfb, - 0x0a, 0x1a, 0xd3, 0x63, 0xa6, 0x6a, 0x07, 0x3d, 0x4e, 0x56, 0x40, 0x09, - 0x6e, 0x22, 0x7e, 0x34, 0x28, 0xed, 0x69, 0x83, 0xd2, 0x1a, 0x0f, 0x76, - 0xd7, 0x1c, 0x0b, 0x54, 0x25, 0xb5, 0x63, 0xb1, 0x54, 0x80, 0x00, 0xea, - 0x86, 0xc0, 0x2b, 0x89, 0x11, 0xf1, 0x01, 0x06, 0x34, 0xba, 0x32, 0x3d, - 0xc7, 0x4e, 0x78, 0xe8, 0xca, 0xc2, 0x56, 0x2d, 0x20, 0x97, 0xf3, 0xb4, - 0xfc, 0xef, 0xc3, 0xbf, 0xfe, 0xab, 0xef, 0xd2, 0x82, 0x9f, 0x00, 0xf0, - 0x69, 0x2d, 0x93, 0x7c, 0xf4, 0x95, 0xd5, 0x88, 0xe3, 0x21, 0x38, 0x94, - 0x2d, 0xd4, 0x22, 0xee, 0xd4, 0x68, 0x7d, 0xbd, 0x84, 0x64, 0x62, 0xea, - 0x7f, 0xb3, 0x37, 0xbf, 0x28, 0x93, 0x2a, 0xf5, 0x51, 0x66, 0x4f, 0xbf, - 0x8f, 0x28, 0xd7, 0xe6, 0x04, 0x9e, 0xe2, 0x67, 0x8c, 0x01, 0x20, 0xed, - 0xec, 0xa3, 0x0f, 0xe9, 0x75, 0xd8, 0xd1, 0x41, 0x23, 0xff, 0x2e, 0xad, - 0xec, 0x69, 0x26, 0x2e, 0x9d, 0xa5, 0xe4, 0xce, 0xeb, 0x3b, 0xc0, 0xea, - 0xd0, 0x6b, 0xad, 0xfa, 0xd3, 0xc6, 0x36, 0xd5, 0x17, 0x71, 0x52, 0xc5, - 0x1e, 0xb3, 0x3d, 0x6b, 0xb7, 0x84, 0xc1, 0xc0, 0x1d, 0x75, 0x42, 0xfe, - 0xe7, 0x02, 0x1b, 0x12, 0x53, 0xab, 0xcd, 0xcd, 0xc1, 0x60, 0x13, 0xad, - 0xe3, 0x4d, 0xf8, 0x8f, 0x2d, 0xe1, 0x26, 0x4f, 0x59, 0x6b, 0x38, 0xb2, - 0xe0, 0x71, 0x32, 0x6a, 0x9f, 0x87, 0x35, 0x30, 0x98, 0xf8, 0xc0, 0x19, - 0xfb, 0xd5, 0x3f, 0x17, 0x60, 0x4b, 0x70, 0x65, 0xe6, 0x2c, 0x2d, 0xcf, - 0x35, 0x99, 0xd8, 0xba, 0x56, 0x3d, 0x6d, 0x5f, 0x4b, 0x62, 0x2a, 0x8a, - 0x29, 0x8a, 0xff, 0xc0, 0x05, 0xf7, 0x65, 0x50, 0x36, 0xea, 0x6b, 0x93, - 0xd5, 0x9a, 0x01, 0x42, 0x8d, 0xa8, 0x92, 0xa5, 0xed, 0x16, 0x9d, 0x0d, - 0xb9, 0xf7, 0x3a, 0x64, 0x3b, 0xf4, 0xea, 0x84, 0x60, 0x16, 0x15, 0x38, - 0x7c, 0x3c, 0x05, 0xf8, 0xff, 0x69, 0x3d, 0xda, 0xa4, 0x40, 0xc8, 0x78, - 0x69, 0x77, 0x17, 0x2a, 0x79, 0x8d, 0xd9, 0x4f, 0xd8, 0xa0, 0x84, 0x0c, - 0x58, 0xdd, 0x78, 0xbe, 0x18, 0x22, 0xc1, 0xec, 0x5d, 0xd0, 0x89, 0x7c, - 0x1d, 0x4c, 0x50, 0x6b, 0x56, 0x11, 0xb3, 0x73, 0x88, 0x1d, 0x06, 0x86, - 0xd1, 0x69, 0x5c, 0x0b, 0x6f, 0x11, 0x57, 0x45, 0xc0, 0xcb, 0x3e, 0x6c, - 0x1d, 0x4d, 0xc2, 0x60, 0x31, 0x0c, 0x94, 0xcc, 0x01, 0x87, 0x79, 0x6a, - 0x8a, 0xa4, 0x55, 0x03, 0x65, 0xbc, 0x19, 0x0a, 0x99, 0xd1, 0x68, 0xe4, - 0xfd, 0xf5, 0x10, 0x50, 0x73, 0x4e, 0x6b, 0x31, 0xe9, 0x39, 0xb2, 0x0a, - 0x5c, 0x04, 0x9c, 0xc4, 0xc9, 0xe1, 0x6b, 0x24, 0xb1, 0x17, 0x87, 0x6f, - 0xc5, 0x81, 0x4f, 0x29, 0x2f, 0xe8, 0x4a, 0x61, 0xef, 0x49, 0x5b, 0x3f, - 0x98, 0x50, 0xf0, 0xf0, 0xe9, 0x63, 0x0a, 0xf1, 0xd1, 0x45, 0xbf, 0x48, - 0x76, 0x9e, 0x3c, 0x95, 0x65, 0x6b, 0x73, 0x6e, 0xf2, 0x85, 0xad, 0xf1, - 0xaf, 0x36, 0x37, 0x39, 0x63, 0x04, 0x43, 0xd6, 0x9e, 0xa9, 0x4d, 0x39, - 0x4a, 0xf8, 0xec, 0x5f, 0xd6, 0xc2, 0x28, 0x4e, 0x1a, 0xe5, 0xe1, 0xc4, - 0x10, 0x4c, 0x91, 0x26, 0xb4, 0xa9, 0x57, 0x8e, 0x26, 0xad, 0x30, 0x90, - 0x12, 0x69, 0xd1, 0x26, 0x56, 0x89, 0x07, 0xe0, 0x57, 0xd6, 0x8c, 0x3a, - 0x4d, 0xa9, 0x12, 0xd4, 0x7f, 0x89, 0x04, 0x08, 0x8a, 0x46, 0xed, 0x2e, - 0x01, 0xec, 0xb3, 0xb1, 0x41, 0x15, 0x93, 0xf6, 0xc8, 0xef, 0x97, 0x28, - 0x88, 0x4c, 0x78, 0x1c, 0xce, 0xc0, 0xd2, 0x72, 0xcb, 0xed, 0x45, 0xa6, - 0x05, 0x62, 0x9c, 0x59, 0xc1, 0xc9, 0x4c, 0x8b, 0xa1, 0x87, 0x56, 0xaf, - 0x84, 0x61, 0x38, 0x68, 0x33, 0x25, 0x45, 0xaa, 0xdf, 0x1c, 0xfc, 0x53, - 0xa7, 0xad, 0xe5, 0xd0, 0x2f, 0x20, 0x2d, 0x28, 0x8f, 0x90, 0x11, 0xa8, - 0x0c, 0xb2, 0x3b, 0x67, 0xe1, 0x5e, 0x53, 0x89, 0xda, 0x4d, 0xf2, 0x1b, - 0x76, 0x28, 0xa5, 0xdc, 0x15, 0xd6, 0x20, 0xe5, 0x17, 0xad, 0xf4, 0x34, - 0xf5, 0xbe, 0x22, 0xbd, 0xb7, 0x03, 0xc6, 0x58, 0xe8, 0xec, 0xb4, 0x1a, - 0x92, 0x86, 0x75, 0x06, 0xf1, 0x10, 0xe9, 0x99, 0xaa, 0x5c, 0x08, 0xbc, - 0x9e, 0x11, 0xc1, 0x05, 0xde, 0x9f, 0xf6, 0xdf, 0x6b, 0xd3, 0xee, 0x4b, - 0x1e, 0xa0, 0xdd, 0x4d, 0x24, 0x5c, 0x89, 0x2c, 0x7a, 0x7e, 0x89, 0x63, - 0x58, 0x3f, 0x92, 0x0a, 0x1e, 0xca, 0x77, 0xf9, 0x02, 0x88, 0xa7, 0x1f, - 0x5d, 0x15, 0xd3, 0x09, 0xfe, 0xcc, 0x4d, 0xd7, 0x79, 0x8c, 0x39, 0x4b, - 0xfd, 0x08, 0xc8, 0x7d, 0x8c, 0x04, 0xd6, 0x47, 0xe6, 0x80, 0x9f, 0xd7, - 0xde, 0x20, 0x54, 0x9f, 0x28, 0x84, 0x39, 0x4b, 0x46, 0xc7, 0xa7, 0xa0, - 0xf1, 0x0d, 0x9e, 0xfd, 0x79, 0x33, 0xa3, 0xbf, 0xfd, 0x39, 0x5a, 0x7f, - 0x36, 0x78, 0xf2, 0x78, 0xb0, 0x0d, 0xe3, 0x9c, 0x62, 0xab, 0x82, 0x1c, - 0x24, 0xff, 0x3a, 0xc1, 0xfa, 0x6e, 0x7b, 0xb0, 0xbe, 0x72, 0x65, 0x6e, - 0x58, 0x36, 0x2c, 0x83, 0x17, 0xcd, 0xf6, 0xb9, 0x2c, 0xdc, 0x2e, 0xb3, - 0xf1, 0x05, 0xcf, 0xe8, 0x0b, 0x1e, 0x76, 0xd9, 0xc7, 0x74, 0x80, 0xb8, - 0x79, 0x43, 0xec, 0x84, 0x84, 0x97, 0x8c, 0xb0, 0x9e, 0xf9, 0x33, 0xba, - 0x42, 0x20, 0x0d, 0x16, 0xfa, 0x59, 0x40, 0x17, 0x1b, 0x2b, 0x80, 0xff, - 0xad, 0xe4, 0x1d, 0x6a, 0xbd, 0x6e, 0x78, 0xda, 0x28, 0xdd, 0xde, 0x7e, - 0x3e, 0x7c, 0xb2, 0xfd, 0xfc, 0xcb, 0x67, 0x93, 0xc7, 0x8f, 0x9f, 0xec, - 0x8c, 0x47, 0x6b, 0x2b, 0xea, 0x20, 0xe8, 0x1f, 0x82, 0x51, 0x79, 0xc0, - 0x86, 0xd0, 0xe1, 0xce, 0x6f, 0xe1, 0xd4, 0xa2, 0xa6, 0x9c, 0x29, 0xa9, - 0x55, 0x78, 0x4d, 0x78, 0xf5, 0xcf, 0x76, 0x1e, 0x6d, 0x6f, 0x3e, 0x1d, - 0x3c, 0x1e, 0xec, 0x18, 0x20, 0x28, 0x6e, 0x01, 0x51, 0x13, 0xc6, 0x40, - 0x20, 0x35, 0x98, 0x60, 0x1e, 0xb2, 0x5c, 0x5a, 0xd8, 0x99, 0x9f, 0x50, - 0x60, 0xd0, 0x02, 0x2d, 0x60, 0x53, 0xbb, 0x6d, 0x17, 0x00, 0x98, 0x82, - 0xd7, 0x5e, 0x1e, 0x5c, 0x1e, 0xe3, 0x22, 0x4c, 0x9a, 0x08, 0x1e, 0xd6, - 0x30, 0xfb, 0xe7, 0x22, 0xab, 0xc1, 0xa4, 0xa4, 0xd0, 0x64, 0x3a, 0xc4, - 0x6c, 0xe6, 0xab, 0x8a, 0x0c, 0x5c, 0xd8, 0x81, 0x91, 0x82, 0xfe, 0x04, - 0x2c, 0x0e, 0xe9, 0x5d, 0x41, 0xbc, 0xcd, 0x56, 0xbd, 0x10, 0x4a, 0x6f, - 0x46, 0xf2, 0x0c, 0x9f, 0xa8, 0xb2, 0xaa, 0x06, 0x29, 0x04, 0x3c, 0xfb, - 0xfb, 0xe2, 0x0a, 0x89, 0xa9, 0x4f, 0xc8, 0x1d, 0x81, 0x66, 0x4f, 0xd4, - 0xad, 0x4c, 0x93, 0xa1, 0xb5, 0xff, 0x21, 0xef, 0x1f, 0x65, 0x84, 0x0a, - 0x0a, 0x03, 0x17, 0x1a, 0x72, 0xda, 0x48, 0xe3, 0x83, 0x97, 0x73, 0xca, - 0x59, 0x9a, 0xa0, 0xef, 0x09, 0x11, 0x6b, 0x39, 0x29, 0x16, 0xf7, 0x4f, - 0x2c, 0xf8, 0x0e, 0xac, 0xdd, 0x90, 0x8e, 0xc5, 0xa7, 0x7e, 0x9f, 0x65, - 0xe8, 0xa8, 0x5e, 0xf1, 0xa8, 0x2b, 0xeb, 0x56, 0xb2, 0x18, 0x07, 0x62, - 0x38, 0x1e, 0x47, 0x3d, 0x94, 0x1b, 0xab, 0x86, 0xc0, 0xa5, 0x5d, 0x61, - 0xdf, 0xf6, 0x2a, 0x64, 0xcd, 0xbb, 0x0b, 0x85, 0x58, 0x5f, 0xb8, 0x33, - 0xf9, 0x3f, 0xba, 0x7f, 0xf2, 0xdf, 0xf9, 0x9f, 0x4f, 0xfe, 0x4a, 0xfd, - 0xc9, 0x52, 0xda, 0xd7, 0xbe, 0x12, 0xd1, 0x67, 0x22, 0xff, 0x9d, 0x07, - 0x21, 0xff, 0x9d, 0xbb, 0x91, 0xff, 0xce, 0xfd, 0x91, 0xff, 0xf6, 0xaa, - 0xe4, 0xff, 0xe8, 0x36, 0xe4, 0x0f, 0x94, 0x36, 0x45, 0xa5, 0xb3, 0x41, - 0xfe, 0x8f, 0x57, 0x22, 0x7f, 0xa6, 0x7f, 0xba, 0x00, 0x9d, 0x37, 0x00, - 0xd7, 0xec, 0xe2, 0xbf, 0x83, 0x8e, 0x1c, 0x6e, 0x44, 0x79, 0x7b, 0x3a, - 0x4b, 0x68, 0x50, 0x1d, 0x35, 0x94, 0x0a, 0x32, 0x78, 0x48, 0x32, 0x7b, - 0xf4, 0x20, 0x64, 0xf6, 0xe8, 0x6e, 0x64, 0xf6, 0xe8, 0x41, 0xb8, 0xec, - 0xf6, 0x4d, 0x64, 0x56, 0xa6, 0x9c, 0xda, 0xf8, 0x93, 0xe6, 0x98, 0xc2, - 0x5c, 0xbf, 0x50, 0xcc, 0x6a, 0x17, 0xd5, 0xb9, 0x5f, 0xda, 0xbe, 0x8a, - 0x90, 0x41, 0x7b, 0x7a, 0x7c, 0xf0, 0xd7, 0x53, 0x49, 0x91, 0x94, 0x26, - 0x15, 0x6a, 0x95, 0x70, 0x00, 0x05, 0x0c, 0x55, 0xea, 0x5a, 0xe2, 0x59, - 0xb9, 0x54, 0x64, 0xdb, 0xc8, 0xad, 0x46, 0x20, 0x10, 0x11, 0xbd, 0xd4, - 0x42, 0x5d, 0x5a, 0x04, 0x50, 0xe4, 0x59, 0x47, 0x95, 0xee, 0xc9, 0x3e, - 0xc3, 0xe4, 0x85, 0xc8, 0x4a, 0x4c, 0x7c, 0x3c, 0x77, 0x5e, 0x5c, 0xaf, - 0x2f, 0x4a, 0x42, 0xda, 0xa5, 0x47, 0x37, 0x34, 0x8f, 0x7a, 0xd9, 0xea, - 0x64, 0x5d, 0xdf, 0xa3, 0x67, 0x07, 0x0d, 0xdb, 0xa8, 0x95, 0x04, 0xee, - 0x38, 0xab, 0xcd, 0x6f, 0x35, 0x4b, 0x23, 0xd4, 0xd2, 0x47, 0xfa, 0x27, - 0x3b, 0xfb, 0x8d, 0xef, 0xf9, 0x25, 0x00, 0x1f, 0x19, 0x19, 0x59, 0x32, - 0x10, 0xe0, 0x84, 0xe1, 0xc6, 0xe4, 0x04, 0x21, 0x6b, 0xbe, 0x50, 0xc7, - 0xa8, 0x14, 0x5b, 0xb9, 0x2a, 0x46, 0x1f, 0xaa, 0xc7, 0x30, 0x64, 0x3b, - 0xb8, 0xcf, 0xbf, 0x48, 0xf0, 0x37, 0xf2, 0x8f, 0x27, 0x38, 0x31, 0x01, - 0x49, 0xf0, 0x3f, 0x2f, 0xe8, 0xdf, 0x38, 0xa5, 0x36, 0x05, 0x76, 0xb2, - 0xa7, 0x46, 0xc1, 0x8d, 0x56, 0xe1, 0xc4, 0xae, 0x5c, 0x6e, 0xce, 0xf2, - 0xa6, 0xb0, 0x4d, 0x64, 0xed, 0x37, 0x33, 0x80, 0xa9, 0x1c, 0x66, 0x17, - 0xce, 0x11, 0x0c, 0x43, 0xe3, 0x3e, 0xee, 0xcc, 0xe5, 0xe2, 0x0a, 0x62, - 0x4d, 0xad, 0x11, 0xbb, 0xc3, 0x4c, 0x22, 0xb9, 0x36, 0xee, 0x01, 0xf4, - 0x23, 0xea, 0x08, 0xe1, 0x63, 0xb3, 0x2d, 0x66, 0xc6, 0x05, 0xbd, 0xbd, - 0xf5, 0xdc, 0x0f, 0x2c, 0xbc, 0x53, 0x6c, 0x58, 0x93, 0x3e, 0xcb, 0xb5, - 0x75, 0x0a, 0x40, 0x6f, 0xcc, 0x97, 0xc0, 0xa4, 0x98, 0x84, 0x14, 0x70, - 0xf1, 0x8d, 0x53, 0xf6, 0x94, 0x60, 0xbe, 0x36, 0xec, 0x83, 0x70, 0x36, - 0xc1, 0x82, 0x93, 0xca, 0x3b, 0xf6, 0x9f, 0x0a, 0xa4, 0x1b, 0xe2, 0x94, - 0x71, 0x09, 0x95, 0xc7, 0x19, 0xd1, 0x79, 0xaf, 0x79, 0xcd, 0xdf, 0xd8, - 0x96, 0xd2, 0x7f, 0x7c, 0xbc, 0x85, 0x27, 0xaa, 0xa3, 0x60, 0xf8, 0x7c, - 0x5a, 0x08, 0x87, 0xfa, 0xe3, 0xa3, 0xa4, 0x2b, 0x7c, 0xa2, 0x3c, 0xe0, - 0x73, 0x24, 0xa7, 0x99, 0xc9, 0x0d, 0x51, 0xf2, 0xf5, 0xd2, 0xfa, 0x94, - 0xf8, 0x63, 0x24, 0x41, 0x75, 0xfc, 0x8f, 0xf9, 0xf1, 0x1d, 0x4b, 0x37, - 0x24, 0x8c, 0xc7, 0x73, 0x35, 0x7c, 0xe4, 0x4f, 0x76, 0x1a, 0x3e, 0x72, - 0x0f, 0x0b, 0x26, 0x10, 0x5a, 0x11, 0xdd, 0x4d, 0xfb, 0x49, 0x69, 0x03, - 0x06, 0x53, 0x17, 0x9c, 0xb0, 0xb7, 0x8d, 0xd6, 0x6b, 0x7e, 0x08, 0x43, - 0x45, 0x59, 0x18, 0x57, 0x45, 0xf3, 0x77, 0xd4, 0x81, 0xdb, 0xf7, 0x9a, - 0x1d, 0x27, 0xd3, 0x7e, 0x14, 0x2e, 0xed, 0x25, 0x5a, 0x6a, 0x4c, 0x32, - 0x2e, 0x93, 0x2b, 0xc7, 0xdd, 0xc7, 0x5d, 0x0f, 0x27, 0x94, 0xa9, 0x66, - 0x0b, 0xf3, 0xd0, 0x3f, 0x86, 0x65, 0x0a, 0x21, 0x70, 0xa4, 0x6a, 0x54, - 0xa6, 0x92, 0xe1, 0x0b, 0x6c, 0x8c, 0xc6, 0x9a, 0xa7, 0xe5, 0x08, 0x2b, - 0x4f, 0xcf, 0x53, 0xed, 0xac, 0x6b, 0xbe, 0x5a, 0xdb, 0xe4, 0x50, 0xdb, - 0xa1, 0x41, 0x00, 0x05, 0xcf, 0x09, 0x3b, 0x99, 0xf2, 0x71, 0xd4, 0x30, - 0xb9, 0x4f, 0x11, 0xbd, 0xdf, 0xd7, 0xca, 0x57, 0xa9, 0x23, 0x9c, 0x27, - 0x58, 0x05, 0x7a, 0x91, 0xcd, 0xdb, 0x5a, 0x50, 0xfc, 0x55, 0xf1, 0x55, - 0xbc, 0x21, 0x57, 0xb2, 0xb8, 0x44, 0x3c, 0xeb, 0x64, 0xf4, 0x81, 0x96, - 0x8a, 0x25, 0x0c, 0x17, 0xe4, 0xf9, 0x16, 0xf5, 0x80, 0x60, 0x62, 0x11, - 0x8b, 0x89, 0x0a, 0x8f, 0x42, 0x89, 0x72, 0xba, 0x30, 0x4e, 0x87, 0x65, - 0xee, 0x8c, 0x54, 0x0e, 0xbb, 0x35, 0xe1, 0x4a, 0x7b, 0xf4, 0x6a, 0x46, - 0x58, 0xda, 0x11, 0x55, 0xd7, 0xb3, 0x61, 0x21, 0xf0, 0xb5, 0xc5, 0xfc, - 0xbf, 0x4b, 0xf0, 0xcb, 0x27, 0xd7, 0x5b, 0x55, 0x15, 0xdc, 0x3e, 0xf8, - 0x15, 0x04, 0x45, 0xba, 0xd5, 0x05, 0xff, 0xc3, 0xca, 0xd9, 0xa6, 0x31, - 0x55, 0x47, 0x8d, 0x25, 0x41, 0xa8, 0xa9, 0xac, 0x80, 0x60, 0x89, 0xd5, - 0x0e, 0xda, 0x53, 0x39, 0xf3, 0xf5, 0x8d, 0x48, 0x9e, 0x46, 0x22, 0x4d, - 0xc4, 0xa9, 0x8d, 0xfc, 0x98, 0xd0, 0x81, 0xc9, 0xb2, 0xab, 0x46, 0x17, - 0xe9, 0x8c, 0xd1, 0x8a, 0x7c, 0x28, 0x5b, 0x4c, 0xf1, 0xcc, 0x85, 0x48, - 0x91, 0x8c, 0x17, 0xb9, 0xf1, 0x74, 0x59, 0x01, 0xac, 0xed, 0x4e, 0xb9, - 0x7f, 0xe6, 0x01, 0x0c, 0x7f, 0xf8, 0xfe, 0xdd, 0x9b, 0xd3, 0x77, 0x27, - 0xb1, 0xd7, 0xe7, 0xfc, 0xed, 0xd9, 0xe1, 0x0b, 0x2c, 0x99, 0x3c, 0x3b, - 0x3e, 0x38, 0x7e, 0x15, 0xad, 0x07, 0x7a, 0x0b, 0xba, 0x44, 0x64, 0xc8, - 0x86, 0xfb, 0x9e, 0x32, 0xb2, 0x98, 0x6c, 0x00, 0x73, 0x34, 0xb3, 0x84, - 0x75, 0xdc, 0xe5, 0x40, 0xa7, 0x42, 0xb9, 0x6b, 0xad, 0x18, 0x90, 0x38, - 0x92, 0xcf, 0x17, 0x5c, 0xcb, 0x67, 0x46, 0x71, 0x6b, 0x82, 0xa8, 0xdc, - 0x35, 0xd0, 0x36, 0xb2, 0x4f, 0x19, 0x31, 0x5c, 0x37, 0xe0, 0x60, 0x3a, - 0x77, 0x38, 0xfe, 0x1a, 0x87, 0xf6, 0x19, 0xa2, 0xf3, 0x8d, 0xf9, 0x19, - 0x66, 0x64, 0x62, 0x25, 0xc9, 0x4d, 0x0a, 0x35, 0xbe, 0x6d, 0x4b, 0xca, - 0x60, 0x24, 0x32, 0x56, 0x7c, 0xaa, 0xa4, 0x1f, 0x5b, 0x9a, 0xac, 0x96, - 0x13, 0x25, 0xb7, 0xda, 0xb9, 0x42, 0xfe, 0x65, 0xde, 0xa0, 0x06, 0x37, - 0x92, 0xd3, 0x5a, 0xe4, 0xc6, 0xd4, 0x1a, 0xd0, 0x45, 0xf7, 0x34, 0x00, - 0x7e, 0x05, 0xb6, 0x3e, 0x17, 0x77, 0xb9, 0x59, 0xab, 0x74, 0x7e, 0x90, - 0xea, 0x57, 0x78, 0x00, 0x7f, 0xeb, 0x9c, 0xfe, 0x20, 0x00, 0xd8, 0xad, - 0x2f, 0xe3, 0x69, 0x22, 0x34, 0xb3, 0x5d, 0x14, 0x0e, 0x87, 0x22, 0x3a, - 0xad, 0xb8, 0x9a, 0xbf, 0xe3, 0xf6, 0xf7, 0xa5, 0xc9, 0x13, 0x31, 0x5d, - 0xd2, 0xa6, 0x71, 0xcf, 0x58, 0x81, 0x76, 0x3e, 0xa6, 0x2b, 0xf9, 0xb5, - 0xb1, 0x89, 0x98, 0x8c, 0xd6, 0xc7, 0x83, 0xea, 0xf3, 0x69, 0x89, 0xfc, - 0x5f, 0x72, 0x60, 0xdf, 0x36, 0x3b, 0x1b, 0xf3, 0x2a, 0x44, 0xb3, 0x62, - 0x28, 0x73, 0x5a, 0x49, 0x9f, 0x10, 0xa4, 0x71, 0x61, 0x2f, 0x71, 0x5d, - 0x51, 0x21, 0xe9, 0x93, 0x5e, 0x38, 0x8a, 0x4d, 0x05, 0xc7, 0xb1, 0xfe, - 0xf4, 0xc9, 0x60, 0x67, 0xa3, 0x91, 0x00, 0x8a, 0x09, 0x73, 0xb0, 0x59, - 0x7f, 0xc6, 0xff, 0x2a, 0xcc, 0x13, 0xfe, 0x7d, 0xde, 0x79, 0x56, 0xce, - 0x36, 0x54, 0x7d, 0xc5, 0x31, 0xe3, 0xcb, 0x7d, 0x5e, 0x14, 0xe3, 0x46, - 0x9f, 0x9b, 0x4e, 0x4d, 0xcd, 0xee, 0xd2, 0x67, 0xbb, 0x4a, 0x3c, 0xfd, - 0x57, 0xad, 0x03, 0x5a, 0xc1, 0x46, 0xc5, 0x51, 0xbc, 0x0b, 0xf4, 0xc9, - 0x57, 0x87, 0xbd, 0xbb, 0x14, 0x70, 0x9d, 0x34, 0xd4, 0x8d, 0x81, 0x2f, - 0x36, 0xf5, 0xf6, 0x20, 0x71, 0xa7, 0xb8, 0x3f, 0x8c, 0x91, 0x90, 0x4e, - 0xc8, 0x08, 0x21, 0x00, 0xf9, 0x3e, 0xfd, 0x92, 0xd2, 0x4f, 0x4d, 0x95, - 0xed, 0xb8, 0x1f, 0x02, 0x7a, 0xc6, 0x31, 0x92, 0x91, 0x6b, 0xd2, 0x99, - 0xce, 0xb3, 0x6b, 0x40, 0x11, 0x6b, 0x7d, 0xd3, 0x99, 0x61, 0x7a, 0x4d, - 0x79, 0x8a, 0xd9, 0x47, 0x41, 0x55, 0x8a, 0x7e, 0x4b, 0xcb, 0xc2, 0xcf, - 0xa7, 0x27, 0xad, 0x4f, 0x5b, 0x5f, 0xa2, 0x9b, 0xe5, 0x12, 0xb8, 0x2b, - 0x89, 0x66, 0xf3, 0x43, 0x9c, 0xd5, 0xbb, 0x4b, 0x7f, 0x86, 0x6f, 0x43, - 0xd0, 0x7b, 0xe1, 0xf5, 0x66, 0x35, 0x19, 0x75, 0xdc, 0xcd, 0x34, 0xff, - 0xd9, 0xb9, 0xdb, 0x02, 0xf7, 0x47, 0x50, 0xf9, 0x1e, 0xde, 0x26, 0xd9, - 0x19, 0x63, 0xb4, 0x98, 0x2d, 0xd6, 0x87, 0x05, 0x9e, 0x42, 0x6d, 0xc2, - 0xb4, 0xe7, 0x14, 0x72, 0xf2, 0x85, 0x4f, 0x0c, 0x6a, 0x45, 0x9a, 0x5f, - 0x2b, 0x2e, 0x8f, 0xad, 0x63, 0x45, 0x77, 0x50, 0x41, 0x81, 0xc8, 0xac, - 0xb6, 0x5d, 0x6d, 0x14, 0xa5, 0xc2, 0x2c, 0xd1, 0x5f, 0x52, 0x73, 0xcd, - 0x21, 0x8e, 0xf4, 0x95, 0xd9, 0x06, 0x62, 0x03, 0xcd, 0xbd, 0x58, 0xa7, - 0x06, 0xdf, 0x9a, 0xc1, 0x4d, 0xf3, 0xe9, 0x88, 0x4b, 0xb7, 0x61, 0x83, - 0x74, 0x53, 0xf2, 0x1c, 0x54, 0x8b, 0xe1, 0xaf, 0xe8, 0x6d, 0x46, 0x5a, - 0x4c, 0x08, 0xc5, 0x87, 0xb6, 0x41, 0x3c, 0x37, 0x70, 0xac, 0xf0, 0x00, - 0x67, 0x82, 0xd4, 0xc0, 0x19, 0x42, 0xc3, 0x51, 0x66, 0x79, 0xe6, 0x94, - 0x38, 0x45, 0x4d, 0xa0, 0x8e, 0x65, 0x28, 0xd2, 0xbb, 0x5f, 0x74, 0xb0, - 0xee, 0x78, 0x82, 0x57, 0x91, 0xab, 0x69, 0x5b, 0x5a, 0x02, 0xef, 0x25, - 0xd7, 0x98, 0x1b, 0x3c, 0x0d, 0x7c, 0xbc, 0x73, 0x2c, 0xe5, 0xc0, 0x55, - 0xff, 0xcf, 0xf8, 0x1f, 0xff, 0x1b, 0x9a, 0xe0, 0x20, 0x58, 0xb1, 0x29, - 0x3c, 0x10, 0x1f, 0x27, 0x16, 0x4b, 0xaf, 0x77, 0x4d, 0xe0, 0x70, 0x8f, - 0xe5, 0x63, 0x13, 0xcf, 0x58, 0x61, 0x82, 0x77, 0xa2, 0xaa, 0x91, 0xca, - 0xad, 0x9d, 0xc4, 0x2c, 0xc5, 0xc3, 0xdf, 0xc6, 0x8b, 0x11, 0x61, 0x9d, - 0x08, 0x1c, 0x55, 0x0b, 0x94, 0xbd, 0x6d, 0x97, 0x8d, 0xca, 0x0c, 0xfb, - 0xfd, 0x61, 0x12, 0x70, 0x32, 0x41, 0x40, 0x92, 0x12, 0xff, 0xa0, 0x58, - 0x3b, 0x49, 0x01, 0xc2, 0xca, 0xb0, 0x90, 0x3a, 0xf3, 0xa2, 0xc6, 0x04, - 0x02, 0xba, 0xea, 0x63, 0xbf, 0x3d, 0xdd, 0x39, 0xdc, 0xf7, 0x45, 0xe5, - 0x1e, 0x89, 0x5a, 0x42, 0x38, 0x2c, 0x27, 0x2e, 0xa3, 0x7a, 0x26, 0x25, - 0xb2, 0x9c, 0x76, 0xe5, 0x30, 0x3a, 0xaf, 0x18, 0x1b, 0x5f, 0xe1, 0xca, - 0x5a, 0x72, 0xe0, 0x2a, 0x8f, 0x24, 0x9c, 0x4f, 0x82, 0xd8, 0x40, 0x7d, - 0x74, 0xa9, 0x82, 0xe9, 0xe6, 0xdf, 0x37, 0x6d, 0x86, 0xbe, 0xad, 0x24, - 0x24, 0x4f, 0x1c, 0x21, 0x87, 0x90, 0xe5, 0xe0, 0x0b, 0x13, 0x36, 0x18, - 0xa9, 0x34, 0x0c, 0xd3, 0x08, 0x73, 0x4c, 0x82, 0xc8, 0x39, 0xaf, 0x42, - 0xbc, 0x23, 0xca, 0xa8, 0x71, 0x99, 0x88, 0x26, 0x83, 0x39, 0xde, 0x09, - 0x7a, 0xd4, 0x8a, 0x50, 0x3f, 0x59, 0xd1, 0x54, 0xba, 0x15, 0xca, 0x65, - 0xd2, 0x4f, 0xba, 0x81, 0xa2, 0xfc, 0xbb, 0xff, 0x2e, 0x6e, 0x1e, 0xfd, - 0xf6, 0x2b, 0xb8, 0x49, 0x77, 0x11, 0x81, 0x22, 0x48, 0x5d, 0xdd, 0xd2, - 0xc3, 0x87, 0xd4, 0x32, 0x6c, 0xa9, 0x63, 0x0e, 0x0a, 0x46, 0x73, 0xea, - 0x73, 0xec, 0xb8, 0x01, 0xbc, 0x64, 0x91, 0xd5, 0x44, 0x8c, 0x2d, 0xc8, - 0x08, 0xc5, 0x29, 0x40, 0x87, 0x28, 0x72, 0x1d, 0xaf, 0xbe, 0x3a, 0xd7, - 0x54, 0x18, 0x53, 0x73, 0xc6, 0x75, 0x9d, 0xa4, 0xce, 0x89, 0x17, 0x94, - 0x48, 0x87, 0xbd, 0x60, 0x6c, 0xf3, 0x10, 0x92, 0x0b, 0xdb, 0x95, 0xe1, - 0xe0, 0xc2, 0xa6, 0xa9, 0x5e, 0x01, 0xda, 0xcf, 0xc7, 0x31, 0x70, 0xbf, - 0xf9, 0x72, 0xdf, 0xbc, 0xfb, 0xc5, 0x0f, 0x50, 0x1d, 0xdf, 0x1c, 0x5f, - 0xff, 0x4d, 0x45, 0xcc, 0xb6, 0x60, 0x7e, 0x8c, 0x8e, 0x27, 0x36, 0xb0, - 0xee, 0xe8, 0x6a, 0x32, 0x7f, 0x69, 0x54, 0xab, 0xf3, 0x4f, 0xfc, 0xda, - 0x5f, 0xe7, 0xc9, 0x25, 0x87, 0xac, 0xf6, 0x2c, 0x9d, 0xc8, 0xb7, 0x3c, - 0x6c, 0xf3, 0x90, 0xed, 0xe9, 0xea, 0x69, 0xb6, 0x11, 0x17, 0x9a, 0x67, - 0x2b, 0xc7, 0xfa, 0x8e, 0x51, 0xa0, 0x69, 0x44, 0xf2, 0x45, 0xe4, 0x02, - 0xc2, 0xe3, 0xcc, 0xc4, 0x9e, 0x11, 0xef, 0x90, 0xb1, 0x2c, 0x84, 0xfb, - 0xa0, 0xc8, 0x73, 0xa2, 0x2a, 0x18, 0x01, 0xd4, 0x5e, 0xa2, 0x12, 0x62, - 0xa8, 0xdf, 0x19, 0x49, 0x2f, 0x9a, 0x08, 0x17, 0x96, 0xdd, 0xd0, 0x9b, - 0xca, 0xdd, 0xde, 0x87, 0xa2, 0x13, 0x1e, 0xfd, 0x77, 0xa0, 0x92, 0x50, - 0x57, 0xbb, 0x2e, 0x3a, 0x19, 0x25, 0x31, 0x47, 0x02, 0xc2, 0x20, 0x79, - 0x2d, 0xbe, 0xb0, 0x10, 0xe6, 0x7d, 0xb0, 0x2f, 0x68, 0x7e, 0x46, 0xdf, - 0x92, 0x70, 0x82, 0xd4, 0x3c, 0xfb, 0xa8, 0x76, 0xd7, 0x55, 0xcd, 0x10, - 0x74, 0x4e, 0x02, 0x62, 0x23, 0x28, 0x62, 0x0d, 0x2f, 0x83, 0x31, 0x4d, - 0x47, 0x88, 0x02, 0xf6, 0x60, 0x3f, 0x54, 0x71, 0xee, 0x60, 0xff, 0x50, - 0x56, 0xac, 0xad, 0x9a, 0xa3, 0x7c, 0x1c, 0xf4, 0x26, 0x68, 0x7d, 0x36, - 0x2b, 0x2c, 0x36, 0xc0, 0xb7, 0xa4, 0x7d, 0x73, 0x46, 0x02, 0x30, 0x2d, - 0x27, 0xc9, 0x48, 0x6b, 0xec, 0xf4, 0x9b, 0xe4, 0x2b, 0xd6, 0x2a, 0xea, - 0x95, 0x72, 0x19, 0xc4, 0xdf, 0x6d, 0x40, 0x65, 0x91, 0xdb, 0x90, 0xfa, - 0x03, 0x4f, 0xa8, 0x1d, 0x0a, 0xd9, 0x93, 0xa6, 0x35, 0x13, 0xaf, 0x47, - 0x84, 0xae, 0xe6, 0x78, 0x86, 0x33, 0xb7, 0x06, 0x5a, 0xf6, 0xc4, 0x1b, - 0x83, 0xa4, 0xaf, 0xa3, 0x64, 0x0e, 0x20, 0x06, 0xe1, 0x01, 0x4a, 0xd2, - 0x55, 0x3f, 0x54, 0xdb, 0x31, 0x49, 0x93, 0x7a, 0x41, 0x18, 0x5a, 0x84, - 0xe2, 0x42, 0x80, 0x0e, 0x40, 0x24, 0x52, 0x1b, 0x95, 0xca, 0x92, 0x8d, - 0xe2, 0x27, 0x87, 0xaa, 0xa7, 0xed, 0x7d, 0x2c, 0x43, 0xbf, 0x58, 0x70, - 0x58, 0x4d, 0x85, 0xe3, 0xca, 0x49, 0x03, 0xed, 0x2a, 0x2a, 0xbb, 0xe2, - 0x0d, 0x88, 0x35, 0xec, 0x83, 0x4b, 0x3d, 0x1f, 0x3c, 0x0a, 0x01, 0xdb, - 0x36, 0x2b, 0x8b, 0x9a, 0x54, 0x7b, 0xef, 0xce, 0x49, 0x77, 0xf0, 0x55, - 0xaf, 0xb9, 0x5d, 0xd5, 0x8a, 0x1d, 0x75, 0x13, 0x4c, 0xf8, 0xa4, 0xe6, - 0x20, 0x09, 0x25, 0xe0, 0xd2, 0xc5, 0x6d, 0xe5, 0x45, 0x9a, 0x00, 0xc3, - 0xf3, 0xc1, 0x4e, 0x2b, 0x07, 0x5f, 0x56, 0x8d, 0x83, 0x84, 0x6b, 0xdf, - 0x4f, 0x45, 0x9d, 0xd2, 0xa9, 0xe8, 0x36, 0x28, 0x36, 0x88, 0x73, 0x0b, - 0x29, 0xb7, 0xb7, 0x03, 0x01, 0xa1, 0x35, 0xcf, 0x67, 0x68, 0x63, 0xdf, - 0x98, 0xff, 0x60, 0x9f, 0xfb, 0xed, 0xd5, 0xd8, 0xe7, 0xe5, 0xa3, 0xd9, - 0xf0, 0x95, 0x38, 0x68, 0x0b, 0xa0, 0x86, 0x37, 0x9f, 0x4a, 0x3f, 0xf4, - 0x44, 0x5a, 0x47, 0xe2, 0x02, 0x77, 0xb5, 0x7c, 0xbb, 0x9d, 0xe1, 0x9f, - 0xc6, 0xe0, 0x41, 0x34, 0x0e, 0xf7, 0x74, 0xe8, 0xa1, 0x4f, 0x3a, 0x1d, - 0x1a, 0xe1, 0x33, 0x9e, 0x0e, 0xcd, 0xbf, 0x69, 0x00, 0xda, 0x05, 0x1f, - 0xe3, 0xde, 0x8e, 0x48, 0xcf, 0xe5, 0x63, 0xdf, 0xfc, 0x34, 0x12, 0x41, - 0xc7, 0x73, 0xdb, 0x9b, 0xe2, 0xe1, 0x66, 0x77, 0x9c, 0x0c, 0x8c, 0x18, - 0xd7, 0xd7, 0xf3, 0x34, 0xda, 0xc3, 0x3f, 0x97, 0x9c, 0x8e, 0x79, 0xf0, - 0x53, 0x0e, 0xc8, 0x0c, 0x12, 0x3a, 0xa3, 0x0e, 0xbb, 0xc3, 0x43, 0x77, - 0xf8, 0x94, 0x6a, 0x97, 0xd6, 0x32, 0x30, 0x5d, 0xdf, 0xfd, 0x29, 0x0b, - 0xcf, 0xbb, 0x9e, 0x97, 0xb5, 0x4a, 0x64, 0xb8, 0xc1, 0x2d, 0xae, 0x06, - 0xf1, 0x2d, 0xfc, 0xf3, 0x27, 0xd1, 0x85, 0x7e, 0xe9, 0x3c, 0x84, 0xc3, - 0xbe, 0x1c, 0xc4, 0xa7, 0x9e, 0xc1, 0xe7, 0x09, 0x50, 0x3f, 0xd0, 0x26, - 0xd3, 0x49, 0xde, 0x66, 0xa7, 0xb3, 0xf9, 0x05, 0xba, 0xfc, 0xf6, 0x42, - 0x38, 0xaf, 0x0e, 0xa1, 0xcb, 0x63, 0xab, 0x6e, 0xf1, 0xa9, 0x05, 0x12, - 0x62, 0x63, 0x3f, 0xd2, 0x91, 0x54, 0x39, 0x31, 0x9e, 0x2a, 0x53, 0x68, - 0xe0, 0x64, 0xcd, 0x9c, 0x86, 0x80, 0x38, 0x19, 0xd7, 0x4a, 0xbd, 0x79, - 0x3a, 0x1e, 0x75, 0xdc, 0xd6, 0x7c, 0x16, 0x38, 0xa1, 0x6c, 0xac, 0xbf, - 0x02, 0x4d, 0xe9, 0x2d, 0x06, 0xc0, 0xa3, 0xc5, 0xdc, 0x03, 0x9e, 0xe5, - 0x2a, 0x0f, 0x7a, 0x8e, 0x47, 0x6c, 0x74, 0x10, 0x05, 0x82, 0x78, 0xf7, - 0xf6, 0x95, 0xe7, 0x14, 0xd3, 0x33, 0xa1, 0x44, 0x8b, 0x2a, 0xdd, 0x1c, - 0x17, 0xa3, 0x6a, 0xb3, 0xaa, 0xa6, 0xba, 0x4b, 0x83, 0x8b, 0x7a, 0x36, - 0x5d, 0x46, 0x6c, 0xb2, 0xe4, 0xcf, 0xe2, 0x63, 0x77, 0xe6, 0x3f, 0x3c, - 0x78, 0xf1, 0xfd, 0x61, 0x0c, 0x7f, 0x9e, 0xee, 0xc7, 0xfb, 0x87, 0xa7, - 0x3b, 0x4f, 0x9e, 0xc6, 0x07, 0x07, 0xaf, 0x9f, 0x7f, 0x2a, 0x11, 0xca, - 0xf0, 0x74, 0x2d, 0x17, 0x25, 0xc6, 0xcf, 0xdb, 0x92, 0xf2, 0x16, 0x64, - 0x59, 0x4e, 0x6d, 0x67, 0xed, 0x25, 0x64, 0x29, 0x8f, 0x7d, 0xca, 0xcd, - 0x97, 0x21, 0x3e, 0xdb, 0x61, 0xc8, 0xfc, 0x65, 0x8a, 0x7e, 0xdf, 0xea, - 0x93, 0xb4, 0x17, 0x3d, 0x00, 0x19, 0x72, 0xf5, 0x6d, 0x67, 0x93, 0x70, - 0xb9, 0x23, 0xc8, 0xb8, 0x08, 0x5e, 0x08, 0x16, 0xde, 0x3d, 0xfa, 0x08, - 0x04, 0x5e, 0xcf, 0x77, 0x12, 0xc8, 0x5c, 0xf8, 0x6e, 0x3b, 0x42, 0xd2, - 0xf0, 0x12, 0xdc, 0x6c, 0xd0, 0xcb, 0x14, 0x0f, 0x65, 0xd1, 0xcb, 0xf0, - 0x9f, 0xc9, 0xa4, 0x27, 0x7f, 0x82, 0x7f, 0xac, 0x8c, 0xab, 0x11, 0xed, - 0xf1, 0x7f, 0x37, 0xbf, 0x09, 0x5d, 0x2a, 0x45, 0x95, 0xa5, 0x1d, 0x90, - 0x17, 0xd0, 0x13, 0x2a, 0x1d, 0x2c, 0x85, 0x4d, 0x6b, 0xf6, 0x1e, 0x9d, - 0xb2, 0x96, 0x7e, 0xd1, 0x11, 0x79, 0x61, 0x49, 0x85, 0x58, 0xe6, 0x4e, - 0x08, 0x18, 0x3f, 0x53, 0xee, 0x6c, 0x0b, 0xff, 0x90, 0x81, 0xa7, 0xce, - 0x8c, 0x95, 0x69, 0x31, 0x1d, 0xec, 0xa7, 0xf6, 0xcf, 0x45, 0x06, 0xd7, - 0x8f, 0x8a, 0xc5, 0x0c, 0xe0, 0x4e, 0xfc, 0x3d, 0x6e, 0x89, 0x2c, 0x18, - 0xf9, 0x80, 0x40, 0x0a, 0x29, 0x03, 0x20, 0x42, 0xf4, 0x51, 0xb3, 0xad, - 0x35, 0x3e, 0x65, 0x00, 0xab, 0xe8, 0xe0, 0xf8, 0xcd, 0x9b, 0xc3, 0x83, - 0x76, 0x8e, 0xbe, 0x05, 0xef, 0x24, 0x67, 0x82, 0x44, 0x52, 0xda, 0x02, - 0x81, 0x67, 0xc7, 0x0d, 0xa9, 0x4d, 0xf6, 0xa8, 0xac, 0x00, 0xfe, 0x75, - 0x25, 0x90, 0xb8, 0xf4, 0x6b, 0x91, 0x6e, 0xc9, 0x08, 0xc1, 0x28, 0x85, - 0x76, 0xdb, 0xc3, 0x85, 0x28, 0x99, 0xa8, 0x8c, 0x33, 0x1d, 0x2b, 0xb4, - 0xd7, 0xc9, 0x75, 0x4f, 0xa1, 0x41, 0x99, 0x9d, 0x00, 0xca, 0xc6, 0xe3, - 0x4d, 0x01, 0xf7, 0x12, 0x44, 0x75, 0x5a, 0x51, 0xe0, 0xda, 0xc8, 0x02, - 0xe7, 0x29, 0xde, 0xb4, 0x71, 0x5c, 0x4c, 0x62, 0xca, 0xe1, 0x9a, 0x25, - 0xe5, 0x07, 0x4c, 0xf2, 0x77, 0xb0, 0xca, 0x08, 0x48, 0x1f, 0xe3, 0xc8, - 0x30, 0xb8, 0x34, 0xf2, 0xaa, 0x3c, 0x4f, 0x1d, 0x01, 0x40, 0x6a, 0x8a, - 0x99, 0x2c, 0x88, 0x98, 0x6f, 0x5e, 0xef, 0x62, 0xf5, 0xaf, 0xbe, 0x9f, - 0xa7, 0x57, 0x38, 0x0f, 0xf7, 0x82, 0xc5, 0xfe, 0x75, 0x98, 0xed, 0xe5, - 0xe7, 0xa7, 0xd6, 0x8b, 0x32, 0x67, 0xc6, 0x7b, 0xcd, 0x87, 0x34, 0x23, - 0x0c, 0x6a, 0x44, 0xe9, 0xaf, 0x10, 0x7e, 0x45, 0x90, 0x53, 0xbd, 0x4d, - 0xfa, 0x9e, 0xa9, 0xa8, 0x9d, 0x0f, 0xdb, 0x00, 0xf1, 0x92, 0x0c, 0x06, - 0x21, 0x6c, 0xc6, 0xc2, 0xd4, 0x33, 0x0f, 0x61, 0x19, 0xd3, 0xc6, 0x63, - 0xdc, 0xa7, 0x32, 0xef, 0x0e, 0x53, 0x73, 0x96, 0x49, 0x67, 0xc2, 0xae, - 0xe3, 0xdf, 0xa0, 0x96, 0xec, 0x98, 0xd3, 0x87, 0x10, 0x55, 0xe5, 0x39, - 0x01, 0xc2, 0xe1, 0xbc, 0xdf, 0x68, 0x0b, 0x32, 0xc6, 0x6c, 0xd6, 0xb8, - 0x7d, 0x00, 0xf8, 0x15, 0xf6, 0x0e, 0x93, 0xd6, 0x64, 0x67, 0x35, 0xa1, - 0x8b, 0xf3, 0xee, 0xe4, 0x6a, 0x66, 0x39, 0x22, 0x1e, 0x11, 0xe3, 0x6f, - 0x60, 0xa5, 0x3f, 0x21, 0x07, 0x4a, 0x3b, 0x01, 0x15, 0xef, 0xed, 0x37, - 0xb1, 0x10, 0x14, 0x7d, 0x22, 0xc6, 0x29, 0x9d, 0xe3, 0xab, 0xd8, 0x91, - 0x57, 0xd5, 0xe3, 0x2c, 0xbf, 0x75, 0x8c, 0xc7, 0xef, 0x8b, 0x80, 0x97, - 0xc1, 0xa1, 0xca, 0x4d, 0x8a, 0xcc, 0xb6, 0x09, 0xde, 0xbc, 0xa5, 0x5c, - 0x20, 0x18, 0xd9, 0xb3, 0x8c, 0xec, 0xe1, 0x60, 0x9d, 0x9a, 0xf3, 0xf4, - 0x7e, 0x8c, 0x5f, 0x62, 0x6e, 0x78, 0xfc, 0x06, 0xce, 0x68, 0x37, 0xfa, - 0xcf, 0x02, 0xe1, 0x95, 0x4c, 0xca, 0x68, 0x37, 0x1f, 0xbf, 0xcd, 0xd0, - 0x98, 0x03, 0x1c, 0xef, 0x9f, 0xd3, 0x05, 0x81, 0x0b, 0x3d, 0x2f, 0xb3, - 0xea, 0x1e, 0x47, 0xff, 0x1e, 0x58, 0xc8, 0xee, 0xed, 0x86, 0x5b, 0x11, - 0x93, 0x5c, 0xe6, 0xc1, 0xd6, 0x42, 0x61, 0x09, 0xd2, 0xca, 0xa8, 0xa8, - 0xc1, 0xd4, 0x6f, 0xb6, 0x6f, 0x32, 0x99, 0xdd, 0x3b, 0xa6, 0x7f, 0xd4, - 0x0d, 0xba, 0x3e, 0x2f, 0x9e, 0x03, 0x43, 0x5c, 0xca, 0x4b, 0x4c, 0xa1, - 0xa0, 0x2e, 0x8c, 0xdc, 0x12, 0x6a, 0xbb, 0x99, 0x91, 0xef, 0x3b, 0xff, - 0xe1, 0xbd, 0xd1, 0x87, 0x8a, 0x15, 0x18, 0x8e, 0x1c, 0xc2, 0xdd, 0x96, - 0x95, 0x84, 0xe9, 0xbb, 0xd9, 0x7b, 0x4b, 0x93, 0xfb, 0x18, 0x62, 0x09, - 0xf1, 0xab, 0x2b, 0x49, 0x26, 0xb8, 0x21, 0x92, 0xd0, 0xdc, 0xb3, 0x8e, - 0xd6, 0x21, 0x9f, 0xec, 0xa1, 0xe4, 0x5e, 0x4f, 0x77, 0x52, 0x59, 0x78, - 0x5d, 0x9f, 0xaa, 0x98, 0x0c, 0x5a, 0xe3, 0x85, 0x9a, 0x4d, 0xdd, 0x05, - 0xc9, 0x99, 0x1b, 0x7e, 0x35, 0x9c, 0x9d, 0xdb, 0x21, 0xd5, 0x55, 0xdd, - 0xa2, 0x5d, 0xb6, 0x42, 0xc3, 0x77, 0xba, 0xb2, 0xc1, 0xe0, 0xeb, 0x91, - 0x66, 0xa8, 0xb0, 0x26, 0x79, 0xb7, 0xd6, 0x75, 0xe6, 0x38, 0xfd, 0xde, - 0x2c, 0xab, 0x9c, 0xa8, 0x59, 0xdb, 0xa7, 0x19, 0x12, 0xed, 0xcc, 0xf6, - 0x2e, 0xf7, 0x73, 0x97, 0x35, 0xf1, 0x21, 0xbd, 0xbe, 0x95, 0x17, 0xcd, - 0x3c, 0x77, 0x07, 0x33, 0xce, 0x9f, 0xac, 0xd9, 0x02, 0xc2, 0xf3, 0xa3, - 0xb9, 0xc6, 0xdc, 0xfd, 0x3b, 0xd1, 0xcc, 0x2a, 0x10, 0x32, 0xc0, 0xf9, - 0x61, 0x44, 0x99, 0xe7, 0xf7, 0xe2, 0xdd, 0x31, 0xb0, 0x32, 0x2b, 0x59, - 0x76, 0x84, 0x2d, 0x02, 0x7f, 0x2c, 0x3d, 0x85, 0x4f, 0xb1, 0xa3, 0x57, - 0xa9, 0xbc, 0xbf, 0xe7, 0x94, 0x89, 0x87, 0xd8, 0x62, 0x3e, 0xc5, 0xd5, - 0xf7, 0xd9, 0x88, 0xba, 0x1b, 0x02, 0xed, 0xd6, 0x8c, 0x7e, 0x63, 0x84, - 0xe3, 0xfa, 0xe9, 0xc9, 0x9b, 0xc3, 0xef, 0x8e, 0x37, 0x42, 0x26, 0xb5, - 0x57, 0xbc, 0xeb, 0x18, 0xd8, 0x4b, 0x4d, 0x6a, 0x2b, 0x7b, 0x5d, 0xab, - 0x3a, 0x50, 0x8b, 0x16, 0x5a, 0x88, 0xd4, 0x2b, 0xac, 0x66, 0x61, 0xdb, - 0x19, 0x1f, 0xca, 0xc8, 0xb6, 0x33, 0xdc, 0xb3, 0x9d, 0xbd, 0xba, 0x69, - 0x8d, 0x98, 0xeb, 0x37, 0x56, 0x08, 0xf0, 0xf6, 0x06, 0xfa, 0x80, 0x68, - 0xc0, 0xf7, 0xae, 0xfe, 0x12, 0x42, 0x7c, 0x6f, 0x78, 0x4b, 0x68, 0x96, - 0xc6, 0xb1, 0xdd, 0xc6, 0xb8, 0x0c, 0x1c, 0xe2, 0xc3, 0x34, 0x8f, 0x70, - 0x06, 0x5f, 0x76, 0x74, 0x77, 0x57, 0x5a, 0x3d, 0x0a, 0x71, 0xcf, 0x30, - 0xd0, 0xb0, 0x81, 0x7f, 0xb1, 0x0c, 0xb3, 0xcc, 0x72, 0x48, 0x7a, 0xea, - 0x13, 0x58, 0xe4, 0x9d, 0xf0, 0xcb, 0xee, 0x8d, 0x45, 0x36, 0x31, 0xcd, - 0xee, 0x95, 0x6d, 0x7a, 0x25, 0x70, 0x66, 0xf4, 0x5b, 0x70, 0xcc, 0xdb, - 0xc3, 0x5f, 0x85, 0x99, 0x68, 0x17, 0x02, 0x96, 0x41, 0x6d, 0xeb, 0x86, - 0xbf, 0x6a, 0xe6, 0x9e, 0xb8, 0x49, 0x68, 0x5d, 0xe8, 0x57, 0xff, 0x57, - 0xc2, 0x5f, 0x35, 0xf0, 0xaf, 0xd0, 0xcd, 0x45, 0x78, 0x40, 0x01, 0x08, - 0x2c, 0xa7, 0xb1, 0x2e, 0xe3, 0x5f, 0x2d, 0x83, 0xbf, 0x72, 0xd0, 0xaf, - 0x96, 0x80, 0x5f, 0x91, 0xb6, 0xb6, 0x14, 0xfe, 0xea, 0x8e, 0xf8, 0x57, - 0x1d, 0xf0, 0x57, 0x77, 0x45, 0xbf, 0xba, 0x1f, 0xf8, 0x2b, 0x57, 0x61, - 0xbd, 0x0b, 0x66, 0xd1, 0x5d, 0x14, 0xd6, 0x1b, 0x5c, 0x1d, 0x9f, 0x0a, - 0x5c, 0xe4, 0x0f, 0x72, 0x8f, 0xf0, 0x45, 0x8d, 0x71, 0x97, 0x2a, 0x63, - 0x5f, 0x86, 0x58, 0x0b, 0xd2, 0x6a, 0x36, 0x92, 0xb6, 0x12, 0x7b, 0xf8, - 0xe7, 0xd7, 0x4b, 0x1c, 0x59, 0xcd, 0x62, 0x69, 0xa7, 0x24, 0x4e, 0x86, - 0xe1, 0xc2, 0x0b, 0xeb, 0x5b, 0x8e, 0x7c, 0x64, 0x5b, 0xb9, 0x46, 0xe1, - 0xe4, 0xe2, 0xf0, 0xb2, 0x1e, 0xf0, 0xe4, 0x97, 0x1f, 0x7c, 0x63, 0x15, - 0xbd, 0xea, 0xa2, 0x5c, 0x0c, 0x81, 0x17, 0x5d, 0xf7, 0xee, 0xaa, 0x3a, - 0x35, 0xc6, 0xf3, 0x72, 0x63, 0xbc, 0xa3, 0xa9, 0xa6, 0x31, 0x6d, 0x38, - 0x76, 0xc1, 0xf1, 0x42, 0x4e, 0x56, 0xe6, 0xb6, 0x9e, 0xbb, 0x07, 0xc3, - 0xbd, 0x3d, 0xe2, 0xf2, 0xe6, 0xf3, 0xad, 0xe1, 0xda, 0xb0, 0x1d, 0xdd, - 0x16, 0x7c, 0x6b, 0x9a, 0x3b, 0x9e, 0x51, 0x6b, 0xad, 0x9f, 0x68, 0xdd, - 0xb4, 0x87, 0x5b, 0xdd, 0xbc, 0xa1, 0x11, 0x16, 0x75, 0x11, 0x8f, 0xa6, - 0x19, 0xf0, 0x73, 0x4a, 0x35, 0x58, 0x7e, 0x76, 0xad, 0x87, 0xef, 0xeb, - 0x00, 0xdb, 0xc3, 0x76, 0xa9, 0xaa, 0xb1, 0x5f, 0x8e, 0xdd, 0x3e, 0xca, - 0xa6, 0x4b, 0xc6, 0xe0, 0xaf, 0x88, 0xe3, 0x9d, 0x0e, 0xd7, 0x6a, 0xe2, - 0x9e, 0x63, 0xba, 0x79, 0xe0, 0xad, 0x65, 0x7d, 0xc2, 0xa9, 0xb7, 0x3f, - 0xf0, 0x93, 0xd3, 0xa5, 0x82, 0xa3, 0x0a, 0x2a, 0xbf, 0x93, 0x3a, 0xa5, - 0x0d, 0x76, 0xa2, 0x50, 0xba, 0xd4, 0xb3, 0x67, 0x21, 0xa2, 0xa8, 0xa7, - 0xd5, 0xf6, 0x23, 0x9b, 0x49, 0x22, 0x7f, 0x59, 0x60, 0x73, 0x9d, 0x50, - 0x56, 0x89, 0x28, 0x73, 0x36, 0x35, 0x44, 0xca, 0x40, 0x38, 0x0b, 0x83, - 0xde, 0xab, 0x96, 0x65, 0x87, 0xb4, 0x86, 0xa3, 0x0e, 0x7a, 0x2e, 0x25, - 0x91, 0x49, 0x85, 0xd8, 0xb3, 0x6a, 0x03, 0x54, 0xa4, 0xd0, 0x6c, 0x0f, - 0x1e, 0x05, 0x33, 0x47, 0xda, 0x7e, 0x62, 0x9e, 0x7f, 0x59, 0x3a, 0x09, - 0x65, 0x93, 0x2c, 0xe6, 0x9c, 0x74, 0x4b, 0xba, 0x12, 0x8c, 0xad, 0x99, - 0x2d, 0xa1, 0xe1, 0x1e, 0x2e, 0xab, 0xa4, 0xd9, 0xb6, 0x2b, 0x63, 0xe5, - 0x18, 0x3b, 0xf9, 0x4c, 0xb9, 0x5c, 0x71, 0xec, 0xe0, 0x18, 0x11, 0x8d, - 0xb5, 0x72, 0x83, 0x3b, 0xc0, 0x2c, 0xb7, 0x07, 0xf0, 0xff, 0x50, 0xa7, - 0xa1, 0x1a, 0xb4, 0x40, 0xff, 0xa3, 0x24, 0x1a, 0x67, 0xe8, 0x7d, 0xc7, - 0x40, 0x96, 0x03, 0xd6, 0xe8, 0x1f, 0x8d, 0xf4, 0x11, 0xc1, 0x28, 0x00, - 0x8a, 0x31, 0x56, 0x31, 0xdb, 0x7b, 0x66, 0x76, 0x9d, 0xea, 0x16, 0x79, - 0x86, 0x60, 0x2f, 0xb9, 0x66, 0xfe, 0xca, 0x0d, 0x75, 0x3c, 0x1e, 0x65, - 0x7e, 0x36, 0x51, 0xdb, 0x5c, 0x06, 0x7c, 0xfd, 0xfb, 0xfd, 0xc3, 0xd3, - 0xf7, 0xdb, 0x3b, 0xcf, 0xdf, 0x7f, 0x77, 0xf0, 0xfa, 0xfd, 0xe9, 0xf7, - 0xfb, 0xa8, 0xdd, 0xdf, 0x51, 0xec, 0x36, 0xc6, 0x6e, 0xe7, 0xdc, 0x34, - 0x37, 0x6c, 0x49, 0x1e, 0xe4, 0xd3, 0xed, 0x8e, 0x8b, 0x8d, 0xf6, 0xf2, - 0x6d, 0x7c, 0xb8, 0xee, 0xa3, 0x9f, 0xe2, 0xc6, 0x75, 0xc7, 0xf9, 0xac, - 0x07, 0x66, 0x56, 0x71, 0xfa, 0xf6, 0xe4, 0x61, 0xcc, 0x63, 0x98, 0x84, - 0x40, 0xc1, 0x6f, 0x96, 0xba, 0xf0, 0xa4, 0x41, 0x0a, 0xda, 0x63, 0x18, - 0xa0, 0xa5, 0x27, 0x61, 0x1e, 0xfe, 0x04, 0x67, 0x85, 0x3b, 0xcc, 0x0d, - 0xe7, 0xf0, 0x90, 0x59, 0xa9, 0xee, 0x32, 0x9a, 0xfe, 0xa1, 0xcf, 0x78, - 0x18, 0xe4, 0xb2, 0x0a, 0xda, 0x13, 0x8d, 0x63, 0xa0, 0xc7, 0x3e, 0xed, - 0x08, 0x68, 0x88, 0xcf, 0x95, 0x9a, 0xa6, 0xf3, 0x57, 0x33, 0xd2, 0x6d, - 0x1f, 0x68, 0xdb, 0xf5, 0x78, 0x6f, 0xb7, 0xf5, 0x97, 0xdb, 0x5d, 0x3b, - 0x4e, 0xf0, 0x87, 0xf4, 0xc4, 0x3d, 0xe8, 0x98, 0x3c, 0xce, 0x43, 0xf9, - 0x3f, 0x79, 0xf4, 0xfb, 0xda, 0xd0, 0x65, 0x1b, 0xf7, 0xae, 0xdf, 0xf4, - 0xb3, 0xee, 0x35, 0xba, 0xf6, 0x7e, 0x1d, 0xcc, 0xd6, 0xbd, 0x66, 0x97, - 0x9a, 0xd3, 0x78, 0xb5, 0x81, 0x54, 0xc6, 0x8a, 0x99, 0x35, 0x83, 0x97, - 0x37, 0x4c, 0x0e, 0xd1, 0x37, 0xaa, 0x05, 0x38, 0x46, 0x62, 0x2a, 0x96, - 0x4e, 0x4f, 0x4f, 0x8e, 0x62, 0xae, 0xc1, 0x96, 0xd2, 0x23, 0x69, 0x39, - 0xce, 0xe0, 0x46, 0x51, 0x9a, 0x51, 0xd4, 0x3d, 0x7a, 0xd3, 0x61, 0x71, - 0x53, 0x97, 0xba, 0x50, 0x37, 0x6d, 0xce, 0x07, 0xd0, 0x6e, 0x79, 0xb5, - 0xdb, 0x5a, 0xa1, 0x4a, 0xa7, 0x7e, 0xb5, 0xf1, 0x92, 0x0f, 0x27, 0x67, - 0x14, 0x29, 0x9b, 0x69, 0x7e, 0x99, 0x95, 0x45, 0x4e, 0x59, 0x3c, 0x43, - 0x93, 0xd6, 0x46, 0x6a, 0x91, 0xd7, 0x54, 0x98, 0xdc, 0x81, 0x0e, 0x50, - 0x9a, 0xe3, 0x6f, 0xda, 0x8d, 0x7a, 0xf1, 0xbb, 0x68, 0xd7, 0x6f, 0x69, - 0x7f, 0x9c, 0x4b, 0x59, 0x19, 0xe5, 0xa0, 0x95, 0x64, 0x64, 0x52, 0xcd, - 0x98, 0x78, 0xa8, 0x2e, 0x80, 0x13, 0x54, 0x4e, 0x48, 0x40, 0xd5, 0x3f, - 0x4d, 0x2d, 0x0a, 0x79, 0xd1, 0xe0, 0xac, 0x46, 0x98, 0x43, 0x85, 0xca, - 0x2f, 0x66, 0x51, 0x99, 0x44, 0x3b, 0x76, 0x9f, 0xe5, 0x04, 0x3e, 0x20, - 0xf8, 0x0d, 0x98, 0xee, 0x30, 0x2a, 0xd3, 0x31, 0x17, 0x9b, 0x57, 0x41, - 0xa7, 0xdc, 0xbc, 0xa8, 0xaa, 0x6c, 0x08, 0xaa, 0xe5, 0xb9, 0x28, 0x75, - 0x55, 0xca, 0x58, 0x30, 0x9c, 0x1f, 0x81, 0x7b, 0x68, 0xfa, 0x19, 0x52, - 0xe9, 0xb6, 0x94, 0xfb, 0x25, 0x81, 0xcc, 0xbe, 0x6b, 0x49, 0xea, 0x40, - 0xf5, 0xf2, 0x32, 0xc3, 0x61, 0x99, 0xbe, 0x92, 0x68, 0x56, 0xf0, 0x26, - 0x0b, 0xec, 0xe3, 0x14, 0x1b, 0xe6, 0x02, 0xa3, 0x38, 0x25, 0x00, 0xd9, - 0x2a, 0xcd, 0xab, 0xcc, 0xa7, 0xb9, 0x4b, 0x41, 0xe4, 0xb2, 0xe8, 0x88, - 0x65, 0x8a, 0xa0, 0x08, 0x97, 0xa9, 0x9c, 0xa1, 0xb8, 0x72, 0x4d, 0x9b, - 0x4f, 0x84, 0x17, 0x9b, 0x65, 0xd8, 0x7b, 0xc6, 0xc7, 0xdf, 0xc8, 0xa9, - 0xf5, 0xb9, 0xf2, 0x12, 0x5a, 0x40, 0x84, 0x2c, 0xc4, 0x4f, 0x34, 0x0a, - 0x6b, 0x35, 0xef, 0xac, 0x61, 0xc5, 0x17, 0xb0, 0x23, 0x3a, 0xfd, 0xbb, - 0x68, 0x35, 0x86, 0xb0, 0x77, 0xe7, 0x9f, 0x1a, 0x21, 0xc3, 0x5b, 0xe1, - 0xb0, 0x19, 0x87, 0xbb, 0xaf, 0x00, 0xf5, 0xd9, 0x6c, 0xa0, 0xbb, 0x0c, - 0xf8, 0xd2, 0x81, 0x3f, 0xf4, 0xda, 0x4f, 0x87, 0x11, 0x2f, 0x27, 0xd9, - 0x47, 0x6a, 0x78, 0xe2, 0x27, 0x15, 0x31, 0x54, 0x87, 0x1b, 0x30, 0x40, - 0x40, 0x17, 0x89, 0x38, 0x31, 0xa2, 0x63, 0x54, 0x53, 0x17, 0x47, 0x6a, - 0x6d, 0x9d, 0x34, 0x4a, 0xd4, 0x03, 0x5f, 0x61, 0x51, 0x31, 0x1b, 0x38, - 0x98, 0x16, 0x06, 0x13, 0x09, 0xcc, 0x82, 0x60, 0x12, 0x58, 0x2d, 0x27, - 0xd1, 0xfa, 0xec, 0x42, 0xf0, 0x30, 0xbb, 0x11, 0x30, 0x7d, 0x44, 0x8a, - 0xec, 0x23, 0x30, 0x48, 0x02, 0xbf, 0xc5, 0x49, 0xd2, 0x9a, 0xb3, 0x14, - 0x2d, 0x8a, 0xd8, 0x44, 0xa7, 0xd7, 0xf8, 0xc6, 0x29, 0x68, 0x0a, 0x54, - 0x8b, 0x15, 0xc0, 0xdf, 0xd2, 0x56, 0x3c, 0xf8, 0x2b, 0xca, 0xe9, 0x1c, - 0x44, 0xe9, 0xe0, 0x7c, 0xe0, 0xac, 0xdf, 0xbc, 0xb9, 0x89, 0x91, 0x91, - 0xcd, 0xba, 0xd8, 0xe4, 0x69, 0x07, 0xf8, 0x9f, 0x2f, 0x82, 0x10, 0xa7, - 0x7a, 0x7e, 0x92, 0xd0, 0xc3, 0xd5, 0xaf, 0xa8, 0xaf, 0x98, 0xc8, 0xa6, - 0x52, 0xa0, 0x3d, 0x1e, 0x3e, 0xc1, 0xc0, 0xea, 0xfc, 0x76, 0x0b, 0x4e, - 0xb6, 0xa3, 0xc8, 0xbf, 0x0d, 0x38, 0xf9, 0xa3, 0x5a, 0x3d, 0x1f, 0x3c, - 0x1f, 0xbe, 0xdc, 0xc6, 0x75, 0x82, 0xcb, 0xec, 0x36, 0x3b, 0xe8, 0x47, - 0x25, 0x18, 0xfd, 0x88, 0x9b, 0x61, 0x0b, 0x66, 0xb9, 0xd9, 0x81, 0xd3, - 0xde, 0xc0, 0xe9, 0x92, 0xd0, 0x76, 0x6b, 0x38, 0x49, 0x97, 0xcf, 0x9f, - 0x85, 0xaa, 0x56, 0xdf, 0xe5, 0x65, 0x3a, 0x2a, 0xce, 0xf3, 0xec, 0x37, - 0xea, 0x5f, 0x8e, 0x9e, 0x97, 0x36, 0xde, 0x5b, 0x03, 0x77, 0x55, 0x41, - 0x10, 0x14, 0x6a, 0x23, 0x3c, 0x61, 0xeb, 0xc3, 0xa3, 0xfd, 0x7c, 0x94, - 0x51, 0xd6, 0x2f, 0x87, 0xc9, 0x84, 0x88, 0x10, 0x85, 0x19, 0xc1, 0x69, - 0xd2, 0xb1, 0x41, 0x9c, 0xf3, 0xd0, 0x48, 0x10, 0xa7, 0xae, 0xd2, 0xa6, - 0xeb, 0x63, 0x7b, 0x25, 0x98, 0x51, 0xfe, 0x37, 0xc0, 0x4d, 0x6d, 0x54, - 0x52, 0x33, 0x02, 0x19, 0xc2, 0xe2, 0x7d, 0x64, 0x99, 0xd6, 0x90, 0xcb, - 0x4e, 0xaf, 0x60, 0xce, 0x40, 0x0b, 0xb0, 0x54, 0x5e, 0xbc, 0x66, 0x69, - 0x2f, 0x2a, 0x6e, 0x35, 0xc2, 0x20, 0x91, 0x19, 0xdd, 0x7c, 0x77, 0x44, - 0xd3, 0x40, 0x59, 0xdd, 0x18, 0x49, 0x28, 0x61, 0xd1, 0xb6, 0xe6, 0x45, - 0x0a, 0x37, 0x83, 0xf7, 0x7a, 0xf8, 0xa7, 0xae, 0x19, 0xbe, 0xdf, 0x87, - 0x02, 0xc4, 0xac, 0x46, 0x6d, 0x0f, 0x2e, 0x59, 0x73, 0x78, 0x93, 0xa5, - 0xb7, 0x1a, 0x7a, 0x72, 0x2e, 0x09, 0x35, 0xd6, 0x61, 0x47, 0xf4, 0x00, - 0x63, 0x51, 0xc5, 0x7e, 0x42, 0xb6, 0x78, 0x81, 0x04, 0xa1, 0x9b, 0x77, - 0x16, 0xdf, 0x1d, 0xe0, 0xe5, 0x40, 0xa4, 0x6b, 0x99, 0x05, 0x1d, 0x81, - 0xc8, 0x3f, 0x5c, 0x64, 0x5d, 0x2f, 0x61, 0x9e, 0xd8, 0x92, 0xb3, 0x3e, - 0x4e, 0xc6, 0x94, 0x64, 0xe8, 0x44, 0x31, 0xa4, 0x9a, 0x5a, 0x05, 0x79, - 0xee, 0x10, 0xdc, 0x25, 0x9b, 0x04, 0x1c, 0x43, 0xa4, 0x90, 0x2d, 0xa8, - 0x19, 0x88, 0xc2, 0x26, 0x1b, 0x42, 0xe9, 0x23, 0xe7, 0x45, 0x20, 0x17, - 0xc3, 0x22, 0xa2, 0x78, 0xee, 0x88, 0x52, 0x2f, 0x5d, 0x9c, 0x86, 0xe9, - 0xf0, 0x07, 0x3d, 0x00, 0xda, 0xee, 0x9d, 0xe0, 0x76, 0x1f, 0x16, 0x6d, - 0xd7, 0x0a, 0x4a, 0x62, 0xde, 0x9e, 0x98, 0x34, 0x8a, 0xd8, 0x55, 0x72, - 0xad, 0xbd, 0xab, 0x85, 0xe1, 0x20, 0x95, 0x7b, 0x51, 0x63, 0xef, 0x1e, - 0xf5, 0x23, 0xc9, 0x99, 0x6f, 0xe3, 0xee, 0x08, 0xb3, 0x66, 0x88, 0x48, - 0x60, 0x18, 0x1b, 0x01, 0x3d, 0x8a, 0xe0, 0x7d, 0x90, 0xcf, 0xe2, 0xa6, - 0x91, 0x1e, 0xf2, 0x67, 0x73, 0x1c, 0xe1, 0xa0, 0xb4, 0x24, 0xd6, 0xab, - 0xc6, 0x23, 0x9e, 0x86, 0x64, 0xc4, 0x10, 0xd5, 0x08, 0xb5, 0x87, 0xd0, - 0x58, 0x29, 0xf5, 0x43, 0xe5, 0xc2, 0x65, 0xda, 0x9a, 0x28, 0x3e, 0xe9, - 0x7b, 0x6e, 0xc3, 0x49, 0x3d, 0x8f, 0x91, 0x49, 0xf5, 0x71, 0x5b, 0x84, - 0x66, 0x83, 0xe2, 0x94, 0x74, 0x36, 0x47, 0x99, 0xf9, 0x5c, 0xc9, 0x1a, - 0x8d, 0x04, 0x98, 0xbb, 0xc1, 0x12, 0x0b, 0x0c, 0xf1, 0x2d, 0x72, 0x98, - 0xb6, 0x07, 0x5b, 0xd1, 0x9e, 0xa3, 0xa9, 0x7d, 0x7d, 0xa3, 0xaa, 0x46, - 0x1c, 0x08, 0x5f, 0x53, 0x54, 0xf5, 0x86, 0x24, 0x50, 0x51, 0x40, 0xaa, - 0x2e, 0xec, 0x76, 0x58, 0xc9, 0xc1, 0x23, 0x65, 0x65, 0x4b, 0x19, 0x3f, - 0x42, 0x51, 0xe1, 0xfb, 0x1d, 0xac, 0x3f, 0x15, 0x2c, 0x30, 0xe3, 0x79, - 0x1e, 0xa5, 0x70, 0x8e, 0xf5, 0x55, 0x9a, 0x8a, 0x53, 0x5d, 0xdb, 0x91, - 0x3b, 0xfc, 0x51, 0x1b, 0x4a, 0x7d, 0xec, 0x87, 0x5d, 0xc9, 0x7d, 0xc6, - 0x93, 0x41, 0x56, 0x5b, 0x83, 0x75, 0x22, 0x60, 0x5c, 0x28, 0x73, 0xb5, - 0x1a, 0xc8, 0x63, 0x4d, 0xb4, 0xfe, 0xf6, 0x6d, 0xe1, 0x38, 0x86, 0xf2, - 0x66, 0xd9, 0x19, 0xc5, 0xc7, 0x6b, 0xc0, 0x2f, 0x2b, 0x6e, 0x8d, 0x3c, - 0xb8, 0x7d, 0xb3, 0x2f, 0x02, 0x47, 0x7b, 0x20, 0x47, 0x04, 0x0e, 0x7d, - 0x4f, 0x25, 0x02, 0x7d, 0x9f, 0xe2, 0xd2, 0x76, 0xe8, 0x77, 0x6e, 0x9e, - 0x66, 0x86, 0x1d, 0xbc, 0xf6, 0x0d, 0xf9, 0x26, 0x97, 0xbf, 0x39, 0x91, - 0x5b, 0xcd, 0xe3, 0x62, 0xbf, 0x87, 0x85, 0x02, 0x13, 0x26, 0x6c, 0xd4, - 0x04, 0x25, 0x98, 0x39, 0xcf, 0x66, 0xc6, 0x4f, 0xaa, 0x4f, 0x27, 0x73, - 0xf8, 0x59, 0x42, 0xd8, 0x99, 0x5e, 0x7f, 0x93, 0xb1, 0x23, 0x8e, 0x9c, - 0x35, 0xb6, 0xea, 0xc6, 0xe8, 0xf3, 0x4d, 0xf2, 0xbb, 0xe8, 0x1e, 0x7e, - 0x2c, 0x43, 0xe4, 0x37, 0x0b, 0x0c, 0xe9, 0xb1, 0x2e, 0x51, 0x2e, 0x2d, - 0x11, 0x93, 0xac, 0x4b, 0x57, 0xbb, 0x92, 0x34, 0xf9, 0xdc, 0xaf, 0x54, - 0x2a, 0x3c, 0x59, 0x5a, 0x04, 0x1b, 0xbf, 0xdb, 0xbe, 0xef, 0xed, 0xd5, - 0x0b, 0x8e, 0x96, 0x56, 0xff, 0x34, 0x42, 0x46, 0xc8, 0xe3, 0xbc, 0xc0, - 0x9b, 0xf4, 0x58, 0xd7, 0x17, 0x16, 0x94, 0x91, 0xa8, 0xe3, 0xc7, 0xf2, - 0x31, 0x71, 0x57, 0x49, 0x8f, 0x43, 0xe7, 0x6d, 0xba, 0x58, 0x4a, 0xee, - 0x77, 0xcc, 0xa8, 0xe7, 0x91, 0xef, 0x74, 0x4b, 0x64, 0x51, 0x0f, 0x51, - 0x4b, 0x23, 0x49, 0x6f, 0x81, 0xbc, 0xec, 0xf5, 0x53, 0x14, 0x71, 0xa7, - 0x07, 0x27, 0x1b, 0xd1, 0x49, 0x2b, 0x9f, 0x8d, 0x90, 0xa4, 0x51, 0x5f, - 0x74, 0x75, 0x0d, 0x96, 0x52, 0xec, 0x9f, 0x5a, 0x92, 0xfa, 0x94, 0x09, - 0xaf, 0xd4, 0x42, 0x46, 0x1a, 0x31, 0x5c, 0x6b, 0x68, 0x59, 0x22, 0xe5, - 0xbf, 0x2d, 0xea, 0x02, 0x61, 0xe2, 0x47, 0x84, 0x3e, 0x28, 0x09, 0x5b, - 0x9a, 0x68, 0x65, 0x96, 0x27, 0xd0, 0x4f, 0x1e, 0xad, 0x9b, 0xc6, 0xae, - 0x34, 0x1f, 0xb5, 0x26, 0x42, 0xe9, 0xcf, 0x9a, 0x44, 0x03, 0xd4, 0x3c, - 0x3a, 0x4f, 0x73, 0x14, 0xb3, 0xc8, 0xe8, 0x51, 0x52, 0x07, 0x8a, 0x03, - 0xe9, 0x6a, 0x51, 0x33, 0x88, 0x3a, 0xd5, 0xea, 0x12, 0x14, 0xd4, 0x76, - 0x1d, 0xb2, 0xbc, 0x8c, 0x40, 0x71, 0xe5, 0x26, 0x6a, 0x91, 0x89, 0x47, - 0xc6, 0x43, 0x0c, 0x60, 0x64, 0x39, 0xf6, 0xca, 0x26, 0xca, 0xc1, 0x2b, - 0x0c, 0x57, 0x71, 0x8e, 0xf5, 0x45, 0xf8, 0x56, 0x55, 0x5d, 0xec, 0x00, - 0xa7, 0xde, 0x19, 0x3c, 0x47, 0x7d, 0xec, 0x02, 0xb4, 0xc6, 0x54, 0x80, - 0x13, 0x51, 0xd3, 0xf5, 0x10, 0x3d, 0xab, 0x74, 0x3a, 0x69, 0x8f, 0xa7, - 0x90, 0x4d, 0x61, 0x5f, 0xff, 0xad, 0x32, 0xc0, 0x1e, 0x0c, 0x71, 0x90, - 0x67, 0x27, 0x32, 0x80, 0xbf, 0x47, 0xd5, 0x2a, 0x7d, 0xa4, 0xdb, 0x6e, - 0xa0, 0xbf, 0x21, 0x95, 0xff, 0x73, 0x81, 0xe7, 0xb2, 0x27, 0xbe, 0x31, - 0x8f, 0xae, 0x49, 0x73, 0x43, 0xe2, 0xc6, 0x14, 0x80, 0x34, 0x1f, 0x73, - 0x4d, 0xe4, 0x30, 0x83, 0x13, 0x2b, 0xaf, 0x8d, 0x47, 0xad, 0xc9, 0x02, - 0x5f, 0x52, 0xff, 0x14, 0x7a, 0x2b, 0xd8, 0x14, 0x68, 0x10, 0xfd, 0x8d, - 0x26, 0x95, 0xb7, 0xc5, 0x05, 0x82, 0xea, 0xeb, 0xb7, 0x87, 0x2f, 0x8f, - 0xdf, 0x1e, 0x36, 0x9b, 0x09, 0xd4, 0x2c, 0x32, 0xa8, 0x1e, 0xb1, 0xbd, - 0xba, 0x5f, 0x17, 0xe4, 0x97, 0xe1, 0x3e, 0x55, 0xb4, 0xef, 0x59, 0x9e, - 0xa1, 0x17, 0x34, 0x3a, 0xf9, 0xe1, 0x85, 0x59, 0x5d, 0x46, 0x72, 0x0a, - 0x57, 0xa5, 0x83, 0xf6, 0xd9, 0x6c, 0x6d, 0x67, 0x0b, 0x61, 0x56, 0x22, - 0x18, 0xe5, 0x67, 0x05, 0xc9, 0x29, 0xbb, 0x3e, 0x2a, 0x06, 0xe5, 0x32, - 0x5d, 0xed, 0x55, 0x04, 0x26, 0x00, 0x3a, 0x68, 0xb1, 0xf5, 0x90, 0x19, - 0xd4, 0xbb, 0x47, 0xa4, 0x67, 0x53, 0x8b, 0x5e, 0xf1, 0x7a, 0x8d, 0xb1, - 0x77, 0xc0, 0x5a, 0xec, 0x27, 0x76, 0xd2, 0x3e, 0xa3, 0xbe, 0xb4, 0xe1, - 0xcf, 0xae, 0xe5, 0xab, 0x3c, 0x35, 0xbb, 0x94, 0x51, 0x8b, 0xe6, 0x94, - 0xb7, 0x71, 0x48, 0x5c, 0xa1, 0x13, 0x85, 0xa2, 0xf2, 0x0e, 0x7e, 0x5a, - 0xc4, 0x9b, 0x25, 0xce, 0x59, 0xda, 0x2d, 0xe2, 0x4f, 0x66, 0xa3, 0x65, - 0xc2, 0xf5, 0x6a, 0xa3, 0xfb, 0x4b, 0xcc, 0x9e, 0xca, 0x07, 0xad, 0xfd, - 0x79, 0xad, 0x69, 0x44, 0x5a, 0xfb, 0xf7, 0x8a, 0xcd, 0x82, 0x28, 0x0c, - 0xa9, 0x8d, 0x90, 0x42, 0xe2, 0xdc, 0xa6, 0xbb, 0xa4, 0xaf, 0x79, 0x3b, - 0xb3, 0xbc, 0x1a, 0x5d, 0x37, 0x69, 0x10, 0x40, 0x01, 0xb7, 0xa0, 0x83, - 0xd2, 0x3e, 0xb9, 0x2e, 0xe6, 0x15, 0xaa, 0xad, 0xdc, 0x40, 0x68, 0x02, - 0x46, 0x30, 0x15, 0x46, 0x99, 0x0d, 0xc7, 0xa7, 0x30, 0xe6, 0x94, 0xe5, - 0x5e, 0x5c, 0x2e, 0x45, 0xc7, 0xbd, 0xb4, 0xb9, 0xd0, 0x2d, 0xc0, 0x01, - 0xe0, 0xba, 0x77, 0x6d, 0x0e, 0x61, 0x61, 0x02, 0x17, 0x48, 0xcb, 0xac, - 0xfa, 0xd0, 0x3e, 0xee, 0x3f, 0xa1, 0xef, 0x87, 0x9a, 0x67, 0x5e, 0x65, - 0x15, 0xf6, 0xba, 0xc8, 0x26, 0xcd, 0x8e, 0xb5, 0x65, 0x4a, 0x45, 0xd5, - 0xba, 0x4a, 0x72, 0xa6, 0x15, 0xdc, 0xb5, 0x23, 0xd4, 0x1b, 0x8e, 0x77, - 0x81, 0x79, 0x0f, 0xc6, 0x01, 0xca, 0xd4, 0x5a, 0xff, 0xa4, 0xb4, 0x0f, - 0xc3, 0xed, 0x38, 0x69, 0x77, 0x29, 0x77, 0x06, 0xef, 0x76, 0x75, 0x9d, - 0xd7, 0xc8, 0x88, 0x59, 0x6a, 0x8c, 0x8a, 0x92, 0xf4, 0x1c, 0x24, 0x4d, - 0x7b, 0x55, 0x2b, 0x6a, 0x2d, 0xf6, 0xe5, 0x93, 0x2f, 0x83, 0xbd, 0x7b, - 0xa8, 0x58, 0x9c, 0x72, 0xbd, 0x89, 0x71, 0xf0, 0xc7, 0xa0, 0x2d, 0xda, - 0x58, 0xbe, 0x1d, 0x0e, 0x49, 0x00, 0xed, 0xf2, 0x14, 0xf1, 0xe2, 0x3d, - 0x5e, 0x4f, 0x42, 0x55, 0xc6, 0xf0, 0xb1, 0x6a, 0xf0, 0x97, 0xd4, 0x1b, - 0x44, 0x82, 0x4f, 0xaa, 0xc3, 0x0f, 0xa2, 0x77, 0x39, 0xa1, 0x04, 0xe0, - 0x9e, 0xbd, 0x44, 0xc0, 0x77, 0xd6, 0x8b, 0x10, 0x13, 0x10, 0x0e, 0x0b, - 0x25, 0x64, 0x80, 0x35, 0x31, 0x1f, 0xb4, 0x2b, 0xc3, 0x2c, 0x68, 0x94, - 0x0d, 0x7a, 0x61, 0x34, 0x73, 0x98, 0xae, 0xb3, 0xf0, 0x3b, 0x65, 0x67, - 0x2f, 0x33, 0xaf, 0x23, 0x18, 0x4a, 0xfd, 0x8a, 0x08, 0x17, 0xae, 0x2f, - 0x8d, 0x8d, 0x79, 0xe1, 0xe9, 0x74, 0xca, 0x1d, 0x2d, 0x70, 0x04, 0x32, - 0xb0, 0xb9, 0xb1, 0x09, 0x15, 0xd8, 0xbb, 0x8e, 0x07, 0xaf, 0x55, 0x36, - 0x35, 0x68, 0x81, 0x99, 0x4c, 0x07, 0x36, 0x41, 0xd6, 0xd4, 0xec, 0x28, - 0x84, 0x9b, 0xb7, 0xbe, 0x49, 0xda, 0x1b, 0xe7, 0x93, 0x62, 0x4f, 0x3b, - 0x86, 0x4f, 0xf4, 0x52, 0x9a, 0x7a, 0x09, 0x4a, 0x30, 0x0c, 0xc7, 0x30, - 0x6b, 0xe8, 0x85, 0xe1, 0x98, 0xc9, 0xb6, 0xe3, 0x47, 0x0d, 0xc5, 0x57, - 0xa9, 0xe4, 0x60, 0x93, 0xdc, 0x4b, 0x88, 0x37, 0x92, 0x3c, 0xd4, 0x13, - 0x9f, 0xf8, 0x5b, 0xe4, 0xec, 0xd4, 0x98, 0xdb, 0x12, 0x28, 0xee, 0x23, - 0x52, 0x6e, 0x3e, 0x66, 0x4d, 0x7f, 0x8f, 0x96, 0x93, 0x7e, 0x24, 0x35, - 0x15, 0xa8, 0xf9, 0x6b, 0x49, 0x51, 0x1a, 0x76, 0x0c, 0x87, 0x1b, 0x01, - 0x0a, 0x0b, 0xa1, 0x16, 0xc2, 0xdc, 0xfc, 0x35, 0xec, 0x1d, 0xaa, 0xb8, - 0x57, 0x05, 0x11, 0x20, 0x50, 0xc4, 0xfb, 0xf3, 0xb4, 0xc6, 0xdf, 0xae, - 0x3f, 0xda, 0xc0, 0x0d, 0x09, 0x0f, 0x37, 0x47, 0xc4, 0x03, 0xea, 0x6b, - 0xd1, 0x5c, 0x86, 0xe9, 0x73, 0x11, 0xad, 0x3b, 0xe1, 0xdc, 0x67, 0x08, - 0x7f, 0xe8, 0x6d, 0xeb, 0xe8, 0xe2, 0xbc, 0x9c, 0x47, 0xe7, 0xa0, 0xe8, - 0xcf, 0x6f, 0xda, 0x57, 0x7e, 0xd4, 0xdb, 0x55, 0x7e, 0xf7, 0xe8, 0x85, - 0xbb, 0x9b, 0xb2, 0x71, 0xb0, 0x73, 0xe1, 0xe1, 0x88, 0x9b, 0x70, 0x15, - 0x84, 0x6c, 0xa8, 0x92, 0xad, 0x19, 0xcd, 0xba, 0x08, 0x64, 0xfb, 0xe9, - 0x37, 0xe1, 0xe1, 0x1a, 0x87, 0xc2, 0x23, 0xe8, 0xb0, 0x74, 0x09, 0xc7, - 0x30, 0xd4, 0x2c, 0xe1, 0x6b, 0x76, 0x0e, 0x0c, 0x4c, 0x27, 0x19, 0x04, - 0xb6, 0x63, 0x56, 0x8c, 0xd9, 0x1b, 0x74, 0xe3, 0x6e, 0xe0, 0x93, 0xba, - 0x1b, 0x82, 0x30, 0x5f, 0xb9, 0x5f, 0xc6, 0x3e, 0xa5, 0x61, 0xa6, 0xa7, - 0xed, 0xf3, 0xc6, 0xb6, 0x1b, 0x83, 0x75, 0x27, 0x1a, 0x9e, 0x5e, 0x76, - 0x3f, 0x22, 0x8f, 0x8a, 0x51, 0xed, 0x7c, 0x03, 0x3e, 0xd0, 0x41, 0xb4, - 0x24, 0x81, 0x42, 0xdf, 0x86, 0xc0, 0xa2, 0xe4, 0x31, 0xbb, 0xf1, 0xdb, - 0xf0, 0x49, 0xef, 0xa4, 0xe1, 0x87, 0x2c, 0xd9, 0x5a, 0xc7, 0xcc, 0x07, - 0x14, 0x1e, 0xae, 0x79, 0xc8, 0x06, 0xd0, 0x84, 0x97, 0x81, 0xe7, 0xec, - 0x46, 0xcf, 0x86, 0x4e, 0xbe, 0xc0, 0x2d, 0x4e, 0x9a, 0xc6, 0x58, 0x7a, - 0xd0, 0xf4, 0x44, 0xe8, 0x9c, 0xa7, 0x18, 0xe3, 0x5a, 0x94, 0xa3, 0xf4, - 0x3d, 0xeb, 0x19, 0x49, 0x09, 0x17, 0xee, 0xfd, 0x0d, 0xdb, 0x32, 0x95, - 0x26, 0x53, 0xd7, 0x33, 0x54, 0xca, 0x2d, 0x3b, 0x1e, 0x51, 0x88, 0x0f, - 0x15, 0x2f, 0x6a, 0xba, 0x04, 0x96, 0x03, 0xfd, 0x9e, 0x6b, 0xd5, 0x3b, - 0x2e, 0x80, 0x9d, 0x30, 0x32, 0xcd, 0x14, 0xe7, 0x45, 0x96, 0x6b, 0x27, - 0x42, 0x11, 0xb8, 0xce, 0x1a, 0xe9, 0xb9, 0xb8, 0x63, 0xb8, 0x90, 0xb3, - 0xba, 0x37, 0xfb, 0x80, 0xb8, 0xdd, 0x46, 0xcd, 0x7a, 0x8f, 0xa7, 0xb5, - 0x8c, 0x6f, 0xf2, 0xf3, 0x7a, 0xec, 0xfc, 0x55, 0x82, 0xd1, 0x6f, 0xa0, - 0x16, 0x1b, 0x1c, 0xd1, 0x57, 0x9f, 0x9a, 0x5a, 0xd4, 0x7b, 0xee, 0x2f, - 0x21, 0x67, 0xe6, 0xaf, 0xef, 0xd6, 0x2c, 0x9d, 0x9f, 0x0c, 0x33, 0xf4, - 0x46, 0x57, 0x03, 0x65, 0xeb, 0x37, 0x10, 0xe4, 0xca, 0x7c, 0x7d, 0xd4, - 0xc5, 0x83, 0x31, 0x64, 0x81, 0xe2, 0x8d, 0x98, 0x3a, 0x4c, 0xfc, 0xdf, - 0x80, 0xa5, 0xcf, 0xaf, 0xc6, 0x3d, 0x39, 0x51, 0x0c, 0xce, 0x9b, 0x6d, - 0x33, 0x7a, 0x1b, 0xa3, 0x06, 0x0d, 0xab, 0x62, 0xba, 0x40, 0xa7, 0x10, - 0x96, 0xa5, 0xf1, 0x41, 0x4d, 0xba, 0xb7, 0x4d, 0x72, 0x81, 0x8d, 0xf6, - 0x6e, 0x28, 0xc2, 0x3f, 0xd6, 0x52, 0x70, 0x68, 0x88, 0x76, 0x85, 0xd2, - 0x97, 0x9c, 0xad, 0x3c, 0xae, 0xab, 0xe4, 0x7f, 0x56, 0xce, 0xc9, 0x94, - 0x01, 0xf2, 0xeb, 0x16, 0x2b, 0x32, 0x6d, 0x4b, 0xac, 0x8c, 0x53, 0x54, - 0xe7, 0xe5, 0x9a, 0xe9, 0x07, 0x5b, 0x8e, 0xb3, 0xec, 0x92, 0x76, 0xd3, - 0x6f, 0x39, 0xbb, 0x51, 0x15, 0x81, 0x47, 0xdc, 0xfd, 0xe7, 0x1e, 0x70, - 0xf6, 0xdb, 0x3c, 0x21, 0xd7, 0xad, 0x8a, 0x2c, 0x59, 0x45, 0xe3, 0x96, - 0x2f, 0xdb, 0xe9, 0x99, 0x7b, 0xbf, 0x75, 0x35, 0xcd, 0xfb, 0x8d, 0x1a, - 0x3a, 0x25, 0x58, 0xeb, 0xca, 0x3a, 0xc8, 0xfe, 0xba, 0xf5, 0x9e, 0x2c, - 0xaf, 0xef, 0x84, 0xc0, 0xc8, 0xab, 0x81, 0x6e, 0x9f, 0x00, 0x8d, 0x28, - 0x0f, 0x5d, 0x8d, 0x09, 0xa3, 0xbb, 0x60, 0xea, 0x33, 0x3a, 0xd7, 0x59, - 0xf0, 0xe9, 0x78, 0x3e, 0x5d, 0xee, 0x0d, 0x1e, 0xbf, 0xf7, 0xe2, 0xf0, - 0xd5, 0x21, 0x1f, 0x7b, 0xe4, 0xfb, 0x37, 0x26, 0x45, 0xd1, 0xed, 0xe2, - 0xf8, 0x11, 0x57, 0x29, 0xae, 0x5d, 0xd7, 0x75, 0x87, 0xfb, 0x06, 0x6a, - 0x70, 0x37, 0x48, 0xe1, 0x0b, 0x6c, 0x6b, 0x35, 0xa2, 0x2c, 0x12, 0xd3, - 0x1a, 0xcb, 0x4f, 0xd7, 0xd7, 0x98, 0x7c, 0x23, 0x79, 0xe0, 0x71, 0x00, - 0xb1, 0xe9, 0xa4, 0xc4, 0x8e, 0xdf, 0x74, 0x31, 0xd0, 0xf3, 0x24, 0xed, - 0x67, 0x2e, 0x12, 0x6e, 0xc4, 0xc1, 0x10, 0x35, 0x85, 0x3a, 0x6c, 0x27, - 0x4d, 0xfc, 0xef, 0xa8, 0x98, 0xb6, 0x29, 0xc2, 0x64, 0x05, 0x00, 0xfb, - 0xe8, 0xf2, 0x4e, 0x35, 0xb2, 0x01, 0x1d, 0x8e, 0x83, 0x9d, 0xbc, 0x32, - 0xca, 0x6a, 0xa3, 0xb2, 0x57, 0x64, 0x2c, 0xbc, 0x1b, 0x5c, 0xf3, 0x48, - 0x54, 0x8b, 0x7f, 0x0b, 0x34, 0x08, 0xd7, 0x43, 0xa6, 0xf4, 0x3b, 0x09, - 0x4a, 0xca, 0xbb, 0x69, 0x7e, 0x8e, 0x60, 0x56, 0x13, 0xaf, 0xec, 0xb4, - 0xa3, 0xf3, 0x9b, 0x7b, 0x00, 0xb7, 0x09, 0xd3, 0xdd, 0x37, 0xb8, 0xb1, - 0x3b, 0x3f, 0x96, 0xce, 0x65, 0xd5, 0xc5, 0x8a, 0x01, 0xba, 0xf4, 0x7c, - 0x1c, 0x37, 0xdd, 0xaf, 0x71, 0xd9, 0xe7, 0x91, 0x41, 0x9e, 0xec, 0xd1, - 0x7f, 0x82, 0x28, 0x7d, 0x64, 0x0a, 0x93, 0x45, 0xf6, 0xf2, 0xe8, 0xd5, - 0xe1, 0x46, 0xf4, 0x56, 0xf2, 0xdb, 0xd0, 0x72, 0xbd, 0xae, 0x69, 0x47, - 0x61, 0x80, 0xf5, 0x6c, 0x00, 0x6a, 0x69, 0x42, 0x69, 0x3c, 0x68, 0x05, - 0x8e, 0x8b, 0x91, 0xd7, 0x94, 0x03, 0x43, 0xbc, 0x1b, 0x9a, 0xd2, 0x87, - 0x46, 0x10, 0x63, 0x29, 0x0d, 0xb6, 0xfb, 0x62, 0x6f, 0x8b, 0xd7, 0x4d, - 0x9d, 0x08, 0x94, 0x94, 0x47, 0x29, 0x40, 0x34, 0x75, 0x7b, 0xcb, 0xde, - 0xe2, 0xc4, 0x95, 0x1f, 0x7b, 0xa6, 0x5b, 0x6c, 0x7d, 0x2c, 0x57, 0xc9, - 0xb5, 0x7f, 0xa8, 0x5b, 0xf1, 0xe3, 0x2f, 0xbf, 0x6c, 0x68, 0xd6, 0x2a, - 0x4e, 0xd0, 0xb7, 0xf2, 0x64, 0x6b, 0x8b, 0xbe, 0xcd, 0x6b, 0xc9, 0x03, - 0xbf, 0x88, 0xbf, 0xa4, 0x17, 0x9b, 0xaf, 0x55, 0x29, 0x50, 0xd0, 0xb8, - 0xfb, 0xbd, 0x18, 0x7f, 0x13, 0x98, 0x8e, 0x68, 0xa5, 0xf3, 0xad, 0x2f, - 0x71, 0xba, 0xc0, 0x5b, 0xf4, 0x30, 0x6f, 0x63, 0x31, 0x99, 0x20, 0xa5, - 0xe1, 0x93, 0xda, 0x32, 0xf4, 0x2a, 0x29, 0xc7, 0xfe, 0xe7, 0x6e, 0xf5, - 0xe3, 0xed, 0xae, 0xcf, 0x25, 0x6e, 0x47, 0xe5, 0x8e, 0x78, 0x9e, 0x78, - 0xd5, 0xd7, 0xff, 0xb4, 0xc1, 0xf8, 0x5a, 0xed, 0x81, 0xb6, 0x61, 0x45, - 0xdb, 0x5f, 0x7e, 0xd9, 0xc7, 0x95, 0x3d, 0xf9, 0xf2, 0xcb, 0xce, 0x86, - 0x47, 0xce, 0x34, 0x57, 0x85, 0xf5, 0xff, 0xe3, 0xeb, 0x96, 0x68, 0x2a, - 0x98, 0x26, 0x0a, 0xcf, 0x83, 0xbf, 0xf9, 0x2a, 0x7a, 0x73, 0x7c, 0x76, - 0xe8, 0xf8, 0xdc, 0xa5, 0x31, 0xa5, 0x53, 0x17, 0x4e, 0xe9, 0x6d, 0x73, - 0x2c, 0x39, 0x62, 0x7f, 0x1e, 0x87, 0x72, 0x12, 0xaf, 0x4a, 0x50, 0xe3, - 0x4d, 0x4e, 0xaf, 0x3a, 0xd6, 0x74, 0x28, 0xeb, 0x2e, 0xc6, 0x32, 0x25, - 0x4e, 0xad, 0xf8, 0x8f, 0xe8, 0x24, 0x29, 0x2b, 0x29, 0xb1, 0xe6, 0xec, - 0x52, 0xf4, 0x70, 0x05, 0xbb, 0xac, 0x16, 0xe5, 0xcc, 0x84, 0x14, 0x4c, - 0x40, 0x4b, 0xfc, 0x1a, 0xf2, 0xef, 0x6c, 0x98, 0x4d, 0xb3, 0xfa, 0xda, - 0xf8, 0x8d, 0x40, 0x0f, 0x0c, 0x98, 0x5d, 0xc7, 0x12, 0x68, 0x3e, 0xcf, - 0x6a, 0xb7, 0x9d, 0xed, 0x3a, 0xd0, 0xda, 0x06, 0xa7, 0xa9, 0x52, 0x45, - 0x98, 0x24, 0x8c, 0xac, 0x55, 0x20, 0x05, 0x6b, 0xae, 0xc0, 0x5f, 0x43, - 0xa7, 0xe0, 0x9a, 0xe7, 0xc5, 0x4a, 0xa7, 0x0c, 0x17, 0x66, 0x1f, 0x8f, - 0xe9, 0x41, 0xb9, 0xab, 0xe4, 0x27, 0xfb, 0x48, 0x81, 0x74, 0xb8, 0x28, - 0x45, 0x1e, 0xf3, 0xd4, 0xdd, 0x29, 0x23, 0xd4, 0xff, 0x95, 0x92, 0x7f, - 0x15, 0x98, 0x13, 0xc7, 0x71, 0x2b, 0xf4, 0xd7, 0x9a, 0x5b, 0xb0, 0xc8, - 0x6d, 0xdc, 0xbd, 0x35, 0xdc, 0x38, 0x9d, 0x6b, 0x11, 0x7b, 0xde, 0x1c, - 0x00, 0xae, 0xd0, 0x24, 0x3b, 0x5f, 0x94, 0xe1, 0x92, 0xe6, 0xd7, 0xe8, - 0x39, 0x35, 0x1c, 0x43, 0xdd, 0x6a, 0x8a, 0xf6, 0x78, 0x91, 0x5c, 0xa6, - 0x7c, 0x12, 0xda, 0x61, 0x42, 0xf2, 0xbb, 0x29, 0xfa, 0x83, 0x24, 0xd4, - 0x76, 0x31, 0x6b, 0xa6, 0xb6, 0xc4, 0x9d, 0x90, 0x94, 0x50, 0x93, 0x4b, - 0xf4, 0xdb, 0xd8, 0xe9, 0xaa, 0xf1, 0x74, 0xfc, 0x9d, 0x68, 0x65, 0xf0, - 0x6a, 0xe1, 0x69, 0x60, 0xc8, 0xee, 0x90, 0xbd, 0xf9, 0xed, 0xce, 0x90, - 0xaf, 0x71, 0xf6, 0x9d, 0xb8, 0xb5, 0xe4, 0x10, 0xf0, 0x9d, 0xab, 0x7c, - 0x5a, 0x24, 0xe8, 0xac, 0xe3, 0x54, 0x03, 0xcd, 0x59, 0x14, 0xc3, 0x8e, - 0xba, 0x2d, 0xb7, 0x86, 0x6b, 0x9c, 0x26, 0x9f, 0x63, 0xb4, 0xee, 0xf4, - 0xe4, 0xa3, 0x7b, 0x20, 0x9e, 0x4a, 0x1e, 0x86, 0x19, 0x21, 0xce, 0x11, - 0x68, 0x08, 0x87, 0xdd, 0xe0, 0x06, 0xb4, 0x46, 0x94, 0xdc, 0x7c, 0x34, - 0x26, 0x91, 0x3a, 0xfd, 0x58, 0xc3, 0x3f, 0xd3, 0xb1, 0xeb, 0x41, 0x8d, - 0x4e, 0x8f, 0xfe, 0xeb, 0x30, 0x9c, 0xc8, 0xe2, 0x48, 0x93, 0xcf, 0x90, - 0xc8, 0xc2, 0x13, 0xef, 0xec, 0xc4, 0x8f, 0x1f, 0xaf, 0x26, 0x18, 0x0f, - 0xa8, 0x8a, 0x4d, 0xdc, 0xe6, 0x71, 0x22, 0x65, 0xca, 0x09, 0xfe, 0x34, - 0x99, 0xe3, 0x7e, 0x34, 0xf5, 0x30, 0x0c, 0x36, 0xcd, 0x60, 0xd3, 0x35, - 0xfe, 0x8e, 0x3f, 0xe9, 0x2a, 0x6c, 0xc0, 0x6f, 0x85, 0x67, 0xb3, 0xd9, - 0x62, 0x66, 0xc3, 0x14, 0x13, 0x7a, 0x33, 0x1f, 0x5d, 0x33, 0xf5, 0x51, - 0xa7, 0x51, 0x2d, 0x12, 0x60, 0xfd, 0xc9, 0x4b, 0xf7, 0xc8, 0x1d, 0x69, - 0x66, 0x9b, 0x54, 0x23, 0x21, 0x50, 0xe4, 0x81, 0x2d, 0xda, 0x45, 0x0e, - 0x57, 0x78, 0xbd, 0x2a, 0x66, 0x29, 0xeb, 0xb2, 0xc4, 0x6b, 0xc6, 0xc1, - 0x80, 0x26, 0x65, 0x03, 0xe3, 0xc2, 0xe1, 0xec, 0x03, 0x2d, 0x75, 0x85, - 0xf6, 0x65, 0x02, 0x6a, 0xc3, 0x82, 0x39, 0xe8, 0x3a, 0xb3, 0x97, 0x48, - 0x19, 0x4d, 0xc8, 0x69, 0x5a, 0x69, 0x96, 0x7e, 0x30, 0x39, 0x9d, 0xd9, - 0x87, 0x12, 0xc3, 0xbb, 0xb7, 0xaf, 0x38, 0x83, 0x26, 0x69, 0xc4, 0x6f, - 0xe0, 0xb0, 0x48, 0xb2, 0x51, 0xd8, 0x81, 0xb2, 0x19, 0xf2, 0x90, 0xed, - 0x45, 0x9b, 0x86, 0x9a, 0x2e, 0x7e, 0x83, 0x36, 0xeb, 0xb9, 0x4a, 0xd0, - 0x8b, 0xb6, 0x80, 0x73, 0x9c, 0xfa, 0x6b, 0xa6, 0xac, 0x02, 0xfc, 0x1e, - 0xd2, 0x06, 0x3d, 0x55, 0x31, 0x23, 0xd5, 0xd2, 0x85, 0x1c, 0xc6, 0x9d, - 0x83, 0xc1, 0x07, 0x8d, 0x24, 0xd0, 0x26, 0x44, 0x23, 0x63, 0x29, 0xc5, - 0xff, 0x15, 0x48, 0xf6, 0x49, 0x30, 0xa4, 0x9c, 0x4e, 0x3b, 0xf3, 0xe7, - 0xcf, 0x1c, 0x6c, 0x63, 0x22, 0x29, 0xf7, 0xc2, 0xc0, 0x24, 0xbd, 0x37, - 0x9b, 0xef, 0x7a, 0x52, 0x8d, 0xf1, 0x46, 0x5c, 0x7b, 0xea, 0xaf, 0x02, - 0x52, 0x88, 0xbd, 0x98, 0x72, 0xc9, 0x2c, 0xe6, 0x1d, 0xbb, 0xb8, 0x0c, - 0x3d, 0x60, 0xed, 0x82, 0xfa, 0xd4, 0xf1, 0xdf, 0x1c, 0xaa, 0x5c, 0xab, - 0xd6, 0x80, 0x50, 0x48, 0x63, 0xd9, 0xe8, 0x47, 0x6b, 0xb3, 0xb6, 0xfc, - 0x58, 0x07, 0xb1, 0x06, 0x56, 0x3f, 0xfe, 0xee, 0x02, 0x9e, 0x04, 0xf2, - 0x28, 0x37, 0x58, 0xda, 0x8c, 0xd7, 0xa2, 0xcd, 0xf5, 0x71, 0xc2, 0x09, - 0x93, 0xa4, 0x66, 0xed, 0xc0, 0x6d, 0xc3, 0x24, 0x00, 0x1a, 0x7e, 0x83, - 0x6c, 0x0e, 0x8f, 0x35, 0x6a, 0x18, 0x8b, 0x5d, 0xee, 0xf8, 0x60, 0x5f, - 0x9a, 0x6e, 0xf6, 0xf0, 0x33, 0x9d, 0x6f, 0xa7, 0x04, 0xa9, 0x16, 0xad, - 0x7b, 0x31, 0x1a, 0x64, 0x66, 0x48, 0xf5, 0x38, 0x6f, 0x88, 0xd2, 0x34, - 0x8b, 0xa4, 0x2e, 0xa6, 0xa4, 0xfa, 0xf3, 0x15, 0xdb, 0xde, 0xb2, 0x50, - 0xcb, 0xf8, 0x76, 0xc4, 0x1f, 0xd9, 0xe7, 0xe2, 0x7b, 0x42, 0x76, 0x09, - 0x65, 0x8f, 0xd5, 0x89, 0xe1, 0xc7, 0x44, 0x50, 0xe6, 0xd8, 0x98, 0xd0, - 0x9e, 0x8a, 0xe6, 0x57, 0xb1, 0x00, 0x4a, 0xa7, 0xc9, 0x9c, 0xac, 0xca, - 0x0c, 0xd3, 0xc5, 0x42, 0xa9, 0x09, 0xe9, 0x65, 0x86, 0x5d, 0x13, 0x0d, - 0x5d, 0x22, 0x08, 0xa5, 0x10, 0x66, 0x38, 0xff, 0x78, 0xb2, 0xc8, 0x39, - 0xb5, 0x80, 0x54, 0x9f, 0x59, 0x36, 0x9d, 0x66, 0xa2, 0x6c, 0x82, 0xbc, - 0x45, 0xef, 0x0c, 0x99, 0x7a, 0x9c, 0x48, 0xec, 0xdc, 0x8c, 0x49, 0xf0, - 0xde, 0x23, 0xd7, 0x11, 0xa0, 0xe6, 0x9a, 0x5b, 0xb3, 0xd2, 0x15, 0x03, - 0xad, 0x6c, 0x8b, 0x36, 0x85, 0x47, 0xe6, 0x4c, 0x39, 0x11, 0x7c, 0x25, - 0x88, 0x72, 0xf8, 0x58, 0x7f, 0x38, 0x74, 0x60, 0x8d, 0x42, 0xcb, 0xa6, - 0xc4, 0x2a, 0x2c, 0x82, 0xa1, 0x1a, 0x25, 0xd3, 0xba, 0xb6, 0x1f, 0xa9, - 0x48, 0x36, 0xb9, 0x93, 0x31, 0x3d, 0xd5, 0x37, 0x91, 0xc3, 0x20, 0xda, - 0x35, 0x3d, 0x03, 0x44, 0x34, 0x05, 0x83, 0x6e, 0x5a, 0x9c, 0x73, 0x53, - 0x36, 0x32, 0xeb, 0x90, 0x24, 0x39, 0xf1, 0x97, 0x73, 0x86, 0xd0, 0x2f, - 0xfa, 0x79, 0xbb, 0xd8, 0x8b, 0xa9, 0x58, 0xaf, 0x2e, 0x01, 0xef, 0x86, - 0xa9, 0x43, 0x53, 0xed, 0x6c, 0x06, 0xbb, 0x16, 0x47, 0x83, 0xc1, 0x60, - 0xd9, 0x6b, 0x8f, 0x36, 0x2f, 0xee, 0xf2, 0xda, 0xf6, 0xe3, 0xcd, 0x59, - 0xe7, 0x7b, 0xdd, 0xd6, 0x27, 0x75, 0x3a, 0xe6, 0x11, 0x38, 0x61, 0x8f, - 0x8e, 0x35, 0xa6, 0x63, 0x6d, 0x54, 0x14, 0xa2, 0x3b, 0xa2, 0x29, 0x71, - 0xaf, 0x0c, 0xd6, 0xef, 0x0f, 0xdc, 0x3e, 0x4d, 0x72, 0x39, 0x4d, 0xf7, - 0x57, 0x74, 0xae, 0x52, 0x74, 0x14, 0x54, 0x20, 0x4e, 0x95, 0xa3, 0x7c, - 0x69, 0x52, 0x31, 0x31, 0xc4, 0x9e, 0xfb, 0x5a, 0x0f, 0xa6, 0x1a, 0xa3, - 0x83, 0x43, 0xaf, 0x21, 0x41, 0x5f, 0x11, 0xdc, 0x37, 0x27, 0x5c, 0x30, - 0xed, 0x73, 0xb6, 0x1f, 0x45, 0x4c, 0x31, 0xf5, 0x84, 0x7b, 0xc9, 0x2f, - 0xbc, 0xe1, 0x92, 0x29, 0xcc, 0x8d, 0x8b, 0x82, 0xb5, 0x2e, 0x4d, 0xb0, - 0xc4, 0x6f, 0xb9, 0x45, 0x6e, 0xa5, 0x83, 0x0e, 0x92, 0xb5, 0x19, 0x52, - 0x3b, 0xdb, 0x2c, 0x34, 0xe5, 0x8d, 0x9a, 0xd2, 0xd5, 0xaa, 0x45, 0xff, - 0x65, 0xac, 0x1b, 0xe4, 0x1c, 0x4d, 0xca, 0xbe, 0x2a, 0x4c, 0x8e, 0x2d, - 0xa3, 0x3d, 0x90, 0xe8, 0x1d, 0x18, 0xff, 0xa7, 0xa4, 0x53, 0x22, 0xd5, - 0xf7, 0xde, 0xe2, 0xd3, 0xf8, 0xf8, 0x49, 0x72, 0x9e, 0x02, 0xe7, 0xcf, - 0x19, 0xa0, 0xac, 0xd5, 0x86, 0x45, 0xe3, 0xd2, 0x41, 0xf0, 0x09, 0xb4, - 0xf6, 0x69, 0x59, 0x94, 0x56, 0xe2, 0x54, 0xf5, 0x34, 0x90, 0xf9, 0x27, - 0xd3, 0x44, 0x0e, 0x7f, 0x51, 0x62, 0xa1, 0xc5, 0x0f, 0x3e, 0xa6, 0x25, - 0xb1, 0x10, 0xde, 0xc8, 0x57, 0xf8, 0xa6, 0x09, 0xb1, 0x58, 0x18, 0x09, - 0xd6, 0xff, 0xa2, 0xa8, 0xf7, 0x17, 0xcc, 0x47, 0xeb, 0x39, 0xa1, 0x29, - 0xf8, 0x78, 0x4f, 0xea, 0xeb, 0x56, 0x70, 0xca, 0x3e, 0x3e, 0x6a, 0xd3, - 0x32, 0x9a, 0xf9, 0x6c, 0x94, 0xdf, 0x48, 0x09, 0xa1, 0x22, 0x0e, 0xe0, - 0x8d, 0x90, 0x79, 0x82, 0xed, 0xa4, 0x0b, 0x4e, 0xbc, 0x4b, 0xa2, 0x57, - 0xb2, 0xbe, 0x5d, 0x49, 0x81, 0x64, 0xcf, 0x97, 0x59, 0x9a, 0x14, 0x10, - 0x74, 0x04, 0x97, 0x99, 0x5f, 0x4e, 0xc1, 0x30, 0xe8, 0x9b, 0x5c, 0x10, - 0xfc, 0x4e, 0xb1, 0x9e, 0x70, 0x41, 0xa4, 0x62, 0x70, 0xf2, 0x51, 0xe3, - 0x68, 0xc3, 0xca, 0x7e, 0xda, 0x77, 0x3f, 0xf9, 0x5e, 0x4a, 0xc6, 0x57, - 0xe5, 0x7d, 0x32, 0x77, 0x4f, 0x69, 0x79, 0x02, 0xbb, 0xad, 0xc9, 0xeb, - 0xbd, 0x15, 0x30, 0xc5, 0x96, 0x0e, 0x24, 0xdb, 0x1b, 0xbf, 0xba, 0xcb, - 0x80, 0xcb, 0x5f, 0xee, 0xbc, 0x6f, 0xfb, 0xb8, 0xfb, 0x18, 0x96, 0x8c, - 0x93, 0x73, 0x4a, 0x9c, 0x42, 0x86, 0xe9, 0x50, 0xb7, 0x73, 0x07, 0xff, - 0x93, 0x0f, 0x0a, 0xd3, 0xd6, 0xe4, 0x97, 0x04, 0x88, 0x15, 0xbe, 0x88, - 0xae, 0x28, 0xac, 0x09, 0xdb, 0x90, 0xee, 0xcd, 0xb1, 0x33, 0x86, 0x04, - 0xe3, 0xf4, 0x46, 0x4a, 0xb7, 0xcd, 0x60, 0x16, 0x5c, 0x6c, 0x65, 0xe5, - 0x01, 0xb7, 0x5e, 0x88, 0x81, 0x6d, 0x81, 0x09, 0xc0, 0xcd, 0xd9, 0x23, - 0xd3, 0x6c, 0xc0, 0xda, 0xd0, 0x68, 0x93, 0x06, 0x31, 0x92, 0x46, 0x06, - 0x0b, 0xd0, 0xbe, 0x65, 0x1a, 0x7b, 0xc2, 0xe5, 0x30, 0x0a, 0x8e, 0x4c, - 0x6d, 0x88, 0x6d, 0x12, 0xce, 0x5c, 0x71, 0x31, 0x12, 0xb9, 0xa5, 0x9e, - 0x66, 0x50, 0xe2, 0x35, 0x81, 0x5b, 0x8d, 0x09, 0xf2, 0x13, 0x4d, 0x8d, - 0x31, 0xa1, 0x96, 0x28, 0xb0, 0x77, 0xcb, 0x54, 0xf8, 0x48, 0xdd, 0xc1, - 0x55, 0x72, 0x69, 0x0b, 0x7a, 0x34, 0x0c, 0xe6, 0xe4, 0xae, 0x81, 0xa8, - 0x91, 0x5f, 0x9a, 0x1f, 0x76, 0x95, 0x29, 0x28, 0x6f, 0xe7, 0x74, 0xe7, - 0x18, 0x9e, 0x0f, 0x5d, 0x40, 0x17, 0x1a, 0xd1, 0x78, 0xda, 0x12, 0x1b, - 0xb8, 0x14, 0xdb, 0x4a, 0x40, 0x24, 0x49, 0xdb, 0xe2, 0xd4, 0xf0, 0xc0, - 0x17, 0x6a, 0xcf, 0x78, 0x2a, 0x6c, 0x33, 0xbd, 0xdc, 0xdd, 0x68, 0x98, - 0xf3, 0x25, 0x1c, 0xb1, 0x41, 0x9e, 0x81, 0xf5, 0x61, 0x57, 0x65, 0xc8, - 0xa5, 0x90, 0x8b, 0xbf, 0x83, 0x9a, 0x29, 0x63, 0x25, 0x21, 0x9c, 0xfc, - 0x08, 0x76, 0x05, 0xb8, 0x77, 0x8c, 0xfa, 0xff, 0x14, 0x93, 0x6b, 0xac, - 0xf1, 0x9b, 0xd5, 0xb6, 0x0c, 0x29, 0x84, 0xc2, 0x33, 0x02, 0x95, 0x8d, - 0x0c, 0x82, 0x79, 0x43, 0xd7, 0x95, 0xcf, 0x37, 0x5a, 0x9c, 0xc9, 0xb0, - 0x53, 0x32, 0x0a, 0x7e, 0x2c, 0x15, 0xe8, 0xd7, 0x5d, 0x36, 0x5d, 0xe8, - 0x94, 0x4b, 0x46, 0x86, 0x81, 0x67, 0x1c, 0x4f, 0x11, 0x17, 0x64, 0x45, - 0x7f, 0x8c, 0x2b, 0x36, 0xe6, 0x61, 0x0d, 0xeb, 0xd7, 0x69, 0xbd, 0xe1, - 0x14, 0x75, 0x11, 0x81, 0x7e, 0xd1, 0x11, 0x58, 0x16, 0xaf, 0x94, 0x5d, - 0x06, 0x86, 0x2b, 0x9c, 0xac, 0x6a, 0x3e, 0x33, 0x50, 0x97, 0xa8, 0xba, - 0x1d, 0x74, 0x4d, 0xf8, 0xb6, 0xba, 0x7b, 0xb8, 0xaa, 0xc3, 0x76, 0x10, - 0x57, 0x98, 0xd3, 0x4e, 0x75, 0xe6, 0x74, 0xcc, 0xed, 0xe9, 0x65, 0xeb, - 0x89, 0xcf, 0xd0, 0x31, 0x86, 0xda, 0x97, 0x0a, 0x37, 0xf8, 0x1a, 0x43, - 0x1a, 0xea, 0xa3, 0x6a, 0x0c, 0xf0, 0xa7, 0x1e, 0x0f, 0x10, 0xad, 0xeb, - 0x4f, 0xa4, 0xf3, 0x31, 0x2c, 0x7c, 0x9a, 0x8d, 0x3c, 0x2d, 0xc6, 0x38, - 0x39, 0x29, 0x4e, 0xef, 0x97, 0xae, 0xfe, 0xb0, 0xff, 0xf6, 0xcd, 0xd1, - 0x9b, 0xef, 0x76, 0x41, 0x08, 0xa4, 0xe5, 0x08, 0x0c, 0x9e, 0xe8, 0xd7, - 0xc5, 0x18, 0xc6, 0x41, 0x59, 0x29, 0x1a, 0xb8, 0xdb, 0xd1, 0x15, 0x4d, - 0x0b, 0xc9, 0x3e, 0x43, 0x37, 0x5a, 0xd1, 0x16, 0xf5, 0x82, 0xfb, 0x80, - 0x58, 0x63, 0x58, 0x6a, 0x76, 0xbe, 0xb0, 0x79, 0x8a, 0xa8, 0x21, 0x4c, - 0xa9, 0x32, 0x1e, 0x28, 0x96, 0xb2, 0xdb, 0x75, 0x9b, 0x30, 0x29, 0x2d, - 0x7a, 0xf1, 0xea, 0x55, 0xe4, 0x55, 0xc2, 0x32, 0xe6, 0x00, 0xc7, 0x23, - 0xa9, 0xa2, 0x51, 0x2b, 0xff, 0xd1, 0x99, 0x87, 0x72, 0xb6, 0x21, 0xec, - 0x81, 0xb6, 0x15, 0x77, 0x82, 0x6a, 0xa3, 0x03, 0x24, 0x99, 0x11, 0xda, - 0x4c, 0x59, 0x83, 0x66, 0x50, 0x4c, 0xea, 0xab, 0x24, 0x00, 0xc4, 0xef, - 0xa8, 0x91, 0x1d, 0x3c, 0x3f, 0xa4, 0x59, 0x7e, 0x12, 0xb0, 0xa0, 0x3f, - 0xc5, 0x8a, 0x9a, 0xe6, 0xf1, 0x7f, 0x86, 0xe4, 0xde, 0x26, 0xf1, 0xec, - 0x4e, 0xe1, 0xd7, 0x96, 0x46, 0x0d, 0x5b, 0xc0, 0xfe, 0x18, 0x81, 0x05, - 0x97, 0xf6, 0xc0, 0xb9, 0xe0, 0xe0, 0x90, 0x5b, 0x04, 0x25, 0x39, 0xfa, - 0x84, 0xf5, 0x00, 0x26, 0x03, 0x7b, 0xa4, 0xc8, 0x13, 0x15, 0xca, 0xa6, - 0x1e, 0xa7, 0x89, 0x76, 0x15, 0x46, 0x67, 0xc7, 0x24, 0x20, 0x28, 0xaf, - 0xd2, 0x52, 0x22, 0x8c, 0xa6, 0x45, 0x0e, 0x68, 0x58, 0x83, 0xe8, 0xb4, - 0x08, 0xd7, 0xa0, 0x72, 0x63, 0x27, 0xd4, 0x0c, 0xc7, 0xaa, 0xe0, 0x33, - 0x57, 0xc6, 0xd7, 0xa9, 0xe1, 0x93, 0x56, 0xe4, 0xb3, 0x0e, 0x29, 0x89, - 0xe1, 0x38, 0xa9, 0x17, 0x4a, 0x73, 0x37, 0x42, 0x50, 0x24, 0x87, 0x58, - 0x9b, 0x26, 0xf6, 0x11, 0xcd, 0x47, 0x99, 0xb1, 0x78, 0x5f, 0x7a, 0x31, - 0xec, 0x6c, 0x0f, 0xe9, 0x4f, 0x4e, 0xb6, 0x73, 0xb8, 0xe5, 0xf6, 0x4b, - 0x73, 0xff, 0xef, 0xb9, 0x70, 0xa6, 0x35, 0xfa, 0xca, 0x66, 0x4d, 0x6b, - 0x71, 0x81, 0xc8, 0x3b, 0x10, 0xde, 0x76, 0xc7, 0xcf, 0x77, 0xee, 0x44, - 0x91, 0xed, 0x5f, 0xb5, 0xf9, 0x4e, 0x99, 0x11, 0x56, 0x0c, 0x57, 0x2e, - 0x11, 0xac, 0x33, 0x47, 0x33, 0x9d, 0x04, 0x23, 0xca, 0xf4, 0x75, 0x8a, - 0x0f, 0xe8, 0x57, 0x57, 0x29, 0xc6, 0x1b, 0xda, 0x7b, 0xb7, 0x4e, 0x71, - 0x22, 0xa3, 0xad, 0x50, 0x13, 0x2c, 0x09, 0xf2, 0xb8, 0x2f, 0x37, 0x4a, - 0x58, 0xb5, 0x19, 0x2f, 0xec, 0x52, 0xed, 0x01, 0x3f, 0x4f, 0x06, 0x1b, - 0xab, 0xab, 0x35, 0x7e, 0x76, 0x8f, 0x82, 0xec, 0x20, 0x79, 0x07, 0x0a, - 0x71, 0x39, 0x8b, 0x45, 0x87, 0x72, 0xa1, 0xfc, 0x1c, 0xbd, 0x82, 0x4c, - 0x25, 0x6e, 0x35, 0x26, 0x06, 0x18, 0x5d, 0xe0, 0xc0, 0x70, 0x9d, 0xeb, - 0x50, 0x75, 0x2e, 0xcb, 0x2f, 0x0b, 0xfa, 0x0d, 0xbb, 0x85, 0x1d, 0x18, - 0x9c, 0x10, 0x62, 0x10, 0x5e, 0x0a, 0xae, 0x25, 0x5b, 0xa2, 0x71, 0x71, - 0x9e, 0x0e, 0xef, 0xb1, 0xa3, 0x5b, 0x44, 0x2e, 0x3c, 0x11, 0x7c, 0xa1, - 0xe4, 0x35, 0x1b, 0x7c, 0xe9, 0xae, 0x0a, 0x25, 0xc3, 0x79, 0xfa, 0x28, - 0x58, 0x2f, 0x08, 0x4c, 0x60, 0x8a, 0xc1, 0x49, 0x0b, 0x35, 0xdd, 0x52, - 0xca, 0x48, 0x2e, 0x13, 0x7b, 0x43, 0xf5, 0xb7, 0x6d, 0x2b, 0x02, 0x99, - 0x81, 0xd6, 0x35, 0x60, 0xd3, 0xcc, 0xb6, 0x90, 0x6b, 0xc6, 0x49, 0x31, - 0x0b, 0x6d, 0xc8, 0x99, 0xdb, 0xa3, 0x8b, 0xa2, 0xa8, 0xd2, 0xae, 0x64, - 0x22, 0xfa, 0x32, 0xb2, 0x61, 0xa8, 0xe1, 0x5d, 0x97, 0xb8, 0x11, 0x18, - 0x4d, 0x27, 0x97, 0x06, 0x91, 0x21, 0x92, 0x71, 0x7b, 0x75, 0x63, 0xb1, - 0x07, 0xd8, 0x76, 0xb6, 0x2c, 0x7a, 0xd0, 0x56, 0x64, 0x79, 0x55, 0x9e, - 0x1a, 0x1b, 0x6a, 0x92, 0xc6, 0xbf, 0x6b, 0xe9, 0xad, 0x9e, 0x66, 0x8a, - 0x7b, 0x12, 0x56, 0xe8, 0x58, 0x9f, 0x43, 0x1e, 0x6b, 0x3c, 0x45, 0x63, - 0x0a, 0x9a, 0xe5, 0xcd, 0xbc, 0x55, 0x22, 0xed, 0xac, 0x26, 0xce, 0xf6, - 0xc7, 0x9d, 0xad, 0x2e, 0x55, 0x00, 0x07, 0x52, 0xf0, 0xf4, 0x79, 0x22, - 0x59, 0x7e, 0xaa, 0x48, 0x48, 0x5f, 0x39, 0xd4, 0x2f, 0x16, 0x73, 0x09, - 0x36, 0x53, 0x15, 0x79, 0xc7, 0xd6, 0x07, 0x6b, 0x1c, 0x48, 0x3f, 0x64, - 0x6b, 0xcc, 0x41, 0x90, 0xc6, 0x04, 0xfd, 0xfc, 0x5a, 0xb8, 0xaf, 0x14, - 0xd9, 0x5b, 0xef, 0x39, 0x49, 0x36, 0xa0, 0x06, 0x0f, 0x8d, 0x3e, 0xd0, - 0x57, 0xde, 0x97, 0x6d, 0x0f, 0x96, 0x24, 0x75, 0xdc, 0xa9, 0x14, 0x10, - 0x07, 0x5d, 0x86, 0x29, 0xdb, 0x62, 0xf1, 0x7d, 0x52, 0x0a, 0xec, 0xb5, - 0x35, 0x71, 0x56, 0xa4, 0xd9, 0x25, 0x62, 0xb3, 0xa1, 0xd1, 0xe8, 0x06, - 0xbc, 0x75, 0x36, 0x00, 0xbf, 0xd3, 0x8b, 0x3e, 0x9b, 0xc2, 0x5f, 0x53, - 0xaa, 0xc8, 0x34, 0x4d, 0x21, 0xeb, 0x34, 0xe2, 0x18, 0x9a, 0x88, 0xc2, - 0x1a, 0x3e, 0xac, 0xc9, 0x9a, 0x43, 0x9a, 0xbb, 0xda, 0xa4, 0x8a, 0x69, - 0xa5, 0xf1, 0x60, 0xe4, 0xdd, 0xc2, 0x09, 0xf4, 0x11, 0x8b, 0x79, 0xc1, - 0x5e, 0xa5, 0x00, 0x5f, 0x74, 0x24, 0xcb, 0x39, 0xf9, 0x97, 0xe0, 0x4d, - 0x42, 0x60, 0x30, 0x2b, 0x5a, 0xda, 0x35, 0xac, 0xfd, 0xfd, 0xb7, 0x2a, - 0x02, 0x5f, 0x55, 0xb6, 0xe3, 0x50, 0x77, 0x94, 0xeb, 0xb4, 0x26, 0x50, - 0x63, 0x26, 0x45, 0xb1, 0x9a, 0x37, 0xc5, 0xa3, 0x6c, 0x72, 0xa7, 0xfc, - 0x46, 0xf0, 0x7d, 0x30, 0x26, 0x86, 0x7e, 0xc7, 0x6d, 0x25, 0xf3, 0x32, - 0x8d, 0x8b, 0x3c, 0x0e, 0xa1, 0xe0, 0xfc, 0x60, 0xea, 0x94, 0x35, 0x53, - 0x56, 0xe1, 0x72, 0xd8, 0x65, 0xa7, 0x41, 0x27, 0x94, 0x77, 0x2a, 0xf8, - 0x89, 0x2f, 0x72, 0x6e, 0xf6, 0x34, 0x40, 0x07, 0xfd, 0x26, 0x5f, 0x74, - 0x92, 0x2e, 0xe9, 0x04, 0x2f, 0xc5, 0xcd, 0xa1, 0xe2, 0x0d, 0xd8, 0x1d, - 0x05, 0x3a, 0x48, 0xdf, 0x0d, 0xc4, 0x97, 0x40, 0x36, 0x4a, 0x3b, 0x18, - 0x92, 0x3e, 0xd3, 0x94, 0xe5, 0x92, 0xcd, 0xcc, 0x12, 0x38, 0x32, 0x8b, - 0x97, 0x82, 0x96, 0x0e, 0x99, 0xea, 0x3e, 0x2a, 0x07, 0xd8, 0xd7, 0x8b, - 0xd2, 0x0d, 0xe3, 0x74, 0x39, 0x23, 0xf4, 0x53, 0xa5, 0x77, 0xa7, 0x7c, - 0xd8, 0xed, 0x0d, 0xed, 0x46, 0x03, 0xbb, 0xd6, 0x11, 0xdc, 0x3f, 0x29, - 0x3a, 0x83, 0xdf, 0x85, 0x1c, 0xdd, 0xb5, 0x01, 0x49, 0x6a, 0x65, 0xfa, - 0x2a, 0x54, 0x39, 0x41, 0xfa, 0xc3, 0xe2, 0xb8, 0x66, 0xf0, 0xe3, 0x51, - 0x2b, 0xf8, 0xc1, 0xc1, 0xc6, 0x58, 0xb2, 0x8c, 0xf7, 0x50, 0x9b, 0xeb, - 0xf0, 0xb2, 0xfb, 0x6d, 0x80, 0xc8, 0x51, 0x4e, 0x51, 0x11, 0x02, 0x31, - 0xe9, 0x49, 0x96, 0x75, 0xb4, 0x8e, 0xa3, 0x6c, 0x18, 0xb7, 0x9c, 0xdf, - 0x0e, 0xc4, 0x81, 0x44, 0x96, 0x44, 0xcc, 0xa4, 0xf2, 0x60, 0x6b, 0xc8, - 0x2b, 0x77, 0x82, 0x24, 0x35, 0x5a, 0x4c, 0x93, 0x72, 0x4a, 0xe2, 0x69, - 0xb2, 0x98, 0x86, 0xfc, 0xd8, 0xa8, 0x8d, 0x48, 0xcd, 0x42, 0x56, 0x55, - 0x0b, 0xf1, 0xf2, 0x9b, 0x70, 0x2c, 0x1d, 0x0e, 0xf2, 0x4f, 0x24, 0x56, - 0xa6, 0x81, 0x6a, 0x8a, 0x95, 0xa6, 0x5d, 0xf2, 0x96, 0x11, 0xf7, 0xc4, - 0x76, 0x32, 0x0e, 0x20, 0x76, 0x95, 0x0b, 0xcf, 0x3d, 0xc7, 0x45, 0x91, - 0x60, 0x9e, 0x23, 0xb7, 0x2e, 0xf3, 0x3e, 0x69, 0xda, 0xed, 0x1c, 0xe3, - 0xe3, 0x93, 0xb3, 0xa3, 0xe3, 0x37, 0xa7, 0xd1, 0x9f, 0x7a, 0x1d, 0xb1, - 0xbc, 0xe6, 0x01, 0xb8, 0x7e, 0x6e, 0xaf, 0xd5, 0xdb, 0x03, 0x82, 0xd3, - 0xb6, 0x96, 0xd1, 0xfb, 0x53, 0x2f, 0x8a, 0x7f, 0x8c, 0x74, 0xf1, 0x2b, - 0x11, 0x5e, 0x23, 0xc3, 0xb8, 0x01, 0xe5, 0xf9, 0xa4, 0x41, 0x7b, 0xee, - 0x73, 0xd1, 0xde, 0x2c, 0x85, 0x13, 0xf2, 0xaa, 0xab, 0x0f, 0x6c, 0xd3, - 0x0a, 0x7e, 0x40, 0x49, 0x8f, 0xfb, 0x35, 0x63, 0x58, 0x5b, 0xd1, 0x7b, - 0x3a, 0xf9, 0x07, 0x91, 0x42, 0x3b, 0x75, 0x06, 0xbd, 0x99, 0xc8, 0x32, - 0x47, 0x60, 0xc0, 0x62, 0xae, 0xa8, 0x81, 0xb0, 0xf3, 0xa7, 0xe9, 0xcc, - 0x40, 0x34, 0x95, 0xa5, 0x81, 0xc6, 0x65, 0x6e, 0x94, 0x89, 0x94, 0xfb, - 0x1b, 0x52, 0xd9, 0x6d, 0x2c, 0x9a, 0xd7, 0x21, 0xcb, 0xd0, 0x40, 0x74, - 0x0b, 0x74, 0x45, 0x7e, 0x0b, 0xb4, 0x1a, 0x2f, 0x1f, 0x8e, 0x73, 0x0b, - 0x79, 0x8c, 0x75, 0xd6, 0xa7, 0xc5, 0x57, 0x21, 0x45, 0xa8, 0xdf, 0x1d, - 0x9e, 0x61, 0x4e, 0x05, 0x21, 0xc0, 0x77, 0xd7, 0x20, 0x34, 0xb7, 0x12, - 0x93, 0xe3, 0x8c, 0x23, 0x21, 0x31, 0x1e, 0x0f, 0xc5, 0x84, 0x47, 0xe9, - 0x87, 0x5e, 0xb9, 0x24, 0x4f, 0x6e, 0x58, 0x1d, 0x67, 0x43, 0x47, 0x07, - 0xb0, 0x85, 0xa8, 0x6c, 0x8e, 0x59, 0x91, 0x47, 0x82, 0xe7, 0x89, 0xec, - 0xfd, 0x95, 0xe6, 0xc6, 0xcb, 0x87, 0x3b, 0x79, 0x77, 0x26, 0xfa, 0x19, - 0xa6, 0xc7, 0x9f, 0x1d, 0xc2, 0x85, 0x41, 0xe0, 0x5c, 0x18, 0x66, 0x4a, - 0x69, 0xeb, 0x75, 0x3a, 0xba, 0xc8, 0x0b, 0x8c, 0xf0, 0x13, 0x7c, 0xc2, - 0x87, 0x1b, 0x86, 0xfb, 0x21, 0x1d, 0xbe, 0xd8, 0xff, 0x3b, 0x37, 0x65, - 0xad, 0xa2, 0x93, 0xb7, 0xc7, 0x27, 0x2f, 0x8f, 0xde, 0xbc, 0xe8, 0x47, - 0x07, 0xc7, 0x27, 0xff, 0xe8, 0x47, 0xaf, 0x8f, 0xff, 0x7e, 0x18, 0x71, - 0xd1, 0x5d, 0xc0, 0x99, 0xd6, 0xfa, 0xbf, 0x37, 0x18, 0x84, 0x44, 0x57, - 0x9d, 0x13, 0x11, 0xe3, 0x9c, 0x00, 0x2b, 0xbe, 0x06, 0x0c, 0x99, 0xc6, - 0x45, 0x3c, 0xcb, 0x87, 0x43, 0x0e, 0x0a, 0x07, 0x07, 0xdf, 0xf7, 0xfd, - 0xe1, 0x3e, 0xac, 0x28, 0x3a, 0x39, 0x3e, 0x3d, 0xa3, 0xc5, 0xe0, 0x16, - 0x98, 0x5d, 0xc3, 0x4c, 0x1c, 0x76, 0xf0, 0x2e, 0x1f, 0x8e, 0xcc, 0x59, - 0xae, 0xfe, 0x60, 0xbe, 0x0c, 0x37, 0x36, 0xe3, 0x4c, 0x7f, 0x57, 0x09, - 0x97, 0x75, 0x56, 0x37, 0x7d, 0x6c, 0x03, 0xd4, 0x0e, 0xfd, 0x09, 0xae, - 0xa7, 0x4c, 0xda, 0x84, 0x13, 0x6a, 0x19, 0x77, 0x58, 0xce, 0x6e, 0xb8, - 0x60, 0xc4, 0xf3, 0x5c, 0x76, 0xde, 0x6f, 0x34, 0x4a, 0x22, 0x01, 0x44, - 0x0f, 0x21, 0x0e, 0x58, 0x00, 0x36, 0xc7, 0x2b, 0x95, 0x42, 0xf3, 0xa4, - 0x22, 0x17, 0x1a, 0xf9, 0xd4, 0x04, 0x8b, 0x4a, 0xc2, 0x95, 0x8e, 0x07, - 0x8d, 0x1d, 0x06, 0xc9, 0xf2, 0xe1, 0xa4, 0xe5, 0x38, 0x1d, 0x84, 0x5d, - 0x20, 0x6f, 0x23, 0x30, 0x50, 0xfa, 0xb1, 0x59, 0x6b, 0xb5, 0x98, 0xdc, - 0x70, 0x23, 0xe0, 0x42, 0xa5, 0xdc, 0x5f, 0x5e, 0x53, 0x46, 0x24, 0x40, - 0x16, 0xc5, 0x47, 0x1a, 0x9e, 0xeb, 0x82, 0x85, 0x0b, 0x55, 0xac, 0x31, - 0x9f, 0x90, 0xc8, 0x2d, 0xf5, 0x40, 0xd7, 0x80, 0x36, 0xb2, 0x5f, 0x87, - 0xff, 0xfa, 0x29, 0x92, 0x51, 0x20, 0xbe, 0x2b, 0x6e, 0xc4, 0xe9, 0xd4, - 0x10, 0x99, 0x49, 0x77, 0xe6, 0xed, 0x73, 0x76, 0xf4, 0xc6, 0xe1, 0xda, - 0x51, 0x71, 0x34, 0x40, 0x19, 0x1f, 0x12, 0xf8, 0x69, 0x2e, 0x89, 0xa1, - 0x51, 0x05, 0xa2, 0x30, 0x4e, 0x6f, 0xdc, 0x37, 0xd0, 0xd0, 0x2a, 0xd3, - 0x7c, 0x90, 0x4c, 0x28, 0xb3, 0xeb, 0xd2, 0xf8, 0xa8, 0xc9, 0x59, 0x97, - 0x0f, 0x97, 0x8c, 0x46, 0x40, 0xa0, 0xa2, 0x50, 0x18, 0x76, 0xfe, 0x68, - 0xeb, 0xa3, 0x4d, 0x41, 0x8e, 0xd0, 0x18, 0xe7, 0x78, 0x93, 0xef, 0x42, - 0x68, 0xa7, 0xaa, 0x33, 0x1c, 0x6f, 0x47, 0xe6, 0x6e, 0x58, 0x32, 0x89, - 0x60, 0x72, 0x13, 0x63, 0x4d, 0x0b, 0x11, 0x95, 0x05, 0xcb, 0x67, 0x7d, - 0x75, 0x04, 0x4c, 0x81, 0x76, 0x64, 0x5c, 0xe0, 0xa7, 0x70, 0x99, 0x27, - 0x79, 0x32, 0x88, 0x02, 0x60, 0x68, 0x5f, 0x49, 0x3e, 0x3e, 0x79, 0x14, - 0x5c, 0x91, 0x59, 0x10, 0x3d, 0xf1, 0x29, 0x2b, 0x02, 0x0a, 0x79, 0x7b, - 0x78, 0xf6, 0xd6, 0xd7, 0x86, 0x5e, 0xef, 0x9f, 0x2c, 0x9f, 0x9a, 0x9e, - 0xf8, 0x84, 0xa9, 0xfd, 0xec, 0xa1, 0xd7, 0x67, 0x37, 0x4c, 0x49, 0x4f, - 0xdc, 0x71, 0xca, 0xef, 0x0f, 0x5f, 0x11, 0xca, 0xcb, 0xdf, 0xdf, 0xbe, - 0xfc, 0x47, 0x50, 0xf7, 0x6b, 0x28, 0x40, 0xf7, 0x54, 0xf2, 0xb3, 0x5a, - 0x8a, 0xc3, 0x8f, 0x5c, 0x49, 0x76, 0x76, 0xb8, 0x42, 0x36, 0xc3, 0x8f, - 0xd1, 0x9b, 0x57, 0x70, 0x8c, 0x2b, 0xc1, 0xea, 0x34, 0xb5, 0xcb, 0xa6, - 0xfd, 0x51, 0x15, 0x53, 0xb0, 0x1d, 0xf6, 0x7e, 0xfa, 0x33, 0x81, 0x2b, - 0x13, 0x62, 0xdf, 0x2e, 0xa8, 0x02, 0xe5, 0x4f, 0x7d, 0xfc, 0xf3, 0x97, - 0xc1, 0x60, 0xf0, 0x75, 0xd0, 0x92, 0x4b, 0x9d, 0x5b, 0x82, 0x4f, 0x62, - 0xc8, 0x97, 0x41, 0xb6, 0x4d, 0x8c, 0x83, 0x80, 0x23, 0x09, 0x28, 0x13, - 0xe3, 0x89, 0xf3, 0x24, 0x2b, 0xb1, 0xcf, 0xa8, 0x9f, 0xfc, 0xcc, 0x15, - 0x16, 0x16, 0xe9, 0x94, 0x38, 0xbf, 0x56, 0xcc, 0x1a, 0x56, 0xb7, 0x5e, - 0x6d, 0x08, 0xca, 0xbb, 0x53, 0x2c, 0x1e, 0xf0, 0x46, 0x32, 0x1a, 0x19, - 0x4d, 0xcb, 0xc6, 0x32, 0x9b, 0xaf, 0x5a, 0xe8, 0x01, 0x3c, 0x49, 0x94, - 0x01, 0xf9, 0xf6, 0xb1, 0x59, 0x7e, 0x28, 0x48, 0x44, 0xc7, 0x8a, 0xf9, - 0x0f, 0xc8, 0x08, 0x4b, 0x32, 0x37, 0x49, 0x45, 0x40, 0x25, 0x60, 0x33, - 0xad, 0x47, 0x9b, 0xf8, 0x91, 0x55, 0xc3, 0x0e, 0x73, 0x2c, 0x08, 0x2f, - 0x50, 0x49, 0xd2, 0xb4, 0x01, 0xf3, 0xcd, 0x40, 0x9b, 0x0e, 0x26, 0x9b, - 0xc5, 0x19, 0x77, 0xbc, 0x7d, 0x1a, 0x83, 0x0a, 0x0c, 0x67, 0xb6, 0xdb, - 0x40, 0x04, 0x1a, 0xc4, 0x65, 0x55, 0x5f, 0xe1, 0x45, 0x02, 0x69, 0x15, - 0x94, 0x56, 0x96, 0xb4, 0x28, 0xe1, 0xbc, 0xbc, 0x0f, 0x26, 0x7c, 0x2c, - 0xff, 0xc4, 0x7b, 0x98, 0x59, 0xb7, 0xbf, 0x0b, 0x0a, 0xe6, 0x1e, 0xb7, - 0x81, 0x01, 0x0d, 0xa0, 0x3f, 0xa3, 0xf6, 0x67, 0x63, 0x01, 0xf8, 0x8d, - 0x61, 0x18, 0x1c, 0x07, 0xf0, 0x7e, 0xed, 0x4f, 0x6b, 0x68, 0x8b, 0xd2, - 0xea, 0x83, 0x28, 0xfb, 0x4a, 0xb0, 0xe8, 0x16, 0x0d, 0x4c, 0x49, 0x95, - 0xe1, 0x66, 0x43, 0x94, 0xec, 0x0c, 0x1c, 0x8a, 0x21, 0x1c, 0xf9, 0x04, - 0xcc, 0x8e, 0x9f, 0x8e, 0x47, 0x09, 0xf7, 0x24, 0x09, 0xa4, 0xc0, 0x32, - 0x81, 0x70, 0x7a, 0x53, 0x41, 0x93, 0xda, 0x3b, 0x23, 0x15, 0x49, 0x4d, - 0x72, 0x67, 0x05, 0x98, 0x8b, 0x3c, 0x82, 0x65, 0x0f, 0x5c, 0x91, 0x15, - 0x0e, 0x40, 0x58, 0xc2, 0xd1, 0x2d, 0x66, 0x96, 0xc3, 0x05, 0xca, 0x8d, - 0x34, 0x57, 0x1a, 0x4a, 0x13, 0xbd, 0xe2, 0xc7, 0x7e, 0xb2, 0x5a, 0x36, - 0xbf, 0x7c, 0x4c, 0xf1, 0xc0, 0xa7, 0x7d, 0xfe, 0xd7, 0x53, 0x0b, 0xbc, - 0xe7, 0xe4, 0xad, 0xb1, 0x1f, 0x81, 0xad, 0xee, 0xa3, 0x13, 0xad, 0xe3, - 0x1c, 0xf8, 0xa7, 0xc4, 0x28, 0x42, 0x6a, 0xed, 0xd1, 0xb7, 0x5a, 0x88, - 0x25, 0xff, 0xea, 0x72, 0x05, 0x31, 0x57, 0xe2, 0x7b, 0x81, 0x29, 0x0b, - 0x14, 0xb5, 0x56, 0x99, 0xe0, 0x2d, 0x3e, 0x8b, 0x3e, 0x82, 0xf5, 0x6d, - 0xc9, 0xdc, 0xde, 0x20, 0xc0, 0xf5, 0x3a, 0xb5, 0xa0, 0x87, 0x99, 0x14, - 0xd2, 0x78, 0xe9, 0xfd, 0xe4, 0xba, 0x45, 0xfc, 0xfe, 0x54, 0x74, 0xa4, - 0x69, 0x81, 0x55, 0xa4, 0x8b, 0x9c, 0xaa, 0x49, 0x4d, 0xb6, 0xbe, 0x49, - 0x55, 0xd6, 0xa5, 0x4f, 0x31, 0x98, 0x30, 0x09, 0xb8, 0xec, 0x80, 0x32, - 0x8e, 0x72, 0x86, 0xd1, 0x45, 0x0f, 0x5a, 0xd5, 0x67, 0x5f, 0xad, 0x7f, - 0x04, 0x4c, 0x97, 0x74, 0x5b, 0x48, 0x6b, 0xed, 0xa0, 0x21, 0xb9, 0xf9, - 0x42, 0x22, 0x1c, 0xee, 0x31, 0x8c, 0xe8, 0x8a, 0x2e, 0x7c, 0x21, 0x19, - 0xe5, 0x66, 0x23, 0xd0, 0x0b, 0xe6, 0x27, 0x53, 0xcd, 0x09, 0xac, 0xce, - 0x63, 0xf6, 0x92, 0xb4, 0x21, 0x6d, 0x34, 0xc4, 0xd3, 0x86, 0xa3, 0xc1, - 0xa1, 0x2a, 0x31, 0xe1, 0x47, 0x67, 0x79, 0xf4, 0xd3, 0xb0, 0x4c, 0x08, - 0xd9, 0xfd, 0x17, 0x4a, 0x4e, 0xa7, 0x4a, 0x61, 0xbf, 0x20, 0xe5, 0xd9, - 0xe0, 0x49, 0xa3, 0x39, 0xdb, 0xd2, 0x89, 0x8c, 0xff, 0xce, 0xce, 0x96, - 0x72, 0x16, 0x3e, 0xd3, 0x01, 0xce, 0xb3, 0x64, 0xa2, 0x2f, 0x6f, 0x98, - 0x88, 0x6f, 0x9c, 0x31, 0xf0, 0xaf, 0xf4, 0xce, 0x9a, 0xe5, 0xf3, 0x38, - 0x4f, 0x1f, 0xdf, 0x30, 0x0e, 0x55, 0xcb, 0x01, 0xb5, 0x0a, 0x22, 0x16, - 0xbe, 0xde, 0x1a, 0xe2, 0xd9, 0x93, 0xc1, 0x72, 0x98, 0x70, 0x37, 0x6a, - 0xe2, 0xc4, 0x66, 0x30, 0xf4, 0x3b, 0x96, 0x9f, 0xd0, 0x21, 0x0b, 0x7e, - 0x41, 0xd1, 0x45, 0x10, 0x7e, 0x80, 0xc6, 0xf0, 0x95, 0x87, 0xab, 0x5e, - 0xd7, 0x19, 0x1c, 0xb5, 0x61, 0xf7, 0xf1, 0xe3, 0x47, 0xbb, 0xdb, 0x3b, - 0x78, 0xd4, 0x5b, 0x83, 0xed, 0x15, 0xd3, 0x86, 0x15, 0x93, 0x13, 0xbf, - 0x9e, 0x72, 0xbe, 0x41, 0x0c, 0xc6, 0xd5, 0xe5, 0xa8, 0xa9, 0x61, 0x60, - 0x1a, 0x38, 0xd0, 0x39, 0xbb, 0x53, 0xdb, 0x2c, 0xf1, 0x2d, 0x25, 0xff, - 0xa3, 0xfb, 0x01, 0x76, 0x8e, 0xfd, 0xb5, 0xed, 0x8c, 0x7e, 0xa9, 0xf0, - 0x06, 0xcd, 0x05, 0x99, 0x94, 0xf8, 0x79, 0x69, 0xd8, 0xc1, 0x8d, 0xed, - 0xeb, 0x28, 0x89, 0xa9, 0x9a, 0xa6, 0xe3, 0x73, 0xb0, 0x3b, 0x67, 0xb3, - 0xb4, 0xec, 0xa1, 0xe0, 0xd6, 0xda, 0x85, 0x41, 0xf4, 0x82, 0x9d, 0x01, - 0x1a, 0x78, 0x6b, 0x3b, 0x23, 0x79, 0xa0, 0xe1, 0xb5, 0x61, 0x52, 0xeb, - 0x0d, 0x9b, 0x35, 0x67, 0x7c, 0x4c, 0xdc, 0xdd, 0x72, 0xb4, 0xd1, 0x17, - 0xa8, 0x77, 0x2d, 0x4c, 0xcf, 0x7d, 0x4d, 0x47, 0xac, 0xaa, 0x11, 0x9a, - 0x30, 0x9a, 0x56, 0xa6, 0x58, 0xdd, 0x06, 0xc0, 0x8b, 0x0a, 0x53, 0x6d, - 0xf3, 0xdf, 0x68, 0xbc, 0xc0, 0x14, 0x2b, 0xbf, 0x6e, 0x82, 0xab, 0xe3, - 0xdd, 0x4f, 0xe0, 0x9c, 0xb2, 0x94, 0x03, 0xe6, 0x44, 0xd2, 0xe8, 0xb6, - 0x46, 0x64, 0x33, 0x72, 0x60, 0x93, 0x65, 0xbb, 0x46, 0xaa, 0xc5, 0x6c, - 0xe1, 0x15, 0x3e, 0x0c, 0x53, 0x74, 0xa3, 0x52, 0xda, 0x24, 0x58, 0x6c, - 0xe3, 0xa9, 0x98, 0xac, 0x98, 0x9d, 0x96, 0xc1, 0x5a, 0xf1, 0xb6, 0x0f, - 0xa7, 0xd8, 0x43, 0x06, 0x21, 0xc8, 0x11, 0x28, 0x2c, 0xaa, 0x46, 0x65, - 0x36, 0x87, 0x51, 0x4f, 0xa6, 0x69, 0x52, 0xf9, 0x55, 0x1d, 0xc9, 0x58, - 0x8a, 0x0c, 0x79, 0xb7, 0x08, 0x42, 0xad, 0x3b, 0x11, 0xec, 0x25, 0x46, - 0xd8, 0x25, 0x4e, 0x5c, 0xcc, 0xe6, 0xa0, 0x4a, 0x49, 0x65, 0x2d, 0xa7, - 0x57, 0x3b, 0x70, 0xca, 0x5c, 0x2f, 0x42, 0xc0, 0x73, 0x7e, 0xc2, 0xdc, - 0x34, 0xf9, 0x70, 0x1d, 0x39, 0x8c, 0x1e, 0x77, 0x76, 0x34, 0xc5, 0x60, - 0xb8, 0x53, 0xbe, 0x86, 0xa3, 0x5c, 0xb0, 0x27, 0xf9, 0x9a, 0x73, 0x7c, - 0xa4, 0x42, 0xa7, 0x1f, 0xd0, 0x60, 0x6a, 0x17, 0x3c, 0x50, 0x07, 0x08, - 0xef, 0x34, 0x97, 0x14, 0xcb, 0x5e, 0xe3, 0x17, 0xf9, 0xf8, 0x8d, 0xb8, - 0x15, 0x7d, 0x0b, 0x72, 0x68, 0xaa, 0x68, 0x50, 0x20, 0x68, 0x5c, 0x48, - 0xc2, 0x0d, 0xe4, 0x03, 0xd7, 0x0e, 0x33, 0xa1, 0x8f, 0xd5, 0x78, 0x8f, - 0x45, 0xa2, 0x44, 0x39, 0x49, 0x5c, 0x8d, 0x83, 0xe3, 0x24, 0x91, 0x30, - 0xf2, 0x23, 0x23, 0x0a, 0xb4, 0x54, 0xf4, 0x7d, 0x71, 0x85, 0x7c, 0xc5, - 0x4f, 0x53, 0xb3, 0x50, 0xfb, 0xe5, 0x22, 0x15, 0x24, 0x9b, 0xc4, 0xfd, - 0x4e, 0x4a, 0x71, 0xf9, 0x3f, 0x20, 0x84, 0xe6, 0x84, 0xc9, 0xf2, 0xb5, - 0x84, 0x81, 0x42, 0x5d, 0xcc, 0xa9, 0x97, 0x80, 0x40, 0xae, 0x82, 0xda, - 0x31, 0x40, 0x8f, 0x1e, 0xba, 0x42, 0x40, 0x32, 0x63, 0x86, 0xfc, 0xe2, - 0xfc, 0x3c, 0x15, 0x25, 0x4f, 0x3c, 0x72, 0xf0, 0x39, 0x55, 0x2a, 0x8d, - 0xaf, 0xc1, 0xfc, 0x0f, 0xa3, 0x03, 0x5f, 0x66, 0x76, 0x3d, 0xd4, 0x42, - 0xa7, 0x98, 0x0d, 0x35, 0x8b, 0xb5, 0xdd, 0x10, 0xa9, 0x1f, 0x49, 0x9d, - 0x56, 0x20, 0x48, 0x8e, 0x97, 0x94, 0xef, 0x58, 0x6a, 0x2f, 0x58, 0xb8, - 0xc9, 0xf6, 0xb7, 0xf6, 0xfa, 0x13, 0x2d, 0x1a, 0xcf, 0x06, 0x07, 0x08, - 0x25, 0x38, 0x38, 0x71, 0xaa, 0x4d, 0x54, 0xbf, 0x60, 0xec, 0xe9, 0x8e, - 0x4a, 0x75, 0x76, 0x61, 0x48, 0x00, 0x98, 0x7b, 0x9b, 0x3b, 0x98, 0xdf, - 0x34, 0x68, 0x5f, 0x11, 0x1d, 0xdd, 0x6a, 0x32, 0xaf, 0x21, 0xa8, 0xe2, - 0x7c, 0x0e, 0xe8, 0x0e, 0x19, 0x1a, 0xcb, 0x30, 0xbd, 0xd1, 0x80, 0x35, - 0xc2, 0x17, 0xc2, 0xe8, 0x8f, 0xb7, 0x1e, 0xa3, 0x4a, 0x85, 0xb4, 0xb9, - 0xe0, 0x04, 0xde, 0x10, 0xb0, 0xbe, 0x54, 0xdc, 0x53, 0x58, 0x1a, 0xc6, - 0xc5, 0xbf, 0xca, 0x56, 0x8d, 0x4d, 0x7e, 0x6d, 0x62, 0x43, 0x81, 0xb9, - 0xf2, 0xed, 0x40, 0x0d, 0x86, 0x30, 0x6a, 0xcb, 0xc6, 0xdd, 0xe8, 0x2a, - 0x69, 0x4d, 0x45, 0x4e, 0x29, 0x93, 0xd6, 0xe7, 0xdc, 0x70, 0xf0, 0x84, - 0x72, 0x43, 0xcc, 0x6e, 0xc9, 0x3d, 0xa7, 0xee, 0x24, 0x76, 0xd3, 0x40, - 0x57, 0xe3, 0x6b, 0x9b, 0x38, 0x6e, 0xca, 0xb0, 0x03, 0x7b, 0x86, 0x92, - 0xfa, 0xf1, 0x47, 0xc7, 0xad, 0xc4, 0x5e, 0x25, 0x65, 0xc9, 0xb0, 0x5d, - 0x8d, 0xdc, 0x27, 0xcb, 0x7d, 0xb8, 0xbd, 0x77, 0xd7, 0xc9, 0xf2, 0x28, - 0x8d, 0x93, 0x75, 0x17, 0x18, 0xad, 0xe3, 0x9c, 0x28, 0x31, 0x9f, 0x7c, - 0xfc, 0xb8, 0x21, 0x7b, 0xe2, 0x63, 0x20, 0x0e, 0x33, 0x6d, 0x58, 0xe1, - 0x04, 0x13, 0x97, 0x67, 0xef, 0x35, 0x45, 0xed, 0x7d, 0x87, 0x55, 0x9b, - 0xa3, 0xaf, 0x1e, 0xe2, 0xc2, 0x8d, 0x7b, 0x12, 0x5a, 0xe7, 0x6a, 0x5a, - 0x07, 0x8b, 0x7e, 0x37, 0xb2, 0xf5, 0x6c, 0xbb, 0x1d, 0x55, 0xc5, 0x09, - 0x50, 0x3b, 0x01, 0x45, 0x0f, 0xe9, 0xae, 0xed, 0xfd, 0xb1, 0xd1, 0x0e, - 0x35, 0x0d, 0xd9, 0x02, 0xc2, 0x54, 0x01, 0xfa, 0x31, 0xb6, 0x46, 0x53, - 0x9b, 0xff, 0x10, 0x31, 0xcd, 0xdf, 0x1e, 0xbe, 0x7c, 0x77, 0x7a, 0xf8, - 0x82, 0x04, 0x75, 0x12, 0x02, 0x8b, 0xe0, 0x1e, 0x39, 0x92, 0x0d, 0x5f, - 0x17, 0x05, 0x1b, 0x22, 0x66, 0xb5, 0xcb, 0x74, 0x9a, 0x76, 0x44, 0x75, - 0x99, 0x86, 0xe3, 0x9f, 0xb7, 0xf3, 0x99, 0xcb, 0x33, 0x84, 0x31, 0x63, - 0xd3, 0xaf, 0xb5, 0xbd, 0x39, 0x49, 0xb8, 0x35, 0xc9, 0x9d, 0xce, 0xbd, - 0xb1, 0x4a, 0xa5, 0x85, 0x67, 0x77, 0x39, 0xf8, 0x46, 0x75, 0xa1, 0x43, - 0x8d, 0xcb, 0xba, 0x3d, 0x3a, 0xa5, 0x88, 0xd1, 0x9e, 0xd4, 0xf3, 0x7e, - 0x1d, 0xc8, 0xff, 0x31, 0x40, 0xbc, 0xd3, 0x34, 0x9d, 0xab, 0xc1, 0x99, - 0xcc, 0x80, 0x57, 0x72, 0x1e, 0x26, 0x5a, 0xb3, 0x9a, 0xa4, 0x81, 0xb9, - 0xc0, 0xbc, 0x20, 0xc6, 0x11, 0x0e, 0x02, 0x88, 0x60, 0x11, 0x73, 0x52, - 0x89, 0xf4, 0x56, 0xa3, 0xd3, 0x92, 0x0b, 0x53, 0xcb, 0x7a, 0x56, 0x9b, - 0x18, 0x0d, 0xf3, 0xdf, 0x00, 0x6e, 0x2d, 0x17, 0x58, 0x63, 0x5b, 0x64, - 0x54, 0xd0, 0xa4, 0xd2, 0x3a, 0x99, 0x9e, 0x17, 0x20, 0xe9, 0x2f, 0x66, - 0xa6, 0x71, 0x85, 0x70, 0xd5, 0x8d, 0x36, 0xc1, 0xb5, 0x85, 0x29, 0xc6, - 0x85, 0xa8, 0xa2, 0x32, 0x15, 0x84, 0xe3, 0x89, 0xcb, 0xaa, 0x69, 0xbf, - 0xd9, 0xf3, 0x75, 0x2a, 0xa9, 0x4b, 0xb4, 0x17, 0xbc, 0x83, 0x7e, 0x7d, - 0xfd, 0x6f, 0x69, 0x59, 0x88, 0x15, 0x6e, 0x9c, 0x0a, 0x6e, 0x5e, 0xb6, - 0x2e, 0x3b, 0x98, 0x1d, 0xc4, 0xdd, 0x7a, 0xdd, 0x23, 0xfa, 0x0c, 0x0d, - 0x4a, 0xdd, 0xe9, 0x9f, 0x7c, 0x1a, 0x81, 0xfa, 0x84, 0x37, 0x4b, 0x3e, - 0x72, 0x76, 0x53, 0x17, 0xed, 0x31, 0x5a, 0x80, 0x3a, 0x4c, 0x4a, 0xf6, - 0x45, 0xe1, 0x07, 0x36, 0xea, 0x97, 0x10, 0xc8, 0xc7, 0x90, 0x95, 0x28, - 0xc4, 0x14, 0x3b, 0xf6, 0xeb, 0xad, 0x38, 0x88, 0x81, 0x0a, 0x18, 0x65, - 0x3d, 0x26, 0xb8, 0x27, 0x18, 0xf7, 0x5b, 0x47, 0x2c, 0x42, 0x59, 0xd6, - 0x06, 0xfe, 0x98, 0xfc, 0x24, 0x92, 0x58, 0xc8, 0x73, 0x5f, 0x24, 0xa1, - 0xd2, 0x90, 0x12, 0xe9, 0x5d, 0x03, 0xa6, 0x9c, 0xdd, 0x4a, 0x05, 0xbf, - 0x84, 0x9a, 0x9f, 0x8d, 0x54, 0x8d, 0x99, 0x38, 0x03, 0x29, 0xf7, 0xf1, - 0x91, 0x7a, 0x78, 0x28, 0x41, 0x07, 0x9e, 0x21, 0x58, 0x80, 0x83, 0xcb, - 0x80, 0x1f, 0x4f, 0xbd, 0x31, 0x08, 0xa7, 0xfa, 0x82, 0xf2, 0xa0, 0x19, - 0x7b, 0x5b, 0x3a, 0x7d, 0x05, 0x14, 0x39, 0x82, 0x3f, 0xc7, 0x4f, 0x61, - 0x1d, 0x38, 0x77, 0x97, 0x49, 0x1b, 0x0f, 0x23, 0x64, 0xc5, 0x98, 0x90, - 0xb4, 0x69, 0x46, 0xce, 0xc5, 0xa7, 0x66, 0x9a, 0x5f, 0x04, 0x13, 0x00, - 0xd6, 0xaa, 0xc8, 0x00, 0x7b, 0xd0, 0x10, 0x7d, 0x0e, 0x99, 0xcd, 0x50, - 0x10, 0xeb, 0x79, 0x72, 0xef, 0x3b, 0xd7, 0x2b, 0x14, 0xbe, 0x19, 0x35, - 0xeb, 0xb7, 0xea, 0xd7, 0x91, 0x3b, 0xda, 0x95, 0x8f, 0xd2, 0xa0, 0x98, - 0xcf, 0x97, 0x8f, 0xd2, 0x58, 0xc6, 0xa3, 0x2d, 0x73, 0x27, 0xb6, 0xb7, - 0xee, 0xe5, 0x52, 0x44, 0x7b, 0xf9, 0x62, 0xf6, 0x75, 0x80, 0x15, 0x24, - 0x01, 0x79, 0xea, 0x82, 0x39, 0xd9, 0x3e, 0x22, 0x4c, 0xe6, 0xe8, 0x97, - 0x66, 0xfa, 0xe8, 0xe4, 0xc1, 0x7d, 0x36, 0xae, 0xe4, 0xf9, 0x8b, 0x26, - 0x02, 0x05, 0x09, 0x4a, 0xb9, 0x67, 0xe7, 0x6c, 0x71, 0x2f, 0xe6, 0x74, - 0xb2, 0x7e, 0x32, 0xb9, 0xb8, 0xd4, 0xe4, 0x6d, 0x98, 0x79, 0xcb, 0xe5, - 0x7a, 0x64, 0xc6, 0x98, 0x79, 0xd6, 0x0d, 0x0e, 0xd5, 0x32, 0x96, 0x4e, - 0x80, 0x1a, 0x2d, 0x79, 0xc0, 0x4e, 0x7a, 0x6e, 0x51, 0xbb, 0x2b, 0x60, - 0x1f, 0x40, 0x37, 0x7d, 0xed, 0x11, 0xc0, 0x0a, 0xab, 0xe7, 0x55, 0xb2, - 0xaa, 0x27, 0xc1, 0xaa, 0x89, 0x1d, 0xf1, 0x78, 0xeb, 0x79, 0x3f, 0x7a, - 0xbc, 0xf3, 0x65, 0x1f, 0x41, 0xc8, 0xf0, 0x8f, 0x1d, 0xfc, 0xe3, 0x11, - 0x59, 0xaa, 0x4f, 0xc0, 0x1a, 0x30, 0x4a, 0xab, 0x87, 0xd8, 0x3e, 0x4e, - 0xc3, 0xc0, 0x0f, 0x06, 0x7e, 0x23, 0x19, 0x16, 0x0b, 0x47, 0x25, 0x4e, - 0x9a, 0xfb, 0xcd, 0xfc, 0x8a, 0x31, 0x5b, 0x90, 0x07, 0x55, 0x7e, 0x97, - 0xa3, 0x22, 0x1f, 0x6b, 0x93, 0x25, 0x5b, 0xb4, 0x03, 0xff, 0xad, 0x2f, - 0x80, 0xa2, 0x08, 0x06, 0x50, 0xf6, 0x92, 0x12, 0x0e, 0x16, 0x04, 0x05, - 0xc0, 0xf8, 0x4c, 0x09, 0x65, 0x48, 0x7a, 0xe7, 0xc3, 0xe8, 0x23, 0x08, - 0xdb, 0x41, 0xe9, 0xf4, 0xcc, 0x69, 0x2a, 0x24, 0x59, 0xf6, 0x28, 0x57, - 0x12, 0x2d, 0xaf, 0x19, 0xc0, 0x62, 0x46, 0x05, 0xa4, 0xcc, 0xf4, 0x87, - 0x3e, 0x17, 0x95, 0x4e, 0x50, 0x04, 0xf5, 0xe5, 0xd4, 0x61, 0xf0, 0xe5, - 0x45, 0xab, 0x50, 0xd2, 0x0c, 0x9a, 0xb2, 0x8b, 0x62, 0x2b, 0xe3, 0xcc, - 0x0b, 0x73, 0x71, 0x6a, 0xaf, 0x2a, 0x15, 0xa8, 0x92, 0xc1, 0xb6, 0x73, - 0x47, 0x5c, 0x52, 0xf6, 0x55, 0xb2, 0x5b, 0xa1, 0x3e, 0xd0, 0xec, 0x68, - 0xba, 0x49, 0x61, 0xc3, 0xca, 0x5e, 0xd1, 0x5a, 0x59, 0x1b, 0x71, 0xe0, - 0xa2, 0x16, 0x91, 0x69, 0x00, 0x43, 0xd8, 0x8f, 0x1a, 0xe6, 0x3c, 0xd2, - 0x58, 0x60, 0xc6, 0x46, 0xa2, 0x49, 0xa2, 0x22, 0xdf, 0x5c, 0xbc, 0x8f, - 0xce, 0xfa, 0xdd, 0x76, 0x43, 0x1f, 0xea, 0x07, 0x80, 0xe7, 0x1a, 0x30, - 0x49, 0x11, 0xaf, 0x36, 0x65, 0x6b, 0x09, 0x1b, 0x43, 0x6a, 0xde, 0xac, - 0xa4, 0x06, 0x1a, 0xe8, 0x1e, 0x26, 0x1b, 0x17, 0xa9, 0xf2, 0xe9, 0xd3, - 0x50, 0x9b, 0x4b, 0x47, 0x41, 0xe8, 0x6a, 0x77, 0xfb, 0xe0, 0xd8, 0x53, - 0x77, 0x57, 0x07, 0xac, 0xb4, 0x70, 0x58, 0x60, 0x95, 0x54, 0xd3, 0x18, - 0x3b, 0x4b, 0xff, 0x96, 0x8d, 0xa3, 0xbd, 0x8c, 0x3a, 0x23, 0xd7, 0xd7, - 0xe1, 0x46, 0x69, 0x78, 0xd3, 0xe0, 0x49, 0xa0, 0x89, 0xdf, 0xa4, 0x5b, - 0x82, 0x3c, 0x0e, 0x5b, 0xc7, 0x23, 0x6c, 0xf4, 0x35, 0x89, 0xf7, 0x74, - 0xff, 0xf4, 0x55, 0x74, 0xf2, 0x6a, 0xff, 0xe8, 0x0d, 0xbc, 0x13, 0x07, - 0x2a, 0x63, 0xb5, 0x8f, 0x75, 0x9f, 0x7c, 0xc9, 0x2d, 0x1b, 0xa8, 0xd5, - 0xea, 0xda, 0xcc, 0xc3, 0x13, 0xf9, 0x2d, 0x1c, 0xc7, 0xa4, 0x42, 0x34, - 0xe0, 0x6b, 0xe3, 0x85, 0x96, 0xb6, 0x77, 0xb7, 0xf7, 0xb4, 0x56, 0x50, - 0xa3, 0xb3, 0x67, 0xbf, 0x51, 0xf4, 0x0b, 0x02, 0x5b, 0x71, 0x69, 0xe5, - 0x2b, 0x43, 0x6d, 0xa3, 0xf5, 0xd7, 0xb0, 0x16, 0xb6, 0xfa, 0x81, 0x2a, - 0x9d, 0x01, 0x09, 0x04, 0xa6, 0x8d, 0x46, 0x27, 0x53, 0xb4, 0xd5, 0x46, - 0x3c, 0x4f, 0xc4, 0x77, 0x93, 0xed, 0x21, 0x06, 0xd2, 0x82, 0x18, 0x95, - 0xae, 0x01, 0x1a, 0x2e, 0xc3, 0xaf, 0x5c, 0x43, 0x77, 0xe8, 0xb0, 0xf0, - 0xfa, 0xc1, 0x09, 0xa4, 0xa1, 0xc0, 0x93, 0xa3, 0x26, 0x44, 0xb5, 0x7b, - 0xe7, 0xc0, 0x21, 0xa9, 0x0f, 0xb0, 0xf4, 0x1f, 0x28, 0xa8, 0x72, 0x9c, - 0x94, 0x91, 0x8b, 0x84, 0x7a, 0xa9, 0x02, 0x4f, 0x9a, 0xc2, 0x78, 0x81, - 0x4e, 0xb5, 0x4a, 0x73, 0xe1, 0xeb, 0xd1, 0xa0, 0xa8, 0xdf, 0x5f, 0x7f, - 0x6e, 0x4c, 0x4f, 0x4b, 0x98, 0x25, 0x2b, 0x24, 0x28, 0x60, 0x52, 0x60, - 0x1e, 0x6b, 0x82, 0x9b, 0x6b, 0xca, 0x21, 0x4b, 0xf0, 0x6e, 0x4e, 0xd6, - 0x3e, 0xbd, 0xc3, 0x9c, 0xcd, 0x57, 0x81, 0xb7, 0xb0, 0x40, 0x85, 0x39, - 0x5f, 0x89, 0x26, 0x65, 0x2f, 0x35, 0xaa, 0x65, 0x82, 0x95, 0x60, 0x5c, - 0xda, 0x5b, 0xe8, 0x5b, 0xd1, 0x32, 0xea, 0xaa, 0x7c, 0x47, 0x17, 0xb3, - 0xda, 0x6e, 0xba, 0x87, 0xd1, 0xd8, 0x3b, 0x20, 0x7c, 0xd0, 0xd5, 0xb9, - 0x48, 0x62, 0x0f, 0xff, 0xfc, 0x7a, 0x49, 0xa4, 0xab, 0xd9, 0x7c, 0x74, - 0x64, 0x33, 0x81, 0x65, 0x18, 0xa9, 0x35, 0x47, 0x44, 0xd7, 0x93, 0x37, - 0x87, 0xdf, 0x1d, 0x87, 0xf5, 0xd9, 0xc6, 0x9c, 0xb7, 0xa5, 0xcb, 0xfb, - 0x24, 0x4c, 0x77, 0x7e, 0x6c, 0x28, 0x38, 0xde, 0x14, 0x16, 0xb3, 0x1a, - 0x2f, 0xcf, 0xd3, 0x73, 0x30, 0x74, 0x2c, 0xba, 0x11, 0x37, 0xc0, 0x74, - 0x47, 0x77, 0x76, 0xfa, 0x94, 0xba, 0x17, 0x5e, 0x14, 0x57, 0xdd, 0x15, - 0x26, 0x0e, 0x38, 0x4d, 0x45, 0x4f, 0x63, 0x79, 0x14, 0xe7, 0x56, 0x3a, - 0x2a, 0x25, 0x8e, 0x61, 0xeb, 0x4f, 0x60, 0xa3, 0xaa, 0xc4, 0x2b, 0x99, - 0xe4, 0x72, 0x42, 0xea, 0xf5, 0xf3, 0x79, 0xb1, 0xb1, 0xdc, 0x0a, 0x8f, - 0x53, 0xca, 0x6e, 0xb4, 0x5b, 0x70, 0xbf, 0xae, 0x48, 0x3b, 0xee, 0xca, - 0x17, 0xca, 0xae, 0x48, 0xf7, 0x7c, 0x55, 0x42, 0xa0, 0x06, 0x80, 0xe7, - 0xd4, 0x93, 0x70, 0x96, 0xd6, 0x0d, 0xb0, 0x16, 0xe7, 0x24, 0xdb, 0x03, - 0xf0, 0x54, 0x30, 0xed, 0x3f, 0x17, 0x19, 0x41, 0xb3, 0x81, 0x7a, 0xad, - 0xa1, 0x3b, 0x3a, 0x65, 0x1d, 0x34, 0xa2, 0x41, 0x49, 0x2c, 0x88, 0x33, - 0x11, 0xf6, 0xcb, 0x53, 0xf6, 0x81, 0x0c, 0x10, 0xed, 0x40, 0x8a, 0xd6, - 0x0e, 0xf0, 0xe3, 0x66, 0x0b, 0x44, 0x33, 0x3c, 0x82, 0xe1, 0x40, 0x01, - 0x9e, 0x4a, 0xbc, 0x44, 0xea, 0xe3, 0x31, 0x8a, 0x43, 0x78, 0x1c, 0xd5, - 0x07, 0x3c, 0x5b, 0xaf, 0x7d, 0x56, 0x51, 0xb3, 0x26, 0x8a, 0xad, 0xf8, - 0x2e, 0x53, 0xa3, 0x10, 0xc0, 0x42, 0x40, 0x71, 0x4e, 0xa6, 0x9b, 0x55, - 0x3d, 0x46, 0x5d, 0xdf, 0x41, 0xf6, 0xb0, 0x31, 0x98, 0x3a, 0xd4, 0x20, - 0xd9, 0xbb, 0x03, 0x52, 0x3b, 0xda, 0x55, 0x2b, 0xda, 0x28, 0x9a, 0xf7, - 0x5b, 0x5b, 0xba, 0x3b, 0x83, 0x62, 0x9e, 0x3f, 0x91, 0xf6, 0xad, 0x71, - 0x35, 0x96, 0xb6, 0x85, 0x74, 0x4e, 0xe7, 0xd6, 0xdc, 0x3d, 0xa8, 0xc5, - 0x87, 0x28, 0x92, 0x86, 0x5d, 0x91, 0x1a, 0x57, 0x74, 0x7c, 0x5f, 0xe2, - 0xfa, 0x81, 0x73, 0x0d, 0x8b, 0x8a, 0xe0, 0x9b, 0xe0, 0x50, 0xe0, 0xe3, - 0x85, 0x1f, 0x2d, 0x23, 0x4b, 0x6e, 0xa4, 0xfa, 0x78, 0xc5, 0xa6, 0xbc, - 0xa7, 0xc7, 0x07, 0x7f, 0x3d, 0x7d, 0xec, 0xb4, 0xe4, 0xad, 0x5b, 0x89, - 0x6a, 0xae, 0x02, 0xe7, 0xf7, 0xd9, 0x4a, 0x15, 0x6c, 0x84, 0xab, 0x61, - 0x03, 0x2d, 0x79, 0x61, 0x4e, 0xe3, 0x59, 0xc4, 0x15, 0xa2, 0x2f, 0xe5, - 0x7a, 0x9e, 0x86, 0xca, 0x1f, 0x25, 0x62, 0xc4, 0xd9, 0x0b, 0x26, 0xff, - 0xc8, 0x14, 0xfb, 0xd9, 0xde, 0x8f, 0xa9, 0x93, 0x3a, 0x65, 0xe9, 0x2c, - 0xd8, 0x2c, 0x35, 0xdc, 0xce, 0x54, 0x21, 0x66, 0xa4, 0x95, 0x75, 0xc1, - 0x95, 0x7d, 0x8b, 0x3c, 0xfb, 0x08, 0x2c, 0x13, 0x0d, 0x46, 0x59, 0x2a, - 0xfb, 0x83, 0xa8, 0xe2, 0x8f, 0xd6, 0xe2, 0xe7, 0xe6, 0xe1, 0x8f, 0xfb, - 0x51, 0x3a, 0x38, 0x1f, 0x44, 0x11, 0x1f, 0x00, 0x1c, 0xb4, 0x79, 0x61, - 0x13, 0xcb, 0xae, 0x36, 0xeb, 0x62, 0x93, 0x87, 0x1b, 0xe0, 0x7f, 0x6e, - 0xd7, 0x9e, 0x1e, 0x13, 0x25, 0x0c, 0xae, 0x98, 0x72, 0x64, 0xb7, 0x9f, - 0x2d, 0xc5, 0x28, 0x30, 0xb4, 0x1d, 0x08, 0xc8, 0x02, 0x93, 0x58, 0x48, - 0xc7, 0xcd, 0xd1, 0x14, 0xec, 0xd7, 0x40, 0x22, 0x4a, 0x23, 0x87, 0x02, - 0x8f, 0x66, 0x81, 0xfe, 0x95, 0xe9, 0x02, 0xa7, 0xe3, 0x70, 0xaa, 0xe9, - 0x48, 0xaf, 0x1d, 0xef, 0xe4, 0xfb, 0x78, 0xd3, 0x82, 0xd1, 0x0c, 0xa7, - 0x07, 0x36, 0x5b, 0xcd, 0x89, 0xdd, 0x93, 0x76, 0xe3, 0xef, 0x40, 0x6a, - 0x8c, 0x36, 0xff, 0x6d, 0xe4, 0xc6, 0x60, 0x11, 0xa6, 0x59, 0x01, 0x51, - 0xab, 0x76, 0xc1, 0xad, 0x6d, 0x5a, 0x62, 0xa0, 0xd2, 0xb7, 0xd9, 0x0a, - 0xd8, 0x8d, 0xd4, 0x6e, 0xe2, 0x1f, 0x3a, 0x8a, 0x5a, 0xa6, 0xc4, 0xb9, - 0x38, 0xa6, 0x80, 0xde, 0x9a, 0xa3, 0xdc, 0x0f, 0xc0, 0x5e, 0x70, 0x2d, - 0x53, 0x52, 0x19, 0xac, 0x5a, 0x71, 0x7f, 0x48, 0x82, 0x4c, 0xa5, 0x0c, - 0xb5, 0xb1, 0x4a, 0xf1, 0x7c, 0x78, 0x8e, 0x17, 0x79, 0x65, 0x5d, 0x3b, - 0xef, 0xd2, 0x4b, 0x1b, 0x8d, 0x54, 0x78, 0xe0, 0x78, 0xce, 0x52, 0x3b, - 0x34, 0x2f, 0x3e, 0x93, 0xcf, 0xd4, 0x07, 0x54, 0x66, 0x47, 0x52, 0xc7, - 0x6b, 0xba, 0xfb, 0x78, 0xeb, 0xcb, 0xa7, 0x77, 0x69, 0x38, 0xfe, 0x38, - 0xf1, 0x3a, 0x41, 0xf3, 0x3f, 0x62, 0x1d, 0xda, 0x67, 0x74, 0xc9, 0x9d, - 0x38, 0x5d, 0x72, 0x3b, 0x56, 0x17, 0x6a, 0xd5, 0x7d, 0x33, 0xab, 0xa3, - 0x4b, 0x05, 0xd2, 0xb7, 0x72, 0x1a, 0x7f, 0x77, 0x27, 0x87, 0x35, 0x59, - 0x5c, 0x88, 0x51, 0x29, 0xe1, 0x4b, 0x5b, 0x72, 0xcc, 0x0b, 0x23, 0x1e, - 0xa5, 0x4c, 0xca, 0x70, 0x29, 0x06, 0x9c, 0xb6, 0x7c, 0xea, 0x56, 0x8c, - 0x2a, 0xb9, 0x13, 0xa7, 0x32, 0xa2, 0x7c, 0x05, 0x5e, 0xc5, 0xa1, 0x87, - 0x4f, 0xe1, 0x54, 0x77, 0x61, 0x54, 0xc9, 0x5d, 0x38, 0x55, 0xf2, 0x19, - 0x58, 0x95, 0xbb, 0x9a, 0x1b, 0x19, 0x96, 0xf5, 0xa4, 0x19, 0x76, 0xe5, - 0xc7, 0xbd, 0x25, 0xb7, 0x41, 0x98, 0x15, 0x57, 0x91, 0xff, 0x37, 0x61, - 0x55, 0xc9, 0xaa, 0x45, 0x18, 0xf7, 0xca, 0xaa, 0x92, 0x7b, 0xe0, 0x55, - 0x2b, 0xb3, 0xaa, 0x27, 0xf1, 0x30, 0xa9, 0xb2, 0x51, 0x9b, 0xae, 0xbd, - 0x4a, 0x6f, 0xf4, 0x22, 0xe1, 0x00, 0x9b, 0xa8, 0xe9, 0x50, 0xf1, 0x5e, - 0xcb, 0x57, 0xc7, 0x51, 0x11, 0x49, 0xc7, 0x0c, 0x14, 0x58, 0x70, 0xe2, - 0x16, 0x1d, 0xcf, 0x13, 0xe5, 0x73, 0xa6, 0x7d, 0xde, 0xd2, 0x91, 0xbd, - 0x2d, 0x56, 0x8c, 0x67, 0x9b, 0x15, 0x39, 0x10, 0x95, 0x5f, 0xbf, 0xe9, - 0x1c, 0x74, 0xf1, 0x79, 0xc6, 0xd8, 0x19, 0x05, 0xf6, 0xe1, 0x8a, 0xbe, - 0x3b, 0x3d, 0x8d, 0xf7, 0x4f, 0x8e, 0xa2, 0x1b, 0xbc, 0x92, 0xf8, 0x8a, - 0xb3, 0xc6, 0x6c, 0xb9, 0x3e, 0xdf, 0xd8, 0xc2, 0x5b, 0x19, 0x98, 0x77, - 0xa0, 0x0b, 0x1d, 0xde, 0x1c, 0xec, 0x27, 0x53, 0xc9, 0x93, 0x65, 0x45, - 0xd9, 0xcd, 0x2d, 0x04, 0x3b, 0xbb, 0x4d, 0x1b, 0xfb, 0x55, 0xd4, 0xc0, - 0x85, 0xd2, 0x9d, 0x55, 0xff, 0x04, 0x79, 0x6e, 0x88, 0x4d, 0x71, 0xb7, - 0x23, 0xee, 0x21, 0x89, 0xf2, 0x8b, 0x1e, 0xf0, 0xec, 0x19, 0xc4, 0xf7, - 0xa6, 0x86, 0xb9, 0xdb, 0x5f, 0x3e, 0xdd, 0x06, 0x3e, 0x74, 0xcd, 0xf9, - 0x9d, 0xf2, 0xf2, 0xe3, 0xc1, 0xa3, 0xcd, 0xc7, 0x83, 0xc7, 0x28, 0xdc, - 0xa4, 0x2c, 0x85, 0xda, 0x9b, 0xcb, 0xf0, 0xe1, 0x7c, 0x49, 0x56, 0x2b, - 0xde, 0x1c, 0x1e, 0x44, 0x8c, 0x31, 0x94, 0x52, 0x06, 0x5e, 0xd3, 0xbf, - 0xea, 0xe0, 0xb1, 0x0b, 0x1d, 0x32, 0x1b, 0xf7, 0xb8, 0xa9, 0xb7, 0x1d, - 0xea, 0x96, 0x22, 0xdf, 0x6a, 0x6e, 0x16, 0x82, 0x52, 0x82, 0x3d, 0x54, - 0xb2, 0x2f, 0xb8, 0x46, 0x1f, 0xb8, 0xd2, 0xd9, 0x12, 0x67, 0xc3, 0x96, - 0x63, 0x55, 0xf8, 0x4b, 0xb0, 0xb4, 0x16, 0x26, 0xb6, 0xd5, 0x93, 0x6c, - 0xbc, 0x39, 0xee, 0x48, 0xab, 0xce, 0x22, 0xef, 0x93, 0x60, 0x3b, 0xe9, - 0x53, 0x5d, 0x81, 0x1d, 0xce, 0x44, 0x9b, 0x01, 0xe2, 0xf9, 0x0c, 0x45, - 0xaa, 0xaa, 0xbf, 0x1f, 0x23, 0xbc, 0xa3, 0x99, 0xfa, 0xe6, 0xe2, 0xc9, - 0x3f, 0xc7, 0xf9, 0x60, 0x55, 0xdf, 0x64, 0x56, 0x2f, 0x91, 0x2e, 0xde, - 0x92, 0x97, 0xc8, 0x1a, 0xab, 0x18, 0x7b, 0xf5, 0x51, 0xf5, 0xa7, 0x85, - 0xd5, 0xc3, 0x4b, 0x21, 0xb7, 0xe4, 0xef, 0x72, 0x60, 0x41, 0x41, 0x23, - 0x16, 0x8b, 0x76, 0x27, 0x51, 0x8e, 0xb2, 0x44, 0xc2, 0x48, 0x65, 0x6e, - 0x3b, 0xde, 0x1e, 0x10, 0x2f, 0x1d, 0x83, 0x21, 0x86, 0x9a, 0x15, 0x23, - 0x4a, 0x25, 0x6d, 0xdc, 0x13, 0x0c, 0x31, 0x6a, 0xb0, 0x19, 0xa3, 0x93, - 0x36, 0x89, 0x4a, 0x87, 0x15, 0xac, 0xd2, 0x8d, 0xb6, 0x04, 0x0a, 0x49, - 0xd5, 0xba, 0x10, 0x69, 0x74, 0xa3, 0xc8, 0xbb, 0x93, 0x14, 0x12, 0xa1, - 0x77, 0x63, 0x06, 0xde, 0xaa, 0xae, 0x4e, 0x77, 0xf4, 0x4f, 0x22, 0xb7, - 0xdf, 0x5b, 0x84, 0xe9, 0x2c, 0x37, 0x1a, 0x63, 0x12, 0x95, 0xb3, 0x45, - 0x9d, 0x2e, 0x1d, 0x81, 0x56, 0x8b, 0xb5, 0x2e, 0x06, 0x4f, 0x1d, 0x7f, - 0xe4, 0x38, 0x82, 0x02, 0xa6, 0x0c, 0xf1, 0x98, 0x8d, 0x1b, 0x3d, 0x56, - 0x6c, 0xb6, 0xb5, 0xac, 0x36, 0x4f, 0x3a, 0x3a, 0x36, 0xdc, 0xef, 0xed, - 0x2e, 0x7a, 0x72, 0xf1, 0x7f, 0xb9, 0xbf, 0x88, 0x09, 0x31, 0x0e, 0x81, - 0x13, 0xf2, 0x76, 0x2e, 0x37, 0xc8, 0x68, 0x7f, 0xfe, 0x7f, 0x83, 0xec, - 0xe1, 0x0c, 0x32, 0xe7, 0x0a, 0x87, 0x84, 0xe5, 0xef, 0x90, 0x85, 0xd6, - 0x5e, 0x06, 0xaf, 0x58, 0x18, 0xd5, 0xee, 0x33, 0x6c, 0x6a, 0x73, 0x17, - 0xee, 0xe5, 0x1a, 0x67, 0x8f, 0x13, 0x9f, 0x75, 0xad, 0xcc, 0xb1, 0x1a, - 0x0c, 0x2b, 0x26, 0x2d, 0x38, 0xec, 0xac, 0x9e, 0x7a, 0x3a, 0x29, 0x41, - 0x48, 0xdf, 0x92, 0x59, 0x79, 0x3e, 0xa6, 0xc8, 0x6b, 0x7a, 0xf7, 0x19, - 0xd9, 0xd5, 0xff, 0xf5, 0xdc, 0x6a, 0x75, 0x9f, 0xd1, 0x93, 0xff, 0x9f, - 0x43, 0x3d, 0x00, 0x87, 0x72, 0x09, 0x67, 0x1d, 0x8b, 0xdd, 0xb0, 0x16, - 0x11, 0xfe, 0xab, 0x37, 0x7a, 0xc3, 0x06, 0xb7, 0x11, 0x42, 0x98, 0xbf, - 0xfe, 0xe8, 0xe4, 0xef, 0x4f, 0xb9, 0x09, 0xed, 0x69, 0x3b, 0x0b, 0xb1, - 0x8c, 0x5e, 0xbd, 0xd8, 0x3f, 0xe9, 0xca, 0xab, 0xe1, 0xb3, 0xef, 0xc8, - 0x3b, 0x7b, 0xe0, 0xb4, 0x33, 0x97, 0xf0, 0x3e, 0x9d, 0xed, 0x59, 0x3e, - 0xda, 0xc5, 0xff, 0xfe, 0x41, 0x0e, 0xac, 0x79, 0x9a, 0x8e, 0xb9, 0x9d, - 0x53, 0xb4, 0x47, 0xff, 0x08, 0xa4, 0xe9, 0x26, 0xcd, 0xc6, 0x7b, 0x98, - 0x62, 0xe8, 0xa7, 0x5e, 0xd3, 0xcb, 0xa0, 0xc6, 0xe7, 0xd2, 0xcf, 0x56, - 0x1a, 0x90, 0x05, 0xd2, 0x40, 0x37, 0x18, 0x60, 0x99, 0x66, 0xa6, 0xac, - 0x45, 0x6d, 0xba, 0x06, 0x6b, 0xa0, 0xbe, 0x9c, 0xc9, 0x90, 0x7a, 0xdc, - 0x0d, 0xdc, 0x67, 0xb4, 0xcf, 0x59, 0xf0, 0x4a, 0x5e, 0xdb, 0x4f, 0xe1, - 0x34, 0xc8, 0x9c, 0xd2, 0xa2, 0x1e, 0x6d, 0x71, 0x63, 0x3a, 0x3a, 0xaa, - 0xf0, 0x91, 0xff, 0x83, 0x53, 0x17, 0x9c, 0x5d, 0x68, 0x1e, 0xfe, 0x92, - 0xb3, 0xbf, 0x57, 0xd9, 0xe7, 0x2c, 0xe0, 0xd1, 0xd6, 0x56, 0xf3, 0x6b, - 0x56, 0x4d, 0xc2, 0x6e, 0xed, 0x46, 0x3f, 0xd0, 0xaf, 0xab, 0x99, 0xd9, - 0x6e, 0x69, 0xa2, 0xbd, 0x91, 0x5d, 0x35, 0x0c, 0x4d, 0xa2, 0xa0, 0xa6, - 0x72, 0x2e, 0x59, 0xb8, 0x9f, 0xd3, 0xa0, 0x06, 0x4c, 0x02, 0x1e, 0x2f, - 0xca, 0x90, 0xd3, 0x32, 0x71, 0x4f, 0x9b, 0x53, 0xf8, 0xfb, 0xcd, 0x72, - 0xc8, 0xcc, 0xa1, 0x0c, 0x3c, 0x3c, 0xfb, 0xbc, 0x9f, 0x3c, 0xa4, 0xb8, - 0xf9, 0x92, 0x8e, 0x2d, 0x15, 0x35, 0xde, 0x39, 0x6f, 0x9b, 0x06, 0x26, - 0x16, 0xab, 0xeb, 0x1f, 0x3e, 0xbc, 0x86, 0xf3, 0xde, 0x72, 0xbc, 0x80, - 0x22, 0xaf, 0xcb, 0x62, 0x5a, 0x39, 0xb5, 0xa1, 0x74, 0x21, 0x0a, 0x18, - 0x97, 0x33, 0x28, 0x30, 0xe5, 0x6d, 0x83, 0xb1, 0x52, 0x84, 0x6d, 0x79, - 0x68, 0x19, 0xd4, 0x8d, 0xb2, 0xa2, 0x3e, 0xa2, 0xca, 0x3f, 0xd3, 0x7a, - 0x24, 0x5a, 0x03, 0x17, 0xed, 0x22, 0x2e, 0x00, 0x48, 0xaf, 0x92, 0x13, - 0xa9, 0x41, 0x86, 0xc1, 0x4e, 0x95, 0xd7, 0x51, 0xb8, 0xdf, 0x8a, 0x96, - 0xed, 0x4b, 0x41, 0x42, 0x07, 0xa0, 0x19, 0xdd, 0x86, 0x6b, 0xe7, 0x36, - 0xd8, 0x5b, 0x77, 0x2b, 0x4e, 0xf8, 0xdf, 0xf6, 0x36, 0x78, 0x6c, 0x8e, - 0xf9, 0xa1, 0xbd, 0x11, 0x0d, 0x95, 0x10, 0x73, 0xe9, 0xd0, 0xdd, 0x14, - 0x0f, 0x53, 0xdf, 0x23, 0xe4, 0x77, 0x5c, 0x52, 0xb7, 0xbd, 0x11, 0x3f, - 0x49, 0x49, 0xb5, 0xb6, 0x58, 0x8b, 0x0b, 0xbf, 0xc3, 0x7c, 0xda, 0xc9, - 0x34, 0xb9, 0x12, 0x94, 0xd5, 0xf6, 0x1a, 0x4f, 0x5f, 0x3d, 0xa2, 0xd5, - 0x9c, 0xbd, 0x3a, 0xdd, 0x1e, 0x6c, 0x19, 0xdd, 0xa1, 0xa2, 0x44, 0x6a, - 0x02, 0x04, 0xff, 0xf6, 0x70, 0xff, 0xf4, 0x4c, 0xa1, 0xd5, 0x1b, 0xf1, - 0x2f, 0x9f, 0x72, 0x6c, 0x97, 0x00, 0x18, 0x18, 0xce, 0xe5, 0x1a, 0xae, - 0x8c, 0xe2, 0x8c, 0xe3, 0xda, 0x78, 0x69, 0x3a, 0x38, 0x7a, 0xd2, 0x08, - 0xff, 0x8d, 0x2b, 0xc3, 0x7c, 0x34, 0x7d, 0x38, 0x68, 0xa9, 0xc9, 0x37, - 0x58, 0x00, 0x74, 0x3f, 0xa8, 0x7e, 0xb7, 0x98, 0x62, 0x56, 0x38, 0xce, - 0xd3, 0x74, 0xf5, 0x56, 0xdd, 0x25, 0xff, 0xee, 0xfa, 0xa7, 0x08, 0x0d, - 0x9f, 0x57, 0x66, 0xb1, 0xba, 0x59, 0x9c, 0xc4, 0xeb, 0xb4, 0x0f, 0xf2, - 0x04, 0x2b, 0x75, 0x82, 0x73, 0x92, 0x9b, 0x30, 0x51, 0x76, 0x54, 0x53, - 0x1f, 0x85, 0xe4, 0x06, 0x18, 0xe2, 0xd6, 0xd9, 0xde, 0x73, 0x92, 0x5a, - 0x73, 0xf0, 0x95, 0x29, 0xbe, 0xb5, 0xb6, 0xd5, 0x24, 0xbe, 0xa4, 0x27, - 0xb6, 0xc6, 0x20, 0x3a, 0xff, 0x40, 0x78, 0x40, 0x39, 0x6d, 0xb0, 0x4f, - 0xe9, 0x8b, 0xba, 0x88, 0x47, 0x53, 0xac, 0x46, 0x89, 0x81, 0x9b, 0x78, - 0x2e, 0xb9, 0x53, 0xf4, 0xb5, 0xe6, 0xe9, 0x94, 0xe1, 0x88, 0xa3, 0x69, - 0x36, 0x54, 0x7a, 0x6f, 0xf6, 0xc4, 0x21, 0x54, 0x41, 0x96, 0x2c, 0x8c, - 0xd9, 0xc5, 0x63, 0xb6, 0xb5, 0x41, 0x98, 0x81, 0x41, 0x4c, 0xc5, 0x29, - 0xbc, 0x68, 0xe6, 0xa8, 0x5f, 0x71, 0x9d, 0x86, 0xf6, 0xeb, 0x15, 0x1c, - 0x24, 0x93, 0xc2, 0x3d, 0xf0, 0x92, 0xec, 0x28, 0xd4, 0xe0, 0x3c, 0x21, - 0xdd, 0xf2, 0x0c, 0xca, 0x22, 0x75, 0x18, 0x77, 0x67, 0x65, 0x08, 0x6e, - 0xf6, 0x22, 0xb6, 0x09, 0x8b, 0x97, 0xec, 0xb9, 0x2e, 0x39, 0x8b, 0xfc, - 0xf8, 0xb4, 0x31, 0x4e, 0x55, 0x53, 0x63, 0x0a, 0xa7, 0x55, 0x90, 0xe7, - 0x1d, 0x9d, 0x97, 0xd9, 0x65, 0x32, 0xba, 0x8e, 0xc0, 0xb4, 0x99, 0x4a, - 0x9c, 0x06, 0x77, 0xc7, 0xb4, 0x7e, 0x5a, 0xee, 0x64, 0x0c, 0x9c, 0xcd, - 0x0d, 0xe4, 0x7a, 0x87, 0x28, 0x44, 0x60, 0x92, 0x3b, 0x91, 0x6d, 0x7b, - 0xa1, 0x77, 0xa6, 0xdd, 0xf6, 0x62, 0x1a, 0x45, 0xdf, 0xcf, 0x5a, 0x6e, - 0x47, 0x78, 0x81, 0xea, 0x95, 0x11, 0x4d, 0x75, 0x09, 0xdd, 0x76, 0x72, - 0x6c, 0x6d, 0xd9, 0xe3, 0x9e, 0x2b, 0x8e, 0x36, 0x4a, 0x82, 0x6d, 0x45, - 0x46, 0x17, 0x29, 0xe8, 0xcf, 0x83, 0xbb, 0xf0, 0xb3, 0x76, 0xd4, 0xcc, - 0xe5, 0x6e, 0x9f, 0xca, 0xcf, 0xcc, 0x16, 0xdc, 0x18, 0xa6, 0xba, 0x03, - 0x3f, 0x33, 0x83, 0xdf, 0x85, 0x2c, 0xec, 0xca, 0x56, 0x44, 0x19, 0x2a, - 0xa7, 0x84, 0x5b, 0xd2, 0x3a, 0x6b, 0xb8, 0xd4, 0xed, 0x8d, 0x5c, 0xc7, - 0xf2, 0x38, 0x82, 0xa9, 0x24, 0x98, 0x4c, 0x42, 0x8f, 0x44, 0xdb, 0x6e, - 0x23, 0x7a, 0x0b, 0x1c, 0x00, 0xb4, 0x2d, 0x3c, 0x8a, 0x4d, 0x90, 0xad, - 0x82, 0x12, 0x26, 0x68, 0x7c, 0x1c, 0xd3, 0xf0, 0x51, 0xcf, 0xce, 0x38, - 0xfd, 0xb5, 0xd6, 0xba, 0x6c, 0xfb, 0xa4, 0x87, 0xcb, 0x01, 0x6c, 0x06, - 0x05, 0x3e, 0x1a, 0xef, 0xf3, 0xf3, 0x92, 0x9a, 0x84, 0x79, 0xb5, 0xa0, - 0xc8, 0x08, 0x65, 0xfe, 0x9b, 0x52, 0x59, 0x08, 0x80, 0x87, 0x09, 0x1d, - 0xd7, 0xdf, 0x28, 0x92, 0x7a, 0xbe, 0x2d, 0x89, 0x68, 0xb5, 0x83, 0xd0, - 0xe1, 0xe5, 0xa4, 0x69, 0x53, 0x70, 0xcb, 0x33, 0x8f, 0xe7, 0x69, 0x4e, - 0x83, 0x61, 0xa9, 0x59, 0x2a, 0xa5, 0x77, 0x65, 0xfa, 0x2b, 0xc7, 0x4f, - 0x87, 0xdc, 0x77, 0xe8, 0x3c, 0xcd, 0x41, 0xcf, 0x6e, 0x87, 0x4e, 0xa6, - 0xe3, 0x64, 0x6e, 0x5e, 0x83, 0x4f, 0xd7, 0xa6, 0x6f, 0xa8, 0xa6, 0x70, - 0x71, 0x26, 0xed, 0xee, 0xf8, 0xa6, 0xcf, 0x5a, 0xe0, 0xfe, 0x61, 0xa6, - 0x2e, 0x96, 0x99, 0x33, 0xac, 0x06, 0x4b, 0x07, 0x84, 0x71, 0xaf, 0xe0, - 0x42, 0xcd, 0x52, 0x03, 0xf1, 0x81, 0xde, 0x2e, 0x2f, 0x39, 0x2a, 0x9d, - 0x4e, 0x38, 0x94, 0x4c, 0x05, 0xce, 0xd9, 0x6c, 0x96, 0x8e, 0x4d, 0x4e, - 0x3e, 0xfd, 0x18, 0x17, 0x25, 0x5e, 0x23, 0x58, 0x1b, 0x43, 0xc2, 0xd3, - 0x59, 0xa3, 0xe1, 0xdf, 0x0f, 0x40, 0x9e, 0xc2, 0x33, 0x48, 0x2b, 0xf0, - 0x1f, 0xa4, 0x96, 0x53, 0x1a, 0x09, 0x77, 0xe9, 0x14, 0x3b, 0xab, 0x8f, - 0x2e, 0x5c, 0x9b, 0x26, 0x99, 0x5e, 0x61, 0x78, 0x9c, 0x53, 0xed, 0x23, - 0xbf, 0x01, 0x18, 0xee, 0x1f, 0x6e, 0x08, 0x1e, 0x5e, 0x75, 0x81, 0x25, - 0xc9, 0x0d, 0x3f, 0xc4, 0xd2, 0xcd, 0x41, 0xd0, 0x1e, 0xac, 0x61, 0x4d, - 0x11, 0x67, 0xdf, 0xe8, 0x7a, 0x71, 0x3c, 0xa9, 0xe7, 0x86, 0xd8, 0x6f, - 0xbe, 0xfb, 0xf8, 0x54, 0x74, 0xff, 0xb9, 0xcd, 0x5d, 0xf3, 0xdf, 0xe2, - 0xce, 0xd3, 0x8a, 0x3c, 0xac, 0xd2, 0x65, 0xae, 0x8a, 0x6a, 0x7a, 0x0b, - 0x35, 0x85, 0xf9, 0x08, 0x68, 0x35, 0x55, 0x1d, 0xc3, 0x27, 0x15, 0x4b, - 0x15, 0x95, 0x4e, 0x86, 0x9f, 0x9d, 0xe7, 0x28, 0xb5, 0x5d, 0x7e, 0x7f, - 0x33, 0xc3, 0x97, 0x6a, 0x46, 0x44, 0x8e, 0x12, 0x58, 0x87, 0xf1, 0x82, - 0xaa, 0x2f, 0x67, 0x19, 0x25, 0x21, 0x6f, 0x16, 0x93, 0x09, 0xc1, 0x75, - 0x83, 0x38, 0xa9, 0xcb, 0x6c, 0xb8, 0x08, 0xe4, 0x35, 0xcc, 0x8b, 0x0c, - 0x7b, 0x78, 0x28, 0x24, 0x1d, 0xcf, 0x69, 0xe7, 0x60, 0x94, 0xe0, 0xdb, - 0x1c, 0x77, 0x7b, 0x17, 0x96, 0x1e, 0xfe, 0x1d, 0x3a, 0x04, 0x86, 0x67, - 0xb9, 0x1b, 0x21, 0x78, 0x6b, 0xbd, 0x93, 0x14, 0x08, 0x11, 0x47, 0x43, - 0x2b, 0xd8, 0xf2, 0xb4, 0x82, 0x65, 0x72, 0xe1, 0x87, 0xa4, 0x44, 0x88, - 0xc8, 0x5d, 0x63, 0x47, 0x2b, 0xea, 0x4b, 0x2a, 0xed, 0x4d, 0x71, 0x92, - 0xd8, 0xcf, 0x46, 0x4f, 0x9d, 0x26, 0x57, 0x06, 0x1c, 0x56, 0xeb, 0x81, - 0x0d, 0xe1, 0x2b, 0x54, 0xb1, 0x94, 0xd7, 0xe0, 0x6b, 0x01, 0x84, 0x74, - 0x91, 0x18, 0x0c, 0x22, 0xc8, 0x8a, 0x42, 0xda, 0x90, 0x4a, 0x6d, 0xbe, - 0x51, 0x5e, 0x6b, 0x5e, 0x98, 0x8a, 0x33, 0xa5, 0x24, 0xe7, 0x2d, 0x10, - 0x79, 0xa0, 0x00, 0xb3, 0x73, 0x16, 0x9d, 0xfc, 0x79, 0x91, 0xc7, 0x3c, - 0x76, 0xd8, 0x25, 0xcb, 0x88, 0x79, 0x93, 0x96, 0xfa, 0x6c, 0xd2, 0x74, - 0x4c, 0x5b, 0x50, 0x95, 0x60, 0xe6, 0x6c, 0x3c, 0xf7, 0x82, 0xf2, 0x2c, - 0x71, 0x7d, 0xa8, 0xb7, 0xd1, 0x70, 0x03, 0xec, 0x55, 0x60, 0x50, 0x61, - 0xa7, 0xb0, 0xca, 0x29, 0xb5, 0xd3, 0x4a, 0xf3, 0x51, 0x79, 0x1d, 0xee, - 0xe0, 0x76, 0x5b, 0xf9, 0xf2, 0xa0, 0x62, 0xb3, 0x21, 0x37, 0x99, 0x75, - 0xac, 0x20, 0x36, 0xfd, 0xdb, 0x4c, 0xa0, 0x79, 0xb8, 0xb5, 0x22, 0xf3, - 0x0c, 0x58, 0x17, 0x01, 0xb1, 0x4f, 0xb5, 0x7f, 0x9b, 0xaf, 0x74, 0x50, - 0xea, 0x92, 0xbf, 0x4f, 0xd2, 0xc9, 0xd7, 0x82, 0xdd, 0x8f, 0x46, 0x69, - 0xd7, 0x96, 0x99, 0x54, 0x5d, 0x02, 0xe6, 0x5c, 0x22, 0x78, 0x30, 0x73, - 0x39, 0x51, 0x0f, 0x51, 0xa8, 0xdd, 0x2e, 0x45, 0x4a, 0xa8, 0x1a, 0x47, - 0x03, 0x17, 0xe8, 0xc9, 0x9a, 0x65, 0xe7, 0x17, 0xa4, 0x0d, 0x31, 0xa4, - 0x9d, 0xf4, 0x05, 0x9c, 0x2c, 0xa8, 0x59, 0xad, 0xc1, 0x98, 0x5d, 0x6e, - 0xef, 0xac, 0x54, 0x81, 0x19, 0xf9, 0xc0, 0x20, 0x01, 0x5e, 0x76, 0x07, - 0xc6, 0x05, 0xbc, 0x7a, 0xfe, 0x68, 0x85, 0xd2, 0x4b, 0xa1, 0xf2, 0x7e, - 0x8b, 0x47, 0xc9, 0x25, 0x18, 0x65, 0xf3, 0x8b, 0xd4, 0x85, 0xce, 0x8a, - 0x77, 0xfa, 0xfc, 0xd6, 0xe5, 0x8e, 0x27, 0xc1, 0x4e, 0x5f, 0x35, 0x85, - 0x97, 0x86, 0xc5, 0xe0, 0xa0, 0xc0, 0x34, 0x30, 0xd8, 0xb3, 0x86, 0x13, - 0x5c, 0xee, 0x48, 0x0d, 0x34, 0xee, 0xd3, 0x55, 0xdb, 0x01, 0x2a, 0x04, - 0xeb, 0x56, 0x35, 0xb0, 0x0d, 0x05, 0x97, 0x82, 0x5e, 0xc6, 0xf7, 0xae, - 0x80, 0x8f, 0x61, 0xc7, 0x08, 0xcb, 0x04, 0xf5, 0x03, 0xda, 0xab, 0x43, - 0x20, 0x19, 0x4c, 0x1b, 0x7c, 0xba, 0xfd, 0xec, 0xe9, 0xc6, 0xb2, 0xa3, - 0xb4, 0x1f, 0xf8, 0x10, 0x29, 0x9a, 0x34, 0xee, 0x6a, 0x82, 0x04, 0x9f, - 0xc6, 0x16, 0x2a, 0x7c, 0x22, 0xf8, 0xaf, 0x9d, 0x41, 0x63, 0x99, 0xca, - 0x6e, 0x2a, 0x0b, 0x3c, 0xec, 0xa1, 0x82, 0xe7, 0x63, 0xbc, 0x30, 0x24, - 0x8b, 0xd5, 0x07, 0x82, 0x57, 0x69, 0xb8, 0xc8, 0xa6, 0x84, 0x7b, 0xa0, - 0xdc, 0x92, 0x38, 0x65, 0x8b, 0x4b, 0xcd, 0xfc, 0x1c, 0xd8, 0x56, 0xd4, - 0x92, 0xda, 0x32, 0x3e, 0xd2, 0x15, 0xb1, 0x47, 0x30, 0xde, 0x26, 0x4f, - 0x6c, 0x3d, 0xad, 0x2e, 0xb7, 0x05, 0x65, 0x5a, 0xfe, 0x35, 0xd8, 0x0e, - 0x80, 0x60, 0xeb, 0xef, 0x76, 0x1c, 0x5a, 0xb3, 0x23, 0x7e, 0x3a, 0xad, - 0x3d, 0xfa, 0x14, 0x5a, 0x7b, 0x74, 0x37, 0x5a, 0x7b, 0xf6, 0xe4, 0xe9, - 0xf3, 0xa5, 0xb4, 0xe6, 0x6c, 0xd9, 0xc3, 0xd0, 0xda, 0xa3, 0x7b, 0xa1, - 0x35, 0x67, 0x99, 0xff, 0x4d, 0x68, 0xcd, 0xa1, 0xfe, 0x7b, 0xa2, 0x35, - 0xad, 0x4e, 0xdc, 0x43, 0xa5, 0xed, 0x6b, 0x0f, 0xf4, 0x57, 0x8a, 0x47, - 0x09, 0xf1, 0x05, 0xc1, 0x4a, 0x59, 0xfb, 0x91, 0x77, 0x3c, 0xb4, 0x76, - 0x69, 0x68, 0x47, 0xca, 0x14, 0x46, 0x3d, 0xba, 0x7a, 0xd0, 0x6a, 0xae, - 0x4a, 0x12, 0xcd, 0xa7, 0xc8, 0xfc, 0xd7, 0xe2, 0x35, 0x6d, 0x68, 0xaf, - 0xaa, 0x98, 0x83, 0x8c, 0xca, 0x45, 0xad, 0x9f, 0xb7, 0x66, 0x9a, 0xb3, - 0x6d, 0xf8, 0xb3, 0x3f, 0x57, 0xa5, 0x16, 0xcf, 0x2e, 0xb0, 0xb5, 0xf5, - 0xc7, 0xfa, 0xee, 0x55, 0xa9, 0x4c, 0x0d, 0x4e, 0x9d, 0x6d, 0x93, 0x20, - 0xae, 0x41, 0x37, 0x93, 0x6e, 0x9e, 0x41, 0xfc, 0x06, 0x71, 0xb3, 0x18, - 0x4f, 0xb2, 0xee, 0xdd, 0x10, 0x5b, 0x2e, 0x4e, 0x40, 0x9b, 0x8c, 0x68, - 0x0c, 0x31, 0xc1, 0xf0, 0x24, 0xf1, 0x52, 0x04, 0x20, 0x56, 0x19, 0xa2, - 0xa6, 0x6a, 0x97, 0x31, 0x0f, 0x24, 0x49, 0x14, 0x95, 0x01, 0x77, 0x31, - 0xa4, 0x22, 0x57, 0xa0, 0x29, 0x60, 0x21, 0x1f, 0xbc, 0x30, 0x0b, 0xf4, - 0x51, 0xf6, 0x36, 0x80, 0x06, 0x50, 0x54, 0x5a, 0x73, 0x8b, 0x13, 0x33, - 0x59, 0xd3, 0xb5, 0x6c, 0xbf, 0xa1, 0x0a, 0xf6, 0x75, 0x9c, 0xa4, 0x09, - 0xe9, 0x46, 0xa4, 0x9a, 0x12, 0x18, 0xae, 0x60, 0xe8, 0x14, 0x02, 0x76, - 0x85, 0xd4, 0xa5, 0x5d, 0xe6, 0xc5, 0xe0, 0x9c, 0x82, 0x66, 0xc9, 0xe9, - 0xee, 0xde, 0x70, 0xa3, 0x64, 0x2e, 0xa1, 0x9a, 0xff, 0x2e, 0x90, 0x00, - 0xad, 0xf3, 0xbf, 0xff, 0x3c, 0x59, 0x77, 0xf4, 0xd5, 0xaf, 0x80, 0xbb, - 0xb4, 0xf8, 0x68, 0xb5, 0x1b, 0x60, 0x3b, 0x43, 0x11, 0xf9, 0xbb, 0x17, - 0xa2, 0x09, 0x65, 0xd2, 0x42, 0x29, 0x45, 0xda, 0xa0, 0x7a, 0x6d, 0x8d, - 0xc7, 0x0a, 0xd9, 0x06, 0x41, 0xb7, 0xe2, 0xb9, 0x49, 0xeb, 0xa9, 0xd1, - 0x8d, 0x36, 0x35, 0xc9, 0x3d, 0x09, 0x05, 0x17, 0x11, 0xa3, 0xf4, 0xf0, - 0xe0, 0xcc, 0x43, 0xd1, 0x1b, 0x17, 0x01, 0x34, 0x3f, 0xf9, 0x50, 0xce, - 0xd4, 0xb1, 0x6f, 0x36, 0x00, 0x9e, 0x2a, 0x4f, 0x96, 0x10, 0x30, 0x59, - 0xed, 0x67, 0x55, 0x53, 0xb4, 0x83, 0xfb, 0x53, 0xd1, 0x79, 0x44, 0xf1, - 0x0b, 0x5c, 0xeb, 0x78, 0x31, 0x9b, 0xcb, 0x27, 0x51, 0x1f, 0x8a, 0x8c, - 0xf5, 0x61, 0xc2, 0xe1, 0x15, 0x1c, 0xae, 0xa4, 0x0c, 0xb5, 0x5b, 0x21, - 0xde, 0x2c, 0x90, 0x08, 0x9c, 0x39, 0xa5, 0xf7, 0x59, 0x62, 0x2f, 0x8a, - 0xb0, 0x7d, 0x54, 0x37, 0x7b, 0x8e, 0xfa, 0xed, 0x56, 0xc6, 0xe9, 0x70, - 0x71, 0xae, 0x8d, 0xd3, 0x0c, 0xac, 0x6f, 0x93, 0x67, 0x11, 0x14, 0x04, - 0xf6, 0xf3, 0x4e, 0x05, 0x8c, 0x07, 0x63, 0x44, 0x15, 0x06, 0x2f, 0x2b, - 0xdf, 0xc8, 0x1a, 0xdd, 0x90, 0x0b, 0xde, 0x71, 0xa4, 0xf7, 0xed, 0x96, - 0xe9, 0x98, 0x66, 0x65, 0xba, 0xef, 0x5a, 0xae, 0x3d, 0xa8, 0xf8, 0xa3, - 0x90, 0xc9, 0x4a, 0x57, 0xa2, 0x4d, 0x00, 0xfd, 0xd6, 0xf1, 0xd3, 0x45, - 0x69, 0x53, 0x74, 0xfb, 0xb6, 0xbb, 0x29, 0xe6, 0x8f, 0x9b, 0x57, 0xa7, - 0x1e, 0xcd, 0xe3, 0x09, 0x88, 0xc3, 0x02, 0x8c, 0xf3, 0x2f, 0xc2, 0x58, - 0x40, 0x5c, 0xf8, 0x8a, 0x7e, 0xe0, 0x83, 0x93, 0xe8, 0x25, 0x8a, 0x4e, - 0xb4, 0xe4, 0xa3, 0x75, 0x52, 0x24, 0x1f, 0x6f, 0x3f, 0x42, 0x88, 0xd4, - 0xc6, 0x6f, 0x48, 0x6f, 0x80, 0x1f, 0x79, 0x98, 0xed, 0xa0, 0x2e, 0x54, - 0xe4, 0x3c, 0x24, 0x2b, 0x9d, 0x2b, 0x4f, 0x08, 0x51, 0x03, 0xe8, 0x14, - 0x9b, 0x75, 0x12, 0x9f, 0x4e, 0x93, 0x72, 0x9a, 0x21, 0xa5, 0x5f, 0x4a, - 0x3b, 0x3c, 0x31, 0xdc, 0x83, 0xfe, 0x8c, 0x68, 0x5d, 0xf1, 0xdf, 0x59, - 0x75, 0x41, 0x71, 0x61, 0xbd, 0xc6, 0xfb, 0x07, 0x7f, 0xdd, 0x50, 0x5b, - 0x5f, 0x63, 0x90, 0xd8, 0xd6, 0x26, 0x04, 0x5b, 0x85, 0xcd, 0xf4, 0x18, - 0x5a, 0x4a, 0x8e, 0x30, 0x1d, 0x3b, 0xba, 0xfb, 0x52, 0x5a, 0x75, 0xf7, - 0xb0, 0x4d, 0x9f, 0x9f, 0xce, 0x8f, 0xdd, 0xd1, 0x57, 0x25, 0xcb, 0xc6, - 0xca, 0x56, 0x53, 0xb8, 0x27, 0xf0, 0xdf, 0x34, 0x26, 0x34, 0xff, 0x36, - 0xbd, 0xe4, 0x05, 0x21, 0xf4, 0xb5, 0xc5, 0x21, 0x22, 0xb8, 0x2b, 0x34, - 0x18, 0x9c, 0xfe, 0xfb, 0x37, 0xc7, 0x2f, 0x0e, 0x5f, 0xed, 0xff, 0xc3, - 0xb8, 0xf7, 0x70, 0x70, 0xed, 0x45, 0xf5, 0x3e, 0x4d, 0xaa, 0xeb, 0xf7, - 0xa0, 0x81, 0xc1, 0x2f, 0xd7, 0x1f, 0x6d, 0x60, 0xbb, 0x0f, 0x0f, 0x92, - 0xff, 0x3c, 0x6d, 0x76, 0xe3, 0x64, 0x90, 0x44, 0xa7, 0xcf, 0x64, 0x10, - 0x7c, 0xaf, 0x4a, 0xeb, 0xaa, 0x11, 0x3f, 0x74, 0x7a, 0x4e, 0xb0, 0x02, - 0x6e, 0x7a, 0x36, 0x31, 0xcf, 0xd5, 0x10, 0x8c, 0xef, 0xc3, 0x62, 0x3d, - 0x26, 0xab, 0xa9, 0x93, 0x83, 0x44, 0x59, 0x04, 0x61, 0x9f, 0x30, 0xcc, - 0x33, 0x52, 0x2a, 0x5c, 0xd7, 0xd8, 0x93, 0xad, 0xc1, 0xce, 0xc6, 0x72, - 0x77, 0xb3, 0xb3, 0x81, 0x7e, 0x5c, 0xd1, 0x50, 0xcb, 0x1d, 0x23, 0x8b, - 0xce, 0xe0, 0x77, 0x21, 0x15, 0x5d, 0xd7, 0x4a, 0x94, 0xf2, 0xa6, 0xcf, - 0x73, 0x0f, 0x17, 0x93, 0x46, 0xd3, 0xda, 0xb8, 0xa6, 0xbe, 0xe1, 0xe9, - 0x34, 0x4f, 0x6b, 0x01, 0x24, 0x8b, 0xf6, 0xe0, 0xbf, 0x5f, 0x81, 0xca, - 0xed, 0x35, 0x42, 0x4b, 0xaa, 0xca, 0x08, 0x17, 0xa3, 0x6b, 0xe2, 0x9b, - 0x46, 0x74, 0x0d, 0xb4, 0xff, 0x4c, 0x3a, 0x36, 0x4f, 0x82, 0xd4, 0xdb, - 0xf5, 0xb4, 0xb2, 0xb3, 0x7f, 0x9c, 0x1c, 0x7e, 0xb5, 0x87, 0xca, 0xe3, - 0xd7, 0x88, 0x3d, 0x5a, 0x35, 0x14, 0x57, 0xc2, 0x45, 0xf1, 0xb6, 0xe6, - 0xc7, 0x17, 0x47, 0xa7, 0x27, 0xaf, 0x8e, 0x0f, 0xbe, 0xda, 0xfb, 0x11, - 0x83, 0x0d, 0x60, 0xf2, 0x5c, 0x3b, 0xef, 0x9a, 0x9f, 0x45, 0xda, 0xe1, - 0xd1, 0x1b, 0xe0, 0xcd, 0xe1, 0x0f, 0xef, 0x0f, 0xdf, 0xfc, 0xfd, 0xab, - 0xbd, 0xcb, 0xa4, 0xec, 0xe3, 0xf7, 0xf1, 0xdb, 0x88, 0x37, 0x95, 0x5f, - 0x66, 0x65, 0x91, 0x63, 0x12, 0x0f, 0xd8, 0x1a, 0x65, 0x86, 0x27, 0xe7, - 0x27, 0x2e, 0x07, 0xb6, 0xea, 0xc1, 0x7a, 0xd7, 0xd4, 0xb2, 0x45, 0x97, - 0xf5, 0xf6, 0xd6, 0x96, 0xec, 0xf2, 0xad, 0xdd, 0x72, 0x7f, 0xed, 0x73, - 0xd6, 0xdb, 0x24, 0x3b, 0x1f, 0x38, 0x4c, 0x01, 0x7d, 0x9c, 0xc3, 0xe9, - 0x87, 0x2a, 0xfb, 0x2d, 0x8d, 0xf6, 0xc8, 0xa4, 0xf2, 0x5a, 0x6f, 0x9f, - 0xbd, 0xc4, 0xd6, 0xdb, 0xa7, 0x52, 0x7e, 0x84, 0xff, 0x8a, 0xbe, 0x7d, - 0xf5, 0xd7, 0xd3, 0xa3, 0xff, 0x3a, 0x34, 0x19, 0xc8, 0xb3, 0x45, 0x45, - 0xae, 0xce, 0xaf, 0x9f, 0x6c, 0xef, 0x28, 0xee, 0x36, 0xa9, 0x4b, 0xbe, - 0x29, 0x3f, 0x84, 0xa3, 0xf8, 0x80, 0xc0, 0xc3, 0xbf, 0x69, 0x53, 0xab, - 0x26, 0x90, 0xad, 0xe9, 0xac, 0xac, 0x31, 0x47, 0x02, 0x75, 0x54, 0x59, - 0xe3, 0xe5, 0xe0, 0x4b, 0x6f, 0x10, 0x5a, 0x95, 0xf6, 0x3a, 0x76, 0x9a, - 0x55, 0xc0, 0x7a, 0x24, 0xd5, 0x12, 0x73, 0xe3, 0x83, 0xa6, 0x21, 0x99, - 0x9f, 0x8d, 0x7d, 0xf8, 0x0c, 0x10, 0x6d, 0x8d, 0xf9, 0xb7, 0xb7, 0x76, - 0x1e, 0x47, 0xb5, 0xdf, 0xdd, 0x10, 0xed, 0xfb, 0x25, 0x7c, 0x9f, 0xc6, - 0x80, 0xeb, 0xec, 0xf5, 0xc8, 0xf5, 0x7e, 0x15, 0x3e, 0x61, 0xa7, 0xe4, - 0x9e, 0xa0, 0x9a, 0x0b, 0xea, 0xc6, 0xc3, 0x5b, 0xab, 0xf7, 0x56, 0x1b, - 0x11, 0xde, 0xd4, 0x75, 0x68, 0x86, 0x1b, 0x48, 0xf1, 0x69, 0x4e, 0xa3, - 0x73, 0x92, 0xe4, 0xa6, 0xe9, 0x39, 0xa6, 0x00, 0xf1, 0x61, 0x55, 0xda, - 0xa3, 0x22, 0xa0, 0xa1, 0x83, 0x69, 0x97, 0x17, 0x57, 0xd4, 0xb7, 0x28, - 0xe2, 0x4e, 0x5b, 0x73, 0xf2, 0xd0, 0x9b, 0xdc, 0x3a, 0x5e, 0x9a, 0xe9, - 0x09, 0xac, 0x66, 0x42, 0x77, 0x13, 0x23, 0x35, 0x17, 0xfc, 0xf3, 0x16, - 0x77, 0xdd, 0x0d, 0x02, 0xa0, 0xb9, 0x8b, 0xf7, 0x9b, 0x2a, 0xd7, 0x79, - 0x7a, 0x2b, 0x10, 0x90, 0xb3, 0x36, 0x21, 0x9f, 0xed, 0x2f, 0x77, 0x06, - 0xdb, 0x4f, 0x9f, 0x63, 0x5f, 0xab, 0xcd, 0x9b, 0x48, 0x47, 0xb6, 0xc3, - 0xa1, 0x9b, 0xdf, 0x88, 0xb9, 0xc1, 0xc7, 0xc5, 0x94, 0xa2, 0xbc, 0x87, - 0x7f, 0xf5, 0xd8, 0x03, 0x95, 0x2b, 0x10, 0x01, 0xbd, 0x15, 0xbb, 0x2b, - 0x61, 0x4f, 0x14, 0x9d, 0xac, 0x81, 0xfd, 0x9c, 0x15, 0x63, 0x36, 0xa2, - 0xb1, 0x11, 0xb6, 0x24, 0x44, 0x07, 0xd8, 0x03, 0x67, 0xcd, 0x2b, 0xb6, - 0x3f, 0x5a, 0xe4, 0xf0, 0x38, 0x19, 0x25, 0x08, 0xb4, 0xdb, 0x31, 0xa4, - 0x81, 0x88, 0xf7, 0x6a, 0x81, 0x18, 0xa2, 0x1c, 0xab, 0x70, 0xf7, 0x70, - 0x20, 0x54, 0x19, 0x50, 0xd9, 0x87, 0x2d, 0xfa, 0x5a, 0xf9, 0x34, 0xba, - 0xdf, 0xa8, 0xe1, 0xb5, 0xf4, 0xfa, 0x49, 0xa5, 0x57, 0x31, 0x92, 0x73, - 0xe9, 0xe3, 0x0c, 0x52, 0x01, 0x92, 0x71, 0x13, 0xcc, 0x12, 0x54, 0x34, - 0xd0, 0x5c, 0x22, 0x42, 0x47, 0x39, 0x05, 0xeb, 0xac, 0xd4, 0xe3, 0x86, - 0xa0, 0xec, 0x14, 0x4c, 0xe2, 0x2d, 0x09, 0xd6, 0xf9, 0x51, 0x95, 0x88, - 0x72, 0xbf, 0x73, 0xe1, 0xb2, 0xfc, 0x69, 0x12, 0x10, 0xa7, 0x45, 0xad, - 0xcf, 0xf0, 0x5b, 0x36, 0x98, 0xe1, 0x85, 0x5d, 0x8a, 0xc6, 0x3b, 0xc8, - 0x90, 0xc9, 0x46, 0x63, 0x83, 0x41, 0x71, 0x08, 0xd1, 0xd6, 0x48, 0x3f, - 0xe3, 0xc0, 0x7b, 0x6b, 0x4b, 0x3c, 0xc3, 0xb1, 0x0e, 0x02, 0x2a, 0x9e, - 0xa2, 0x66, 0xa9, 0x98, 0x7a, 0xee, 0xfb, 0xda, 0xdc, 0x61, 0x9c, 0x54, - 0x17, 0xd1, 0x7a, 0xbc, 0x61, 0xba, 0x2c, 0x66, 0xb5, 0xb1, 0xc9, 0xfd, - 0x2a, 0x2a, 0x78, 0xbe, 0x18, 0x2d, 0x66, 0xdc, 0xa4, 0x94, 0x5b, 0xea, - 0x70, 0x1e, 0xad, 0x94, 0x52, 0xa4, 0x42, 0x13, 0x38, 0xd9, 0x26, 0x67, - 0xee, 0x2b, 0x77, 0xcf, 0x02, 0x8d, 0x48, 0xbc, 0xc1, 0xf2, 0xf4, 0xca, - 0x1d, 0xcc, 0x7a, 0x73, 0xcc, 0x80, 0xc1, 0xac, 0x6f, 0xa7, 0x0f, 0x25, - 0x07, 0x8e, 0xd3, 0x8f, 0x19, 0xf7, 0x89, 0xe0, 0x76, 0x4f, 0x74, 0xef, - 0x14, 0x60, 0x30, 0x01, 0xb5, 0x92, 0x82, 0xe8, 0xac, 0xeb, 0x86, 0x80, - 0x70, 0x27, 0xc9, 0x48, 0x1a, 0xc1, 0x96, 0x05, 0x06, 0x25, 0xe9, 0xb8, - 0xc7, 0x45, 0xab, 0xb5, 0x11, 0x6c, 0x20, 0xea, 0xca, 0x89, 0x5c, 0x00, - 0xea, 0xc5, 0x12, 0x32, 0x9f, 0x82, 0x52, 0xac, 0x75, 0x5d, 0xef, 0x05, - 0x01, 0x77, 0xb5, 0x66, 0xbe, 0xbf, 0x45, 0xbd, 0x1f, 0x60, 0xb6, 0xad, - 0x6d, 0xa0, 0xc0, 0x79, 0xb4, 0xb3, 0xb5, 0xb3, 0x1d, 0x6d, 0xef, 0xec, - 0x6e, 0x3f, 0xdf, 0xdd, 0xda, 0x5a, 0xa1, 0xbd, 0x2f, 0x8c, 0x12, 0xdf, - 0xcb, 0x30, 0xc4, 0x86, 0x56, 0x33, 0x9e, 0x80, 0xe6, 0xcf, 0x63, 0x6a, - 0xbe, 0xa6, 0x01, 0xcb, 0xb7, 0xdc, 0x22, 0x79, 0x56, 0xd4, 0xa9, 0x87, - 0x61, 0x5d, 0x4f, 0x2b, 0xac, 0x17, 0x89, 0xf6, 0xfe, 0x7e, 0xf8, 0xf6, - 0xf4, 0xe8, 0xf8, 0x8d, 0xaf, 0x3b, 0xbd, 0x3a, 0xdd, 0x88, 0xe4, 0x97, - 0x48, 0xb6, 0xa0, 0xf3, 0x55, 0xa6, 0xa9, 0x82, 0x0d, 0xb5, 0x63, 0xfe, - 0x82, 0x86, 0x84, 0xb9, 0x6b, 0x7a, 0x96, 0xe3, 0x23, 0xed, 0xab, 0x32, - 0x1a, 0xa5, 0xf3, 0x9a, 0x4d, 0x7b, 0x79, 0xdc, 0x54, 0x00, 0x49, 0xb8, - 0x9e, 0x82, 0x10, 0x5b, 0x7d, 0xfd, 0xdb, 0xb6, 0xf9, 0xdb, 0x8e, 0xcf, - 0xcd, 0xf8, 0x17, 0x8f, 0x42, 0xb4, 0xd4, 0x8e, 0xba, 0x57, 0xdc, 0x44, - 0x43, 0xe9, 0x93, 0xf2, 0xca, 0x5c, 0x53, 0xcd, 0x31, 0x96, 0x3b, 0x92, - 0x6e, 0x49, 0x41, 0x10, 0xdf, 0x47, 0x15, 0xfd, 0xed, 0xdd, 0xd1, 0x41, - 0xcc, 0xb9, 0x22, 0x24, 0x40, 0x36, 0x81, 0x37, 0x99, 0xea, 0x10, 0x6f, - 0x41, 0x61, 0x6c, 0x04, 0xa7, 0x18, 0x75, 0x31, 0x67, 0x24, 0x31, 0xd4, - 0xad, 0xb9, 0xbd, 0xa0, 0xbb, 0xa3, 0xed, 0xe1, 0xb0, 0xaa, 0xa0, 0xf1, - 0x22, 0x3c, 0x7c, 0x49, 0x8e, 0xc9, 0xf6, 0x73, 0xdb, 0xa1, 0xe7, 0xb6, - 0xfd, 0xe7, 0x76, 0x42, 0xcf, 0xed, 0xf8, 0xcf, 0x3d, 0x0a, 0x3d, 0xf7, - 0xa8, 0xa3, 0xec, 0x4e, 0x89, 0xeb, 0xd6, 0xa5, 0x57, 0x77, 0x29, 0xbb, - 0xab, 0x3a, 0x15, 0x0a, 0x99, 0x1d, 0x3f, 0xee, 0xd6, 0x57, 0xce, 0x79, - 0xeb, 0x91, 0x0d, 0x89, 0xdd, 0xf6, 0x0a, 0xf2, 0x1d, 0x34, 0xef, 0x6d, - 0xf5, 0x9d, 0x90, 0x5b, 0x3f, 0x8a, 0x9c, 0x01, 0xc5, 0x1f, 0x60, 0x7e, - 0xf2, 0x68, 0xe0, 0x65, 0xe0, 0xe8, 0x4a, 0x4c, 0x58, 0xc2, 0xc2, 0x91, - 0xdb, 0x60, 0x62, 0x57, 0x2c, 0x31, 0x0e, 0x95, 0x14, 0x53, 0x6c, 0x71, - 0x99, 0x43, 0x6e, 0x5a, 0x6d, 0x3f, 0xd2, 0xf4, 0x86, 0x68, 0x4f, 0xfe, - 0xb2, 0xc8, 0x6a, 0x6e, 0x79, 0x1f, 0xe6, 0x0d, 0x4e, 0xc7, 0x77, 0xf6, - 0x07, 0xf3, 0x6b, 0x11, 0xbd, 0x57, 0xd9, 0x7e, 0xef, 0x7e, 0x1e, 0x8c, - 0x0f, 0xb8, 0x6d, 0xf0, 0x99, 0x2b, 0x22, 0x7f, 0xdc, 0x16, 0x62, 0x26, - 0x38, 0x3b, 0x2a, 0x37, 0xba, 0x34, 0x19, 0x3b, 0x22, 0xab, 0x4d, 0x2b, - 0x6c, 0xfd, 0x4a, 0xa5, 0x6c, 0x1c, 0xe9, 0x2b, 0xd4, 0x62, 0x27, 0x19, - 0x23, 0xd9, 0xc2, 0xdc, 0x32, 0x78, 0x63, 0xa9, 0xc6, 0xd9, 0x53, 0xe4, - 0x21, 0x05, 0xfc, 0xdd, 0xdb, 0x57, 0x9e, 0xbd, 0xaf, 0x54, 0x81, 0x27, - 0x30, 0xa8, 0xd2, 0x4d, 0x90, 0xdc, 0xd5, 0x26, 0x25, 0x4d, 0xc9, 0xa4, - 0x17, 0xf5, 0x6c, 0x7a, 0x43, 0xe8, 0x06, 0xde, 0xc5, 0x14, 0xaa, 0xe9, - 0x35, 0x2b, 0xf6, 0xd4, 0xd3, 0xc9, 0x76, 0x47, 0xa1, 0x9b, 0xc3, 0xe7, - 0xaa, 0xd0, 0x2e, 0xad, 0xe1, 0xd0, 0xeb, 0x89, 0xa9, 0xe9, 0x78, 0xd7, - 0xe1, 0xb6, 0x83, 0x4e, 0x44, 0xea, 0x29, 0x29, 0x9c, 0x9a, 0x3e, 0x69, - 0xda, 0xdf, 0xb1, 0x09, 0xc9, 0x55, 0x79, 0x9c, 0xbd, 0xe5, 0x55, 0x07, - 0xe5, 0x94, 0x1c, 0x66, 0xd2, 0xa4, 0x4c, 0xfb, 0xee, 0x12, 0x0d, 0x1e, - 0xee, 0x22, 0x15, 0xda, 0xbd, 0x8a, 0xf3, 0xdf, 0xc3, 0x6d, 0xe1, 0x53, - 0x9b, 0x34, 0xb3, 0xa4, 0x4c, 0xad, 0x4d, 0x7f, 0xbf, 0x3f, 0xfe, 0x7d, - 0x73, 0x7e, 0xf8, 0xcc, 0xf7, 0xfb, 0x87, 0xa7, 0xef, 0xb7, 0x77, 0x9e, - 0xbf, 0xff, 0xee, 0xe0, 0xf5, 0xfb, 0xd3, 0xef, 0xf7, 0x77, 0x9e, 0xac, - 0x8a, 0xb4, 0x22, 0x83, 0x91, 0xeb, 0x62, 0x51, 0x5e, 0x52, 0x6d, 0xbc, - 0x45, 0x1e, 0x6f, 0x4c, 0x68, 0xaf, 0x66, 0x6b, 0x38, 0x3f, 0xe8, 0x04, - 0xef, 0x61, 0x41, 0x0b, 0x01, 0xed, 0xee, 0xe1, 0x9f, 0x5f, 0x7b, 0x2b, - 0xe0, 0xb4, 0xee, 0x36, 0x26, 0x0e, 0x7a, 0xa0, 0x10, 0x68, 0x9a, 0x49, - 0x8e, 0x37, 0x92, 0x48, 0xce, 0xcd, 0x9a, 0x2b, 0xc2, 0xf9, 0x7b, 0x44, - 0x8b, 0xbd, 0xd3, 0xb7, 0x27, 0xbd, 0xbe, 0x64, 0xde, 0xc3, 0x0c, 0x31, - 0xfc, 0x3b, 0x62, 0x7f, 0x7c, 0xf4, 0x64, 0xeb, 0xc9, 0xe3, 0x8d, 0x81, - 0xc3, 0xfc, 0xa9, 0x6d, 0x42, 0xa0, 0x54, 0x82, 0x7e, 0x69, 0x71, 0x7b, - 0x4a, 0x57, 0xa7, 0xc5, 0x7c, 0x94, 0xe6, 0x07, 0x72, 0x51, 0x5c, 0x9f, - 0xfb, 0xbd, 0x2c, 0xb1, 0x8d, 0x45, 0xc6, 0x12, 0xcb, 0xa1, 0x65, 0x36, - 0x63, 0x5f, 0x98, 0xbd, 0x5d, 0x49, 0xcf, 0xb4, 0x89, 0xcb, 0x46, 0x83, - 0x48, 0x7b, 0xca, 0x57, 0xdd, 0x0b, 0xc8, 0x71, 0x31, 0xf3, 0xd1, 0xb2, - 0x63, 0xb0, 0x19, 0xcc, 0xf7, 0x94, 0x4f, 0x77, 0x5c, 0x50, 0xd8, 0xb0, - 0xef, 0xf2, 0x05, 0x1e, 0x0a, 0x8d, 0xa3, 0xc3, 0xc8, 0x28, 0x9d, 0x17, - 0xc2, 0xdd, 0x86, 0x55, 0x60, 0x15, 0xef, 0xeb, 0x42, 0x98, 0xf9, 0x71, - 0xb1, 0xab, 0xd1, 0xbe, 0x50, 0x40, 0x8b, 0x70, 0xcd, 0xb9, 0xef, 0xb1, - 0x95, 0x1a, 0x22, 0xdd, 0xc8, 0x3c, 0x44, 0x84, 0x66, 0xba, 0x22, 0x6b, - 0x72, 0x7e, 0x8b, 0xac, 0x67, 0x29, 0x28, 0x75, 0xe3, 0x6e, 0x0c, 0x6b, - 0x75, 0x52, 0x38, 0x9f, 0x33, 0xd0, 0x62, 0x12, 0x11, 0xab, 0x96, 0x5e, - 0x69, 0xf1, 0x18, 0x34, 0x4f, 0x97, 0x67, 0x95, 0x04, 0xe0, 0x09, 0x54, - 0x66, 0x75, 0x9d, 0xa5, 0xf9, 0xaa, 0xcf, 0x74, 0x96, 0x66, 0xfe, 0xf9, - 0xd5, 0xd8, 0xf9, 0x62, 0xee, 0x6e, 0x72, 0x0f, 0x47, 0x4b, 0x03, 0x05, - 0x51, 0xe4, 0xe8, 0x50, 0x15, 0xb2, 0xeb, 0xf7, 0x38, 0x54, 0x49, 0xc4, - 0x6a, 0x7e, 0xb6, 0xa8, 0x67, 0x1e, 0x03, 0xb9, 0xdf, 0xa3, 0x76, 0x79, - 0xdf, 0x43, 0x2a, 0xbe, 0xbf, 0xd7, 0x41, 0xeb, 0x60, 0xad, 0xc3, 0x46, - 0xfd, 0x36, 0xa8, 0x10, 0xbe, 0x44, 0x7c, 0xb6, 0x26, 0xf2, 0xa9, 0x63, - 0xcb, 0x90, 0xed, 0xa2, 0x5a, 0x0a, 0x6b, 0x3a, 0xcb, 0x20, 0x4f, 0x29, - 0x9b, 0x9e, 0x6d, 0x57, 0x1a, 0x45, 0x6b, 0x46, 0x03, 0x00, 0x27, 0x98, - 0x9b, 0xa3, 0xb3, 0x54, 0x14, 0x34, 0x56, 0x4c, 0xbc, 0x56, 0x89, 0x8e, - 0x3a, 0x58, 0xa4, 0x1f, 0x10, 0xc6, 0x82, 0x5b, 0xc3, 0xbd, 0x47, 0x31, - 0xf1, 0x5e, 0x0e, 0x79, 0x8b, 0x50, 0xf0, 0x12, 0x0c, 0x0f, 0x5c, 0x24, - 0x97, 0x59, 0x41, 0xfd, 0x9b, 0xd1, 0x10, 0xc4, 0x9c, 0xc7, 0x0a, 0x7b, - 0x2e, 0x78, 0xed, 0x89, 0xda, 0xb4, 0x04, 0xe3, 0x80, 0x40, 0x29, 0x13, - 0xec, 0x21, 0xcb, 0xd9, 0x4b, 0xaa, 0xdc, 0x67, 0xcd, 0xbe, 0xc4, 0x48, - 0x0a, 0x89, 0x31, 0xaf, 0x65, 0xdb, 0xbc, 0x02, 0xaa, 0x9b, 0xf2, 0xae, - 0xe5, 0x74, 0x1e, 0x20, 0x7d, 0x52, 0x47, 0x5e, 0x99, 0x88, 0x9a, 0x56, - 0x62, 0x57, 0x1e, 0xe2, 0x2d, 0x09, 0x68, 0xfb, 0x7f, 0x16, 0x01, 0x6d, - 0xff, 0x0f, 0x25, 0xa0, 0xed, 0x07, 0x23, 0xa0, 0xed, 0xbb, 0x11, 0x90, - 0xcd, 0x53, 0xc5, 0x4f, 0xf7, 0xc9, 0x69, 0xe7, 0x6e, 0xe4, 0xb4, 0xf3, - 0x3f, 0x8b, 0x9c, 0x76, 0xfe, 0x87, 0x92, 0xd3, 0xce, 0x83, 0x91, 0xd3, - 0xce, 0xc3, 0x90, 0xd3, 0xa3, 0xbb, 0x91, 0xd3, 0xa3, 0x07, 0x20, 0xa7, - 0x89, 0x57, 0xe6, 0x1c, 0xdd, 0xec, 0xd2, 0x34, 0x69, 0x75, 0xf7, 0xef, - 0xcf, 0x7c, 0x63, 0x0a, 0x9e, 0xd4, 0x19, 0xa0, 0x40, 0x77, 0xc6, 0x8c, - 0x1c, 0x5e, 0x53, 0x60, 0x0a, 0x7f, 0x2f, 0xce, 0x84, 0x6a, 0x70, 0x23, - 0x8d, 0x3c, 0x7a, 0x30, 0x1a, 0x79, 0x74, 0x27, 0x1a, 0xd9, 0x69, 0xd1, - 0xc8, 0x92, 0xfe, 0xe4, 0xdb, 0x7d, 0x7d, 0x2b, 0x48, 0x36, 0x3e, 0x1c, - 0x7c, 0x82, 0x75, 0x73, 0xa8, 0xff, 0x35, 0xc9, 0xe7, 0xa3, 0x50, 0x8d, - 0xfa, 0xc2, 0x82, 0xe6, 0x29, 0x9b, 0xa2, 0x49, 0xa4, 0xb4, 0x43, 0x63, - 0x98, 0xf4, 0x01, 0xe2, 0x0e, 0xdc, 0x80, 0xd6, 0xd7, 0xbc, 0xda, 0x3e, - 0xac, 0xec, 0x1c, 0x9b, 0xd7, 0x77, 0x9f, 0x8c, 0xfd, 0xae, 0x87, 0x3a, - 0x9b, 0x7b, 0x29, 0xc7, 0x70, 0x96, 0xf9, 0xdf, 0xa4, 0x1c, 0xc3, 0xc8, - 0xba, 0x46, 0x75, 0x45, 0xe3, 0x5f, 0x4d, 0x95, 0xa8, 0x8c, 0x53, 0x60, - 0xe2, 0x63, 0xbf, 0x27, 0x2e, 0x5d, 0x48, 0x37, 0x3a, 0x8d, 0xe1, 0x1d, - 0x0c, 0x59, 0x62, 0x98, 0x40, 0xee, 0x68, 0x7c, 0x28, 0xef, 0xda, 0x14, - 0x60, 0xbe, 0xcd, 0xc0, 0x22, 0xbc, 0x4c, 0x78, 0xce, 0xd0, 0xd7, 0x16, - 0xb5, 0xda, 0xa6, 0x4e, 0xb2, 0xdc, 0xfb, 0x02, 0x69, 0xa2, 0x93, 0x08, - 0xd6, 0x16, 0xe6, 0xaf, 0x70, 0x2b, 0x6f, 0xaf, 0xd9, 0xf6, 0x28, 0xe5, - 0x96, 0xcb, 0xd9, 0x0d, 0xc8, 0x16, 0xce, 0x17, 0x3e, 0x40, 0xfe, 0x99, - 0x1d, 0x7c, 0x65, 0x2a, 0x74, 0xd6, 0xb5, 0xa2, 0x7b, 0xcf, 0x1c, 0x44, - 0xf3, 0x24, 0x93, 0x51, 0x1a, 0x27, 0xd5, 0x28, 0xcb, 0xc2, 0x71, 0x6e, - 0xad, 0x94, 0x48, 0xa8, 0x80, 0x35, 0xa2, 0xe7, 0x23, 0xcc, 0xb4, 0xc5, - 0xb3, 0x41, 0xae, 0x89, 0xd2, 0x9c, 0x9a, 0x27, 0xe3, 0x51, 0x00, 0x73, - 0x3f, 0x2f, 0x34, 0x87, 0x08, 0x7b, 0xbe, 0x7a, 0xa5, 0xcc, 0xc0, 0xc2, - 0xe9, 0xf7, 0x69, 0x35, 0x2a, 0x33, 0xa0, 0xd3, 0x4b, 0x74, 0xb8, 0x63, - 0x41, 0xa8, 0x40, 0xf0, 0x48, 0x5a, 0x1b, 0x87, 0xa1, 0x25, 0x6f, 0x9c, - 0x62, 0x8b, 0x0c, 0xb9, 0xdd, 0x1a, 0xae, 0x17, 0xf7, 0x30, 0xe2, 0x8f, - 0xbf, 0x27, 0x73, 0x1d, 0xde, 0xa6, 0x0c, 0x55, 0x9b, 0xb5, 0x1d, 0x69, - 0x67, 0xe0, 0x65, 0xd5, 0x37, 0x08, 0x29, 0x98, 0xcd, 0xb2, 0x69, 0x52, - 0xca, 0x75, 0xe0, 0xec, 0x6c, 0x74, 0xf0, 0x01, 0xdf, 0x43, 0x57, 0x28, - 0x27, 0x55, 0x62, 0xae, 0xfa, 0x47, 0x6e, 0x87, 0x40, 0x5f, 0x9b, 0xfb, - 0xd9, 0x90, 0x17, 0x98, 0xad, 0xcb, 0x74, 0xb8, 0x7f, 0x7a, 0x70, 0x74, - 0xd4, 0x68, 0x9e, 0x80, 0xfb, 0x46, 0x69, 0xe4, 0xdc, 0x72, 0xb1, 0x9a, - 0xc1, 0x06, 0xa6, 0x5a, 0x0a, 0x13, 0x4a, 0xa9, 0x30, 0x75, 0xad, 0xc0, - 0x7d, 0x33, 0x6e, 0x01, 0x5e, 0x62, 0x6c, 0x80, 0xbc, 0x12, 0x39, 0x2c, - 0x33, 0xc3, 0x16, 0xe5, 0x17, 0x8b, 0x59, 0x92, 0x2f, 0x93, 0x7c, 0x26, - 0xf5, 0x9c, 0x27, 0xc2, 0xf0, 0x04, 0x92, 0x53, 0x02, 0xe2, 0xf9, 0x32, - 0xab, 0x33, 0x71, 0xf5, 0xe6, 0x69, 0x4d, 0x5e, 0x03, 0x3c, 0xe4, 0xc9, - 0xc4, 0xab, 0x2e, 0xe6, 0xb5, 0x10, 0xc0, 0x1c, 0x01, 0xb7, 0x62, 0x96, - 0x32, 0x9d, 0x9f, 0x9e, 0xb5, 0x9e, 0x2d, 0xd9, 0xee, 0x78, 0x1c, 0x70, - 0x3f, 0x47, 0x65, 0x3a, 0xe6, 0x56, 0x7f, 0x95, 0x0f, 0x83, 0x59, 0xa5, - 0xf0, 0xeb, 0x9a, 0xef, 0x2b, 0x0e, 0x8b, 0x05, 0x3c, 0xd1, 0xb7, 0x40, - 0xb1, 0x57, 0x1a, 0x10, 0xa6, 0x54, 0xff, 0x11, 0xfc, 0x0b, 0x88, 0x2f, - 0x12, 0x69, 0x83, 0x9d, 0x6b, 0x03, 0xcd, 0xb8, 0x89, 0x30, 0xa7, 0xc5, - 0xb9, 0x60, 0x84, 0x51, 0xcb, 0xdc, 0xea, 0xb3, 0x17, 0x5b, 0xb5, 0xae, - 0xd8, 0xe7, 0x88, 0x14, 0x38, 0xd3, 0xc3, 0xf6, 0xdc, 0x47, 0xc1, 0x15, - 0x8f, 0x19, 0x10, 0x36, 0x22, 0x5c, 0x80, 0x2f, 0x06, 0xee, 0xbd, 0x23, - 0x6d, 0xe8, 0xac, 0xfc, 0xe2, 0x15, 0x8f, 0x2f, 0x71, 0x0a, 0xe5, 0x52, - 0xf7, 0x2b, 0x3f, 0xb2, 0x28, 0xa5, 0xcd, 0x07, 0xc3, 0xec, 0xd0, 0xf8, - 0x5a, 0xb5, 0xb1, 0xcf, 0x59, 0xa0, 0x71, 0x95, 0xc2, 0x55, 0xc4, 0xfe, - 0x23, 0x1a, 0xa3, 0xf3, 0x70, 0x09, 0x66, 0xdc, 0x21, 0x9d, 0xea, 0xbd, - 0x4a, 0x8d, 0xb2, 0xd9, 0xa2, 0x2b, 0x82, 0xf6, 0x42, 0x82, 0xa4, 0x42, - 0x97, 0x28, 0xb9, 0x84, 0xdf, 0x72, 0x7e, 0x00, 0xe6, 0x09, 0xb5, 0x8f, - 0xe5, 0x4d, 0x42, 0xa2, 0x02, 0x29, 0x99, 0x90, 0x6c, 0xa9, 0x34, 0x5b, - 0xae, 0xcc, 0x40, 0x43, 0x91, 0xd7, 0xd1, 0x1a, 0xec, 0xd8, 0x1a, 0x6e, - 0x0b, 0xf7, 0x27, 0x20, 0x96, 0x4a, 0xeb, 0xef, 0x5c, 0x5d, 0xc8, 0x82, - 0x6b, 0x74, 0xd6, 0xa6, 0xaf, 0x37, 0xcf, 0xeb, 0x4d, 0x54, 0x70, 0xdf, - 0x5e, 0x36, 0xae, 0x7a, 0x12, 0xd3, 0xed, 0x21, 0xe9, 0xf5, 0xfc, 0x0a, - 0x9b, 0xe4, 0xb2, 0xc8, 0xc6, 0x22, 0xdd, 0xf4, 0x2c, 0xe0, 0x35, 0xa7, - 0x74, 0x45, 0x30, 0x32, 0x61, 0x43, 0xa9, 0xf9, 0x63, 0x20, 0x71, 0xc9, - 0x4d, 0x63, 0xe7, 0x6b, 0xf6, 0x9e, 0xde, 0x74, 0x33, 0xa3, 0xe8, 0xb8, - 0x66, 0x85, 0xd9, 0xeb, 0xcf, 0x7c, 0x5f, 0x5b, 0x64, 0xf7, 0x60, 0xb9, - 0xc5, 0xcd, 0x69, 0x60, 0x63, 0xfb, 0x78, 0x21, 0x37, 0x57, 0x8c, 0xdd, - 0xdf, 0xe1, 0x62, 0xde, 0xf1, 0x5e, 0x5a, 0x53, 0xe2, 0x39, 0xe8, 0x81, - 0x5b, 0xfe, 0x3d, 0x85, 0x4f, 0xf0, 0x94, 0x29, 0xb2, 0xeb, 0xab, 0x66, - 0xca, 0x15, 0x0e, 0xed, 0xc6, 0xd5, 0x49, 0x34, 0xc0, 0x79, 0x71, 0xe9, - 0x24, 0x1d, 0x58, 0x14, 0xa4, 0x7e, 0x38, 0x4d, 0xfd, 0x50, 0xc2, 0xba, - 0xb1, 0xb9, 0xcc, 0x92, 0x74, 0xfe, 0xdf, 0xa8, 0x15, 0xb1, 0x73, 0x5f, - 0xee, 0x1b, 0x19, 0xc9, 0x8c, 0x3c, 0xb8, 0x13, 0xc1, 0xe1, 0x92, 0x9a, - 0x02, 0x41, 0x38, 0xdb, 0x8a, 0xf6, 0xe6, 0x2d, 0xc8, 0x64, 0x27, 0x44, - 0x26, 0x01, 0x9c, 0x5c, 0x43, 0x27, 0x92, 0x85, 0x57, 0xd5, 0xb0, 0x02, - 0x62, 0x87, 0x48, 0x0b, 0xc2, 0xc8, 0xed, 0xe1, 0xf3, 0xe9, 0x8b, 0xad, - 0x14, 0x80, 0xb6, 0xf9, 0xef, 0x46, 0x0d, 0x0d, 0x6e, 0xf9, 0x30, 0xd4, - 0x10, 0x4c, 0xaa, 0xbc, 0x15, 0x39, 0xd0, 0xa2, 0x1e, 0x90, 0x1e, 0xda, - 0xe7, 0xff, 0xbb, 0x1a, 0x18, 0x0d, 0x0b, 0xe3, 0x66, 0x13, 0x83, 0x2d, - 0x8c, 0xfb, 0x30, 0x30, 0xa4, 0x63, 0x43, 0xef, 0x8f, 0x28, 0x64, 0xbd, - 0xb2, 0xeb, 0xdb, 0x8d, 0x93, 0x96, 0x65, 0x58, 0x9b, 0xbf, 0x8b, 0x3a, - 0xbf, 0x4c, 0x9b, 0x5f, 0x4d, 0x99, 0x5f, 0xae, 0xcd, 0xab, 0x3a, 0x2f, - 0xf6, 0xb7, 0x51, 0xe8, 0x9b, 0x1a, 0x3d, 0xdc, 0x2e, 0xd5, 0xe7, 0x49, - 0x9d, 0xff, 0x1f, 0xa5, 0xcd, 0x2b, 0x21, 0xdf, 0xaa, 0x97, 0xd7, 0x03, - 0x40, 0x27, 0x98, 0x6d, 0x59, 0x45, 0x8b, 0xd7, 0x58, 0x72, 0xf3, 0xaa, - 0xf7, 0x3d, 0x7d, 0xa7, 0xdf, 0x14, 0xe8, 0x1d, 0xd9, 0x30, 0x96, 0xe7, - 0x2c, 0xd1, 0x32, 0x5c, 0xad, 0xc2, 0x65, 0x09, 0x61, 0x2c, 0x0f, 0xbb, - 0x28, 0x97, 0x65, 0x60, 0x93, 0x90, 0x58, 0xda, 0x74, 0xef, 0x61, 0x7b, - 0x8f, 0xaf, 0xc3, 0xae, 0xa6, 0x03, 0xd6, 0x27, 0x22, 0xed, 0xef, 0x40, - 0x6e, 0xe5, 0x77, 0x81, 0x0e, 0x23, 0x8a, 0xc8, 0x01, 0x27, 0x4c, 0xee, - 0xa6, 0x00, 0xa8, 0x87, 0x5c, 0x99, 0xf0, 0xd1, 0xbb, 0x0b, 0xfa, 0x1c, - 0x59, 0x11, 0xee, 0xfc, 0xfc, 0x9f, 0x18, 0xb7, 0x65, 0x45, 0x66, 0x9d, - 0x0c, 0x2b, 0xdc, 0xf0, 0xda, 0x1d, 0xce, 0xd9, 0xf6, 0x33, 0x3c, 0xad, - 0xc5, 0x7c, 0x5a, 0x24, 0xe3, 0x98, 0x32, 0xba, 0x83, 0x3c, 0x9b, 0x4e, - 0xde, 0x02, 0xcc, 0x37, 0x53, 0xfd, 0xa9, 0x29, 0x8b, 0x54, 0xa5, 0x14, - 0x82, 0x37, 0x48, 0x9e, 0xdf, 0x77, 0x6f, 0x5f, 0x75, 0x85, 0x0b, 0x4a, - 0xc9, 0x9d, 0xe2, 0xd7, 0xc8, 0x65, 0x92, 0xb5, 0x4b, 0x08, 0xe0, 0x75, - 0xa9, 0x04, 0x48, 0xe6, 0x46, 0xb7, 0x6c, 0x23, 0xa0, 0xd9, 0xb9, 0x95, - 0xcd, 0xe2, 0x20, 0x98, 0x1e, 0x48, 0x51, 0x2d, 0xba, 0x9c, 0x08, 0xfe, - 0x19, 0xb9, 0x05, 0xd1, 0x11, 0x16, 0x3b, 0x25, 0x01, 0xdc, 0x44, 0xaa, - 0xeb, 0xc5, 0x84, 0xcc, 0x7f, 0x14, 0x0b, 0xce, 0xe0, 0x64, 0xf8, 0x50, - 0x74, 0xbc, 0x4c, 0x91, 0x3b, 0x56, 0x53, 0x2a, 0xbf, 0xd8, 0xdc, 0xd0, - 0x8a, 0x5e, 0x3a, 0x79, 0x06, 0x9b, 0x29, 0xca, 0x6b, 0xdf, 0xb2, 0xa2, - 0x52, 0x2d, 0x42, 0x3e, 0x27, 0xf7, 0xba, 0xa4, 0xc9, 0x36, 0x3f, 0x9f, - 0x56, 0x0e, 0x1c, 0x4a, 0x1e, 0xc9, 0xf2, 0x0f, 0xe2, 0x1e, 0x6e, 0x0d, - 0x77, 0x5d, 0x2c, 0xca, 0xd6, 0x84, 0x06, 0x91, 0xc6, 0xd9, 0xf6, 0xc6, - 0x6e, 0x2c, 0x2a, 0x5f, 0x59, 0xa0, 0x4a, 0x2e, 0x10, 0x24, 0xb5, 0xa6, - 0x40, 0xb6, 0x77, 0x51, 0x72, 0x79, 0x71, 0x17, 0xc5, 0x91, 0x65, 0xcf, - 0x22, 0x3b, 0xf7, 0x0a, 0x6d, 0x8a, 0x92, 0x12, 0x6c, 0xa5, 0xbc, 0x44, - 0xf6, 0x25, 0x9d, 0x00, 0xd5, 0xc2, 0x7d, 0x21, 0xa9, 0x9e, 0x5f, 0xbb, - 0x3b, 0x57, 0x52, 0xd4, 0x45, 0x7e, 0xf0, 0xf3, 0x46, 0x08, 0xa1, 0x41, - 0x88, 0xc1, 0x59, 0x92, 0xb8, 0xdf, 0x0c, 0x2d, 0xb4, 0xe6, 0x2b, 0x49, - 0xbc, 0xe1, 0x84, 0x61, 0x8f, 0x32, 0xfd, 0x7e, 0x86, 0xad, 0x86, 0x08, - 0xa4, 0x61, 0x04, 0x52, 0x08, 0x2e, 0x45, 0x20, 0x9e, 0x65, 0xda, 0x2f, - 0xd9, 0xb9, 0x51, 0x27, 0x58, 0x4f, 0xb0, 0x7b, 0xcf, 0xf9, 0x34, 0xa5, - 0x02, 0x9c, 0x0d, 0x0d, 0x94, 0x80, 0xec, 0xce, 0x72, 0x97, 0xd3, 0x24, - 0xc1, 0x92, 0x2b, 0xf1, 0x67, 0xee, 0x4f, 0xa9, 0x8c, 0xa9, 0x4e, 0x35, - 0xbf, 0xd1, 0x99, 0x63, 0xd0, 0x43, 0x38, 0xab, 0x48, 0x67, 0x91, 0x76, - 0x14, 0xed, 0xcd, 0x41, 0xe8, 0x3e, 0x72, 0x49, 0x38, 0xdd, 0xec, 0x74, - 0x76, 0x9c, 0x1e, 0x97, 0xda, 0x5a, 0x1a, 0xd5, 0xd7, 0x50, 0x61, 0xa8, - 0xcf, 0x03, 0xa9, 0x51, 0xa9, 0x06, 0x76, 0xc9, 0xd3, 0x48, 0x44, 0xce, - 0x30, 0x81, 0xa2, 0x6d, 0x90, 0x5f, 0x3d, 0x92, 0xe1, 0x38, 0xe7, 0x30, - 0x25, 0x85, 0xcb, 0xcf, 0xe4, 0x46, 0x2e, 0x12, 0x2e, 0x02, 0x65, 0x2e, - 0x6d, 0x4b, 0x18, 0xa5, 0x5b, 0x86, 0x16, 0x35, 0x21, 0x67, 0x5f, 0x3f, - 0xdd, 0x60, 0x32, 0xc3, 0x8d, 0x39, 0x79, 0x77, 0xa6, 0x59, 0x56, 0xb7, - 0x13, 0xa4, 0xff, 0x68, 0x35, 0x55, 0xc2, 0xe8, 0xa3, 0xcf, 0xdc, 0x54, - 0x0f, 0x20, 0x96, 0x50, 0xe4, 0x26, 0x72, 0x39, 0x8b, 0xbd, 0x7d, 0x46, - 0x0e, 0x82, 0xc6, 0x07, 0x1c, 0xdb, 0x21, 0xbe, 0xe1, 0x0f, 0xf6, 0x67, - 0x1a, 0x65, 0x9e, 0x64, 0xa5, 0x39, 0x0d, 0x21, 0x4b, 0x1f, 0x99, 0x99, - 0x5e, 0xe3, 0x6a, 0xb4, 0x82, 0xbd, 0x4d, 0x03, 0x61, 0x6d, 0xc8, 0xa5, - 0x0d, 0x88, 0x4f, 0x0f, 0x35, 0x9a, 0x21, 0xec, 0x6e, 0xcf, 0x61, 0x5f, - 0x30, 0xb3, 0x27, 0x96, 0xdd, 0x75, 0x44, 0x49, 0x79, 0x4e, 0x41, 0xfa, - 0x3e, 0x23, 0xa8, 0x70, 0x3b, 0x66, 0xb2, 0x98, 0x34, 0x45, 0x5a, 0xe6, - 0x57, 0x83, 0x24, 0xa0, 0xa4, 0x2a, 0x38, 0x28, 0x53, 0x1f, 0x7e, 0x98, - 0x03, 0x1a, 0x2e, 0xcd, 0xa0, 0xf0, 0xa7, 0xba, 0x40, 0x46, 0x4a, 0x8a, - 0xba, 0xf2, 0xf9, 0xed, 0x15, 0x0e, 0x09, 0x01, 0x2e, 0x25, 0xe5, 0x45, - 0x99, 0xe6, 0xd1, 0x39, 0xc3, 0xa6, 0x32, 0xf1, 0xed, 0x72, 0x16, 0xec, - 0x9c, 0x29, 0x8a, 0x35, 0x4c, 0x6a, 0x70, 0x1f, 0xea, 0xa2, 0xc8, 0xda, - 0x1e, 0xe6, 0xf9, 0x3e, 0x79, 0xb4, 0xb3, 0x13, 0xb1, 0xe6, 0xcf, 0x2d, - 0x5b, 0xb8, 0xa0, 0x11, 0x3b, 0x73, 0x0a, 0xfe, 0x11, 0x4b, 0x7d, 0xc5, - 0x88, 0x46, 0x89, 0xed, 0xf9, 0x05, 0x15, 0xa3, 0x04, 0x4f, 0x0b, 0x14, - 0x8a, 0x69, 0x34, 0x2c, 0xc6, 0xd7, 0x76, 0x54, 0x20, 0x97, 0x12, 0xb9, - 0x2f, 0xf0, 0x22, 0x01, 0xe7, 0x8c, 0x24, 0x99, 0xb8, 0x0a, 0x9b, 0xa8, - 0xaa, 0x99, 0x92, 0xfc, 0x1c, 0x51, 0x6b, 0x60, 0x24, 0xc3, 0x9c, 0xfe, - 0x0a, 0x66, 0xde, 0x64, 0x51, 0xa2, 0x48, 0x20, 0x27, 0x13, 0x30, 0xca, - 0xab, 0x00, 0x48, 0x81, 0x4f, 0x7c, 0x9f, 0xee, 0xab, 0xea, 0x2a, 0x4e, - 0x39, 0xeb, 0xae, 0xec, 0xea, 0x78, 0xbe, 0x97, 0xcd, 0xce, 0x7f, 0xda, - 0x8e, 0xb7, 0xb7, 0xb6, 0xb6, 0x7e, 0x19, 0xcc, 0x91, 0x78, 0xb9, 0x3e, - 0x16, 0xfe, 0x1c, 0x34, 0xea, 0xe7, 0x3b, 0xf4, 0x1c, 0xe7, 0xb3, 0x7a, - 0xff, 0xc2, 0xff, 0x6c, 0xf7, 0xf1, 0xcf, 0x9d, 0x7f, 0xf7, 0x56, 0xd3, - 0x75, 0xbe, 0xc3, 0x4d, 0x3a, 0x47, 0xd5, 0xcf, 0x42, 0x26, 0xc1, 0x7f, - 0x7f, 0xe4, 0x1a, 0x33, 0x09, 0x50, 0xa2, 0x0a, 0x3a, 0x26, 0xf4, 0x18, - 0xa0, 0xa9, 0x86, 0xfe, 0x59, 0x4e, 0x63, 0x78, 0x06, 0xa8, 0x02, 0xab, - 0x59, 0x13, 0x4f, 0xfb, 0x04, 0x1e, 0xb9, 0xd1, 0x2a, 0xc5, 0x4e, 0xc6, - 0xe4, 0xc8, 0x98, 0x67, 0xe9, 0x28, 0x95, 0x02, 0xd7, 0x04, 0x3b, 0xdb, - 0xb1, 0x5a, 0x9c, 0x30, 0x67, 0xff, 0x73, 0x50, 0x25, 0x44, 0xb6, 0xd1, - 0x77, 0xd5, 0x15, 0x2b, 0x68, 0x23, 0x5e, 0x05, 0x2a, 0x45, 0x5c, 0x62, - 0x52, 0x5d, 0x83, 0xd1, 0xf6, 0x91, 0x98, 0x26, 0x7b, 0xd0, 0x40, 0x5a, - 0xfb, 0x57, 0x80, 0x6e, 0x3c, 0xd1, 0xc3, 0x84, 0xdc, 0xb6, 0xb8, 0x18, - 0xfc, 0x28, 0x21, 0x34, 0x36, 0xab, 0xf2, 0xd4, 0xe2, 0xcd, 0xec, 0x76, - 0x94, 0xa6, 0x29, 0x3b, 0x11, 0x6d, 0x48, 0x79, 0xf4, 0xda, 0x9f, 0xd7, - 0xa2, 0xf5, 0x39, 0x28, 0xfa, 0x1b, 0x7d, 0xd1, 0x36, 0x2a, 0x13, 0xe7, - 0x62, 0x7f, 0xbd, 0xaf, 0xf5, 0x1a, 0x9d, 0x39, 0xa9, 0x62, 0x82, 0x67, - 0xe7, 0xc5, 0x84, 0x40, 0x63, 0xe1, 0x1a, 0xf1, 0x77, 0x9b, 0x00, 0x1a, - 0xa3, 0xb6, 0x8b, 0x6e, 0x83, 0x2b, 0x9f, 0x14, 0x28, 0xa6, 0x94, 0x25, - 0xd1, 0x79, 0x52, 0x36, 0x6e, 0x52, 0x7e, 0xf0, 0x3a, 0x7e, 0x39, 0x4a, - 0x41, 0x08, 0x1c, 0xd7, 0x3d, 0xee, 0x87, 0xbb, 0x4a, 0xce, 0x24, 0x48, - 0x0a, 0x08, 0xf1, 0xb1, 0x42, 0xb9, 0x97, 0x7d, 0xf9, 0x2b, 0xde, 0x36, - 0x92, 0xa1, 0xf8, 0xbe, 0xf3, 0x3a, 0x58, 0x30, 0x9b, 0x93, 0xa2, 0xb8, - 0xd5, 0xfc, 0xdf, 0xac, 0x76, 0xb1, 0x9d, 0xb7, 0xe9, 0x4d, 0x52, 0xbf, - 0xee, 0xf2, 0x76, 0xef, 0xcf, 0xf4, 0xf5, 0x7f, 0xdc, 0xd9, 0x82, 0x95, - 0xae, 0x78, 0xa7, 0xdb, 0x64, 0x4c, 0xf7, 0x57, 0x2f, 0x7a, 0x23, 0xe7, - 0xe5, 0x79, 0xab, 0x5d, 0x07, 0xae, 0x62, 0x0f, 0xfe, 0xf0, 0xa2, 0x48, - 0xa6, 0xe9, 0x21, 0x92, 0x17, 0x89, 0x86, 0x7a, 0x74, 0x11, 0x00, 0x23, - 0x03, 0x65, 0x11, 0x63, 0x5b, 0x88, 0x9b, 0x74, 0xad, 0xb1, 0x48, 0x10, - 0xa8, 0xed, 0x6e, 0x70, 0x9a, 0x8e, 0x26, 0xc3, 0xc2, 0xa0, 0xeb, 0xd5, - 0x86, 0x92, 0x0e, 0x39, 0xfc, 0x9b, 0xcd, 0x25, 0x5a, 0x79, 0x53, 0xac, - 0x20, 0x0a, 0xa5, 0x0b, 0xc4, 0x3b, 0x0a, 0x62, 0x6e, 0x56, 0x40, 0x1c, - 0x64, 0x5d, 0x71, 0xc5, 0x7a, 0x72, 0xf8, 0x3d, 0x3f, 0x57, 0xa6, 0x37, - 0x91, 0xdf, 0xc0, 0xc7, 0x6c, 0x70, 0x3d, 0x0a, 0x9d, 0x03, 0x07, 0x9e, - 0x93, 0xe8, 0x7c, 0x81, 0xe9, 0x12, 0xc3, 0x84, 0x0b, 0xb9, 0x4c, 0xd7, - 0xd0, 0x81, 0xae, 0xa3, 0x7d, 0x81, 0x16, 0x08, 0x0d, 0x53, 0x90, 0x55, - 0xbb, 0x18, 0x8a, 0x61, 0x4d, 0x8b, 0xa1, 0xa2, 0x7c, 0x18, 0xf2, 0xc5, - 0xd1, 0x01, 0x08, 0xa5, 0x97, 0x67, 0x27, 0x7d, 0x02, 0x3e, 0xef, 0x13, - 0x20, 0x36, 0xf7, 0x3a, 0xf0, 0x57, 0x47, 0x92, 0xbd, 0x66, 0x5c, 0xfb, - 0xc4, 0x82, 0xd7, 0xa8, 0x61, 0xdc, 0x67, 0x7f, 0xcf, 0x55, 0x56, 0x49, - 0x83, 0x46, 0x35, 0x98, 0xa3, 0xe8, 0x3b, 0x5c, 0x77, 0x28, 0xcf, 0x48, - 0x01, 0x06, 0x30, 0x72, 0xc5, 0x29, 0x5d, 0x73, 0xe3, 0x85, 0x15, 0xd7, - 0x22, 0x6d, 0xaa, 0x71, 0x6c, 0x11, 0x9f, 0xa2, 0x5d, 0xed, 0xfb, 0xbe, - 0x2c, 0x69, 0xcd, 0x42, 0xe3, 0x68, 0x2d, 0x59, 0x62, 0x4a, 0xe1, 0xcd, - 0x7a, 0x5d, 0x50, 0xa3, 0xc7, 0x4f, 0x06, 0x5b, 0xc0, 0x0a, 0xab, 0x34, - 0x0d, 0xf4, 0xdb, 0x84, 0xe7, 0x63, 0x7d, 0xdb, 0x41, 0x6b, 0x0a, 0x36, - 0x4d, 0x55, 0x18, 0x73, 0x89, 0x42, 0x8a, 0x43, 0x83, 0x09, 0x42, 0xd0, - 0x44, 0xb9, 0x5d, 0x2a, 0x55, 0xab, 0x15, 0x48, 0xfb, 0xea, 0x08, 0x2c, - 0x03, 0x3e, 0x8d, 0xf8, 0xd8, 0xa9, 0xa9, 0x66, 0xd3, 0x72, 0x7e, 0x43, - 0x9f, 0xac, 0xe3, 0x5c, 0xa1, 0x1f, 0xfb, 0xc4, 0x7d, 0xb3, 0xd1, 0x02, - 0x53, 0x23, 0x90, 0x6e, 0xb1, 0xc1, 0x28, 0x95, 0x46, 0x57, 0x15, 0x46, - 0x37, 0x4d, 0x48, 0x14, 0x16, 0xdd, 0x3e, 0x15, 0x44, 0x83, 0x67, 0xdf, - 0x9b, 0x7a, 0x22, 0xcd, 0x7b, 0xa2, 0x28, 0x89, 0xd9, 0x8d, 0xda, 0xe3, - 0x35, 0xd8, 0x2c, 0x33, 0x0c, 0xfe, 0xa3, 0xa3, 0xf0, 0x3f, 0x82, 0xec, - 0xf9, 0x01, 0xe3, 0x71, 0xf8, 0xe7, 0x4a, 0x6c, 0x68, 0xb7, 0x2f, 0x5e, - 0x42, 0x66, 0x40, 0x0d, 0xbc, 0x1f, 0xc3, 0x72, 0xbe, 0x25, 0x25, 0xad, - 0x12, 0xdf, 0x56, 0xa8, 0x75, 0x8c, 0x34, 0x05, 0x10, 0x04, 0x39, 0xce, - 0x17, 0x51, 0xb7, 0xca, 0x00, 0xd3, 0x37, 0xf9, 0x42, 0x11, 0x05, 0xe0, - 0xd7, 0x6b, 0xc1, 0x4f, 0xea, 0x6d, 0x36, 0x75, 0x9a, 0x77, 0xfa, 0x96, - 0x09, 0x37, 0x23, 0xad, 0x9f, 0xec, 0x63, 0xc9, 0xc3, 0xeb, 0xfd, 0x05, - 0xab, 0x4f, 0xbe, 0xda, 0xef, 0x0d, 0x9a, 0xba, 0x8b, 0x87, 0xe7, 0xb9, - 0xc0, 0x73, 0x22, 0x3d, 0xbb, 0xe9, 0xdf, 0x16, 0xed, 0x1a, 0xb5, 0x79, - 0xfc, 0x7c, 0xb2, 0x18, 0x91, 0xa2, 0x41, 0x0e, 0x3f, 0xda, 0x91, 0x73, - 0x5c, 0x92, 0x3d, 0x49, 0xbb, 0xe2, 0x6e, 0x4b, 0x74, 0xbf, 0xc8, 0x2e, - 0x66, 0xdc, 0x15, 0x5d, 0xab, 0xdf, 0xfa, 0x4d, 0x43, 0x36, 0xdf, 0x1e, - 0xee, 0xbf, 0x78, 0x7d, 0x78, 0x43, 0x8b, 0x08, 0x71, 0x62, 0x92, 0x58, - 0x6a, 0xfb, 0x30, 0xf7, 0x85, 0x00, 0xca, 0x38, 0x39, 0xc7, 0x4d, 0x0c, - 0xd6, 0x1b, 0x89, 0x1b, 0x53, 0xc5, 0x10, 0x29, 0x7d, 0xf8, 0xca, 0xfe, - 0x39, 0xeb, 0x5c, 0xa5, 0x24, 0xdf, 0x12, 0x3e, 0x90, 0xdb, 0xb5, 0x36, - 0xdc, 0x93, 0xec, 0xac, 0x50, 0x53, 0x62, 0x38, 0x4d, 0xd0, 0x73, 0xa4, - 0x7e, 0x34, 0x1a, 0xa8, 0x8f, 0x4d, 0x21, 0xb8, 0x3f, 0xa0, 0xfd, 0xa1, - 0x90, 0x06, 0xdb, 0x7a, 0xad, 0xe1, 0xfe, 0xb9, 0xa0, 0xb0, 0x03, 0xea, - 0x54, 0x95, 0x92, 0x8c, 0x60, 0x6c, 0xba, 0x04, 0x69, 0x5a, 0x57, 0x12, - 0xc7, 0xf9, 0x5e, 0xb5, 0x6d, 0x0f, 0x3e, 0x50, 0xda, 0x46, 0x68, 0x51, - 0xa9, 0xa2, 0x75, 0x76, 0x30, 0x24, 0x29, 0x05, 0x46, 0x91, 0x48, 0x20, - 0x61, 0xb3, 0x79, 0x7d, 0x6d, 0xd5, 0x51, 0x74, 0x2e, 0xb7, 0x77, 0x78, - 0xbd, 0xd7, 0xdb, 0x90, 0xbe, 0xd5, 0xa5, 0x87, 0x00, 0x33, 0x63, 0x94, - 0x24, 0x32, 0xd1, 0x64, 0x66, 0x4a, 0x93, 0x98, 0xa6, 0xe8, 0x81, 0x61, - 0xb0, 0x17, 0xd6, 0x64, 0x49, 0x97, 0x34, 0xa5, 0xc8, 0xd8, 0x47, 0x19, - 0x83, 0xd7, 0x1e, 0xb8, 0x16, 0xec, 0x6f, 0xa4, 0x78, 0x93, 0xa6, 0x8b, - 0x73, 0x4a, 0x88, 0x77, 0xae, 0xf5, 0x5c, 0xcd, 0xd1, 0x6b, 0xbf, 0xde, - 0x8b, 0x7a, 0x1b, 0x41, 0xcf, 0x72, 0xfb, 0x23, 0x5c, 0x45, 0xf9, 0x77, - 0xec, 0x7e, 0xbe, 0x1f, 0xf5, 0x98, 0xe6, 0xb6, 0xb6, 0x9e, 0xad, 0xa8, - 0x95, 0x39, 0x07, 0xde, 0x28, 0x1a, 0xe6, 0x1f, 0x39, 0x37, 0x62, 0xa1, - 0x9f, 0x0a, 0xaa, 0x18, 0xfc, 0xb9, 0xab, 0x05, 0x5b, 0x5d, 0x4a, 0x19, - 0x59, 0xfd, 0x1a, 0x81, 0x62, 0x44, 0x17, 0xad, 0x17, 0x13, 0xb7, 0x16, - 0xf5, 0xf1, 0x65, 0x07, 0x95, 0xad, 0xca, 0x0b, 0xa2, 0xb8, 0x44, 0xc7, - 0xa6, 0xe9, 0x77, 0x9c, 0x33, 0xff, 0xae, 0xcb, 0x91, 0xac, 0x97, 0xfe, - 0x2e, 0x80, 0x4e, 0xc9, 0x34, 0xa8, 0x9d, 0x11, 0x20, 0x62, 0x85, 0x80, - 0x58, 0xd7, 0xb6, 0xb3, 0x79, 0x63, 0x81, 0xe2, 0x12, 0x85, 0x6f, 0x07, - 0x4a, 0x65, 0xd4, 0x9f, 0x84, 0x16, 0xdc, 0x5e, 0x4f, 0xb3, 0x46, 0xcd, - 0xb1, 0x79, 0xc2, 0xdf, 0x5a, 0x49, 0xe1, 0xf1, 0x14, 0x9b, 0x4d, 0xcd, - 0x23, 0xeb, 0xa9, 0xe2, 0xb6, 0xd8, 0x40, 0xc4, 0xd3, 0x22, 0x6f, 0x6b, - 0x31, 0x5c, 0xe9, 0x2b, 0x0a, 0x1f, 0x41, 0x24, 0xcd, 0xe6, 0x05, 0xa8, - 0x93, 0xc3, 0x69, 0x6a, 0xd2, 0xba, 0xf9, 0x4d, 0x65, 0x11, 0x76, 0x72, - 0xbc, 0xca, 0x9e, 0x2a, 0x61, 0x11, 0x25, 0x69, 0xa9, 0xe6, 0x20, 0x80, - 0xea, 0xfb, 0xdc, 0x92, 0xc3, 0xfb, 0x24, 0x50, 0x24, 0x44, 0x22, 0x88, - 0x32, 0x93, 0x71, 0x61, 0x62, 0x25, 0x3b, 0x75, 0x41, 0xa7, 0xe1, 0x04, - 0x63, 0xc5, 0x1f, 0xa8, 0x77, 0x3c, 0x84, 0x3f, 0x47, 0x90, 0x3e, 0xa0, - 0xbb, 0x4e, 0x19, 0x21, 0x48, 0x61, 0x83, 0x25, 0xa9, 0x3f, 0xcd, 0x39, - 0x08, 0x44, 0x9e, 0xf6, 0x1a, 0xe3, 0x42, 0xdd, 0x31, 0x4b, 0x46, 0x77, - 0x92, 0x4d, 0xb9, 0x46, 0x38, 0x28, 0xd6, 0x45, 0x10, 0xee, 0x0a, 0x04, - 0x29, 0xe9, 0xa0, 0xb4, 0x29, 0xc6, 0xab, 0x4c, 0x6e, 0x2f, 0xfe, 0x22, - 0x3f, 0xb6, 0x4b, 0x2d, 0x9a, 0xb8, 0x35, 0x09, 0x1e, 0xd7, 0x65, 0xc6, - 0x7b, 0xcd, 0x54, 0x30, 0x2c, 0xb3, 0x74, 0x02, 0x1c, 0x88, 0x38, 0x97, - 0xc6, 0x1e, 0x46, 0xd3, 0x34, 0x29, 0x49, 0xad, 0xc5, 0xd6, 0x5f, 0x5e, - 0xa5, 0xa7, 0x86, 0x64, 0x45, 0x0c, 0x5f, 0x68, 0xa7, 0xc7, 0x32, 0x45, - 0x08, 0x2b, 0xec, 0x72, 0x22, 0x80, 0x7c, 0x2e, 0x5c, 0x3d, 0xe5, 0x55, - 0x66, 0x33, 0xaf, 0x0e, 0x15, 0x15, 0x38, 0x8e, 0x0a, 0x5f, 0xf2, 0x57, - 0x91, 0xda, 0x4a, 0x2b, 0x60, 0x49, 0xee, 0xe9, 0x50, 0x61, 0x37, 0x1d, - 0xab, 0x17, 0x7f, 0x4d, 0xcb, 0x61, 0x5a, 0x16, 0x55, 0xf4, 0xf7, 0x27, - 0xea, 0x0f, 0x50, 0xb0, 0x70, 0xb6, 0x29, 0x4c, 0x43, 0x1f, 0xbe, 0x35, - 0xb4, 0x76, 0x4f, 0x6b, 0x67, 0x6c, 0x5e, 0x26, 0x65, 0x83, 0x35, 0xee, - 0xd8, 0x16, 0x6d, 0xba, 0xc4, 0x18, 0x1e, 0x7c, 0x1f, 0x72, 0x99, 0x49, - 0x50, 0xd7, 0x95, 0x49, 0x29, 0x29, 0x9e, 0x74, 0x4d, 0x6a, 0xba, 0x13, - 0x15, 0x43, 0x0a, 0x72, 0x27, 0x76, 0xd9, 0x67, 0x19, 0xc5, 0xbd, 0xec, - 0xbd, 0x0e, 0x81, 0xe2, 0xf5, 0xd5, 0x44, 0xc1, 0x95, 0x64, 0x48, 0x41, - 0xed, 0xc2, 0x5f, 0x8b, 0xa1, 0x8b, 0x8e, 0x78, 0x6c, 0xcf, 0xd5, 0xe5, - 0xdb, 0xa4, 0x5d, 0x8b, 0xde, 0x9c, 0xbd, 0x7a, 0x2d, 0x2c, 0xdc, 0x5e, - 0x36, 0x51, 0x6b, 0xad, 0x07, 0x5f, 0x78, 0x4c, 0x12, 0x0a, 0x70, 0x39, - 0x7b, 0xa1, 0xc5, 0x34, 0x94, 0x58, 0x4c, 0xbb, 0xd6, 0x17, 0xb8, 0x80, - 0x52, 0x9a, 0x12, 0x68, 0xec, 0x40, 0xf6, 0x34, 0x10, 0xd0, 0x45, 0x3a, - 0xac, 0xe8, 0xec, 0x29, 0x98, 0x04, 0x02, 0x05, 0xf8, 0x8b, 0xf4, 0x80, - 0x24, 0xb6, 0x1f, 0x32, 0x50, 0x94, 0xf7, 0x39, 0x33, 0xf3, 0x97, 0x20, - 0x4f, 0x49, 0x33, 0xba, 0x36, 0x2f, 0x8a, 0xab, 0x3c, 0x7e, 0x85, 0xbd, - 0x96, 0xa2, 0x57, 0xc5, 0x39, 0x6c, 0xd5, 0x1b, 0x0e, 0x6a, 0xb5, 0xa3, - 0x2b, 0x27, 0x6f, 0xa2, 0x75, 0x54, 0x77, 0x40, 0x45, 0x04, 0x7a, 0xc8, - 0xe6, 0xb0, 0xc7, 0xf8, 0xe4, 0x86, 0xf8, 0x57, 0x2b, 0xd6, 0x82, 0x65, - 0x35, 0xfd, 0xe8, 0xf0, 0xc7, 0xfd, 0xd7, 0x27, 0xaf, 0x0e, 0x7f, 0xe6, - 0xf2, 0x77, 0xef, 0x73, 0xf0, 0xc7, 0xdf, 0x38, 0x12, 0x8b, 0x0a, 0x0c, - 0x30, 0xd9, 0x0c, 0xd6, 0x71, 0xdd, 0xa5, 0x5e, 0x30, 0x27, 0x54, 0xfa, - 0x3b, 0x3d, 0x3d, 0x39, 0x8a, 0x39, 0x17, 0x53, 0x9a, 0x90, 0x0c, 0xb3, - 0x1c, 0x7d, 0xc3, 0x14, 0x01, 0x00, 0x83, 0x05, 0x17, 0x16, 0x21, 0x25, - 0xb5, 0x6f, 0x18, 0x53, 0x16, 0xdc, 0x88, 0x7e, 0xf4, 0x46, 0xc1, 0x61, - 0xfa, 0x74, 0xe4, 0x78, 0x27, 0x5f, 0x64, 0xe7, 0xe4, 0x6f, 0x6c, 0xa1, - 0x5c, 0x20, 0x75, 0x88, 0xea, 0xd0, 0xa6, 0x67, 0xec, 0x77, 0xab, 0x45, - 0x38, 0x55, 0x3a, 0xe5, 0x18, 0x77, 0xa7, 0x38, 0x64, 0x66, 0x46, 0xa7, - 0x48, 0x68, 0xaa, 0xed, 0xd5, 0x29, 0xba, 0x2a, 0x1a, 0xb4, 0x7c, 0x7e, - 0xe2, 0x58, 0x60, 0x1a, 0x61, 0x41, 0x20, 0x2a, 0x9c, 0xe1, 0xf4, 0xbb, - 0x51, 0x2f, 0x5e, 0x44, 0xbb, 0xbd, 0x70, 0x66, 0xf3, 0x42, 0x35, 0xf9, - 0x72, 0xb5, 0xb4, 0xe6, 0x7b, 0xc9, 0x85, 0xa0, 0x73, 0x2b, 0x77, 0x25, - 0xe7, 0x64, 0x25, 0x6d, 0xa5, 0x2d, 0xfc, 0xc3, 0xd6, 0x5b, 0xac, 0x38, - 0xb4, 0xd1, 0xde, 0x4f, 0x7f, 0xfc, 0x85, 0x3c, 0x56, 0xc8, 0x27, 0x37, - 0xbf, 0x09, 0x05, 0xc4, 0x4f, 0xa9, 0xf8, 0xd0, 0xbc, 0x41, 0xfb, 0xd8, - 0xa3, 0x77, 0x24, 0x0d, 0x06, 0x5d, 0x34, 0xfc, 0x13, 0x7a, 0xbf, 0x17, - 0xad, 0x8b, 0x75, 0xdf, 0xa3, 0x7f, 0x06, 0x9a, 0x5c, 0x71, 0x58, 0x4f, - 0xa2, 0x6c, 0x13, 0xda, 0x3d, 0x57, 0xa9, 0x54, 0xdc, 0xbf, 0x0d, 0x96, - 0xc6, 0xb6, 0x13, 0x09, 0xe6, 0x1a, 0x77, 0x8a, 0x12, 0x9b, 0x71, 0xc9, - 0xb6, 0x21, 0xc5, 0xb4, 0xa5, 0x1a, 0x13, 0x7d, 0xac, 0x60, 0x78, 0xb1, - 0xd8, 0x03, 0x9d, 0x18, 0xd3, 0x7a, 0x29, 0x70, 0xd4, 0xa6, 0xcc, 0x04, - 0xc1, 0xef, 0xf6, 0xe3, 0xff, 0xea, 0x47, 0x5b, 0xf1, 0x97, 0x11, 0x55, - 0x22, 0x60, 0x80, 0x64, 0x54, 0x94, 0x02, 0xff, 0x68, 0x59, 0x99, 0x7c, - 0xbd, 0x78, 0x6d, 0x11, 0x9d, 0xb1, 0xf2, 0x3a, 0x89, 0x8d, 0x32, 0x4a, - 0xca, 0xb6, 0xb4, 0x67, 0x17, 0x19, 0xc8, 0x2a, 0xb6, 0x51, 0x6a, 0x12, - 0xc6, 0x66, 0xcb, 0xf9, 0x46, 0x90, 0x35, 0x88, 0x90, 0xe8, 0xda, 0xe3, - 0xe5, 0x82, 0x1a, 0x85, 0xeb, 0x3a, 0xda, 0x74, 0x67, 0x4c, 0x96, 0x3c, - 0xbd, 0x0a, 0xfb, 0xa0, 0xf5, 0x45, 0x76, 0x40, 0x9b, 0xd9, 0x84, 0x67, - 0x93, 0x61, 0x00, 0xe6, 0x96, 0x36, 0x1c, 0xe3, 0x52, 0x4a, 0x11, 0xa2, - 0x6d, 0x01, 0x8c, 0x99, 0x8b, 0x5a, 0x4a, 0x6b, 0x5c, 0x5f, 0x4e, 0xa3, - 0x33, 0xbe, 0x44, 0xe9, 0x24, 0xfb, 0xa8, 0xbb, 0x01, 0xb7, 0x2f, 0x4e, - 0x3f, 0xce, 0x61, 0xac, 0xb8, 0xd7, 0x0f, 0xe4, 0xce, 0xd4, 0xce, 0xc1, - 0x73, 0x6b, 0x86, 0x2a, 0xea, 0xfd, 0xeb, 0x5f, 0xf8, 0xa3, 0x7f, 0xff, - 0x1b, 0x49, 0xcc, 0x91, 0x10, 0x64, 0xc8, 0x55, 0x1b, 0x01, 0xcf, 0x77, - 0xe3, 0xa3, 0x50, 0x49, 0x2c, 0xeb, 0x20, 0x1e, 0x33, 0x9a, 0x92, 0x62, - 0x7f, 0xd2, 0xa4, 0x64, 0xd6, 0x0c, 0x3c, 0x08, 0x19, 0x22, 0x53, 0x91, - 0x02, 0x52, 0xdd, 0x26, 0x41, 0x0d, 0x7f, 0x48, 0x4d, 0xcc, 0xc2, 0xb0, - 0x1b, 0x81, 0xce, 0x7a, 0x3e, 0xa4, 0xec, 0xff, 0x6b, 0xef, 0x5a, 0x9f, - 0xe2, 0x46, 0xae, 0xfd, 0x77, 0xfe, 0x0a, 0x15, 0x75, 0x5d, 0x86, 0xd4, - 0xcc, 0xd8, 0xe6, 0x65, 0xec, 0x72, 0x9c, 0x60, 0xc0, 0x36, 0x09, 0x06, - 0xc2, 0x60, 0x7b, 0x53, 0xd9, 0x14, 0x25, 0x18, 0x31, 0x68, 0x3d, 0x23, - 0x4d, 0x24, 0x8d, 0x01, 0x6f, 0xe5, 0xfe, 0xed, 0xb7, 0xcf, 0xb3, 0x5b, - 0xea, 0xd6, 0x08, 0xf6, 0xe1, 0xe4, 0xc3, 0xdd, 0x0f, 0x8b, 0x67, 0x46, - 0xea, 0xe7, 0xe9, 0xd3, 0xe7, 0xf9, 0x3b, 0x18, 0x69, 0xaf, 0x96, 0x37, - 0xe2, 0x1f, 0x52, 0x7d, 0x50, 0x9b, 0x01, 0x49, 0x06, 0x8a, 0xdb, 0xa5, - 0x95, 0xc8, 0x81, 0xf1, 0x04, 0xbc, 0xd7, 0x77, 0xf7, 0x40, 0xcf, 0x70, - 0x16, 0xe0, 0x11, 0x2d, 0xe6, 0x94, 0x9c, 0xaf, 0xb5, 0x1e, 0xa0, 0xca, - 0x38, 0x88, 0x35, 0x8f, 0xe1, 0x91, 0xc7, 0x11, 0xa6, 0x06, 0x99, 0x6b, - 0x29, 0x0d, 0x93, 0x14, 0x56, 0x72, 0x34, 0xca, 0x86, 0x19, 0x27, 0xde, - 0xc8, 0x71, 0x78, 0x45, 0x1b, 0x83, 0xa5, 0xe1, 0x79, 0xf7, 0x2d, 0x33, - 0x56, 0x6f, 0x15, 0x18, 0x1a, 0xc8, 0x6d, 0xd8, 0xb6, 0x2c, 0x75, 0x5d, - 0xfc, 0x05, 0xe8, 0x71, 0xa5, 0x82, 0xe6, 0xbc, 0x85, 0x53, 0x51, 0x90, - 0x7f, 0xfd, 0xb7, 0x3f, 0x4b, 0x30, 0x5f, 0x6b, 0x86, 0x51, 0x9e, 0x11, - 0xe0, 0xb0, 0x88, 0xfb, 0x7d, 0x5c, 0x21, 0x9a, 0x9c, 0xe1, 0xd6, 0xe1, - 0x51, 0x36, 0xd7, 0x0e, 0xc4, 0x66, 0xda, 0x47, 0x27, 0x55, 0x22, 0x2c, - 0x50, 0xd1, 0xb1, 0x00, 0x56, 0xa0, 0x8d, 0xf5, 0xea, 0xb9, 0x81, 0x58, - 0xdf, 0x10, 0x99, 0xda, 0xd5, 0x3c, 0xbb, 0x64, 0xa0, 0x5e, 0x3f, 0x88, - 0x06, 0x88, 0x1e, 0x71, 0x53, 0xeb, 0xdb, 0x2d, 0xc7, 0x1e, 0x93, 0x13, - 0xcc, 0x27, 0xa3, 0x9d, 0xa4, 0x6c, 0x74, 0x80, 0x10, 0x1a, 0x8c, 0x2f, - 0x88, 0x67, 0x33, 0x2f, 0xff, 0x2b, 0xd6, 0xde, 0x88, 0x5b, 0x6b, 0x8b, - 0x38, 0xe0, 0x92, 0x91, 0xf6, 0x21, 0x5d, 0x03, 0x6f, 0x5f, 0xbe, 0x77, - 0x49, 0xb8, 0x00, 0x0e, 0xe9, 0x31, 0x8d, 0xb2, 0x62, 0x01, 0xd9, 0x68, - 0x4a, 0x29, 0x16, 0x39, 0xb3, 0xd3, 0x71, 0x64, 0xf6, 0x66, 0x76, 0x0b, - 0x03, 0xb2, 0x36, 0x21, 0xd3, 0x80, 0x72, 0xe2, 0x4a, 0xd9, 0x55, 0x72, - 0x55, 0xf5, 0xab, 0xbc, 0x4f, 0x7e, 0x31, 0x92, 0xac, 0x8d, 0x32, 0xf2, - 0x49, 0x89, 0x48, 0x48, 0x22, 0xba, 0x36, 0x4c, 0xd4, 0xf7, 0xe8, 0x65, - 0x60, 0x55, 0x27, 0xc4, 0x6f, 0xaa, 0x55, 0x51, 0x24, 0xac, 0x84, 0xa1, - 0x57, 0x8f, 0xd8, 0x1c, 0xed, 0x14, 0x18, 0xf5, 0xd9, 0xa8, 0x08, 0x96, - 0x1c, 0x38, 0x1a, 0xde, 0xce, 0xee, 0x68, 0x42, 0x8d, 0x4e, 0xd1, 0xf3, - 0x49, 0x1a, 0xcd, 0x67, 0x5a, 0x4b, 0xe8, 0x24, 0xa3, 0x0e, 0x10, 0xd9, - 0x84, 0xc3, 0x55, 0x08, 0xe3, 0x97, 0x03, 0xb4, 0x8c, 0x16, 0x5c, 0x29, - 0xab, 0x6a, 0xb4, 0xf5, 0x53, 0x09, 0x4b, 0xef, 0xfa, 0x38, 0x10, 0x5f, - 0x56, 0xd3, 0xd7, 0x69, 0xea, 0x2c, 0xba, 0xff, 0x65, 0x78, 0x7c, 0x24, - 0xf6, 0x32, 0xe0, 0xa5, 0xfe, 0x6a, 0x34, 0xfe, 0x2b, 0xe6, 0x86, 0x26, - 0xbd, 0x3e, 0x11, 0x55, 0xa1, 0x99, 0x2e, 0xc8, 0x70, 0x83, 0xd8, 0x1f, - 0x98, 0x6d, 0x57, 0x8c, 0x98, 0x79, 0x69, 0x3e, 0xac, 0x46, 0x6d, 0xfe, - 0xd1, 0x8b, 0xad, 0x8d, 0xda, 0xbe, 0xe2, 0x1a, 0x37, 0x58, 0x16, 0x28, - 0x62, 0xe6, 0x31, 0x6e, 0xa2, 0x83, 0xef, 0xff, 0x3e, 0x76, 0xf5, 0xda, - 0xed, 0xfc, 0xc7, 0x72, 0x9a, 0x3e, 0x34, 0x5c, 0xd1, 0x15, 0xcd, 0xda, - 0xb3, 0x50, 0x16, 0x84, 0x98, 0x7e, 0x40, 0xf3, 0x07, 0x0e, 0x47, 0xa2, - 0xa6, 0x47, 0xf3, 0x42, 0x44, 0x08, 0x8d, 0xfb, 0xa3, 0xa8, 0x6d, 0x4c, - 0x32, 0xc4, 0x0c, 0x32, 0xac, 0xe3, 0x33, 0xf6, 0xf7, 0x18, 0xcf, 0x69, - 0x99, 0x50, 0xc0, 0x13, 0xc4, 0xf6, 0x3c, 0x36, 0xf4, 0x42, 0x01, 0xe9, - 0xc0, 0x02, 0x97, 0x51, 0x12, 0x62, 0x6f, 0x5a, 0x3e, 0x5a, 0x86, 0xe4, - 0x33, 0xbc, 0xf7, 0xd1, 0x75, 0xee, 0x37, 0x87, 0x97, 0xc5, 0xe3, 0xd7, - 0x8f, 0x39, 0x03, 0x7e, 0x99, 0x4d, 0x68, 0xa0, 0xef, 0x2f, 0x93, 0xdd, - 0x1d, 0x70, 0x66, 0x61, 0xf4, 0x86, 0x6b, 0x3f, 0x7e, 0xf5, 0x38, 0xe2, - 0x07, 0xe5, 0xc9, 0x66, 0x68, 0x09, 0xbe, 0xc7, 0x59, 0xce, 0x52, 0x54, - 0x56, 0x80, 0x3c, 0x28, 0x3c, 0xee, 0x3a, 0x35, 0x8b, 0xc8, 0x61, 0x60, - 0x46, 0xc1, 0x9a, 0x20, 0xbf, 0xe5, 0x3c, 0xea, 0x38, 0x24, 0xb1, 0xc8, - 0xc8, 0x79, 0xac, 0x7f, 0x90, 0xb1, 0x4a, 0xc6, 0x59, 0x3c, 0xc1, 0xe0, - 0x7a, 0x2b, 0xfe, 0x9b, 0x3e, 0x11, 0x64, 0xb2, 0x45, 0xdb, 0x22, 0xd4, - 0x48, 0x70, 0x92, 0xa2, 0x11, 0x3b, 0x58, 0x69, 0x09, 0xf4, 0x8a, 0x14, - 0x95, 0x0b, 0xb5, 0x11, 0x78, 0x9a, 0xa3, 0x5f, 0xf3, 0x49, 0x73, 0x65, - 0x91, 0x67, 0x03, 0xd4, 0x23, 0x92, 0x5e, 0x87, 0x71, 0x19, 0xe3, 0x2b, - 0x6b, 0x58, 0x14, 0x64, 0xc2, 0xd1, 0x30, 0x1d, 0xb4, 0x3e, 0xc3, 0x93, - 0x6c, 0x5a, 0x62, 0xd7, 0x5d, 0xcf, 0xaf, 0x6a, 0x5c, 0x2f, 0xca, 0xac, - 0xb9, 0x2b, 0xf5, 0x0c, 0x0b, 0xc1, 0x0d, 0xff, 0xff, 0xf0, 0xfe, 0xff, - 0xb2, 0xf0, 0x7e, 0x27, 0x69, 0xa7, 0x96, 0x58, 0xd7, 0x9a, 0xfc, 0xff, - 0x8b, 0x4b, 0x15, 0x79, 0xf9, 0x31, 0xf7, 0x64, 0xa6, 0x3c, 0xa0, 0x07, - 0x31, 0x50, 0xb7, 0x0a, 0x56, 0xaf, 0x56, 0x2a, 0xb1, 0x57, 0xcf, 0xdc, - 0xa9, 0x87, 0xe1, 0x2f, 0xdc, 0x87, 0x96, 0x40, 0xff, 0xf6, 0xd6, 0x94, - 0x51, 0x7f, 0xe2, 0x85, 0x0d, 0x00, 0xe0, 0xef, 0x71, 0xe6, 0x96, 0x9b, - 0xaa, 0xc3, 0xc5, 0x8c, 0x88, 0xfa, 0x59, 0xdf, 0x11, 0x08, 0x0c, 0x41, - 0x0a, 0x49, 0x31, 0xc8, 0xa9, 0x1c, 0x84, 0x94, 0x37, 0x36, 0x8f, 0x53, - 0xce, 0x98, 0xc2, 0xc7, 0x60, 0xa0, 0x2d, 0x48, 0x2e, 0xd2, 0x04, 0x1f, - 0xb0, 0x9e, 0xb6, 0xed, 0x2b, 0x6f, 0xa4, 0x14, 0xaf, 0x03, 0x4c, 0x9d, - 0x61, 0x87, 0x77, 0x0c, 0x49, 0x04, 0x47, 0xd1, 0x34, 0xfe, 0xc5, 0x6a, - 0xaf, 0x20, 0xe7, 0x25, 0x97, 0xf3, 0x2a, 0x58, 0xbf, 0x06, 0x55, 0xe3, - 0x04, 0xe1, 0xe2, 0x71, 0x48, 0x2b, 0x6e, 0x40, 0xd5, 0xf2, 0x69, 0x82, - 0x05, 0xba, 0xfb, 0x7b, 0x46, 0x3e, 0x7b, 0xb9, 0xbc, 0xea, 0x88, 0x06, - 0x86, 0xa1, 0xe3, 0x4f, 0x3e, 0xb7, 0x0f, 0xf7, 0x01, 0xdc, 0xac, 0x18, - 0xc9, 0xbc, 0xeb, 0xbd, 0x9c, 0x70, 0xe8, 0x42, 0x69, 0xbb, 0x00, 0xd9, - 0x49, 0x22, 0x1a, 0xca, 0x10, 0x9a, 0xbe, 0x2c, 0x4b, 0x91, 0xb0, 0x62, - 0x94, 0xb7, 0x42, 0x81, 0x42, 0xf7, 0x57, 0x39, 0x04, 0x30, 0x86, 0xa6, - 0xf8, 0x96, 0x82, 0x2e, 0xb1, 0x6f, 0x41, 0x4a, 0xe0, 0x53, 0x7b, 0x89, - 0x25, 0x29, 0x7d, 0xb0, 0x92, 0x02, 0x97, 0xd8, 0xeb, 0x3f, 0xc7, 0x22, - 0x4a, 0xae, 0xc4, 0xc8, 0x4d, 0xcb, 0x36, 0x7b, 0x82, 0x63, 0x3c, 0xa9, - 0xfa, 0xe5, 0xd7, 0xcb, 0xb0, 0xcc, 0xc6, 0x35, 0x93, 0x54, 0xb1, 0xdc, - 0x31, 0x0f, 0x0f, 0xbf, 0x5e, 0xbe, 0x14, 0x37, 0xa1, 0x63, 0xde, 0xf2, - 0xa5, 0xd6, 0xf2, 0x2e, 0xbb, 0xbc, 0xde, 0x3b, 0x1a, 0x86, 0x9b, 0x26, - 0x27, 0x3b, 0x5d, 0xc2, 0x24, 0xfe, 0xe2, 0xf3, 0x46, 0x17, 0xca, 0xe7, - 0x25, 0x29, 0xd2, 0x66, 0xd8, 0xf9, 0xc4, 0x48, 0xb1, 0x03, 0x6e, 0x8b, - 0x7e, 0x0b, 0x37, 0x57, 0x7b, 0x41, 0x24, 0x37, 0xc4, 0x56, 0xa2, 0x7b, - 0x87, 0x15, 0x6f, 0x94, 0x28, 0xfb, 0x31, 0x2c, 0x08, 0x26, 0xc4, 0x7b, - 0x76, 0x64, 0xdd, 0x5f, 0xd0, 0x3c, 0x0d, 0xfd, 0x72, 0x93, 0x85, 0x03, - 0x80, 0xd4, 0x14, 0x39, 0x0d, 0x89, 0x4c, 0xd2, 0xda, 0x52, 0xd9, 0xc2, - 0xa9, 0xfc, 0xa3, 0x60, 0x8c, 0xe0, 0xa9, 0x82, 0xd6, 0x38, 0x90, 0xdb, - 0x6b, 0x6c, 0xd7, 0x5c, 0x0b, 0xbb, 0x46, 0xab, 0x0a, 0x8f, 0xaa, 0x81, - 0x71, 0x43, 0xe5, 0x6c, 0x9c, 0x7e, 0x35, 0x5a, 0x1f, 0x35, 0x3c, 0xd4, - 0xce, 0x08, 0xba, 0x2c, 0xdc, 0xdc, 0xca, 0x24, 0x35, 0xfa, 0xdd, 0xfe, - 0x9b, 0xdd, 0xbd, 0x83, 0xdd, 0xd5, 0xe6, 0x48, 0xf6, 0xb0, 0x62, 0x63, - 0x60, 0x9b, 0x94, 0xec, 0x9c, 0x41, 0xe0, 0xc3, 0xec, 0x70, 0x22, 0x1b, - 0x71, 0x4b, 0x97, 0x28, 0x82, 0x90, 0x9a, 0x83, 0xac, 0xf0, 0x0b, 0x4a, - 0x88, 0x28, 0x3d, 0x4e, 0x8d, 0xca, 0x02, 0x61, 0x8d, 0x2a, 0x62, 0x82, - 0xfc, 0x5e, 0x5d, 0x9a, 0x8b, 0x14, 0x4c, 0xdd, 0xed, 0x0b, 0xd2, 0x1f, - 0x81, 0x35, 0x1d, 0x24, 0x56, 0x82, 0x06, 0xf6, 0x82, 0x64, 0xc6, 0x65, - 0x5c, 0x4e, 0x98, 0x03, 0xe0, 0x98, 0xfb, 0x60, 0x3a, 0x1c, 0xee, 0x0c, - 0x0f, 0x9b, 0x56, 0x67, 0x65, 0x85, 0x1a, 0xfb, 0x59, 0xfa, 0x31, 0xea, - 0xa2, 0xa1, 0xf0, 0xba, 0x0f, 0x77, 0x4f, 0x77, 0x3e, 0x18, 0x62, 0x43, - 0x25, 0x2e, 0x00, 0x44, 0x84, 0xeb, 0x63, 0xbe, 0xc6, 0x51, 0x78, 0xfb, - 0xfd, 0x6e, 0x38, 0xec, 0xef, 0x9c, 0x1c, 0x84, 0xbb, 0xe0, 0x1f, 0x11, - 0x85, 0x45, 0x30, 0xb9, 0xbc, 0x16, 0xde, 0x0f, 0xcf, 0x86, 0xf2, 0x47, - 0xc6, 0x44, 0x06, 0xb3, 0xb2, 0x56, 0xf7, 0x57, 0x1e, 0x37, 0x84, 0xb7, - 0x46, 0x7f, 0x9e, 0xac, 0xe9, 0x0b, 0x5a, 0xcd, 0x46, 0xd6, 0x67, 0x10, - 0x78, 0x6d, 0x9d, 0x5f, 0x5b, 0x5f, 0xf4, 0x5a, 0xe0, 0xbd, 0x21, 0x39, - 0xbd, 0x17, 0xb0, 0x01, 0x4a, 0x98, 0x09, 0x40, 0x37, 0xe1, 0xeb, 0x54, - 0xf7, 0xd2, 0x97, 0x53, 0xf7, 0x8e, 0xea, 0x0d, 0xa8, 0x81, 0x03, 0x7e, - 0xe9, 0x4b, 0x2d, 0x1c, 0x96, 0xc5, 0x1d, 0x77, 0x4c, 0x40, 0xe4, 0x3d, - 0xf9, 0xba, 0xe5, 0xe4, 0x46, 0xc0, 0x46, 0xe2, 0x57, 0x6a, 0x7a, 0xf5, - 0xde, 0x10, 0x87, 0x59, 0x78, 0x52, 0xae, 0x17, 0xb0, 0x49, 0x62, 0x8b, - 0xf6, 0xf2, 0x30, 0x2e, 0xc6, 0xc9, 0x95, 0x0f, 0xcf, 0xe4, 0xad, 0x95, - 0x4e, 0xd5, 0xe6, 0x9a, 0x99, 0xcb, 0x7a, 0x02, 0xaf, 0x53, 0x96, 0x42, - 0x8f, 0x93, 0x15, 0xf0, 0xab, 0xa2, 0x8d, 0xc7, 0x99, 0xb9, 0xae, 0xbd, - 0x7b, 0xe3, 0x0d, 0xc3, 0x50, 0xeb, 0x37, 0x60, 0xe0, 0xca, 0xc5, 0x46, - 0x89, 0xcb, 0xc0, 0x56, 0xbe, 0xa6, 0x71, 0x34, 0xfe, 0x96, 0xce, 0xb0, - 0x06, 0x0e, 0x98, 0x76, 0x57, 0x51, 0x54, 0x50, 0x1c, 0xa5, 0x70, 0x77, - 0x34, 0x20, 0xe5, 0x7e, 0x8b, 0x57, 0xe2, 0x03, 0x08, 0x97, 0xc3, 0xe1, - 0xe1, 0xbd, 0x17, 0x42, 0xa5, 0xd1, 0x3a, 0x58, 0x5d, 0x53, 0x99, 0x00, - 0xa7, 0x13, 0xff, 0x79, 0xc8, 0xc6, 0xc0, 0x0b, 0xe7, 0x9f, 0xdf, 0x84, - 0x47, 0x83, 0xad, 0x8d, 0x12, 0x28, 0x29, 0x26, 0xf6, 0xad, 0x9b, 0x34, - 0xbb, 0x48, 0x0d, 0x53, 0xbb, 0x4e, 0x26, 0x33, 0xba, 0x26, 0xdb, 0xdb, - 0x3e, 0x01, 0xe4, 0x7f, 0xfa, 0x03, 0xcf, 0x5d, 0x0b, 0x33, 0x3f, 0x99, - 0x5f, 0x4c, 0xcc, 0xda, 0x0f, 0xe7, 0x46, 0x8b, 0xb9, 0x8d, 0x0e, 0x53, - 0x0e, 0xca, 0x67, 0x45, 0x57, 0x50, 0xd1, 0xd2, 0x72, 0xc1, 0x55, 0x41, - 0x22, 0x39, 0x9e, 0xd0, 0x1a, 0x00, 0xba, 0x2d, 0x69, 0x46, 0x82, 0xe4, - 0xf2, 0x8c, 0xfa, 0x2a, 0xe7, 0x1e, 0xce, 0xa0, 0x6e, 0xde, 0x6d, 0x52, - 0xfa, 0xee, 0xae, 0xe1, 0xc9, 0xd1, 0xfe, 0xbb, 0x63, 0xf9, 0xf3, 0x90, - 0x15, 0x1d, 0xd2, 0xac, 0xe1, 0x8f, 0xe2, 0x6b, 0x1a, 0x22, 0x02, 0xc3, - 0x08, 0xdc, 0xff, 0x2a, 0x77, 0x51, 0x84, 0x87, 0x34, 0xd3, 0xa3, 0xac, - 0x34, 0x3f, 0xc6, 0xc0, 0x65, 0x37, 0x18, 0x6d, 0x3b, 0xa4, 0x10, 0xdb, - 0x21, 0x55, 0x6c, 0x35, 0x82, 0x51, 0x16, 0x18, 0x82, 0xe1, 0xad, 0xfc, - 0x67, 0xe1, 0x58, 0x19, 0xe7, 0xbd, 0x45, 0x44, 0x42, 0xf0, 0xfc, 0xa1, - 0x11, 0x6e, 0xcd, 0x40, 0x4f, 0x29, 0xb3, 0xf0, 0x84, 0x9d, 0x8f, 0xab, - 0x8b, 0x96, 0xa4, 0x65, 0xa1, 0xcd, 0xce, 0x03, 0x60, 0x9d, 0x37, 0x06, - 0xb8, 0x2c, 0x3f, 0xe0, 0x15, 0x19, 0x7e, 0x91, 0xee, 0x6b, 0xbe, 0x44, - 0xf5, 0x6a, 0x5d, 0x38, 0xaf, 0x8f, 0x59, 0x0a, 0x26, 0xb0, 0x96, 0x8a, - 0x36, 0xf4, 0xa3, 0xb2, 0xe2, 0x5c, 0x63, 0x5f, 0x43, 0xed, 0xdc, 0x0e, - 0x31, 0x61, 0xb6, 0x6c, 0x6d, 0xeb, 0x96, 0x53, 0x73, 0xcb, 0xfa, 0x25, - 0xd5, 0x22, 0x3b, 0x7e, 0x2b, 0xab, 0x51, 0x17, 0x07, 0x82, 0x67, 0x56, - 0x19, 0x93, 0xd5, 0x62, 0xe9, 0x11, 0x9b, 0x09, 0x0f, 0xe3, 0x9e, 0xbc, - 0xa7, 0x5b, 0xdd, 0x44, 0x35, 0xad, 0x55, 0xb5, 0xbc, 0xa6, 0xa0, 0xaf, - 0xc9, 0x8c, 0x54, 0xbe, 0x0f, 0xf0, 0x71, 0x1a, 0x67, 0x73, 0x37, 0x7c, - 0xaa, 0x7f, 0x03, 0xdf, 0xa2, 0x33, 0x0e, 0x82, 0x94, 0xa3, 0x57, 0xa4, - 0xdb, 0xbd, 0x0e, 0x58, 0xe9, 0x6a, 0x70, 0x2e, 0x35, 0x2d, 0x10, 0x6d, - 0x32, 0x18, 0x7b, 0x1a, 0x5f, 0x81, 0xd0, 0x17, 0x6b, 0xd4, 0xde, 0x88, - 0x2e, 0x06, 0x1f, 0x34, 0xb4, 0x18, 0x88, 0x0a, 0x88, 0xad, 0x44, 0x1c, - 0x0f, 0xc1, 0xc1, 0x94, 0xe8, 0xf9, 0x34, 0x9d, 0x88, 0x79, 0xc4, 0xf4, - 0xa8, 0xf1, 0xac, 0xe0, 0x7d, 0x0b, 0x59, 0xe9, 0x20, 0x15, 0x2b, 0x9b, - 0x4f, 0x2f, 0x20, 0x5c, 0xf1, 0xca, 0x3a, 0x1d, 0x06, 0xac, 0xf2, 0x60, - 0x2f, 0x5e, 0x24, 0x07, 0xe6, 0x80, 0xf9, 0x66, 0xb5, 0x8a, 0x22, 0xfa, - 0x96, 0x69, 0x3c, 0x50, 0xa3, 0x22, 0x2f, 0x6c, 0x72, 0x1e, 0xe2, 0x42, - 0xb0, 0xc2, 0x13, 0x93, 0xd2, 0xcb, 0xed, 0x53, 0xb8, 0x4f, 0x20, 0x5b, - 0x8f, 0xf5, 0xab, 0x3f, 0x0b, 0xbc, 0xc4, 0xb2, 0xa4, 0x16, 0xd6, 0x82, - 0x08, 0xb4, 0x39, 0x5d, 0x15, 0x68, 0xd0, 0x4b, 0x79, 0x1e, 0x51, 0x34, - 0x08, 0xc6, 0x9a, 0x27, 0xa6, 0xd1, 0xfe, 0x72, 0x58, 0xcb, 0xb4, 0x7e, - 0x41, 0x91, 0xc2, 0xa2, 0xba, 0x19, 0x4f, 0xba, 0x21, 0xd6, 0x76, 0x51, - 0x56, 0x69, 0x35, 0x27, 0xb8, 0xd5, 0x40, 0xe8, 0x0e, 0xf9, 0xb4, 0x72, - 0x0e, 0x46, 0x72, 0x6a, 0x95, 0x52, 0xfe, 0xf3, 0x55, 0x5a, 0xf5, 0x60, - 0x35, 0x09, 0xd5, 0xe3, 0x02, 0xeb, 0x10, 0x4e, 0xf2, 0x1b, 0x4c, 0xa2, - 0x9d, 0x78, 0x41, 0x90, 0x32, 0xb0, 0x7a, 0xbd, 0x0e, 0xf3, 0xfa, 0xa3, - 0x9f, 0xe5, 0xc7, 0x73, 0xf4, 0x92, 0xca, 0x3a, 0xf1, 0x80, 0x63, 0xb0, - 0x8a, 0xfa, 0xb9, 0x9f, 0x93, 0xe8, 0x11, 0xae, 0xc8, 0x4f, 0xe0, 0x2d, - 0xa7, 0x65, 0x31, 0x43, 0x9e, 0x62, 0x83, 0x8f, 0x06, 0x2a, 0x4f, 0xd9, - 0x46, 0x92, 0x1b, 0xd4, 0x7e, 0x5b, 0xeb, 0xcc, 0xfc, 0x98, 0xf5, 0xd0, - 0x53, 0x5f, 0x98, 0xb1, 0x8c, 0x31, 0xa0, 0x0b, 0xaa, 0x42, 0xe3, 0x26, - 0xfe, 0x48, 0x61, 0x5a, 0x71, 0x54, 0xc5, 0x17, 0x1c, 0x39, 0x4a, 0xdf, - 0x87, 0x95, 0x6d, 0xe9, 0x34, 0x2d, 0xdd, 0x0a, 0xce, 0x9c, 0x26, 0x40, - 0x51, 0xdb, 0xa6, 0xb9, 0xb8, 0x18, 0xa9, 0x69, 0xf5, 0x62, 0x2e, 0x84, - 0xda, 0xb4, 0x60, 0x1a, 0x39, 0x69, 0x2c, 0xa6, 0x8c, 0x47, 0x3f, 0x13, - 0x0c, 0x09, 0xad, 0xd0, 0x23, 0x7a, 0xf9, 0xe7, 0x7f, 0xfb, 0x11, 0x7e, - 0xd4, 0x7d, 0xcd, 0x96, 0xcb, 0xb1, 0x28, 0x48, 0x69, 0x94, 0x33, 0x02, - 0x16, 0xe9, 0xac, 0x8a, 0xb4, 0x30, 0x21, 0x1a, 0xa6, 0x43, 0x20, 0x0c, - 0x8f, 0xa8, 0x0d, 0x72, 0x61, 0x6b, 0x06, 0x04, 0x55, 0x62, 0xe0, 0x12, - 0xb7, 0x9e, 0x87, 0x90, 0xf3, 0xe5, 0xaf, 0x02, 0x5a, 0x2e, 0xab, 0xef, - 0x35, 0x47, 0xb8, 0xba, 0x86, 0xd0, 0xf5, 0xc6, 0xe1, 0x13, 0x12, 0xd2, - 0x2c, 0x6e, 0x3f, 0x20, 0x1c, 0x1f, 0x2c, 0x2b, 0xc6, 0x2c, 0x4f, 0xb3, - 0xeb, 0x48, 0xec, 0x5a, 0x79, 0x9d, 0x2d, 0xb1, 0x3d, 0xd6, 0x81, 0x5a, - 0xdd, 0x50, 0x1e, 0x18, 0x35, 0xee, 0x2e, 0x78, 0xb4, 0xa6, 0x66, 0xd9, - 0xdd, 0x5c, 0x92, 0xed, 0x8d, 0xc1, 0xd3, 0xd5, 0x40, 0xf0, 0x03, 0x06, - 0x01, 0xc5, 0xd6, 0x66, 0x52, 0x81, 0xd8, 0x0b, 0x18, 0xda, 0x10, 0x0a, - 0x49, 0xcc, 0x52, 0x70, 0x17, 0x98, 0x4e, 0x19, 0xdf, 0x00, 0x77, 0xc9, - 0xcb, 0x11, 0xec, 0x39, 0x1b, 0xa1, 0x7b, 0x4c, 0x4b, 0x6f, 0x47, 0x83, - 0xa7, 0x10, 0x3d, 0x2e, 0xab, 0xbc, 0x1f, 0x1c, 0x72, 0x10, 0x38, 0xc4, - 0x68, 0x56, 0xd3, 0x24, 0x76, 0x5a, 0x5a, 0xc5, 0xf0, 0xd4, 0x6c, 0x3d, - 0x16, 0xea, 0xc0, 0x12, 0x5e, 0xcc, 0x15, 0x21, 0xda, 0x6f, 0x2e, 0x8b, - 0x94, 0x90, 0x35, 0xa1, 0x91, 0x32, 0xe7, 0x3f, 0x70, 0x05, 0xd2, 0x0c, - 0xf3, 0x00, 0x95, 0x3a, 0xdd, 0x26, 0x03, 0x6e, 0xde, 0x1a, 0x6b, 0x4e, - 0x9d, 0x88, 0x4e, 0x7b, 0x3f, 0x69, 0xe4, 0xe9, 0xc0, 0x41, 0xb2, 0x0e, - 0x68, 0x2a, 0x44, 0x91, 0xa6, 0x51, 0xb0, 0x41, 0x53, 0x02, 0x8c, 0xe1, - 0xae, 0x28, 0xb9, 0xe1, 0x7a, 0x31, 0x6a, 0xa8, 0xc3, 0x0b, 0xdd, 0x3d, - 0xf2, 0x74, 0x6d, 0xc9, 0x68, 0x44, 0x17, 0xdc, 0xac, 0x48, 0xd1, 0x66, - 0x93, 0x73, 0xf7, 0x76, 0x7a, 0xee, 0xfc, 0x04, 0x67, 0x08, 0x7e, 0xf5, - 0x32, 0xae, 0xcd, 0xd3, 0xaf, 0x5f, 0xd3, 0x46, 0x82, 0x17, 0x1a, 0x21, - 0x12, 0xb4, 0xac, 0x33, 0xf8, 0x5f, 0xdd, 0xf2, 0x9a, 0xbe, 0x16, 0x70, - 0x7c, 0xb6, 0xff, 0x12, 0x50, 0x05, 0x25, 0x26, 0x0e, 0x86, 0xf1, 0xa8, - 0x5f, 0xde, 0x4d, 0x2f, 0x28, 0x47, 0x8b, 0x29, 0xd0, 0xf0, 0x45, 0xfe, - 0x0e, 0xc7, 0x0d, 0x61, 0x1f, 0xe8, 0x87, 0xf4, 0xea, 0x74, 0x85, 0x5c, - 0xff, 0x03, 0xe8, 0xe0, 0x02, 0x2b, 0xba, 0x92, 0xc6, 0x04, 0x66, 0xc8, - 0xfc, 0x92, 0x6a, 0x8c, 0x01, 0x6a, 0xb9, 0x39, 0xd0, 0x8f, 0x30, 0x3e, - 0xc9, 0x0b, 0xb3, 0x33, 0x4a, 0xee, 0x1c, 0xc3, 0xf3, 0x6e, 0x6c, 0x40, - 0xaa, 0xeb, 0xc0, 0xa1, 0xe0, 0x5f, 0xaa, 0x5f, 0x1c, 0x99, 0xfb, 0x22, - 0x86, 0x72, 0x2b, 0x8a, 0x3a, 0x10, 0xae, 0xc8, 0x64, 0x21, 0x08, 0x04, - 0xed, 0x42, 0xdc, 0x9e, 0x14, 0xcd, 0x6d, 0x43, 0x41, 0x1f, 0xc9, 0xb6, - 0x43, 0x1e, 0x8e, 0xc7, 0xdd, 0xa1, 0xb3, 0x11, 0xa3, 0x12, 0x83, 0x66, - 0x8e, 0xf5, 0x11, 0xad, 0xef, 0x1f, 0x84, 0x41, 0x0e, 0xc2, 0x0e, 0xb2, - 0x73, 0xe7, 0xea, 0x52, 0xd3, 0x66, 0xa8, 0x7c, 0xfb, 0x65, 0x02, 0xca, - 0x60, 0x93, 0x0b, 0xe3, 0xb0, 0xcd, 0x2f, 0x54, 0xcd, 0x36, 0x01, 0x8e, - 0x2e, 0x8e, 0x07, 0xcd, 0x38, 0x43, 0x63, 0x67, 0x7f, 0xb1, 0xeb, 0x5a, - 0xab, 0x6b, 0x65, 0x36, 0xa9, 0x9d, 0x6b, 0x43, 0xf5, 0xb8, 0x32, 0x54, - 0x4f, 0x2b, 0xb6, 0x05, 0xac, 0xe5, 0x4d, 0xd5, 0x81, 0x94, 0x06, 0x84, - 0x7f, 0x46, 0x91, 0x58, 0xf5, 0xd6, 0x68, 0xc5, 0x4d, 0xd8, 0xdc, 0x36, - 0x2c, 0x66, 0xc9, 0x77, 0xab, 0x01, 0x47, 0x3e, 0xc7, 0xba, 0x4e, 0xb4, - 0x46, 0xbb, 0xf4, 0x55, 0xff, 0x0c, 0xbe, 0xe2, 0x84, 0x63, 0xb9, 0x59, - 0x60, 0xd4, 0x52, 0xa3, 0x00, 0xf2, 0x40, 0xae, 0x16, 0x8f, 0x8c, 0x62, - 0x65, 0xc1, 0x88, 0x65, 0xc4, 0x3b, 0x6f, 0x43, 0xd0, 0x7c, 0x37, 0x2d, - 0xc7, 0xce, 0xfe, 0x50, 0x4c, 0xcf, 0x14, 0xe0, 0x02, 0xc6, 0x49, 0x7d, - 0xf8, 0xcf, 0x37, 0x03, 0xc3, 0x87, 0x08, 0x21, 0x54, 0x2f, 0x9c, 0x1b, - 0xdb, 0x48, 0x91, 0x49, 0x01, 0x39, 0xdb, 0xf4, 0x73, 0x84, 0xbf, 0xf3, - 0x3c, 0x6c, 0xf2, 0x17, 0x35, 0xbd, 0x78, 0xf8, 0xed, 0xfd, 0x8a, 0x20, - 0x78, 0x4e, 0xce, 0x29, 0x73, 0x4b, 0x2e, 0x6e, 0x09, 0x73, 0x0f, 0x26, - 0x55, 0x3a, 0x8d, 0x19, 0x30, 0x86, 0xf0, 0x62, 0x54, 0x0a, 0x8b, 0x38, - 0x9e, 0x0e, 0x71, 0x90, 0xcd, 0x01, 0x1b, 0x74, 0x35, 0xc7, 0x35, 0xe9, - 0x91, 0x82, 0x18, 0x84, 0x02, 0x7c, 0x82, 0xe9, 0x95, 0x1a, 0xc1, 0x2a, - 0x88, 0xcb, 0x03, 0x1b, 0x02, 0xb4, 0xdc, 0xb1, 0x4d, 0xb9, 0x04, 0xb9, - 0x33, 0x31, 0x13, 0x0e, 0xc6, 0x31, 0xba, 0x88, 0xdd, 0xcc, 0x46, 0x94, - 0xa3, 0xfb, 0x79, 0x6f, 0x71, 0x73, 0x9a, 0x2f, 0xa9, 0xf9, 0x0c, 0x07, - 0xe0, 0xc7, 0x47, 0x51, 0x65, 0x4e, 0x51, 0x00, 0x70, 0xef, 0xe5, 0xd3, - 0x0b, 0x66, 0xd8, 0x8b, 0x9b, 0xb3, 0x79, 0x4f, 0x7f, 0x71, 0x32, 0x2d, - 0x49, 0xa2, 0x70, 0x13, 0x2e, 0x3d, 0xfa, 0xba, 0xaa, 0x66, 0xe7, 0x86, - 0x4e, 0x8b, 0xbb, 0x73, 0xc4, 0x71, 0x3a, 0x73, 0xe2, 0xcc, 0xf1, 0x0b, - 0x5c, 0x29, 0xe2, 0x20, 0xf3, 0x19, 0x0c, 0x09, 0xf9, 0xdd, 0x24, 0x27, - 0xab, 0x71, 0xd7, 0xb0, 0xea, 0xd8, 0x4b, 0x6f, 0x9d, 0x84, 0xb1, 0xa0, - 0x90, 0x74, 0x2e, 0xd1, 0x30, 0x3b, 0x14, 0xea, 0x92, 0x5f, 0xfc, 0x04, - 0xc2, 0x06, 0xe9, 0x3e, 0x86, 0x35, 0xa3, 0x84, 0xa7, 0x78, 0xed, 0x22, - 0xea, 0x05, 0x14, 0x08, 0xff, 0x88, 0x89, 0xf8, 0x67, 0x89, 0xfb, 0x13, - 0x08, 0xfb, 0x24, 0x65, 0x39, 0xa5, 0x9f, 0x11, 0x2d, 0xb7, 0x83, 0x35, - 0x15, 0xf1, 0x1d, 0x60, 0xd9, 0xa6, 0xd9, 0xa5, 0x2d, 0xd4, 0x19, 0x93, - 0x5f, 0x57, 0x4d, 0x63, 0x32, 0x38, 0x3c, 0xdd, 0x8b, 0x9b, 0x63, 0xb1, - 0x40, 0x5f, 0x45, 0x2d, 0xa4, 0xc9, 0x97, 0xd6, 0x03, 0x07, 0x2c, 0x70, - 0x7e, 0x58, 0x86, 0x44, 0xd3, 0xab, 0x9d, 0x56, 0x0a, 0x3b, 0x76, 0x93, - 0x14, 0x30, 0xca, 0x1e, 0xc6, 0x66, 0x85, 0xea, 0x26, 0x36, 0x35, 0x78, - 0xcc, 0x71, 0x80, 0x90, 0x53, 0x73, 0x75, 0xc7, 0x66, 0xd9, 0x20, 0x92, - 0x40, 0xc4, 0xcd, 0x9b, 0x14, 0xe2, 0x6c, 0xf7, 0x6f, 0xa1, 0x3c, 0x31, - 0x25, 0x13, 0xcf, 0xbb, 0xf8, 0xf9, 0x04, 0xef, 0x83, 0x91, 0x62, 0x99, - 0x90, 0x76, 0x7c, 0x87, 0x1b, 0x30, 0x2e, 0xf2, 0xf9, 0xcc, 0x66, 0x81, - 0xa3, 0xcf, 0xb4, 0x63, 0x74, 0x7a, 0x4b, 0x13, 0xdb, 0x82, 0x32, 0xf1, - 0x9c, 0x05, 0xc7, 0x10, 0xae, 0x8a, 0x79, 0x87, 0xaa, 0x61, 0xc7, 0xe8, - 0x4a, 0xaa, 0x27, 0xc3, 0xbb, 0x89, 0xc4, 0x67, 0x14, 0xa3, 0x00, 0xea, - 0x09, 0x38, 0xbe, 0xcf, 0x2d, 0x37, 0xc5, 0xb0, 0x67, 0xe5, 0xa5, 0x4a, - 0x9a, 0xf8, 0x00, 0x0e, 0x0a, 0xf8, 0xfa, 0x15, 0xe6, 0x3a, 0xa6, 0x59, - 0xbb, 0x0b, 0xcc, 0x26, 0xc8, 0x94, 0x95, 0x93, 0x5a, 0x23, 0x10, 0x44, - 0x94, 0x83, 0x0b, 0x29, 0xfc, 0x4a, 0xbe, 0x2d, 0xe3, 0x22, 0x18, 0xba, - 0xe6, 0xb8, 0xda, 0x87, 0x23, 0x3d, 0x76, 0x2d, 0x0f, 0x4d, 0x6b, 0x85, - 0x73, 0x7d, 0xd0, 0x49, 0xb0, 0x4a, 0x2c, 0x11, 0x19, 0xc4, 0xee, 0xf1, - 0xd1, 0xd1, 0xfe, 0xee, 0x99, 0x66, 0x2d, 0x06, 0x47, 0xa7, 0x05, 0xac, - 0xe9, 0x0a, 0x82, 0xef, 0x9c, 0xaa, 0xd6, 0x24, 0x8f, 0xc3, 0xf8, 0x22, - 0xbd, 0x2f, 0x26, 0x77, 0x51, 0x10, 0xa4, 0xae, 0xe9, 0x5b, 0x73, 0xab, - 0x8c, 0x3c, 0x0d, 0x1c, 0x94, 0x46, 0x90, 0x5d, 0x0b, 0x77, 0xb1, 0xd2, - 0xce, 0x97, 0x24, 0x80, 0xde, 0x8a, 0x80, 0x64, 0xe7, 0xe9, 0xcc, 0x39, - 0x6d, 0x07, 0x27, 0x10, 0x82, 0x84, 0x45, 0x1f, 0xf8, 0xee, 0x24, 0xd4, - 0x32, 0x07, 0x3b, 0x45, 0x95, 0xcf, 0x8e, 0x15, 0xbe, 0xa4, 0xa2, 0xb6, - 0xe4, 0x46, 0xad, 0xd5, 0xad, 0xe9, 0x0b, 0x83, 0x60, 0xb7, 0xea, 0xc1, - 0xc9, 0xd7, 0x8d, 0xa8, 0xcd, 0x49, 0xe7, 0x7a, 0x59, 0x5a, 0x66, 0x80, - 0xd2, 0x8f, 0xcc, 0x80, 0xc6, 0x8b, 0x5f, 0x59, 0xc3, 0x12, 0x8c, 0xdb, - 0xd5, 0x99, 0x65, 0x5c, 0x1d, 0x33, 0xd0, 0x31, 0x7b, 0x1d, 0x33, 0x6a, - 0x56, 0xcd, 0x66, 0x80, 0xdb, 0xcf, 0x3f, 0xb8, 0xf0, 0x6a, 0xd8, 0x31, - 0x33, 0x6b, 0xe6, 0xf7, 0x1d, 0x4b, 0xc7, 0x89, 0xb2, 0x35, 0x39, 0x68, - 0x2d, 0x40, 0x05, 0x66, 0x82, 0xe7, 0x8e, 0xcc, 0x7a, 0xa4, 0xf3, 0xe5, - 0x8c, 0x2d, 0x47, 0x6a, 0x2d, 0x6d, 0xfc, 0x1a, 0x0f, 0xcb, 0x88, 0x9b, - 0x8b, 0x47, 0xa1, 0x69, 0x58, 0x03, 0x71, 0x4f, 0x4b, 0x79, 0xe2, 0x16, - 0xe1, 0xb5, 0x43, 0x5e, 0x75, 0x24, 0x5b, 0x5f, 0x78, 0x75, 0xa4, 0xd7, - 0xe8, 0xfe, 0x52, 0x5a, 0x50, 0xb8, 0xc5, 0x55, 0xa1, 0xad, 0x2b, 0xed, - 0xaa, 0x60, 0x1e, 0x46, 0x72, 0x13, 0xe9, 0x2f, 0x08, 0x37, 0xcf, 0x6b, - 0xe1, 0x5e, 0xa5, 0x1d, 0x7b, 0x13, 0x62, 0x55, 0xd0, 0xa3, 0x9a, 0x69, - 0x94, 0x55, 0xf1, 0x5e, 0x78, 0xb7, 0xbb, 0x4f, 0x16, 0x1d, 0x97, 0x33, - 0x9b, 0x77, 0x56, 0x20, 0xa9, 0x2c, 0xc6, 0x5d, 0x80, 0xc8, 0xf7, 0x18, - 0x2b, 0xce, 0x12, 0x46, 0x21, 0x14, 0xdd, 0xb5, 0xa1, 0x6e, 0xdd, 0xa2, - 0x03, 0xd8, 0xaf, 0xaa, 0x79, 0x29, 0xc1, 0x2c, 0x07, 0x43, 0x54, 0x4f, - 0xb1, 0x9e, 0x10, 0x27, 0x17, 0x3b, 0x3c, 0x68, 0x71, 0x73, 0x86, 0x34, - 0xd7, 0x5b, 0x36, 0x41, 0x46, 0x57, 0xba, 0xa4, 0x69, 0xbf, 0x24, 0xf6, - 0x0d, 0xaa, 0x02, 0x19, 0x31, 0x2c, 0x69, 0xde, 0xf3, 0x80, 0x2c, 0x79, - 0x78, 0x44, 0xa4, 0x48, 0x38, 0x87, 0xd2, 0x85, 0x4f, 0x52, 0x9b, 0x09, - 0xe2, 0x33, 0x50, 0xcd, 0xe3, 0xeb, 0xfc, 0x86, 0x12, 0x81, 0xba, 0x6f, - 0x32, 0x85, 0x5b, 0x67, 0xc3, 0x22, 0x0a, 0x57, 0x11, 0xe2, 0xfe, 0x7d, - 0x4b, 0x8a, 0x9c, 0xa3, 0xaf, 0x1f, 0xb2, 0x6e, 0x21, 0x15, 0x03, 0x2f, - 0xa2, 0xf3, 0xb2, 0x9c, 0xc0, 0xe5, 0x92, 0x5e, 0xdd, 0x99, 0x45, 0x2c, - 0x8d, 0x18, 0xd5, 0x2d, 0x27, 0xd1, 0x73, 0x32, 0x57, 0xc7, 0xf5, 0xfd, - 0xb8, 0x44, 0x3f, 0xd9, 0x2c, 0xb1, 0x0c, 0xa1, 0x8b, 0x73, 0x83, 0xba, - 0x82, 0xdd, 0xdb, 0x84, 0x3a, 0xbe, 0x69, 0x55, 0x21, 0x1c, 0x44, 0x4f, - 0xd9, 0x99, 0xd8, 0xb9, 0x70, 0xb5, 0x96, 0xa0, 0x11, 0x9b, 0x45, 0x5a, - 0xe7, 0x71, 0x9b, 0x21, 0x1e, 0x27, 0xf4, 0x72, 0x4e, 0x31, 0xde, 0x98, - 0xa7, 0x60, 0x6e, 0x0f, 0x66, 0xa4, 0x74, 0x32, 0xa0, 0x51, 0x3c, 0xce, - 0x62, 0x91, 0xec, 0x1f, 0x82, 0xce, 0x00, 0x57, 0x41, 0xc7, 0x54, 0xc5, - 0xb2, 0x41, 0x14, 0xe8, 0x10, 0xe7, 0x4a, 0xce, 0xc5, 0xdb, 0xc0, 0xfb, - 0x72, 0xdb, 0xc7, 0x1f, 0xca, 0xa8, 0xcd, 0x5f, 0xea, 0x5c, 0x0b, 0xab, - 0x0c, 0x2c, 0xa2, 0x41, 0xda, 0x36, 0xe2, 0x2c, 0xbe, 0x84, 0x08, 0x3f, - 0x8c, 0x45, 0x8f, 0x69, 0x62, 0x5d, 0x62, 0x39, 0xde, 0xe6, 0x98, 0xa0, - 0x8c, 0xee, 0x8b, 0x31, 0x5c, 0xa5, 0xa0, 0x26, 0x7a, 0x6b, 0x04, 0x09, - 0x53, 0x35, 0xc2, 0x8f, 0x4e, 0xe9, 0xbb, 0x97, 0x2a, 0x44, 0x6a, 0x12, - 0xab, 0x28, 0xe6, 0x0f, 0xa0, 0xd4, 0xad, 0xe0, 0xc6, 0x80, 0x0a, 0xa4, - 0xe2, 0xc3, 0x99, 0xd5, 0x8a, 0x7c, 0x21, 0xe2, 0xd7, 0xdc, 0xbd, 0x6d, - 0xe2, 0x42, 0x58, 0x22, 0xe0, 0x51, 0x89, 0x48, 0x70, 0x46, 0x56, 0x0c, - 0x1c, 0x56, 0x9b, 0x4c, 0xa0, 0xc3, 0xfa, 0x55, 0x12, 0x81, 0xb0, 0x79, - 0x16, 0xa5, 0x7f, 0x0f, 0x31, 0x5a, 0x39, 0xd0, 0x0a, 0xb8, 0x80, 0xd0, - 0x10, 0x07, 0xbe, 0xf8, 0x4c, 0x41, 0xab, 0xb0, 0xef, 0x00, 0x1c, 0x06, - 0xc3, 0x5c, 0xb9, 0xf4, 0x01, 0x44, 0xc8, 0x5f, 0xaf, 0x40, 0x8a, 0x11, - 0x45, 0xe1, 0x4a, 0x3e, 0x96, 0x38, 0xd0, 0x57, 0xef, 0x73, 0xa1, 0xc0, - 0x4c, 0x5c, 0x01, 0x97, 0x30, 0xa5, 0x3a, 0x0f, 0x76, 0x99, 0x7e, 0x4b, - 0xce, 0x47, 0x66, 0xf8, 0x08, 0x9a, 0xc9, 0x21, 0x96, 0x79, 0x05, 0x06, - 0x9c, 0x78, 0x6a, 0x16, 0x06, 0x79, 0x99, 0x93, 0x06, 0x83, 0x37, 0x85, - 0x3c, 0xdf, 0x29, 0x41, 0x0b, 0x7a, 0x01, 0x5a, 0xa3, 0x4d, 0x4f, 0xb2, - 0xe3, 0x80, 0x32, 0xf9, 0x84, 0x6c, 0xb6, 0xb2, 0x0b, 0xf7, 0xbc, 0xf5, - 0x0b, 0x30, 0x43, 0x63, 0x6c, 0x2e, 0x95, 0x09, 0x63, 0x9d, 0x2f, 0x38, - 0x2d, 0xc1, 0x41, 0xa1, 0x69, 0xd1, 0xac, 0x9a, 0x93, 0x92, 0xe2, 0x55, - 0x3a, 0x23, 0x6c, 0xb2, 0x63, 0x1c, 0xad, 0x3d, 0xaa, 0x0f, 0x68, 0x41, - 0x8f, 0x76, 0x19, 0xd5, 0xad, 0xd8, 0x4d, 0x79, 0x2e, 0xa3, 0x0d, 0x77, - 0xcd, 0xb0, 0xa7, 0x51, 0x70, 0x0f, 0xd1, 0xc3, 0xde, 0xec, 0x5e, 0x10, - 0x47, 0xff, 0x6b, 0xf7, 0xd0, 0x5c, 0x96, 0x23, 0x4b, 0x9b, 0x30, 0xad, - 0x18, 0x12, 0x78, 0xc6, 0x76, 0xbb, 0xe8, 0x19, 0xc7, 0x96, 0x67, 0x2e, - 0xc3, 0x72, 0x5e, 0x50, 0x98, 0x7c, 0xb7, 0x00, 0x26, 0xae, 0x76, 0x6d, - 0x6f, 0x10, 0xbd, 0xc1, 0x45, 0x9a, 0x61, 0xf8, 0x25, 0x44, 0x33, 0xb7, - 0x8c, 0x4a, 0x57, 0xdb, 0x1d, 0x15, 0x7f, 0xd9, 0x1c, 0x93, 0x1d, 0xd4, - 0x03, 0x47, 0x45, 0xed, 0xdd, 0x67, 0x4c, 0x0f, 0x17, 0x54, 0x1a, 0x92, - 0x4a, 0x53, 0x36, 0xa9, 0x09, 0x1f, 0xf7, 0xba, 0xbd, 0x17, 0xcb, 0x26, - 0x35, 0xf1, 0xa3, 0x9b, 0x91, 0x39, 0xb2, 0xc9, 0x92, 0xef, 0xc3, 0x37, - 0x14, 0xa4, 0x1f, 0xdf, 0x12, 0xb0, 0x11, 0xfa, 0x1e, 0x52, 0x38, 0x66, - 0x19, 0x65, 0xe5, 0x37, 0x83, 0x33, 0xd4, 0x95, 0xdc, 0xd1, 0x79, 0xc0, - 0xb9, 0xcc, 0x22, 0xa5, 0xcb, 0x4a, 0xb7, 0x42, 0xc2, 0x36, 0xc7, 0x71, - 0x7c, 0xc7, 0x91, 0x49, 0x15, 0xb0, 0xda, 0x19, 0x65, 0x3f, 0x79, 0x87, - 0x1e, 0x68, 0x3d, 0xe5, 0xea, 0xe0, 0x2a, 0x8d, 0xdc, 0x66, 0xb4, 0x19, - 0x50, 0x01, 0x39, 0x18, 0x85, 0xbe, 0x21, 0x8c, 0xae, 0x0e, 0x43, 0x0e, - 0xd5, 0xf5, 0x88, 0xba, 0x57, 0x09, 0xae, 0xb8, 0xf3, 0x78, 0x36, 0xe3, - 0x4b, 0xbc, 0x9b, 0x52, 0xe1, 0x05, 0x04, 0x47, 0x21, 0xe2, 0x2f, 0x7b, - 0x04, 0x41, 0x95, 0x7f, 0xb1, 0xa0, 0x56, 0xa8, 0x90, 0x41, 0x35, 0xd1, - 0x4e, 0x4a, 0x9d, 0x44, 0x42, 0xee, 0x4f, 0x86, 0xc3, 0xf7, 0x4f, 0x92, - 0xea, 0x52, 0xa4, 0x89, 0x27, 0x16, 0xef, 0x44, 0xad, 0xcb, 0x1d, 0xcd, - 0xa1, 0x3c, 0x03, 0xc8, 0x92, 0x48, 0xb3, 0x1a, 0xb7, 0x33, 0x08, 0x4e, - 0xb9, 0x6e, 0x43, 0xfb, 0x8d, 0x27, 0x85, 0x96, 0x84, 0xdd, 0x13, 0x99, - 0x4b, 0xc3, 0x3e, 0x8e, 0x43, 0x5c, 0xa1, 0x24, 0xf4, 0xdb, 0xbb, 0xd5, - 0xee, 0xe3, 0xd7, 0x31, 0x15, 0xb0, 0x02, 0x4f, 0xcc, 0x58, 0xe7, 0xb3, - 0x7b, 0xf0, 0x99, 0x7b, 0xcf, 0xf4, 0xde, 0x13, 0x75, 0xd2, 0x04, 0x30, - 0xfc, 0xa0, 0x7b, 0xc0, 0x33, 0x30, 0x7d, 0x92, 0xd4, 0xf6, 0x9f, 0xa1, - 0x37, 0x76, 0xf0, 0xa8, 0xe8, 0x08, 0x63, 0xc6, 0x80, 0x1b, 0x8a, 0xdd, - 0xc4, 0x1c, 0xaf, 0xb1, 0x1f, 0xb1, 0x1d, 0xbc, 0x89, 0x25, 0xbe, 0x9d, - 0x52, 0x5b, 0x92, 0xbe, 0x36, 0xca, 0x4e, 0x5d, 0xc9, 0xa0, 0x1b, 0xe7, - 0x9d, 0xa3, 0x8b, 0x6d, 0xe6, 0xb8, 0x1b, 0x4e, 0x74, 0x29, 0xf4, 0xe3, - 0xe0, 0x63, 0x06, 0xf0, 0x0b, 0x3c, 0x9f, 0x8c, 0x11, 0x55, 0x09, 0x0e, - 0xf6, 0x2b, 0xa4, 0x5b, 0xb4, 0xec, 0x85, 0x28, 0x77, 0x9d, 0x8b, 0x0d, - 0x39, 0x18, 0x93, 0x89, 0x2a, 0x83, 0x9d, 0xf7, 0x86, 0xb9, 0x73, 0x66, - 0xa5, 0x93, 0xfd, 0x87, 0x64, 0x42, 0x64, 0xda, 0x93, 0x83, 0xd1, 0x8b, - 0xee, 0x4d, 0x0a, 0x1c, 0xe2, 0x42, 0x4b, 0x5b, 0x2b, 0xa8, 0x71, 0x95, - 0x66, 0x88, 0x59, 0x07, 0x3f, 0xc6, 0x6c, 0x4c, 0xbd, 0x89, 0xcb, 0xae, - 0xd1, 0xa1, 0xcd, 0x68, 0xd0, 0x5c, 0x05, 0x37, 0x49, 0x9a, 0xaf, 0x7d, - 0xcc, 0xb2, 0xba, 0xd7, 0x9d, 0x0b, 0x35, 0xae, 0xb0, 0xca, 0xa0, 0xb8, - 0x78, 0x9c, 0xc5, 0x2a, 0xc3, 0xcb, 0x8f, 0xe3, 0xf8, 0x8f, 0x1f, 0x86, - 0x82, 0xe2, 0xa4, 0x2a, 0x44, 0x89, 0x10, 0x93, 0xe8, 0xa0, 0x41, 0xe1, - 0x5d, 0xcd, 0xd5, 0x0f, 0x36, 0x45, 0x96, 0x61, 0x31, 0xa0, 0x4a, 0xf8, - 0x8e, 0x98, 0xd9, 0xd0, 0x0e, 0xbb, 0xb8, 0x39, 0xc8, 0xb5, 0xa4, 0x6b, - 0xd0, 0x68, 0x5f, 0x40, 0xf2, 0x14, 0x07, 0xc7, 0x62, 0x52, 0x78, 0x2d, - 0x59, 0xc6, 0xae, 0x8b, 0xdc, 0xfe, 0x8a, 0x49, 0x21, 0x14, 0x8a, 0x20, - 0xc2, 0xb4, 0xec, 0xfb, 0xec, 0x2e, 0x28, 0x9b, 0x81, 0x43, 0xd4, 0x48, - 0xb2, 0x17, 0x2d, 0xd2, 0x6a, 0xb3, 0x80, 0xf0, 0xdc, 0x54, 0xfd, 0x82, - 0x46, 0x2e, 0x48, 0x64, 0x76, 0x74, 0xd2, 0x33, 0xc5, 0x0c, 0x56, 0x54, - 0x72, 0xa7, 0xa4, 0x8c, 0xe3, 0x46, 0x91, 0x1e, 0xee, 0xeb, 0x3c, 0xd9, - 0x1e, 0x3c, 0x6b, 0xe9, 0x9d, 0x6a, 0x09, 0x58, 0x27, 0x3d, 0x7c, 0x74, - 0x4b, 0x0a, 0x2f, 0x9a, 0x58, 0xa7, 0x5d, 0xba, 0xbd, 0x5b, 0xc5, 0x95, - 0xe2, 0x8d, 0xb3, 0x9f, 0xb1, 0xf3, 0x85, 0xbd, 0xff, 0xfa, 0x49, 0x73, - 0xce, 0xb6, 0x4c, 0x5a, 0x3e, 0xba, 0xf3, 0xfe, 0x1d, 0x97, 0x1c, 0x65, - 0x01, 0xc7, 0xaf, 0x0b, 0x1f, 0xbf, 0xc7, 0x92, 0x8b, 0x73, 0x48, 0x96, - 0x1c, 0x3f, 0xd7, 0xcd, 0x40, 0xe1, 0xae, 0x0f, 0x3a, 0xc2, 0x5c, 0xb2, - 0xbc, 0x66, 0x52, 0x42, 0xed, 0x41, 0x02, 0xe1, 0x28, 0x20, 0x54, 0xda, - 0x66, 0xea, 0xee, 0x98, 0x85, 0x59, 0x6d, 0x34, 0xe7, 0xf4, 0x64, 0x03, - 0xe8, 0xad, 0xc7, 0xa5, 0x45, 0xc8, 0x76, 0xba, 0xeb, 0x92, 0xda, 0xd1, - 0xb4, 0x3d, 0xb8, 0xd7, 0xce, 0x60, 0x58, 0x84, 0x5d, 0x22, 0xfc, 0xf8, - 0x1d, 0x76, 0x86, 0x0b, 0x11, 0x48, 0xb7, 0xb6, 0x1e, 0x43, 0xf4, 0x3d, - 0x38, 0xc0, 0x95, 0x51, 0x9c, 0x29, 0x78, 0x8e, 0x43, 0xda, 0xf5, 0xf3, - 0xf7, 0x38, 0x8a, 0xdf, 0xf2, 0x2c, 0x49, 0x47, 0x3a, 0x77, 0xf8, 0x18, - 0xa5, 0xa3, 0xef, 0x74, 0x14, 0x13, 0x87, 0xf9, 0xe2, 0xdc, 0x1b, 0xcc, - 0x17, 0x13, 0xae, 0xc5, 0xa0, 0x17, 0xad, 0xc0, 0x75, 0xb0, 0xaa, 0x0b, - 0xd1, 0x2d, 0xc3, 0x07, 0xee, 0x81, 0x05, 0x43, 0xb1, 0x9c, 0x38, 0xc8, - 0x88, 0xed, 0x38, 0x64, 0x20, 0x76, 0x5d, 0x7e, 0xeb, 0xa1, 0x58, 0x6e, - 0xdc, 0xc6, 0x9c, 0x5b, 0x97, 0xa6, 0xcb, 0xb6, 0xd2, 0x7e, 0x45, 0x2e, - 0x18, 0x8f, 0xe5, 0xd7, 0x6d, 0xec, 0xfa, 0xbb, 0xed, 0x92, 0x65, 0xde, - 0x41, 0xde, 0xfd, 0x5d, 0x77, 0x49, 0x19, 0xba, 0xe5, 0xe7, 0x75, 0x76, - 0xfe, 0x5b, 0xac, 0xca, 0xc1, 0x55, 0x37, 0x7f, 0xef, 0x36, 0xa8, 0x39, - 0x56, 0x76, 0xc3, 0xde, 0x5b, 0xb8, 0xbb, 0xb0, 0xf7, 0xee, 0xe8, 0x51, - 0xcb, 0xfb, 0x1f, 0xc0, 0xde, 0x13, 0x87, 0xbf, 0x33, 0x5d, 0xc3, 0xc7, - 0x1a, 0x97, 0xfb, 0x6e, 0x74, 0x64, 0x79, 0x7e, 0x83, 0xe5, 0xb7, 0x0d, - 0xe4, 0xf7, 0xa3, 0x23, 0xcb, 0xf0, 0xdb, 0xf8, 0xff, 0xf7, 0x3d, 0xed, - 0xf6, 0x4a, 0x68, 0xbb, 0x11, 0xbe, 0xd3, 0x2e, 0x19, 0x22, 0xf3, 0x84, - 0xfc, 0x34, 0x1b, 0x25, 0xb7, 0xb5, 0x63, 0xe6, 0x94, 0xaa, 0x04, 0xc4, - 0x4a, 0x7c, 0xa0, 0xf3, 0x72, 0xfa, 0x98, 0x61, 0x65, 0x33, 0x2a, 0x3b, - 0x59, 0x22, 0x8c, 0x4d, 0x62, 0x13, 0x06, 0x6a, 0x9d, 0xc4, 0xf7, 0xf0, - 0x2c, 0xe7, 0x45, 0x3a, 0x36, 0x33, 0x71, 0xda, 0xbc, 0x9f, 0xf2, 0x71, - 0xee, 0xf0, 0xab, 0x36, 0x35, 0x06, 0xb5, 0x20, 0x8b, 0x82, 0x8d, 0x9e, - 0x42, 0x30, 0x2a, 0xf7, 0xbb, 0x24, 0x1e, 0x89, 0xc8, 0x85, 0xd4, 0x26, - 0x2a, 0x46, 0x8c, 0x50, 0x99, 0x9c, 0x2d, 0xc6, 0x8e, 0x66, 0x0c, 0x53, - 0x42, 0x2c, 0xd8, 0x8e, 0x18, 0x9c, 0x16, 0x0f, 0x05, 0x00, 0xdc, 0x37, - 0xac, 0xb9, 0x0f, 0x02, 0x8b, 0xfd, 0x2d, 0x4a, 0xa7, 0xde, 0x44, 0x8f, - 0x1f, 0xfd, 0x5c, 0x73, 0x7b, 0xfe, 0xfb, 0xc7, 0xec, 0xf1, 0xc3, 0x80, - 0x74, 0x6a, 0x98, 0x40, 0x98, 0xf0, 0xa8, 0x35, 0xc5, 0x5c, 0xd0, 0xd8, - 0xdb, 0xb8, 0xaa, 0x8a, 0x20, 0x62, 0x61, 0x19, 0x7f, 0x25, 0x98, 0x30, - 0x8e, 0xed, 0xd0, 0xa0, 0xe6, 0x5e, 0x3d, 0x79, 0x21, 0x99, 0x4c, 0x4a, - 0x8b, 0xfb, 0x5b, 0xe5, 0x5e, 0x08, 0x2b, 0xb8, 0x1f, 0x20, 0xae, 0x1f, - 0xed, 0x65, 0xd3, 0xa4, 0x8a, 0xa9, 0x1a, 0x5e, 0x46, 0x68, 0x0e, 0x23, - 0x49, 0x0e, 0x85, 0x44, 0x86, 0xaa, 0x48, 0x0d, 0xf7, 0x87, 0x80, 0xd6, - 0x68, 0x17, 0x43, 0x36, 0xab, 0xc9, 0x5d, 0x6f, 0x29, 0xcc, 0xfd, 0x81, - 0x55, 0x43, 0x6f, 0x1a, 0xdb, 0x72, 0x3b, 0x1a, 0x0f, 0x88, 0x6e, 0x07, - 0x08, 0x8a, 0x23, 0xad, 0xc1, 0xec, 0x7b, 0x68, 0x53, 0x01, 0x8f, 0x5b, - 0xa8, 0x39, 0x0b, 0x9e, 0x47, 0x61, 0xfb, 0x5e, 0xd3, 0x53, 0x34, 0x0d, - 0xc0, 0x6f, 0xda, 0xea, 0x80, 0xcb, 0x8d, 0x85, 0xb2, 0x1b, 0x19, 0x71, - 0x5d, 0x41, 0x9f, 0x24, 0xb5, 0x56, 0x27, 0x6c, 0x67, 0x0a, 0x79, 0x75, - 0xe6, 0x70, 0x14, 0x54, 0xf5, 0xd0, 0x53, 0x3d, 0xd2, 0xb2, 0x9c, 0x87, - 0x72, 0xd3, 0x9d, 0xfa, 0x24, 0xb4, 0x85, 0xd1, 0xbd, 0xab, 0xb5, 0x43, - 0xe8, 0x44, 0xb3, 0x17, 0x1f, 0xf3, 0x09, 0x1b, 0x7d, 0x68, 0x0a, 0x2e, - 0x8d, 0xa4, 0x4f, 0x64, 0x00, 0xde, 0xb3, 0x07, 0x51, 0xec, 0xa9, 0x13, - 0x8d, 0x4e, 0x16, 0x97, 0xe6, 0x41, 0x0c, 0x95, 0x6c, 0x7f, 0x7b, 0x70, - 0xb8, 0xaf, 0xe1, 0x76, 0xff, 0xfb, 0x64, 0x00, 0x43, 0x29, 0x2e, 0x3d, - 0xd0, 0x14, 0x52, 0xf3, 0x9c, 0x82, 0x56, 0x58, 0xf9, 0xa8, 0x06, 0xd8, - 0xd7, 0x28, 0x74, 0xb4, 0x7f, 0xf4, 0xe9, 0xe0, 0xf4, 0xf8, 0xe8, 0xc3, - 0xfe, 0xd1, 0xd9, 0x92, 0x9b, 0x51, 0x11, 0x44, 0x9a, 0x0d, 0xa5, 0x6b, - 0x61, 0x18, 0x35, 0x47, 0x7b, 0x17, 0x91, 0x21, 0x01, 0xfe, 0x34, 0x70, - 0x9b, 0x73, 0x1e, 0x92, 0xf0, 0x56, 0xd8, 0xb9, 0x19, 0x18, 0xd0, 0x46, - 0x10, 0xb2, 0x3c, 0xa0, 0x80, 0x58, 0x34, 0xf3, 0x63, 0x2e, 0x13, 0x9c, - 0x1b, 0x08, 0xa5, 0x46, 0xbc, 0x29, 0xc3, 0x41, 0xf5, 0x8e, 0x92, 0xf4, - 0x05, 0x1b, 0x9b, 0x5a, 0x1b, 0x84, 0xdd, 0xcc, 0x8f, 0x54, 0x71, 0x27, - 0x6b, 0x85, 0xb8, 0x45, 0xec, 0xe6, 0xeb, 0x84, 0x7c, 0x0b, 0x54, 0x81, - 0x52, 0x6e, 0x12, 0x26, 0x25, 0x37, 0xd5, 0xdf, 0x56, 0xd9, 0xec, 0xdf, - 0xf6, 0xa4, 0x94, 0x86, 0x97, 0x43, 0xe0, 0xcc, 0xe2, 0x1f, 0x12, 0x04, - 0x61, 0x28, 0xe3, 0x9f, 0xaf, 0x40, 0xe4, 0x7d, 0xfd, 0x8f, 0x97, 0x70, - 0x40, 0xfe, 0xe9, 0xa3, 0x27, 0x97, 0xce, 0x40, 0x2c, 0x5a, 0xbe, 0x14, - 0xd2, 0x80, 0x03, 0xad, 0xcb, 0x89, 0x91, 0x59, 0xe7, 0x27, 0xa7, 0xc7, - 0x3f, 0xfc, 0xfd, 0x37, 0xee, 0xc2, 0x49, 0xfb, 0xff, 0x07, 0x20, 0xdb, - 0x48, 0xe3, 0xff, 0xfc, 0x45, 0xbd, 0x2d, 0xec, 0xae, 0xde, 0x7e, 0x8f, - 0x33, 0x18, 0xf9, 0x0d, 0x0f, 0x6e, 0x4a, 0x8a, 0x90, 0xc5, 0xb6, 0xc4, - 0x97, 0xf5, 0x51, 0x5b, 0x60, 0xd9, 0x8c, 0xb3, 0x15, 0x6a, 0x45, 0x77, - 0xfd, 0x44, 0x6f, 0xbc, 0xe5, 0xb1, 0x80, 0x93, 0x05, 0x6a, 0x90, 0xea, - 0x68, 0x50, 0x01, 0x4d, 0x6a, 0xa4, 0x01, 0xfa, 0x8f, 0x2e, 0xc8, 0xce, - 0xe1, 0xe1, 0x2f, 0x5f, 0x05, 0x5e, 0x86, 0xc6, 0x3a, 0xa4, 0xa4, 0x21, - 0x70, 0x6b, 0x7d, 0xf5, 0x60, 0xc8, 0x19, 0x58, 0x04, 0x92, 0x7c, 0x74, - 0xcc, 0xa3, 0x79, 0x15, 0x84, 0x99, 0x35, 0x02, 0x16, 0x0c, 0xac, 0x7c, - 0x42, 0xb8, 0x33, 0xe5, 0xeb, 0x10, 0x7e, 0x2d, 0x3f, 0xc4, 0x99, 0x11, - 0xb8, 0xa0, 0x5c, 0xcc, 0x02, 0xf1, 0x15, 0x73, 0x2d, 0xdd, 0x0e, 0x39, - 0xf6, 0x04, 0x82, 0x83, 0xd9, 0x7a, 0x7e, 0x79, 0x1b, 0xca, 0x5e, 0x04, - 0xa3, 0x6f, 0x91, 0x96, 0x5f, 0x10, 0x8d, 0x12, 0x8e, 0x28, 0x5a, 0xdc, - 0xa5, 0x10, 0x1d, 0x38, 0x44, 0x70, 0x4c, 0x03, 0x2a, 0xd4, 0x6b, 0x2b, - 0x49, 0x78, 0x33, 0xc5, 0xd1, 0x81, 0xc8, 0x14, 0x93, 0x20, 0x05, 0xe1, - 0x41, 0x14, 0xb9, 0x15, 0xd7, 0xea, 0x1a, 0x50, 0x29, 0x15, 0x46, 0x0b, - 0x28, 0xb5, 0x58, 0x5e, 0x3f, 0x90, 0x14, 0xda, 0x93, 0x12, 0x47, 0xf0, - 0x00, 0x75, 0x5d, 0x95, 0xc9, 0xe4, 0x2a, 0x8c, 0x6d, 0xd8, 0x06, 0xde, - 0xcc, 0xe5, 0xe7, 0x4a, 0x81, 0x2c, 0xb4, 0x14, 0x9e, 0x40, 0x99, 0x94, - 0x1b, 0x1f, 0x28, 0xd8, 0x92, 0xa2, 0x4d, 0x47, 0xba, 0xed, 0x45, 0xca, - 0x3e, 0x34, 0xd5, 0xc9, 0x74, 0xcc, 0x78, 0x08, 0xba, 0xb7, 0x7f, 0xf4, - 0xc3, 0xfb, 0xc0, 0x41, 0xe2, 0xd6, 0x6a, 0x15, 0xa0, 0x95, 0xfe, 0x6d, - 0x24, 0x15, 0x27, 0x69, 0xa3, 0x6a, 0xcf, 0xf0, 0x2f, 0xf7, 0x69, 0xce, - 0x96, 0x90, 0x43, 0xba, 0x95, 0x4c, 0x66, 0xd6, 0xa2, 0xb8, 0xa0, 0x39, - 0xec, 0x6c, 0xa8, 0x6a, 0x85, 0x33, 0x70, 0xbf, 0xe5, 0x7b, 0x8c, 0x34, - 0x90, 0x21, 0x61, 0x1e, 0x83, 0xe0, 0x32, 0x2a, 0xc5, 0xec, 0xb6, 0xa7, - 0x03, 0xc5, 0xf4, 0x3c, 0x1a, 0x25, 0x49, 0xe1, 0x44, 0xb3, 0xbe, 0xc8, - 0x12, 0x86, 0x71, 0xc2, 0xcb, 0xc9, 0x3f, 0x0d, 0x5a, 0x44, 0x0b, 0x93, - 0x88, 0x15, 0xee, 0xd4, 0xc9, 0x11, 0x3c, 0x38, 0x31, 0x4b, 0xe0, 0x45, - 0x5b, 0x61, 0xd0, 0x22, 0x82, 0x76, 0x02, 0x37, 0x42, 0x14, 0x27, 0xc5, - 0x97, 0xe1, 0xc3, 0x85, 0x19, 0xab, 0x17, 0x52, 0x5a, 0x47, 0x02, 0x4e, - 0xcd, 0x1d, 0x38, 0xc9, 0x83, 0xa0, 0x04, 0x17, 0x00, 0xa6, 0x62, 0x58, - 0x49, 0x00, 0x36, 0x4a, 0xa2, 0x24, 0x43, 0x37, 0x33, 0x5d, 0x57, 0xbb, - 0x07, 0x7b, 0xa7, 0x70, 0x9c, 0x49, 0x55, 0x20, 0x00, 0x74, 0xca, 0x3b, - 0xf6, 0x2c, 0xaf, 0x54, 0xe8, 0x9d, 0xb8, 0x28, 0xab, 0x50, 0xb6, 0x5e, - 0x76, 0x55, 0x8b, 0x48, 0x5f, 0x16, 0x90, 0xd3, 0x0b, 0x73, 0x8a, 0x96, - 0x31, 0xf9, 0xd0, 0x2b, 0xcf, 0x8c, 0xf1, 0xaa, 0x1c, 0xc4, 0x29, 0x0c, - 0x2f, 0x53, 0x6f, 0xa1, 0x39, 0x52, 0x90, 0x80, 0x52, 0x4b, 0xae, 0x87, - 0x18, 0x51, 0xaa, 0x2b, 0x12, 0xca, 0xf1, 0x9f, 0x22, 0xd6, 0xe7, 0xf2, - 0xb3, 0x17, 0x6b, 0x83, 0x67, 0x5b, 0xdb, 0x83, 0xa7, 0x83, 0xa7, 0x4f, - 0x9e, 0x6d, 0x2d, 0x47, 0x1c, 0xdd, 0x8a, 0xac, 0x82, 0x52, 0x56, 0x74, - 0x49, 0x6a, 0x10, 0xb9, 0xcd, 0x3a, 0x9c, 0xdc, 0x8e, 0x83, 0xa1, 0xb1, - 0x73, 0x72, 0xb2, 0xb7, 0x73, 0xb6, 0x13, 0xbd, 0x32, 0xd4, 0xfb, 0xda, - 0x2f, 0x98, 0xa4, 0x95, 0x17, 0xeb, 0xc1, 0xb9, 0x02, 0xf1, 0x4f, 0xa5, - 0x03, 0x8a, 0x3b, 0xae, 0x0a, 0x77, 0x95, 0x32, 0x72, 0x38, 0x60, 0x74, - 0x7b, 0x86, 0x7b, 0x3a, 0x1f, 0x79, 0x71, 0x27, 0xd2, 0x35, 0x24, 0x97, - 0x4f, 0xa1, 0x9a, 0x09, 0x3c, 0x6c, 0x1b, 0x47, 0xf4, 0x56, 0x33, 0xa7, - 0x79, 0x56, 0x63, 0xfe, 0xbb, 0xc7, 0x87, 0x1f, 0x3f, 0x1c, 0x0d, 0xa3, - 0x57, 0x50, 0xfc, 0x13, 0x3d, 0xba, 0x37, 0xe9, 0xa8, 0xba, 0x7e, 0xed, - 0xab, 0x78, 0x88, 0x2b, 0x5f, 0xd5, 0x4a, 0x3f, 0xd8, 0x5d, 0x54, 0xb8, - 0xbe, 0xd2, 0x2d, 0x54, 0x80, 0xe7, 0x09, 0xda, 0xf5, 0xd9, 0x28, 0xe4, - 0x9b, 0x42, 0x47, 0x52, 0x65, 0x15, 0xa7, 0x17, 0x4f, 0x18, 0xe7, 0xec, - 0x2b, 0xf2, 0xc2, 0x31, 0x2c, 0x7e, 0xff, 0x22, 0x76, 0x6d, 0x4c, 0x68, - 0x0a, 0x0b, 0x42, 0xde, 0x93, 0x3e, 0x85, 0x80, 0x9d, 0xb8, 0x68, 0xe3, - 0x39, 0x15, 0xa3, 0x02, 0x8a, 0x22, 0x02, 0x26, 0x84, 0xcf, 0x9b, 0xd8, - 0xcd, 0x3e, 0xda, 0x35, 0x07, 0xfd, 0x7c, 0x77, 0xe7, 0xfc, 0xcd, 0xc7, - 0xa3, 0xbd, 0xc3, 0xfd, 0xe8, 0x55, 0xa8, 0xf2, 0x87, 0x4c, 0x9e, 0x4a, - 0x0f, 0xb8, 0x93, 0x33, 0x72, 0x70, 0x0c, 0xba, 0x1a, 0xe9, 0xb1, 0x8d, - 0x56, 0xdf, 0x1f, 0x7f, 0xd8, 0x0f, 0x52, 0x80, 0xb6, 0x57, 0xda, 0x74, - 0x3c, 0x07, 0x97, 0x1e, 0xeb, 0x60, 0x5e, 0x27, 0x97, 0x5f, 0x4a, 0x59, - 0x1b, 0x22, 0x05, 0x84, 0x0b, 0x00, 0x62, 0xf0, 0x54, 0x91, 0x92, 0x28, - 0xa3, 0x49, 0x0c, 0xa8, 0x47, 0xf1, 0xc0, 0xe1, 0x66, 0x4b, 0xb3, 0x39, - 0x2d, 0x0e, 0xb6, 0x1e, 0xfd, 0xb0, 0xf7, 0xee, 0x7c, 0xf7, 0xf8, 0xa8, - 0xb9, 0x37, 0x6f, 0x0f, 0xde, 0xe1, 0xd0, 0xeb, 0x93, 0x19, 0x0e, 0x0f, - 0xcf, 0xdf, 0xec, 0xec, 0xfe, 0x75, 0xff, 0x68, 0x2f, 0x7a, 0xe5, 0x00, - 0x93, 0x05, 0xe6, 0xd6, 0x05, 0xed, 0xb8, 0x2c, 0x88, 0x68, 0xcb, 0xbd, - 0x66, 0xf1, 0xfa, 0xb4, 0xb9, 0xb3, 0x84, 0xfa, 0xa5, 0x48, 0x87, 0x6e, - 0x33, 0xd3, 0x1a, 0x40, 0x84, 0x33, 0x24, 0x3e, 0x56, 0x8b, 0x2a, 0xe4, - 0x34, 0x71, 0xd1, 0xb9, 0xf2, 0xca, 0x42, 0xe8, 0x91, 0xd0, 0x35, 0x60, - 0x03, 0x43, 0xa4, 0xf3, 0x48, 0x18, 0xd4, 0x8d, 0xd6, 0xe3, 0x45, 0x5f, - 0xfe, 0xd7, 0xfc, 0x0b, 0x58, 0xbc, 0x86, 0x5a, 0x68, 0x16, 0x9a, 0x0d, - 0x21, 0xb1, 0x4a, 0xbd, 0x08, 0x3b, 0x6b, 0xf7, 0x54, 0x4c, 0x2d, 0xd6, - 0xb9, 0x61, 0x49, 0x77, 0x56, 0x12, 0x30, 0x5a, 0x98, 0x07, 0x91, 0x14, - 0x87, 0x5c, 0xf6, 0x88, 0x56, 0x26, 0x83, 0xa5, 0x0b, 0x6a, 0x05, 0xe6, - 0xdc, 0x77, 0xe6, 0xbc, 0xfa, 0xd2, 0x2c, 0x4a, 0x5c, 0x94, 0xe5, 0xa4, - 0x17, 0x8d, 0xb3, 0x79, 0x35, 0x31, 0xac, 0xca, 0x9c, 0xf4, 0x51, 0xe5, - 0x63, 0x62, 0xe7, 0x86, 0xff, 0xe3, 0x73, 0xc5, 0xbc, 0xc4, 0xe7, 0x4a, - 0xce, 0xac, 0x02, 0x65, 0x11, 0xd2, 0xaa, 0x28, 0x30, 0x07, 0x76, 0xcd, - 0x48, 0xe6, 0xf9, 0xe4, 0xca, 0x3c, 0xac, 0x43, 0xea, 0x3c, 0x21, 0x15, - 0x1b, 0xbc, 0x24, 0x36, 0x0f, 0x59, 0x21, 0x89, 0x5e, 0x35, 0x72, 0xb7, - 0x5c, 0x84, 0x04, 0x9f, 0xa5, 0x50, 0x54, 0xc3, 0x20, 0x3a, 0x04, 0x90, - 0x50, 0xce, 0xb0, 0xce, 0x11, 0x54, 0x4c, 0xd0, 0x60, 0xc5, 0xa9, 0xc9, - 0xba, 0xf0, 0xc0, 0x39, 0xc1, 0xbe, 0x6c, 0xc2, 0x07, 0x47, 0x0e, 0x0a, - 0x19, 0xd6, 0x66, 0x5a, 0x28, 0xc6, 0x2e, 0xf9, 0xdf, 0x0e, 0x8f, 0xdf, - 0xed, 0x1d, 0x9c, 0xe2, 0x14, 0x79, 0xa0, 0xa1, 0xf2, 0xa0, 0x20, 0x08, - 0x87, 0x0e, 0x4d, 0x1d, 0xa2, 0xb2, 0xa7, 0x55, 0x8a, 0x95, 0xbc, 0x99, - 0x9c, 0x5b, 0xb0, 0x91, 0xc8, 0xfc, 0x44, 0x29, 0x88, 0x76, 0x00, 0x0e, - 0x05, 0x19, 0x16, 0x3b, 0x9a, 0x5f, 0x26, 0xd1, 0xbf, 0x10, 0xa5, 0x9b, - 0x23, 0xb0, 0x3d, 0x03, 0xae, 0xbe, 0xda, 0x13, 0xbd, 0x55, 0xd1, 0x5f, - 0x08, 0xdc, 0x76, 0xc4, 0x61, 0x92, 0xb4, 0x8e, 0x16, 0x02, 0x85, 0x82, - 0x8d, 0x42, 0x75, 0x1a, 0xc1, 0x96, 0xbc, 0x62, 0xba, 0xbb, 0x4e, 0x6e, - 0xcd, 0x2d, 0xbd, 0x97, 0x03, 0xc5, 0x27, 0x1a, 0x20, 0x52, 0x26, 0x82, - 0xb0, 0x28, 0x45, 0x92, 0x2e, 0x71, 0xb7, 0x8d, 0x4e, 0x72, 0xed, 0xc5, - 0xaf, 0x20, 0x2a, 0xe4, 0x20, 0xfa, 0x0c, 0x15, 0x07, 0x9d, 0x5a, 0x3f, - 0xe3, 0xea, 0x72, 0xb6, 0x86, 0xf2, 0xc7, 0xbf, 0xe6, 0x46, 0xb0, 0x4f, - 0xa2, 0xbf, 0x7d, 0x3c, 0xd8, 0x0d, 0x80, 0x29, 0x0e, 0xdf, 0xef, 0x1f, - 0x1e, 0x22, 0xcc, 0xca, 0x88, 0x6a, 0x2e, 0x7e, 0xfa, 0x30, 0x8c, 0x02, - 0x6c, 0x77, 0x94, 0x60, 0xa1, 0x41, 0xa3, 0x66, 0x49, 0xed, 0xdd, 0xbd, - 0xdd, 0xc3, 0x08, 0xcb, 0xfe, 0xcd, 0xb3, 0xf4, 0xb6, 0x79, 0x1f, 0x5d, - 0x27, 0x6e, 0xa5, 0x44, 0xe0, 0x9d, 0xbb, 0xfb, 0xa7, 0x67, 0xe7, 0x42, - 0x0b, 0x0f, 0xbb, 0x60, 0xd0, 0x45, 0xd2, 0xb8, 0x60, 0xb4, 0x49, 0xb0, - 0xe5, 0x44, 0xaf, 0xe0, 0x91, 0x5f, 0x7f, 0x6b, 0x99, 0x46, 0xff, 0xba, - 0xff, 0x77, 0x43, 0xb3, 0xd4, 0xa8, 0x6e, 0xf3, 0xeb, 0x30, 0xac, 0x3e, - 0x99, 0x3c, 0xea, 0xa4, 0xd8, 0x20, 0x3e, 0x6d, 0x42, 0x0a, 0xb7, 0x80, - 0x89, 0xb0, 0xf4, 0x31, 0x09, 0x19, 0x78, 0x9e, 0xc0, 0x06, 0xf0, 0x42, - 0xb3, 0xc9, 0x2d, 0x9c, 0xa3, 0xc8, 0xc0, 0x40, 0xb2, 0x39, 0xcc, 0x51, - 0x23, 0x3f, 0x24, 0x97, 0x40, 0x7b, 0x09, 0xf8, 0x1f, 0x74, 0xc9, 0x78, - 0x72, 0xf7, 0x2d, 0x91, 0x24, 0x53, 0x81, 0xd2, 0x87, 0x36, 0x8b, 0x84, - 0x8d, 0xd2, 0xbc, 0xa7, 0x2c, 0x88, 0x7a, 0xe5, 0x20, 0xa0, 0x01, 0x12, - 0xc5, 0x00, 0xc4, 0x51, 0x0a, 0xb3, 0x7f, 0x36, 0xc7, 0x02, 0x5c, 0x06, - 0x5f, 0xd8, 0x2c, 0x7f, 0x53, 0xa7, 0x40, 0x85, 0x42, 0x0a, 0x4c, 0x56, - 0xc8, 0xf0, 0xa5, 0x4d, 0x5a, 0x05, 0xb0, 0xf1, 0x04, 0xf9, 0xe8, 0x9b, - 0x1c, 0x00, 0xe3, 0x9c, 0x4c, 0x56, 0xa4, 0x62, 0xe0, 0x9c, 0xe6, 0x3b, - 0xc7, 0x20, 0x35, 0xdc, 0x3f, 0x35, 0x0a, 0x12, 0xed, 0x54, 0x58, 0xca, - 0xb4, 0x62, 0xe6, 0x03, 0xe4, 0x4c, 0x61, 0xae, 0x9d, 0x52, 0x26, 0x0a, - 0x53, 0x3d, 0x11, 0x36, 0x7b, 0x8e, 0x66, 0x0b, 0x92, 0x26, 0x8a, 0x9a, - 0x2c, 0x6b, 0x46, 0x7e, 0xf0, 0x8a, 0x15, 0xd8, 0xe6, 0xa2, 0x77, 0x21, - 0x95, 0x2f, 0xff, 0x8f, 0x33, 0xaf, 0x1f, 0x77, 0x66, 0x84, 0x6a, 0x00, - 0x1c, 0x63, 0x0f, 0xea, 0x5e, 0xd8, 0xe9, 0x37, 0x59, 0x70, 0xcb, 0xa9, - 0x72, 0xd8, 0xb8, 0x5c, 0xac, 0xf6, 0x5e, 0x71, 0xd7, 0x03, 0x25, 0x22, - 0x59, 0x12, 0xbe, 0x1c, 0xfc, 0x3a, 0x8a, 0x4e, 0x7d, 0x26, 0xbe, 0x28, - 0x04, 0x5d, 0x89, 0x0c, 0x28, 0xe6, 0xff, 0x67, 0xc7, 0x46, 0xa2, 0x36, - 0xff, 0xd8, 0x7f, 0x7b, 0xf0, 0x83, 0x35, 0xb2, 0x9e, 0x59, 0xf3, 0x15, - 0xe1, 0x13, 0x02, 0x34, 0x61, 0x4d, 0xc5, 0xe2, 0x0a, 0x9b, 0x8e, 0x3d, - 0x88, 0x0b, 0x85, 0x21, 0xfb, 0xe1, 0x72, 0x7e, 0xd2, 0x5c, 0x43, 0x4e, - 0xbe, 0xbd, 0xb3, 0x20, 0xa3, 0x76, 0x89, 0x60, 0xfa, 0x50, 0xc2, 0x40, - 0xcd, 0x5c, 0x69, 0xe9, 0x63, 0x63, 0xd5, 0x06, 0x25, 0xa5, 0xac, 0xb4, - 0x68, 0x34, 0x58, 0xe3, 0x97, 0x34, 0xc0, 0xa8, 0x12, 0xcd, 0xc8, 0x02, - 0x4e, 0x82, 0xe8, 0xd5, 0x73, 0x1a, 0x42, 0x3f, 0x1c, 0x82, 0x64, 0x45, - 0x98, 0xd7, 0x47, 0x09, 0x3b, 0x0d, 0x6d, 0x19, 0x23, 0xec, 0xb4, 0x85, - 0xfa, 0xf8, 0xa5, 0x3a, 0x1a, 0x01, 0x87, 0x60, 0x56, 0x1a, 0x9c, 0x23, - 0xa7, 0x48, 0x10, 0x6b, 0xf2, 0xc1, 0x1a, 0x30, 0x54, 0x28, 0x00, 0x6d, - 0xf3, 0xcd, 0xde, 0xb1, 0x57, 0xd9, 0x3c, 0xb2, 0x96, 0x49, 0xdc, 0x49, - 0x00, 0xbe, 0x02, 0xd6, 0xdd, 0xab, 0xb0, 0x2c, 0x96, 0xf9, 0xb6, 0xae, - 0xfd, 0x99, 0x7b, 0x78, 0xcf, 0x00, 0x1c, 0x5a, 0x6e, 0x2c, 0x6a, 0x03, - 0xcc, 0xe5, 0xe6, 0xca, 0x32, 0x9c, 0x39, 0xa1, 0x6c, 0xa9, 0x7e, 0x9f, - 0x5e, 0x6a, 0xb4, 0x11, 0xff, 0xa2, 0x46, 0xe2, 0x7a, 0x2b, 0x9b, 0xbf, - 0xa4, 0x91, 0xcd, 0x46, 0x1b, 0xd7, 0xbf, 0xa8, 0x91, 0xbe, 0x18, 0xcf, - 0x96, 0x96, 0xf6, 0x7f, 0x38, 0x38, 0x33, 0x7a, 0xe8, 0x5e, 0xed, 0xb8, - 0x14, 0xcc, 0x48, 0x40, 0x0e, 0xce, 0x0c, 0xd1, 0x99, 0x57, 0x47, 0xe9, - 0x15, 0x4a, 0x58, 0x15, 0x43, 0x34, 0x81, 0x93, 0xaf, 0x94, 0xa2, 0x11, - 0x29, 0x7c, 0x2e, 0xc8, 0x01, 0x88, 0x5e, 0x1e, 0xa7, 0x78, 0xa7, 0x83, - 0xe7, 0x54, 0x5a, 0x64, 0x50, 0xc2, 0x5d, 0xa1, 0xc2, 0x86, 0xda, 0x62, - 0x46, 0x15, 0x6f, 0xc0, 0x9b, 0xb6, 0x53, 0xd5, 0x42, 0x68, 0xad, 0x51, - 0x02, 0x99, 0x07, 0x78, 0x58, 0xb0, 0xd8, 0x3a, 0x15, 0x84, 0x60, 0x8c, - 0xa7, 0xb2, 0x8e, 0xe4, 0xf5, 0x94, 0xef, 0x55, 0x4a, 0xe3, 0x11, 0xbc, - 0x52, 0xad, 0x48, 0xe4, 0x60, 0x9c, 0xd6, 0x6a, 0xd9, 0xc6, 0x97, 0x66, - 0x2a, 0x23, 0xe6, 0xca, 0xbe, 0xd6, 0xe1, 0x20, 0xc4, 0x39, 0xc7, 0xfd, - 0x99, 0x38, 0xb5, 0x6b, 0x47, 0x0b, 0x0f, 0x15, 0xdf, 0x50, 0x20, 0x59, - 0x8e, 0xb4, 0xd4, 0x0c, 0x3b, 0xbb, 0xca, 0x5a, 0x59, 0x04, 0x4f, 0x72, - 0xd6, 0x26, 0xb4, 0x9f, 0x35, 0xd6, 0x12, 0xe3, 0x74, 0x42, 0x32, 0x39, - 0xe3, 0x19, 0xa5, 0xdf, 0x1c, 0x49, 0x62, 0x5d, 0xad, 0xe3, 0x00, 0xad, - 0x89, 0x09, 0xa2, 0x23, 0xae, 0x1b, 0x79, 0x97, 0x55, 0xf1, 0x2d, 0x4a, - 0xba, 0xc0, 0x51, 0x70, 0xcf, 0x2e, 0x1d, 0x2d, 0x85, 0x6b, 0x5e, 0xed, - 0x48, 0xb5, 0x07, 0x60, 0x4a, 0xe2, 0x36, 0x15, 0xa7, 0xb8, 0x0d, 0x52, - 0x96, 0x5a, 0xad, 0xf5, 0xea, 0x69, 0xfe, 0x79, 0xe6, 0x74, 0x44, 0xe9, - 0x55, 0x6a, 0xbf, 0xe6, 0x14, 0x48, 0x93, 0xdc, 0xc2, 0x3d, 0x93, 0x62, - 0xd6, 0x2d, 0x59, 0x65, 0x11, 0xd4, 0x00, 0xd7, 0x0b, 0xdd, 0x6a, 0x81, - 0x8a, 0x7d, 0x53, 0x85, 0xb3, 0x15, 0x69, 0x67, 0x94, 0xe3, 0x02, 0xf6, - 0xb8, 0x9e, 0x7c, 0x7e, 0x11, 0x43, 0xc5, 0x69, 0x2c, 0x5e, 0x13, 0x67, - 0x64, 0x7a, 0x90, 0x1d, 0xf0, 0x41, 0xca, 0xeb, 0xe5, 0x94, 0x36, 0x59, - 0xf1, 0x56, 0x03, 0x3a, 0x97, 0x6e, 0x70, 0x79, 0x19, 0x99, 0xfc, 0xd8, - 0xdd, 0x94, 0x63, 0x89, 0x4f, 0x79, 0x1a, 0xed, 0x8c, 0xfe, 0x22, 0x94, - 0x8d, 0x74, 0x84, 0x2d, 0xb7, 0x17, 0x7a, 0x51, 0xfa, 0x81, 0x06, 0xdd, - 0x6e, 0xdc, 0x0c, 0x1a, 0xdb, 0xcf, 0x45, 0x72, 0x8f, 0x5e, 0x9e, 0x37, - 0xe9, 0xc5, 0x49, 0xce, 0xc1, 0x6e, 0xf4, 0xc9, 0x6d, 0x76, 0xa5, 0x27, - 0x50, 0xd9, 0x84, 0xdd, 0x1b, 0x45, 0x32, 0x9b, 0xf0, 0x84, 0xf9, 0x1b, - 0xcc, 0x16, 0x45, 0x77, 0x38, 0x19, 0x4a, 0x74, 0x34, 0x46, 0x19, 0x77, - 0x3d, 0x76, 0x2f, 0xb8, 0x5f, 0x73, 0x03, 0x90, 0x7d, 0xd7, 0xd0, 0x47, - 0x96, 0x2a, 0x19, 0x52, 0x63, 0xf4, 0x15, 0xe0, 0x6d, 0x61, 0xd5, 0x69, - 0xf9, 0x2c, 0x6f, 0x84, 0x51, 0x1c, 0x6b, 0x6a, 0x3f, 0xac, 0xd8, 0xbc, - 0xa0, 0x2a, 0x50, 0x56, 0xc9, 0x42, 0x6c, 0xdd, 0x18, 0x31, 0x8f, 0x08, - 0x94, 0xf7, 0xf2, 0x1a, 0x10, 0x2d, 0x3d, 0xd4, 0xa5, 0xfc, 0xaa, 0xe2, - 0xe2, 0xc0, 0x60, 0xb8, 0xa2, 0xe5, 0x41, 0x88, 0x56, 0x12, 0x9f, 0x6d, - 0x83, 0x48, 0xfb, 0xea, 0x1c, 0x47, 0x6c, 0xc7, 0xc8, 0x87, 0x07, 0xb3, - 0xf5, 0xb1, 0x1d, 0xbe, 0xf0, 0x54, 0xd7, 0x01, 0xa7, 0x05, 0x80, 0x52, - 0xb8, 0x17, 0x46, 0x69, 0xba, 0x46, 0x5c, 0xe1, 0x38, 0xad, 0x5c, 0x55, - 0xd8, 0x3a, 0x96, 0x64, 0xa7, 0x40, 0x5e, 0xf5, 0x2a, 0xcf, 0x13, 0xf2, - 0x41, 0x4c, 0x81, 0x2b, 0x04, 0x3d, 0x56, 0x0a, 0xfe, 0x21, 0xdc, 0x9b, - 0x3d, 0x2d, 0x02, 0x48, 0x79, 0xe6, 0x37, 0x82, 0xa9, 0x8a, 0x28, 0x57, - 0x4b, 0xa1, 0x7c, 0xcf, 0xac, 0x2a, 0xf2, 0x89, 0x9b, 0x6c, 0xcf, 0x75, - 0xce, 0xcd, 0x42, 0x3b, 0xf3, 0x79, 0xa6, 0xf3, 0xb9, 0x41, 0x4a, 0x39, - 0xd9, 0x19, 0x0e, 0x85, 0x4e, 0x76, 0x03, 0x24, 0xc1, 0xf9, 0x0b, 0x50, - 0x6e, 0xbb, 0xe4, 0xf2, 0x8e, 0x3e, 0x4f, 0xe5, 0x46, 0x1a, 0x89, 0xc5, - 0xcf, 0x88, 0xd9, 0xed, 0x51, 0x35, 0x39, 0x32, 0x78, 0x73, 0xa4, 0x0e, - 0xae, 0xa7, 0x4c, 0xf9, 0x66, 0xf1, 0x42, 0x2e, 0x05, 0xf3, 0xf6, 0x29, - 0xc3, 0x10, 0x96, 0x19, 0x0b, 0x13, 0x55, 0x9c, 0x66, 0x82, 0x06, 0xfc, - 0xdb, 0x19, 0x70, 0x32, 0x67, 0x20, 0xeb, 0xfe, 0xa4, 0x3f, 0xd1, 0xa4, - 0x7a, 0xbf, 0x6a, 0xd2, 0x9f, 0x02, 0x93, 0xde, 0x68, 0xf4, 0xb5, 0xb6, - 0xf6, 0x9c, 0x61, 0x9e, 0x6b, 0x0b, 0x4c, 0x1c, 0x83, 0x7a, 0xa3, 0x73, - 0x61, 0x1e, 0xec, 0x13, 0x86, 0x8b, 0xdf, 0x97, 0x73, 0x7a, 0x9d, 0xae, - 0x36, 0xb5, 0x2b, 0x06, 0xdc, 0x04, 0xf1, 0x8d, 0x98, 0x8f, 0xcf, 0xfc, - 0xc4, 0xe5, 0x06, 0xce, 0x8a, 0x1b, 0xc0, 0x9f, 0xa8, 0xc2, 0x68, 0x05, - 0x32, 0x0c, 0xa7, 0x9f, 0x2d, 0xf5, 0x76, 0x3f, 0x59, 0x93, 0x44, 0xd6, - 0x1d, 0x64, 0xd2, 0x93, 0x64, 0x8a, 0xa4, 0x49, 0x0a, 0xbe, 0x15, 0x8c, - 0xa9, 0xb8, 0xc8, 0x55, 0x11, 0x4f, 0x61, 0x4b, 0x27, 0xf1, 0x1d, 0x9c, - 0xa9, 0x70, 0x46, 0x38, 0x39, 0x95, 0xcc, 0xf9, 0x1c, 0x27, 0x19, 0x78, - 0x74, 0x50, 0x24, 0x61, 0xc3, 0x22, 0x98, 0x26, 0xc9, 0xa5, 0xa1, 0x61, - 0x50, 0xdc, 0xab, 0x67, 0x49, 0x83, 0xd8, 0x8a, 0xaa, 0x89, 0x3f, 0xd9, - 0x08, 0xb0, 0x90, 0xf9, 0x3c, 0xb7, 0x67, 0xda, 0xdd, 0x0c, 0xd0, 0xc8, - 0xa9, 0x94, 0xb9, 0xbb, 0x7e, 0xc2, 0x51, 0x24, 0x43, 0x88, 0x51, 0xa1, - 0x3c, 0xba, 0xe4, 0x37, 0x6d, 0x2f, 0xc4, 0x90, 0x4f, 0x80, 0xdb, 0xc5, - 0x13, 0x86, 0xe5, 0x3d, 0xc6, 0x70, 0x89, 0x5a, 0x24, 0x20, 0xa1, 0x93, - 0xc7, 0x36, 0x04, 0xaf, 0x4e, 0xba, 0x2f, 0xec, 0x1e, 0xeb, 0x90, 0x24, - 0xd1, 0xfc, 0x09, 0x33, 0xda, 0x4a, 0x6f, 0x1a, 0x89, 0x96, 0x4a, 0xa2, - 0xd3, 0xfd, 0xb3, 0x53, 0x4c, 0xd7, 0x04, 0x16, 0xd0, 0xf7, 0xcd, 0x3e, - 0xab, 0x0a, 0xdf, 0xca, 0xfc, 0xcc, 0x8a, 0x28, 0x96, 0x45, 0x60, 0x49, - 0x64, 0xbb, 0xe3, 0xf4, 0x51, 0xde, 0x53, 0xe8, 0x1c, 0x5a, 0x72, 0x9b, - 0xca, 0xc5, 0x2c, 0x54, 0xe9, 0xc9, 0x62, 0x0f, 0xcc, 0x60, 0x4f, 0x88, - 0x28, 0x19, 0x45, 0x6e, 0xc0, 0x60, 0x23, 0x82, 0x4d, 0x0a, 0x32, 0x8f, - 0xc8, 0x19, 0x04, 0xa9, 0x91, 0x17, 0xa1, 0xdb, 0x58, 0x51, 0x7b, 0x58, - 0x36, 0xe0, 0x41, 0xb8, 0xe8, 0x97, 0xd8, 0xa3, 0xcb, 0x43, 0x2f, 0xb0, - 0x28, 0xe5, 0xc6, 0xd3, 0xa7, 0x3e, 0x40, 0x59, 0x7c, 0x61, 0xd8, 0x2a, - 0x0b, 0x7a, 0x8c, 0x35, 0x4e, 0xa0, 0xa3, 0xb8, 0x5f, 0x28, 0xea, 0x96, - 0xa0, 0xf7, 0xf4, 0xaf, 0x20, 0xde, 0x04, 0x56, 0xcc, 0x57, 0x70, 0xd6, - 0x88, 0xcb, 0x7c, 0x46, 0x54, 0x69, 0x5e, 0xb3, 0x06, 0x73, 0x21, 0xc4, - 0x69, 0x85, 0x19, 0x66, 0xeb, 0x22, 0x5a, 0xeb, 0x28, 0x80, 0xcb, 0x1f, - 0x99, 0xc7, 0xc1, 0xd7, 0x36, 0x83, 0xd4, 0x3b, 0x3c, 0x3b, 0x3e, 0x65, - 0x22, 0xf3, 0x6f, 0x68, 0xcc, 0x56, 0x86, 0x07, 0x54, 0x78, 0xee, 0x05, - 0xea, 0xcb, 0xe3, 0x69, 0x81, 0x76, 0x09, 0x32, 0xc0, 0x2c, 0x96, 0xd3, - 0x2b, 0xf1, 0x80, 0x53, 0x00, 0xc8, 0xe7, 0xb9, 0x7d, 0xe2, 0x0a, 0x1d, - 0x05, 0xc3, 0x79, 0xcb, 0xc9, 0x74, 0x5e, 0xa2, 0x83, 0x76, 0x4c, 0x27, - 0x98, 0x2a, 0x52, 0x00, 0x1d, 0x71, 0x6d, 0x8a, 0x78, 0x22, 0x91, 0x93, - 0x8a, 0xfe, 0xe3, 0xd1, 0x22, 0x1d, 0xa2, 0x63, 0x95, 0xf9, 0x99, 0xc7, - 0x37, 0xab, 0xa8, 0xc3, 0xd7, 0x18, 0xb0, 0x65, 0x1e, 0x4c, 0xcd, 0xe9, - 0x24, 0x0c, 0x81, 0x98, 0x62, 0x16, 0x3c, 0x23, 0x6a, 0x5d, 0x3f, 0x70, - 0xf5, 0x16, 0x2b, 0x82, 0xdb, 0x7b, 0xff, 0xe4, 0xf8, 0xf4, 0x4c, 0x2f, - 0x7d, 0xe8, 0x16, 0xbf, 0x68, 0x9c, 0x1e, 0x80, 0xec, 0x62, 0xb3, 0x0d, - 0xdf, 0x6d, 0xb0, 0xfe, 0x5e, 0xe0, 0x08, 0xab, 0x0b, 0x44, 0xa0, 0xd8, - 0x8e, 0x34, 0xd4, 0x03, 0x53, 0x92, 0x39, 0xd9, 0x64, 0x1e, 0x55, 0x6e, - 0x43, 0xb6, 0x35, 0xbc, 0x6a, 0x52, 0x2f, 0x5e, 0x15, 0xeb, 0x64, 0xda, - 0x2a, 0x57, 0xeb, 0xcf, 0x02, 0xbc, 0x02, 0xae, 0x84, 0xd3, 0xfd, 0xe1, - 0x19, 0x0d, 0x1d, 0xfe, 0xe5, 0x0d, 0x9d, 0x8a, 0xe8, 0xf0, 0x97, 0x9e, - 0x0e, 0xa3, 0x94, 0x01, 0x49, 0x8c, 0x60, 0xae, 0x86, 0xf6, 0xb5, 0xda, - 0x90, 0xb3, 0x62, 0xeb, 0x0e, 0xc6, 0x08, 0xb2, 0x4c, 0xa6, 0x13, 0x3c, - 0xe0, 0xf8, 0xc5, 0x32, 0x77, 0xb2, 0x6c, 0x44, 0x33, 0x3e, 0x10, 0x79, - 0xf1, 0xc5, 0x69, 0x62, 0xc3, 0x61, 0x15, 0x70, 0x55, 0x71, 0x0b, 0x07, - 0x54, 0xc0, 0x69, 0x82, 0x5f, 0xf6, 0x85, 0x56, 0xf0, 0xbe, 0x20, 0xaa, - 0x68, 0x54, 0x4b, 0x5e, 0xdf, 0x54, 0x5f, 0x8d, 0x48, 0x0b, 0xce, 0x58, - 0xe0, 0x6b, 0x49, 0xd3, 0x47, 0x81, 0xa3, 0x41, 0x73, 0xeb, 0x44, 0xea, - 0x6f, 0xe2, 0x91, 0x45, 0x08, 0xa1, 0xb9, 0xd7, 0xae, 0x05, 0xf6, 0x08, - 0xa2, 0x9c, 0x16, 0x17, 0x93, 0x14, 0x62, 0x62, 0x2e, 0x48, 0x73, 0x84, - 0xd7, 0x3c, 0x96, 0x9b, 0xbb, 0x61, 0xb0, 0xeb, 0x7c, 0x05, 0x81, 0xfd, - 0xf1, 0xd2, 0xb9, 0xaa, 0x4d, 0x57, 0x74, 0x86, 0xad, 0xc0, 0x0f, 0x2e, - 0x22, 0xbd, 0x28, 0x06, 0xd1, 0x09, 0x38, 0x84, 0x51, 0x6e, 0x2a, 0xff, - 0x64, 0x9b, 0xa3, 0x63, 0x02, 0xc1, 0x52, 0x8a, 0xbd, 0x9d, 0x66, 0xe0, - 0xb2, 0x81, 0x6f, 0xb0, 0x00, 0x91, 0x55, 0x9b, 0xbd, 0xf9, 0xbe, 0xb0, - 0x2f, 0x97, 0x66, 0x2a, 0x80, 0x37, 0xde, 0x78, 0x64, 0x83, 0x29, 0x4b, - 0x0a, 0x77, 0x2b, 0x77, 0x86, 0xd3, 0xcc, 0x25, 0xec, 0x47, 0xd4, 0x82, - 0x16, 0xf7, 0xae, 0x71, 0x71, 0xa7, 0x29, 0xba, 0x0e, 0x76, 0x78, 0xa9, - 0xa0, 0x16, 0xae, 0x39, 0x35, 0x20, 0xcc, 0x99, 0xb6, 0x32, 0xac, 0x18, - 0xae, 0x48, 0x65, 0x6e, 0xb0, 0x35, 0xae, 0xad, 0x96, 0x24, 0xf6, 0x62, - 0x12, 0xea, 0xa1, 0x7f, 0x1b, 0x44, 0x8b, 0x4a, 0x37, 0x7a, 0x83, 0xd5, - 0x46, 0xc7, 0x08, 0x49, 0x6c, 0x3b, 0xbc, 0x88, 0x31, 0x42, 0x3f, 0x36, - 0xf7, 0xbb, 0xab, 0x00, 0x6c, 0x6c, 0xda, 0xa6, 0xae, 0xa0, 0x1a, 0x81, - 0xb6, 0x65, 0xb9, 0x8f, 0x61, 0x3c, 0x5c, 0xe1, 0x38, 0xd5, 0xc7, 0x6a, - 0x92, 0x85, 0x57, 0x49, 0xa2, 0x7e, 0x73, 0x6c, 0x3c, 0x67, 0xbd, 0x18, - 0x14, 0xe3, 0xec, 0xce, 0x42, 0x97, 0x0d, 0x28, 0x32, 0xda, 0x16, 0x06, - 0xd0, 0x5f, 0xd8, 0xfe, 0x7b, 0xcd, 0x56, 0xa2, 0x69, 0x7c, 0xeb, 0x5d, - 0xf2, 0xd3, 0xf9, 0x94, 0x91, 0x7b, 0x9c, 0x9e, 0xb6, 0xd9, 0xcc, 0x41, - 0x60, 0x53, 0x8a, 0xed, 0xee, 0xc4, 0xe9, 0x81, 0xc1, 0x54, 0x54, 0x6a, - 0x49, 0xa5, 0x1e, 0x31, 0xee, 0x24, 0xea, 0x51, 0x46, 0xdf, 0xf2, 0x1c, - 0xb9, 0x58, 0x71, 0x27, 0x66, 0x89, 0xd7, 0x82, 0xcc, 0x73, 0x7d, 0x12, - 0x36, 0x3c, 0xf0, 0x63, 0xf4, 0x93, 0xd4, 0xc7, 0x0b, 0x38, 0x08, 0x8b, - 0xe4, 0x27, 0x14, 0x26, 0x07, 0x74, 0xdd, 0x10, 0xb2, 0x33, 0xcd, 0x12, - 0x6a, 0xe7, 0x58, 0x86, 0xb7, 0xf1, 0x82, 0xed, 0x65, 0x6c, 0x23, 0x81, - 0xd0, 0xf0, 0x0c, 0x2a, 0xda, 0x37, 0x22, 0x41, 0x37, 0xd7, 0x6c, 0xc6, - 0x0c, 0x5f, 0x8c, 0xca, 0x81, 0x48, 0xca, 0x37, 0xab, 0x0e, 0x65, 0x54, - 0xc6, 0x3d, 0x8e, 0x64, 0x43, 0x0b, 0x1a, 0x72, 0x45, 0xaa, 0x59, 0x8c, - 0x56, 0x88, 0x10, 0xf8, 0xb9, 0xd3, 0xc9, 0xba, 0x65, 0x3a, 0xc5, 0xdd, - 0x0c, 0xb0, 0xfe, 0xb3, 0x31, 0x88, 0xf3, 0x81, 0x43, 0xb0, 0x49, 0x8c, - 0x6e, 0x97, 0x8e, 0x2a, 0xc8, 0x9d, 0xfe, 0x6b, 0xb1, 0xe6, 0x8a, 0x3a, - 0xef, 0x6d, 0xba, 0xd6, 0x00, 0xa3, 0x0d, 0x8c, 0x1c, 0xcf, 0x0b, 0xca, - 0x15, 0xce, 0xb3, 0x5b, 0xfa, 0x2c, 0x86, 0x72, 0x64, 0x9c, 0x22, 0xbf, - 0xe0, 0x8d, 0x6d, 0x09, 0xf5, 0x26, 0xb9, 0x5e, 0x9c, 0x31, 0x24, 0xa5, - 0x38, 0x98, 0x3e, 0x2a, 0xdb, 0x6d, 0xbe, 0x68, 0x58, 0x5a, 0xe0, 0xb6, - 0xb1, 0xb4, 0x84, 0x93, 0x4a, 0x67, 0xd7, 0xee, 0x79, 0xda, 0xa2, 0x8b, - 0xf5, 0xa4, 0x09, 0x13, 0x64, 0x4b, 0x06, 0x38, 0x95, 0xb2, 0xe4, 0x74, - 0x12, 0xb5, 0xee, 0xee, 0x44, 0x6d, 0xa8, 0x87, 0x48, 0x9e, 0x4e, 0x27, - 0xcf, 0x98, 0xcc, 0xcd, 0x94, 0xf3, 0x71, 0x96, 0x7e, 0x4b, 0x1c, 0x18, - 0x06, 0x2c, 0xf7, 0x5e, 0x13, 0x6e, 0xb6, 0xd6, 0x99, 0x8e, 0x6e, 0x53, - 0x38, 0x34, 0x14, 0x51, 0x0f, 0x20, 0x55, 0x10, 0xf7, 0x9c, 0xd4, 0xca, - 0x52, 0x71, 0x55, 0xf9, 0x53, 0x15, 0x58, 0xe1, 0x36, 0x84, 0x79, 0x4e, - 0xa0, 0xf6, 0xa4, 0xc7, 0x38, 0xb7, 0xf8, 0x26, 0xe2, 0x9d, 0x42, 0x1f, - 0x2f, 0x48, 0x7f, 0xcc, 0x33, 0x21, 0x8e, 0xb6, 0x48, 0x6e, 0xc8, 0x73, - 0x14, 0xfb, 0xe2, 0xcf, 0xd6, 0x56, 0xab, 0xb5, 0x10, 0x3b, 0xdd, 0x47, - 0x52, 0x71, 0x9e, 0x7f, 0x6e, 0x09, 0x9d, 0x92, 0x31, 0xc9, 0x7b, 0xa8, - 0xf9, 0x8f, 0x3d, 0xc7, 0x28, 0xa0, 0x1c, 0x9a, 0xec, 0x1a, 0x5c, 0x94, - 0x01, 0x0e, 0xa5, 0x17, 0x09, 0x21, 0xdd, 0x4f, 0xf2, 0x71, 0xe4, 0xd6, - 0x76, 0xdc, 0x22, 0x8a, 0x79, 0x8b, 0x7e, 0x4a, 0x2b, 0xb1, 0x67, 0xd1, - 0x59, 0x08, 0x4d, 0x7d, 0xeb, 0x05, 0x6f, 0xbd, 0xdc, 0x60, 0xaa, 0x42, - 0xb6, 0xbd, 0xf1, 0xfc, 0xa9, 0x2b, 0x40, 0x8e, 0x20, 0xa2, 0x95, 0x4a, - 0xc2, 0xb4, 0xbe, 0x40, 0x1b, 0x7f, 0x30, 0x81, 0x1a, 0x7c, 0x13, 0x7a, - 0xc6, 0x96, 0xb0, 0xb7, 0x8f, 0xad, 0xd5, 0xd8, 0xe0, 0x99, 0x2b, 0xd2, - 0x44, 0x07, 0x7b, 0xce, 0x83, 0xeb, 0x76, 0x82, 0xf1, 0x04, 0xee, 0xe7, - 0x3b, 0x32, 0x1f, 0x95, 0xd1, 0x0a, 0xbc, 0xe5, 0xe0, 0xf3, 0x3d, 0x27, - 0xca, 0x38, 0xca, 0xc9, 0xc7, 0x89, 0xcb, 0xef, 0x3d, 0xf3, 0xbc, 0x76, - 0xc2, 0x44, 0x72, 0x16, 0xec, 0x2c, 0x43, 0xe0, 0xe8, 0x58, 0x5e, 0x01, - 0x6f, 0xde, 0x9f, 0xc4, 0x8c, 0x56, 0x40, 0xa1, 0xf2, 0xf2, 0x4f, 0x6e, - 0x33, 0xdb, 0xba, 0xcd, 0x6a, 0x40, 0xd3, 0xf8, 0x09, 0xd5, 0xc1, 0x41, - 0x95, 0xaa, 0xdb, 0xbc, 0x9c, 0x16, 0x68, 0x2b, 0xcc, 0x85, 0x3b, 0xcf, - 0xec, 0x79, 0x25, 0x5d, 0x89, 0xc1, 0xcb, 0x8d, 0x18, 0x33, 0x2f, 0xec, - 0xe8, 0xde, 0x8b, 0xb9, 0xc6, 0xb1, 0x38, 0x3e, 0x6d, 0x50, 0x67, 0x79, - 0x3d, 0x27, 0xe5, 0x54, 0x67, 0x14, 0x02, 0x59, 0xdc, 0x5e, 0x6b, 0x30, - 0x0d, 0x94, 0xb0, 0x76, 0xcd, 0x68, 0x49, 0x7b, 0x45, 0xe2, 0x20, 0x7f, - 0xda, 0x4d, 0x91, 0x93, 0x45, 0x08, 0xac, 0x27, 0xb6, 0x01, 0xbe, 0xdd, - 0x21, 0x53, 0xa5, 0xe0, 0x68, 0xac, 0xe6, 0xc9, 0xd9, 0xde, 0xd0, 0x25, - 0x42, 0x19, 0xde, 0xa8, 0xc3, 0xad, 0x0a, 0xef, 0x36, 0x1d, 0xd2, 0x0f, - 0x69, 0x49, 0x1e, 0x3a, 0x43, 0x6a, 0xa7, 0x67, 0xc3, 0x93, 0x68, 0x77, - 0x98, 0xfc, 0x8b, 0x83, 0xf4, 0x1c, 0xde, 0xb2, 0xbd, 0x15, 0x7e, 0x7a, - 0xc8, 0xd6, 0xac, 0x03, 0x2c, 0x10, 0x6f, 0xd6, 0xb3, 0xf6, 0xd2, 0x73, - 0x26, 0x38, 0x31, 0x77, 0x93, 0xe1, 0x07, 0x86, 0x86, 0xdc, 0x66, 0x52, - 0xdb, 0x9d, 0xed, 0x6d, 0x2b, 0xc8, 0x5f, 0xcf, 0xb3, 0x2f, 0x2a, 0x22, - 0x71, 0x81, 0x67, 0xd9, 0x2a, 0xe7, 0x8d, 0x17, 0x42, 0x7c, 0x8e, 0xfd, - 0x4f, 0xd3, 0x32, 0x38, 0xf0, 0xd0, 0x5a, 0x18, 0x0d, 0xf3, 0xaa, 0x25, - 0xf9, 0xbc, 0x78, 0xaa, 0x77, 0x17, 0x17, 0x80, 0xfc, 0x92, 0xdc, 0x59, - 0xe2, 0x91, 0xe8, 0xef, 0x59, 0x9a, 0x81, 0xd2, 0x6d, 0x1f, 0x71, 0x5a, - 0xe0, 0x83, 0x97, 0x7d, 0x35, 0xdc, 0x89, 0x39, 0xbf, 0xc3, 0xdd, 0x09, - 0xa3, 0xd8, 0x79, 0x9c, 0x68, 0x60, 0x08, 0x4e, 0xbf, 0x29, 0xd3, 0x5d, - 0x9a, 0x89, 0x89, 0xa9, 0x61, 0x37, 0xd2, 0x97, 0xd6, 0x85, 0x68, 0xa1, - 0x16, 0x6e, 0x48, 0x94, 0xa3, 0xf8, 0x07, 0xbc, 0xb2, 0xb1, 0x7a, 0x18, - 0x0b, 0x96, 0xb6, 0x85, 0x0d, 0x69, 0xa1, 0x51, 0x8e, 0x51, 0x1b, 0x53, - 0xa3, 0x46, 0xec, 0x69, 0x15, 0x2f, 0x36, 0xd9, 0xb7, 0xd2, 0x65, 0xf8, - 0x7a, 0xb2, 0x1e, 0xf1, 0xd0, 0x9d, 0x3a, 0x1f, 0x6a, 0xe7, 0x6a, 0xd6, - 0x24, 0x66, 0xab, 0x17, 0x45, 0xfb, 0x72, 0xc4, 0xce, 0x42, 0xc3, 0x57, - 0xdd, 0xd4, 0xe5, 0x81, 0x99, 0x2f, 0x30, 0x7c, 0xbd, 0x20, 0xd2, 0xc5, - 0x60, 0x1e, 0x87, 0x4e, 0x54, 0x37, 0x82, 0x60, 0x14, 0x32, 0x9f, 0x91, - 0x7f, 0x1d, 0x2b, 0x19, 0xa3, 0x8c, 0x8e, 0xc6, 0x5b, 0x8c, 0x7d, 0x9b, - 0x78, 0x77, 0x2f, 0xd4, 0x79, 0xbf, 0x93, 0x46, 0xb0, 0xed, 0x54, 0x13, - 0x5c, 0xc8, 0x2b, 0xad, 0x2a, 0x24, 0xaf, 0x4e, 0x40, 0x7b, 0x7c, 0xa1, - 0x9c, 0x11, 0xf3, 0x7f, 0x04, 0x44, 0xad, 0xb9, 0x05, 0xdb, 0xbc, 0x05, - 0xd1, 0xa5, 0x51, 0xb8, 0xb2, 0xaa, 0x8f, 0x3b, 0xed, 0x12, 0x5a, 0x5a, - 0x5a, 0x7d, 0x04, 0x6d, 0xf0, 0x0c, 0x87, 0x24, 0x01, 0x2c, 0xd0, 0xb4, - 0xa7, 0x46, 0x23, 0x30, 0xba, 0xed, 0x84, 0xaf, 0xa9, 0x1c, 0x70, 0x76, - 0xc0, 0xe6, 0x8a, 0x35, 0xc5, 0x94, 0x30, 0xae, 0xe2, 0x4a, 0x35, 0x0a, - 0x1b, 0x50, 0xf1, 0x03, 0x31, 0x05, 0x08, 0xaa, 0x74, 0xdd, 0xab, 0x53, - 0xe0, 0xdd, 0xe2, 0x2b, 0x25, 0xa1, 0x12, 0x88, 0x0d, 0x5d, 0x73, 0x5c, - 0xb3, 0x5e, 0x1d, 0x9b, 0x7e, 0xa4, 0x35, 0x97, 0xa0, 0x32, 0xc4, 0x40, - 0x0e, 0x7d, 0x08, 0xf7, 0x44, 0x63, 0x74, 0x96, 0x20, 0x24, 0x3c, 0x5a, - 0x26, 0xcd, 0x20, 0xde, 0x7c, 0x7c, 0x37, 0x74, 0xe3, 0x16, 0xc0, 0x23, - 0x02, 0x56, 0x70, 0x43, 0x58, 0x58, 0x83, 0x02, 0xd3, 0x46, 0x94, 0x80, - 0xc4, 0x48, 0x46, 0x86, 0x73, 0xa8, 0x3b, 0x38, 0x05, 0x97, 0x7f, 0x46, - 0xa9, 0x7f, 0x0d, 0xa3, 0xb0, 0x79, 0x09, 0x84, 0xf1, 0xc7, 0xe0, 0xff, - 0x1c, 0x53, 0x35, 0x51, 0x08, 0x59, 0xce, 0xa2, 0x77, 0x69, 0xf5, 0x7e, - 0x7e, 0xf1, 0x52, 0xdd, 0xfa, 0x63, 0xd3, 0xe6, 0xfc, 0x02, 0x12, 0x02, - 0x9e, 0x40, 0xc3, 0xf4, 0x3f, 0x6c, 0xb1, 0x5c, 0x5a, 0xda, 0xf9, 0x78, - 0xf6, 0xfe, 0xf8, 0x74, 0x18, 0x3d, 0x81, 0x5a, 0x0c, 0x67, 0xa7, 0x07, - 0x6f, 0x3e, 0x9e, 0x99, 0x8f, 0xd2, 0xc7, 0x5e, 0x9c, 0xa5, 0x46, 0x76, - 0x1a, 0x56, 0x49, 0x66, 0x58, 0xed, 0x58, 0xc8, 0x07, 0xb3, 0x4b, 0xe0, - 0x9c, 0xe6, 0x85, 0x85, 0x60, 0xb9, 0xb9, 0xce, 0x27, 0x36, 0x4d, 0x80, - 0xbc, 0x1e, 0x90, 0xd7, 0x98, 0x5b, 0x5b, 0x4b, 0xda, 0x28, 0x22, 0x21, - 0x09, 0x39, 0xd1, 0xd9, 0xfb, 0x9d, 0xa3, 0xbf, 0x0e, 0x25, 0xe6, 0xe4, - 0xf3, 0xe7, 0xcf, 0xcd, 0xd0, 0x04, 0xd4, 0x79, 0xca, 0x64, 0x69, 0x69, - 0xb8, 0xbf, 0x1f, 0xed, 0x1c, 0x0e, 0x8f, 0xe5, 0x81, 0xab, 0x6a, 0xb6, - 0xf2, 0x6c, 0xd5, 0x28, 0x07, 0xe3, 0xa4, 0x32, 0xff, 0x58, 0x5a, 0xfa, - 0x3f, 0xed, 0xbf, 0x25, 0x14, 0xd7, 0x42, 0x04, 0x00, + 0x7c, 0xf1, 0xc5, 0xf3, 0xa3, 0xb3, 0xc3, 0x37, 0xc7, 0xa7, 0xe7, 0xc7, + 0x27, 0xaf, 0x1b, 0x4f, 0x66, 0x15, 0x0c, 0x54, 0x17, 0xc5, 0x34, 0x9a, + 0x14, 0xa5, 0x19, 0xbc, 0xcc, 0xf2, 0x8b, 0x68, 0x9c, 0xd4, 0x49, 0x34, + 0x29, 0x8b, 0x59, 0x84, 0xbf, 0x29, 0xe0, 0xb9, 0x2a, 0x2d, 0xaf, 0x60, + 0xe6, 0x45, 0x85, 0xbf, 0xc6, 0x81, 0x07, 0xd1, 0x71, 0xad, 0xc3, 0x55, + 0x8b, 0xf9, 0xbc, 0x28, 0xeb, 0x2a, 0xaa, 0x2f, 0xd3, 0x2a, 0x8d, 0xe6, + 0x65, 0x51, 0x17, 0xa3, 0x62, 0x5a, 0xed, 0x45, 0xcf, 0x8f, 0x0f, 0xcf, + 0xfb, 0xd1, 0x8b, 0xe3, 0x97, 0x47, 0xf0, 0xe7, 0xf9, 0x29, 0xfd, 0x71, + 0xd6, 0x8f, 0xbe, 0x3b, 0x39, 0xfd, 0xfe, 0xe8, 0x8d, 0xfe, 0x17, 0x7e, + 0xf0, 0xfd, 0x39, 0xfc, 0x52, 0x87, 0xc3, 0x7f, 0xc0, 0xcf, 0xa2, 0xe3, + 0x57, 0x07, 0xf0, 0x06, 0xfe, 0x09, 0xff, 0x7a, 0xf9, 0x1c, 0xff, 0x81, + 0x7f, 0xc2, 0x3f, 0x5e, 0xfd, 0xed, 0x1c, 0x86, 0x3d, 0x3d, 0x39, 0xdd, + 0xe5, 0x3f, 0xe1, 0x47, 0x6f, 0xce, 0x5f, 0x9d, 0xf2, 0x9f, 0xf4, 0x8f, + 0x33, 0x3b, 0xdc, 0xd9, 0x21, 0xfc, 0xe2, 0x8c, 0x66, 0x3f, 0x7b, 0xf5, + 0x2d, 0xfd, 0x71, 0x86, 0x7f, 0xf2, 0x0f, 0x68, 0xaa, 0xf3, 0xa3, 0x97, + 0xaf, 0x8f, 0x60, 0xc4, 0x73, 0x7a, 0xea, 0x87, 0xb3, 0x28, 0xc9, 0xc7, + 0xf0, 0x9f, 0xb3, 0xc1, 0x17, 0xed, 0x1d, 0x9b, 0x17, 0xd7, 0x69, 0x99, + 0x8e, 0xa3, 0xe1, 0x4d, 0x14, 0x4d, 0xb3, 0x21, 0xfd, 0x98, 0xf6, 0x2f, + 0x4a, 0xa6, 0xf0, 0x37, 0xdd, 0xc5, 0xb8, 0x4c, 0xa7, 0x49, 0x0d, 0xcf, + 0x45, 0x93, 0x34, 0xa9, 0x17, 0x65, 0x0a, 0xfb, 0x15, 0x9d, 0xa5, 0xa9, + 0x0e, 0x27, 0xaf, 0xae, 0xef, 0x6e, 0xd0, 0xcb, 0xe3, 0xb4, 0x4e, 0xb2, + 0x69, 0x05, 0xd3, 0xe1, 0xc1, 0xca, 0x33, 0xe7, 0x97, 0x69, 0x84, 0x5b, + 0x0d, 0xfb, 0x7b, 0x93, 0xd7, 0xc9, 0x07, 0x9a, 0x5e, 0xb6, 0x36, 0x1e, + 0xa7, 0xf3, 0x34, 0x1f, 0xa7, 0x79, 0x3d, 0x88, 0xfe, 0x51, 0x2c, 0xa2, + 0x49, 0x06, 0x0b, 0x4e, 0x64, 0x1c, 0x98, 0x76, 0x9c, 0x56, 0xa3, 0x32, + 0x23, 0x4a, 0xd0, 0xe1, 0xb2, 0x3c, 0x7a, 0xf3, 0xe2, 0x30, 0xda, 0xfd, + 0xf2, 0xd9, 0x13, 0xfb, 0x59, 0xc7, 0x93, 0xe8, 0x06, 0x5e, 0x87, 0x61, + 0xaf, 0xb2, 0x71, 0xca, 0x84, 0x15, 0x5d, 0x67, 0xf5, 0x65, 0xb1, 0xa8, + 0xe1, 0x5f, 0xd3, 0x34, 0x19, 0xe3, 0x81, 0xeb, 0xb4, 0x7b, 0x9b, 0x9b, + 0x51, 0x35, 0xba, 0x4c, 0x67, 0x69, 0x9f, 0x77, 0xe4, 0x62, 0x91, 0x56, + 0x55, 0x5a, 0xe9, 0x70, 0xd7, 0x97, 0x49, 0x6d, 0x1e, 0xa6, 0x91, 0xaf, + 0x13, 0x5c, 0xe2, 0x71, 0x8d, 0xa4, 0x91, 0xc3, 0xb2, 0x26, 0xc9, 0x62, + 0x8a, 0x84, 0x52, 0xf0, 0x31, 0x47, 0xd1, 0x10, 0x26, 0x8a, 0x92, 0xaa, + 0x5a, 0xcc, 0xd2, 0x2a, 0x8a, 0x0a, 0x78, 0xac, 0x34, 0xc3, 0x0d, 0x93, + 0x0a, 0xb7, 0xb0, 0xc8, 0xe1, 0x7f, 0x93, 0x3a, 0xcd, 0xe3, 0x05, 0xfd, + 0xfb, 0xb2, 0xa8, 0xe0, 0x9d, 0x3c, 0x99, 0x21, 0xa9, 0xa5, 0x93, 0xec, + 0x03, 0xee, 0xee, 0x0b, 0xd8, 0xc6, 0xf4, 0x43, 0x32, 0x9b, 0x4f, 0x61, + 0x6d, 0xb8, 0xa7, 0xf4, 0x14, 0x3e, 0x64, 0x86, 0xab, 0xea, 0xa4, 0xac, + 0xf1, 0x73, 0xf0, 0x03, 0xa3, 0xde, 0xa4, 0x9e, 0x0f, 0x7a, 0xfc, 0x19, + 0x3a, 0xbf, 0xae, 0x18, 0xc9, 0xd4, 0x6e, 0x12, 0x6e, 0xf0, 0x28, 0xc9, + 0xa3, 0x6a, 0x9e, 0x8e, 0xb2, 0xc9, 0x0d, 0x10, 0x07, 0xfc, 0x6f, 0x56, + 0x2c, 0xe0, 0xb9, 0x62, 0x42, 0x47, 0x54, 0xf1, 0x22, 0x6b, 0x3c, 0xb1, + 0x51, 0x31, 0x9b, 0x21, 0xf9, 0xc0, 0x19, 0xe7, 0xe9, 0x80, 0x8e, 0x11, + 0x68, 0x25, 0x29, 0xcd, 0xd9, 0x4f, 0xd2, 0x1a, 0xb6, 0x70, 0x4c, 0x27, + 0x02, 0x7b, 0x0c, 0x57, 0xeb, 0x9f, 0x0b, 0x38, 0xc8, 0x2c, 0x99, 0x46, + 0xf0, 0x62, 0x0e, 0xb7, 0x0c, 0x7e, 0x81, 0x43, 0xf1, 0x7c, 0x19, 0x3c, + 0x5a, 0x94, 0x63, 0xbc, 0x7c, 0xf9, 0x14, 0x76, 0x9b, 0x16, 0x09, 0x1b, + 0xa1, 0xc3, 0xc5, 0xff, 0xd5, 0x8f, 0xe2, 0x78, 0x9e, 0x94, 0x40, 0x80, + 0xe9, 0x74, 0xe0, 0xad, 0x56, 0xd7, 0x83, 0xcb, 0x89, 0x94, 0x39, 0xe0, + 0x0f, 0x68, 0xdd, 0x33, 0xd8, 0xbd, 0x31, 0xfe, 0xd3, 0x21, 0x13, 0xfc, + 0x3e, 0x9e, 0xb1, 0xe0, 0x85, 0xb8, 0x43, 0xb4, 0xae, 0x44, 0x52, 0xd7, + 0xe9, 0x6c, 0xce, 0x27, 0x5a, 0xa6, 0xb0, 0x2c, 0x78, 0x18, 0xbe, 0x61, + 0xc4, 0xd3, 0x5c, 0xd3, 0xa1, 0x17, 0xb8, 0xe7, 0xd1, 0x0c, 0x0e, 0x3e, + 0x83, 0xd3, 0xb1, 0x97, 0xa4, 0x82, 0x3b, 0x5e, 0x15, 0x3a, 0x5c, 0x8d, + 0xb4, 0x13, 0x5d, 0xa4, 0x75, 0xcd, 0x8f, 0xe3, 0x2a, 0x26, 0x40, 0xcc, + 0x15, 0x33, 0x22, 0xda, 0x10, 0x3c, 0x72, 0xe1, 0x44, 0xe3, 0x22, 0xca, + 0x8b, 0x1a, 0x37, 0xc2, 0x8e, 0x0c, 0x53, 0xc7, 0x3a, 0x1c, 0xae, 0x81, + 0xbf, 0xb3, 0x4a, 0xeb, 0xc5, 0x3c, 0xba, 0x84, 0xbf, 0x56, 0x97, 0xc9, + 0x7b, 0xa4, 0x95, 0xf3, 0x4b, 0xb8, 0x4a, 0xd9, 0x0c, 0xa9, 0x1e, 0x86, + 0x87, 0x8d, 0x4a, 0xc7, 0x83, 0xe8, 0xd0, 0xac, 0x3b, 0x92, 0x2f, 0xc1, + 0x6d, 0xd4, 0xe1, 0x8a, 0x7c, 0x0a, 0xa7, 0x38, 0x84, 0x1f, 0x8e, 0x0b, + 0xd8, 0x47, 0xa2, 0x30, 0xda, 0x40, 0x7b, 0x48, 0xf8, 0x23, 0x60, 0x94, + 0xb0, 0xfa, 0x69, 0x73, 0xcb, 0x60, 0x4f, 0xaf, 0x8a, 0x51, 0xe2, 0x5e, + 0x46, 0xfc, 0x15, 0x8c, 0x8e, 0x5f, 0x00, 0x63, 0xce, 0xd3, 0x12, 0x5e, + 0x9e, 0x21, 0x5b, 0x49, 0xeb, 0xeb, 0x14, 0xf6, 0xac, 0x4a, 0xf1, 0x40, + 0xeb, 0x94, 0x37, 0xb9, 0x5c, 0xe4, 0x95, 0xdd, 0xf7, 0x53, 0xbd, 0xac, + 0x79, 0x74, 0x7c, 0x7a, 0xf5, 0x24, 0xfa, 0x0d, 0x17, 0x94, 0x8d, 0x95, + 0x6a, 0xf4, 0x06, 0xe3, 0x24, 0x51, 0x04, 0x7c, 0x20, 0x99, 0x23, 0xb1, + 0xc1, 0x1c, 0x23, 0xa0, 0xb2, 0xe4, 0x02, 0x16, 0x5f, 0x65, 0x17, 0xf9, + 0x40, 0x87, 0x7b, 0x99, 0xbd, 0xc7, 0x15, 0x7e, 0x61, 0xe5, 0x54, 0xef, + 0xb2, 0xae, 0xe7, 0x70, 0xd5, 0x7f, 0x9a, 0xa4, 0xcf, 0xb6, 0xf6, 0xf6, + 0x76, 0xff, 0xb8, 0xf3, 0x38, 0xad, 0x2f, 0xb7, 0x7e, 0xd9, 0xec, 0x99, + 0x87, 0x8e, 0xe0, 0x08, 0x6e, 0xea, 0x4b, 0x3a, 0x29, 0x61, 0x1e, 0xe3, + 0x10, 0xb5, 0xf0, 0xa9, 0xc2, 0x6e, 0xe3, 0x97, 0x26, 0x6d, 0x5a, 0x34, + 0x87, 0x45, 0xbb, 0x0e, 0xdb, 0x97, 0xe1, 0x91, 0x95, 0x17, 0x70, 0x17, + 0xf3, 0xba, 0xdf, 0xbc, 0x9a, 0x24, 0xad, 0xf0, 0xdb, 0xf0, 0xfd, 0xba, + 0x04, 0xae, 0x0a, 0x3f, 0x83, 0x31, 0xe1, 0x04, 0x16, 0xa3, 0x4b, 0xd8, + 0x9d, 0xef, 0x5e, 0x9e, 0x7c, 0xfb, 0xed, 0xf1, 0xeb, 0xef, 0xba, 0x6e, + 0xad, 0xa1, 0x12, 0x3a, 0x36, 0x98, 0x0c, 0x76, 0x18, 0xc6, 0x80, 0x1b, + 0x4c, 0x3f, 0x00, 0x86, 0x7e, 0x5d, 0x66, 0x44, 0x7b, 0xd3, 0xac, 0x82, + 0x5f, 0xd0, 0x26, 0x66, 0xe6, 0xc4, 0x86, 0x65, 0x32, 0x4a, 0xe9, 0x3d, + 0xa0, 0xde, 0x0b, 0xf8, 0x1b, 0xff, 0x9a, 0x7e, 0xfe, 0x3e, 0xad, 0x81, + 0xaa, 0x7e, 0x80, 0x4f, 0x47, 0x21, 0x50, 0x23, 0x75, 0xf5, 0x2e, 0xa6, + 0xc5, 0x70, 0x08, 0xa3, 0xf5, 0x02, 0x07, 0x47, 0x33, 0xf0, 0x21, 0xd5, + 0x97, 0x65, 0x9a, 0x46, 0xe3, 0x6c, 0x02, 0xf7, 0x01, 0x3e, 0x9a, 0x19, + 0x16, 0xfc, 0xfe, 0x7d, 0x4a, 0xe3, 0xec, 0x05, 0x8e, 0xa5, 0xca, 0xea, + 0x74, 0xf0, 0x2f, 0x38, 0xf4, 0x7e, 0x7d, 0x5d, 0xf4, 0x69, 0x80, 0x7f, + 0x0f, 0x60, 0x67, 0xed, 0xe9, 0xc0, 0x22, 0x6f, 0xe4, 0xeb, 0xe1, 0x3e, + 0x09, 0x83, 0xa1, 0xd5, 0x4f, 0x40, 0x4c, 0xcd, 0xe1, 0x2a, 0xc0, 0x96, + 0x96, 0xd9, 0x08, 0xef, 0x52, 0x96, 0xd2, 0xb7, 0xb3, 0x60, 0xff, 0xe9, + 0x17, 0xdc, 0xd0, 0x2c, 0x6f, 0x4c, 0x3b, 0xa1, 0x59, 0x91, 0x5b, 0x0a, + 0x7f, 0xc5, 0xc9, 0x36, 0xf1, 0x6a, 0xfe, 0xb4, 0x1d, 0x6f, 0x6f, 0x6d, + 0xfd, 0x32, 0xa8, 0x3f, 0xd4, 0xbd, 0x3b, 0xbe, 0xb1, 0xb5, 0xe5, 0xbc, + 0x83, 0x0f, 0xaf, 0xd3, 0x36, 0xa8, 0xa0, 0xf9, 0x2d, 0x2d, 0x8b, 0x6a, + 0xe3, 0x8e, 0x63, 0x25, 0xf1, 0x6f, 0xad, 0xb9, 0x5f, 0xa7, 0x15, 0x09, + 0x5d, 0xfb, 0xc5, 0xc8, 0x78, 0x89, 0xf8, 0x44, 0x47, 0x49, 0xc7, 0x7d, + 0x12, 0x39, 0xba, 0x3f, 0x78, 0xcf, 0xab, 0x14, 0xa8, 0x19, 0xb8, 0x2f, + 0x6c, 0x29, 0x10, 0x6a, 0xfa, 0xc1, 0xe8, 0x35, 0xc0, 0xd3, 0xd2, 0x64, + 0x74, 0xc9, 0x52, 0x29, 0x74, 0x14, 0xee, 0x92, 0x92, 0x72, 0x74, 0x99, + 0x5d, 0xc1, 0x9e, 0x7c, 0xf9, 0xe5, 0x93, 0x18, 0xfe, 0xf8, 0xf2, 0x97, + 0xcd, 0xab, 0x62, 0x0a, 0x5b, 0xf4, 0xe8, 0x97, 0x4d, 0x24, 0xb5, 0x7f, + 0x25, 0xfd, 0x61, 0x7f, 0xf4, 0xef, 0xc1, 0x65, 0x3d, 0x9b, 0xf6, 0xba, + 0x65, 0x0b, 0x48, 0xa9, 0x74, 0x0e, 0x17, 0x05, 0xa4, 0x0b, 0x70, 0x39, + 0xd2, 0xcc, 0xe0, 0x4e, 0x09, 0xcd, 0xc1, 0x82, 0xf0, 0x40, 0x71, 0xbd, + 0xc0, 0x8d, 0x5e, 0xe3, 0x25, 0x87, 0xa3, 0x1c, 0xa6, 0xa5, 0x73, 0xf2, + 0x53, 0xe0, 0xa0, 0xb7, 0xaf, 0xd6, 0x1e, 0xdf, 0xde, 0x76, 0xe0, 0x04, + 0xbb, 0xde, 0x80, 0x2d, 0xdf, 0xdb, 0x69, 0x3d, 0xfe, 0x03, 0x32, 0x79, + 0x4b, 0x40, 0xb0, 0x84, 0x7f, 0xfd, 0xdb, 0x39, 0x01, 0x92, 0x01, 0xc8, + 0x01, 0xdf, 0x23, 0x8f, 0x44, 0x56, 0xde, 0xe2, 0x03, 0xc0, 0x3f, 0x40, + 0x82, 0x18, 0x75, 0x4d, 0xf4, 0x91, 0x61, 0x32, 0x04, 0x8e, 0x7b, 0x99, + 0x5c, 0xa5, 0xf8, 0xd5, 0xf3, 0x05, 0x69, 0x10, 0xd1, 0x64, 0x01, 0x17, + 0x4c, 0x39, 0x5c, 0x86, 0xb2, 0x65, 0x31, 0x84, 0x2b, 0xfd, 0xcf, 0x45, + 0x51, 0xf3, 0xf6, 0x24, 0x57, 0x05, 0xb0, 0x42, 0x78, 0xd4, 0x08, 0xfd, + 0xcb, 0x14, 0x5e, 0xa1, 0x79, 0x33, 0xdc, 0x52, 0xb8, 0x67, 0x46, 0x05, + 0xc8, 0x6a, 0x91, 0x05, 0xc9, 0xb4, 0x02, 0x85, 0xe4, 0xa2, 0x40, 0x82, + 0x21, 0x65, 0x8e, 0x4e, 0x1c, 0x04, 0xc0, 0x25, 0x70, 0xe1, 0x51, 0xed, + 0xa8, 0x24, 0xc4, 0x79, 0xe0, 0x43, 0xe8, 0xbc, 0x92, 0x69, 0x9f, 0xaf, + 0xea, 0xc4, 0x2a, 0x1f, 0xd1, 0xda, 0xff, 0x5e, 0xeb, 0x47, 0x6b, 0xff, + 0xcf, 0x1a, 0x31, 0xaa, 0xb5, 0x3f, 0xad, 0xd9, 0xfb, 0x7f, 0x06, 0x93, + 0x22, 0x35, 0x4d, 0x26, 0x91, 0x72, 0x07, 0x5e, 0x47, 0x7c, 0x81, 0x22, + 0x1c, 0x7f, 0x06, 0xbf, 0x83, 0xe7, 0xff, 0x7e, 0xf0, 0xe6, 0xf8, 0xe0, + 0xdb, 0x97, 0x47, 0x4d, 0xcd, 0xde, 0xaa, 0xd9, 0x4d, 0x1d, 0x23, 0xba, + 0x4a, 0xca, 0x0c, 0x76, 0x0b, 0x16, 0xbf, 0x9e, 0x8c, 0x91, 0x11, 0xc3, + 0xc6, 0x3c, 0x1b, 0xec, 0x0e, 0xb6, 0x36, 0x06, 0xa0, 0x73, 0xd6, 0xf6, + 0xf7, 0x46, 0x4d, 0xa3, 0x49, 0x63, 0xfd, 0x39, 0x31, 0x9d, 0xaf, 0x40, + 0x78, 0xd6, 0xc8, 0x81, 0xe0, 0x53, 0x5a, 0xbf, 0xfa, 0x06, 0x8f, 0x1e, + 0x2e, 0x2a, 0x6c, 0x49, 0x0a, 0x17, 0x12, 0xfe, 0xd1, 0x6b, 0xc8, 0x46, + 0x90, 0x60, 0x55, 0x0d, 0xd7, 0x37, 0xca, 0x26, 0x28, 0x6c, 0xc5, 0x60, + 0x60, 0x39, 0x38, 0x4e, 0xaa, 0xcb, 0x68, 0x3d, 0xde, 0xd8, 0xb0, 0xdb, + 0xf0, 0x77, 0x1d, 0x3b, 0x92, 0x29, 0x2b, 0x1a, 0x0d, 0x64, 0xd5, 0x87, + 0x39, 0x7c, 0x14, 0xaf, 0x9f, 0x15, 0x15, 0xe4, 0xd1, 0xb0, 0x00, 0x3c, + 0x00, 0x21, 0xb0, 0xde, 0xbf, 0xfe, 0x85, 0x4b, 0xfa, 0xf7, 0xbf, 0x7b, + 0x3a, 0xdc, 0xba, 0xaa, 0xab, 0x48, 0x1f, 0x4c, 0x08, 0x1b, 0xb8, 0x12, + 0xfc, 0xa7, 0x8c, 0x42, 0xaa, 0x22, 0x69, 0xcf, 0xa4, 0x2d, 0x8e, 0x65, + 0x07, 0xa2, 0x5e, 0x1c, 0xf3, 0x9c, 0x71, 0x6f, 0x60, 0xb5, 0x6e, 0x78, + 0x10, 0x6f, 0x59, 0x15, 0x89, 0x34, 0x93, 0x35, 0x16, 0x3c, 0xa4, 0xd9, + 0x99, 0x1e, 0x8e, 0xda, 0x83, 0xb5, 0x02, 0x13, 0x25, 0xb6, 0x42, 0xe2, + 0x7f, 0x38, 0x4d, 0xf2, 0xf7, 0x30, 0xbd, 0xd5, 0x6a, 0x78, 0x0f, 0x81, + 0x52, 0x53, 0x96, 0x82, 0xe9, 0x07, 0x64, 0xfe, 0x09, 0x8a, 0x33, 0x1d, + 0x0b, 0xb4, 0xc4, 0x63, 0x1a, 0x26, 0xc2, 0xef, 0x83, 0xcd, 0x85, 0xfb, + 0x3d, 0x04, 0x7d, 0x61, 0xc6, 0x3a, 0xa2, 0x4b, 0xcd, 0x35, 0x51, 0x2f, + 0x30, 0x6c, 0xfe, 0x16, 0xfc, 0x47, 0x26, 0xa2, 0x04, 0x26, 0x07, 0x51, + 0x54, 0x4d, 0x61, 0xc7, 0x85, 0x2c, 0x7b, 0x3f, 0xc3, 0x68, 0x4d, 0x3d, + 0x16, 0xf6, 0x39, 0x19, 0x8d, 0x50, 0x8d, 0x44, 0xfa, 0xe1, 0xaf, 0x8f, + 0xd2, 0xfc, 0x2a, 0x2b, 0x8b, 0x1c, 0xa5, 0xae, 0x43, 0x4c, 0x43, 0xd4, + 0xbf, 0x4a, 0x58, 0x2b, 0x68, 0x4a, 0x05, 0x2b, 0xce, 0xb0, 0x92, 0xd9, + 0xc0, 0x1d, 0x8e, 0x79, 0x57, 0x3a, 0x45, 0x9b, 0x1b, 0xb9, 0x65, 0x46, + 0xf7, 0xa6, 0x84, 0xcb, 0x9f, 0x95, 0x29, 0x7d, 0x7c, 0x68, 0x6c, 0x7c, + 0x14, 0x89, 0x26, 0x45, 0x6a, 0x73, 0xef, 0x3d, 0x8e, 0x66, 0x6d, 0x11, + 0xb1, 0x16, 0xe0, 0xb5, 0xe9, 0x02, 0x55, 0x14, 0xf8, 0x35, 0x70, 0xeb, + 0xcc, 0xe8, 0x13, 0x70, 0x6d, 0xe1, 0x36, 0x8e, 0x6f, 0x90, 0xdf, 0xc3, + 0x4d, 0x8e, 0x4e, 0xa7, 0x89, 0x95, 0xd7, 0x0e, 0x0d, 0x47, 0x7f, 0xa4, + 0x13, 0x90, 0xef, 0xa8, 0x9a, 0xc7, 0x88, 0x22, 0x1b, 0x28, 0x62, 0x0d, + 0x1f, 0x59, 0x23, 0xd1, 0x00, 0x07, 0x54, 0x57, 0xb2, 0xa5, 0x66, 0x38, + 0x30, 0x8c, 0x51, 0x3f, 0x99, 0xb0, 0x42, 0x13, 0xfc, 0x28, 0xd5, 0x72, + 0x64, 0x51, 0xb4, 0xa6, 0xf3, 0xa2, 0xf1, 0x3d, 0x46, 0xe1, 0x69, 0x7c, + 0xd8, 0xc4, 0xf9, 0x26, 0x78, 0xab, 0x4f, 0x42, 0xc9, 0x59, 0xff, 0x1f, + 0x1b, 0xf7, 0x13, 0xe9, 0x4c, 0x7e, 0x6b, 0x86, 0xb3, 0x8f, 0x7d, 0x23, + 0x8f, 0xd9, 0x53, 0x3f, 0x12, 0x1e, 0x1e, 0x45, 0xdf, 0xc1, 0x7e, 0xb3, + 0x8a, 0x78, 0x76, 0xf4, 0xa6, 0xe3, 0x1b, 0x72, 0x38, 0x1a, 0xd1, 0x22, + 0xc1, 0x8c, 0x02, 0x63, 0x12, 0x97, 0x87, 0xcf, 0x1b, 0xfb, 0xc0, 0xac, + 0xd3, 0x11, 0x31, 0xce, 0x62, 0xd7, 0xfe, 0x88, 0x4f, 0xaf, 0x39, 0xbf, + 0x92, 0x2b, 0x86, 0x2c, 0xec, 0x2b, 0x96, 0x2c, 0x55, 0x5b, 0x74, 0xce, + 0xb3, 0xcd, 0x7f, 0xfd, 0x0b, 0xdf, 0xfb, 0xf7, 0xbf, 0x37, 0xe1, 0xba, + 0x5f, 0x16, 0xe3, 0x96, 0x78, 0xe1, 0x31, 0x90, 0x04, 0x0d, 0x7d, 0x8a, + 0x7e, 0x68, 0x98, 0x62, 0x42, 0xf4, 0x44, 0x16, 0xd9, 0x64, 0x91, 0x8b, + 0x01, 0x22, 0x56, 0x85, 0xc3, 0xac, 0x66, 0x60, 0x02, 0x44, 0x2d, 0x12, + 0xd0, 0x2b, 0x3e, 0x2b, 0x4a, 0xfa, 0xd7, 0x55, 0x9a, 0x67, 0xb8, 0x2d, + 0xb0, 0x17, 0x70, 0x14, 0x64, 0xbe, 0x22, 0x65, 0xc2, 0xdd, 0x9b, 0xa9, + 0xa6, 0xe2, 0x2a, 0xf2, 0x60, 0xcf, 0x64, 0x53, 0x62, 0xe6, 0x97, 0xa0, + 0x9a, 0x81, 0x68, 0x00, 0x4d, 0x51, 0xb4, 0x3b, 0x78, 0xa3, 0x8f, 0xa7, + 0x8b, 0xaf, 0x03, 0x8f, 0x42, 0x31, 0xa6, 0x56, 0xa2, 0xb2, 0xbe, 0x04, + 0xff, 0xa7, 0xc3, 0xfd, 0xe7, 0xd9, 0xc9, 0xeb, 0x88, 0xb9, 0xd8, 0x58, + 0x2f, 0x3b, 0x8d, 0xf4, 0x6b, 0x55, 0xe4, 0x7d, 0x92, 0x7c, 0x20, 0x55, + 0x8b, 0x31, 0xdf, 0x2d, 0xf7, 0x01, 0xdc, 0x0b, 0xa0, 0x0c, 0x34, 0x99, + 0x9f, 0x3c, 0x32, 0x54, 0xcb, 0xcf, 0x2a, 0x87, 0x18, 0x3e, 0x79, 0xc4, + 0xf6, 0x61, 0x32, 0x9f, 0x83, 0x70, 0xd5, 0x6d, 0x22, 0x6b, 0x1c, 0x0c, + 0x51, 0x7b, 0x61, 0x68, 0xbb, 0xab, 0x0c, 0xa7, 0x8c, 0x40, 0xa4, 0x38, + 0xcc, 0x6c, 0x86, 0x4b, 0x9f, 0xa2, 0x8d, 0xa4, 0x26, 0xca, 0x38, 0x12, + 0x92, 0x29, 0xb3, 0x8b, 0x4b, 0x20, 0x0c, 0xa4, 0xf5, 0x16, 0xaf, 0x1c, + 0x58, 0x9e, 0xef, 0x9a, 0x68, 0x44, 0xce, 0x97, 0xc5, 0x94, 0xce, 0x35, + 0x47, 0xc9, 0x3e, 0xbc, 0x21, 0x31, 0x8e, 0x67, 0xa6, 0x7a, 0x1b, 0x7f, + 0xc2, 0x98, 0xd5, 0x08, 0x23, 0x21, 0x46, 0x09, 0xde, 0x11, 0xba, 0x94, + 0x83, 0x16, 0xa1, 0xef, 0x91, 0x8a, 0xd4, 0x66, 0xdd, 0x09, 0xd9, 0x92, + 0x7a, 0xdb, 0xff, 0xd7, 0xf7, 0x27, 0xaf, 0x8e, 0x36, 0x07, 0x55, 0x3a, + 0x2a, 0xe1, 0x59, 0x22, 0x7a, 0xdd, 0x80, 0xe6, 0x9d, 0xd2, 0x17, 0x50, + 0xec, 0x7d, 0xe8, 0xc1, 0x1d, 0x7a, 0x45, 0xe4, 0x53, 0x2d, 0xca, 0x54, + 0x69, 0xcb, 0x99, 0x09, 0x2f, 0x07, 0x1e, 0xf9, 0x8c, 0x4d, 0x6a, 0xb4, + 0xb9, 0xcc, 0x70, 0x68, 0x7c, 0xc5, 0xfa, 0x31, 0x15, 0x3e, 0x0c, 0x07, + 0x7f, 0x7a, 0x72, 0x76, 0x4e, 0xce, 0x36, 0x57, 0x5d, 0x73, 0x6f, 0x3e, + 0xae, 0xd3, 0xfd, 0x8d, 0xdc, 0x25, 0xf3, 0x00, 0xac, 0xea, 0x9b, 0x7f, + 0xfd, 0x0b, 0x9f, 0x82, 0x9b, 0x23, 0xdf, 0x13, 0x78, 0x9e, 0xfc, 0x79, + 0x20, 0x5a, 0xe0, 0xf1, 0x3d, 0x5c, 0xe0, 0x1e, 0x50, 0x8b, 0x23, 0x42, + 0xa3, 0x28, 0x74, 0x2b, 0xcd, 0x92, 0x0e, 0x5d, 0x6d, 0xcd, 0xca, 0x07, + 0x23, 0x40, 0x2a, 0xb6, 0xf5, 0x51, 0x3b, 0x30, 0xfa, 0x87, 0xaa, 0x20, + 0xc0, 0x87, 0x4e, 0xde, 0x9e, 0x9f, 0xbe, 0x3d, 0x77, 0x3c, 0x4e, 0x78, + 0xac, 0x35, 0x1c, 0x3b, 0x6b, 0x59, 0xd7, 0x59, 0xa5, 0xde, 0x24, 0x34, + 0xc0, 0x52, 0xe6, 0xcf, 0x65, 0x3a, 0x4a, 0x41, 0x9b, 0x1e, 0xb3, 0x2b, + 0x12, 0xce, 0x07, 0x34, 0x0c, 0xb8, 0x40, 0x74, 0x17, 0x5b, 0xba, 0x07, + 0x8a, 0xe0, 0xba, 0x5c, 0x8c, 0x48, 0xf3, 0xc7, 0x93, 0xc4, 0x7f, 0xc3, + 0x2d, 0x8d, 0x2a, 0x52, 0x1e, 0xf1, 0x90, 0x68, 0x10, 0x3a, 0x66, 0xb0, + 0xbd, 0xc0, 0x14, 0x9f, 0x12, 0x35, 0xf4, 0x45, 0xa7, 0x70, 0xe4, 0x6b, + 0x5c, 0xa0, 0x26, 0x26, 0x37, 0x15, 0x35, 0xa1, 0x13, 0xfc, 0x77, 0x99, + 0xce, 0xe0, 0x42, 0xc6, 0x24, 0x45, 0xc4, 0x83, 0x32, 0xc0, 0x0f, 0x61, + 0xb5, 0x8c, 0xf4, 0x05, 0x58, 0x6b, 0x6e, 0x7d, 0x1c, 0x3a, 0x1c, 0xbb, + 0x86, 0x70, 0x4d, 0xc6, 0x77, 0x1b, 0x30, 0x92, 0x89, 0x43, 0x54, 0xd9, + 0x2c, 0x9b, 0x26, 0x25, 0x5c, 0xcb, 0x3c, 0x4d, 0xc7, 0x95, 0x35, 0x57, + 0x5b, 0x66, 0x72, 0x45, 0xca, 0x26, 0xeb, 0x62, 0xb8, 0x2d, 0xfc, 0x8d, + 0x28, 0x96, 0x1b, 0xca, 0xa2, 0x51, 0x37, 0xe0, 0x92, 0xc2, 0x4d, 0x81, + 0x57, 0xcc, 0x66, 0x47, 0xbd, 0x05, 0xdc, 0x21, 0x10, 0xec, 0x30, 0x7f, + 0xaf, 0x41, 0xbe, 0xb8, 0x0e, 0x51, 0x7d, 0xac, 0x5c, 0x96, 0x43, 0x21, + 0x3e, 0xc5, 0x1b, 0x83, 0xea, 0x4a, 0xad, 0x33, 0xf0, 0x05, 0xc5, 0x6d, + 0x24, 0x3f, 0x26, 0xff, 0xbd, 0xaf, 0xbe, 0x2a, 0xa0, 0x8f, 0x69, 0x36, + 0xca, 0xea, 0xe9, 0x8d, 0xb9, 0x56, 0xd5, 0x7b, 0x66, 0x19, 0xc4, 0x91, + 0x80, 0x5a, 0xb2, 0x11, 0x31, 0x91, 0x90, 0x9b, 0x0a, 0xbe, 0xe9, 0xf4, + 0xcd, 0xc9, 0xf9, 0xc9, 0xe1, 0xc9, 0xcb, 0xa6, 0x2a, 0x6c, 0x98, 0x3e, + 0x19, 0xb2, 0xc5, 0xc2, 0x3a, 0x46, 0x2b, 0xd2, 0xc3, 0xf0, 0xf4, 0x80, + 0x02, 0xc9, 0x79, 0x0a, 0xca, 0xe3, 0xac, 0xda, 0x8b, 0xc4, 0x6f, 0x89, + 0x7e, 0x58, 0xe0, 0x80, 0xe6, 0xeb, 0xd0, 0x32, 0xcb, 0x46, 0x0b, 0xd8, + 0x79, 0x90, 0xfd, 0x19, 0xd0, 0xe4, 0x2c, 0xb9, 0x71, 0xed, 0x45, 0xe6, + 0x79, 0xc0, 0x04, 0xec, 0xfe, 0xa2, 0x4f, 0x1b, 0xfd, 0x26, 0xb8, 0x4f, + 0xa8, 0xb4, 0x4c, 0x8b, 0xe2, 0xfd, 0x62, 0x1e, 0x5d, 0x17, 0xe5, 0x58, + 0xb5, 0xd4, 0x22, 0xa7, 0xcf, 0x80, 0x6f, 0xc3, 0xef, 0x48, 0xd0, 0xc8, + 0xb6, 0xef, 0xa3, 0x37, 0x1c, 0xfe, 0xf3, 0x06, 0x49, 0x94, 0x84, 0x39, + 0xed, 0x70, 0x24, 0x84, 0xc9, 0x3e, 0xaf, 0x81, 0xea, 0xfc, 0xe6, 0x1c, + 0x75, 0x3d, 0xac, 0xbd, 0x39, 0x12, 0x48, 0x35, 0x0a, 0x78, 0x0d, 0xdd, + 0xb3, 0xf8, 0xcd, 0x4c, 0xaf, 0xd3, 0x1b, 0x36, 0x75, 0x89, 0x73, 0x96, + 0x8b, 0x3c, 0xe7, 0x95, 0x45, 0xaf, 0xb2, 0x11, 0x18, 0xd9, 0xc5, 0xa4, + 0x8e, 0x7e, 0xc8, 0xf2, 0x71, 0x71, 0x5d, 0xa1, 0xf1, 0x16, 0xb7, 0x86, + 0x93, 0x7b, 0x01, 0xba, 0x6b, 0x0d, 0xa4, 0x1d, 0xbd, 0x7d, 0x7d, 0x88, + 0x42, 0xa3, 0x2c, 0xd0, 0x1c, 0x86, 0x2f, 0x7d, 0xef, 0x7e, 0xcf, 0xf9, + 0xe9, 0xfa, 0xd9, 0x86, 0x67, 0xa3, 0x90, 0x98, 0x7b, 0x81, 0x4c, 0xf7, + 0x5c, 0x69, 0xff, 0x54, 0x3d, 0xc3, 0xa2, 0xaf, 0x4e, 0x0b, 0xf2, 0xa0, + 0xd6, 0xd7, 0x69, 0xf2, 0xbe, 0x6a, 0x2d, 0x80, 0x68, 0x01, 0x0d, 0x5d, + 0xf4, 0xac, 0xe0, 0xe3, 0x48, 0xf5, 0xa2, 0xe9, 0xf3, 0x26, 0x9f, 0xbf, + 0x74, 0xfc, 0xf3, 0x1c, 0x49, 0x80, 0x75, 0xb4, 0x86, 0x79, 0x93, 0x02, + 0xbf, 0x83, 0x61, 0x64, 0x5b, 0xbf, 0x70, 0x63, 0x0c, 0xfe, 0xd3, 0x4d, + 0xe2, 0x22, 0x07, 0x35, 0x2d, 0xd5, 0x90, 0x99, 0xeb, 0x3f, 0x25, 0x4e, + 0xa8, 0xcc, 0xa0, 0xc9, 0x95, 0x54, 0x5b, 0x9f, 0xc3, 0x87, 0xf1, 0x30, + 0xf8, 0x21, 0x28, 0x6a, 0xb7, 0x06, 0x5f, 0xf6, 0xa3, 0xed, 0xc1, 0x16, + 0xfe, 0xb1, 0xdd, 0x8f, 0x76, 0x68, 0xa4, 0xdd, 0x88, 0xdd, 0xf9, 0x72, + 0x40, 0x4c, 0x88, 0xce, 0xbd, 0x6f, 0x5c, 0x7f, 0xd2, 0x38, 0xe8, 0xd2, + 0x96, 0x25, 0xaa, 0xdd, 0x1d, 0x17, 0x47, 0xd9, 0xed, 0xab, 0x83, 0xc0, + 0x77, 0xbe, 0xa5, 0x0d, 0xa4, 0x61, 0x66, 0xa8, 0xe3, 0x95, 0x2d, 0x3f, + 0xbf, 0xf0, 0x63, 0xd4, 0x5a, 0x7a, 0x40, 0x21, 0xf9, 0xb4, 0x48, 0x80, + 0x55, 0xa4, 0xf8, 0x2c, 0xf1, 0x9f, 0xd6, 0x70, 0x70, 0x0b, 0xee, 0x74, + 0x48, 0x18, 0xbd, 0xe9, 0xd8, 0x74, 0x9c, 0x6a, 0x5c, 0xc0, 0x8d, 0xc1, + 0x6f, 0x2a, 0xca, 0x1b, 0xb9, 0x55, 0xcc, 0xed, 0x60, 0xfc, 0x3e, 0x1f, + 0x84, 0x33, 0x7e, 0x63, 0x64, 0x0c, 0x08, 0x79, 0xe7, 0x47, 0x3f, 0xd4, + 0x8d, 0xdf, 0x1d, 0x44, 0xcf, 0xe5, 0x4b, 0x68, 0x9b, 0xd1, 0x87, 0x4c, + 0x0f, 0x80, 0xad, 0x02, 0xe6, 0x7f, 0xd4, 0xab, 0x16, 0xc3, 0xf6, 0x86, + 0x63, 0x0c, 0x65, 0x08, 0x36, 0x1e, 0xc9, 0x8d, 0xba, 0x98, 0x67, 0x23, + 0x54, 0xf1, 0x80, 0xa2, 0x17, 0x73, 0x19, 0x67, 0x73, 0x5e, 0x54, 0x64, + 0x19, 0xe9, 0x28, 0xf3, 0xc5, 0x70, 0x9a, 0x55, 0x97, 0x3d, 0x3c, 0xc7, + 0xa4, 0x7d, 0x7e, 0x38, 0xc2, 0x80, 0x67, 0xa5, 0xf9, 0xe1, 0x13, 0x8c, + 0x3e, 0xad, 0xee, 0xa9, 0x68, 0xfd, 0x26, 0xad, 0x1d, 0x6b, 0x19, 0xc3, + 0x5b, 0xfe, 0x9e, 0xb9, 0x9f, 0x22, 0x3e, 0x95, 0x79, 0x31, 0xdf, 0x55, + 0xe7, 0xf8, 0x2c, 0x85, 0x1b, 0x67, 0x7d, 0xe9, 0x49, 0x44, 0xc7, 0x0c, + 0x4c, 0x85, 0x0e, 0x29, 0xf2, 0x0e, 0x70, 0xc9, 0x99, 0x61, 0x44, 0xcd, + 0x9f, 0x9f, 0x62, 0x53, 0xc0, 0xc1, 0x40, 0x46, 0xa1, 0x65, 0xf5, 0x0a, + 0x58, 0x52, 0x72, 0x41, 0x73, 0x99, 0x3b, 0x4e, 0x72, 0x71, 0x0e, 0xca, + 0x06, 0x5c, 0x13, 0xf4, 0x9d, 0x53, 0xec, 0x06, 0x25, 0x16, 0x2e, 0xb1, + 0xbd, 0xd1, 0xe8, 0x56, 0x99, 0xe1, 0xfb, 0xa0, 0x3a, 0x65, 0x09, 0xbb, + 0xc7, 0x2d, 0x59, 0xf0, 0xb7, 0xa2, 0xbb, 0xc6, 0x59, 0xd6, 0xd9, 0xa9, + 0x77, 0xe0, 0xf4, 0x43, 0xb8, 0x5c, 0xe6, 0x15, 0xe7, 0x22, 0x9c, 0x1d, + 0x9e, 0xfa, 0x37, 0xfc, 0xec, 0xec, 0x7b, 0x43, 0x20, 0x3b, 0x70, 0xdc, + 0x73, 0x1b, 0x9b, 0x70, 0xde, 0x7c, 0x71, 0xee, 0x4f, 0x45, 0x3f, 0x5c, + 0x1f, 0x97, 0x09, 0xb0, 0xd1, 0xc7, 0x1b, 0x1c, 0x14, 0xa0, 0x33, 0x6d, + 0x0c, 0xe9, 0x0c, 0xf2, 0xea, 0x5b, 0xc3, 0x24, 0xed, 0x20, 0xaf, 0xbe, + 0x35, 0xcf, 0x6e, 0x13, 0xa5, 0x33, 0x61, 0xd1, 0xf7, 0xeb, 0x37, 0xb8, + 0x63, 0x84, 0x78, 0xd6, 0x5b, 0xa5, 0x45, 0xab, 0xef, 0x22, 0xbd, 0xe6, + 0xf4, 0xb8, 0x12, 0x84, 0x50, 0x04, 0x2a, 0x9e, 0x63, 0x26, 0x09, 0xf4, + 0xb7, 0x10, 0x51, 0xb4, 0x86, 0xfb, 0x61, 0xd9, 0x35, 0xe3, 0x38, 0x69, + 0x74, 0x9e, 0x4e, 0xc9, 0xde, 0xa1, 0xaf, 0x81, 0xc9, 0x28, 0xa2, 0x85, + 0x57, 0x24, 0x9d, 0xe6, 0xa0, 0x4f, 0xa3, 0x08, 0xa2, 0x58, 0x1b, 0x32, + 0x2b, 0xf6, 0xba, 0x25, 0x23, 0x12, 0x23, 0x15, 0x8a, 0xae, 0xa2, 0xcd, + 0x26, 0x59, 0x99, 0x21, 0xe5, 0x03, 0xd7, 0x57, 0x49, 0x1c, 0x91, 0x7e, + 0x80, 0x9c, 0x89, 0xa3, 0x6b, 0xec, 0x62, 0xc2, 0x9d, 0x61, 0x2d, 0xa4, + 0xe2, 0xa7, 0x1c, 0xe5, 0x4d, 0x89, 0x89, 0x3f, 0x99, 0x87, 0x72, 0x69, + 0xe6, 0xdc, 0x39, 0x48, 0xe1, 0x37, 0xf4, 0x23, 0x43, 0x2d, 0x34, 0x3a, + 0x1f, 0x81, 0xe8, 0x1e, 0xdf, 0xbd, 0x39, 0x3a, 0x3b, 0x8b, 0x5e, 0x1d, + 0x9d, 0x5b, 0x03, 0x98, 0x5e, 0xcf, 0x8b, 0x72, 0x06, 0x4a, 0xc1, 0x0d, + 0x30, 0xac, 0x6a, 0x3e, 0x4d, 0x6e, 0xd0, 0xfc, 0x04, 0xe6, 0x79, 0x51, + 0xa2, 0xd2, 0x43, 0x0e, 0xab, 0x68, 0xbc, 0x20, 0xe3, 0x0c, 0x58, 0x32, + 0x7c, 0x3e, 0x71, 0xe5, 0x3e, 0x8a, 0x55, 0xd2, 0x77, 0x1c, 0xf1, 0x4d, + 0x62, 0x52, 0xa2, 0x89, 0x64, 0xbc, 0x9a, 0x40, 0x3c, 0xaa, 0xb3, 0xa8, + 0xb8, 0xf6, 0x1d, 0xed, 0x91, 0x62, 0x55, 0xa2, 0x7a, 0x03, 0xe3, 0x99, + 0xb1, 0xfd, 0x05, 0x77, 0xd0, 0x04, 0x96, 0xd3, 0x49, 0xdd, 0x8f, 0xe0, + 0x3c, 0x06, 0x74, 0x47, 0xdb, 0x6b, 0xd2, 0xd5, 0xe2, 0xac, 0x66, 0x50, + 0x0a, 0x34, 0xa1, 0xa3, 0x89, 0xcd, 0x2f, 0x34, 0x5b, 0x8c, 0xbf, 0x09, + 0x14, 0xba, 0x7c, 0xcc, 0x51, 0x4c, 0xa0, 0xdb, 0x09, 0x05, 0x5b, 0xa3, + 0xf5, 0xf7, 0xfd, 0xe8, 0x55, 0x3f, 0xfa, 0xae, 0x1f, 0x61, 0x14, 0x7e, + 0x83, 0x6c, 0xb5, 0xed, 0xad, 0x9d, 0x47, 0x1c, 0xb0, 0x6d, 0xc4, 0x62, + 0xa3, 0xed, 0xf7, 0xc0, 0x08, 0x74, 0x38, 0x7e, 0x08, 0x67, 0x19, 0x44, + 0xdb, 0xaf, 0x90, 0x43, 0x6c, 0x6f, 0x3d, 0x7a, 0xf6, 0xf8, 0xe9, 0x13, + 0xf9, 0x61, 0x4b, 0x87, 0xb5, 0xab, 0x85, 0x27, 0xd5, 0x10, 0xa0, 0xa5, + 0x83, 0x4e, 0x97, 0xe5, 0x09, 0x1a, 0x8c, 0xea, 0x25, 0xea, 0x47, 0xe8, + 0xc2, 0xcd, 0x26, 0xec, 0x48, 0x12, 0x87, 0x73, 0xd3, 0x7f, 0x0a, 0x2f, + 0x8f, 0xe9, 0x66, 0x98, 0x23, 0xa1, 0x8d, 0x64, 0xe7, 0x4b, 0x32, 0x24, + 0x1f, 0x62, 0x21, 0xda, 0x58, 0x68, 0x36, 0xe3, 0xa2, 0x86, 0x37, 0x60, + 0x6d, 0x6c, 0x05, 0xd5, 0xfe, 0x2e, 0x83, 0xa6, 0x6c, 0x95, 0x6d, 0xb4, + 0xbd, 0x8b, 0x05, 0x2a, 0x96, 0xf8, 0x00, 0xe8, 0x89, 0xe4, 0x97, 0x24, + 0x0a, 0x36, 0x2e, 0x09, 0xf6, 0xe3, 0xb5, 0x47, 0x81, 0xa5, 0xc1, 0x3f, + 0xe7, 0x40, 0x38, 0xbc, 0x1c, 0x2f, 0x6a, 0x4f, 0x91, 0x6a, 0x8f, 0xee, + 0x90, 0x8d, 0x90, 0xca, 0x41, 0xc6, 0x25, 0xfc, 0x03, 0x8c, 0x2f, 0xf2, + 0xc8, 0x01, 0xc1, 0x00, 0x09, 0xe2, 0x8b, 0x68, 0x61, 0xc0, 0xc7, 0xe9, + 0x70, 0x40, 0x69, 0x24, 0x76, 0xc5, 0xf0, 0x92, 0x29, 0xc5, 0x08, 0x22, + 0xd9, 0xe7, 0x5a, 0x4b, 0xec, 0x50, 0x37, 0xef, 0x44, 0xeb, 0x5f, 0x6f, + 0xf4, 0xc9, 0x70, 0xb2, 0x9e, 0x37, 0x6b, 0x3f, 0x89, 0x55, 0xe3, 0xdc, + 0x41, 0x72, 0xaf, 0x92, 0x56, 0xcb, 0xde, 0x32, 0xf2, 0x44, 0xc0, 0x24, + 0x78, 0x11, 0x95, 0xfb, 0x89, 0x0b, 0xc0, 0x1e, 0x93, 0xd5, 0x82, 0xe7, + 0xb0, 0x9f, 0x85, 0xdd, 0x3a, 0x0c, 0x12, 0x37, 0x36, 0xa9, 0x7d, 0x66, + 0x81, 0x54, 0x87, 0x94, 0x53, 0x68, 0xcc, 0xb6, 0x45, 0xbd, 0x61, 0x52, + 0xf6, 0xac, 0xd9, 0xc8, 0xb7, 0x10, 0xaf, 0x65, 0x99, 0x5e, 0x90, 0x65, + 0xc0, 0x3b, 0x8b, 0x5f, 0xf9, 0x07, 0xe7, 0x2b, 0x75, 0x80, 0x78, 0x88, + 0x8f, 0x64, 0x64, 0x0c, 0xc0, 0xf6, 0x83, 0xba, 0x89, 0x37, 0x46, 0x03, + 0x3b, 0x14, 0x5a, 0x10, 0x6a, 0x09, 0x10, 0x8b, 0xa1, 0xd0, 0x02, 0x6f, + 0x0b, 0x2a, 0xed, 0x1a, 0x17, 0x4c, 0xa3, 0xb8, 0x42, 0xe3, 0xb3, 0x82, + 0xbd, 0x47, 0xb7, 0x3c, 0x69, 0x76, 0x18, 0x1c, 0x38, 0x7a, 0x73, 0xe6, + 0xa4, 0xf2, 0xd0, 0x86, 0xce, 0xd0, 0x6f, 0x8a, 0xa1, 0x5d, 0xce, 0xfb, + 0x18, 0xc2, 0x6e, 0x11, 0xc9, 0x3f, 0x1b, 0x3c, 0x06, 0x13, 0x5c, 0x3f, + 0x1d, 0x5d, 0x26, 0xa0, 0x74, 0x27, 0x48, 0x25, 0x22, 0x76, 0xfa, 0x18, + 0xe2, 0xc0, 0x30, 0x8d, 0xd9, 0xd0, 0x92, 0x03, 0x8f, 0xce, 0x90, 0xba, + 0xf7, 0x18, 0x7b, 0x81, 0xeb, 0x56, 0x8c, 0x28, 0x3c, 0x4b, 0xc1, 0x93, + 0x63, 0xbd, 0x6e, 0x14, 0x2e, 0x27, 0x99, 0x02, 0x26, 0x6c, 0x66, 0x3f, + 0xcb, 0x4c, 0xc3, 0x57, 0x58, 0xdf, 0xad, 0x29, 0xec, 0x08, 0x47, 0x95, + 0xe5, 0xa3, 0xe9, 0x62, 0x9c, 0x1a, 0x29, 0x98, 0xe5, 0x18, 0x08, 0x97, + 0xbb, 0x49, 0x37, 0x12, 0x14, 0xae, 0xd1, 0xe5, 0x17, 0x56, 0xa1, 0xc6, + 0x60, 0xfb, 0xc8, 0x3c, 0xcf, 0xe1, 0xe5, 0xbc, 0x2e, 0x8b, 0xf1, 0x62, + 0x84, 0x56, 0xe4, 0x25, 0x05, 0xca, 0xfc, 0xdc, 0x8d, 0x64, 0x7a, 0x8d, + 0x9c, 0x64, 0x0a, 0xeb, 0xcb, 0x79, 0x4c, 0xda, 0x62, 0xdc, 0x8c, 0xaa, + 0xe6, 0xcd, 0x32, 0x6b, 0x20, 0xd7, 0xb7, 0x18, 0x4c, 0x8e, 0x5f, 0x86, + 0x1e, 0x52, 0x47, 0x09, 0xfe, 0x63, 0x50, 0xa5, 0x9b, 0xb8, 0xe0, 0x2f, + 0xdc, 0x8c, 0x1d, 0x31, 0xfd, 0x74, 0x30, 0xf2, 0x84, 0xb9, 0xdb, 0x49, + 0xd1, 0x26, 0x5a, 0x4b, 0x75, 0x59, 0x5c, 0xab, 0x99, 0x25, 0xeb, 0x80, + 0xed, 0x48, 0xac, 0xcb, 0x28, 0xa7, 0x7d, 0xd8, 0xf3, 0xe6, 0x84, 0x6d, + 0xac, 0x36, 0x61, 0x40, 0x1c, 0x8f, 0xc2, 0x89, 0x5f, 0x7c, 0x71, 0x42, + 0xe9, 0x5d, 0xc6, 0x48, 0x3e, 0x11, 0x33, 0x85, 0xc5, 0xb0, 0x86, 0x3b, + 0x48, 0x47, 0x29, 0xc1, 0xdc, 0x2a, 0x28, 0x2c, 0x83, 0x4c, 0xf8, 0x15, + 0xe5, 0x7a, 0xb8, 0xc1, 0x92, 0xca, 0x78, 0xef, 0xad, 0x39, 0x93, 0x8c, + 0xc7, 0x19, 0x19, 0xb2, 0x53, 0x71, 0x59, 0x63, 0x90, 0x54, 0x6e, 0xda, + 0x8c, 0xa8, 0xc0, 0xe4, 0x00, 0xd4, 0xf8, 0x1b, 0x7b, 0x5d, 0xdd, 0xe9, + 0x8d, 0x3a, 0x3c, 0xa6, 0x08, 0x05, 0xb3, 0x5d, 0xb8, 0x8e, 0x18, 0xdf, + 0x1f, 0x4b, 0x48, 0xc0, 0x04, 0xf7, 0xd3, 0x31, 0x87, 0x48, 0x40, 0x97, + 0x18, 0x34, 0xf6, 0x17, 0xb7, 0x8d, 0x02, 0x25, 0x1c, 0x60, 0x8a, 0x71, + 0xb0, 0x1e, 0x45, 0xed, 0x66, 0x51, 0xeb, 0x4b, 0xe0, 0xf6, 0x8c, 0xdd, + 0xd0, 0x5c, 0x9f, 0x8c, 0xfb, 0xa1, 0x91, 0x0a, 0xa4, 0x91, 0xb6, 0xcd, + 0x8a, 0x44, 0xfc, 0xb7, 0x9a, 0x89, 0x81, 0x39, 0x06, 0x24, 0x24, 0x2a, + 0xfe, 0xf6, 0x3e, 0x1c, 0x1f, 0x3e, 0x79, 0x71, 0xa9, 0x8f, 0x3a, 0x9e, + 0xf1, 0x04, 0xfd, 0x56, 0x60, 0x8f, 0xa5, 0x39, 0x7b, 0xf9, 0xc8, 0x43, + 0x5a, 0x94, 0x2c, 0x8b, 0xa7, 0x05, 0xc6, 0xaf, 0x38, 0x62, 0x29, 0xcb, + 0xc6, 0x55, 0xe3, 0x2a, 0xf1, 0x9e, 0x73, 0xce, 0x9d, 0x55, 0xcd, 0xcd, + 0xa2, 0xe5, 0x3c, 0xaa, 0x5b, 0x97, 0xe6, 0x68, 0x8a, 0xb4, 0x47, 0x86, + 0x06, 0xe5, 0x60, 0xd9, 0x15, 0xc6, 0x79, 0x33, 0x24, 0x02, 0xf0, 0xf0, + 0xdd, 0xc3, 0xe5, 0x61, 0x34, 0x1c, 0xd7, 0xda, 0xa8, 0x88, 0xfc, 0x9a, + 0x60, 0xf1, 0x22, 0x8f, 0x32, 0x14, 0x60, 0xe3, 0xe3, 0x81, 0x50, 0xe8, + 0x4d, 0x33, 0xb8, 0x6d, 0xc8, 0x89, 0x92, 0x24, 0x2c, 0xc1, 0x91, 0x93, + 0x8d, 0x13, 0x3b, 0xe2, 0xab, 0x08, 0x19, 0x3f, 0x70, 0x24, 0x3c, 0xfe, + 0xf8, 0xe4, 0xe5, 0x95, 0xc3, 0xc0, 0x31, 0x9b, 0x21, 0xc7, 0x48, 0x7d, + 0x9f, 0x86, 0x18, 0x16, 0x05, 0x5c, 0x67, 0xfb, 0x79, 0xc8, 0xba, 0xd2, + 0x1c, 0xf9, 0xec, 0x58, 0x23, 0x9c, 0x12, 0xff, 0xc3, 0x91, 0xc1, 0xaa, + 0x8a, 0x92, 0x0b, 0x27, 0x40, 0x24, 0x3c, 0xd9, 0x3c, 0x9b, 0x17, 0xf2, + 0x38, 0x9e, 0x16, 0x25, 0xad, 0xf4, 0x0d, 0xd7, 0x34, 0xc9, 0x47, 0x1a, + 0x51, 0xe4, 0x98, 0x1e, 0xba, 0x57, 0x8c, 0x23, 0x89, 0xe2, 0x71, 0xac, + 0xb4, 0x4a, 0x74, 0x11, 0x46, 0x44, 0x97, 0xf1, 0xf7, 0xc5, 0x35, 0xfa, + 0x31, 0xfa, 0x9c, 0xa0, 0x93, 0x55, 0x92, 0xfd, 0x01, 0xa6, 0x37, 0xd8, + 0x8e, 0xb0, 0x97, 0x94, 0x5a, 0x44, 0x3f, 0x73, 0xd2, 0xb0, 0x90, 0x39, + 0xb0, 0x10, 0xd0, 0x8f, 0x68, 0x70, 0x14, 0xd7, 0xdf, 0x47, 0x01, 0x92, + 0x78, 0x0f, 0x69, 0x88, 0x4e, 0x25, 0xab, 0xe8, 0xc0, 0xe8, 0x86, 0x01, + 0xd9, 0xa4, 0x12, 0xf1, 0x22, 0x47, 0x60, 0x89, 0x57, 0xb2, 0xe6, 0x7b, + 0x86, 0x1f, 0xc7, 0x17, 0xb4, 0xb1, 0x2f, 0xe2, 0x9b, 0x19, 0x39, 0x7b, + 0xcb, 0x2f, 0x81, 0x5a, 0xf9, 0x61, 0x94, 0xce, 0x6b, 0x93, 0x94, 0xa0, + 0x1b, 0x2f, 0x8e, 0x70, 0xdc, 0x7f, 0xce, 0x7b, 0x49, 0xa6, 0x36, 0x9e, + 0xfa, 0x1d, 0xfd, 0xdb, 0x61, 0x2e, 0x75, 0xc2, 0x89, 0x4a, 0x59, 0xa9, + 0xe4, 0x86, 0x8b, 0x41, 0xfb, 0x84, 0xec, 0x68, 0xf4, 0xa3, 0x82, 0x51, + 0x05, 0x2b, 0xb5, 0x9f, 0xd4, 0xe2, 0x00, 0x93, 0x62, 0x3a, 0x65, 0xd6, + 0x69, 0x97, 0x40, 0x93, 0xf3, 0xdc, 0x7b, 0xf0, 0x16, 0x46, 0xae, 0x62, + 0x94, 0x45, 0x37, 0x38, 0x86, 0x64, 0x5b, 0x9a, 0x3c, 0xb9, 0xd8, 0x6a, + 0xcb, 0xd3, 0xd8, 0x90, 0x75, 0x9f, 0x73, 0xe9, 0x9c, 0x64, 0x3a, 0x96, + 0xf8, 0x9e, 0xb0, 0xe7, 0x9f, 0x94, 0xfc, 0x4a, 0x14, 0x9f, 0x39, 0x3a, + 0x01, 0x1e, 0x5b, 0x4c, 0x61, 0x09, 0x12, 0xdd, 0xf5, 0x18, 0xfe, 0xce, + 0x7f, 0xbb, 0x01, 0x52, 0x13, 0xc5, 0x08, 0x7f, 0x50, 0x63, 0x3a, 0x51, + 0x9c, 0x54, 0xa3, 0x2c, 0xb3, 0xff, 0x04, 0x5d, 0x7b, 0x92, 0x5d, 0x38, + 0xc3, 0xf1, 0x8f, 0xb3, 0x71, 0x65, 0x9f, 0x41, 0x65, 0xdf, 0xfc, 0x4b, + 0xee, 0x0c, 0xfe, 0x1b, 0x43, 0xc6, 0x45, 0xe5, 0xf0, 0x80, 0x38, 0x4e, + 0x86, 0x15, 0x3e, 0x55, 0xc7, 0x8b, 0x3c, 0xfb, 0x10, 0x57, 0x05, 0xe6, + 0x29, 0x45, 0xfb, 0xf3, 0xa4, 0xbe, 0xfc, 0xba, 0x65, 0x32, 0xad, 0xa3, + 0xc2, 0xb8, 0x11, 0x69, 0x0e, 0x1c, 0x9e, 0x68, 0xc9, 0x2c, 0x0e, 0xc5, + 0x30, 0x8f, 0x12, 0xbd, 0x85, 0x51, 0x80, 0x7d, 0xcc, 0xf0, 0xfc, 0x78, + 0xb0, 0xbe, 0xea, 0x4c, 0xad, 0xe1, 0x80, 0x44, 0x8d, 0x67, 0x1d, 0x38, + 0x45, 0x8d, 0x0e, 0x43, 0xb8, 0x08, 0xaf, 0x8b, 0x3a, 0xdd, 0xc3, 0x7f, + 0x23, 0x39, 0x11, 0x85, 0x2b, 0x65, 0x92, 0x74, 0x9a, 0xb0, 0x06, 0x91, + 0xf8, 0x6e, 0x18, 0x9e, 0x5f, 0x26, 0x8d, 0xbc, 0x30, 0xfe, 0xda, 0x37, + 0x6b, 0xfd, 0xe8, 0x92, 0x6f, 0x19, 0x0d, 0xc8, 0xdf, 0x68, 0x32, 0xc9, + 0xda, 0xc3, 0x5d, 0x92, 0x3e, 0x8e, 0x5c, 0x90, 0xd3, 0x4b, 0xe8, 0x4e, + 0x8a, 0x07, 0xcc, 0x64, 0x7c, 0x0c, 0xbe, 0x68, 0xbd, 0x06, 0x52, 0xae, + 0x63, 0x4b, 0x39, 0x2f, 0x97, 0xe5, 0x9f, 0xe6, 0x12, 0x91, 0x51, 0x86, + 0x16, 0x1f, 0x29, 0x92, 0xd3, 0xa4, 0xf2, 0x56, 0x91, 0x9a, 0xf8, 0x2f, + 0xdf, 0x57, 0x6f, 0x42, 0x8d, 0x67, 0xb5, 0x13, 0xc8, 0x39, 0x1b, 0x3c, + 0xbc, 0x14, 0xfe, 0x0f, 0x6d, 0x68, 0x20, 0xa4, 0xd3, 0x9e, 0xe1, 0x2c, + 0x4d, 0x59, 0x3f, 0x8d, 0xdd, 0x41, 0x06, 0xd1, 0x81, 0x46, 0x71, 0x9e, + 0x0e, 0x1e, 0x73, 0x0c, 0xc7, 0xd2, 0xd4, 0xb4, 0x8e, 0xab, 0xab, 0x51, + 0xb4, 0x4f, 0xe1, 0x34, 0xe4, 0x82, 0x41, 0x5a, 0x3a, 0xdb, 0x50, 0x55, + 0x5f, 0x38, 0x08, 0x33, 0x66, 0x3e, 0x6f, 0x1d, 0x43, 0x38, 0x12, 0x06, + 0xf6, 0x51, 0xb3, 0xc1, 0x1d, 0xf6, 0xad, 0x79, 0x33, 0x4f, 0x34, 0x2f, + 0x32, 0xeb, 0xdc, 0xa0, 0x2c, 0x0a, 0x3c, 0x30, 0x1d, 0x6c, 0x04, 0x82, + 0x28, 0x8d, 0xc4, 0x52, 0xb1, 0xc9, 0xa4, 0x6d, 0xb7, 0x32, 0xed, 0x74, + 0x74, 0x40, 0x0c, 0x26, 0x31, 0x5a, 0xf7, 0xd8, 0x18, 0xc3, 0x7d, 0xf6, + 0xad, 0xd2, 0x60, 0xb0, 0x7c, 0x0c, 0xaf, 0x98, 0x00, 0x27, 0x8e, 0xdd, + 0x1a, 0x8e, 0x16, 0x46, 0xec, 0x53, 0xc2, 0xf8, 0x97, 0x20, 0xb6, 0x86, + 0x28, 0x9c, 0x67, 0xc5, 0x98, 0xd2, 0x42, 0xbd, 0x63, 0x3d, 0x33, 0x99, + 0x5e, 0xbd, 0x9e, 0xf3, 0x75, 0xeb, 0x98, 0xfa, 0x06, 0x64, 0x98, 0x5f, + 0xd4, 0x97, 0x1b, 0x36, 0x93, 0x49, 0xfd, 0x8c, 0xb0, 0x10, 0xfa, 0xda, + 0xbc, 0x7d, 0xd7, 0x28, 0x9e, 0x4d, 0x24, 0xf1, 0xeb, 0xa2, 0xaa, 0x29, + 0xcd, 0x55, 0x0c, 0x0d, 0xf9, 0x08, 0x58, 0x4a, 0x3a, 0x2b, 0xca, 0x9b, + 0x10, 0x41, 0x33, 0xed, 0xeb, 0x19, 0x09, 0x21, 0x1a, 0x1a, 0x16, 0x12, + 0xa6, 0xc1, 0xd9, 0x3f, 0x62, 0x3c, 0x4c, 0xe8, 0x73, 0x6c, 0x3b, 0xec, + 0x45, 0xaa, 0x73, 0xce, 0xee, 0x50, 0x12, 0x72, 0x90, 0xf2, 0x49, 0xf1, + 0xd4, 0xc1, 0x51, 0x78, 0xf0, 0xc7, 0x78, 0x0b, 0xb2, 0xd4, 0x85, 0x4a, + 0x03, 0x68, 0x83, 0xfe, 0x6a, 0x28, 0x3d, 0xb9, 0xe1, 0xf2, 0x5e, 0xf5, + 0xd6, 0xc8, 0x0c, 0xf0, 0x3f, 0xcc, 0x62, 0x5b, 0xf1, 0x96, 0x80, 0x04, + 0x28, 0xa6, 0x57, 0xc2, 0x76, 0x63, 0xc9, 0x74, 0x8e, 0xeb, 0xa2, 0x71, + 0x65, 0x9e, 0x3c, 0x1a, 0x6c, 0x37, 0xae, 0x4c, 0x7e, 0x93, 0x2c, 0xea, + 0xcb, 0x30, 0xcb, 0x45, 0x57, 0x5a, 0x65, 0x1d, 0x69, 0xd9, 0x05, 0x46, + 0x96, 0x49, 0x0f, 0x5d, 0x60, 0xc6, 0x7c, 0x9d, 0x71, 0xde, 0x70, 0xc4, + 0x59, 0x11, 0x68, 0x98, 0x80, 0xba, 0x97, 0x4e, 0x27, 0xfd, 0x40, 0xb8, + 0x44, 0x35, 0x15, 0xd4, 0x2b, 0xd0, 0x73, 0x43, 0x43, 0xe5, 0xa9, 0x98, + 0xf5, 0x18, 0x12, 0x8a, 0x30, 0x77, 0x14, 0x44, 0x7b, 0x92, 0xcd, 0x24, + 0x2e, 0x29, 0xbe, 0xc8, 0x81, 0xe7, 0xdf, 0x45, 0xba, 0x60, 0x53, 0x1d, + 0xd3, 0x9d, 0xb1, 0xdc, 0x81, 0x93, 0x81, 0x34, 0x9d, 0x3b, 0x51, 0x9f, + 0x02, 0x3b, 0x6b, 0x2f, 0xd3, 0xd1, 0x7b, 0xe5, 0xf8, 0x65, 0xea, 0x71, + 0x70, 0x32, 0xd0, 0xe3, 0x4b, 0x60, 0xb2, 0x9c, 0xf6, 0x5d, 0x5f, 0x2e, + 0xd0, 0xd1, 0x54, 0x54, 0x55, 0x86, 0x69, 0x7e, 0xe8, 0x17, 0x5b, 0x8c, + 0x68, 0x5c, 0x92, 0x01, 0x70, 0xbd, 0xe1, 0x42, 0x52, 0x16, 0x37, 0x09, + 0x8f, 0xd6, 0x70, 0x20, 0x9b, 0xf2, 0x31, 0x48, 0xc0, 0x6c, 0xae, 0xb9, + 0xdc, 0x42, 0x5c, 0x6a, 0xc2, 0x17, 0x94, 0x88, 0xc6, 0xfc, 0xc1, 0x1a, + 0x8d, 0xba, 0xa5, 0xed, 0xd5, 0xc9, 0x16, 0xcb, 0x1e, 0xf7, 0xc5, 0x3c, + 0x54, 0xe5, 0x75, 0x5c, 0xa8, 0x86, 0x38, 0x4c, 0xaa, 0x6c, 0x44, 0xaa, + 0x7a, 0x06, 0x36, 0x26, 0x89, 0xf1, 0xbc, 0x9e, 0xce, 0x42, 0x47, 0x81, + 0x7a, 0xcb, 0x45, 0x51, 0xa3, 0x5a, 0xe1, 0x91, 0x39, 0x07, 0x5f, 0x0c, + 0x5d, 0x68, 0x04, 0xc0, 0xb5, 0x1c, 0x32, 0x36, 0xd8, 0x61, 0x6a, 0xf1, + 0x46, 0xb2, 0x93, 0x9f, 0x5c, 0xa0, 0xed, 0xe9, 0x60, 0xb4, 0x11, 0xb9, + 0x99, 0xd0, 0xb8, 0x51, 0xdb, 0x4d, 0x5d, 0x21, 0x94, 0x65, 0x85, 0x06, + 0xf7, 0x75, 0x26, 0xda, 0x02, 0xd5, 0x61, 0x48, 0x0e, 0xca, 0x34, 0xf3, + 0xa5, 0xe3, 0x0c, 0xb9, 0x08, 0x99, 0x62, 0x92, 0xa8, 0x55, 0xa6, 0xa0, + 0x6a, 0x8d, 0x95, 0x3b, 0xb3, 0xe1, 0x20, 0x22, 0x34, 0x29, 0xd1, 0xc3, + 0x45, 0xf1, 0x45, 0x13, 0x11, 0x69, 0xb3, 0x6f, 0xbb, 0x6e, 0x7a, 0x5d, + 0x5c, 0x3c, 0xd6, 0xb5, 0x33, 0x91, 0xc2, 0x97, 0xf6, 0x1e, 0x11, 0xdb, + 0x05, 0x06, 0x8e, 0xf9, 0x64, 0xbc, 0xff, 0x0b, 0xdc, 0x70, 0x38, 0x66, + 0x5f, 0x34, 0x73, 0x62, 0x75, 0x73, 0x57, 0x4d, 0xfc, 0x9c, 0xf9, 0x06, + 0xf2, 0x65, 0x0c, 0x56, 0x13, 0x5d, 0xa5, 0x93, 0x09, 0xdc, 0xdb, 0x95, + 0x05, 0xae, 0x8c, 0xcc, 0x8b, 0x00, 0x6a, 0xd9, 0x9b, 0x5f, 0x8f, 0x57, + 0x64, 0x20, 0xa0, 0x27, 0x7c, 0xb8, 0xd1, 0x91, 0xfa, 0x4a, 0x53, 0x42, + 0x32, 0x4c, 0x56, 0x0e, 0xeb, 0x48, 0xf0, 0x89, 0x64, 0x8e, 0xa1, 0xc1, + 0x36, 0xf7, 0x40, 0x77, 0x19, 0xc6, 0x20, 0x36, 0x58, 0xfd, 0x17, 0xea, + 0xc7, 0xcb, 0xc3, 0x3b, 0x2c, 0x1e, 0x17, 0xe1, 0xec, 0x28, 0x24, 0x84, + 0xcb, 0x04, 0x87, 0x53, 0xa7, 0x19, 0x68, 0x4c, 0xa0, 0x44, 0x90, 0x50, + 0x72, 0xae, 0x12, 0xc6, 0x35, 0x34, 0x37, 0x5e, 0xbc, 0x3e, 0x0e, 0x4b, + 0x09, 0x48, 0xc5, 0x66, 0xae, 0xa3, 0x9a, 0xfa, 0x23, 0xb6, 0xeb, 0x07, + 0xa4, 0x07, 0xb2, 0x84, 0xa6, 0x35, 0x4e, 0xa6, 0xc9, 0x05, 0xfe, 0x3e, + 0xbb, 0xc8, 0x0b, 0x2e, 0xad, 0x6a, 0x53, 0x78, 0x01, 0xf2, 0x91, 0x02, + 0x2e, 0xec, 0xda, 0xaf, 0xa2, 0x75, 0xf6, 0x1b, 0xe1, 0x82, 0x4e, 0xe0, + 0x73, 0xce, 0xce, 0xbe, 0xdf, 0x58, 0x46, 0x14, 0xce, 0x3e, 0xde, 0x85, + 0x2e, 0xa2, 0xe8, 0x79, 0xe6, 0x05, 0xc4, 0x39, 0x3d, 0x4e, 0x6c, 0x25, + 0xc7, 0x66, 0xe4, 0x61, 0x57, 0xa5, 0x25, 0x3e, 0xa4, 0x98, 0x76, 0x9a, + 0xe3, 0xfe, 0x66, 0x81, 0x13, 0x2f, 0xf3, 0xba, 0x9b, 0x9e, 0xc8, 0xb6, + 0xa0, 0xdc, 0x70, 0x26, 0xa1, 0xc3, 0x3e, 0x8b, 0x25, 0x38, 0xaa, 0x05, + 0x58, 0x17, 0x75, 0x43, 0x0c, 0x5d, 0x57, 0x71, 0x95, 0x5d, 0x5c, 0x3d, + 0x02, 0xf5, 0x98, 0xb5, 0xd5, 0x72, 0xfb, 0xa7, 0x3d, 0xfd, 0xeb, 0xce, + 0x4f, 0x7b, 0x65, 0x7a, 0x01, 0xb4, 0xf2, 0xd3, 0x1e, 0x6e, 0x32, 0x70, + 0x8b, 0x5f, 0x7e, 0xf9, 0xe5, 0x6b, 0xff, 0x56, 0x46, 0x07, 0x3f, 0x9c, + 0x45, 0x7f, 0x7f, 0x44, 0x25, 0x24, 0x54, 0xd8, 0xd6, 0x16, 0x54, 0x52, + 0x85, 0xa2, 0xfa, 0x94, 0xb7, 0x31, 0x12, 0x95, 0xa0, 0x49, 0x8d, 0x86, + 0xce, 0xbe, 0x13, 0x49, 0x67, 0xd3, 0x92, 0x11, 0xa2, 0x69, 0x10, 0x3c, + 0x1c, 0x21, 0x99, 0x5e, 0x14, 0x40, 0x82, 0x97, 0x33, 0x3f, 0x76, 0x94, + 0x33, 0x65, 0x51, 0x54, 0x77, 0x51, 0x5f, 0x90, 0x78, 0x6a, 0x2d, 0x4a, + 0x04, 0x4f, 0x70, 0x31, 0xfc, 0xd9, 0x4b, 0x96, 0xe2, 0xe8, 0x9d, 0xa0, + 0x51, 0x82, 0x19, 0x98, 0xcc, 0x2f, 0xf1, 0xce, 0xc2, 0xa4, 0xbe, 0xdd, + 0x43, 0x72, 0xb1, 0x2a, 0x16, 0x25, 0xa6, 0xbe, 0x8f, 0xc0, 0x50, 0x95, + 0x92, 0xa2, 0x75, 0x9e, 0x26, 0xc6, 0xfc, 0xaf, 0x0d, 0x5e, 0x75, 0x6d, + 0x27, 0x97, 0x04, 0xe5, 0xf6, 0x70, 0xb3, 0xac, 0xae, 0x35, 0x69, 0x9e, + 0x73, 0x69, 0xc7, 0xb4, 0x98, 0xe0, 0x77, 0xc8, 0xb1, 0xdd, 0xf1, 0x43, + 0x4c, 0xee, 0x1f, 0x1e, 0x46, 0x9b, 0xd6, 0xd9, 0x94, 0x19, 0xde, 0x90, + 0x1b, 0xa0, 0x58, 0x8c, 0xa3, 0x75, 0x19, 0xbc, 0xbd, 0x7c, 0x9d, 0x53, + 0x13, 0xac, 0x65, 0xc5, 0x21, 0x19, 0xb0, 0x74, 0xfd, 0xa8, 0x8a, 0xba, + 0x14, 0x1a, 0xb2, 0xa8, 0x44, 0x1b, 0x35, 0x4a, 0xa5, 0x6b, 0x40, 0x85, + 0x94, 0xfc, 0x55, 0xb9, 0xbb, 0x99, 0xbc, 0x07, 0x7f, 0xdd, 0x4b, 0x66, + 0xbf, 0xed, 0x2d, 0xaa, 0x38, 0x85, 0x99, 0xe2, 0x9d, 0xbd, 0xb4, 0xea, + 0x29, 0xdb, 0xef, 0xbd, 0x4f, 0x6f, 0xf6, 0x38, 0xd1, 0xae, 0xb7, 0x22, + 0xf3, 0x77, 0x78, 0xbd, 0x95, 0x65, 0xae, 0xe6, 0xf8, 0xf4, 0x71, 0xd3, + 0xd8, 0xa2, 0x17, 0xee, 0xa2, 0x37, 0xa2, 0xe6, 0x47, 0x31, 0x9f, 0x6f, + 0x79, 0x8a, 0x26, 0xf5, 0x9b, 0x80, 0x42, 0x40, 0x33, 0x23, 0x16, 0x8e, + 0xa5, 0x92, 0x56, 0x93, 0xc2, 0x27, 0x35, 0xf5, 0x9a, 0x35, 0x06, 0x2b, + 0x48, 0xe8, 0x5a, 0x2e, 0x28, 0xf2, 0x49, 0x27, 0xd9, 0x1e, 0x0e, 0x93, + 0xbe, 0xfa, 0xad, 0x42, 0x45, 0xe4, 0x9a, 0xb0, 0x46, 0x94, 0x22, 0x25, + 0x27, 0x42, 0x83, 0x01, 0x7f, 0x95, 0x15, 0x8b, 0x6a, 0x7a, 0xc3, 0x39, + 0xe0, 0x3c, 0x36, 0xd2, 0xa8, 0x6f, 0x24, 0x57, 0x94, 0xbe, 0x60, 0x0b, + 0xa4, 0x3a, 0x14, 0xe3, 0x75, 0xac, 0x02, 0x23, 0x9f, 0x21, 0xeb, 0x64, + 0x24, 0x4e, 0xdb, 0xab, 0x63, 0xad, 0x8d, 0x0a, 0x1c, 0x8c, 0x7a, 0xb6, + 0xf1, 0x80, 0xba, 0x07, 0x1f, 0xf0, 0x83, 0x6b, 0x1e, 0x0b, 0xba, 0x5f, + 0x7b, 0xf3, 0xa4, 0xaa, 0x30, 0xc9, 0xcc, 0x4c, 0x74, 0x1f, 0xd5, 0x83, + 0xde, 0x74, 0x69, 0x6c, 0x94, 0xc4, 0x9c, 0xe3, 0xd5, 0xa6, 0xb3, 0xf3, + 0x97, 0x67, 0x21, 0x32, 0x43, 0xea, 0x38, 0x3c, 0x00, 0xbe, 0x82, 0xb9, + 0xd2, 0xe6, 0x66, 0x6b, 0x9e, 0x98, 0x2a, 0x76, 0x9e, 0x1e, 0x58, 0xdd, + 0x80, 0x3a, 0x31, 0x23, 0x4d, 0x03, 0xe8, 0x00, 0xed, 0x5f, 0xf2, 0xfc, + 0xa4, 0x78, 0x03, 0xbe, 0x75, 0x82, 0xb8, 0x34, 0x95, 0x8d, 0x9e, 0xc2, + 0x8c, 0xc8, 0xc5, 0x0e, 0x0f, 0x3c, 0x97, 0x10, 0x4e, 0x6f, 0x78, 0x04, + 0x59, 0x85, 0x52, 0x71, 0x42, 0x32, 0x15, 0xd3, 0xea, 0x4c, 0x2e, 0x51, + 0x5f, 0xaa, 0x8c, 0xaf, 0x6d, 0xa1, 0x52, 0x5b, 0xff, 0x71, 0x49, 0xbc, + 0x96, 0x42, 0x21, 0xaa, 0xf7, 0x63, 0x3f, 0xa7, 0x7c, 0x93, 0x7c, 0xc5, + 0x1a, 0x3c, 0x7b, 0x9d, 0x03, 0xf3, 0x81, 0x15, 0x07, 0x58, 0xb1, 0x63, + 0x51, 0x4b, 0xd9, 0x28, 0x25, 0xcc, 0x71, 0x65, 0x11, 0x7f, 0x5f, 0x6e, + 0x52, 0xef, 0x68, 0x4d, 0x98, 0xf0, 0xa5, 0xd9, 0xe6, 0xad, 0xe1, 0x58, + 0xbd, 0x79, 0x39, 0x60, 0x35, 0xaf, 0xfd, 0x36, 0x86, 0xaa, 0xe8, 0x5d, + 0xb2, 0xe5, 0x28, 0x08, 0x77, 0x86, 0x21, 0xb0, 0x9c, 0x7c, 0x97, 0xf8, + 0x55, 0x6d, 0x56, 0xcc, 0xd5, 0xe8, 0x11, 0xd7, 0xbf, 0x4e, 0x33, 0x49, + 0x54, 0xe6, 0x03, 0xc6, 0x19, 0x68, 0xc1, 0xb4, 0xeb, 0x4e, 0xf6, 0x9f, + 0x9e, 0xb7, 0xf7, 0xb1, 0x1c, 0x57, 0x97, 0x25, 0xb0, 0x33, 0xee, 0xba, + 0x98, 0x4e, 0x60, 0xc1, 0x91, 0xd4, 0x54, 0x39, 0xd0, 0x00, 0x76, 0x8b, + 0x4d, 0x99, 0x52, 0x6b, 0x38, 0x29, 0x5a, 0x5a, 0x76, 0xc5, 0x0c, 0xb9, + 0xde, 0x4d, 0x91, 0x5b, 0x45, 0x93, 0x33, 0x43, 0xaf, 0x2a, 0x3a, 0xec, + 0x9a, 0x56, 0xbb, 0x91, 0x23, 0xa0, 0xb0, 0x92, 0xcc, 0xc8, 0x51, 0x42, + 0x2e, 0x3b, 0x12, 0x0d, 0xef, 0xf1, 0x07, 0x58, 0x55, 0x84, 0xf6, 0xbb, + 0x23, 0x1e, 0x9e, 0x0d, 0x76, 0x9a, 0xd2, 0x81, 0x5f, 0x67, 0x4f, 0xdc, + 0xd7, 0x2b, 0xdc, 0x5e, 0x5b, 0xb1, 0x8c, 0xef, 0xa3, 0x65, 0x9c, 0x88, + 0x1a, 0x6f, 0x6f, 0xa7, 0x77, 0x3f, 0xd2, 0x48, 0x2e, 0xab, 0xb8, 0xe0, + 0xf1, 0x69, 0xb2, 0x38, 0x51, 0xdb, 0xc4, 0x7d, 0x34, 0xc7, 0x01, 0xc4, + 0xe2, 0x8c, 0x4b, 0xd5, 0xd6, 0x6d, 0xa2, 0x76, 0x7e, 0xbf, 0x5e, 0x6d, + 0xb0, 0xc9, 0x39, 0x24, 0x57, 0xd5, 0xe9, 0xd1, 0xab, 0x88, 0x23, 0xc0, + 0x68, 0x26, 0x48, 0x8e, 0x8d, 0x62, 0x2f, 0x18, 0x52, 0xf7, 0xc5, 0xbd, + 0x53, 0x2d, 0x44, 0x4b, 0xe3, 0x10, 0x05, 0x86, 0x70, 0xaa, 0xa2, 0x2d, + 0xc0, 0xea, 0x9b, 0x79, 0x36, 0xa2, 0x81, 0x25, 0x25, 0xcd, 0x73, 0x64, + 0xd5, 0xe4, 0x47, 0xc6, 0x60, 0x99, 0x33, 0x66, 0x07, 0xf1, 0xa3, 0xd9, + 0x7e, 0x91, 0x67, 0xbf, 0xc9, 0x8d, 0x09, 0x56, 0xd5, 0x20, 0xfb, 0x1e, + 0x47, 0x6b, 0x87, 0x6f, 0xdf, 0xbc, 0x7c, 0x77, 0x78, 0xf0, 0xee, 0xdb, + 0xb7, 0xaf, 0x9f, 0xbf, 0x3c, 0x5a, 0x6b, 0x67, 0xdc, 0x6a, 0x19, 0x10, + 0x95, 0x00, 0x89, 0x3f, 0x87, 0x07, 0xe5, 0xec, 0x72, 0x26, 0x11, 0xca, + 0x34, 0x22, 0x87, 0xb9, 0x14, 0x2d, 0xc0, 0x7e, 0xd3, 0x86, 0xb6, 0x86, + 0x1b, 0x2e, 0xd0, 0x11, 0x28, 0x52, 0x5d, 0x3e, 0x5e, 0x45, 0xb0, 0x84, + 0x02, 0x4d, 0x79, 0x46, 0x48, 0x9d, 0x8c, 0xae, 0x35, 0x39, 0xd8, 0x09, + 0x3c, 0xb1, 0x05, 0xb9, 0xa8, 0x0b, 0x0c, 0xd1, 0xf3, 0x1e, 0x62, 0x9e, + 0x66, 0x25, 0xb5, 0xef, 0x72, 0xf4, 0x55, 0x97, 0x0b, 0x17, 0xf6, 0x00, + 0x47, 0xc0, 0x0b, 0x23, 0xcb, 0x1b, 0x95, 0xf5, 0x5a, 0x5f, 0xcb, 0xc6, + 0x14, 0xf6, 0x80, 0xca, 0xe5, 0x4c, 0x22, 0x68, 0x52, 0x05, 0xf6, 0x7d, + 0x90, 0x7e, 0x48, 0x49, 0x92, 0xcb, 0x3b, 0x87, 0x8b, 0x92, 0xb4, 0x83, + 0x1f, 0x80, 0xd3, 0x22, 0xa3, 0x78, 0x6e, 0x79, 0x3f, 0x3f, 0x44, 0xa1, + 0xce, 0x49, 0x31, 0x1d, 0xa7, 0xa5, 0x77, 0xdc, 0x18, 0x97, 0xa5, 0xdc, + 0x8d, 0xd3, 0x83, 0xf3, 0xef, 0xbd, 0xcd, 0x58, 0xcf, 0x4e, 0xce, 0xd8, + 0xa9, 0x33, 0x4b, 0x46, 0xf0, 0x57, 0xe4, 0x90, 0x1b, 0x26, 0xfb, 0xdf, + 0x90, 0x25, 0x71, 0x13, 0xa0, 0xe3, 0x33, 0xf6, 0xbb, 0x51, 0xce, 0x33, + 0x72, 0xbe, 0xbe, 0x7f, 0x95, 0xf2, 0x36, 0x45, 0xda, 0xe4, 0x4f, 0x2a, + 0x3e, 0xc5, 0x32, 0xbe, 0xeb, 0x04, 0x04, 0x3d, 0xf9, 0xa7, 0x61, 0xa7, + 0x87, 0xd9, 0x34, 0xab, 0x6f, 0x98, 0xc3, 0xb6, 0x6d, 0x04, 0x2e, 0x54, + 0x25, 0x8e, 0x9b, 0xe6, 0x17, 0x59, 0x4e, 0x41, 0x07, 0x14, 0x77, 0x59, + 0xed, 0x46, 0x3a, 0xb8, 0xdc, 0xce, 0xd8, 0xee, 0x66, 0xee, 0xb6, 0x3f, + 0x5b, 0x4b, 0xd0, 0x6a, 0x23, 0x6e, 0x0c, 0x15, 0xba, 0xb7, 0xda, 0x9c, + 0x15, 0x8b, 0x75, 0xaa, 0x45, 0x45, 0xf5, 0xa8, 0x35, 0xdc, 0x5f, 0xd3, + 0x1b, 0x10, 0x47, 0x54, 0xc3, 0x58, 0x44, 0x2a, 0xf8, 0x8d, 0xe4, 0x57, + 0x4f, 0x5b, 0xa6, 0x59, 0x54, 0xa9, 0xa4, 0xbd, 0x89, 0x4e, 0x57, 0x4c, + 0xda, 0x76, 0x09, 0x0d, 0xa0, 0x6e, 0x46, 0x1c, 0x02, 0x44, 0xb1, 0xcb, + 0xc4, 0x68, 0x32, 0xff, 0x04, 0x55, 0x26, 0xca, 0xd9, 0x9d, 0x2f, 0xdb, + 0x7d, 0xf3, 0x6c, 0x66, 0xc4, 0x6c, 0x6b, 0xb8, 0xa7, 0x54, 0x65, 0x4d, + 0x59, 0x34, 0xb6, 0xde, 0xf6, 0xe9, 0xe0, 0xc9, 0x16, 0x15, 0xdc, 0x2e, + 0x1d, 0x1c, 0x4f, 0xb6, 0x2d, 0x8e, 0xe8, 0xa4, 0x9b, 0x07, 0xcd, 0x39, + 0x09, 0x74, 0xb2, 0x78, 0xb0, 0x72, 0xae, 0x7f, 0x31, 0x3e, 0x19, 0xe6, + 0x13, 0xec, 0x31, 0xf4, 0x14, 0x7a, 0xf6, 0x20, 0x1a, 0x85, 0x40, 0xbe, + 0x61, 0x4d, 0x54, 0x26, 0xb8, 0xc4, 0x65, 0x01, 0x87, 0xdc, 0x38, 0xcc, + 0x75, 0x47, 0xe5, 0x6f, 0xdf, 0x5d, 0x67, 0x4b, 0x36, 0xc2, 0x31, 0x31, + 0x91, 0x43, 0xb7, 0xd8, 0x6c, 0x6c, 0xb4, 0x71, 0x8d, 0x1e, 0x9b, 0x6d, + 0x0f, 0x63, 0xb7, 0xc9, 0xec, 0x87, 0x07, 0xe4, 0x4c, 0xb9, 0x87, 0x4f, + 0xbf, 0x5b, 0xf6, 0x36, 0x64, 0x2d, 0x3d, 0xb4, 0x0f, 0x6c, 0x29, 0x2c, + 0x6a, 0x45, 0xd6, 0xde, 0x51, 0xd8, 0x5a, 0xee, 0xe6, 0x49, 0x1f, 0x4f, + 0x3b, 0x7e, 0xa5, 0x82, 0x15, 0x57, 0x50, 0x69, 0x68, 0xc4, 0xee, 0x35, + 0xf9, 0xe6, 0x25, 0xd5, 0x24, 0xa4, 0xd9, 0xc2, 0xf5, 0x64, 0xbc, 0x9b, + 0xbd, 0x5e, 0xb4, 0x9e, 0x0e, 0x2e, 0x40, 0x84, 0xf7, 0x70, 0xa8, 0xed, + 0x3d, 0xfc, 0x73, 0x87, 0xfe, 0xdc, 0xed, 0x6d, 0x70, 0x8e, 0x4a, 0x83, + 0x2c, 0x50, 0x2e, 0xb7, 0xa5, 0x0a, 0x95, 0x5b, 0x39, 0x62, 0x9a, 0x25, + 0x55, 0xd6, 0xc5, 0x0d, 0x45, 0x7d, 0x65, 0x12, 0xf0, 0x0d, 0x32, 0xdd, + 0x85, 0x19, 0x87, 0xae, 0xae, 0x52, 0x8e, 0x9d, 0xc1, 0xb7, 0x61, 0x91, + 0x4b, 0x3a, 0x76, 0xc2, 0xc8, 0xa3, 0x77, 0x65, 0x7a, 0x89, 0xc5, 0xe4, + 0x8b, 0x9a, 0x2f, 0x09, 0xdc, 0xac, 0xf6, 0x70, 0xac, 0xd0, 0xd2, 0xd7, + 0x1a, 0xbd, 0x59, 0x4a, 0x1d, 0xcc, 0x11, 0x72, 0x6e, 0x4b, 0x82, 0x19, + 0x04, 0x46, 0xbb, 0x8e, 0x05, 0xd5, 0x29, 0x28, 0xe0, 0xf1, 0x22, 0x71, + 0xd1, 0x28, 0x3e, 0xe9, 0xa2, 0xdb, 0xcc, 0xd0, 0xe4, 0xa4, 0x9a, 0x51, + 0xd0, 0x37, 0xb3, 0x11, 0x3a, 0xd3, 0x31, 0x97, 0xf1, 0x92, 0x60, 0x25, + 0xfc, 0xa3, 0xb0, 0x37, 0x65, 0x22, 0x99, 0x1d, 0xf2, 0x6f, 0xae, 0x4c, + 0x64, 0x3d, 0xaa, 0x62, 0xe0, 0x9b, 0xb6, 0x12, 0x15, 0xb8, 0x78, 0x6d, + 0x19, 0x22, 0x5c, 0xdb, 0xe8, 0x2c, 0xf2, 0xbd, 0x26, 0xc6, 0x2c, 0xee, + 0xd5, 0xae, 0x3b, 0x4c, 0x0f, 0x7f, 0xb6, 0x3b, 0x4c, 0xb3, 0x6f, 0x92, + 0x27, 0x74, 0xd3, 0x5e, 0x8e, 0xfb, 0xa8, 0xd3, 0xb7, 0x5d, 0x64, 0x78, + 0x24, 0xc6, 0xfc, 0x83, 0x45, 0xb5, 0xec, 0x1e, 0xeb, 0x35, 0x76, 0x6e, + 0x23, 0xbf, 0xa4, 0x29, 0x66, 0x92, 0x64, 0xee, 0x1c, 0x52, 0xfb, 0xa6, + 0xdc, 0x38, 0xc4, 0x7b, 0xe8, 0xdc, 0xfd, 0x33, 0x1e, 0xe7, 0x8d, 0x44, + 0xcf, 0xd6, 0x93, 0xf7, 0xc9, 0x20, 0x3a, 0x39, 0x3c, 0x3b, 0xc5, 0x19, + 0xe6, 0x98, 0x57, 0xbf, 0x81, 0x49, 0xf7, 0xad, 0xe1, 0xc0, 0xae, 0x49, + 0xa9, 0xd0, 0xf2, 0x0e, 0xa4, 0xa0, 0x49, 0x50, 0x5a, 0x29, 0xd4, 0x48, + 0x88, 0xa7, 0x8c, 0x7c, 0x38, 0xbc, 0x0c, 0x38, 0x07, 0xb1, 0x03, 0x6f, + 0xa2, 0x39, 0xec, 0xff, 0x78, 0xc3, 0xa4, 0xd5, 0xf6, 0x95, 0x5e, 0x4d, + 0x9e, 0x6d, 0xb5, 0xb8, 0x40, 0x4f, 0x4a, 0xa5, 0x3e, 0x7c, 0x77, 0x37, + 0xfc, 0x9a, 0x25, 0xf9, 0x6c, 0x32, 0xd0, 0xf8, 0x7a, 0xc3, 0x48, 0x84, + 0x06, 0x42, 0xba, 0x59, 0x5e, 0xd8, 0x81, 0xb1, 0xec, 0x77, 0x4a, 0x5c, + 0x44, 0xcb, 0x3f, 0x03, 0xda, 0x13, 0x9f, 0x89, 0xba, 0x7f, 0xc2, 0xe1, + 0x23, 0x75, 0x65, 0x8d, 0x58, 0x2d, 0xd4, 0x24, 0x2b, 0x34, 0x79, 0x53, + 0x54, 0xcd, 0x59, 0x66, 0x33, 0x4d, 0x0b, 0x0f, 0x60, 0x15, 0x2f, 0xfa, + 0x2e, 0x5f, 0xf8, 0x9b, 0x8f, 0x62, 0x1b, 0x37, 0x6f, 0x89, 0x65, 0xda, + 0x24, 0xad, 0x06, 0xda, 0x15, 0x99, 0xa7, 0xfc, 0xf9, 0x9e, 0x1f, 0xa8, + 0x55, 0xd5, 0x23, 0x69, 0xc2, 0x21, 0xe3, 0xd4, 0x0e, 0xbe, 0xf2, 0xed, + 0x72, 0xd6, 0xb5, 0xa2, 0xcb, 0x28, 0x03, 0x66, 0x37, 0x9e, 0x2f, 0x86, + 0xef, 0xd3, 0x1b, 0xef, 0x12, 0x81, 0x19, 0x95, 0x46, 0xfb, 0xf8, 0xe7, + 0xad, 0xc6, 0x27, 0x17, 0x6a, 0xe0, 0xf3, 0xf5, 0xa5, 0xe3, 0xb5, 0x91, + 0x00, 0x64, 0xc3, 0x1e, 0x0c, 0x72, 0x14, 0x4c, 0x16, 0x40, 0x99, 0xd3, + 0x8f, 0x9e, 0x23, 0x6a, 0xe0, 0xd1, 0xeb, 0xef, 0xe8, 0xb0, 0x4e, 0xb7, + 0x77, 0x28, 0xef, 0xcb, 0x98, 0x60, 0x63, 0x9a, 0x24, 0xec, 0xe6, 0x37, + 0x7c, 0x91, 0xd6, 0xc1, 0xf5, 0x76, 0x95, 0x56, 0xe3, 0x62, 0x21, 0x96, + 0x1c, 0x32, 0xcb, 0x33, 0xeb, 0xe6, 0xc4, 0x69, 0x5b, 0xc3, 0x69, 0xaa, + 0x11, 0xe9, 0x46, 0x2d, 0x75, 0x9f, 0x5e, 0x37, 0x3a, 0x24, 0x65, 0x03, + 0xa2, 0xaa, 0x06, 0x4b, 0x1d, 0x88, 0x9b, 0xfb, 0xa8, 0xef, 0xcb, 0x05, + 0xd1, 0x9f, 0xc0, 0xb2, 0x7b, 0x3f, 0xaa, 0xb6, 0xb7, 0xf7, 0xa2, 0xb7, + 0x6f, 0x8e, 0x59, 0x05, 0xc7, 0x6f, 0x6d, 0xf9, 0x64, 0xf1, 0x03, 0x3a, + 0x3c, 0xe8, 0xf6, 0x60, 0x3e, 0x83, 0x07, 0xdd, 0x4e, 0x8e, 0xea, 0x81, + 0x7c, 0x15, 0xc9, 0xb6, 0x95, 0xa8, 0xee, 0xa8, 0x2f, 0xef, 0xe2, 0x7f, + 0x81, 0xf0, 0x24, 0x38, 0x0a, 0x7f, 0x8b, 0x9b, 0x5f, 0x6e, 0x9f, 0x8c, + 0xf6, 0x1d, 0x0a, 0xfa, 0xc9, 0x38, 0x4a, 0x7f, 0xb9, 0x9f, 0x57, 0x24, + 0x4c, 0x96, 0x81, 0x30, 0x27, 0xf9, 0xee, 0x2e, 0x4c, 0x9e, 0x01, 0x7d, + 0x2a, 0xdd, 0x58, 0x01, 0xb0, 0x44, 0xac, 0x4b, 0x42, 0x85, 0xc9, 0x8d, + 0x2e, 0x1f, 0x33, 0xa4, 0x21, 0xd5, 0x59, 0x7a, 0x69, 0x08, 0xc5, 0x54, + 0xdd, 0x2b, 0xee, 0xcc, 0xae, 0x77, 0xe4, 0xaf, 0x87, 0x67, 0x7f, 0x00, + 0xa2, 0x67, 0xd5, 0x0b, 0xf9, 0x32, 0x8b, 0x18, 0x26, 0xc2, 0x36, 0xd1, + 0x1b, 0x0b, 0x94, 0x8a, 0x40, 0x8c, 0xc6, 0x66, 0x5f, 0xa3, 0xdc, 0x6f, + 0x5a, 0x19, 0x5b, 0x18, 0x03, 0x49, 0x09, 0x22, 0x37, 0x6e, 0xa8, 0xf8, + 0x14, 0xf3, 0xda, 0x8c, 0x17, 0x5a, 0x0b, 0x17, 0x75, 0xdf, 0x34, 0xcc, + 0x0b, 0x62, 0xad, 0x54, 0x38, 0x3c, 0xb9, 0x5e, 0xb5, 0x2f, 0x17, 0xb8, + 0x38, 0xa3, 0x1d, 0x0a, 0xd6, 0x7c, 0x5d, 0xc1, 0x7c, 0x4b, 0x02, 0x1e, + 0x2a, 0xae, 0x0c, 0xab, 0x02, 0x72, 0x61, 0x5e, 0x66, 0x57, 0xf8, 0x9c, + 0xd2, 0x0c, 0x69, 0x8d, 0x7c, 0x94, 0x0d, 0x1b, 0xb1, 0xc8, 0xf1, 0xbf, + 0x39, 0xc7, 0xa2, 0x91, 0xee, 0x3a, 0xaf, 0xa4, 0xa1, 0x3c, 0xaa, 0x5b, + 0x94, 0xbc, 0x2d, 0xd2, 0xa8, 0xc1, 0xa8, 0x52, 0x00, 0xce, 0x69, 0x20, + 0xb3, 0x4a, 0x65, 0x8b, 0x4b, 0x97, 0x5f, 0x63, 0xbe, 0x4b, 0x59, 0xdb, + 0x14, 0x5e, 0x07, 0xe9, 0x0e, 0x23, 0x25, 0x74, 0xce, 0x0c, 0xd7, 0x17, + 0xf8, 0x38, 0x93, 0x97, 0x48, 0x7a, 0x3c, 0xc8, 0x92, 0xde, 0xcf, 0xf0, + 0x5f, 0x72, 0x6e, 0x25, 0xb5, 0x8b, 0x89, 0xe3, 0x30, 0x43, 0x2a, 0xd9, + 0xf7, 0x33, 0xea, 0xcc, 0x09, 0x8e, 0xd3, 0x69, 0x36, 0xcb, 0x30, 0xd7, + 0x31, 0x3a, 0x53, 0xf4, 0x01, 0x6f, 0x2d, 0xed, 0xd9, 0x7f, 0xee, 0xb5, + 0xfd, 0x27, 0xb8, 0x96, 0x9f, 0x43, 0x6b, 0x71, 0x96, 0x92, 0x90, 0xe2, + 0x21, 0x23, 0x2e, 0xcd, 0xb1, 0x5c, 0x6e, 0x48, 0x20, 0x70, 0x6a, 0x99, + 0xa0, 0x5b, 0x47, 0x4f, 0x98, 0x49, 0x57, 0x18, 0x67, 0xdb, 0xa5, 0x06, + 0xb3, 0x5e, 0x81, 0x82, 0x80, 0x42, 0x55, 0x5c, 0x1a, 0x89, 0x5c, 0xa2, + 0x6d, 0x62, 0xb1, 0xeb, 0x88, 0x88, 0xfa, 0xf4, 0xf1, 0xf6, 0xce, 0x46, + 0x23, 0xe5, 0x4c, 0x4e, 0xdb, 0xab, 0x89, 0xa7, 0xac, 0x3d, 0x97, 0x96, + 0x50, 0x61, 0xad, 0x35, 0xfe, 0xa0, 0x03, 0x8f, 0x53, 0x8c, 0x89, 0x0e, + 0xa2, 0x03, 0x03, 0xd7, 0x04, 0x03, 0xc3, 0x22, 0xdb, 0xc3, 0x51, 0xbe, + 0xb3, 0xe6, 0x8a, 0x0b, 0xe3, 0xef, 0xb1, 0xb8, 0xa0, 0x00, 0xc4, 0xbc, + 0xa4, 0xcc, 0x44, 0x06, 0x88, 0x89, 0xdc, 0x75, 0xd3, 0x45, 0x6d, 0x07, + 0x9f, 0xdd, 0xef, 0x72, 0xb8, 0x7f, 0x5f, 0x3d, 0x4e, 0x29, 0xe1, 0x81, + 0xf0, 0x6e, 0x99, 0xf8, 0x44, 0x56, 0x89, 0x3a, 0xef, 0x79, 0xd9, 0x64, + 0x45, 0x3d, 0x72, 0x4c, 0xe6, 0x98, 0x04, 0x76, 0x9d, 0x38, 0x32, 0x45, + 0xb7, 0xdf, 0x65, 0xfb, 0x0d, 0x63, 0x24, 0x40, 0x25, 0x20, 0xcb, 0x7a, + 0xc1, 0xd1, 0xc2, 0x3e, 0xb7, 0x55, 0x5d, 0x6e, 0xb7, 0xfa, 0xdc, 0x1a, + 0xe6, 0xad, 0x9e, 0x0d, 0x9e, 0xbb, 0xf8, 0x1f, 0x87, 0xa9, 0x85, 0xeb, + 0x22, 0xc8, 0x18, 0x79, 0x3c, 0x90, 0x2f, 0x96, 0x6e, 0x2a, 0xb7, 0x21, + 0x76, 0xd3, 0xf4, 0x86, 0x61, 0x1d, 0x2f, 0x86, 0x8a, 0xdf, 0x8b, 0xf7, + 0x8b, 0x18, 0xb0, 0x49, 0x74, 0xf6, 0xfd, 0xcd, 0xca, 0xd7, 0x0d, 0x3c, + 0x8c, 0xbb, 0x4c, 0xc2, 0x91, 0xb1, 0x9c, 0xcd, 0xa9, 0xb9, 0xa2, 0xf2, + 0xbf, 0xb0, 0x37, 0x1c, 0xe9, 0x85, 0x5d, 0xf4, 0x26, 0x42, 0x27, 0xaa, + 0xb0, 0x1b, 0x15, 0x03, 0x51, 0x9c, 0x10, 0x5c, 0x33, 0x28, 0xdb, 0x16, + 0x25, 0xa8, 0x4d, 0x07, 0x83, 0xcd, 0x9e, 0x64, 0x5c, 0x53, 0x05, 0x03, + 0x03, 0xc3, 0x9a, 0xfc, 0x54, 0x4c, 0x59, 0x5f, 0x54, 0x26, 0xca, 0x9c, + 0x00, 0x55, 0x8f, 0xde, 0xe3, 0x0e, 0xde, 0xea, 0x85, 0x3b, 0xf4, 0x58, + 0x73, 0x65, 0x64, 0x9d, 0x15, 0xc6, 0x94, 0x84, 0x40, 0x1b, 0xe7, 0xdb, + 0x29, 0x25, 0x57, 0x13, 0x1b, 0x4f, 0x78, 0x43, 0x5e, 0x73, 0xc0, 0x0a, + 0xa6, 0x7d, 0x29, 0xd5, 0xd1, 0xa7, 0x2f, 0x7e, 0x74, 0x8a, 0xed, 0x3d, + 0xd7, 0x01, 0x39, 0xe9, 0xfe, 0x62, 0xb2, 0xfe, 0x18, 0x2b, 0x4c, 0x42, + 0xd7, 0x89, 0x86, 0x3b, 0x31, 0x03, 0x72, 0xc3, 0xd6, 0xf6, 0xe1, 0x56, + 0xf7, 0xf6, 0xe9, 0x77, 0xed, 0x38, 0xb8, 0xe0, 0xbd, 0x7e, 0xfd, 0x33, + 0xff, 0x9a, 0x33, 0xa5, 0x7f, 0xde, 0xaf, 0x2f, 0x17, 0xb3, 0x21, 0x1c, + 0x67, 0x5e, 0x7f, 0xdd, 0xe3, 0xe4, 0xba, 0x09, 0xef, 0x66, 0x6b, 0xfd, + 0x1e, 0x1a, 0x87, 0x06, 0x61, 0x4c, 0x20, 0xb5, 0xb1, 0x6f, 0xbc, 0xbe, + 0xbe, 0x80, 0x17, 0x9a, 0xca, 0xa1, 0xa8, 0xc7, 0x7e, 0x71, 0x4f, 0x96, + 0xbf, 0x05, 0xf2, 0xfc, 0xf9, 0xd5, 0x3f, 0x7e, 0xfe, 0x72, 0xf7, 0x51, + 0xf2, 0x34, 0x19, 0x3d, 0x99, 0x3c, 0x4b, 0x1e, 0x8f, 0x1f, 0x3f, 0xfd, + 0x72, 0xe7, 0xd9, 0xe3, 0xe4, 0xe9, 0xa3, 0x49, 0xf2, 0x64, 0x3b, 0xdd, + 0xfe, 0x72, 0xb2, 0xb3, 0x3b, 0x1e, 0x4f, 0xd2, 0x67, 0xe3, 0xa7, 0x09, + 0x96, 0xb1, 0x80, 0x66, 0xa2, 0x6b, 0xf7, 0xd9, 0xac, 0x51, 0x97, 0xe1, + 0x3b, 0xce, 0xbe, 0x3f, 0x88, 0xb7, 0xa3, 0xcb, 0xf4, 0x83, 0xc1, 0xa7, + 0x6a, 0xe4, 0x53, 0x56, 0x29, 0x63, 0xb9, 0x75, 0x7e, 0xac, 0x82, 0x61, + 0x47, 0x2f, 0x4c, 0x9d, 0x07, 0xef, 0xa1, 0x6e, 0x2a, 0x97, 0xfa, 0x58, + 0xd7, 0xea, 0x5e, 0xa4, 0xfe, 0x7f, 0xfc, 0xae, 0xf6, 0xe5, 0x7f, 0x89, + 0x4e, 0x85, 0x57, 0xc9, 0xe8, 0x92, 0x90, 0x76, 0xf4, 0xc9, 0x33, 0xce, + 0x5c, 0xe9, 0x47, 0xf2, 0x17, 0xd0, 0x8b, 0x9d, 0x31, 0xbe, 0x2b, 0x8b, + 0xc5, 0xfc, 0xb4, 0x98, 0x66, 0xa3, 0x9b, 0x65, 0xc3, 0x39, 0x8f, 0xd1, + 0x3d, 0x75, 0x7f, 0x77, 0xc4, 0x2c, 0x3c, 0xab, 0x82, 0xba, 0xba, 0xa3, + 0xbb, 0xde, 0x55, 0x53, 0x7f, 0x58, 0x8f, 0x0b, 0xce, 0x8c, 0x7f, 0x10, + 0x97, 0x60, 0x1d, 0x07, 0xfe, 0xb7, 0xba, 0xb6, 0x6e, 0xd9, 0xff, 0xad, + 0xea, 0x7a, 0x3c, 0xca, 0xe6, 0x88, 0xee, 0x1d, 0xed, 0x53, 0xb1, 0x13, + 0x86, 0x93, 0xf8, 0x07, 0x61, 0x35, 0xfd, 0x4c, 0x78, 0x40, 0x25, 0xf4, + 0xa3, 0x6f, 0x8b, 0xce, 0x9e, 0x29, 0x8e, 0x92, 0xfa, 0xe3, 0xa4, 0xc8, + 0x2e, 0xf3, 0x7c, 0x96, 0x98, 0x95, 0xa5, 0x2f, 0x4b, 0x7a, 0xab, 0xea, + 0x72, 0x11, 0x3b, 0x42, 0xe4, 0xb7, 0x03, 0xc6, 0xe4, 0x59, 0xcc, 0x51, + 0x6f, 0x45, 0x65, 0x83, 0x7f, 0xde, 0xbe, 0xda, 0xb8, 0x78, 0xa1, 0x51, + 0x56, 0x70, 0xe1, 0x04, 0xdf, 0xbe, 0x79, 0xb9, 0xd7, 0xde, 0xa4, 0x60, + 0xd9, 0x66, 0x55, 0x4d, 0x75, 0x1f, 0xa4, 0x74, 0x33, 0xe4, 0x8d, 0x93, + 0xd5, 0xde, 0x85, 0x34, 0x3e, 0x01, 0x6d, 0xc8, 0xec, 0x47, 0x87, 0xcf, + 0xbf, 0x3f, 0x8a, 0xe1, 0xcf, 0xb3, 0x83, 0xf8, 0xe0, 0xe8, 0x6c, 0xe7, + 0xf1, 0x93, 0xf8, 0xf0, 0xf0, 0xd5, 0xb3, 0x15, 0xe9, 0xa3, 0x9e, 0x56, + 0x57, 0xdb, 0x83, 0xdd, 0x3e, 0xff, 0x75, 0x7b, 0xd7, 0x0c, 0xcf, 0x74, + 0xc2, 0x59, 0x29, 0xba, 0x23, 0x2e, 0xb1, 0x14, 0x33, 0x62, 0xf0, 0xe9, + 0x38, 0xae, 0x2a, 0x2f, 0x79, 0x1e, 0xd1, 0x3c, 0x38, 0xfd, 0xf5, 0x48, + 0x0a, 0x4b, 0x48, 0x25, 0x88, 0xb3, 0x9c, 0x00, 0x38, 0xf4, 0x65, 0x22, + 0x0b, 0xe3, 0x0d, 0x32, 0x29, 0xeb, 0xfd, 0x40, 0xd4, 0x2b, 0x11, 0xd1, + 0xf6, 0x17, 0xd7, 0xa1, 0x85, 0x01, 0xee, 0xa2, 0x34, 0x98, 0x50, 0xe3, + 0xa2, 0x81, 0x27, 0x11, 0x74, 0x02, 0x35, 0x96, 0x1d, 0xdd, 0x29, 0x19, + 0xe8, 0xee, 0x4e, 0xa0, 0xc6, 0xe0, 0x2b, 0x9f, 0x6b, 0x73, 0x69, 0xd5, + 0x2a, 0x89, 0xa6, 0xce, 0xcb, 0xcd, 0xf2, 0xa0, 0x27, 0xad, 0x9c, 0x04, + 0xf3, 0x58, 0x38, 0x6d, 0x4d, 0xbd, 0x9e, 0x49, 0x64, 0x9f, 0xb4, 0xfe, + 0x3f, 0x05, 0xcf, 0x32, 0x00, 0x82, 0x26, 0xeb, 0xb3, 0x5a, 0x06, 0xd4, + 0xc4, 0xc6, 0x40, 0x33, 0x2c, 0x8d, 0x48, 0x64, 0x3c, 0x81, 0x8b, 0x70, + 0xe6, 0x6d, 0xd9, 0x1b, 0x9d, 0x5a, 0x32, 0x44, 0x0d, 0xec, 0xa0, 0x96, + 0xef, 0xb0, 0x91, 0x4f, 0x65, 0x40, 0x84, 0x56, 0xcf, 0x10, 0x13, 0x75, + 0x1b, 0xd3, 0x5f, 0x95, 0x25, 0x47, 0x71, 0xef, 0x59, 0x88, 0x44, 0x92, + 0x8b, 0x74, 0x96, 0x49, 0x6d, 0x2a, 0xf0, 0x29, 0x7f, 0x8e, 0x47, 0x9a, + 0x11, 0x72, 0x62, 0xe2, 0x2b, 0x25, 0x69, 0x52, 0x6a, 0x16, 0x7f, 0x72, + 0x63, 0xf2, 0x38, 0x5b, 0x88, 0x83, 0xeb, 0x55, 0x9d, 0x4d, 0xa7, 0x1b, + 0xce, 0x8e, 0xfe, 0x25, 0x62, 0x9c, 0x22, 0x5f, 0x8b, 0x98, 0x60, 0x21, + 0x9d, 0x94, 0x29, 0x29, 0x50, 0x29, 0xf9, 0x64, 0xed, 0x7e, 0x85, 0x43, + 0x04, 0xe1, 0x4a, 0xa1, 0x2e, 0x0f, 0xf3, 0x22, 0xb7, 0x71, 0x4f, 0x5f, + 0xfd, 0x50, 0x8c, 0x38, 0xc6, 0xb6, 0x4f, 0x05, 0xbe, 0x33, 0x17, 0x38, + 0xc7, 0xc0, 0x75, 0xd5, 0x0b, 0x2a, 0x37, 0x34, 0x60, 0x1e, 0x77, 0xdc, + 0x57, 0x30, 0x70, 0xa9, 0x57, 0x00, 0x56, 0x43, 0x2c, 0xf9, 0xbe, 0x46, + 0x82, 0x91, 0xa5, 0xcb, 0x87, 0x4e, 0x15, 0x5f, 0xb2, 0x82, 0x3b, 0x5f, + 0xdd, 0x55, 0xa5, 0x73, 0x07, 0xc7, 0x88, 0xff, 0x2a, 0x99, 0xe2, 0x93, + 0xec, 0x22, 0x9c, 0x41, 0xa4, 0x65, 0x6a, 0xa8, 0x98, 0x52, 0x51, 0xbf, + 0x18, 0x14, 0xa4, 0xb4, 0x26, 0x92, 0x32, 0xa6, 0x1e, 0x0c, 0xae, 0x4f, + 0x91, 0x10, 0x22, 0x17, 0x67, 0x79, 0x52, 0x33, 0x4f, 0xdd, 0xc7, 0xb1, + 0x82, 0xc7, 0xe4, 0x8a, 0xe3, 0xf0, 0x34, 0x3a, 0xde, 0x3e, 0x26, 0xac, + 0xca, 0xb9, 0x67, 0x18, 0x9b, 0x6b, 0xdf, 0x8c, 0x25, 0x3d, 0x07, 0xbc, + 0xcd, 0x35, 0x68, 0x08, 0x42, 0xae, 0x59, 0xe9, 0xe2, 0x4a, 0xfb, 0x36, + 0x47, 0xe1, 0xe4, 0xa1, 0x50, 0x89, 0x99, 0x77, 0x8d, 0xb4, 0xce, 0xad, + 0xef, 0xa0, 0xa0, 0x62, 0x03, 0x01, 0xc4, 0x7f, 0xa5, 0x1a, 0xfd, 0x3e, + 0xa3, 0xa4, 0x1a, 0xcb, 0x4f, 0xe0, 0xc1, 0x1a, 0x8d, 0x17, 0x8c, 0x42, + 0x89, 0x3c, 0xcf, 0x02, 0x55, 0x73, 0x88, 0x97, 0x7f, 0x40, 0xac, 0x6c, + 0xa8, 0x09, 0x40, 0x36, 0x66, 0x21, 0x07, 0x17, 0x74, 0x4a, 0x3a, 0x68, + 0xd8, 0x59, 0x9e, 0x51, 0x5b, 0x11, 0x41, 0x49, 0x67, 0xd0, 0x07, 0x0d, + 0xd8, 0x56, 0x85, 0xd4, 0x3a, 0x12, 0x9c, 0x2b, 0x56, 0xed, 0xd3, 0x1a, + 0xdb, 0x77, 0xd5, 0x20, 0xa0, 0x37, 0x3c, 0x24, 0xd8, 0x76, 0x41, 0xd1, + 0x0d, 0x2a, 0x3f, 0xab, 0xc4, 0x6e, 0x66, 0x60, 0x75, 0x01, 0x20, 0x0a, + 0x5a, 0x09, 0x62, 0xef, 0xf2, 0x14, 0x70, 0xcb, 0x5a, 0xab, 0x92, 0x75, + 0x78, 0x86, 0x0c, 0x59, 0xed, 0x8c, 0x86, 0xe0, 0x2c, 0x40, 0x51, 0x11, + 0xcc, 0x29, 0x87, 0x83, 0x66, 0xa9, 0x7d, 0xc0, 0x86, 0x5f, 0xed, 0x19, + 0x12, 0x7e, 0x0d, 0xc3, 0x58, 0x69, 0x4d, 0x3c, 0x23, 0xdf, 0xae, 0xef, + 0xb5, 0x31, 0xb8, 0xc8, 0xea, 0xb2, 0x47, 0x1c, 0xad, 0x7f, 0xb5, 0x41, + 0xee, 0x50, 0x9f, 0xb6, 0xc0, 0xc4, 0x9f, 0x16, 0x8a, 0x3b, 0x61, 0x00, + 0xec, 0x5b, 0xc3, 0x09, 0x9c, 0xfd, 0x3a, 0x46, 0xe5, 0x7f, 0x08, 0x02, + 0xdd, 0x23, 0xfd, 0x19, 0xeb, 0x48, 0xdc, 0x6a, 0x16, 0x73, 0xbf, 0xcd, + 0x8f, 0xd0, 0x5a, 0x32, 0x8e, 0xb0, 0xbd, 0xe8, 0xe7, 0x9f, 0xfb, 0xd1, + 0xcf, 0x3d, 0xf8, 0x1f, 0x70, 0xd6, 0x9f, 0x81, 0x46, 0x7f, 0x66, 0xb0, + 0xa1, 0x9f, 0xaf, 0xd0, 0x67, 0x65, 0x30, 0xc4, 0xc5, 0x2f, 0xe0, 0xc7, + 0xb1, 0xad, 0xdb, 0x98, 0x5b, 0x0d, 0xdc, 0x12, 0x5c, 0xe6, 0xbb, 0x82, + 0xa5, 0x83, 0x79, 0x91, 0xc7, 0x8c, 0x8f, 0x0e, 0x1b, 0xb9, 0x98, 0xe5, + 0xe2, 0x64, 0x61, 0x5a, 0xe6, 0x46, 0x29, 0xc8, 0xf5, 0xd7, 0xfe, 0xb0, + 0x16, 0x75, 0x9f, 0x77, 0x9f, 0x65, 0xa0, 0x3e, 0xde, 0x00, 0x0b, 0xe1, + 0x02, 0x3a, 0x5f, 0xca, 0x9f, 0x70, 0x16, 0x2e, 0xc3, 0x6c, 0x16, 0x8e, + 0xff, 0x6b, 0x8e, 0x72, 0xf8, 0xf2, 0xa6, 0x42, 0xa5, 0x41, 0x5b, 0xb5, + 0xa8, 0x78, 0xc5, 0x45, 0x51, 0x4a, 0x49, 0x74, 0xe0, 0x57, 0xdc, 0x61, + 0xa2, 0xb1, 0x2e, 0x41, 0x6a, 0xee, 0x14, 0xc2, 0x04, 0x88, 0x97, 0x72, + 0x02, 0x28, 0x0f, 0x60, 0x7b, 0x0b, 0x33, 0x72, 0x2e, 0x12, 0x41, 0xd6, + 0x5a, 0xa7, 0x62, 0x3d, 0x2f, 0xeb, 0x75, 0x27, 0x94, 0xf5, 0x6a, 0x18, + 0x70, 0xad, 0x09, 0x97, 0x8c, 0x39, 0x01, 0xb3, 0x34, 0xb8, 0x37, 0x7c, + 0xf9, 0x5a, 0xbc, 0x86, 0x3f, 0xb6, 0xa5, 0xc0, 0xa5, 0x5f, 0x93, 0xaf, + 0x2c, 0xcb, 0xa9, 0xc8, 0xf3, 0xa6, 0x74, 0xbc, 0xf1, 0x85, 0x5b, 0x02, + 0x68, 0x9b, 0x53, 0x20, 0xb4, 0x9b, 0x6c, 0x51, 0x83, 0x09, 0xf5, 0xc9, + 0x27, 0xd5, 0x56, 0xab, 0x53, 0x4d, 0x44, 0x32, 0xf6, 0x16, 0xc6, 0xc3, + 0x6c, 0x58, 0x3c, 0x26, 0x50, 0x70, 0x3e, 0x0b, 0x56, 0xe2, 0x28, 0x55, + 0xed, 0x06, 0x61, 0xa3, 0xe6, 0xd3, 0x76, 0x12, 0xaa, 0x96, 0xa0, 0x69, + 0x93, 0x1b, 0xca, 0xd5, 0xe6, 0x54, 0x6c, 0x6e, 0xb5, 0x74, 0x56, 0x30, + 0xd6, 0x36, 0x25, 0xbd, 0x51, 0x62, 0x62, 0xa4, 0x00, 0x54, 0x01, 0x3f, + 0x59, 0xbb, 0xbd, 0x0a, 0xdb, 0x4b, 0x4d, 0x90, 0xf2, 0x86, 0xe9, 0xd6, + 0x6b, 0x3f, 0x1c, 0xfd, 0x01, 0xbe, 0x20, 0x56, 0xd9, 0x1d, 0x89, 0x29, + 0x1d, 0xfb, 0x4f, 0xd5, 0x46, 0xa3, 0x11, 0x0a, 0x6d, 0x3f, 0x22, 0xd3, + 0x3a, 0x32, 0xbd, 0xed, 0x65, 0x57, 0x38, 0x2e, 0x78, 0x0a, 0x17, 0x85, + 0xdc, 0x52, 0x3a, 0x89, 0x44, 0x9e, 0xc5, 0x57, 0xc6, 0xc9, 0x05, 0xea, + 0x86, 0x5f, 0x21, 0xa8, 0x25, 0xe6, 0xae, 0xe3, 0xbf, 0x36, 0xb7, 0x07, + 0x5b, 0xa1, 0x2f, 0xc0, 0x5d, 0x17, 0xfc, 0x3e, 0x09, 0x53, 0xe1, 0xde, + 0xd6, 0x45, 0x71, 0xfb, 0x1a, 0x7d, 0x20, 0x22, 0x6f, 0x35, 0xf1, 0x49, + 0xfb, 0x27, 0xe4, 0xf1, 0x82, 0x59, 0xbe, 0x32, 0x4d, 0x46, 0xf2, 0x82, + 0x00, 0x00, 0x41, 0x47, 0x9b, 0x4e, 0x1b, 0x4d, 0x5e, 0x7a, 0x1d, 0xfb, + 0x9d, 0x53, 0x55, 0x62, 0xda, 0xde, 0xf6, 0x36, 0x90, 0x21, 0x65, 0xfb, + 0x1b, 0x88, 0x66, 0xe9, 0x40, 0x42, 0x14, 0xb2, 0x2e, 0x05, 0x2a, 0xf1, + 0x3f, 0xb9, 0x4e, 0xa4, 0x52, 0xfc, 0x7e, 0x94, 0x6d, 0x1b, 0x5c, 0xcc, + 0x5c, 0x05, 0x12, 0xe1, 0x6c, 0x92, 0xb1, 0xc3, 0x1f, 0x6c, 0xaa, 0x6e, + 0x46, 0xb1, 0x35, 0x52, 0x6d, 0xe0, 0x3e, 0x10, 0x92, 0x89, 0xd4, 0x1c, + 0xc0, 0x85, 0xf5, 0x23, 0x4c, 0x72, 0x7d, 0x14, 0xfe, 0x81, 0x94, 0xa7, + 0xd0, 0xf8, 0x98, 0xc7, 0x80, 0x2b, 0x92, 0x98, 0x1a, 0x5f, 0x3f, 0x6f, + 0x75, 0x2a, 0x0c, 0xe6, 0x53, 0xaa, 0x5b, 0x50, 0xac, 0x19, 0xd2, 0x98, + 0x3d, 0x32, 0xdf, 0xde, 0x88, 0x7a, 0xff, 0x8b, 0xd2, 0x91, 0x19, 0x08, + 0x1d, 0x77, 0xa9, 0x1c, 0x79, 0xe4, 0xb1, 0x83, 0x8f, 0xfd, 0xf8, 0xfc, + 0xbb, 0x77, 0x87, 0x27, 0xaf, 0x5f, 0x1c, 0x7f, 0xc7, 0x0f, 0xcb, 0xb3, + 0xd1, 0xba, 0x5b, 0xb8, 0x84, 0x79, 0xfb, 0xed, 0xb7, 0x77, 0xf1, 0xed, + 0xa5, 0xe3, 0x3f, 0xda, 0xd0, 0xf4, 0xc4, 0xbd, 0xa8, 0x47, 0x7d, 0x03, + 0x4e, 0xdf, 0x9c, 0x20, 0x3c, 0xf2, 0x1f, 0x7f, 0xee, 0x7a, 0xe5, 0x71, + 0xe3, 0x95, 0x83, 0xd3, 0xd3, 0xe7, 0x07, 0xe7, 0x07, 0xdd, 0x8f, 0x3f, + 0xe9, 0x9e, 0xe1, 0x60, 0x8e, 0xd0, 0xd4, 0x9c, 0x45, 0xf2, 0x1c, 0x88, + 0xaf, 0x73, 0x8c, 0xa7, 0x1b, 0xc0, 0x18, 0xf3, 0xd8, 0x8c, 0x83, 0xde, + 0xa7, 0x8b, 0xb4, 0x9e, 0x5f, 0x2f, 0xb2, 0x31, 0x17, 0xed, 0x8b, 0x15, + 0x74, 0x59, 0xb8, 0x89, 0xcb, 0xed, 0x61, 0x9e, 0x6d, 0x80, 0x1c, 0xd2, + 0xd5, 0xf4, 0x25, 0xdd, 0x1b, 0xdf, 0x25, 0xab, 0x42, 0x26, 0xd7, 0xda, + 0x5b, 0xe6, 0xb0, 0x2a, 0xd0, 0x23, 0xb7, 0x75, 0x44, 0x03, 0x9b, 0x16, + 0xc3, 0x43, 0xc3, 0xe2, 0x0a, 0xf9, 0x2f, 0x72, 0x3e, 0x22, 0x5c, 0x89, + 0xbc, 0xa6, 0xed, 0x7c, 0x6a, 0x0d, 0x03, 0x4c, 0xe1, 0xea, 0x78, 0xc3, + 0x8d, 0x16, 0xb5, 0x5e, 0x02, 0xa2, 0xa0, 0x71, 0x40, 0x88, 0x9a, 0xb2, + 0x13, 0x54, 0xdc, 0x54, 0x20, 0xb1, 0xc9, 0xac, 0x04, 0x8a, 0x02, 0x55, + 0xdd, 0xb4, 0x7b, 0x91, 0xf9, 0xaa, 0x00, 0x6e, 0xc5, 0x3b, 0xfe, 0x55, + 0x3f, 0xd2, 0xbc, 0x5f, 0x83, 0x48, 0x4c, 0x71, 0x6a, 0x2a, 0x35, 0x38, + 0xc1, 0x74, 0x6d, 0x93, 0x80, 0x2e, 0x4d, 0xf6, 0xc2, 0x49, 0xb9, 0xee, + 0x0d, 0x91, 0xa1, 0x29, 0xce, 0xe0, 0x83, 0x4c, 0xb8, 0xb2, 0xf3, 0xd3, + 0xe1, 0x4c, 0xb8, 0x0a, 0xc4, 0xca, 0x39, 0xa9, 0x2e, 0x5b, 0x6a, 0x7a, + 0x57, 0x04, 0x70, 0x02, 0x96, 0x88, 0x3a, 0xfe, 0xfe, 0x84, 0x80, 0x55, + 0x29, 0x30, 0xcf, 0x48, 0x9d, 0x9e, 0x2f, 0xf5, 0x55, 0xf2, 0x21, 0x9b, + 0x2d, 0x66, 0xf4, 0x55, 0xf8, 0x51, 0xf2, 0x98, 0xc4, 0xd1, 0x29, 0x8e, + 0x24, 0xb9, 0x90, 0xb8, 0xf0, 0x35, 0xea, 0x2d, 0x64, 0xfb, 0xe0, 0xf9, + 0x42, 0x13, 0x54, 0x8c, 0x81, 0xad, 0x72, 0x22, 0xbd, 0x8a, 0x82, 0xc8, + 0x55, 0xcb, 0x1b, 0x0b, 0x6a, 0x55, 0x82, 0xb9, 0x63, 0xf0, 0x39, 0x9a, + 0x1c, 0xea, 0xb6, 0x7e, 0x30, 0x1a, 0xc2, 0xa8, 0x36, 0x9d, 0xd4, 0x9c, + 0x4a, 0x87, 0xb4, 0xcc, 0x8a, 0x31, 0xcb, 0x72, 0xae, 0x65, 0x06, 0x5e, + 0xcd, 0x91, 0x43, 0xf2, 0x5e, 0x50, 0x87, 0x96, 0x70, 0xd2, 0x97, 0x5a, + 0x00, 0x23, 0x44, 0xaa, 0xaa, 0xd0, 0xad, 0x91, 0xcd, 0x14, 0xb6, 0xae, + 0x52, 0x1e, 0xeb, 0xfc, 0x2c, 0x12, 0xb8, 0x7d, 0xff, 0x53, 0x87, 0x4e, + 0xa6, 0x92, 0xe4, 0x4b, 0x80, 0x16, 0x0e, 0xc2, 0x63, 0xb0, 0x81, 0x3a, + 0x97, 0x8e, 0x62, 0xcc, 0x20, 0x58, 0x21, 0x35, 0x36, 0xb8, 0x94, 0x8a, + 0x6e, 0x3f, 0xaf, 0x97, 0x82, 0x55, 0x24, 0x16, 0xf8, 0xf2, 0xb3, 0xdb, + 0x67, 0x98, 0x9a, 0x74, 0x0c, 0x96, 0xbf, 0x16, 0x36, 0x2e, 0x98, 0xc7, + 0xd4, 0xde, 0x63, 0x92, 0x0f, 0x70, 0x3b, 0xb0, 0xa0, 0x9a, 0x71, 0xf4, + 0x09, 0xd2, 0xc6, 0x16, 0xe9, 0x3e, 0x7f, 0x7d, 0x26, 0x68, 0xda, 0x01, + 0xa0, 0x0a, 0x71, 0xb1, 0xc0, 0x8b, 0xe7, 0xd8, 0x26, 0x15, 0x13, 0xa1, + 0xe0, 0x53, 0xfe, 0xf6, 0xf6, 0xf8, 0xd0, 0xe9, 0x98, 0x48, 0x57, 0x1c, + 0x81, 0x40, 0x3a, 0x92, 0x47, 0x5b, 0x64, 0x79, 0x37, 0x3c, 0xa4, 0x28, + 0x10, 0x25, 0xbe, 0x13, 0x20, 0x52, 0xb5, 0xe4, 0xce, 0x35, 0xd6, 0xb1, + 0xb3, 0x15, 0xbc, 0x76, 0x77, 0x7b, 0x79, 0x77, 0xb0, 0xfd, 0x68, 0xb5, + 0x5b, 0x4b, 0x45, 0xa7, 0xb3, 0xe4, 0x03, 0x0d, 0x11, 0xbc, 0xb6, 0x45, + 0xb4, 0xff, 0xfd, 0xc9, 0xd9, 0xf9, 0xf6, 0xde, 0xe9, 0xc9, 0x1b, 0xf8, + 0x13, 0xff, 0xbe, 0x43, 0x7f, 0xdf, 0xf9, 0xba, 0x3d, 0xec, 0x0b, 0x6a, + 0x29, 0x1b, 0x19, 0x90, 0x15, 0x6e, 0x22, 0x81, 0x7b, 0x27, 0xbe, 0x00, + 0x67, 0x20, 0x8c, 0x8f, 0x66, 0x88, 0x4a, 0x36, 0x32, 0xf0, 0x5d, 0x6d, + 0x62, 0x76, 0xa6, 0xd2, 0x2a, 0x82, 0x41, 0xe4, 0xd7, 0x2a, 0x64, 0xb5, + 0xaa, 0xfc, 0x82, 0xee, 0xaa, 0xb8, 0xb1, 0x6d, 0xca, 0xa9, 0x5d, 0x5c, + 0x15, 0x76, 0xbe, 0xf5, 0x23, 0x4a, 0x2e, 0x6f, 0xfe, 0x6a, 0x34, 0x05, + 0x0b, 0x38, 0xc5, 0x2c, 0xcf, 0x71, 0x2a, 0x3c, 0x75, 0xea, 0x37, 0x1b, + 0xc0, 0x27, 0x08, 0xb2, 0xa5, 0x64, 0xbc, 0xff, 0xd6, 0xba, 0xb4, 0x26, + 0x91, 0xa4, 0x2d, 0xac, 0x26, 0x21, 0x88, 0x75, 0xd9, 0x8e, 0x3c, 0xf5, + 0x8a, 0x90, 0xb1, 0xdc, 0x32, 0x6a, 0x44, 0x86, 0x08, 0x9f, 0x9f, 0x50, + 0x29, 0x5e, 0x9f, 0x9c, 0x47, 0x09, 0xf9, 0xee, 0x44, 0x64, 0x57, 0x35, + 0x4a, 0xb1, 0x4d, 0xe9, 0xf5, 0x40, 0xc8, 0x03, 0x81, 0x18, 0x0a, 0xc9, + 0x15, 0xb8, 0x1c, 0x9b, 0x18, 0x16, 0xe2, 0x2c, 0xfa, 0xb3, 0xd7, 0xc7, + 0xfd, 0x46, 0xc8, 0xd9, 0xcd, 0x4b, 0xdd, 0xc0, 0x5b, 0x24, 0x38, 0x79, + 0xed, 0xbd, 0x73, 0xf4, 0x0e, 0xd3, 0xb5, 0x62, 0x10, 0xf5, 0xe8, 0x40, + 0x7b, 0x9c, 0x85, 0xda, 0xa3, 0x73, 0xed, 0x71, 0x85, 0x1d, 0x25, 0xdd, + 0xd3, 0xb7, 0x62, 0xa7, 0xd5, 0x1b, 0x1f, 0x1c, 0x8d, 0x9c, 0xa9, 0x0a, + 0xa0, 0xd7, 0x43, 0xf3, 0x1c, 0x3f, 0x8b, 0x3e, 0xa9, 0x27, 0x03, 0xef, + 0xf0, 0xc0, 0x34, 0x2e, 0xfc, 0x1d, 0x87, 0x25, 0xa2, 0x1d, 0x86, 0x72, + 0x8d, 0x64, 0x22, 0x67, 0xf0, 0xc8, 0x0c, 0x0f, 0x6b, 0xa3, 0x04, 0x03, + 0x29, 0x27, 0x27, 0xea, 0x58, 0xa3, 0x7e, 0x21, 0xd9, 0x05, 0xa6, 0x74, + 0x79, 0xa9, 0x92, 0x66, 0x21, 0x6d, 0x0a, 0x3f, 0x00, 0x03, 0x00, 0x7e, + 0xdb, 0x73, 0x9c, 0x23, 0xb5, 0x57, 0xab, 0x47, 0x75, 0x31, 0xa5, 0xda, + 0xf7, 0xba, 0x1c, 0x14, 0x2a, 0x75, 0xc0, 0xd8, 0xac, 0xd8, 0x0a, 0xae, + 0x05, 0xdc, 0x95, 0xec, 0x65, 0x45, 0x46, 0xd1, 0x8b, 0x84, 0x80, 0xa2, + 0xda, 0xae, 0x81, 0xb7, 0x96, 0xb3, 0x3f, 0xda, 0xc3, 0x71, 0x87, 0x4c, + 0x64, 0xf0, 0x52, 0x58, 0xde, 0xdb, 0xde, 0x79, 0x3a, 0xd8, 0x82, 0xff, + 0x07, 0xe7, 0x22, 0x5e, 0x3d, 0xea, 0x46, 0x68, 0xfa, 0x0c, 0xdb, 0x27, + 0xd3, 0x0f, 0x9e, 0x4b, 0x98, 0xd8, 0x47, 0x51, 0x5e, 0xf4, 0x02, 0xa8, + 0x57, 0x0e, 0x7f, 0xf8, 0xa4, 0x0a, 0x89, 0x4e, 0xe2, 0x70, 0xb3, 0xbd, + 0x47, 0x8f, 0x76, 0xf7, 0xf4, 0xdf, 0x70, 0x95, 0xf6, 0x9e, 0xc1, 0x0f, + 0x3e, 0x06, 0x14, 0xeb, 0x7b, 0x64, 0x82, 0x1c, 0x4c, 0x71, 0x58, 0x60, + 0x1b, 0x97, 0x24, 0xda, 0x2f, 0x26, 0x13, 0x60, 0xff, 0x6d, 0x6d, 0xe5, + 0x50, 0x1e, 0xd9, 0x7c, 0x43, 0xa8, 0xb0, 0xc4, 0x01, 0x15, 0x2c, 0x40, + 0x1c, 0xd0, 0xb6, 0x09, 0x7a, 0xed, 0x68, 0x0c, 0x3c, 0xdc, 0x20, 0x20, + 0x2f, 0xdd, 0xdf, 0x6b, 0x26, 0x2d, 0x7c, 0x17, 0xdc, 0x7f, 0xee, 0x9c, + 0x89, 0x8c, 0xa7, 0xd5, 0x76, 0x2a, 0xaa, 0xde, 0x67, 0xf3, 0xb9, 0x9f, + 0x7c, 0x4e, 0x4d, 0x39, 0xe9, 0x12, 0x90, 0x0f, 0x85, 0xef, 0x00, 0xa5, + 0x76, 0xf1, 0xd5, 0x50, 0xdc, 0x68, 0x86, 0xff, 0xe0, 0xe5, 0x0e, 0xd3, + 0x09, 0x3a, 0x83, 0xb2, 0x00, 0x5f, 0x71, 0x81, 0xde, 0x05, 0x80, 0x67, + 0x8c, 0xa0, 0xee, 0x0c, 0xfb, 0x4b, 0x4e, 0x55, 0x8b, 0x50, 0xab, 0x40, + 0x50, 0x2a, 0x41, 0x5f, 0x9c, 0x9f, 0x86, 0x61, 0xef, 0x95, 0x44, 0xce, + 0x8e, 0xff, 0xeb, 0x48, 0xf3, 0x5d, 0x14, 0x49, 0x85, 0xdc, 0x19, 0x01, + 0xb8, 0x03, 0xec, 0x84, 0x78, 0x08, 0xc7, 0x44, 0x29, 0x29, 0x35, 0xc2, + 0x7b, 0x6b, 0x76, 0x6c, 0x33, 0xa8, 0x46, 0x96, 0x0e, 0x83, 0x32, 0x83, + 0xae, 0xb1, 0x49, 0x10, 0xa5, 0x85, 0x57, 0xd2, 0x43, 0x27, 0xd7, 0xc0, + 0x80, 0x31, 0xfd, 0xbf, 0x5b, 0x15, 0xad, 0xe2, 0xd4, 0xd8, 0xcc, 0x72, + 0x6a, 0x8c, 0x46, 0xc8, 0x71, 0x3e, 0x32, 0x91, 0x80, 0xa2, 0x31, 0x24, + 0xf8, 0xa2, 0x03, 0x3c, 0xe4, 0xb0, 0x1f, 0xb5, 0x48, 0x4c, 0xfa, 0x4f, + 0xdc, 0x9e, 0x59, 0xf1, 0x90, 0x3a, 0xc8, 0x21, 0x68, 0x81, 0x77, 0xd6, + 0x39, 0x0e, 0xa3, 0x47, 0x5b, 0x5b, 0xab, 0x5d, 0x36, 0x0b, 0xf8, 0xe3, + 0xdc, 0xae, 0x11, 0xdf, 0xae, 0xe2, 0x7d, 0x96, 0xc6, 0xbf, 0x26, 0x25, + 0xc7, 0x73, 0x3a, 0xa1, 0x19, 0x37, 0x8c, 0x67, 0x11, 0xc1, 0xee, 0x29, + 0xb5, 0x82, 0x28, 0xd5, 0x20, 0xca, 0xeb, 0xd9, 0xb3, 0xbf, 0x94, 0xda, + 0xda, 0xf3, 0xe0, 0x9e, 0x16, 0x40, 0x28, 0x8a, 0x94, 0xb9, 0x64, 0x70, + 0x14, 0x2d, 0xb2, 0xd7, 0x00, 0x13, 0x6a, 0x4c, 0x4f, 0x2f, 0x1c, 0x46, + 0x46, 0x91, 0x66, 0xac, 0x9e, 0x52, 0x91, 0xe5, 0x31, 0x23, 0x15, 0xca, + 0x83, 0x94, 0xf5, 0x83, 0x90, 0xd9, 0x72, 0x39, 0x98, 0x66, 0xd8, 0xe5, + 0x52, 0x2b, 0x9e, 0x0c, 0x5d, 0x3a, 0x9a, 0x33, 0xd8, 0x2d, 0x67, 0x20, + 0x0d, 0xc7, 0xcc, 0xdc, 0x78, 0xbf, 0xdf, 0xe7, 0xc5, 0x75, 0x8e, 0x41, + 0x45, 0xe9, 0x0b, 0x56, 0xd1, 0x22, 0xeb, 0x54, 0x52, 0x48, 0xc4, 0xe9, + 0xd2, 0xbe, 0xfc, 0xe2, 0x68, 0xb6, 0xde, 0xcb, 0xd7, 0x69, 0x2d, 0xf9, + 0xac, 0xbc, 0x5c, 0x2d, 0x3c, 0xa7, 0xe2, 0x75, 0x93, 0xa5, 0x57, 0x49, + 0xd3, 0xc5, 0x4e, 0x58, 0xcb, 0x76, 0xb7, 0xd4, 0x3e, 0x5c, 0xc6, 0x9e, + 0x86, 0x66, 0xec, 0xa2, 0x65, 0x89, 0xd2, 0x0a, 0xad, 0xfd, 0xb1, 0xa1, + 0x7b, 0xe1, 0x14, 0xea, 0x5b, 0x11, 0xcb, 0xd1, 0xc8, 0x36, 0xc5, 0x34, + 0x94, 0x2c, 0x72, 0x1f, 0x2c, 0x3c, 0xad, 0x8a, 0x1a, 0x7f, 0xbd, 0x6e, + 0xee, 0x24, 0x45, 0x02, 0x4d, 0x8a, 0x21, 0x7b, 0xcb, 0xcf, 0x35, 0x40, + 0xc8, 0xcf, 0xf5, 0x35, 0xc3, 0xbe, 0x2d, 0xf6, 0x86, 0x76, 0x0d, 0x0a, + 0x6e, 0x1f, 0x7d, 0x5b, 0x60, 0xe1, 0xab, 0x84, 0xeb, 0xdc, 0xb6, 0xc8, + 0xc6, 0x8f, 0x11, 0xac, 0xc4, 0x27, 0x7d, 0x31, 0xd0, 0x07, 0x29, 0xa2, + 0xb6, 0x23, 0x89, 0x46, 0x4c, 0x64, 0x32, 0xc9, 0x81, 0x65, 0x0b, 0x98, + 0x90, 0xd1, 0x3a, 0x0b, 0xfb, 0xcb, 0xb1, 0x01, 0x56, 0x94, 0xcf, 0x61, + 0x12, 0x09, 0x2c, 0x9e, 0x2f, 0x28, 0x4e, 0xe8, 0xa1, 0x29, 0x71, 0xc1, + 0x74, 0xdd, 0x15, 0x1c, 0x91, 0x61, 0xf0, 0x1c, 0x6c, 0x4b, 0x78, 0x25, + 0x37, 0xed, 0x0f, 0x56, 0x13, 0x6a, 0x5f, 0xa1, 0xec, 0xff, 0xfa, 0xb2, + 0xf0, 0xa2, 0x46, 0xbc, 0x6c, 0x8b, 0xac, 0xe7, 0x74, 0x59, 0xa0, 0x46, + 0x9e, 0x18, 0x4c, 0xc3, 0x1b, 0xc4, 0x11, 0x77, 0x13, 0x70, 0x27, 0xa4, + 0xe7, 0x12, 0x3d, 0x25, 0x41, 0x98, 0x42, 0x17, 0x5c, 0x98, 0x7b, 0xc3, + 0x25, 0x58, 0xb2, 0x4c, 0x12, 0x4f, 0x1a, 0x74, 0x68, 0x4f, 0x6d, 0x93, + 0x9c, 0x1f, 0x22, 0x78, 0xf6, 0x15, 0x5c, 0x65, 0x08, 0xf8, 0x08, 0xc7, + 0x08, 0xda, 0x1a, 0x46, 0x9a, 0xe8, 0x8e, 0x20, 0xe6, 0x9c, 0xb4, 0xdf, + 0xc0, 0x83, 0x34, 0xa8, 0x90, 0xc0, 0x51, 0x2e, 0x51, 0x01, 0xcb, 0xea, + 0x45, 0xf0, 0x76, 0x07, 0xad, 0xd1, 0x00, 0x69, 0xdb, 0x82, 0xa3, 0xdf, + 0xd1, 0x1a, 0x1d, 0x71, 0xd2, 0x62, 0x4c, 0x9e, 0xfa, 0x2e, 0x0f, 0xd0, + 0xdd, 0xde, 0x8c, 0x87, 0x74, 0xa3, 0x62, 0x58, 0x6c, 0xb5, 0x62, 0x7a, + 0x9e, 0x43, 0xa7, 0x8e, 0xc0, 0x70, 0xa9, 0x77, 0x1f, 0x79, 0xe0, 0xff, + 0xb9, 0x45, 0x62, 0x9c, 0x26, 0x92, 0x47, 0xe3, 0xb6, 0xd8, 0x20, 0xc0, + 0x29, 0xd1, 0x3a, 0x14, 0x86, 0x81, 0xc7, 0x14, 0xfd, 0x0f, 0xc4, 0x7e, + 0x20, 0x53, 0x94, 0x32, 0x43, 0x60, 0x43, 0xa7, 0x37, 0x76, 0x44, 0x07, + 0x10, 0xca, 0x34, 0x7e, 0x34, 0x6c, 0xc5, 0x4e, 0xd1, 0x4e, 0x79, 0xef, + 0x9d, 0x81, 0xf1, 0xc7, 0x73, 0x62, 0xe6, 0x3c, 0x47, 0x81, 0xa4, 0xda, + 0x0b, 0x87, 0x55, 0x00, 0x04, 0xd6, 0xf3, 0xdd, 0x2c, 0x5a, 0x66, 0xd3, + 0xed, 0xe1, 0x5e, 0x1f, 0xbc, 0x3a, 0xda, 0xfe, 0xea, 0xef, 0x07, 0x2f, + 0xdf, 0x1e, 0x6d, 0xff, 0x25, 0x8a, 0xf0, 0x9f, 0x3b, 0xfc, 0xcf, 0x9d, + 0x9e, 0x9a, 0xcb, 0x82, 0xa5, 0x68, 0xb0, 0x11, 0x9c, 0x2b, 0xdc, 0xb6, + 0x7d, 0x68, 0x17, 0x14, 0x7d, 0x2b, 0x33, 0xe8, 0xb9, 0x4e, 0x53, 0x44, + 0xfa, 0x28, 0x90, 0x8c, 0x06, 0xb7, 0x4e, 0xcd, 0x94, 0xf5, 0x6a, 0x63, + 0x10, 0x50, 0x73, 0x6c, 0x55, 0xa1, 0x1a, 0xe6, 0x91, 0xf1, 0xcd, 0x44, + 0xe3, 0x45, 0x2a, 0x2a, 0x9b, 0x83, 0x8f, 0xd5, 0x97, 0xd0, 0x80, 0x17, + 0x89, 0xd7, 0x06, 0x2e, 0x95, 0xd3, 0xa6, 0xa5, 0xcf, 0x09, 0x17, 0xb8, + 0x22, 0xee, 0xa1, 0x4a, 0x8b, 0xa6, 0x23, 0xc5, 0xa2, 0x11, 0x4a, 0x8d, + 0x08, 0x5d, 0x3a, 0x90, 0xa4, 0x6b, 0x5f, 0xad, 0x45, 0xd5, 0xcd, 0x6c, + 0x58, 0x4c, 0x1d, 0x30, 0xd6, 0x56, 0x95, 0x0b, 0x57, 0x86, 0x98, 0x36, + 0x2b, 0x12, 0xba, 0xf5, 0x0b, 0x05, 0x12, 0x1b, 0xed, 0xd4, 0x6c, 0x13, + 0x17, 0x31, 0xac, 0x2e, 0xd8, 0xcf, 0xc5, 0x42, 0x57, 0xf2, 0x4e, 0x8c, + 0xd5, 0xe8, 0xa1, 0x7b, 0x60, 0xce, 0xd6, 0x32, 0x39, 0xc0, 0x2a, 0x90, + 0x83, 0x90, 0x29, 0x8c, 0x3f, 0xcb, 0x03, 0xe8, 0x0a, 0xdc, 0x66, 0x4b, + 0x04, 0x9b, 0xbe, 0x49, 0x29, 0x1a, 0xe8, 0x2d, 0xbb, 0x51, 0xe0, 0x56, + 0xce, 0x63, 0x61, 0x45, 0x81, 0x3e, 0x99, 0x54, 0xa4, 0xa1, 0x27, 0x1a, + 0x72, 0xe1, 0xd4, 0xb6, 0xe5, 0xcb, 0x4b, 0xc2, 0xab, 0x17, 0x0f, 0xba, + 0xc1, 0x6d, 0x29, 0x31, 0xf5, 0xd0, 0x1c, 0x3e, 0x05, 0xe8, 0x50, 0xb7, + 0x8e, 0x3d, 0x74, 0xa7, 0xb2, 0x6a, 0x64, 0xaf, 0x70, 0xd0, 0x6b, 0x60, + 0xc3, 0xf0, 0xaa, 0x74, 0xd0, 0x4d, 0x24, 0x33, 0x88, 0x73, 0xb6, 0xb1, + 0x1e, 0xcb, 0xaf, 0x88, 0x06, 0x45, 0x64, 0x43, 0xd2, 0xb4, 0xf4, 0xd4, + 0xb8, 0x1f, 0x57, 0xa3, 0xbb, 0xee, 0x92, 0x80, 0xb2, 0x51, 0xa7, 0xa4, + 0xf4, 0xac, 0x70, 0xd6, 0x51, 0x37, 0xf5, 0x04, 0x19, 0x86, 0x2f, 0x2c, + 0xfa, 0x5e, 0xdd, 0x66, 0xde, 0xea, 0xc5, 0x42, 0x8e, 0x63, 0x52, 0xf5, + 0xa2, 0x75, 0x7b, 0xfd, 0x23, 0x02, 0xd8, 0xdf, 0x50, 0xc3, 0x5c, 0x55, + 0xb3, 0xcd, 0x57, 0xc5, 0x6f, 0xd9, 0x74, 0x9a, 0x84, 0x2f, 0xa8, 0xab, + 0xb0, 0x75, 0xae, 0xbc, 0xad, 0x3a, 0xb9, 0xbc, 0xb3, 0xa1, 0x36, 0x25, + 0x54, 0xb7, 0xc3, 0xed, 0x51, 0x5f, 0x17, 0x9e, 0xe9, 0xc8, 0x1f, 0xc9, + 0xf6, 0xa5, 0xa3, 0xcb, 0x35, 0xf4, 0x26, 0x4e, 0x73, 0x6f, 0x2b, 0x4e, + 0x28, 0xd3, 0x02, 0x3e, 0x03, 0x23, 0xe1, 0x4c, 0x67, 0x20, 0xef, 0x5e, + 0xba, 0xed, 0x2b, 0x9c, 0xbd, 0x72, 0x4f, 0x84, 0x3b, 0xcd, 0x39, 0x95, + 0x7c, 0x4c, 0x0e, 0x63, 0xaf, 0x3a, 0x71, 0x26, 0x6d, 0x1b, 0x72, 0xf7, + 0x0a, 0x99, 0x66, 0xe0, 0x79, 0x2d, 0x38, 0xc4, 0xc4, 0xd2, 0xb9, 0x47, + 0x40, 0x9e, 0x72, 0x4a, 0x5e, 0x3d, 0xc2, 0x56, 0x33, 0xed, 0xfd, 0x2d, + 0xb0, 0xf1, 0x88, 0xe4, 0x67, 0x12, 0x4e, 0x13, 0x2a, 0x01, 0xfa, 0x2a, + 0xa6, 0xf1, 0xda, 0xf5, 0x92, 0x46, 0xb7, 0xce, 0xb8, 0xd3, 0xd2, 0xf0, + 0xc7, 0x0b, 0x5f, 0x61, 0x17, 0x21, 0xf4, 0x60, 0x0e, 0x79, 0x84, 0x8a, + 0x48, 0x81, 0x23, 0x4b, 0x09, 0xe8, 0x12, 0x7b, 0x66, 0x1f, 0x8c, 0xd6, + 0xde, 0x71, 0xf0, 0x98, 0xfe, 0x8f, 0xfe, 0xac, 0x09, 0x1e, 0x10, 0xd9, + 0x43, 0x98, 0x0b, 0x81, 0x7a, 0xa9, 0x4f, 0xad, 0x89, 0x0d, 0x00, 0xb3, + 0xb1, 0xe4, 0xd7, 0x95, 0x8c, 0xa5, 0xb9, 0x2d, 0xbf, 0x45, 0x2a, 0x8f, + 0xd3, 0x51, 0xab, 0x2a, 0x84, 0x4d, 0xd0, 0x04, 0x0d, 0xda, 0x22, 0x6f, + 0xca, 0xf2, 0x83, 0x77, 0xe3, 0x7b, 0x0d, 0xed, 0x57, 0xb4, 0xe1, 0x00, + 0x51, 0x34, 0xa6, 0xf8, 0x78, 0x67, 0x53, 0x97, 0xf2, 0x33, 0x94, 0x2f, + 0xee, 0xac, 0x27, 0xb8, 0xfd, 0x2d, 0x50, 0x83, 0x6e, 0x19, 0xa3, 0x53, + 0xe9, 0x69, 0xab, 0x80, 0xb4, 0x95, 0xbf, 0xe2, 0x0f, 0x7f, 0x5d, 0xe4, + 0xef, 0x63, 0x69, 0x42, 0x18, 0xab, 0x46, 0xef, 0x7a, 0xea, 0x49, 0x24, + 0xc5, 0x20, 0x19, 0xab, 0x50, 0x36, 0x81, 0x8a, 0x35, 0x60, 0x7d, 0xbf, + 0x2a, 0x7e, 0xaa, 0x65, 0xdd, 0x8d, 0xd6, 0xd1, 0x92, 0xd3, 0xc2, 0x81, + 0x2f, 0x1f, 0x76, 0xd3, 0xc8, 0xa2, 0x3c, 0x45, 0xa4, 0x93, 0x84, 0x1a, + 0x9e, 0xa2, 0xb7, 0xd1, 0x01, 0xbf, 0xc8, 0xe0, 0x40, 0xca, 0xd1, 0x25, + 0x22, 0x60, 0x91, 0x77, 0x93, 0x73, 0x04, 0x48, 0xd0, 0x85, 0xb4, 0x61, + 0x31, 0x19, 0x44, 0x4f, 0x93, 0x61, 0x90, 0xe8, 0x50, 0xf8, 0xc2, 0xef, + 0x95, 0x83, 0x05, 0xd6, 0x1a, 0x1e, 0x0e, 0x05, 0x56, 0xe3, 0x2d, 0x2a, + 0x5f, 0x33, 0xda, 0x39, 0x5e, 0x58, 0x76, 0x4d, 0xe9, 0x48, 0xb8, 0x6f, + 0x64, 0x70, 0x87, 0x7c, 0xca, 0x66, 0x38, 0xcd, 0x64, 0xb1, 0xc2, 0x88, + 0xbc, 0x42, 0x79, 0xe1, 0x96, 0xa6, 0x61, 0x9e, 0xc3, 0x64, 0x29, 0x68, + 0x4c, 0xc6, 0x09, 0x17, 0xf2, 0x71, 0x36, 0x9b, 0x59, 0x20, 0xa7, 0x9d, + 0xe1, 0xd4, 0x58, 0x55, 0xfc, 0xe9, 0xb6, 0xcf, 0x51, 0x2c, 0xad, 0xf6, + 0xe3, 0x33, 0x90, 0x32, 0xfc, 0x81, 0x33, 0x0c, 0x5e, 0x6c, 0x3d, 0x7d, + 0xbc, 0x85, 0xb2, 0x15, 0x1b, 0x65, 0x44, 0x2c, 0x6e, 0x82, 0xf9, 0x97, + 0x5c, 0x9f, 0x15, 0x88, 0x4e, 0x16, 0xea, 0x43, 0x88, 0x14, 0x39, 0xbb, + 0x31, 0xa5, 0x8b, 0x4e, 0x49, 0xee, 0x3d, 0xce, 0x2a, 0xc4, 0x22, 0x07, + 0x50, 0xcb, 0xca, 0x1b, 0x8f, 0x11, 0x4c, 0xea, 0xb9, 0x4b, 0xaf, 0xcb, + 0x93, 0x9a, 0xed, 0x73, 0xdd, 0xc8, 0x14, 0x0a, 0xba, 0xbf, 0x7a, 0x59, + 0xc2, 0x92, 0x55, 0xdc, 0xe6, 0x95, 0x76, 0x16, 0x66, 0x08, 0xd2, 0xc0, + 0xc0, 0x6c, 0xde, 0xa3, 0x1e, 0xa9, 0xb5, 0x2d, 0x52, 0x66, 0xe2, 0x10, + 0xa8, 0x7f, 0xdd, 0x71, 0x96, 0x98, 0x0e, 0x79, 0x1f, 0xff, 0xf4, 0x6c, + 0x20, 0x82, 0x1e, 0xc7, 0x8a, 0x13, 0x4c, 0x1c, 0xd9, 0x70, 0x90, 0x38, + 0x55, 0xd3, 0x45, 0xc7, 0x3d, 0x1f, 0x2d, 0x37, 0xbf, 0xd0, 0xfe, 0xdb, + 0x41, 0x18, 0x20, 0xce, 0x3f, 0x54, 0x57, 0xb1, 0x49, 0x93, 0x77, 0x1a, + 0x98, 0x37, 0x4a, 0xe1, 0x51, 0x79, 0xe7, 0x3b, 0x4d, 0x35, 0xa5, 0x9e, + 0xbf, 0x95, 0xae, 0x21, 0x29, 0xa2, 0x6b, 0xb8, 0xf8, 0x35, 0x6e, 0xb1, + 0x5b, 0xab, 0x1a, 0xa8, 0xee, 0x32, 0x86, 0xc8, 0xc6, 0x1f, 0x52, 0xff, + 0x20, 0x8b, 0xee, 0x1e, 0xb8, 0xab, 0x9a, 0x84, 0xb4, 0xf5, 0xe4, 0xd1, + 0xa3, 0xa5, 0x51, 0xf6, 0x9a, 0x83, 0xc3, 0xa0, 0xa0, 0x8e, 0x6a, 0xe0, + 0x5d, 0xe2, 0x50, 0x47, 0x0d, 0x5e, 0x74, 0xfe, 0x8e, 0x78, 0x71, 0x7b, + 0xdb, 0x97, 0xd4, 0x39, 0x3d, 0x80, 0x85, 0x7e, 0x0b, 0xed, 0xd9, 0x65, + 0x6c, 0x3d, 0x7d, 0xfa, 0x34, 0x8a, 0xcf, 0x99, 0xfe, 0x58, 0xf9, 0xf3, + 0x6b, 0x64, 0xf2, 0xf4, 0xfa, 0xee, 0xd4, 0xb7, 0x14, 0xdd, 0x79, 0x54, + 0x4e, 0x27, 0x02, 0xe4, 0xff, 0x0a, 0x8d, 0xec, 0xc3, 0x22, 0xbf, 0xc2, + 0xb2, 0x3c, 0x12, 0xe1, 0x13, 0x0d, 0x67, 0x8d, 0x92, 0xb2, 0xcc, 0xd0, + 0x0b, 0x5a, 0xa6, 0xf5, 0xa2, 0xcc, 0x41, 0x2f, 0x5e, 0x54, 0xce, 0x23, + 0x7e, 0x6e, 0x3a, 0x07, 0x0a, 0x10, 0xf8, 0x2a, 0x9d, 0x2c, 0xa6, 0xe4, + 0xcd, 0x7b, 0xf5, 0xf7, 0xb3, 0x68, 0xfd, 0xe4, 0x6c, 0x73, 0xf7, 0xcb, + 0x40, 0x9e, 0xe9, 0x3a, 0xf5, 0x09, 0x76, 0x80, 0xec, 0x1e, 0x6d, 0x05, + 0x92, 0xb9, 0x9a, 0xdc, 0x04, 0x16, 0x7e, 0xd7, 0xe2, 0x08, 0x61, 0x1a, + 0x6d, 0xf9, 0xe7, 0xb1, 0x90, 0xe9, 0x64, 0xf5, 0xf3, 0x83, 0x65, 0xc0, + 0x71, 0xb1, 0x3a, 0xbb, 0x42, 0x31, 0xd3, 0xb7, 0x02, 0xe6, 0xcc, 0xed, + 0xb7, 0xda, 0x47, 0x82, 0xa3, 0x2d, 0xc1, 0x54, 0xe5, 0x8d, 0x48, 0x55, + 0xf7, 0x63, 0x7e, 0xed, 0xa0, 0x6b, 0x48, 0xaa, 0xb8, 0x8b, 0xf8, 0xf4, + 0x26, 0xbd, 0x02, 0x8a, 0x0a, 0x0a, 0xd9, 0x97, 0x58, 0x4c, 0x48, 0x3a, + 0x2d, 0x9a, 0x91, 0xaa, 0x81, 0x23, 0xf0, 0x5b, 0xb3, 0xc0, 0xd7, 0xc4, + 0xa6, 0x38, 0x31, 0x37, 0x90, 0x4a, 0xa3, 0xf9, 0x1f, 0x82, 0xad, 0xd4, + 0x05, 0x10, 0x23, 0x1f, 0x78, 0xe7, 0xe0, 0xc8, 0x83, 0x02, 0xc4, 0xc8, + 0xe4, 0x65, 0xfa, 0x2b, 0x3a, 0x1e, 0xee, 0x85, 0xd5, 0xe7, 0xe0, 0x72, + 0x30, 0x6a, 0x58, 0xe3, 0xf8, 0x16, 0xe5, 0x15, 0x6c, 0xd6, 0xbe, 0x29, + 0x1b, 0xa3, 0x62, 0xcd, 0xbb, 0xa0, 0xc0, 0x68, 0x74, 0xd8, 0x26, 0x2e, + 0xf0, 0x50, 0x06, 0x56, 0x59, 0xbb, 0x39, 0x9f, 0x9d, 0xbd, 0xf4, 0x18, + 0xb0, 0x54, 0xa1, 0x9b, 0xcc, 0x04, 0x02, 0x7f, 0x4d, 0x46, 0xe8, 0x45, + 0x20, 0x93, 0xa5, 0x88, 0x10, 0x66, 0xe2, 0xd9, 0xa3, 0x9d, 0x9d, 0x7e, + 0xf4, 0x78, 0xb0, 0x0d, 0xf7, 0xc2, 0x60, 0xfa, 0x39, 0xbd, 0xe8, 0xe4, + 0xff, 0xb4, 0xe0, 0x4d, 0xb5, 0xf3, 0x2e, 0x9c, 0x3f, 0x81, 0xf6, 0x53, + 0xfc, 0x08, 0xf4, 0x7f, 0x85, 0xe0, 0xbc, 0x7a, 0x3f, 0xee, 0x3c, 0x7e, + 0xbc, 0xfd, 0xe5, 0xde, 0x69, 0xfc, 0x78, 0x67, 0x1b, 0xeb, 0x09, 0xa4, + 0x03, 0x83, 0x29, 0x7c, 0x70, 0x31, 0x32, 0xa2, 0x6c, 0xcc, 0x9e, 0xa3, + 0xe9, 0xf4, 0x26, 0x9c, 0x67, 0xda, 0x2b, 0xe6, 0x69, 0x5e, 0x55, 0xd3, + 0xa8, 0x7a, 0xc7, 0xd0, 0x2a, 0x9b, 0xd5, 0x3b, 0xf6, 0xcf, 0xf5, 0x04, + 0x98, 0x2f, 0x0b, 0xe0, 0x2f, 0x99, 0x93, 0x11, 0x69, 0x96, 0x18, 0x38, + 0x0f, 0x01, 0xde, 0x33, 0xe7, 0x10, 0x46, 0xda, 0x0b, 0x16, 0x91, 0x18, + 0xef, 0x05, 0x49, 0x88, 0xf5, 0xa3, 0xc3, 0x0d, 0x3e, 0x34, 0x27, 0xa5, + 0x49, 0x9a, 0x47, 0xf0, 0x4a, 0xfb, 0x8c, 0x58, 0xe0, 0x0b, 0xe4, 0xbc, + 0xc8, 0xc9, 0x9b, 0x82, 0x89, 0x06, 0x18, 0xfe, 0x92, 0xef, 0x62, 0xaf, + 0xa3, 0xe2, 0xc4, 0x53, 0x30, 0xe9, 0x76, 0xe8, 0x35, 0x86, 0xe1, 0xe3, + 0x25, 0xa9, 0x18, 0x55, 0x5a, 0xe2, 0xca, 0x61, 0x45, 0x31, 0xce, 0x72, + 0x4f, 0x94, 0xeb, 0xa6, 0xe0, 0x3d, 0x5f, 0x52, 0x50, 0x61, 0xb7, 0xb3, + 0x79, 0x8b, 0x7f, 0xb7, 0x6b, 0xcc, 0x93, 0x33, 0x61, 0xad, 0x7a, 0x81, + 0xb5, 0xd2, 0xba, 0x95, 0x3c, 0xec, 0xde, 0x62, 0x74, 0xdd, 0x32, 0x6b, + 0x66, 0xe7, 0x74, 0x87, 0x4f, 0x5a, 0xcb, 0x04, 0xa9, 0xed, 0x19, 0x75, + 0xf8, 0xcd, 0x12, 0xce, 0x7d, 0xb5, 0xfd, 0x54, 0x03, 0x94, 0xe8, 0x8c, + 0xfe, 0xe9, 0x92, 0x2d, 0x9c, 0x49, 0xbe, 0xb9, 0x87, 0x0e, 0x4b, 0xaf, + 0x83, 0xb5, 0x44, 0x40, 0x37, 0xf2, 0xcf, 0x32, 0xb9, 0xd6, 0x36, 0x41, + 0xf8, 0x4f, 0x98, 0x87, 0xd1, 0x42, 0xbc, 0x9d, 0xe3, 0xf7, 0x6e, 0xdf, + 0x3a, 0x30, 0xe4, 0x6a, 0xe9, 0xaa, 0xae, 0x57, 0x29, 0xa9, 0xda, 0xee, + 0x2e, 0xc7, 0x2c, 0x08, 0xf4, 0x09, 0x41, 0xd3, 0x95, 0x01, 0x1e, 0x92, + 0xba, 0x2a, 0x70, 0x07, 0x83, 0xf4, 0xca, 0x71, 0x50, 0x6e, 0x05, 0x6c, + 0x5c, 0xfe, 0xc6, 0xaa, 0x94, 0x22, 0xa2, 0x6f, 0xfa, 0x0a, 0x32, 0x58, + 0x3b, 0x5e, 0xc0, 0x24, 0xe0, 0xb2, 0x23, 0x74, 0x11, 0x4a, 0xd9, 0x8e, + 0xe4, 0x33, 0x6c, 0x07, 0x00, 0x2e, 0xf6, 0x98, 0x21, 0xce, 0x08, 0x29, + 0xa2, 0x4e, 0x6b, 0x5d, 0x8c, 0x86, 0xf5, 0x3d, 0x10, 0x11, 0x6a, 0x68, + 0x4a, 0xd2, 0x15, 0x14, 0x3b, 0x3c, 0x69, 0xb6, 0x18, 0x5a, 0x5a, 0x17, + 0x5b, 0x84, 0x58, 0x49, 0x89, 0x5c, 0x41, 0x30, 0xf3, 0x7d, 0x19, 0x6c, + 0x12, 0x95, 0xa9, 0x8a, 0x98, 0xdc, 0x5f, 0xc1, 0xac, 0xc9, 0x97, 0xd8, + 0x28, 0xd7, 0x59, 0x5a, 0xdd, 0xcc, 0xfc, 0x47, 0xb7, 0x2a, 0x23, 0xea, + 0x70, 0xef, 0xae, 0x42, 0xb3, 0xc1, 0x89, 0x23, 0xf9, 0x97, 0xd8, 0xc9, + 0x28, 0xdb, 0xfc, 0x10, 0x5f, 0x5f, 0x5f, 0xc7, 0xa8, 0x8b, 0x58, 0x12, + 0x19, 0x0f, 0xa2, 0x16, 0x6a, 0x8c, 0x1b, 0xca, 0xf1, 0x53, 0xc0, 0x9c, + 0x92, 0xaa, 0x72, 0x98, 0xd5, 0x88, 0xb7, 0x14, 0x09, 0x55, 0xd1, 0x4b, + 0xc2, 0x56, 0x65, 0x3d, 0xe4, 0x13, 0xac, 0x52, 0x53, 0x96, 0xec, 0x27, + 0xf7, 0xe9, 0xd7, 0x70, 0x12, 0x23, 0x1a, 0x0b, 0x29, 0x02, 0x12, 0xc2, + 0x34, 0xb3, 0x3d, 0xa4, 0xdb, 0xef, 0x51, 0xb0, 0x1c, 0xca, 0x77, 0x9f, + 0xc3, 0x93, 0x7b, 0xce, 0x57, 0x85, 0xd4, 0xa6, 0x4d, 0x77, 0x88, 0xde, + 0xed, 0xe5, 0xca, 0x82, 0x50, 0x12, 0xd6, 0x74, 0x0a, 0x3c, 0x73, 0x5b, + 0x3f, 0x11, 0x0a, 0xd5, 0x63, 0xf1, 0x9a, 0x74, 0x67, 0xa2, 0x0d, 0xa0, + 0xf4, 0x5f, 0x4d, 0xc0, 0x07, 0xca, 0xbb, 0x9d, 0xe1, 0xc8, 0xf6, 0x7d, + 0x62, 0x8e, 0x23, 0xb3, 0x7c, 0x63, 0xc2, 0x27, 0xf7, 0x60, 0x3b, 0x9e, + 0x4e, 0x6c, 0xb8, 0xcf, 0x2a, 0x1c, 0xa5, 0x52, 0x3c, 0x31, 0x2a, 0x57, + 0xb3, 0x94, 0xce, 0x7d, 0x38, 0xa4, 0x44, 0x35, 0xb0, 0xd7, 0xc4, 0x7e, + 0x92, 0xa9, 0x05, 0xc0, 0x4a, 0x5c, 0xc0, 0xb4, 0x6f, 0x96, 0x40, 0x87, + 0x39, 0x0b, 0xfd, 0x74, 0x7e, 0x4d, 0x3b, 0x47, 0xef, 0x12, 0xf4, 0xc7, + 0xa2, 0xb7, 0x42, 0x82, 0xb1, 0x7d, 0xf5, 0x9b, 0xa4, 0xc6, 0xff, 0xbf, + 0x62, 0xfb, 0xa0, 0x00, 0x8d, 0xb5, 0x65, 0xc1, 0xd2, 0x23, 0x6a, 0x9f, + 0x51, 0xdf, 0xb0, 0x4b, 0x61, 0x30, 0x9c, 0x7d, 0xee, 0x1c, 0x96, 0x24, + 0x62, 0x84, 0xb4, 0x2f, 0xce, 0xa2, 0x43, 0xe6, 0xa9, 0x9d, 0x7b, 0x24, + 0x76, 0x9f, 0x96, 0xc8, 0x7b, 0x08, 0x10, 0x85, 0xe1, 0xac, 0x42, 0x8d, + 0x3e, 0xcf, 0xc9, 0x88, 0x39, 0xfc, 0xee, 0x98, 0xea, 0xd3, 0x41, 0x6e, + 0xe7, 0x82, 0x5d, 0xcc, 0xeb, 0x47, 0xed, 0xd4, 0x11, 0x02, 0x17, 0x59, + 0x6e, 0x5a, 0xc8, 0x73, 0xc7, 0xd5, 0x60, 0xf1, 0x93, 0xa8, 0xc8, 0x89, + 0x93, 0x91, 0x4f, 0xb0, 0x10, 0x26, 0xec, 0xaa, 0xba, 0x7d, 0x62, 0xd1, + 0x62, 0x82, 0xfb, 0x45, 0xb3, 0xab, 0xf6, 0xcd, 0x61, 0x4f, 0xb4, 0xc3, + 0x39, 0xde, 0xdb, 0x02, 0xa8, 0xb0, 0x7c, 0xa3, 0xba, 0xc9, 0xeb, 0xe4, + 0x43, 0xea, 0x97, 0x14, 0xca, 0xf4, 0x6d, 0xaa, 0x70, 0xbc, 0x29, 0x4e, + 0xec, 0xd1, 0x6c, 0x5b, 0xda, 0x40, 0x79, 0x20, 0x10, 0x30, 0x8e, 0xc1, + 0x63, 0x86, 0x45, 0xe1, 0x15, 0x91, 0xcb, 0xff, 0xfd, 0xa7, 0x36, 0x6f, + 0x04, 0xf9, 0x45, 0xd6, 0xbf, 0x82, 0xf2, 0xb9, 0x83, 0x99, 0xee, 0x7c, + 0xda, 0xba, 0x23, 0xc9, 0x6f, 0xc2, 0xc3, 0x7d, 0x85, 0x2e, 0xc8, 0x6f, + 0x24, 0xae, 0x8b, 0x30, 0x1b, 0x95, 0xda, 0xaa, 0xef, 0xc5, 0xcf, 0xcc, + 0x5f, 0x2d, 0x39, 0xb7, 0x76, 0x5f, 0xc2, 0xc3, 0x31, 0x81, 0x8d, 0x12, + 0x74, 0xf7, 0x0e, 0x53, 0xd8, 0xb7, 0xff, 0x68, 0xef, 0xd5, 0x57, 0xbf, + 0xe7, 0x66, 0x71, 0x27, 0x3a, 0xa9, 0x71, 0x86, 0x6f, 0xb5, 0xe1, 0x6b, + 0x2a, 0x33, 0xa1, 0x0e, 0x83, 0x36, 0x8c, 0x1d, 0xe4, 0xee, 0x48, 0x8c, + 0x0f, 0xb2, 0x66, 0xa2, 0xb9, 0xc6, 0xc2, 0x3b, 0xb6, 0x30, 0x6f, 0x62, + 0x66, 0x6a, 0x6b, 0xe4, 0x84, 0x81, 0xa4, 0xd2, 0x0f, 0x40, 0xe3, 0xb5, + 0x29, 0x45, 0xb6, 0x93, 0x8d, 0xc3, 0xc3, 0x89, 0xd3, 0xdc, 0xfb, 0x2e, + 0x23, 0x41, 0x96, 0x7c, 0x94, 0xfb, 0x55, 0xd4, 0xd3, 0x93, 0x78, 0x86, + 0xc9, 0xda, 0x70, 0xb2, 0xf5, 0x6c, 0xb7, 0xc6, 0x8e, 0x55, 0xe4, 0x37, + 0x46, 0xfb, 0xda, 0xe8, 0x37, 0xb7, 0x08, 0x9b, 0xb0, 0x90, 0xc8, 0xd5, + 0xbd, 0xc9, 0xc8, 0xb5, 0x19, 0x34, 0x4e, 0xd5, 0x55, 0x75, 0x72, 0x76, + 0x1e, 0x3c, 0xa9, 0xbb, 0x7c, 0xd5, 0x9d, 0x3f, 0xea, 0xb3, 0x7c, 0x15, + 0x13, 0xad, 0x3d, 0x72, 0xce, 0xc7, 0xca, 0x19, 0x7b, 0x80, 0xa1, 0x07, + 0x58, 0x4f, 0xc1, 0x94, 0x2c, 0xcc, 0xc4, 0x9d, 0x7a, 0x69, 0x7c, 0x4e, + 0x22, 0x43, 0xc6, 0x80, 0x13, 0x5f, 0x59, 0x45, 0x91, 0x9d, 0xa1, 0x0a, + 0x96, 0xe3, 0x50, 0x9a, 0x36, 0xf9, 0xea, 0xda, 0xbb, 0xa5, 0xb4, 0xd7, + 0x49, 0x66, 0x9e, 0xfc, 0xfa, 0xd4, 0x92, 0xdb, 0xce, 0x44, 0x1f, 0x0e, + 0x46, 0xf1, 0xaa, 0x02, 0xdc, 0x8e, 0xf0, 0x15, 0xff, 0x97, 0xc4, 0xde, + 0xbd, 0x07, 0x31, 0x64, 0x79, 0xff, 0x21, 0xe8, 0x75, 0x4a, 0x43, 0xb8, + 0x9f, 0x3a, 0xe1, 0x5a, 0x95, 0xa0, 0x9e, 0x38, 0xda, 0x85, 0x7d, 0xa4, + 0x5b, 0xaf, 0x88, 0xa2, 0x57, 0x7f, 0x3b, 0x3f, 0xdf, 0xc0, 0x91, 0xf3, + 0x71, 0x15, 0xb5, 0xa0, 0x94, 0x39, 0xbf, 0x96, 0xc0, 0x51, 0x81, 0x7c, + 0x8d, 0x97, 0x8d, 0x15, 0x8e, 0x50, 0x72, 0x87, 0x96, 0x12, 0xb9, 0xa1, + 0xed, 0xeb, 0xe4, 0x46, 0xfc, 0x9f, 0xd1, 0xb0, 0x2c, 0xae, 0x2b, 0xb2, + 0xaa, 0x52, 0x69, 0x9d, 0x96, 0x70, 0x58, 0xe4, 0x32, 0x09, 0x34, 0x1d, + 0x9a, 0x9a, 0x9e, 0xb8, 0xdf, 0x9f, 0xbf, 0x7a, 0x49, 0x0e, 0x5a, 0x81, + 0xd3, 0x44, 0x44, 0x1c, 0x11, 0x60, 0x8b, 0xe1, 0x0c, 0x2e, 0x1f, 0xe8, + 0xa5, 0x35, 0x2b, 0x05, 0xca, 0x03, 0x42, 0xc9, 0x95, 0xf3, 0x50, 0x1a, + 0x9c, 0x98, 0x41, 0x4e, 0xa7, 0x0a, 0xd7, 0x82, 0x5b, 0x66, 0xc5, 0x74, + 0xd8, 0x6a, 0x87, 0x5c, 0xf3, 0x42, 0x9a, 0xf3, 0x0b, 0x3c, 0x02, 0x7c, + 0x62, 0x99, 0xbe, 0x8b, 0x2e, 0xbc, 0x29, 0x35, 0xfd, 0x36, 0x7b, 0x86, + 0x7a, 0xb6, 0x91, 0xf3, 0xd4, 0x58, 0x23, 0x69, 0xea, 0xd6, 0x5e, 0x76, + 0xef, 0x32, 0x5d, 0x1b, 0x15, 0x36, 0x54, 0x1c, 0x25, 0xab, 0x6e, 0xbe, + 0x28, 0x09, 0xd2, 0x4a, 0x3d, 0x14, 0x01, 0xe8, 0x07, 0x4d, 0xbc, 0x33, + 0xc9, 0x5e, 0x26, 0x97, 0xa5, 0x61, 0xa9, 0x68, 0xde, 0x2f, 0x8c, 0xdf, + 0x14, 0x8c, 0xc1, 0x38, 0x0f, 0xc1, 0x85, 0xd0, 0x29, 0x02, 0x71, 0xc1, + 0xe8, 0x84, 0x54, 0x9c, 0x50, 0xfa, 0xcd, 0x12, 0xb7, 0x88, 0x35, 0x0a, + 0x09, 0xb8, 0x84, 0xbe, 0xae, 0x4a, 0x4d, 0x96, 0xb1, 0xc6, 0xf0, 0x2c, + 0x66, 0x47, 0x81, 0x79, 0x2c, 0x6e, 0x16, 0x55, 0x14, 0x6a, 0xb3, 0x43, + 0x75, 0x5a, 0x53, 0xc2, 0x94, 0xb4, 0x69, 0x8c, 0x19, 0x46, 0xf3, 0x1d, + 0xfa, 0xa7, 0x38, 0x72, 0x5a, 0x5e, 0xa8, 0x3b, 0xc5, 0x28, 0xa7, 0xa1, + 0xbc, 0xb2, 0xff, 0x1d, 0xb3, 0x06, 0x82, 0x54, 0xb8, 0xa0, 0xf4, 0x1f, + 0xfc, 0xe9, 0x5a, 0x3c, 0x66, 0x66, 0x35, 0x4e, 0x72, 0xf8, 0x6a, 0xb8, + 0x95, 0x58, 0x9e, 0x32, 0x9d, 0x7e, 0x35, 0x2d, 0x16, 0xd5, 0xcd, 0x1a, + 0x56, 0xbb, 0xc1, 0x4e, 0x7b, 0x8d, 0x2e, 0x73, 0xcc, 0x02, 0xa6, 0x5e, + 0x9b, 0x78, 0x6e, 0xa3, 0xcb, 0x45, 0xfe, 0x5e, 0x80, 0x53, 0xa8, 0x5f, + 0xd7, 0x14, 0x3d, 0x10, 0x6b, 0xce, 0xb8, 0xff, 0xdb, 0x1d, 0x74, 0xf0, + 0xe9, 0x9d, 0x38, 0x51, 0x23, 0xbd, 0xcf, 0x0c, 0x88, 0x92, 0x96, 0x3b, + 0x74, 0x6a, 0x2a, 0x9d, 0x2d, 0x49, 0x20, 0xef, 0x41, 0x07, 0xb2, 0x89, + 0x50, 0x26, 0xd7, 0xe5, 0x70, 0x2e, 0x1a, 0x88, 0xcc, 0xa2, 0x22, 0x4f, + 0xb9, 0x95, 0xe1, 0x49, 0xa3, 0x17, 0xd9, 0xa4, 0x28, 0x86, 0x49, 0xb9, + 0xe6, 0x55, 0x0f, 0xe2, 0xb2, 0xa9, 0x41, 0xfd, 0x50, 0x32, 0x2b, 0x39, + 0x4e, 0x65, 0xd9, 0xe1, 0x37, 0xfc, 0xa6, 0x34, 0x65, 0xc4, 0x5f, 0xe8, + 0x6f, 0x02, 0x55, 0x3e, 0xc5, 0x74, 0x6c, 0x97, 0x1e, 0x35, 0xd6, 0x41, + 0xa7, 0x80, 0xa7, 0xd2, 0x0f, 0x38, 0x9c, 0x10, 0x0d, 0x25, 0xbd, 0x8e, + 0x03, 0x38, 0x5a, 0xec, 0x5f, 0xc2, 0x62, 0x38, 0xac, 0x52, 0xa2, 0xdc, + 0x7f, 0xcd, 0xf6, 0x92, 0x54, 0x2e, 0xe3, 0xe4, 0x81, 0x6b, 0xec, 0x80, + 0x77, 0xfb, 0xd1, 0xe3, 0x10, 0x6b, 0xb0, 0xac, 0xc0, 0xb9, 0x58, 0xc4, + 0x67, 0xa4, 0x70, 0x34, 0xdc, 0x5e, 0x81, 0x0f, 0x40, 0xfa, 0xee, 0x39, + 0x2e, 0x71, 0x93, 0x39, 0xda, 0x62, 0x98, 0xd6, 0xe9, 0xb8, 0x0a, 0xb6, + 0x17, 0x93, 0x82, 0x6b, 0xc2, 0x5c, 0x51, 0xab, 0x00, 0xfc, 0x4a, 0x6c, + 0x83, 0x0d, 0xb4, 0xd3, 0xbe, 0x5a, 0x33, 0x1c, 0x30, 0xe5, 0xce, 0xe5, + 0xdc, 0x58, 0x7a, 0xae, 0x4b, 0x91, 0x90, 0xba, 0x4e, 0x69, 0xe9, 0xd0, + 0xc0, 0x00, 0x95, 0xa1, 0xec, 0x93, 0x28, 0xcc, 0x91, 0x2d, 0x81, 0x7c, + 0x3a, 0x3d, 0x66, 0x1c, 0xf5, 0xd8, 0xe8, 0x80, 0x7f, 0xad, 0xe0, 0x7d, + 0x68, 0xbe, 0x86, 0xff, 0xac, 0x8b, 0x62, 0xfa, 0xd5, 0x68, 0x36, 0xc6, + 0x35, 0xac, 0x34, 0xd0, 0xca, 0xde, 0x25, 0xc9, 0xc1, 0x6d, 0xb9, 0xb5, + 0x7d, 0x45, 0xa6, 0xa5, 0x87, 0x90, 0x2c, 0x6e, 0xe7, 0x4e, 0x18, 0xaa, + 0x9a, 0x2d, 0x6a, 0x06, 0x1c, 0x4e, 0x3f, 0x60, 0x45, 0x31, 0x36, 0xdf, + 0x6c, 0xc8, 0x4b, 0xae, 0xa3, 0x8d, 0x8f, 0x69, 0xa2, 0x4b, 0xba, 0x79, + 0x3e, 0x06, 0x45, 0x7c, 0xde, 0x6f, 0xf6, 0x62, 0x6f, 0xb8, 0x56, 0xd2, + 0x69, 0x7a, 0xc1, 0xf7, 0x60, 0xff, 0xe5, 0xd1, 0xdf, 0x8f, 0x5e, 0x7a, + 0xfa, 0xcf, 0x77, 0x67, 0x67, 0x9b, 0xef, 0xd3, 0x72, 0x98, 0x96, 0x45, + 0x45, 0x1a, 0x10, 0xb0, 0x46, 0x7a, 0xd2, 0x94, 0xd1, 0x39, 0xe4, 0x7e, + 0x6d, 0xb1, 0xf1, 0x93, 0x60, 0x42, 0x36, 0x16, 0x5d, 0xf3, 0x94, 0x52, + 0xbb, 0x4f, 0xf0, 0x07, 0xb3, 0x54, 0x11, 0x6f, 0x4b, 0xcc, 0xe1, 0xa0, + 0xf8, 0x5c, 0x12, 0xe8, 0x78, 0x43, 0x98, 0xea, 0x51, 0xf4, 0x9c, 0xef, + 0x3f, 0x43, 0x3a, 0xa0, 0xbc, 0xb3, 0x5f, 0xe1, 0xbd, 0x32, 0x67, 0xe0, + 0xe2, 0xe7, 0x32, 0x29, 0x21, 0xee, 0xe1, 0xae, 0x71, 0xab, 0x1c, 0xd6, + 0x02, 0x4e, 0xfe, 0x1a, 0x1f, 0x9c, 0xc5, 0xcf, 0x8f, 0x5e, 0x1e, 0x7d, + 0x77, 0x70, 0x7e, 0x14, 0x4d, 0xa6, 0xc9, 0x85, 0x01, 0x8d, 0xef, 0x32, + 0x2c, 0x84, 0x23, 0xff, 0x55, 0x76, 0x26, 0x32, 0x5d, 0xc2, 0xe1, 0x0a, + 0x8c, 0xde, 0x53, 0x7c, 0xcc, 0xf4, 0xfd, 0x4b, 0xd0, 0x75, 0xc0, 0xe5, + 0xdf, 0xe1, 0xe1, 0x80, 0x69, 0x4e, 0x67, 0xb2, 0x54, 0xef, 0x0b, 0x92, + 0x29, 0xe8, 0x86, 0x55, 0xf4, 0x36, 0x47, 0x4c, 0x8b, 0xcc, 0x00, 0xe6, + 0xf1, 0xd7, 0xbb, 0x2e, 0x6a, 0xbb, 0xb5, 0xe1, 0x8c, 0x14, 0xe7, 0xac, + 0x3f, 0x43, 0xe3, 0x14, 0x67, 0xf6, 0x1e, 0x9e, 0xe3, 0x8a, 0x8e, 0xc1, + 0x46, 0xaf, 0x2b, 0xb9, 0x45, 0x55, 0x35, 0x6d, 0xd0, 0x72, 0x86, 0x0d, + 0x9b, 0xc2, 0x7e, 0x41, 0x05, 0xd0, 0x25, 0xfd, 0xfb, 0x39, 0x3d, 0xd8, + 0xaa, 0x21, 0x70, 0x20, 0x39, 0x73, 0xdb, 0x7f, 0x3b, 0x80, 0x8a, 0x4f, + 0xbe, 0xf6, 0x6a, 0x74, 0x99, 0x12, 0x4e, 0x19, 0xd9, 0x8d, 0x98, 0xb8, + 0x4f, 0x59, 0xe2, 0x9c, 0x40, 0x28, 0x9d, 0x27, 0x48, 0x08, 0x0e, 0x53, + 0xf2, 0x9b, 0xa1, 0xfb, 0x03, 0x1b, 0x93, 0x06, 0xa4, 0xfa, 0x75, 0x56, + 0x32, 0x56, 0xf8, 0x94, 0x80, 0x50, 0xd3, 0x0f, 0x35, 0xa5, 0xb5, 0x98, + 0xa4, 0x7a, 0xce, 0x29, 0x6c, 0x37, 0x39, 0xcf, 0xa9, 0x6f, 0x6c, 0xfb, + 0xaa, 0x9b, 0x0e, 0xde, 0x26, 0x79, 0x89, 0xf3, 0xa4, 0xe8, 0x47, 0xc4, + 0xce, 0xd4, 0x18, 0xc7, 0x15, 0x2e, 0x07, 0xf9, 0xe5, 0xed, 0x5c, 0x29, + 0x05, 0xa6, 0x2d, 0x94, 0xfc, 0x2c, 0x3a, 0x1e, 0xf4, 0xa3, 0x5b, 0x83, + 0xcb, 0xda, 0x56, 0xa2, 0x20, 0xb3, 0x37, 0x7d, 0x83, 0xc8, 0x2c, 0xc3, + 0x30, 0x35, 0x01, 0x23, 0xc1, 0x53, 0x1f, 0x34, 0xbb, 0x5b, 0xfb, 0xb5, + 0x3d, 0x1d, 0x4c, 0xd9, 0x6d, 0x7c, 0x4f, 0xdd, 0xd9, 0xf5, 0xaf, 0xda, + 0x83, 0xbd, 0x49, 0xaa, 0xb4, 0x5f, 0x71, 0x3a, 0xf7, 0x5a, 0xda, 0xae, + 0x13, 0xe0, 0xf3, 0xb9, 0x5b, 0x9f, 0xac, 0xd8, 0x5d, 0x22, 0xcc, 0xd5, + 0x78, 0x39, 0x3a, 0x7d, 0x73, 0xce, 0x88, 0xec, 0xf8, 0x17, 0x11, 0xb7, + 0x55, 0xa8, 0x7d, 0x0f, 0x67, 0x95, 0x53, 0x7d, 0x48, 0x4a, 0x59, 0x97, + 0x5a, 0xb4, 0x5c, 0x49, 0xfd, 0x6a, 0xae, 0x5d, 0x88, 0x25, 0x0c, 0x04, + 0xdc, 0x6a, 0x86, 0xc8, 0x32, 0xe1, 0xbe, 0x0b, 0x34, 0xb1, 0x16, 0x7d, + 0x4b, 0x6e, 0xd0, 0xc9, 0x9b, 0x73, 0xae, 0x8f, 0xb3, 0x95, 0x40, 0x9a, + 0x1e, 0x9c, 0xd5, 0x9c, 0xfc, 0x8a, 0xcf, 0xb4, 0xf5, 0x0c, 0xc6, 0x04, + 0x06, 0x06, 0x37, 0xe0, 0x51, 0xf9, 0xfa, 0x99, 0x3e, 0x70, 0xc6, 0x6b, + 0x2f, 0xc0, 0x0b, 0x92, 0x33, 0xaa, 0x69, 0x84, 0xfd, 0x00, 0xd6, 0x8b, + 0xd1, 0x9a, 0x08, 0x20, 0x83, 0x93, 0x0b, 0x15, 0x74, 0x83, 0x57, 0x98, + 0x0a, 0x2f, 0x20, 0x63, 0x68, 0x22, 0x29, 0xce, 0x09, 0xb6, 0x5b, 0xf4, + 0xf3, 0xcc, 0x12, 0x44, 0xde, 0x44, 0xd6, 0x2d, 0xf6, 0x79, 0xae, 0x35, + 0xdf, 0xca, 0x89, 0xe9, 0xab, 0x74, 0xf3, 0x03, 0xf6, 0x2b, 0x9e, 0x70, + 0xbb, 0xed, 0x8a, 0x53, 0x1a, 0xc5, 0x6b, 0x91, 0xa3, 0x64, 0xf0, 0x64, + 0xa6, 0x9a, 0x22, 0x44, 0x1b, 0xbc, 0x3b, 0x4e, 0x0e, 0x40, 0x83, 0x90, + 0x3a, 0x42, 0x84, 0xb6, 0xb6, 0xac, 0x22, 0xc4, 0x20, 0xa7, 0xe5, 0xe4, + 0xf1, 0xe9, 0xd5, 0x93, 0x66, 0x26, 0xa6, 0x5e, 0x6f, 0xba, 0xd8, 0x7e, + 0xd1, 0x92, 0x9e, 0x91, 0x4d, 0xe8, 0x46, 0x36, 0xe9, 0x4d, 0xcc, 0xec, + 0x00, 0x67, 0xa0, 0x17, 0x48, 0xd6, 0xb2, 0xea, 0xca, 0x2c, 0x52, 0x28, + 0x71, 0x98, 0x82, 0x66, 0x9e, 0x21, 0x1a, 0xf2, 0xb1, 0x63, 0x06, 0x05, + 0xb2, 0x3f, 0x81, 0xa6, 0x46, 0xd2, 0x0b, 0x1a, 0x99, 0x00, 0xbe, 0xcb, + 0xf9, 0xca, 0xf4, 0x16, 0x21, 0x30, 0xd6, 0x85, 0x82, 0x00, 0x44, 0xf1, + 0x69, 0x5f, 0x92, 0x14, 0xa9, 0x04, 0xd4, 0xd3, 0x95, 0x61, 0xe7, 0x46, + 0xa6, 0x11, 0x88, 0x3e, 0x99, 0x54, 0x57, 0x4b, 0x93, 0x8b, 0xdd, 0x8d, + 0x6e, 0xf3, 0xc4, 0x8f, 0x4f, 0x2e, 0x5e, 0x7a, 0x8c, 0xb7, 0x09, 0x56, + 0x77, 0x65, 0x2b, 0xc1, 0x9d, 0xdb, 0x37, 0xab, 0x2b, 0xa6, 0xbb, 0xc6, + 0xce, 0x85, 0x19, 0x56, 0x75, 0x15, 0x64, 0x58, 0x77, 0xe4, 0x58, 0x67, + 0x7f, 0x37, 0x76, 0x81, 0x70, 0xa6, 0x90, 0x93, 0x40, 0x0f, 0x79, 0x15, + 0x56, 0xa5, 0x59, 0x6c, 0xed, 0xcd, 0xc3, 0x29, 0x85, 0x55, 0x9d, 0x1e, + 0x9c, 0xfd, 0x7d, 0x09, 0x93, 0x32, 0x9c, 0xa3, 0x06, 0xba, 0xc6, 0xf7, + 0x82, 0xd7, 0x19, 0xb6, 0xea, 0x0e, 0xd7, 0x19, 0x26, 0xf5, 0xae, 0xb3, + 0xb7, 0x73, 0xcb, 0xae, 0x73, 0x80, 0x1c, 0x8f, 0x27, 0xed, 0xdb, 0x9c, + 0xd3, 0x0d, 0x26, 0x70, 0x96, 0x25, 0xd7, 0x98, 0x2f, 0xee, 0xd9, 0xdf, + 0xfd, 0xd9, 0x57, 0xb8, 0xc6, 0xf0, 0x41, 0xde, 0x35, 0xd6, 0x63, 0x0a, + 0xdf, 0xe3, 0xae, 0x6b, 0x5c, 0x17, 0x7a, 0xff, 0xe9, 0x0a, 0xbb, 0x37, + 0xd8, 0xbf, 0xbd, 0xb7, 0xa9, 0x28, 0x0e, 0x01, 0x87, 0x73, 0xfe, 0xef, + 0xdf, 0x87, 0x60, 0xe9, 0x59, 0xdc, 0xf9, 0x4e, 0xc2, 0xc2, 0xee, 0x79, + 0x27, 0x35, 0x05, 0xb4, 0xeb, 0x4e, 0xba, 0xf8, 0x79, 0x3e, 0xa5, 0x68, + 0xb5, 0x9e, 0x05, 0x26, 0xb6, 0xd9, 0x90, 0x01, 0x97, 0x83, 0xa6, 0xf3, + 0x31, 0xa8, 0xa0, 0x1f, 0xdc, 0x35, 0x18, 0xb8, 0x6c, 0x18, 0x71, 0xe3, + 0xb3, 0x64, 0x2c, 0x5d, 0xa0, 0xa4, 0xc5, 0x1c, 0xb9, 0x3e, 0x5d, 0xe4, + 0x41, 0x24, 0x6a, 0x1f, 0xd4, 0xd1, 0x69, 0x2a, 0x12, 0xc6, 0x02, 0xad, + 0x52, 0x2c, 0x09, 0x8a, 0x9a, 0x89, 0xaf, 0xe6, 0xfc, 0xb3, 0x82, 0x6c, + 0x9d, 0xa7, 0x83, 0xc7, 0x5b, 0x83, 0xad, 0x46, 0x8f, 0x84, 0x54, 0x70, + 0xfa, 0x2f, 0x89, 0xed, 0x5b, 0xb0, 0xf1, 0xe8, 0x9f, 0xdc, 0x2c, 0x1e, + 0x97, 0x1d, 0x50, 0xc0, 0xa7, 0x2d, 0x6c, 0xf2, 0xc8, 0x03, 0x25, 0x0c, + 0xd0, 0xde, 0x3f, 0xfb, 0x0e, 0x01, 0x7e, 0x2a, 0xda, 0x5b, 0x91, 0xec, + 0xfe, 0xb9, 0x9a, 0x42, 0xec, 0x9c, 0x54, 0x9b, 0xd5, 0xa3, 0x6d, 0x49, + 0xba, 0x32, 0xee, 0x07, 0x98, 0x5d, 0xe8, 0xc0, 0x58, 0x92, 0x13, 0x53, + 0x37, 0xd2, 0x8c, 0x11, 0xb8, 0x90, 0x80, 0xed, 0xc5, 0x29, 0x86, 0x09, + 0x0d, 0x58, 0xcd, 0xab, 0xa1, 0x78, 0xda, 0xc0, 0xc4, 0x57, 0x2c, 0x4b, + 0xce, 0x79, 0x13, 0xf5, 0x5b, 0xb2, 0x3e, 0x87, 0x58, 0xd8, 0x88, 0xd2, + 0xbe, 0x22, 0xe1, 0x8e, 0xe1, 0x7e, 0x83, 0xf9, 0x47, 0x38, 0xcd, 0x15, + 0x9b, 0x58, 0x5d, 0xee, 0x35, 0x30, 0xcf, 0x4a, 0x04, 0x34, 0x9a, 0xa5, + 0x4e, 0x09, 0xf8, 0xad, 0x92, 0x3e, 0xf4, 0xfd, 0xcb, 0x2c, 0xa1, 0x76, + 0xc6, 0x9d, 0x5f, 0x1a, 0x10, 0x3c, 0xe2, 0xd0, 0x34, 0xf7, 0x61, 0x35, + 0xc1, 0xe5, 0xae, 0xd8, 0x05, 0x17, 0x55, 0xea, 0x46, 0xc6, 0xea, 0x93, + 0xed, 0x56, 0xc6, 0x6a, 0x5e, 0xc5, 0xe4, 0x3a, 0x9d, 0x20, 0x6c, 0xfc, + 0xbe, 0xf9, 0xab, 0xe7, 0x31, 0x7a, 0xfe, 0xfa, 0xac, 0x65, 0xc0, 0x54, + 0x29, 0x43, 0x2a, 0x71, 0xf9, 0x3f, 0x42, 0x35, 0x3a, 0xa5, 0xfd, 0xf5, + 0x65, 0x59, 0x2c, 0x2e, 0x40, 0xbd, 0xdb, 0x0f, 0xc6, 0x6c, 0x68, 0x8a, + 0x96, 0x51, 0xa6, 0x30, 0xd3, 0x0b, 0xf2, 0xe4, 0xa2, 0xb7, 0x9e, 0x2c, + 0x30, 0xbb, 0xba, 0x75, 0xf6, 0xbd, 0xa0, 0x44, 0x0f, 0x75, 0xc1, 0x61, + 0xb1, 0x88, 0xeb, 0xe4, 0x0c, 0x19, 0xe4, 0x1f, 0xd4, 0x55, 0x5d, 0x7a, + 0x79, 0x29, 0xa2, 0x7d, 0x92, 0x4b, 0x97, 0x42, 0x1a, 0x34, 0x14, 0x19, + 0x5e, 0x97, 0xa6, 0x1d, 0x52, 0xe6, 0xbb, 0xd1, 0xe1, 0x79, 0x69, 0x6c, + 0xdd, 0x4a, 0xce, 0x17, 0x5f, 0x68, 0xb3, 0xf3, 0x65, 0x35, 0x1a, 0x69, + 0xcc, 0x9f, 0xd6, 0x97, 0x5b, 0xab, 0xbb, 0x35, 0x71, 0x88, 0xf9, 0xd5, + 0xa3, 0x18, 0xbf, 0x34, 0x52, 0x37, 0x26, 0xff, 0xf0, 0x09, 0xfd, 0x70, + 0xd0, 0x9e, 0xc8, 0xf3, 0x29, 0x13, 0x82, 0xbc, 0xd3, 0x50, 0x7b, 0x91, + 0x8f, 0xd3, 0x72, 0x4a, 0x2d, 0x5f, 0xa6, 0xd9, 0x90, 0x9b, 0x28, 0x53, + 0xff, 0x6c, 0x4e, 0x1e, 0x27, 0x4c, 0x75, 0xe6, 0xec, 0xf0, 0x25, 0xb1, + 0x8f, 0xf7, 0x5f, 0x79, 0xe4, 0x69, 0x16, 0xb8, 0x2f, 0x07, 0x12, 0x26, + 0x4e, 0xa6, 0x4e, 0x27, 0xe0, 0x32, 0x24, 0x74, 0xe3, 0xc2, 0x05, 0x75, + 0x3c, 0x3e, 0x35, 0xb5, 0xdb, 0xc4, 0x70, 0x66, 0xc9, 0x7b, 0x9f, 0xcd, + 0x80, 0xfa, 0xf5, 0x88, 0xe8, 0x59, 0xc9, 0xb9, 0xdf, 0x48, 0x46, 0x72, + 0x7f, 0xa3, 0x36, 0x6c, 0x9d, 0x1a, 0x60, 0x35, 0x3f, 0xc7, 0x95, 0x27, + 0x64, 0xa2, 0xd4, 0xf2, 0x32, 0x37, 0xc6, 0xa4, 0x10, 0x4a, 0x34, 0xaf, + 0x3e, 0xdd, 0x4d, 0x72, 0x66, 0x3b, 0x3e, 0x13, 0xc9, 0x99, 0xf9, 0xb7, + 0xb7, 0x06, 0xdb, 0x83, 0x9d, 0xc1, 0xee, 0xfd, 0xc8, 0xce, 0xde, 0xc0, + 0x65, 0x64, 0xa7, 0x93, 0x7d, 0x16, 0xb2, 0x7b, 0xf2, 0x7b, 0x93, 0xdd, + 0x93, 0xcf, 0x44, 0x76, 0x4f, 0xee, 0x44, 0x76, 0x4f, 0x3e, 0x33, 0xd9, + 0xc9, 0xfc, 0x3b, 0xc9, 0xd6, 0xa3, 0xbd, 0x47, 0xe9, 0xa3, 0x9d, 0xbd, + 0xbd, 0xc7, 0x4f, 0xb6, 0x1f, 0x94, 0xf8, 0x1e, 0xb5, 0x89, 0xef, 0xc9, + 0x67, 0x22, 0x3e, 0x71, 0x6d, 0x19, 0xd2, 0x4b, 0x3d, 0xe2, 0x3b, 0x93, + 0xb4, 0x75, 0x6d, 0x48, 0x88, 0xe4, 0xa1, 0x6f, 0x71, 0x1a, 0x93, 0x94, + 0xfc, 0x6b, 0xb5, 0xac, 0xdb, 0xe6, 0xd5, 0x57, 0xdf, 0x49, 0x5f, 0xd7, + 0x12, 0x2b, 0x33, 0xa8, 0xa5, 0x5b, 0xcc, 0x0d, 0x30, 0xa4, 0x63, 0x3b, + 0x07, 0x91, 0xe6, 0x13, 0xcc, 0x31, 0x00, 0xc2, 0x3b, 0xc5, 0xef, 0xe5, + 0xca, 0xda, 0xca, 0xe2, 0xb6, 0x86, 0xda, 0x03, 0xc1, 0x5e, 0xed, 0xed, + 0xe3, 0xf6, 0xc4, 0xfc, 0xf8, 0xd7, 0x41, 0xb8, 0xbe, 0x34, 0x01, 0xe9, + 0x6f, 0x97, 0xd4, 0x4d, 0xab, 0xba, 0x0f, 0x2b, 0x36, 0x21, 0x7c, 0x30, + 0x5a, 0xd5, 0xf9, 0xb7, 0xbf, 0xdc, 0x19, 0x6c, 0x3f, 0x79, 0x86, 0xc0, + 0xab, 0x7d, 0xfb, 0xf7, 0x9d, 0xd5, 0x48, 0xb6, 0x4d, 0xb1, 0x4b, 0x08, + 0x56, 0xe7, 0xf5, 0x41, 0x1b, 0xee, 0x48, 0xb0, 0x4c, 0xaf, 0xa8, 0xdb, + 0x09, 0xb5, 0x8e, 0x62, 0x8f, 0x3a, 0x8b, 0x4b, 0x6e, 0x9c, 0x59, 0xd5, + 0x49, 0xed, 0xe1, 0xee, 0x9c, 0x51, 0x34, 0xa2, 0xd2, 0xe6, 0x9a, 0xfc, + 0x0c, 0x99, 0x69, 0x06, 0x9f, 0xef, 0x79, 0xf1, 0x3d, 0x71, 0xce, 0x18, + 0x23, 0x27, 0x31, 0xf5, 0x9b, 0xdf, 0x58, 0xae, 0xba, 0x37, 0x67, 0x5c, + 0x1a, 0xbb, 0xb8, 0x87, 0x51, 0xd6, 0x1c, 0x7d, 0x65, 0x45, 0xbd, 0xb5, + 0x38, 0xfe, 0x89, 0xab, 0xa9, 0xc3, 0xbf, 0xb5, 0x35, 0xc8, 0xaa, 0x45, + 0x0d, 0x30, 0x92, 0x06, 0xc7, 0x9a, 0x65, 0x67, 0xad, 0xd6, 0x85, 0xee, + 0x83, 0x5d, 0x07, 0xd2, 0x0c, 0xb5, 0x7d, 0xcc, 0x89, 0xb4, 0x26, 0x7c, + 0x78, 0x33, 0xd9, 0xfd, 0xec, 0x7b, 0x1c, 0x87, 0x59, 0xd8, 0x43, 0x9f, + 0x05, 0xda, 0x71, 0xb7, 0x1d, 0x03, 0xce, 0xb6, 0x0f, 0x26, 0x6c, 0xb8, + 0x27, 0x9d, 0x6d, 0x09, 0xdb, 0xdc, 0x6e, 0xd8, 0xfe, 0xe2, 0xfb, 0x0d, + 0x27, 0xe6, 0xcb, 0x21, 0x19, 0x4e, 0xbd, 0x21, 0x88, 0xe2, 0x00, 0x38, + 0x35, 0xb5, 0xb0, 0x70, 0xf1, 0x10, 0x9c, 0x44, 0x3e, 0x75, 0xc0, 0x90, + 0xe7, 0x43, 0x86, 0x28, 0xa3, 0x59, 0x8a, 0x8e, 0xbe, 0xac, 0x9a, 0x85, + 0xd0, 0x86, 0xd1, 0xee, 0x56, 0x13, 0x89, 0x16, 0xe5, 0xb7, 0x75, 0xc2, + 0x26, 0x21, 0xd4, 0x5d, 0x56, 0x33, 0xd0, 0x88, 0x9f, 0xa0, 0xaf, 0x0f, + 0x99, 0x28, 0x92, 0x12, 0xfc, 0xbd, 0x74, 0x70, 0x8e, 0x09, 0x57, 0x92, + 0xac, 0xb0, 0x40, 0xd4, 0x09, 0xc9, 0xce, 0x22, 0x2f, 0xd1, 0x4a, 0x19, + 0xeb, 0xbf, 0x22, 0x74, 0x06, 0x6e, 0xe6, 0x11, 0x51, 0x80, 0x95, 0x66, + 0x05, 0xe9, 0xf4, 0x7d, 0x71, 0x9d, 0x52, 0x92, 0x65, 0x20, 0xd1, 0xae, + 0x0b, 0xcf, 0x1c, 0xd7, 0x86, 0xb9, 0x54, 0xb6, 0x41, 0x66, 0x96, 0x5f, + 0xa6, 0x88, 0x79, 0x34, 0xa6, 0x6b, 0x40, 0xf8, 0x2a, 0x81, 0xda, 0xaf, + 0xb2, 0xa0, 0x2c, 0x4c, 0xa7, 0x11, 0xe6, 0x55, 0x96, 0xb4, 0x49, 0x4c, + 0x98, 0xf1, 0x2d, 0x3c, 0xe4, 0xbc, 0x5d, 0xd1, 0xb5, 0xc8, 0x09, 0xd2, + 0x79, 0x42, 0x61, 0x31, 0x02, 0x2c, 0x17, 0x1b, 0xb5, 0xd7, 0xb3, 0x0d, + 0x2a, 0x2b, 0x75, 0x87, 0xb4, 0x4f, 0xcb, 0x6d, 0x5f, 0xf3, 0xec, 0x71, + 0x00, 0xf1, 0x80, 0x05, 0xa1, 0x50, 0xe3, 0xe7, 0xe9, 0xc4, 0xfb, 0x3b, + 0x70, 0xc1, 0x27, 0x3b, 0x8d, 0xeb, 0xf7, 0x9c, 0x3c, 0xa7, 0x8b, 0xd9, + 0x5c, 0x30, 0xbc, 0x6f, 0xc1, 0x12, 0xa6, 0xa0, 0xe3, 0x46, 0xf4, 0x03, + 0x81, 0x5f, 0x71, 0xe6, 0x9f, 0xa0, 0x37, 0x6a, 0x1c, 0xd2, 0xa0, 0xb5, + 0x69, 0xf2, 0x57, 0x47, 0x63, 0x40, 0xc6, 0x40, 0x63, 0x2c, 0x41, 0xb7, + 0x17, 0xab, 0x0e, 0xd8, 0x6f, 0x06, 0x4c, 0xac, 0x3f, 0x5f, 0x50, 0x8f, + 0xbc, 0x70, 0xa7, 0x90, 0x44, 0x10, 0x2f, 0xb6, 0x01, 0xe6, 0xc4, 0x00, + 0x3b, 0x97, 0x1c, 0x52, 0x11, 0xe6, 0x61, 0x3a, 0xd2, 0x72, 0xba, 0x1d, + 0xa3, 0xb6, 0xd9, 0x26, 0x1b, 0x5e, 0xa7, 0x10, 0xa2, 0x3a, 0x59, 0x76, + 0x4f, 0xda, 0x4c, 0x2e, 0x24, 0x4d, 0x0f, 0x5b, 0xc7, 0x72, 0x7b, 0x43, + 0x6f, 0x1d, 0xdf, 0x27, 0x57, 0x24, 0x0b, 0x1c, 0xde, 0xaf, 0x21, 0x1d, + 0x4e, 0xa4, 0xc1, 0xa4, 0x1e, 0x02, 0x73, 0x99, 0x58, 0x5c, 0xd7, 0x2a, + 0x5a, 0xcf, 0x06, 0xb0, 0x57, 0xfe, 0xe5, 0x05, 0x2a, 0xa7, 0xb4, 0x08, + 0x7c, 0x2b, 0xde, 0xeb, 0x53, 0x84, 0xfd, 0x03, 0x16, 0xb4, 0x27, 0xf0, + 0xad, 0x1b, 0x7d, 0x29, 0x0d, 0xa8, 0x18, 0x38, 0xc0, 0x54, 0x95, 0x52, + 0x86, 0x2b, 0xc1, 0x91, 0x79, 0xc0, 0x06, 0x4e, 0x6b, 0xcb, 0x24, 0xe2, + 0xce, 0x7d, 0xc1, 0x06, 0x9b, 0x54, 0x94, 0xfe, 0x9c, 0xdd, 0xbe, 0x0e, + 0xed, 0x7c, 0x52, 0x04, 0xee, 0xce, 0x3b, 0xe3, 0x2c, 0x80, 0xf0, 0xf4, + 0x56, 0x87, 0x99, 0x70, 0xc0, 0xb1, 0x5c, 0xc9, 0x94, 0x5e, 0x70, 0x92, + 0xd8, 0x32, 0x74, 0x90, 0xe7, 0x29, 0x56, 0x14, 0x31, 0x72, 0x2f, 0xd3, + 0xe7, 0xba, 0x83, 0xac, 0xf2, 0xec, 0x11, 0x36, 0xfa, 0xb3, 0x8e, 0xfa, + 0x5a, 0x72, 0xc2, 0x30, 0x7c, 0xe4, 0x25, 0x66, 0x8e, 0x89, 0x88, 0xd9, + 0x1f, 0x57, 0x28, 0xe0, 0xd0, 0xc4, 0x6a, 0x97, 0x74, 0x17, 0xc0, 0x94, + 0x30, 0x45, 0xc7, 0x40, 0x24, 0x82, 0x20, 0xd0, 0xd9, 0x4b, 0xd0, 0xa0, + 0x78, 0x69, 0xf6, 0x2d, 0x85, 0x1e, 0x73, 0x60, 0xd3, 0xf3, 0x9b, 0x28, + 0xfa, 0x2e, 0x41, 0x32, 0x25, 0x8a, 0x7c, 0x9e, 0xa4, 0x33, 0x4a, 0xe6, + 0x29, 0x30, 0x63, 0x2b, 0x24, 0xe9, 0xe4, 0x57, 0x4e, 0x6d, 0x2d, 0xbb, + 0x33, 0x25, 0xd2, 0x00, 0x74, 0x3c, 0x06, 0x9b, 0x5a, 0x30, 0x36, 0x51, + 0xaa, 0x51, 0x43, 0x75, 0xc2, 0x74, 0x08, 0x23, 0x75, 0x07, 0xf9, 0xaf, + 0xd9, 0xf3, 0xbb, 0xda, 0xcb, 0x0f, 0xca, 0x7f, 0xcd, 0xec, 0x9b, 0xfc, + 0x39, 0x9b, 0xd4, 0xa4, 0x74, 0xc5, 0xee, 0x08, 0xf4, 0xa6, 0x97, 0x5d, + 0x28, 0x1b, 0xb3, 0x1f, 0x64, 0xad, 0x44, 0x4a, 0x30, 0xc8, 0x54, 0xdb, + 0x94, 0x28, 0x32, 0xc4, 0xa8, 0xbc, 0x99, 0x63, 0x18, 0x41, 0x10, 0xac, + 0x99, 0x08, 0x70, 0x73, 0x19, 0x57, 0x61, 0x29, 0x10, 0xfa, 0x5b, 0x4a, + 0xe6, 0x95, 0x57, 0xc9, 0x36, 0xa5, 0xc4, 0x57, 0x6c, 0x42, 0x9d, 0x18, + 0x5b, 0x15, 0xa9, 0x6b, 0x4c, 0x0d, 0x6c, 0x6c, 0xe4, 0xa8, 0xed, 0xc1, + 0xa7, 0x11, 0x2a, 0xb7, 0x3a, 0x48, 0x52, 0x0e, 0x81, 0xd6, 0x31, 0x85, + 0x4a, 0x01, 0xe2, 0x30, 0x95, 0x6d, 0xc3, 0x42, 0x5d, 0xe9, 0x8b, 0x9e, + 0x91, 0x4b, 0x26, 0xac, 0xc5, 0x20, 0xb1, 0x61, 0x89, 0x0e, 0xf0, 0x0b, + 0xf9, 0x84, 0xcf, 0x03, 0x7e, 0xa1, 0x04, 0x3d, 0x4d, 0xae, 0x60, 0xdb, + 0xef, 0x05, 0x7e, 0xa1, 0xf0, 0x35, 0x04, 0xa3, 0xd1, 0xa0, 0x89, 0x3a, + 0xb9, 0x88, 0xa5, 0xe3, 0x49, 0x07, 0x93, 0x71, 0x22, 0x4b, 0xc2, 0x5f, + 0xb8, 0x60, 0x8d, 0xaa, 0x5c, 0x4d, 0xe2, 0x0d, 0x89, 0x66, 0x2d, 0xb6, + 0x91, 0x2e, 0x34, 0x28, 0x79, 0xbd, 0x94, 0x3d, 0xf2, 0xab, 0x1d, 0x9d, + 0x27, 0x17, 0x8d, 0xec, 0xf4, 0x46, 0x9f, 0x21, 0x8e, 0x6c, 0x32, 0xf6, + 0x4c, 0xce, 0xa6, 0x0b, 0x02, 0xfe, 0x83, 0x8e, 0xeb, 0xa5, 0x08, 0x1f, + 0x4f, 0xe2, 0xd7, 0x70, 0xe6, 0xf1, 0x2b, 0xaa, 0x06, 0x15, 0x1e, 0x6c, + 0xd5, 0x69, 0x01, 0xee, 0xc5, 0xe9, 0x06, 0xc1, 0x76, 0x47, 0xa3, 0xa2, + 0x94, 0xa6, 0x43, 0x58, 0xb8, 0x06, 0x87, 0x48, 0x60, 0x30, 0x95, 0x69, + 0xfe, 0xd0, 0xac, 0x2d, 0xa2, 0x85, 0x69, 0xdb, 0xde, 0x10, 0xd8, 0x78, + 0xd2, 0x68, 0xd4, 0x6a, 0xf3, 0x03, 0xc7, 0x69, 0x45, 0xed, 0x5a, 0x79, + 0x25, 0x51, 0x74, 0x90, 0x9b, 0x86, 0x37, 0x1a, 0xc6, 0xf5, 0x2b, 0x82, + 0x45, 0x99, 0x34, 0x7a, 0x45, 0xf0, 0x2b, 0xde, 0x9a, 0xce, 0x38, 0xaa, + 0xa6, 0xca, 0xa1, 0xa2, 0x12, 0x20, 0xbd, 0x2c, 0x30, 0xde, 0x4c, 0xff, + 0x24, 0xd6, 0x8b, 0x5b, 0x2f, 0x15, 0x01, 0xbe, 0xbf, 0x81, 0x75, 0x90, + 0xbe, 0xb6, 0xad, 0xce, 0xa5, 0x88, 0xc6, 0xc1, 0x5f, 0x2b, 0xb4, 0x41, + 0x8e, 0x20, 0x6a, 0x55, 0x5a, 0xa9, 0x47, 0x5a, 0x47, 0x9b, 0xb2, 0x71, + 0x32, 0xc6, 0xc9, 0x58, 0x0c, 0xb9, 0xb5, 0xa0, 0x69, 0xf0, 0xd4, 0x75, + 0xd5, 0x5c, 0x8a, 0xfc, 0xfd, 0x5d, 0x96, 0x8d, 0xe9, 0xf1, 0x1f, 0xf7, + 0x80, 0x8c, 0xb2, 0xfb, 0x4f, 0xd7, 0xee, 0x37, 0x94, 0xed, 0xb8, 0x6a, + 0x0c, 0xef, 0x8e, 0x9b, 0xaa, 0xf0, 0xb3, 0xa6, 0x25, 0x6a, 0xdf, 0xbc, + 0xeb, 0x5d, 0xc4, 0x87, 0x2b, 0xae, 0x37, 0x83, 0x0b, 0x48, 0xfb, 0xdd, + 0x56, 0x7b, 0x45, 0xd1, 0x05, 0xa2, 0x0b, 0x9d, 0x0e, 0xf1, 0x34, 0xbc, + 0x5e, 0xc9, 0xe8, 0x52, 0xe0, 0xc0, 0xa7, 0xa4, 0x4c, 0xc8, 0x6d, 0xc2, + 0xa2, 0x20, 0xce, 0xb0, 0xe4, 0x32, 0x11, 0x05, 0x3e, 0xe9, 0xa2, 0x9d, + 0x0e, 0xb0, 0x6e, 0xa6, 0x84, 0x8a, 0x73, 0x6f, 0x1b, 0x68, 0x1e, 0xfd, + 0xa6, 0xe6, 0x4c, 0x48, 0xb2, 0x0a, 0x9b, 0x19, 0x94, 0xcf, 0x66, 0x8f, + 0x56, 0xcb, 0x9b, 0x7e, 0x20, 0x66, 0x6c, 0x66, 0x27, 0xde, 0xf2, 0x11, + 0x04, 0x22, 0x44, 0xb6, 0x9c, 0x1e, 0xa8, 0xc0, 0x75, 0x7b, 0x6b, 0xcb, + 0xf6, 0x5f, 0xec, 0x68, 0xba, 0x28, 0xa4, 0xb1, 0xb4, 0xf7, 0x22, 0xc1, + 0x84, 0x53, 0xa2, 0xba, 0xe9, 0xb7, 0x92, 0x64, 0xcc, 0xad, 0xdb, 0x31, + 0x73, 0x9c, 0x52, 0x3b, 0xdb, 0x44, 0xd6, 0x36, 0xe1, 0x28, 0x08, 0x37, + 0xf4, 0xa4, 0x0e, 0x8c, 0x70, 0x74, 0x47, 0xb4, 0xc6, 0x6a, 0xaf, 0xf1, + 0x4e, 0x18, 0x97, 0x3e, 0xe3, 0xf6, 0xc9, 0xca, 0x00, 0xa2, 0x6f, 0x6f, + 0x6c, 0xc6, 0x09, 0xbb, 0x32, 0xf1, 0xd7, 0x0c, 0x57, 0xc9, 0x2b, 0x97, + 0x50, 0x73, 0xb8, 0x26, 0xa3, 0xa3, 0xe5, 0xe2, 0x7f, 0x38, 0x70, 0x99, + 0x70, 0x48, 0xf3, 0x8a, 0xc6, 0xa5, 0x2e, 0x5e, 0xdc, 0xde, 0xd1, 0xd7, + 0x56, 0xa8, 0xdd, 0x63, 0x52, 0x69, 0x09, 0x82, 0xf9, 0x5e, 0x74, 0x88, + 0x0d, 0x53, 0x6a, 0x60, 0xc1, 0x36, 0x61, 0xb0, 0x10, 0xa9, 0xd9, 0xdd, + 0xd1, 0x74, 0x05, 0xeb, 0x6c, 0xe5, 0x48, 0xb8, 0xdd, 0xf2, 0x52, 0xd8, + 0x00, 0x42, 0xd1, 0xd4, 0xea, 0xed, 0x78, 0xa7, 0x6e, 0x8e, 0x5e, 0x8f, + 0x96, 0x5b, 0xba, 0x3b, 0xf2, 0x85, 0xf2, 0x88, 0xec, 0x96, 0x8b, 0xf5, + 0x69, 0xb0, 0x31, 0xfd, 0x65, 0xec, 0x0c, 0x1e, 0x1b, 0xb0, 0xc5, 0x15, + 0xd5, 0x9e, 0x66, 0x67, 0x45, 0xf7, 0x4a, 0x61, 0x5f, 0x92, 0x98, 0xba, + 0x8f, 0xb4, 0xf5, 0x01, 0x6c, 0x58, 0x82, 0x0c, 0x9b, 0x32, 0x66, 0x0c, + 0x96, 0x29, 0x0a, 0xcf, 0x71, 0x5a, 0x4b, 0x9d, 0xb9, 0x7a, 0xc8, 0xa8, + 0x8d, 0xc9, 0x60, 0x49, 0xff, 0x67, 0x07, 0xa7, 0xd5, 0xc5, 0xd1, 0xb7, + 0xc6, 0x76, 0x28, 0xed, 0x2b, 0x90, 0xb1, 0x6f, 0x73, 0xbf, 0xc5, 0x1c, + 0xa7, 0x3a, 0x51, 0x8a, 0xa8, 0xb0, 0xb6, 0x04, 0x16, 0x78, 0x9f, 0x6f, + 0x0c, 0x2a, 0x4c, 0x05, 0xb5, 0xa3, 0x80, 0x7b, 0xd5, 0x15, 0x2a, 0xe2, + 0xae, 0xbd, 0x82, 0xf5, 0x86, 0x80, 0xfc, 0xf8, 0x21, 0x4a, 0xf8, 0xe8, + 0x18, 0xc3, 0xf2, 0x51, 0x4c, 0xcf, 0x24, 0xcb, 0x5e, 0xa2, 0x3c, 0xac, + 0x0c, 0xb4, 0xcb, 0x02, 0x13, 0x6e, 0x6d, 0xb7, 0x86, 0x18, 0xe8, 0x94, + 0xc9, 0x4c, 0xfb, 0x54, 0xce, 0xc8, 0x7f, 0x41, 0x68, 0x2d, 0xdc, 0xeb, + 0x85, 0x52, 0x83, 0xb5, 0xc1, 0x0d, 0x55, 0x1a, 0x0e, 0xd0, 0x27, 0xd9, + 0xd6, 0xf1, 0x09, 0xba, 0x07, 0x4f, 0x67, 0x51, 0x4a, 0xb9, 0x61, 0xef, + 0x32, 0x03, 0xd6, 0x98, 0xf7, 0xa8, 0x3d, 0xbb, 0xd5, 0x1f, 0x64, 0x36, + 0x4c, 0x3e, 0xb2, 0xe9, 0xa8, 0x5f, 0x04, 0x5b, 0xc9, 0x34, 0x30, 0x99, + 0xfa, 0x51, 0xbb, 0xaf, 0x80, 0x96, 0x3d, 0xca, 0x4a, 0xdd, 0x33, 0xef, + 0x68, 0x9c, 0xc6, 0x8c, 0x14, 0x57, 0x49, 0x1e, 0xdc, 0x71, 0x4a, 0xc8, + 0x07, 0xb9, 0x69, 0x33, 0x90, 0xcc, 0x30, 0x0d, 0x06, 0xff, 0x45, 0xfb, + 0xc7, 0x05, 0x29, 0x89, 0xe7, 0xdd, 0x97, 0x0e, 0x71, 0xa1, 0x62, 0x43, + 0x12, 0xee, 0xd7, 0xc9, 0x0d, 0xe1, 0x49, 0x9b, 0x69, 0xcd, 0xbe, 0x5c, + 0x80, 0x01, 0xe6, 0x5d, 0x73, 0x43, 0x9f, 0xb8, 0x51, 0xa3, 0x32, 0x9b, + 0xd7, 0xac, 0xf1, 0x77, 0x25, 0x58, 0xb9, 0x0a, 0x84, 0xc9, 0xb3, 0xcd, + 0xe0, 0x5e, 0xdd, 0x44, 0xf1, 0xa4, 0x2f, 0x97, 0x44, 0x9b, 0x4d, 0x8c, + 0x12, 0x6e, 0xa1, 0x66, 0x28, 0xd7, 0x73, 0x08, 0x53, 0xab, 0x1f, 0xea, + 0x05, 0xd2, 0xac, 0xb7, 0x5c, 0x93, 0x0a, 0x1f, 0x09, 0xb1, 0x50, 0x8d, + 0x74, 0xf4, 0x0f, 0x10, 0x42, 0x98, 0xb2, 0x2b, 0xe0, 0xdc, 0x01, 0xc2, + 0xc2, 0x56, 0xcf, 0xe2, 0xa8, 0xee, 0x47, 0x97, 0xec, 0x39, 0xc6, 0x15, + 0xa6, 0xce, 0xe2, 0x14, 0x32, 0xe5, 0x62, 0x5a, 0x0c, 0x13, 0xbe, 0xb6, + 0xdc, 0x68, 0xcf, 0x57, 0x4b, 0x26, 0xdc, 0xe0, 0x80, 0x94, 0x76, 0xde, + 0x22, 0xeb, 0xa8, 0x5a, 0xba, 0x33, 0xf0, 0x37, 0x67, 0x78, 0xb3, 0x4f, + 0x9a, 0x1e, 0x3b, 0x6c, 0xa8, 0x58, 0x05, 0x87, 0x39, 0x03, 0x05, 0x1a, + 0xc5, 0xa4, 0x6b, 0x32, 0x37, 0x58, 0x66, 0xd9, 0xd2, 0x9d, 0x6b, 0x7c, + 0xbc, 0x78, 0x74, 0x47, 0x5c, 0xc6, 0x0e, 0xbd, 0x2a, 0x4b, 0x76, 0x16, + 0x15, 0xe0, 0xbf, 0xe6, 0x67, 0x70, 0x60, 0xea, 0x23, 0xee, 0xe6, 0xc9, + 0xf6, 0xe8, 0xd8, 0x16, 0xa5, 0xb1, 0x71, 0x91, 0xf1, 0xb0, 0x18, 0xdf, + 0x34, 0xb4, 0xa0, 0xc7, 0x4d, 0x07, 0x71, 0xeb, 0xd1, 0xb0, 0xe2, 0xf3, + 0x86, 0xa1, 0x8a, 0xdd, 0xbb, 0xac, 0x45, 0xbf, 0xcc, 0xe1, 0xa8, 0x7f, + 0xa0, 0x6d, 0x22, 0x64, 0x64, 0xbc, 0x97, 0x5d, 0x3b, 0x16, 0x3b, 0x1f, + 0x1b, 0xe5, 0x11, 0x1e, 0xfa, 0x05, 0x69, 0xa3, 0xe5, 0xc6, 0x20, 0x3a, + 0xce, 0x25, 0xe1, 0x5d, 0x10, 0x85, 0x18, 0x0e, 0x22, 0x77, 0x71, 0x24, + 0x02, 0x57, 0xa3, 0x92, 0x62, 0xc0, 0x0c, 0x57, 0x83, 0x5a, 0xc0, 0xc8, + 0x36, 0xa7, 0x71, 0x78, 0x10, 0x01, 0x46, 0xe8, 0x2f, 0xe9, 0xce, 0xf8, + 0xa9, 0x26, 0xb0, 0x91, 0x92, 0x4c, 0xc7, 0xcd, 0x22, 0x68, 0x6b, 0x15, + 0x17, 0x0e, 0xd7, 0x73, 0x43, 0xbb, 0x8b, 0x0c, 0x7c, 0x43, 0x58, 0x89, + 0x14, 0x50, 0x32, 0x0c, 0x6a, 0xb0, 0x7d, 0x17, 0x46, 0xab, 0x04, 0x06, + 0x9d, 0xb9, 0x06, 0x9b, 0x8a, 0x89, 0x01, 0x06, 0xe4, 0x70, 0x0b, 0x4e, + 0x45, 0xc5, 0xf3, 0xb4, 0xd1, 0xb4, 0xab, 0xad, 0xe1, 0x76, 0x76, 0xc2, + 0xf7, 0x49, 0x33, 0xeb, 0x6b, 0x4c, 0x89, 0xa4, 0x5c, 0x73, 0x6b, 0x4c, + 0x22, 0x5d, 0x28, 0x61, 0x08, 0xc3, 0x71, 0xdb, 0x1d, 0x85, 0x38, 0x8d, + 0xf1, 0x2e, 0x50, 0x13, 0x8a, 0xac, 0x84, 0x1d, 0x83, 0xdd, 0xca, 0x11, + 0x06, 0x41, 0xab, 0x09, 0x50, 0x7b, 0xa8, 0xd8, 0xd3, 0xed, 0xc0, 0x63, + 0x2c, 0x8f, 0x8d, 0x36, 0xa9, 0x2c, 0xba, 0xcb, 0x35, 0xbc, 0x7b, 0x6c, + 0xb4, 0x45, 0xed, 0xf7, 0xb9, 0x87, 0x76, 0x69, 0x2b, 0xe9, 0x42, 0xc1, + 0x7b, 0xc7, 0xdc, 0xc0, 0x8f, 0x6f, 0x99, 0x72, 0x3a, 0x1f, 0xb4, 0xd2, + 0x29, 0xae, 0x33, 0x43, 0x2e, 0x8b, 0xaa, 0x9a, 0x87, 0xc2, 0xf7, 0x95, + 0xb4, 0xad, 0x09, 0xaa, 0x10, 0x0a, 0xfa, 0x29, 0x24, 0x98, 0xb0, 0x5f, + 0xaf, 0x7d, 0x7f, 0x4d, 0x41, 0xa8, 0xcf, 0x61, 0x51, 0x11, 0x20, 0x22, + 0x96, 0x7a, 0x8f, 0x86, 0x08, 0x5c, 0x54, 0x26, 0xb1, 0x86, 0x2a, 0xc7, + 0xc6, 0x29, 0xdc, 0x5e, 0x9a, 0x12, 0xd7, 0xe6, 0xb7, 0x82, 0x12, 0x7d, + 0xeb, 0x4e, 0x77, 0x3d, 0x70, 0xbb, 0xdb, 0x82, 0x79, 0x95, 0xbb, 0x4e, + 0xd7, 0x5b, 0xef, 0x37, 0x5f, 0xf0, 0x60, 0x67, 0xa9, 0xe5, 0xf7, 0x9d, + 0xae, 0xbb, 0x29, 0x81, 0x25, 0x02, 0x22, 0x6f, 0x4f, 0xb8, 0xbd, 0x62, + 0x6d, 0x1a, 0xdc, 0x70, 0x67, 0x76, 0x7b, 0xb7, 0x3b, 0x6f, 0xf3, 0x2c, + 0x85, 0xfb, 0x35, 0x56, 0x01, 0x4c, 0x7b, 0x00, 0x06, 0xf1, 0x44, 0x52, + 0xb2, 0x44, 0x8d, 0xe4, 0xf0, 0x55, 0x31, 0x82, 0xbd, 0xa3, 0x40, 0x01, + 0xb3, 0x5f, 0xbf, 0x80, 0x3c, 0x76, 0x94, 0x39, 0x6b, 0x76, 0x21, 0x13, + 0x06, 0xad, 0x72, 0x9a, 0xcd, 0x35, 0x1f, 0xb9, 0x1f, 0xa5, 0x02, 0x18, + 0x01, 0xb2, 0x88, 0x8f, 0x62, 0x11, 0xfb, 0xd5, 0x03, 0xa6, 0x7e, 0x98, + 0xbb, 0x7e, 0x5d, 0x61, 0xf8, 0x7c, 0x1c, 0xad, 0xb7, 0x06, 0x7e, 0xb4, + 0xb5, 0x4d, 0x6b, 0x7d, 0xb4, 0xf5, 0x74, 0x69, 0x06, 0x8b, 0xbd, 0x3a, + 0x77, 0x49, 0x5d, 0x89, 0x56, 0x16, 0xca, 0xf7, 0x61, 0x03, 0xab, 0xb6, + 0xa6, 0x68, 0x72, 0x8e, 0x0e, 0x16, 0xd0, 0xc4, 0x38, 0xf0, 0x3e, 0x21, + 0x50, 0x5e, 0xdb, 0xc5, 0xcf, 0xf0, 0x37, 0xd3, 0x2a, 0x8d, 0x09, 0xb5, + 0x25, 0x1c, 0x63, 0x60, 0x14, 0x74, 0x2b, 0x7b, 0x28, 0x9e, 0x80, 0x2f, + 0x09, 0xd4, 0x8b, 0xc0, 0x9e, 0x23, 0xdf, 0x86, 0x17, 0xa8, 0xc9, 0x59, + 0x75, 0x09, 0x12, 0x61, 0xe0, 0xd9, 0x6b, 0xf6, 0x1d, 0x2e, 0xeb, 0x47, + 0xd1, 0xcd, 0x62, 0x3e, 0xa1, 0x57, 0x19, 0x56, 0x9b, 0x1f, 0xa9, 0x8c, + 0x2f, 0x79, 0x09, 0x3c, 0x92, 0x60, 0xcd, 0x72, 0x7d, 0x1a, 0xe5, 0x22, + 0xdc, 0x18, 0x4f, 0xb2, 0x6a, 0xb4, 0x2f, 0xb2, 0x3c, 0xab, 0x2e, 0xd1, + 0x3f, 0x36, 0xc3, 0x6a, 0xad, 0x0b, 0x2e, 0xd6, 0xf1, 0x12, 0xaa, 0x44, + 0xfa, 0x24, 0x11, 0x90, 0x2f, 0x9a, 0x4f, 0xc0, 0x91, 0x98, 0x6e, 0x05, + 0xae, 0x92, 0x7f, 0xc9, 0xdd, 0xbc, 0xed, 0x17, 0x06, 0xf3, 0x0f, 0x32, + 0xde, 0x2d, 0x44, 0x0a, 0x87, 0x83, 0x60, 0xa8, 0x04, 0x3c, 0x7a, 0xe4, + 0x1d, 0x16, 0x2c, 0xf0, 0x8c, 0x13, 0x1b, 0xce, 0x09, 0x56, 0x1c, 0x53, + 0xc0, 0xd6, 0xfd, 0x72, 0xe9, 0x93, 0x33, 0xe0, 0xd3, 0x5b, 0xa8, 0xd4, + 0xa0, 0x8b, 0xaf, 0x24, 0xd4, 0x1b, 0xf8, 0xd9, 0x8f, 0x98, 0x11, 0xfc, + 0xa5, 0xf9, 0xf1, 0x06, 0xf5, 0x8c, 0x4a, 0xf3, 0xf1, 0x2d, 0x0a, 0xab, + 0x39, 0xe7, 0x4f, 0xd0, 0xdf, 0xc5, 0x19, 0x7d, 0xf5, 0x5b, 0x62, 0x17, + 0xb6, 0xda, 0x65, 0xa9, 0x47, 0xf3, 0x18, 0x45, 0x12, 0x02, 0xce, 0x37, + 0x48, 0x1a, 0xe1, 0xb2, 0x52, 0x6a, 0xe1, 0xd5, 0x85, 0x73, 0xda, 0x28, + 0xb9, 0x21, 0xcc, 0x2e, 0x29, 0x5f, 0xa2, 0x18, 0x29, 0xef, 0x0f, 0x2e, + 0xc8, 0x42, 0x49, 0x55, 0x01, 0x70, 0x10, 0x6e, 0xe5, 0x22, 0xed, 0xb9, + 0xe0, 0x0c, 0x2a, 0xb0, 0xb1, 0x2f, 0x79, 0x66, 0x06, 0xcf, 0x33, 0x19, + 0x43, 0x40, 0x45, 0x23, 0x04, 0xfc, 0xea, 0xc4, 0x3b, 0x25, 0xcf, 0x8e, + 0xb3, 0xf0, 0xcf, 0x92, 0x53, 0xe9, 0xce, 0x1f, 0xbf, 0x88, 0xd6, 0xe8, + 0xc3, 0x7f, 0x36, 0xa8, 0x30, 0x6b, 0xf2, 0xc3, 0x69, 0xfa, 0xd5, 0x37, + 0x88, 0x87, 0xd2, 0x43, 0x6b, 0x7d, 0x6d, 0xb5, 0x43, 0xb3, 0x68, 0x65, + 0xae, 0x2e, 0xf2, 0xac, 0x55, 0x2d, 0x43, 0x0b, 0x91, 0x54, 0x1d, 0x8a, + 0x7f, 0x7e, 0xc5, 0xff, 0xe8, 0xc8, 0x30, 0xa1, 0xf6, 0x24, 0xd1, 0xf1, + 0xab, 0x03, 0x3c, 0xdb, 0x33, 0x81, 0xac, 0x6d, 0x81, 0xbd, 0xb8, 0x38, + 0xde, 0xb8, 0x81, 0xa1, 0x5d, 0x93, 0x19, 0x55, 0x61, 0x65, 0x0c, 0xa8, + 0x46, 0x1f, 0x04, 0x8e, 0x62, 0x4f, 0xb3, 0x1a, 0xcf, 0x03, 0xf9, 0x71, + 0xf4, 0x12, 0x4e, 0x98, 0x94, 0x81, 0xb5, 0x6f, 0xd6, 0x02, 0x05, 0xf5, + 0x6b, 0xfb, 0x6b, 0x16, 0x5d, 0xa9, 0x32, 0x81, 0x9a, 0x68, 0xed, 0x2f, + 0x88, 0xfd, 0x86, 0x1d, 0x31, 0x79, 0x4e, 0xe1, 0x0a, 0xec, 0x91, 0x23, + 0xc8, 0xa5, 0xbc, 0xe8, 0x00, 0x3e, 0x06, 0x46, 0x96, 0x60, 0x19, 0xd8, + 0x20, 0x6a, 0x20, 0x5d, 0x70, 0x27, 0xbb, 0x94, 0xf2, 0xbc, 0x1a, 0x5f, + 0xae, 0xbe, 0xa2, 0x50, 0xfd, 0xec, 0x8d, 0xc4, 0x62, 0xb1, 0x2d, 0xc3, + 0x8d, 0x13, 0x42, 0xe3, 0x45, 0xf1, 0x6a, 0x28, 0xa3, 0x78, 0x34, 0xa2, + 0xc6, 0x0f, 0x24, 0x5b, 0x90, 0x3b, 0x5e, 0x78, 0x4d, 0x29, 0x18, 0xe7, + 0x1b, 0xb7, 0x01, 0x39, 0x13, 0x7e, 0xf7, 0x04, 0xec, 0x30, 0x72, 0x82, + 0xa0, 0x49, 0xbd, 0x0c, 0xa6, 0xce, 0x3d, 0xee, 0x4f, 0x87, 0x7f, 0xed, + 0xce, 0xd2, 0x43, 0xc9, 0xd1, 0xbb, 0x2f, 0xe9, 0x5a, 0x4a, 0xb5, 0xbb, + 0xbc, 0xef, 0x02, 0xbd, 0xde, 0x81, 0x4e, 0x31, 0x9c, 0x49, 0x3f, 0x35, + 0x69, 0x50, 0x93, 0x04, 0x08, 0xf7, 0x46, 0x4a, 0x91, 0xa7, 0xa9, 0x6a, + 0x83, 0xe9, 0xcc, 0x93, 0xf0, 0x53, 0xc6, 0x6d, 0x63, 0xfc, 0xc2, 0x18, + 0xf6, 0x85, 0xcf, 0x39, 0x17, 0x83, 0x4c, 0x00, 0x0f, 0x99, 0xab, 0x33, + 0x92, 0xe1, 0x58, 0x83, 0x7e, 0x84, 0x65, 0xd8, 0x4e, 0x4e, 0x12, 0x64, + 0x43, 0x91, 0x5f, 0xe2, 0x40, 0xb2, 0x12, 0x9f, 0x80, 0x19, 0x49, 0xd4, + 0xda, 0x48, 0xad, 0x8b, 0xc5, 0xde, 0x0e, 0xd7, 0x2b, 0xf7, 0xdc, 0xa4, + 0x1d, 0x67, 0x00, 0xc9, 0x76, 0xab, 0x93, 0x9d, 0xdd, 0x67, 0xcf, 0x82, + 0x21, 0x5e, 0x6e, 0x35, 0x04, 0x27, 0x8c, 0xdb, 0xe4, 0xb5, 0xbc, 0x62, + 0xa7, 0x11, 0xdd, 0x80, 0x4a, 0x63, 0x9b, 0xd8, 0x75, 0x3a, 0xc1, 0x59, + 0x7d, 0x15, 0x81, 0x78, 0xf8, 0x8c, 0x34, 0x42, 0x16, 0xfe, 0xe4, 0xf0, + 0x42, 0x91, 0x3b, 0xcb, 0x3a, 0x9c, 0x49, 0x8a, 0x6f, 0xc1, 0x90, 0x4f, + 0x84, 0xe5, 0x3c, 0x51, 0x68, 0x7b, 0xe6, 0xf7, 0x69, 0x3d, 0x22, 0x38, + 0x42, 0x46, 0x42, 0xe0, 0x7d, 0x5d, 0xeb, 0x40, 0xb5, 0x5f, 0x8b, 0xb4, + 0xc0, 0x6e, 0x98, 0x9a, 0x96, 0x8e, 0x78, 0x53, 0xb3, 0x0f, 0xad, 0x76, + 0xab, 0x0c, 0xfe, 0x97, 0x23, 0x96, 0x72, 0x76, 0x41, 0x78, 0x87, 0xad, + 0xe1, 0xa8, 0x89, 0xc5, 0x45, 0x5a, 0xfb, 0xa0, 0xc0, 0x0e, 0x5e, 0xdc, + 0x92, 0xc1, 0x43, 0x90, 0x78, 0x82, 0x67, 0x1c, 0xed, 0x9b, 0x9e, 0xc8, + 0xd9, 0x44, 0x99, 0x08, 0x5a, 0x60, 0xd7, 0x18, 0x4b, 0xf9, 0x86, 0x8e, + 0x63, 0x5f, 0xf6, 0x5e, 0xa0, 0xbc, 0xbf, 0xf1, 0x72, 0x34, 0x38, 0xc7, + 0x80, 0xe6, 0xa4, 0x6e, 0xdd, 0x75, 0x9d, 0x8c, 0x2e, 0xad, 0xbe, 0x43, + 0x20, 0x83, 0xd4, 0xb9, 0x57, 0x42, 0xe8, 0xbc, 0xc1, 0x8c, 0xf4, 0xe4, + 0xd5, 0x60, 0x13, 0xd2, 0xb7, 0x19, 0x14, 0x61, 0x7d, 0x04, 0xd0, 0x11, + 0x97, 0x12, 0xda, 0x89, 0x4a, 0xb8, 0x36, 0x32, 0x30, 0x78, 0xda, 0x13, + 0xd4, 0xf8, 0xae, 0xb3, 0x4f, 0xfe, 0xd9, 0xdb, 0xe2, 0x22, 0xdb, 0x75, + 0x96, 0xf7, 0xd8, 0x36, 0xaf, 0x75, 0x25, 0xba, 0x7c, 0xea, 0x30, 0xdc, + 0xc1, 0x2d, 0xc6, 0x4f, 0xb5, 0x9d, 0x28, 0x88, 0xb2, 0x2e, 0x8a, 0x94, + 0x57, 0x49, 0x9d, 0x3c, 0x75, 0x57, 0x31, 0x65, 0xb0, 0x2e, 0x17, 0xd8, + 0xec, 0x88, 0xe3, 0x11, 0x34, 0x53, 0x58, 0x9c, 0xf7, 0x9b, 0x5f, 0x8c, + 0xd5, 0xbb, 0x0b, 0x3a, 0x2f, 0xda, 0xe5, 0x59, 0x3a, 0x2b, 0x4a, 0x45, + 0x76, 0x80, 0x75, 0x19, 0x38, 0x09, 0xbf, 0x86, 0x9c, 0xbd, 0xfe, 0x14, + 0xdc, 0xab, 0xb2, 0xdf, 0x38, 0xee, 0x2d, 0x80, 0x60, 0x9a, 0x9c, 0x43, + 0x51, 0x35, 0x54, 0x2a, 0xa3, 0xe7, 0x40, 0x50, 0x39, 0xeb, 0xbf, 0x44, + 0x6f, 0x6b, 0x95, 0xdf, 0xc0, 0xd4, 0x80, 0x27, 0xb2, 0xcc, 0x44, 0x4b, + 0xb1, 0x4c, 0x2f, 0x16, 0x28, 0x87, 0x19, 0xdf, 0x19, 0xec, 0xc6, 0x4b, + 0x3e, 0x7e, 0x91, 0xaa, 0xd9, 0x5c, 0x6b, 0x8a, 0x3d, 0x0c, 0x0b, 0x78, + 0x6b, 0x23, 0x32, 0x8d, 0x63, 0x17, 0xc3, 0x5f, 0x29, 0xc7, 0xa9, 0x90, + 0x8f, 0xe5, 0xc8, 0xd9, 0xd8, 0xed, 0x13, 0x4d, 0xc7, 0x85, 0x27, 0x1f, + 0xea, 0x78, 0x3c, 0xcb, 0xb8, 0xf9, 0x12, 0x0a, 0x91, 0xbf, 0x38, 0x89, + 0xd0, 0xa4, 0xcb, 0xd3, 0xd7, 0x53, 0xa2, 0xf0, 0xfb, 0xbc, 0xb8, 0xce, + 0xd5, 0x96, 0x10, 0x98, 0x1a, 0x72, 0xa0, 0x7b, 0x3a, 0x02, 0x5a, 0x27, + 0xfd, 0x88, 0x3e, 0x68, 0x2c, 0x1d, 0x46, 0x28, 0x4a, 0x0e, 0x5f, 0x47, + 0x20, 0x9a, 0x15, 0x87, 0x76, 0x98, 0xe5, 0x93, 0x8d, 0xcd, 0xdd, 0xac, + 0x18, 0x7d, 0xbe, 0xad, 0xf7, 0x01, 0x97, 0xeb, 0xd4, 0x98, 0xb9, 0xf4, + 0x17, 0x98, 0x42, 0x36, 0x13, 0xde, 0xd5, 0x74, 0x68, 0xf4, 0xc5, 0x7c, + 0x5a, 0x03, 0x36, 0x89, 0xdb, 0xbc, 0x26, 0x77, 0x34, 0x00, 0x6c, 0x6d, + 0xd1, 0xe8, 0x4b, 0xcc, 0x34, 0xc3, 0xeb, 0x80, 0xf1, 0x64, 0x92, 0x17, + 0x86, 0x57, 0xa0, 0x1d, 0x52, 0x26, 0xc0, 0x19, 0x7f, 0x9d, 0x5f, 0x28, + 0xab, 0xf5, 0x1b, 0xe9, 0xce, 0x17, 0xb5, 0x87, 0x60, 0x2f, 0x32, 0xf6, + 0x45, 0x24, 0x2b, 0xf9, 0xea, 0x9b, 0xc6, 0x58, 0x01, 0x39, 0xbb, 0x29, + 0x4d, 0xe8, 0x46, 0x17, 0x59, 0xe7, 0xe7, 0xf3, 0xf7, 0x53, 0xae, 0xbb, + 0x81, 0xdf, 0xaa, 0x2e, 0x8b, 0x54, 0x8e, 0x2d, 0xa7, 0xd0, 0x83, 0x65, + 0x0e, 0x55, 0x18, 0x35, 0x98, 0xf7, 0xaa, 0x7b, 0xc9, 0x24, 0xb8, 0xff, + 0xb3, 0xb8, 0xcc, 0xf1, 0x1f, 0x38, 0x3c, 0x8e, 0xfe, 0xd5, 0x76, 0xb0, + 0xe2, 0x6d, 0x73, 0xf9, 0x51, 0xd1, 0x52, 0x51, 0xd2, 0x70, 0xdb, 0x76, + 0x97, 0x71, 0x35, 0x22, 0x2d, 0x03, 0xc2, 0x42, 0x8e, 0x02, 0x4d, 0xef, + 0x28, 0xb9, 0x83, 0x1a, 0x5b, 0x3b, 0x2f, 0x33, 0xec, 0x4a, 0x90, 0xe3, + 0x65, 0x86, 0xfd, 0x53, 0xd4, 0x39, 0x60, 0xa0, 0x74, 0x7f, 0x78, 0x0f, + 0x53, 0x22, 0x6e, 0xbe, 0xda, 0xbf, 0x5c, 0x5c, 0x50, 0x0b, 0x5d, 0xcc, + 0x8c, 0xe8, 0xdd, 0xe9, 0xab, 0x35, 0x28, 0xc4, 0x0e, 0xae, 0xda, 0x29, + 0xcc, 0x24, 0x0c, 0xc3, 0x86, 0x76, 0x10, 0xd9, 0x3a, 0x0b, 0xbc, 0x16, + 0x21, 0x6e, 0xb9, 0xc6, 0xba, 0x70, 0x9f, 0x37, 0x4d, 0x5a, 0xf3, 0xd8, + 0xd6, 0x13, 0x4b, 0xbe, 0xe0, 0x3a, 0x1d, 0x7e, 0xf5, 0x0d, 0xc6, 0xf5, + 0x3e, 0x0c, 0x2e, 0xeb, 0xd9, 0x94, 0x95, 0x6a, 0xdc, 0xb8, 0x4d, 0xfc, + 0x67, 0x2f, 0x5a, 0xa2, 0xd8, 0x15, 0x65, 0xf7, 0xb0, 0x0e, 0xea, 0xad, + 0x33, 0xe4, 0xa4, 0x28, 0x96, 0x8e, 0x88, 0xbb, 0x42, 0xdb, 0xc2, 0xfb, + 0xe2, 0x20, 0xdb, 0x08, 0xf2, 0xa8, 0xa9, 0xbf, 0x60, 0x92, 0xb0, 0x52, + 0x84, 0xef, 0x42, 0xa8, 0xc9, 0xc4, 0xf0, 0x46, 0xeb, 0x2a, 0x8c, 0x38, + 0xf9, 0xaa, 0xaf, 0xa8, 0xb0, 0x59, 0xb5, 0x64, 0x6b, 0xd4, 0x4e, 0x93, + 0x46, 0x95, 0x7f, 0x31, 0xaf, 0xe3, 0x1f, 0x59, 0x8e, 0xf2, 0x78, 0xe9, + 0xd7, 0x80, 0x45, 0xaa, 0xaf, 0x6c, 0x52, 0x42, 0xb0, 0x26, 0xd2, 0x45, + 0x6b, 0x7d, 0x56, 0xf1, 0xff, 0xb2, 0x46, 0x7e, 0x52, 0x2d, 0x66, 0xf9, + 0xe7, 0xa2, 0x90, 0x98, 0x66, 0x34, 0x2e, 0x3c, 0x9d, 0x15, 0x61, 0x59, + 0xe8, 0x09, 0x46, 0x16, 0xbe, 0x75, 0xe1, 0x3f, 0xf7, 0x68, 0xe9, 0x7d, + 0xfc, 0xd7, 0xcf, 0x3d, 0xbb, 0xfa, 0x9f, 0xe9, 0x70, 0xfe, 0x92, 0xe5, + 0x7f, 0xc1, 0x2f, 0xf8, 0xb9, 0x77, 0xdf, 0x33, 0x16, 0x3b, 0xd6, 0x99, + 0xc5, 0x99, 0xa4, 0x31, 0x47, 0x6f, 0x2d, 0xea, 0xc6, 0x3c, 0xa5, 0x0c, + 0x57, 0x89, 0x1b, 0x23, 0x6a, 0x47, 0x12, 0xb5, 0x76, 0x0d, 0xd8, 0xa8, + 0xdd, 0x18, 0xd8, 0x17, 0xbb, 0x0f, 0xfd, 0x40, 0x57, 0x0d, 0xf7, 0x01, + 0xdc, 0x63, 0xe3, 0x55, 0x20, 0x15, 0x2e, 0xb3, 0x0d, 0x5b, 0x89, 0x8c, + 0x74, 0xe7, 0xd9, 0x64, 0x1f, 0xfb, 0xd2, 0xc5, 0xbc, 0xee, 0x89, 0x98, + 0xbf, 0xc1, 0x0c, 0x06, 0xac, 0x81, 0xc8, 0x75, 0x28, 0x48, 0xe4, 0x0a, + 0x07, 0x96, 0x73, 0x5e, 0xb3, 0xa0, 0xf6, 0xe2, 0xb7, 0x61, 0x22, 0x42, + 0x47, 0x36, 0x65, 0x95, 0xce, 0x32, 0x50, 0xd3, 0x29, 0x04, 0x3c, 0x65, + 0x8b, 0x78, 0x13, 0xd9, 0x3f, 0xe1, 0x1f, 0x55, 0xf3, 0x04, 0x83, 0x3d, + 0xe8, 0xaf, 0x12, 0x63, 0x99, 0x3f, 0x93, 0x37, 0x66, 0x09, 0x0d, 0xaf, + 0xe1, 0x90, 0x65, 0xf5, 0x55, 0x0f, 0x34, 0x9c, 0xbf, 0x60, 0x5c, 0x2f, + 0xcd, 0xff, 0x02, 0x84, 0xb4, 0x80, 0xa3, 0xb2, 0xb7, 0xf2, 0x43, 0x3c, + 0xbb, 0x81, 0x85, 0xaf, 0xdd, 0xf1, 0x66, 0x8e, 0xc7, 0x9a, 0x9a, 0x1a, + 0xb5, 0x0b, 0x4f, 0xf8, 0x56, 0x3a, 0x37, 0x4e, 0x7e, 0xff, 0x55, 0xdf, + 0x43, 0x58, 0x7e, 0xef, 0x19, 0x9f, 0x2e, 0x5b, 0x25, 0x23, 0xeb, 0xab, + 0x93, 0xbf, 0xfe, 0x45, 0x07, 0xf8, 0xb9, 0xf7, 0x63, 0xcc, 0x3f, 0x25, + 0xc8, 0xf7, 0xbd, 0xe8, 0xe4, 0xaf, 0xab, 0x53, 0xee, 0xb2, 0x09, 0xbe, + 0xe1, 0xbf, 0x10, 0x19, 0x2f, 0x1b, 0x16, 0x95, 0x7c, 0x7d, 0x27, 0x7a, + 0x9f, 0xde, 0x10, 0x22, 0x24, 0x19, 0xf8, 0xf3, 0x39, 0x02, 0x68, 0x2a, + 0xc4, 0x79, 0xcd, 0x10, 0xe7, 0xa4, 0xbd, 0x24, 0x43, 0xc4, 0x46, 0xa6, + 0x88, 0xbe, 0x57, 0x43, 0x33, 0xa4, 0x26, 0x4d, 0xff, 0x14, 0x62, 0x22, + 0x02, 0x42, 0xa7, 0x08, 0x29, 0xb2, 0xcd, 0x1a, 0x9d, 0x64, 0xdc, 0xb4, + 0x53, 0x8e, 0x30, 0x83, 0x30, 0x8c, 0x5c, 0x2d, 0xe6, 0x7d, 0xc5, 0xba, + 0x16, 0x75, 0x8f, 0x43, 0xe3, 0x68, 0xed, 0x0f, 0x6b, 0x52, 0x44, 0x36, + 0x9b, 0x91, 0xfc, 0x23, 0x2d, 0x90, 0x9b, 0x20, 0xfe, 0x25, 0x14, 0xcd, + 0x97, 0x2c, 0x36, 0xf1, 0x28, 0x4c, 0x8a, 0xe9, 0x58, 0x52, 0x2e, 0x80, + 0xca, 0xf9, 0x80, 0xd5, 0xc4, 0x41, 0x3d, 0x02, 0xb7, 0x42, 0xd2, 0x30, + 0x64, 0xda, 0x80, 0x4d, 0x22, 0xf9, 0x72, 0x1c, 0xb3, 0xb0, 0x49, 0xc3, + 0x49, 0xc4, 0x44, 0xfe, 0x17, 0x4c, 0x13, 0x1e, 0xa6, 0xe4, 0xd8, 0x32, + 0x78, 0xdd, 0xb1, 0x04, 0x92, 0x02, 0xde, 0xa1, 0xc8, 0xdc, 0x11, 0xbd, + 0x24, 0x1c, 0x88, 0x51, 0xe0, 0x6e, 0x0c, 0x52, 0x7c, 0x4f, 0xf1, 0x19, + 0x85, 0x76, 0xe4, 0xca, 0x2e, 0x94, 0x1c, 0xe1, 0x8f, 0x35, 0x29, 0xcf, + 0xb8, 0x43, 0xfe, 0xcd, 0x8a, 0xfe, 0x20, 0x51, 0x27, 0x27, 0x33, 0x9a, + 0xbe, 0x5e, 0x0e, 0xcb, 0xef, 0x83, 0xf3, 0xa3, 0x54, 0xca, 0xc4, 0xdb, + 0x7b, 0xc6, 0x04, 0x4f, 0xe4, 0xf1, 0xf0, 0xf0, 0x6e, 0xcb, 0x23, 0x4d, + 0x24, 0xac, 0x64, 0xfb, 0x97, 0x8c, 0xbf, 0x63, 0xc6, 0xf7, 0x61, 0x7e, + 0x93, 0x9c, 0x33, 0xe3, 0xc2, 0xd3, 0x9e, 0xdb, 0x3a, 0x6a, 0x0d, 0x1a, + 0x58, 0x0f, 0xae, 0x6b, 0xfd, 0x6b, 0x3e, 0x9c, 0xb4, 0x24, 0x22, 0x4f, + 0x7d, 0xfa, 0x21, 0x60, 0xb7, 0x8f, 0x39, 0x95, 0x9b, 0xbf, 0xc3, 0xc3, + 0xd9, 0x8e, 0x45, 0xa5, 0x16, 0xc2, 0x2a, 0xe0, 0x2e, 0x02, 0x7f, 0xdf, + 0xe3, 0x1c, 0x2a, 0xdb, 0x66, 0x25, 0x73, 0xf1, 0xc3, 0x2c, 0xc2, 0x7a, + 0xb0, 0x9f, 0xb6, 0xe2, 0x46, 0xf4, 0xbd, 0xa9, 0x80, 0xf1, 0x72, 0xbb, + 0x34, 0x8e, 0x8a, 0xf0, 0x4d, 0x58, 0x5f, 0x13, 0x7f, 0x08, 0x4e, 0x94, + 0x70, 0x4c, 0x53, 0x80, 0xf7, 0xb1, 0xff, 0x55, 0x7a, 0x2d, 0x5e, 0x98, + 0x38, 0xa0, 0x52, 0xec, 0x51, 0x56, 0xa5, 0xb9, 0x13, 0xdc, 0x16, 0x8b, + 0xca, 0xb7, 0xd4, 0xe0, 0xe5, 0xbe, 0x82, 0x8d, 0x56, 0x58, 0xbe, 0x79, + 0xeb, 0x6c, 0xb1, 0x0c, 0xc6, 0x56, 0xa5, 0x85, 0x2b, 0x48, 0xa2, 0xb5, + 0xaf, 0x36, 0xd6, 0xba, 0x1b, 0x7d, 0x1b, 0xd5, 0xb9, 0xd9, 0x25, 0x4b, + 0x3d, 0x7c, 0x15, 0x15, 0xa2, 0xc1, 0xd0, 0xe4, 0x11, 0x9a, 0x61, 0x82, + 0x6c, 0x4a, 0x87, 0x49, 0x45, 0x76, 0x55, 0xb0, 0x3f, 0x02, 0xb7, 0xf2, + 0xc8, 0x72, 0xba, 0x99, 0xdc, 0xf1, 0x88, 0xc9, 0xdb, 0x4d, 0x66, 0xe0, + 0x2e, 0xcc, 0xd5, 0x9e, 0xab, 0x66, 0xfb, 0xbe, 0x7d, 0x0c, 0xf9, 0x12, + 0x1a, 0xbc, 0x38, 0x32, 0x1c, 0x3f, 0xc4, 0x32, 0x9d, 0x7a, 0xed, 0xab, + 0x75, 0x96, 0x4d, 0xd6, 0x0b, 0xe6, 0xcc, 0xbd, 0x16, 0xfd, 0x1c, 0xc4, + 0xb0, 0xa6, 0x17, 0x9d, 0xe5, 0x08, 0xbd, 0x2e, 0x7d, 0x3c, 0xda, 0xc7, + 0x50, 0xde, 0xd7, 0x14, 0x9a, 0x96, 0xe7, 0xf7, 0x37, 0xe9, 0x47, 0x2d, + 0x2d, 0x78, 0xe9, 0x28, 0x1b, 0xec, 0xd4, 0xff, 0xea, 0x1b, 0x7c, 0x5c, + 0x8d, 0x80, 0xb5, 0x68, 0x30, 0x00, 0xd6, 0x53, 0xcd, 0xda, 0xd8, 0x7b, + 0x1e, 0xc6, 0x21, 0xe9, 0x06, 0x24, 0x58, 0x51, 0x0d, 0x91, 0x5e, 0x3e, + 0xe4, 0x89, 0xd1, 0x4c, 0x38, 0x76, 0x19, 0xf2, 0xaf, 0xca, 0xaf, 0x06, + 0xd1, 0x81, 0xa9, 0xe2, 0x49, 0x3d, 0xcb, 0x92, 0x63, 0x23, 0x2c, 0x31, + 0xc4, 0xe5, 0x86, 0x94, 0xf0, 0x6c, 0x98, 0x89, 0xe3, 0x9e, 0x7b, 0x17, + 0x50, 0xde, 0x7b, 0x3a, 0xad, 0xa4, 0x19, 0x07, 0x88, 0xf4, 0x70, 0x57, + 0x46, 0x2a, 0x16, 0xc1, 0x48, 0x32, 0xfd, 0xde, 0xd8, 0x24, 0xb2, 0xb2, + 0xf8, 0x48, 0x62, 0x31, 0x26, 0x71, 0xfe, 0x29, 0xce, 0x63, 0x5a, 0x82, + 0x79, 0x49, 0x15, 0xd2, 0x93, 0x3a, 0x7a, 0x16, 0xe3, 0x73, 0xd6, 0xa9, + 0xaf, 0xd4, 0xde, 0x4c, 0x36, 0xed, 0x8b, 0xda, 0x17, 0x53, 0xfd, 0x54, + 0x00, 0x66, 0x90, 0xf8, 0xff, 0x30, 0xa9, 0xd2, 0x27, 0x8f, 0x74, 0x52, + 0xde, 0xa5, 0x4a, 0x75, 0xae, 0x86, 0xd3, 0x54, 0x7a, 0x0d, 0xd8, 0x0f, + 0x6a, 0x6b, 0x60, 0x84, 0xa9, 0x8d, 0xea, 0x17, 0xd8, 0x4d, 0x35, 0x03, + 0x4e, 0xa0, 0x0c, 0x05, 0x55, 0xf1, 0xa2, 0x26, 0xdc, 0xc8, 0xa7, 0x4f, + 0x9c, 0x45, 0xdf, 0xe2, 0x73, 0x68, 0xf1, 0x4f, 0xf9, 0xc2, 0xf6, 0x17, + 0x45, 0x4c, 0xad, 0x48, 0x7e, 0x5e, 0x71, 0x01, 0x3a, 0x2c, 0xb8, 0xb9, + 0x9e, 0x7c, 0xa3, 0x71, 0x08, 0xde, 0x76, 0x81, 0xdc, 0x1b, 0xf0, 0x17, + 0x25, 0x9c, 0xf6, 0xd4, 0x4b, 0x89, 0xda, 0xb1, 0x7a, 0xf4, 0x7d, 0x5e, + 0x04, 0x13, 0xf6, 0xed, 0x74, 0x8d, 0x4e, 0xff, 0xc9, 0xa2, 0x24, 0x99, + 0x23, 0x8f, 0xb1, 0x6a, 0x30, 0x4e, 0x19, 0x7f, 0x51, 0x34, 0xf1, 0x57, + 0x07, 0xaf, 0xdf, 0x1e, 0xf8, 0xb5, 0x94, 0x4e, 0x58, 0xe0, 0xd3, 0x86, + 0x33, 0x9a, 0x2d, 0x1b, 0xe4, 0x47, 0x36, 0x40, 0x87, 0x22, 0xa2, 0xb7, + 0x2a, 0x70, 0x8f, 0x69, 0x51, 0xd1, 0x6f, 0xc5, 0x4c, 0x24, 0x19, 0xc1, + 0xc6, 0x08, 0x4d, 0x36, 0x42, 0x30, 0x36, 0xdf, 0x0d, 0xf6, 0xdd, 0xea, + 0x2b, 0x75, 0xdc, 0xd7, 0xfe, 0x0b, 0xdc, 0x90, 0xe1, 0xdc, 0x13, 0x82, + 0x5d, 0xfd, 0x17, 0x10, 0xd7, 0x13, 0x2f, 0x09, 0xa6, 0xf0, 0x86, 0xfb, + 0x4f, 0x71, 0xed, 0xb9, 0xa4, 0x02, 0x39, 0xd5, 0xdb, 0x49, 0xf5, 0x9e, + 0xfd, 0x27, 0x3d, 0x7d, 0x9f, 0x03, 0x42, 0x0c, 0x80, 0x63, 0x00, 0xdf, + 0x43, 0x57, 0xd6, 0x00, 0xa9, 0x9b, 0x62, 0x03, 0x8d, 0xd3, 0x8a, 0x4c, + 0x6e, 0x38, 0x05, 0x8b, 0x89, 0x03, 0x17, 0xd1, 0x1a, 0xee, 0xe0, 0xf0, + 0xb0, 0x1b, 0xfc, 0x9a, 0x03, 0xc2, 0xce, 0x07, 0x7e, 0x96, 0x80, 0xb0, + 0x33, 0x7f, 0x6f, 0x56, 0x0e, 0xca, 0x62, 0x58, 0xd4, 0xbd, 0x95, 0x30, + 0x59, 0x0d, 0x70, 0xbc, 0x77, 0x70, 0x56, 0x2c, 0xc6, 0x75, 0xc1, 0xb8, + 0xfb, 0xfb, 0xb2, 0x1b, 0xe1, 0x73, 0xa4, 0x8a, 0x33, 0xb7, 0xef, 0x80, + 0x5a, 0x06, 0x84, 0xdf, 0x70, 0x76, 0xf4, 0x86, 0x0e, 0xe8, 0xf4, 0xe0, + 0xec, 0xcc, 0xe0, 0xb9, 0x4b, 0xea, 0xb7, 0x67, 0xad, 0x52, 0x14, 0x96, + 0x82, 0x5d, 0xb2, 0xfd, 0xb6, 0x1a, 0x40, 0x7a, 0xca, 0x53, 0x36, 0x3a, + 0xdc, 0x87, 0xf3, 0xc5, 0x0c, 0xd8, 0x0d, 0x58, 0x09, 0xe3, 0xb5, 0x2a, + 0x92, 0xac, 0x8d, 0xb6, 0xfe, 0x69, 0x72, 0x38, 0x4c, 0x03, 0x66, 0x06, + 0xd3, 0x78, 0x81, 0x90, 0x23, 0xa6, 0x9c, 0x44, 0xd2, 0x5b, 0x1c, 0xfc, + 0x8c, 0x7e, 0xd0, 0x1b, 0xd6, 0x3b, 0x3b, 0x3e, 0x3f, 0x8a, 0x0e, 0xde, + 0x9e, 0x7f, 0xdf, 0x13, 0x6c, 0xd0, 0x66, 0x9f, 0x0a, 0x30, 0x27, 0xca, + 0x2c, 0xbd, 0x32, 0xf8, 0xd0, 0x84, 0x5b, 0xe9, 0xd4, 0x65, 0x76, 0xe3, + 0x75, 0x2c, 0x21, 0xb2, 0xc0, 0x61, 0xdc, 0x81, 0xe0, 0xbc, 0x7d, 0xad, + 0x3f, 0xae, 0xa6, 0xa4, 0x6b, 0x29, 0xbd, 0xb7, 0x8f, 0x77, 0xcb, 0x00, + 0xdd, 0x2d, 0xcb, 0xa4, 0x72, 0x48, 0x97, 0xd8, 0x4c, 0x27, 0x21, 0x72, + 0xf5, 0x5a, 0x3c, 0x06, 0x3d, 0x3d, 0x40, 0x76, 0x30, 0x28, 0x13, 0x1f, + 0x93, 0x87, 0xb0, 0x11, 0x0c, 0x54, 0xe2, 0x7f, 0xdf, 0xbe, 0x79, 0xb9, + 0x69, 0x60, 0x17, 0x18, 0xa8, 0x3f, 0xe1, 0xf2, 0xf9, 0x40, 0x83, 0x4e, + 0xdb, 0x92, 0xc8, 0x64, 0x07, 0xa5, 0x1f, 0xa8, 0xaa, 0x3a, 0x6f, 0xd4, + 0xd7, 0x71, 0x04, 0x1e, 0x16, 0x9d, 0x94, 0x63, 0x03, 0x0f, 0xed, 0xdb, + 0x0d, 0x5a, 0xb7, 0x82, 0x35, 0xa3, 0x94, 0xdc, 0xf9, 0x56, 0xf8, 0x8c, + 0x03, 0xcc, 0x2d, 0x5e, 0x59, 0xd3, 0x63, 0xcd, 0x05, 0xfc, 0x6e, 0x0f, + 0x47, 0xdb, 0xc0, 0xe1, 0x12, 0x74, 0xd1, 0x64, 0x58, 0x68, 0x5b, 0x00, + 0xa5, 0x55, 0xb7, 0xe4, 0xe1, 0x36, 0xb7, 0xf0, 0x81, 0xf3, 0x70, 0x9b, + 0x83, 0xdf, 0x87, 0x9e, 0xdc, 0xb5, 0x69, 0x75, 0x92, 0xcf, 0xc0, 0xca, + 0x74, 0x06, 0x0a, 0x06, 0xb9, 0xec, 0x36, 0xf1, 0x91, 0x65, 0xc5, 0x4a, + 0xa1, 0xf5, 0xf0, 0x5c, 0x92, 0x6b, 0xb9, 0xcf, 0xff, 0x0d, 0x73, 0x31, + 0xd4, 0x43, 0xcb, 0x62, 0xca, 0x9e, 0x72, 0x79, 0x81, 0x6b, 0xdf, 0x18, + 0xf7, 0x8d, 0x2a, 0x78, 0x29, 0x04, 0x49, 0xa1, 0x7c, 0x5a, 0x2f, 0x15, + 0xcf, 0xb5, 0x83, 0x82, 0x30, 0xda, 0x3a, 0x26, 0xe8, 0x69, 0x48, 0xe1, + 0x9c, 0x02, 0xe3, 0x34, 0x5e, 0x00, 0x86, 0xd0, 0xeb, 0x48, 0x1c, 0xb2, + 0x9f, 0x9c, 0xbb, 0xe7, 0x3b, 0x0f, 0xe8, 0x60, 0x47, 0xd7, 0x1d, 0x7d, + 0x62, 0x6d, 0xd3, 0x2d, 0x53, 0x54, 0x7d, 0xf8, 0xc3, 0x73, 0x8b, 0x49, + 0x62, 0x4a, 0x2e, 0x22, 0xbe, 0x1f, 0x6c, 0x9e, 0x45, 0x5e, 0xa8, 0xd3, + 0x0d, 0x4f, 0x9b, 0x8a, 0xa9, 0x01, 0xa5, 0x06, 0x8c, 0xd3, 0x74, 0x1e, + 0x5d, 0x66, 0x30, 0x60, 0x39, 0xba, 0x24, 0xa8, 0x23, 0xce, 0x6f, 0xc5, + 0x5c, 0x80, 0x19, 0xe6, 0xb2, 0x04, 0x00, 0xf2, 0x4c, 0x78, 0x1a, 0x84, + 0x81, 0x6d, 0x52, 0x73, 0x59, 0x5c, 0x53, 0x16, 0xc2, 0xf6, 0xd3, 0xdd, + 0x67, 0xa0, 0xaa, 0xde, 0x50, 0x77, 0x55, 0xbb, 0x57, 0x63, 0x2e, 0xcb, + 0x0a, 0x54, 0x32, 0x5a, 0x69, 0xea, 0xa2, 0x3f, 0x61, 0x74, 0x86, 0x2e, + 0x2d, 0x1a, 0xd3, 0xe4, 0x92, 0x15, 0x48, 0x77, 0xbf, 0x05, 0x13, 0xec, + 0x9f, 0x5e, 0x4a, 0xda, 0x2c, 0xbc, 0x1b, 0xb8, 0x4f, 0x9c, 0x46, 0xed, + 0xf6, 0x2e, 0x3b, 0x3b, 0xfe, 0xaf, 0xa3, 0x7e, 0xf4, 0xe6, 0xe8, 0xfc, + 0x4d, 0x3f, 0x3a, 0x3b, 0x3f, 0x79, 0x83, 0x79, 0x07, 0x5d, 0x6d, 0x64, + 0xc7, 0xb4, 0x55, 0x9a, 0xa0, 0xc8, 0xfc, 0xa7, 0xd1, 0x49, 0x8d, 0x76, + 0x9f, 0x12, 0xb5, 0xa5, 0xb7, 0xe1, 0xdd, 0xf7, 0x8a, 0x28, 0x06, 0x78, + 0xfd, 0xd2, 0x0f, 0xe3, 0x13, 0xbf, 0x03, 0x71, 0x20, 0x19, 0xe2, 0xf7, + 0x1a, 0xb9, 0x4d, 0x2b, 0xae, 0x81, 0x60, 0x41, 0x76, 0x28, 0xcf, 0xb9, + 0x31, 0xf5, 0xec, 0x1d, 0x2d, 0x8e, 0xb9, 0xb2, 0x8e, 0x4a, 0x4f, 0x85, + 0x54, 0xd8, 0x57, 0xdd, 0xd3, 0xfe, 0x06, 0xbd, 0x68, 0x9d, 0x62, 0x24, + 0xa2, 0xa7, 0xdf, 0x42, 0xba, 0x60, 0x1b, 0x6c, 0xd8, 0x0f, 0xae, 0x8a, + 0x59, 0xca, 0x61, 0x2c, 0xf2, 0x86, 0x1a, 0x56, 0xcc, 0xda, 0x02, 0xf7, + 0x22, 0x27, 0x8b, 0xad, 0x63, 0x75, 0x6b, 0x74, 0xca, 0x6b, 0x8d, 0xe2, + 0x06, 0xf3, 0xa5, 0xf3, 0x34, 0x87, 0x4b, 0x46, 0x4d, 0x26, 0xd7, 0x74, + 0x55, 0x6b, 0xdd, 0x72, 0xd9, 0x26, 0x6f, 0x7f, 0xaa, 0x8e, 0x53, 0xd5, + 0x32, 0xde, 0x29, 0xd3, 0xeb, 0x42, 0x03, 0x7c, 0x13, 0x8e, 0x6c, 0x1b, + 0xff, 0xd8, 0x61, 0xae, 0x79, 0xeb, 0x50, 0x7c, 0x03, 0x3e, 0x7e, 0x1c, + 0x43, 0x70, 0xb7, 0x8f, 0xd5, 0xc9, 0xc9, 0xa7, 0xa8, 0x11, 0x20, 0xac, + 0x49, 0x8c, 0xd6, 0x7e, 0x9b, 0x97, 0x63, 0x53, 0x93, 0xb0, 0x1a, 0x4a, + 0x18, 0x0e, 0xda, 0xbe, 0x81, 0xb2, 0x98, 0x35, 0x63, 0x90, 0x3b, 0xfb, + 0x89, 0x06, 0x89, 0x29, 0x55, 0xa7, 0xf2, 0x54, 0x30, 0x2e, 0x4f, 0x58, + 0x93, 0x08, 0xc6, 0x61, 0xf8, 0x88, 0x5c, 0xaf, 0xbe, 0xe0, 0x06, 0xb6, + 0xc4, 0x79, 0xc3, 0x98, 0xf4, 0x05, 0x38, 0xea, 0x9c, 0x25, 0xb6, 0x28, + 0x4c, 0xa8, 0x9e, 0x20, 0x2b, 0x10, 0x26, 0xb1, 0xd5, 0xcd, 0x65, 0x1e, + 0x6c, 0xf3, 0xf6, 0x26, 0xa5, 0x62, 0x65, 0xf2, 0xe0, 0xe7, 0x51, 0x9a, + 0x53, 0x66, 0xd3, 0xd8, 0x7c, 0x22, 0x36, 0x58, 0xc3, 0x24, 0x66, 0x56, + 0x5e, 0xc6, 0x05, 0x09, 0x6b, 0x5c, 0x21, 0x75, 0x57, 0x5d, 0x54, 0x81, + 0xb6, 0x00, 0x36, 0x55, 0x46, 0x46, 0xb3, 0xfe, 0x8b, 0x51, 0xdd, 0x5e, + 0x15, 0x09, 0x7d, 0x5f, 0xc9, 0x70, 0x37, 0x58, 0x12, 0xbe, 0xa8, 0xc8, + 0x89, 0xd2, 0x5a, 0xca, 0x4c, 0x8a, 0x56, 0xa9, 0xb9, 0x86, 0xb1, 0xa3, + 0xc5, 0xdb, 0x1a, 0xf0, 0xe7, 0xd1, 0xa2, 0xb8, 0x87, 0xc9, 0x22, 0x9f, + 0x62, 0xf5, 0x6b, 0xab, 0xd1, 0x44, 0x97, 0xca, 0xea, 0x29, 0x3b, 0x48, + 0x18, 0xd1, 0xc3, 0x57, 0xfd, 0x75, 0xf5, 0xd1, 0xb9, 0x83, 0x8a, 0x43, + 0x2b, 0xba, 0x77, 0xf3, 0x1a, 0xa3, 0x8e, 0xb5, 0x8e, 0xa5, 0x13, 0x8e, + 0xf9, 0x05, 0x17, 0xf0, 0x21, 0xcd, 0xa4, 0x4d, 0x41, 0x98, 0xe5, 0x19, + 0x76, 0xeb, 0x2a, 0xca, 0x4d, 0xbc, 0x56, 0xd8, 0x61, 0x36, 0x8a, 0x40, + 0xd7, 0x49, 0x2b, 0x41, 0x22, 0x08, 0x55, 0xf3, 0x1b, 0x6b, 0x8b, 0xf6, + 0x02, 0xb5, 0x9a, 0x41, 0x00, 0xbd, 0x86, 0xbe, 0x16, 0x55, 0x23, 0xa7, + 0xfb, 0xc9, 0x20, 0x54, 0x72, 0xc6, 0x29, 0x6a, 0x01, 0xb3, 0x49, 0xae, + 0x25, 0xc5, 0x44, 0x8d, 0x43, 0x8d, 0x4c, 0x32, 0x34, 0xec, 0xba, 0x40, + 0xe7, 0x14, 0x4e, 0x9a, 0x61, 0x8b, 0xb0, 0x8d, 0x28, 0xa5, 0xab, 0x35, + 0xaf, 0x3f, 0x79, 0x13, 0x9a, 0xb3, 0x01, 0x37, 0x5e, 0xcc, 0x7d, 0x9d, + 0xed, 0xf8, 0xd4, 0x0e, 0x29, 0xee, 0x84, 0x82, 0xd3, 0xcc, 0x91, 0x26, + 0x9c, 0x55, 0x62, 0x3b, 0x01, 0x73, 0x00, 0x56, 0x35, 0xf1, 0x40, 0x6c, + 0x50, 0xa9, 0xf3, 0x34, 0xb5, 0x2e, 0x10, 0x79, 0xad, 0x0e, 0x1b, 0x5c, + 0x0c, 0xa2, 0x1e, 0x02, 0xd9, 0xf7, 0x68, 0xa9, 0x82, 0xfc, 0x25, 0x1d, + 0x17, 0xf5, 0x5d, 0xd8, 0x95, 0xc6, 0x6a, 0xfd, 0x0e, 0xce, 0xf2, 0x7f, + 0xd2, 0xaf, 0x86, 0x4e, 0x67, 0xfd, 0x6d, 0x9e, 0x7d, 0x20, 0xe7, 0xa9, + 0x0f, 0x96, 0x68, 0x00, 0x85, 0x97, 0xad, 0x4a, 0xe1, 0x7b, 0x11, 0xf3, + 0xbc, 0xb1, 0x3a, 0x0a, 0xae, 0x60, 0x3f, 0x58, 0x77, 0xa0, 0x00, 0x5a, + 0xe7, 0x92, 0x0e, 0xf4, 0x3c, 0xc3, 0xec, 0x66, 0x80, 0xcf, 0x0d, 0xc6, + 0xc5, 0x0c, 0x6e, 0xa0, 0x37, 0xc7, 0x8c, 0x70, 0x55, 0x3c, 0xa9, 0x11, + 0xdb, 0x34, 0x47, 0xd5, 0xdf, 0xe6, 0x19, 0x12, 0x92, 0x16, 0x36, 0x3a, + 0xd0, 0xe3, 0x8c, 0xd9, 0x56, 0x69, 0x4f, 0x7b, 0x62, 0x2b, 0xe1, 0x15, + 0xa9, 0xdc, 0x18, 0x89, 0x4d, 0x60, 0x45, 0xc7, 0x17, 0x1d, 0x36, 0x92, + 0x03, 0x71, 0x48, 0xbd, 0xd3, 0xda, 0x5d, 0xb8, 0x1a, 0x0f, 0x8a, 0xb5, + 0x17, 0x75, 0x74, 0xa2, 0x23, 0xc5, 0x89, 0xdb, 0xd1, 0x29, 0xff, 0x74, + 0x12, 0x1c, 0x69, 0x78, 0x4d, 0x6f, 0xf4, 0x9a, 0xa5, 0xb5, 0x78, 0x94, + 0x74, 0x36, 0x13, 0x49, 0x81, 0xaf, 0xfe, 0xf9, 0xcf, 0x83, 0xa5, 0x59, + 0x43, 0x8c, 0x34, 0x18, 0xf5, 0xf6, 0x7e, 0xa2, 0xc0, 0xd5, 0x2f, 0xf1, + 0x4f, 0xf0, 0xcf, 0x5f, 0x7a, 0x06, 0x74, 0x90, 0x9b, 0xdb, 0x59, 0x68, + 0xb0, 0x64, 0xec, 0x55, 0xd1, 0xe3, 0x66, 0xf7, 0xd9, 0x4b, 0x53, 0x9b, + 0x86, 0x19, 0xa4, 0xb9, 0x9d, 0x1f, 0x9e, 0xf2, 0xc5, 0x2a, 0x39, 0xef, + 0x86, 0x88, 0x13, 0xd9, 0x0a, 0x99, 0x5c, 0x28, 0x4a, 0x02, 0xfd, 0xc8, + 0x85, 0x08, 0x12, 0xe7, 0xcd, 0xbe, 0x4d, 0xae, 0xba, 0xe6, 0x7b, 0x9d, + 0x80, 0x01, 0x72, 0x81, 0x6e, 0x61, 0x06, 0xd0, 0x1e, 0x44, 0x07, 0xaa, + 0xfc, 0xb6, 0xd9, 0x1a, 0xfd, 0x3e, 0xa2, 0x46, 0x7a, 0x84, 0x55, 0x72, + 0x0d, 0x4b, 0xec, 0x4b, 0xd7, 0x75, 0x2e, 0x8f, 0x57, 0x6c, 0xbf, 0x2c, + 0x47, 0x93, 0x52, 0x79, 0x69, 0x99, 0x55, 0xef, 0x7d, 0x63, 0x5f, 0x00, + 0x05, 0x9c, 0xfc, 0x45, 0x5a, 0x25, 0x86, 0xee, 0x51, 0x28, 0xbb, 0xf0, + 0x68, 0x41, 0x6d, 0xb2, 0xc9, 0xda, 0x57, 0x83, 0xca, 0xeb, 0x72, 0x25, + 0xae, 0xa6, 0x50, 0x9e, 0xc2, 0x1d, 0x22, 0x19, 0x75, 0x6b, 0x03, 0xe1, + 0x53, 0x6e, 0xb2, 0x71, 0xd7, 0x87, 0x5d, 0xc4, 0x6f, 0xef, 0x9d, 0xe5, + 0x0e, 0x22, 0x12, 0x9c, 0x82, 0x2d, 0x1b, 0x6c, 0x22, 0x27, 0x8f, 0x95, + 0x69, 0xbd, 0xa4, 0x6f, 0x5b, 0xb3, 0x53, 0x4b, 0x12, 0x9d, 0x82, 0xd1, + 0x66, 0x6e, 0x94, 0xd3, 0x3d, 0x8d, 0xc1, 0xef, 0x50, 0x61, 0xd9, 0x68, + 0x5f, 0xa0, 0xc3, 0xb4, 0xa4, 0x50, 0xbc, 0x75, 0x51, 0x13, 0xb6, 0x59, + 0x86, 0xc5, 0x63, 0xe3, 0x12, 0xd6, 0x80, 0x89, 0xd2, 0x82, 0x87, 0xaf, + 0x28, 0x19, 0x54, 0x8e, 0x29, 0xb6, 0x89, 0x17, 0xf9, 0x52, 0x75, 0x08, + 0xcd, 0x3e, 0x6b, 0x56, 0x11, 0x88, 0x1f, 0x87, 0xd8, 0x98, 0x20, 0xf1, + 0xbf, 0x24, 0xa7, 0x10, 0x30, 0xe1, 0x3a, 0x47, 0x2f, 0x7b, 0xe5, 0xdb, + 0xe4, 0xb4, 0x78, 0x92, 0xb8, 0x4b, 0x2b, 0xcc, 0x64, 0xa7, 0x3e, 0x45, + 0xf5, 0xa5, 0x0c, 0x7d, 0x2f, 0xe5, 0x08, 0x97, 0xb4, 0x8a, 0x72, 0xd4, + 0x52, 0x4e, 0x39, 0xea, 0xe1, 0x69, 0x67, 0xfc, 0xb3, 0xea, 0x7d, 0xc6, + 0xbf, 0x88, 0xb3, 0xf9, 0xed, 0xad, 0x48, 0xb5, 0xc7, 0x22, 0xde, 0xb1, + 0x86, 0xbc, 0x30, 0x9a, 0x43, 0xb5, 0xb8, 0xb8, 0xa0, 0xc6, 0x13, 0x7e, + 0x0a, 0x38, 0x3a, 0xed, 0x4c, 0x61, 0x2c, 0x6a, 0x0a, 0x58, 0x91, 0x55, + 0xf1, 0xd9, 0x34, 0xba, 0x02, 0xd2, 0x6c, 0x22, 0x49, 0x2a, 0x63, 0x96, + 0xf8, 0x5d, 0xc9, 0x8c, 0x91, 0x72, 0x2c, 0x4c, 0x9f, 0x5e, 0x2c, 0xd3, + 0x85, 0x72, 0xa2, 0xb6, 0x5c, 0xa3, 0x04, 0x30, 0x11, 0x6a, 0xbe, 0x3c, + 0xa9, 0x96, 0x48, 0xb3, 0xdb, 0x70, 0x3b, 0xb8, 0xe8, 0x82, 0x53, 0xe4, + 0x44, 0x95, 0x74, 0x41, 0x51, 0x9f, 0x12, 0x28, 0xea, 0x52, 0xb4, 0xe7, + 0x66, 0xcf, 0xbe, 0x6c, 0x22, 0x3d, 0x55, 0xb9, 0x83, 0x66, 0xc9, 0x56, + 0x82, 0xd6, 0x6f, 0x89, 0x90, 0x6b, 0xeb, 0x52, 0x13, 0xda, 0xcb, 0x5b, + 0x49, 0xdc, 0x3d, 0xf2, 0x87, 0x77, 0x76, 0xba, 0xa3, 0xdf, 0x87, 0xda, + 0x1b, 0xab, 0x5b, 0xc9, 0x24, 0xe8, 0x24, 0xf1, 0x6a, 0x1a, 0x8f, 0x46, + 0xa3, 0x98, 0x34, 0xdd, 0x7d, 0x56, 0xbf, 0x37, 0x45, 0xfd, 0x0d, 0x9b, + 0x06, 0x67, 0xa9, 0xd0, 0xdd, 0xe1, 0xe1, 0xa1, 0x28, 0xea, 0xe7, 0x97, + 0x2d, 0x95, 0xd9, 0xc2, 0xd8, 0xb0, 0xc9, 0x90, 0x86, 0x42, 0x17, 0xd5, + 0xe5, 0xa2, 0x46, 0xb6, 0xd4, 0x97, 0x0e, 0x74, 0xc6, 0x8d, 0xcd, 0xc0, + 0x63, 0x06, 0x58, 0xc2, 0xb6, 0xf0, 0x2e, 0x60, 0x5f, 0xfb, 0x06, 0xff, + 0x25, 0xd0, 0xbd, 0xaa, 0x4c, 0x11, 0x35, 0x47, 0x9d, 0x63, 0x32, 0x3e, + 0x4b, 0x79, 0x37, 0x3d, 0xfb, 0xfc, 0xb2, 0x61, 0x69, 0xe0, 0xd4, 0x99, + 0x1f, 0xe5, 0x24, 0x1f, 0x54, 0x63, 0x20, 0xba, 0x84, 0x66, 0x71, 0x89, + 0x4c, 0xd7, 0x1e, 0xfe, 0x56, 0x12, 0x73, 0xb7, 0xfc, 0xe1, 0x49, 0xcc, + 0x19, 0xfd, 0x5e, 0x24, 0xe6, 0xae, 0x4e, 0x36, 0xa9, 0xf1, 0x1b, 0xa4, + 0xbb, 0x6a, 0x35, 0xc2, 0x93, 0x37, 0x3b, 0x68, 0x6f, 0x89, 0x1b, 0x06, + 0x49, 0x2c, 0x5a, 0x3f, 0xa4, 0xee, 0xdf, 0xd1, 0xa1, 0xb0, 0xc1, 0xc3, + 0x4b, 0x4c, 0x21, 0x9f, 0x02, 0x25, 0xc2, 0xb9, 0x54, 0x24, 0xd9, 0xb8, + 0xe6, 0xfa, 0xec, 0xe5, 0xe6, 0xf9, 0xcb, 0x33, 0xaf, 0x9a, 0xee, 0x06, + 0x23, 0xc2, 0x14, 0xf9, 0x6d, 0x46, 0x17, 0x99, 0x0e, 0xca, 0xb4, 0x32, + 0x78, 0x51, 0x86, 0xb5, 0xf1, 0x0c, 0xc1, 0x96, 0x2c, 0x8b, 0xdc, 0x01, + 0x35, 0x40, 0x77, 0x4d, 0x9e, 0xe6, 0x84, 0xca, 0x8b, 0xf9, 0x7c, 0xc4, + 0xb4, 0x18, 0xdc, 0x25, 0x7a, 0x7d, 0x70, 0x8e, 0xe5, 0xe6, 0xb5, 0xa4, + 0xa0, 0x8a, 0x5f, 0x3e, 0x90, 0x1d, 0x66, 0x3a, 0xb9, 0x26, 0x23, 0x6d, + 0xb6, 0x6e, 0x6d, 0x6e, 0x3a, 0x06, 0x54, 0xe8, 0xf8, 0x7a, 0xdd, 0xee, + 0xbf, 0xd0, 0x53, 0xea, 0x2e, 0x03, 0xff, 0x78, 0xe2, 0xfa, 0x08, 0xba, + 0x0a, 0x52, 0x4f, 0x27, 0xf1, 0xc0, 0x4b, 0x8e, 0x88, 0x0e, 0x93, 0xb6, + 0xf3, 0x3b, 0x3e, 0xbe, 0x0e, 0x87, 0x06, 0x6b, 0x57, 0x42, 0x24, 0x86, + 0xbb, 0x50, 0x0c, 0x70, 0x5a, 0x5c, 0x64, 0x14, 0x4e, 0x63, 0x42, 0x23, + 0xb5, 0x4a, 0xf3, 0x7d, 0xda, 0x3b, 0x74, 0xc0, 0xa7, 0x1b, 0x69, 0xdb, + 0x0e, 0x97, 0xa6, 0x30, 0x26, 0x87, 0xac, 0x0c, 0x75, 0x37, 0x43, 0x15, + 0xec, 0x36, 0x34, 0x80, 0x5d, 0x3e, 0x1e, 0x16, 0x1e, 0x45, 0x36, 0xca, + 0xe0, 0x05, 0x4c, 0xae, 0x7d, 0xc1, 0x28, 0x26, 0x4e, 0x89, 0x92, 0xe2, + 0x20, 0x0a, 0x23, 0x34, 0xbc, 0x15, 0xd3, 0x22, 0xbd, 0x14, 0x40, 0x54, + 0x6a, 0xe4, 0x1b, 0xef, 0x48, 0x2b, 0x42, 0xf3, 0x9f, 0x86, 0x11, 0xf1, + 0xe0, 0xf7, 0xa6, 0x17, 0x59, 0xdb, 0x2a, 0x91, 0x61, 0x78, 0xcf, 0xa1, + 0x8d, 0xef, 0x50, 0xdb, 0xbb, 0xf0, 0xf4, 0x7b, 0x83, 0xff, 0xdf, 0x6c, + 0x0d, 0x2c, 0x15, 0x89, 0xa0, 0xd3, 0x71, 0x52, 0xa6, 0x01, 0x14, 0xe3, + 0x2f, 0xb3, 0xb9, 0x33, 0x5e, 0x0a, 0x0b, 0xfe, 0x34, 0x96, 0xa4, 0x36, + 0xee, 0x56, 0x8c, 0x3f, 0x80, 0xaf, 0xe1, 0x0c, 0xa5, 0x66, 0x2f, 0x29, + 0x53, 0xe7, 0xf5, 0x1d, 0x58, 0x12, 0xc1, 0x36, 0x43, 0xc8, 0x93, 0xda, + 0x4d, 0xa7, 0xa8, 0x4e, 0x57, 0x31, 0x9d, 0x39, 0x89, 0x1b, 0x33, 0x98, + 0xae, 0x33, 0x60, 0x94, 0xd7, 0x1a, 0xdb, 0x0a, 0x65, 0x81, 0x9c, 0xab, + 0xeb, 0x1a, 0x79, 0x13, 0xd9, 0xe5, 0xa9, 0x29, 0x58, 0xc2, 0x76, 0x25, + 0x9a, 0xce, 0xf9, 0xff, 0xac, 0x2d, 0xc7, 0xa6, 0xd4, 0xd5, 0x33, 0x56, + 0x1c, 0xf3, 0x40, 0xde, 0x18, 0x93, 0xe3, 0xd3, 0xb7, 0x2b, 0xd5, 0x19, + 0xc3, 0xea, 0xd8, 0x92, 0x75, 0x7c, 0x7f, 0x74, 0xf0, 0xbc, 0x13, 0x95, + 0xd8, 0x91, 0xa5, 0x7a, 0xb4, 0x77, 0xf6, 0xd5, 0x06, 0xb2, 0xf4, 0x02, + 0xa4, 0x7b, 0xd1, 0x6d, 0x87, 0x74, 0x06, 0x53, 0x70, 0x15, 0xa1, 0x3c, + 0xac, 0xee, 0xa7, 0xe3, 0x71, 0xd4, 0xab, 0x8b, 0x62, 0xaa, 0xc9, 0x5d, + 0xf0, 0xcf, 0xe4, 0x22, 0xfd, 0xaa, 0x98, 0x8e, 0x7b, 0xab, 0x8e, 0x74, + 0xdc, 0x1e, 0x6c, 0xa5, 0xb2, 0xf7, 0x56, 0xb6, 0xd6, 0x8f, 0xf8, 0x4f, + 0x6f, 0xf3, 0xe3, 0x0b, 0xda, 0xeb, 0x69, 0x31, 0x2c, 0x26, 0x93, 0x25, + 0xba, 0x3e, 0x77, 0xb1, 0x26, 0x48, 0x00, 0xa6, 0xd9, 0x1e, 0x9e, 0x2b, + 0xbe, 0x37, 0xe4, 0xd6, 0xe5, 0x25, 0xf0, 0xb0, 0x9e, 0x54, 0xc2, 0x4a, + 0xc3, 0x1b, 0x4f, 0x20, 0x3a, 0xf9, 0x0d, 0x37, 0xe2, 0x52, 0x52, 0xe7, + 0x8d, 0x45, 0x71, 0x34, 0xc9, 0xed, 0xe8, 0xcf, 0x20, 0x2c, 0x29, 0x60, + 0xc9, 0xff, 0xfa, 0xf7, 0x4f, 0xbf, 0xb4, 0x86, 0xd3, 0x08, 0x1d, 0x82, + 0x2e, 0x50, 0xfa, 0x31, 0x65, 0x55, 0xd4, 0x55, 0x3a, 0x9d, 0xb0, 0x2f, + 0x94, 0xec, 0x47, 0xec, 0x87, 0xe1, 0xc2, 0xd9, 0x73, 0x10, 0x15, 0xc6, + 0x0d, 0x94, 0xd6, 0xda, 0x06, 0x38, 0x02, 0x48, 0x35, 0x4d, 0x2f, 0xe0, + 0x4f, 0xfc, 0x50, 0x53, 0xba, 0x27, 0x11, 0x63, 0x84, 0x4c, 0x67, 0xd7, + 0x2e, 0x5e, 0xcd, 0x70, 0x46, 0x2c, 0xa6, 0xa2, 0xb7, 0x13, 0x41, 0xdf, + 0xbe, 0x39, 0x36, 0x61, 0xc9, 0xa5, 0x4c, 0xfc, 0x82, 0xd0, 0xda, 0xe4, + 0x5c, 0x1e, 0xbc, 0x83, 0x94, 0x8c, 0xbb, 0x22, 0xf3, 0xc6, 0x3e, 0x28, + 0x81, 0x1a, 0xc3, 0x7f, 0xfd, 0xf4, 0xcb, 0xbf, 0xe1, 0xff, 0x7a, 0x77, + 0x6a, 0xb9, 0xcc, 0xb4, 0xe8, 0x36, 0xf1, 0x76, 0xc5, 0xfd, 0x25, 0x30, + 0x8f, 0x9b, 0x38, 0xbd, 0x49, 0x87, 0xc0, 0xa9, 0x2b, 0x45, 0x95, 0x8d, + 0x67, 0x55, 0xb4, 0x3f, 0xcb, 0xa6, 0xd3, 0xac, 0x03, 0x93, 0xf9, 0x7b, + 0x7c, 0x2d, 0x3a, 0x92, 0xd7, 0x0c, 0x0c, 0xde, 0x45, 0x51, 0xc2, 0x17, + 0xcf, 0x04, 0x76, 0xcb, 0x01, 0x78, 0xb5, 0xbe, 0xfa, 0x88, 0x6a, 0xba, + 0x43, 0xed, 0x4d, 0xd9, 0xc9, 0x4f, 0xad, 0x1f, 0x9d, 0x16, 0x7f, 0xe2, + 0x97, 0x59, 0x24, 0x53, 0xf4, 0xe0, 0x8c, 0xde, 0x93, 0xe7, 0xba, 0xea, + 0x63, 0x14, 0x1f, 0xcf, 0x8d, 0x3b, 0x45, 0x06, 0x0a, 0x3c, 0x04, 0x26, + 0x47, 0x9b, 0x0c, 0x1a, 0xe9, 0x23, 0xce, 0x46, 0x84, 0xae, 0x71, 0xbe, + 0x6f, 0xa0, 0x4d, 0xef, 0x69, 0xc0, 0x8e, 0xc0, 0x06, 0x5e, 0x1f, 0xf1, + 0x20, 0xca, 0xf7, 0x30, 0xcf, 0x35, 0xf5, 0x66, 0x48, 0xed, 0xb0, 0x81, + 0x7d, 0x8e, 0xac, 0x24, 0x4b, 0x1a, 0x74, 0x18, 0x7f, 0x33, 0x66, 0x65, + 0x24, 0x63, 0xd3, 0x3d, 0xc4, 0xed, 0xb7, 0x4a, 0x48, 0x25, 0x09, 0x82, + 0xa7, 0xa4, 0x53, 0xd6, 0x63, 0x83, 0xf8, 0xad, 0xd6, 0x75, 0x20, 0x82, + 0x11, 0xb8, 0x0d, 0x9c, 0x32, 0x23, 0x39, 0x49, 0x52, 0x42, 0x91, 0xa7, + 0xc6, 0xd5, 0x1e, 0x74, 0x48, 0xd2, 0xe8, 0xec, 0x01, 0x86, 0x9d, 0x11, + 0xd7, 0x0a, 0xe1, 0x3b, 0x13, 0x06, 0x1d, 0xa3, 0x4f, 0xe3, 0xdb, 0x94, + 0x32, 0x8d, 0xda, 0x79, 0x93, 0x02, 0xda, 0x51, 0xd2, 0x17, 0x87, 0xd1, + 0x93, 0xc7, 0x8f, 0x1f, 0x73, 0xc2, 0x48, 0xef, 0x98, 0x26, 0x7e, 0x73, + 0x74, 0x78, 0xf2, 0xea, 0xd5, 0xd1, 0xeb, 0xe7, 0x47, 0xcf, 0x35, 0x8b, + 0xdb, 0x59, 0xbb, 0x93, 0x6f, 0xe5, 0xc5, 0x6e, 0xb0, 0xde, 0x07, 0x48, + 0x63, 0xfb, 0xf1, 0x56, 0xbc, 0xf3, 0x78, 0x2b, 0x9a, 0xa1, 0xe8, 0x55, + 0xac, 0x88, 0x64, 0x8a, 0xf8, 0x88, 0xd1, 0xe5, 0x02, 0xcc, 0x19, 0xec, + 0xe1, 0x5c, 0x23, 0x22, 0xa6, 0xc2, 0xf7, 0xe7, 0x69, 0x8d, 0x4e, 0xe5, + 0xb6, 0x15, 0x83, 0xc5, 0xd4, 0x3d, 0xd3, 0x65, 0xd0, 0xa6, 0x98, 0x89, + 0x9d, 0x40, 0x14, 0xbb, 0xb3, 0x85, 0x13, 0x0d, 0xa2, 0x17, 0xa0, 0xe8, + 0x4e, 0x8a, 0x0f, 0x4c, 0x9c, 0x87, 0x97, 0x60, 0x9e, 0xa6, 0x7e, 0x72, + 0x59, 0xf3, 0x7d, 0x7c, 0x7d, 0x97, 0x5f, 0x0f, 0x37, 0x02, 0xe8, 0xbe, + 0x74, 0xb7, 0x35, 0xf9, 0x09, 0x01, 0x15, 0x7f, 0x74, 0x2a, 0x61, 0xf7, + 0x72, 0x1e, 0x6f, 0x6d, 0xad, 0x26, 0x01, 0x67, 0xc8, 0x66, 0x66, 0xc9, + 0x07, 0x6e, 0x7a, 0x22, 0xad, 0x39, 0x5a, 0x88, 0xd5, 0x0d, 0x3c, 0xd4, + 0x2f, 0x9b, 0x68, 0x46, 0xb0, 0x94, 0xb2, 0xf8, 0x70, 0x13, 0x73, 0xb4, + 0xd1, 0x77, 0x14, 0x32, 0x28, 0x15, 0x79, 0x4d, 0x4c, 0x96, 0xe8, 0xf1, + 0x29, 0x8e, 0xf5, 0xfd, 0xc1, 0x29, 0xbe, 0x19, 0x9d, 0xbe, 0x39, 0xf9, + 0xf1, 0x1f, 0x16, 0x29, 0xe6, 0x6a, 0xdb, 0xd4, 0x7b, 0x45, 0x49, 0x20, + 0xfa, 0x0e, 0xc4, 0x06, 0xe6, 0x4a, 0x2e, 0xe0, 0x25, 0x62, 0xb7, 0x76, + 0xb9, 0xe2, 0x30, 0xb3, 0x0a, 0x76, 0x3a, 0x1b, 0x3b, 0xfd, 0x70, 0xdd, + 0x1b, 0x9b, 0x56, 0xa6, 0xce, 0x34, 0xcb, 0xc7, 0x19, 0x77, 0x2e, 0x22, + 0x24, 0x07, 0x10, 0xd5, 0x99, 0xe7, 0x64, 0x81, 0x09, 0x29, 0x4c, 0x07, + 0x94, 0xf3, 0x88, 0x04, 0xe8, 0x05, 0x75, 0x08, 0xcd, 0xb5, 0xe5, 0x0f, + 0x5c, 0xc6, 0x9f, 0xb6, 0x06, 0x83, 0x9d, 0xc7, 0x8f, 0x7f, 0xc1, 0xc0, + 0x87, 0xa4, 0x85, 0x5f, 0x97, 0x58, 0x43, 0x95, 0xfb, 0x6e, 0x4f, 0xc5, + 0x6a, 0x2f, 0xb1, 0x6b, 0x12, 0x66, 0x54, 0x6b, 0xaf, 0x39, 0xa7, 0xf1, + 0x94, 0xce, 0x87, 0x0c, 0x61, 0x4c, 0xac, 0x8c, 0xab, 0xfa, 0x02, 0x25, + 0x81, 0xa4, 0x10, 0x63, 0x83, 0x3b, 0x45, 0x6d, 0xfa, 0x2d, 0x2d, 0x8b, + 0xd4, 0x4a, 0xec, 0x39, 0xd6, 0x30, 0xd5, 0x02, 0xd3, 0x36, 0x29, 0x0b, + 0xc6, 0x86, 0xd6, 0xde, 0xaa, 0xde, 0xea, 0x40, 0x2a, 0x4b, 0x58, 0xe8, + 0xaa, 0xc8, 0xc6, 0x0e, 0x9e, 0x12, 0x57, 0xd7, 0x4d, 0x16, 0x95, 0x51, + 0x81, 0x8b, 0x51, 0x8d, 0xd8, 0x4d, 0x32, 0xd4, 0x60, 0x19, 0x4f, 0x4e, + 0x09, 0xd8, 0x13, 0x15, 0xfc, 0x21, 0x79, 0x9e, 0x9c, 0x4d, 0xe7, 0x2d, + 0xc7, 0x35, 0x3d, 0x02, 0x0a, 0xf8, 0x90, 0xe8, 0xf6, 0x8c, 0xb3, 0x0b, + 0xd0, 0x59, 0xda, 0x84, 0xb5, 0x00, 0x1d, 0xba, 0xa4, 0xba, 0x5b, 0x0a, + 0x5f, 0x51, 0x9e, 0x13, 0x61, 0x5f, 0xce, 0x32, 0xd9, 0x3a, 0xae, 0xd9, + 0xb5, 0x58, 0x2f, 0x92, 0xa1, 0x47, 0xdb, 0xd4, 0x0f, 0x68, 0x4a, 0x52, + 0xad, 0x46, 0x38, 0xfe, 0xc4, 0xa2, 0xb0, 0xed, 0x18, 0x6d, 0xfb, 0x82, + 0xbf, 0x79, 0x4a, 0x87, 0x83, 0xc0, 0xdf, 0x23, 0x49, 0x63, 0xe4, 0xf6, + 0x82, 0xa1, 0x6b, 0x5e, 0x22, 0x3f, 0xd6, 0xc1, 0x08, 0x71, 0x44, 0x79, + 0x35, 0x96, 0x78, 0x81, 0xf5, 0x4c, 0xae, 0x25, 0x3e, 0x21, 0x96, 0x15, + 0x75, 0x81, 0x9b, 0xc8, 0x7b, 0xe8, 0xd3, 0x1d, 0x6c, 0x06, 0xa9, 0x4b, + 0x43, 0xf4, 0xbf, 0xd1, 0x06, 0x2a, 0x65, 0xc0, 0x3e, 0x6e, 0xef, 0xf8, + 0x78, 0x43, 0x27, 0x6a, 0x1e, 0x51, 0x29, 0x76, 0xd4, 0x44, 0xa0, 0xe2, + 0x75, 0x69, 0x39, 0x93, 0x49, 0x16, 0x20, 0x87, 0x38, 0xb2, 0x4d, 0xdf, + 0x66, 0xac, 0x42, 0x55, 0x6e, 0x20, 0x26, 0x74, 0x13, 0x2a, 0x97, 0x19, + 0x98, 0xcb, 0x9c, 0x4d, 0xc4, 0xce, 0xcc, 0x6a, 0x4d, 0xb1, 0x81, 0xab, + 0x8a, 0xe5, 0x2f, 0xe5, 0x8d, 0x1f, 0xb8, 0x55, 0x45, 0x97, 0x30, 0x64, + 0x10, 0x3b, 0xb4, 0xba, 0xcd, 0xb7, 0x3e, 0x2f, 0x81, 0x42, 0xca, 0x6c, + 0x7a, 0xa3, 0x72, 0x8f, 0x82, 0x04, 0xa6, 0x53, 0x0f, 0xe5, 0xf5, 0xd9, + 0x86, 0xd7, 0xfe, 0x8c, 0x8c, 0xab, 0xc8, 0xd7, 0xfd, 0x2a, 0x1b, 0x11, + 0x43, 0x46, 0xf9, 0x43, 0xf9, 0xa2, 0x15, 0x5d, 0xf1, 0x7c, 0x1c, 0x6e, + 0xfe, 0x11, 0xe0, 0x7d, 0x9f, 0xa7, 0xe3, 0x9b, 0xb7, 0x8a, 0xff, 0x75, + 0x7c, 0xda, 0xcd, 0xef, 0x3f, 0x20, 0xbf, 0xa7, 0x17, 0x1c, 0xb6, 0xfe, + 0x6c, 0xb0, 0x13, 0xe6, 0xea, 0x7a, 0x90, 0x5d, 0x5c, 0x9d, 0x42, 0x82, + 0xdd, 0x8c, 0x5c, 0xf8, 0xb8, 0x00, 0xaf, 0x59, 0xce, 0xed, 0x93, 0x37, + 0x3f, 0xe0, 0x06, 0x6e, 0x34, 0x63, 0x91, 0xec, 0x6e, 0x2c, 0x6c, 0x2e, + 0xa8, 0xb7, 0x67, 0x32, 0x56, 0x0d, 0x42, 0x3a, 0x49, 0xf9, 0x0e, 0x04, + 0xca, 0xdd, 0xc1, 0x75, 0x7c, 0xe0, 0x96, 0xa1, 0x86, 0xcb, 0x34, 0xd3, + 0x62, 0xea, 0x72, 0xd1, 0x88, 0x00, 0x69, 0x16, 0xcc, 0xe0, 0x63, 0x48, + 0x8e, 0x28, 0xce, 0x10, 0x1c, 0x2a, 0xcf, 0x49, 0x00, 0xb1, 0x25, 0x1b, + 0x89, 0x76, 0xc7, 0x7d, 0x26, 0x24, 0xd9, 0x97, 0x77, 0x6b, 0xa9, 0x03, + 0xdd, 0xbb, 0x60, 0x0f, 0xea, 0xb7, 0x6a, 0x8f, 0x7e, 0x5f, 0x4a, 0xb4, + 0xcd, 0x2f, 0x57, 0xd1, 0x44, 0x82, 0x94, 0xf9, 0x74, 0xf0, 0x64, 0xab, + 0x41, 0x9a, 0xc6, 0xd9, 0x12, 0x44, 0xa1, 0x43, 0x7f, 0xe6, 0x8b, 0xe3, + 0x97, 0x47, 0x1b, 0xd1, 0x8b, 0xb4, 0x16, 0xf4, 0x1f, 0x2d, 0xd5, 0xc7, + 0xc4, 0x9d, 0xff, 0x20, 0xcf, 0x93, 0xe9, 0x71, 0x2d, 0x20, 0x7e, 0xc1, + 0xf2, 0x4a, 0x09, 0x32, 0x93, 0x3f, 0x46, 0xa1, 0x84, 0x98, 0x1c, 0xe9, + 0x5c, 0xd1, 0xf9, 0xa0, 0xe5, 0x9a, 0x9a, 0x22, 0x2d, 0xe4, 0x1e, 0x28, + 0x60, 0x57, 0x78, 0xe5, 0x81, 0xd3, 0x7b, 0xb3, 0xc8, 0x9d, 0x82, 0x0b, + 0x5c, 0xb4, 0x80, 0x07, 0x68, 0x06, 0x75, 0x56, 0x01, 0x63, 0xbd, 0xa9, + 0x42, 0xb1, 0x23, 0x4a, 0x08, 0x36, 0xe0, 0x56, 0xc4, 0x54, 0x66, 0xc5, + 0xd8, 0x76, 0xab, 0x25, 0x5d, 0xae, 0x99, 0xf7, 0x19, 0xb0, 0x9f, 0x8f, + 0xc9, 0x7e, 0xa6, 0xe2, 0xb4, 0x87, 0x4e, 0xf8, 0xc3, 0x41, 0x57, 0xa4, + 0x9e, 0xe3, 0xd5, 0xa8, 0x45, 0xfd, 0x5f, 0xf0, 0x9f, 0x2b, 0xfc, 0x2b, + 0x9c, 0xe7, 0x90, 0xc0, 0xf2, 0x48, 0x83, 0x85, 0x75, 0x8f, 0xd2, 0x38, + 0xa9, 0x46, 0x59, 0xe6, 0xd0, 0xce, 0xf7, 0x4a, 0x3b, 0x58, 0x8d, 0xc5, + 0xff, 0xdd, 0xfc, 0xa6, 0xb3, 0xb7, 0x15, 0x83, 0xf4, 0x61, 0x81, 0xf6, + 0x06, 0x2c, 0x1d, 0x77, 0x42, 0x5e, 0x25, 0x8e, 0x02, 0xca, 0x1d, 0x87, + 0xce, 0xf0, 0x7f, 0x5c, 0x75, 0x4d, 0x46, 0x11, 0xcb, 0xc9, 0x0e, 0x7f, + 0xab, 0x1a, 0x9e, 0xea, 0x01, 0x15, 0x46, 0xa1, 0xe2, 0x91, 0xa3, 0xc2, + 0x62, 0x58, 0x2a, 0xc4, 0x58, 0x97, 0x83, 0xd4, 0x80, 0x1a, 0x04, 0x54, + 0x5e, 0x18, 0x9f, 0x16, 0xaf, 0x90, 0x83, 0xaf, 0x8e, 0x5f, 0x1d, 0x09, + 0x0e, 0x4f, 0x3a, 0xe6, 0xaa, 0x57, 0xee, 0xa3, 0xc9, 0x27, 0x66, 0x2b, + 0x3a, 0xc3, 0xe5, 0x8e, 0x95, 0x36, 0x6a, 0x61, 0xc8, 0xc5, 0xa6, 0xef, + 0x92, 0xbb, 0xd5, 0x21, 0x45, 0xd1, 0x2c, 0x16, 0x65, 0x9c, 0xe8, 0xc6, + 0x1f, 0xee, 0x0a, 0xbb, 0x20, 0xf3, 0xfe, 0x51, 0x55, 0x7b, 0xad, 0xe2, + 0x81, 0x96, 0x25, 0x4d, 0x2e, 0xa6, 0x20, 0x3a, 0xa7, 0x54, 0xa1, 0x6e, + 0xfc, 0xfd, 0x09, 0x91, 0x61, 0xbb, 0x6c, 0x39, 0xb9, 0x6e, 0x7e, 0x57, + 0xd5, 0x68, 0x6c, 0xfc, 0xf8, 0x49, 0x28, 0xb6, 0x8e, 0xa9, 0x5a, 0x98, + 0x5b, 0x64, 0x92, 0xa2, 0x40, 0x3d, 0xb2, 0x4e, 0x86, 0xd4, 0x39, 0x6a, + 0xed, 0xf2, 0xe8, 0x60, 0xe0, 0x04, 0x72, 0xab, 0xc4, 0xc9, 0x85, 0xe8, + 0x2b, 0x89, 0xc2, 0xaf, 0x28, 0xa9, 0xe0, 0x7b, 0x97, 0x89, 0x93, 0x72, + 0x90, 0x4b, 0x2f, 0x75, 0x5b, 0xb2, 0xd2, 0x95, 0x38, 0x5d, 0xe4, 0x9a, + 0x1a, 0x7a, 0xad, 0xb5, 0x33, 0x7d, 0x01, 0xe1, 0xfa, 0xc0, 0x8f, 0x4c, + 0x09, 0xcd, 0xc5, 0xc1, 0xa1, 0x08, 0x24, 0xe3, 0xb5, 0xdc, 0xe8, 0xee, + 0xe8, 0xcd, 0x80, 0x1d, 0x7a, 0x1b, 0xe1, 0x48, 0x29, 0x09, 0x90, 0xda, + 0x3a, 0x81, 0xc2, 0x38, 0x7a, 0xef, 0x15, 0xd2, 0x50, 0x5b, 0xd9, 0x05, + 0x39, 0x38, 0x93, 0xdc, 0x5d, 0x9e, 0x56, 0x27, 0xc0, 0x89, 0x71, 0x63, + 0x15, 0xb3, 0x31, 0x14, 0xad, 0x11, 0x35, 0xb1, 0xe3, 0x63, 0xa7, 0x37, + 0x52, 0xde, 0xa9, 0xcc, 0x5a, 0x3d, 0x97, 0x88, 0x5c, 0x47, 0xce, 0xd3, + 0xb4, 0xc4, 0xe3, 0x47, 0xc0, 0x75, 0x4c, 0x3a, 0xb9, 0x96, 0x16, 0x62, + 0x6d, 0x76, 0x54, 0xa2, 0xb6, 0x4e, 0xc1, 0xcd, 0x37, 0xe9, 0xac, 0xa0, + 0xa6, 0x77, 0xf6, 0x93, 0xd5, 0xaa, 0x44, 0x10, 0x27, 0x71, 0x46, 0x21, + 0xa2, 0x84, 0xac, 0x0c, 0x89, 0xb6, 0xcb, 0x7d, 0xaa, 0xe0, 0x11, 0xb6, + 0x24, 0x43, 0x32, 0xf8, 0xb0, 0x21, 0xb2, 0xd5, 0x5f, 0xc8, 0x42, 0xe8, + 0xb3, 0xe2, 0xb8, 0x07, 0xec, 0xa6, 0x5d, 0xfb, 0xf8, 0x7d, 0x51, 0xd5, + 0x7b, 0x3d, 0xf2, 0x5c, 0xb1, 0xfb, 0x57, 0xf0, 0x72, 0x9b, 0x34, 0xc3, + 0xa6, 0x08, 0x30, 0x51, 0x69, 0x15, 0x47, 0xae, 0xa9, 0xc8, 0xb7, 0x80, + 0xf4, 0x73, 0x8c, 0x35, 0xe5, 0x63, 0x54, 0x18, 0xe4, 0x22, 0x81, 0xf4, + 0x83, 0x95, 0xc5, 0xdf, 0x47, 0xbd, 0x1f, 0xe3, 0xc3, 0x85, 0xc7, 0xca, + 0x61, 0x05, 0xf1, 0xf7, 0x34, 0xe4, 0x5f, 0x7a, 0x26, 0xdf, 0x8b, 0x1f, + 0xb5, 0xbf, 0x82, 0xd5, 0x7f, 0x11, 0xaa, 0xd4, 0xe3, 0xd0, 0x91, 0x6d, + 0x55, 0x49, 0x96, 0x96, 0x2c, 0x90, 0x3a, 0xbd, 0x8d, 0xc7, 0x9b, 0x6a, + 0x2d, 0x11, 0x1b, 0xa1, 0xfa, 0xe1, 0x2e, 0xe8, 0x4e, 0x50, 0x02, 0xd0, + 0xb6, 0x83, 0x05, 0xc4, 0xc5, 0x24, 0x26, 0xbc, 0x0b, 0x50, 0xb9, 0xde, + 0x63, 0xf9, 0x20, 0xed, 0x1b, 0xd3, 0x15, 0xb5, 0x98, 0x26, 0xce, 0x30, + 0x1e, 0x8b, 0xff, 0xb2, 0xf2, 0x04, 0x2f, 0x17, 0x62, 0x09, 0xf1, 0x2b, + 0x66, 0x0e, 0x9f, 0xe6, 0x9e, 0xe4, 0x2a, 0xd2, 0xfb, 0x79, 0x7a, 0xcd, + 0x90, 0x02, 0xd8, 0x24, 0x4a, 0xb0, 0x6d, 0x02, 0xac, 0x97, 0xb0, 0x6e, + 0xfa, 0xec, 0xdd, 0x26, 0xf0, 0xf3, 0x19, 0xe7, 0x38, 0x51, 0xda, 0xd9, + 0x62, 0xae, 0xed, 0xeb, 0xa5, 0xd4, 0x09, 0xa3, 0xd6, 0xa9, 0xe9, 0xae, + 0x05, 0x12, 0xca, 0xc3, 0x0d, 0x03, 0xa1, 0x31, 0x53, 0xd3, 0x0c, 0x3f, + 0x8d, 0x2a, 0x9d, 0x88, 0xd7, 0x1a, 0xda, 0x43, 0xee, 0x84, 0x02, 0xbf, + 0xa6, 0xd2, 0xdb, 0x52, 0xfb, 0xa8, 0x45, 0xd8, 0xe6, 0xa0, 0x0d, 0x53, + 0xbc, 0xc0, 0x4a, 0x1e, 0x49, 0x05, 0x15, 0x11, 0x85, 0x8d, 0x19, 0xb0, + 0x3b, 0x39, 0x41, 0xf0, 0x90, 0x74, 0x74, 0xc2, 0xfc, 0x5d, 0x78, 0x09, + 0x8d, 0xec, 0x23, 0x34, 0x19, 0x6b, 0xe4, 0x0a, 0xe8, 0x30, 0xd6, 0xda, + 0x3b, 0x60, 0xaf, 0xdf, 0x18, 0xa8, 0xae, 0xaa, 0xbe, 0x41, 0xc5, 0xc5, + 0x00, 0x2e, 0xe6, 0xbe, 0xe9, 0x6f, 0x71, 0x75, 0x6c, 0xad, 0x1c, 0x1d, + 0xac, 0x38, 0x4f, 0xb2, 0x1c, 0xfb, 0x6d, 0x48, 0x73, 0x48, 0xe9, 0x97, + 0xf5, 0x4d, 0x2c, 0xd0, 0xab, 0x21, 0x8a, 0x23, 0xd0, 0x25, 0xe7, 0x50, + 0xb9, 0xf4, 0xd1, 0xa0, 0x99, 0x36, 0x7d, 0x56, 0x8f, 0x5d, 0x15, 0x52, + 0x35, 0xa1, 0x29, 0xa6, 0xa5, 0x3a, 0xc9, 0xaa, 0x33, 0x02, 0x71, 0x05, + 0x0b, 0x2a, 0x86, 0xbd, 0x9a, 0x45, 0x60, 0xa0, 0x4f, 0xb3, 0x1a, 0x2d, + 0x88, 0xd1, 0x65, 0x2a, 0xc9, 0xd0, 0xec, 0xa6, 0xe1, 0x7d, 0x0c, 0x9a, + 0x70, 0xc4, 0x0a, 0xd4, 0xee, 0x63, 0x81, 0x48, 0x62, 0x4d, 0xd8, 0xda, + 0x9e, 0xc4, 0x56, 0xa8, 0xa1, 0xd8, 0x0b, 0x58, 0xec, 0x5e, 0xaf, 0x1f, + 0xf5, 0xce, 0x0b, 0xf8, 0x4f, 0x9b, 0x57, 0x3c, 0x87, 0x7b, 0xbc, 0xc7, + 0xbd, 0xd4, 0x7b, 0x67, 0x0c, 0x13, 0x8a, 0xff, 0x9c, 0x15, 0xe8, 0xf7, + 0xaa, 0x4d, 0x1f, 0xdd, 0x46, 0x88, 0x85, 0xf5, 0x87, 0xf0, 0xad, 0x32, + 0x36, 0x4c, 0x50, 0x1c, 0x72, 0x23, 0x29, 0xd5, 0xbf, 0x63, 0xab, 0xe8, + 0x10, 0x17, 0x68, 0xf0, 0x27, 0x6b, 0x15, 0x73, 0x1a, 0x50, 0xee, 0x61, + 0xcb, 0x30, 0xee, 0x73, 0x4b, 0x8d, 0xdf, 0x7d, 0x1a, 0x3a, 0x83, 0x84, + 0xeb, 0x71, 0x51, 0x15, 0x86, 0x7d, 0x68, 0x83, 0x97, 0xec, 0x31, 0xe6, + 0x68, 0x8a, 0x51, 0x41, 0xe1, 0x8d, 0xc4, 0x0b, 0x89, 0xc5, 0x47, 0x1d, + 0x53, 0x6b, 0x8c, 0x58, 0x58, 0xa0, 0xfe, 0x13, 0xc1, 0x63, 0xfa, 0x6e, + 0xbd, 0x85, 0xe1, 0xbe, 0x16, 0xfc, 0xb9, 0x4d, 0x67, 0x3c, 0x79, 0xd4, + 0x89, 0x6b, 0xff, 0xc3, 0xc1, 0x9b, 0xd7, 0xc7, 0xaf, 0xbf, 0xdb, 0xb3, + 0x62, 0x8b, 0x85, 0x98, 0xd4, 0xff, 0x59, 0xb3, 0x11, 0xcf, 0x1b, 0x7f, + 0x83, 0xaa, 0xdf, 0xd4, 0xf4, 0x27, 0x0e, 0xea, 0x75, 0xc0, 0xa1, 0x59, + 0xfc, 0x72, 0xce, 0x4e, 0x99, 0x72, 0x82, 0x2b, 0x7b, 0xf1, 0x14, 0xd2, + 0x48, 0x40, 0x12, 0x69, 0x37, 0x6a, 0x6c, 0x82, 0x1e, 0x3a, 0xf3, 0xf8, + 0x25, 0xe9, 0xf7, 0x08, 0x17, 0xe2, 0x58, 0xd4, 0x78, 0x9b, 0xa7, 0x74, + 0x77, 0x0a, 0xf7, 0xfa, 0x0c, 0x53, 0x02, 0xb3, 0x4b, 0xb9, 0xda, 0x81, + 0x08, 0x2c, 0x50, 0x7f, 0x50, 0xb1, 0xd4, 0xa7, 0x00, 0x05, 0x48, 0xc0, + 0x8c, 0xa4, 0x6a, 0x81, 0x0a, 0x2c, 0xa2, 0x6b, 0xc0, 0xdb, 0x55, 0x46, + 0x6e, 0x2d, 0x67, 0x3f, 0x0c, 0x79, 0x06, 0xca, 0xf6, 0x78, 0xa3, 0x46, + 0xc9, 0x82, 0xf9, 0x0c, 0x37, 0x61, 0x93, 0x9f, 0x5a, 0xcc, 0x24, 0xb3, + 0x05, 0x3e, 0x14, 0x89, 0xab, 0xd0, 0x7f, 0x3c, 0x18, 0x49, 0x57, 0x80, + 0x9b, 0x24, 0xe6, 0x0b, 0x0c, 0xe4, 0xc4, 0xaf, 0x81, 0xdd, 0xed, 0x45, + 0xff, 0x59, 0xa4, 0x2b, 0xc4, 0xa9, 0xe1, 0xf5, 0xb7, 0x60, 0x70, 0xc6, + 0x07, 0x17, 0x24, 0x74, 0x6e, 0xd2, 0x2a, 0x9e, 0x13, 0xef, 0xd9, 0xdc, + 0xd9, 0xda, 0xda, 0x5a, 0x6d, 0x20, 0xd6, 0x20, 0x56, 0x79, 0xe5, 0x1b, + 0xd5, 0x64, 0x57, 0xee, 0x0c, 0x7b, 0xa0, 0x98, 0x02, 0x71, 0x72, 0x91, + 0x2a, 0xd0, 0x40, 0xca, 0x11, 0x72, 0xc4, 0x65, 0x76, 0xb1, 0x06, 0x2e, + 0xf9, 0x20, 0xa6, 0xf3, 0x68, 0x1f, 0x1d, 0x2d, 0x17, 0x45, 0x79, 0xf3, + 0xb5, 0xd7, 0x04, 0x11, 0x45, 0x6a, 0x84, 0x0f, 0x09, 0x29, 0x62, 0xbe, + 0x36, 0xe7, 0x9b, 0x48, 0x56, 0xaf, 0x3d, 0x21, 0xed, 0xb9, 0xe7, 0x20, + 0x43, 0x06, 0xbb, 0x16, 0xea, 0x64, 0x1d, 0x8d, 0x7e, 0xad, 0xb8, 0xaa, + 0x1c, 0x20, 0x13, 0x2e, 0xd8, 0x55, 0xf3, 0x9a, 0xc4, 0x38, 0xe9, 0x74, + 0x24, 0x00, 0xb0, 0x9d, 0x49, 0xe1, 0x09, 0xea, 0x1a, 0xcb, 0x80, 0x1a, + 0x0b, 0xd4, 0xa1, 0xc3, 0x06, 0x98, 0xae, 0x0b, 0xbf, 0xae, 0x3d, 0x21, + 0x6d, 0x13, 0xb1, 0x4e, 0x6c, 0x2d, 0xc5, 0xdf, 0x19, 0x5a, 0xbf, 0x19, + 0x03, 0xcb, 0x76, 0x35, 0x1a, 0xda, 0x1e, 0x0c, 0xc7, 0xb0, 0xbd, 0xe3, + 0x69, 0x68, 0x7c, 0xcf, 0x6b, 0x60, 0x10, 0xc6, 0x3a, 0xb8, 0xcd, 0x9f, + 0x83, 0xc3, 0xc1, 0x0c, 0xdd, 0x34, 0xe2, 0x9a, 0xde, 0x0d, 0xff, 0x21, + 0x6c, 0xe5, 0x7c, 0x31, 0x9c, 0x8d, 0x1f, 0x47, 0xfb, 0xf0, 0x87, 0x67, + 0x5f, 0x9f, 0x31, 0xf8, 0xc4, 0x21, 0xa6, 0x3a, 0xa2, 0x10, 0x40, 0x5d, + 0x55, 0x1c, 0xd4, 0x9c, 0xda, 0x80, 0x7f, 0xdd, 0xdd, 0x09, 0x84, 0x01, + 0xc8, 0x57, 0x1e, 0x6e, 0x6d, 0x61, 0x6b, 0xdc, 0xf1, 0x38, 0xb7, 0x77, + 0x9e, 0xa1, 0xb3, 0x3c, 0x7a, 0xf5, 0xfc, 0x31, 0x4b, 0xf0, 0x6a, 0x31, + 0x53, 0x45, 0x30, 0x62, 0x44, 0x04, 0x66, 0x6a, 0x1e, 0xe4, 0x37, 0x2c, + 0x7c, 0x9a, 0x8d, 0x10, 0x41, 0xb2, 0xaf, 0xba, 0xc6, 0xc4, 0xe4, 0x8d, + 0x3b, 0x01, 0x50, 0x53, 0xe6, 0x4d, 0xa5, 0x59, 0x52, 0x78, 0xe9, 0x53, + 0x2a, 0x7c, 0x3f, 0x4c, 0x8d, 0x51, 0xe3, 0x7a, 0x74, 0x19, 0xae, 0x86, + 0x76, 0xb6, 0xeb, 0x13, 0x56, 0x43, 0x77, 0x1e, 0xb3, 0x9d, 0x3d, 0x7d, + 0x3c, 0xda, 0x1e, 0x3d, 0xfa, 0x72, 0x6b, 0x67, 0xeb, 0xc9, 0xa3, 0xad, + 0xe4, 0x71, 0x32, 0xdc, 0x9a, 0xec, 0x6c, 0xed, 0x3e, 0x7a, 0xf6, 0xf8, + 0xd1, 0x68, 0x77, 0x67, 0x3b, 0x79, 0x16, 0x55, 0x2b, 0xa5, 0x5d, 0xcb, + 0xc8, 0xd5, 0x65, 0xb2, 0x03, 0xa6, 0xb8, 0x4f, 0x1f, 0xfc, 0x8b, 0x68, + 0x9f, 0xff, 0x1b, 0xa6, 0x12, 0x22, 0x92, 0x4e, 0x1a, 0x49, 0xa2, 0x6f, + 0x09, 0xfc, 0x2a, 0x56, 0x7c, 0xb6, 0xb3, 0xef, 0x0f, 0x70, 0x48, 0xb0, + 0xb9, 0x2f, 0xbb, 0xbc, 0xcc, 0xcd, 0xc3, 0x77, 0xcf, 0x7b, 0x10, 0x1d, + 0x76, 0x9f, 0x77, 0x28, 0x62, 0x14, 0x38, 0x7d, 0x9a, 0x3a, 0xed, 0x3a, + 0x6e, 0x06, 0xa8, 0x14, 0xb7, 0xa3, 0xd4, 0xbc, 0x54, 0x26, 0xb0, 0xcd, + 0xe9, 0x00, 0x8e, 0x6b, 0x06, 0x7e, 0x51, 0x55, 0x97, 0x3b, 0xac, 0xea, + 0x75, 0x64, 0x7d, 0x63, 0xbc, 0x42, 0xc2, 0x70, 0x64, 0x19, 0x9c, 0x9d, + 0x7d, 0xaf, 0x4d, 0x93, 0xaa, 0xa5, 0xe4, 0x26, 0xbb, 0xff, 0xfb, 0xf7, + 0xb5, 0x6f, 0xce, 0xff, 0xfa, 0xf9, 0xdf, 0xdf, 0xbf, 0x3a, 0xff, 0xdb, + 0x87, 0x57, 0xdf, 0xfd, 0x6d, 0xfb, 0xe4, 0xf9, 0x78, 0xf6, 0xea, 0xd7, + 0xbf, 0xed, 0xbe, 0xfa, 0x75, 0xf4, 0xdb, 0x3f, 0x7e, 0x3d, 0xb8, 0x39, + 0x39, 0xff, 0xc7, 0xe3, 0x57, 0xb3, 0x37, 0xef, 0x5f, 0xfd, 0xfa, 0xf7, + 0xd9, 0xeb, 0xe7, 0x7f, 0xfb, 0xea, 0x7e, 0xf4, 0x07, 0x94, 0xdd, 0xec, + 0xc8, 0xb3, 0xd5, 0x8a, 0x76, 0xa0, 0x1c, 0xda, 0x37, 0x1d, 0x25, 0x82, + 0xde, 0x40, 0xea, 0x16, 0xe6, 0x9a, 0x45, 0xda, 0x4b, 0xe3, 0xfb, 0xb3, + 0x73, 0x9b, 0x4f, 0x6b, 0xd2, 0x66, 0x35, 0x3b, 0x25, 0x50, 0xf0, 0x4f, + 0x26, 0xd3, 0x1c, 0x54, 0x58, 0x0e, 0x10, 0x10, 0xf2, 0x29, 0x57, 0x2e, + 0xf1, 0x58, 0x23, 0x44, 0x92, 0x13, 0x5f, 0x70, 0x23, 0x05, 0x24, 0x8a, + 0x0e, 0x50, 0x27, 0x6c, 0x1b, 0x57, 0x82, 0xdc, 0x90, 0xba, 0x3d, 0xa1, + 0xa5, 0x99, 0x02, 0x8d, 0x84, 0xe2, 0x23, 0xb9, 0xb2, 0x0e, 0x3b, 0xdb, + 0x39, 0x83, 0xbc, 0xb6, 0xed, 0x13, 0xa5, 0x66, 0xde, 0x06, 0xfe, 0x8b, + 0xdd, 0xca, 0xe1, 0x08, 0x98, 0xc5, 0xe8, 0x61, 0x08, 0x78, 0xac, 0xfe, + 0xc1, 0xad, 0x82, 0xf3, 0x91, 0x0a, 0x01, 0x9b, 0xc3, 0x4b, 0xed, 0xef, + 0xd4, 0xe3, 0x82, 0xc7, 0x12, 0xda, 0x14, 0x8d, 0x89, 0x64, 0x5c, 0x24, + 0xc4, 0x0d, 0x52, 0xcd, 0x96, 0x90, 0x97, 0x74, 0x31, 0xbf, 0x28, 0x93, + 0x71, 0xda, 0x4a, 0x11, 0x0e, 0x96, 0x80, 0xd2, 0xa9, 0x0d, 0xa2, 0x23, + 0x34, 0x35, 0x9d, 0x8d, 0x05, 0x99, 0x0d, 0x32, 0x15, 0x3f, 0x90, 0x7c, + 0x43, 0xe3, 0x0c, 0x28, 0x1f, 0x61, 0x4d, 0xa7, 0xd9, 0x84, 0xdd, 0xdf, + 0xa0, 0x79, 0x07, 0x12, 0xdf, 0x9c, 0x76, 0x02, 0xb2, 0x06, 0x0e, 0x68, + 0x46, 0x53, 0xb0, 0xc8, 0xe0, 0xd7, 0xd2, 0x4a, 0x2d, 0xb0, 0x53, 0x67, + 0xa6, 0xf6, 0xb2, 0xd7, 0x73, 0x36, 0x7f, 0x1d, 0x63, 0xbf, 0x82, 0x60, + 0xb8, 0x61, 0xc3, 0xec, 0xd2, 0x98, 0x65, 0x53, 0x7b, 0xb6, 0x79, 0x86, + 0x26, 0x39, 0xe8, 0x68, 0xeb, 0xa9, 0x55, 0x08, 0x36, 0x6c, 0x9b, 0xca, + 0x36, 0x99, 0x3e, 0x19, 0xa1, 0xd3, 0xaa, 0x9b, 0x61, 0x2c, 0x5f, 0x4f, + 0x16, 0x61, 0xc7, 0x65, 0x72, 0x36, 0x9b, 0x8f, 0x8c, 0x6a, 0xbf, 0x0b, + 0x9f, 0x21, 0x25, 0x93, 0xef, 0xc7, 0x9c, 0x02, 0xfd, 0x9a, 0x3a, 0x3c, + 0x12, 0x01, 0x7f, 0x87, 0x87, 0xb1, 0xca, 0x77, 0xee, 0xd3, 0x01, 0x08, + 0xca, 0xf0, 0x70, 0xe0, 0xab, 0x2b, 0xbe, 0x1c, 0xbf, 0x6a, 0xf6, 0x13, + 0x7d, 0xd4, 0xe2, 0x18, 0x30, 0xde, 0xd6, 0xe0, 0xcb, 0x70, 0x58, 0xb4, + 0xd9, 0x80, 0x0d, 0x91, 0x68, 0x0d, 0x96, 0x32, 0x59, 0x7e, 0x84, 0x47, + 0x01, 0xa7, 0x80, 0x7d, 0xee, 0xb4, 0xe8, 0xcd, 0x3b, 0x31, 0x7c, 0x72, + 0x13, 0x9f, 0x20, 0x77, 0x59, 0xe2, 0x94, 0xc7, 0x19, 0xd7, 0x90, 0xc1, + 0xa0, 0x66, 0x43, 0xb6, 0xe4, 0x62, 0x4c, 0xc9, 0x1a, 0x0d, 0x75, 0xeb, + 0xd4, 0x9c, 0x3e, 0x6b, 0x9f, 0x0a, 0x18, 0xba, 0xd3, 0x76, 0x43, 0x51, + 0xa2, 0x33, 0x38, 0x62, 0x8c, 0x71, 0xf1, 0xd4, 0x1e, 0x02, 0x26, 0x2f, + 0x85, 0x0b, 0x76, 0xd9, 0x9c, 0xe6, 0x96, 0xdd, 0x74, 0x25, 0xe7, 0x89, + 0xa6, 0x57, 0x15, 0xd7, 0xb9, 0xdc, 0x57, 0x02, 0xfb, 0x4d, 0xd8, 0x7c, + 0xed, 0xfe, 0x58, 0x44, 0x18, 0xe4, 0xf8, 0x64, 0x67, 0xbd, 0xdc, 0x13, + 0xf4, 0xe9, 0x2f, 0x8d, 0x91, 0xf2, 0xd9, 0x3c, 0x70, 0x62, 0xb4, 0x8c, + 0xba, 0xb2, 0x6e, 0x25, 0x8b, 0x59, 0x8d, 0x00, 0xf1, 0xe9, 0xed, 0xc1, + 0x76, 0x5f, 0xfe, 0xba, 0x23, 0x51, 0x2d, 0xfc, 0xfb, 0x6e, 0x33, 0x38, + 0xda, 0xa4, 0xcb, 0xad, 0xbe, 0x79, 0x79, 0x6b, 0x69, 0x77, 0x40, 0x43, + 0x9d, 0xca, 0x28, 0x0d, 0x51, 0xc2, 0x9b, 0x6e, 0xcc, 0x80, 0x0b, 0xe4, + 0x7d, 0xe7, 0xb3, 0xe3, 0xb8, 0xe7, 0xde, 0x6c, 0xd8, 0xa7, 0xc7, 0x1d, + 0x68, 0x59, 0x18, 0xdb, 0x5d, 0xe6, 0x9d, 0x22, 0xd8, 0xab, 0xef, 0x39, + 0x8e, 0xbc, 0xfa, 0x9e, 0xe3, 0x49, 0xd9, 0xad, 0x86, 0x13, 0x08, 0xf6, + 0x24, 0xb5, 0xa8, 0x9f, 0xde, 0xb5, 0x30, 0x3d, 0x49, 0xe5, 0x7d, 0x67, + 0xb4, 0x1d, 0x49, 0x97, 0x95, 0x7f, 0x21, 0xda, 0x2b, 0xd8, 0x99, 0x18, + 0xdf, 0x00, 0x62, 0xbf, 0x48, 0x43, 0xb0, 0x2e, 0x7a, 0xe2, 0x2d, 0xc6, + 0x03, 0xe3, 0xde, 0x85, 0xf1, 0x04, 0x8e, 0x76, 0x7b, 0x70, 0xdb, 0xc5, + 0xc1, 0x35, 0x7f, 0xaa, 0x13, 0xd9, 0x5e, 0x15, 0xad, 0x75, 0xab, 0x1f, + 0x39, 0xc7, 0x69, 0xb7, 0x12, 0xef, 0x61, 0xd7, 0xc1, 0x2c, 0x6d, 0x16, + 0xdd, 0x20, 0x3c, 0xf7, 0x68, 0xba, 0x4e, 0xa6, 0x7d, 0xc0, 0x74, 0x52, + 0xee, 0x65, 0x6c, 0x1d, 0x8d, 0x77, 0xac, 0x77, 0xb8, 0x85, 0x94, 0x25, + 0x92, 0x55, 0xd5, 0x22, 0x95, 0x42, 0x68, 0xe4, 0xc8, 0x58, 0xa4, 0xe5, + 0xba, 0x33, 0xab, 0xa0, 0x87, 0x92, 0xf8, 0xe6, 0x8e, 0x11, 0x08, 0xf4, + 0x4f, 0xdc, 0xe7, 0xb7, 0xac, 0xa1, 0x0c, 0x34, 0x43, 0x4b, 0xcc, 0x8c, + 0x88, 0x16, 0x17, 0x45, 0x5d, 0xab, 0xe3, 0x28, 0x27, 0xa3, 0xc8, 0x0b, + 0xb4, 0x9a, 0x60, 0xcf, 0x57, 0x3a, 0x55, 0x85, 0xa0, 0xfe, 0x18, 0xfa, + 0x4a, 0xae, 0x13, 0x30, 0x97, 0x48, 0xc7, 0x32, 0x6b, 0xf4, 0xcc, 0x72, + 0x14, 0x22, 0xe3, 0x42, 0xdf, 0x6d, 0x40, 0x3f, 0xc2, 0xeb, 0xd2, 0x6d, + 0x3b, 0xbd, 0x28, 0xa8, 0xda, 0x74, 0x1c, 0xd9, 0xdc, 0xa1, 0x50, 0xb0, + 0x84, 0x68, 0x58, 0xb4, 0xc2, 0x56, 0x33, 0xde, 0x65, 0x95, 0x5e, 0x1d, + 0xb7, 0xad, 0x5d, 0x2d, 0xe0, 0x52, 0x79, 0xfb, 0xd0, 0x5b, 0xc2, 0xa2, + 0x4b, 0x3c, 0x78, 0xb3, 0xdc, 0xe7, 0x9a, 0xf8, 0x4b, 0x5d, 0x9d, 0x8d, + 0xb5, 0xe4, 0x45, 0xf7, 0x26, 0x28, 0x65, 0x74, 0xd3, 0xc1, 0x22, 0x07, + 0x15, 0x63, 0x4a, 0x9d, 0x87, 0x8d, 0x95, 0x7a, 0x8d, 0xc6, 0x01, 0xd9, + 0xa8, 0xb5, 0x6d, 0x4e, 0xc0, 0x67, 0x3c, 0x08, 0xe1, 0x0a, 0x76, 0x71, + 0xcf, 0x0e, 0x6e, 0xd9, 0xb8, 0xa4, 0x9d, 0x5c, 0x71, 0x67, 0xe9, 0x35, + 0xbc, 0x17, 0x7f, 0xdc, 0x09, 0xba, 0xf2, 0x98, 0xc6, 0xfb, 0x0a, 0x4c, + 0xc1, 0x08, 0x2b, 0x34, 0x86, 0xa1, 0x5c, 0x73, 0x3b, 0x5a, 0xd4, 0xe9, + 0x51, 0x30, 0x51, 0xab, 0x03, 0x18, 0x48, 0x43, 0x5a, 0x3d, 0x27, 0x38, + 0x3f, 0x0e, 0xdd, 0x77, 0xd1, 0x20, 0xe9, 0x75, 0xb7, 0x54, 0xc3, 0x18, + 0x24, 0xea, 0xde, 0x90, 0x0a, 0x3a, 0xcf, 0x2a, 0x92, 0x55, 0xda, 0x46, + 0x97, 0xc2, 0x27, 0xf6, 0xcc, 0x3b, 0x1d, 0x29, 0x68, 0x82, 0x1e, 0x4c, + 0xdc, 0x8a, 0x3c, 0x23, 0x32, 0x12, 0x21, 0x01, 0xcb, 0xfe, 0x64, 0x4e, + 0xae, 0x86, 0x29, 0x31, 0xaa, 0x18, 0x01, 0xb6, 0xed, 0x04, 0x81, 0xfd, + 0xd9, 0x1e, 0xec, 0x60, 0x34, 0x53, 0x00, 0x67, 0x38, 0xe1, 0xe0, 0x12, + 0xbb, 0xab, 0x1b, 0x9b, 0x57, 0x88, 0x93, 0x14, 0x41, 0xa7, 0x22, 0x24, + 0xdc, 0x2d, 0x1b, 0xb1, 0x6a, 0x08, 0x4d, 0x77, 0xc4, 0xa0, 0xf9, 0xbc, + 0x61, 0x7a, 0xb2, 0x32, 0x14, 0xb9, 0x82, 0xe5, 0xce, 0xd6, 0xd3, 0xea, + 0x0a, 0xd6, 0x70, 0xab, 0x40, 0xdc, 0xf9, 0x44, 0xe2, 0x70, 0xe7, 0xe3, + 0x54, 0xc2, 0x5d, 0x21, 0x7f, 0x60, 0x3d, 0xc9, 0x74, 0x0e, 0x9f, 0xaf, + 0xa3, 0x1a, 0x66, 0x1f, 0xc0, 0xe8, 0x25, 0xe3, 0xd5, 0x5e, 0xe8, 0x3b, + 0xdf, 0x67, 0xbd, 0xc2, 0xbe, 0xf3, 0xc7, 0xde, 0x68, 0xe7, 0x4a, 0x13, + 0x4d, 0xda, 0x4b, 0x2d, 0xc2, 0xb5, 0x29, 0xcc, 0xbb, 0xef, 0xb5, 0xc7, + 0xa5, 0x96, 0xdc, 0xf3, 0xdd, 0x38, 0xd0, 0xca, 0x40, 0x2e, 0xfb, 0x9f, + 0xfe, 0x24, 0xe1, 0xb9, 0x3f, 0xfd, 0x69, 0xaf, 0x6d, 0xfc, 0x62, 0xda, + 0x65, 0x99, 0xcd, 0xa8, 0xe7, 0xef, 0x20, 0x7a, 0xce, 0x69, 0x00, 0x8c, + 0x1b, 0xe5, 0x39, 0x44, 0x40, 0x26, 0x8d, 0x17, 0xe1, 0xea, 0x82, 0x63, + 0xed, 0x6e, 0xe9, 0x4a, 0x72, 0x1a, 0x85, 0x76, 0x6f, 0xd7, 0xc4, 0xd8, + 0xd0, 0x43, 0x28, 0xbc, 0xe1, 0xed, 0x9b, 0x97, 0x7d, 0x11, 0x7c, 0x85, + 0x07, 0x83, 0x34, 0x9d, 0x2a, 0x80, 0x5b, 0x9a, 0x94, 0xd3, 0x4c, 0x2e, + 0x97, 0x92, 0x71, 0x35, 0xd0, 0x71, 0x91, 0xc8, 0x29, 0x6e, 0x81, 0x51, + 0x5f, 0x46, 0x4c, 0x04, 0xdb, 0x2f, 0x70, 0xdb, 0xcf, 0x64, 0xf7, 0xf1, + 0xfb, 0x26, 0xda, 0x94, 0x17, 0xeb, 0x08, 0x07, 0x6d, 0xde, 0x22, 0x9b, + 0x83, 0xdd, 0x8f, 0x2f, 0xd8, 0x0a, 0x6c, 0x4b, 0x41, 0x6c, 0xfc, 0xb0, + 0x34, 0x1f, 0x5b, 0x12, 0x89, 0xa4, 0x43, 0xaf, 0xf1, 0x68, 0x58, 0x76, + 0x73, 0x30, 0xad, 0xe3, 0xb3, 0x2b, 0x2c, 0xce, 0x67, 0x9c, 0x4b, 0x1f, + 0x09, 0x8a, 0x39, 0x99, 0xe2, 0x93, 0xcb, 0xd7, 0x5e, 0x6b, 0xbd, 0x24, + 0xd2, 0x84, 0xed, 0xe3, 0x2c, 0xb8, 0xaa, 0xc0, 0x16, 0x92, 0xf7, 0xc2, + 0x91, 0x76, 0x3d, 0x08, 0x39, 0x7a, 0x92, 0x63, 0x45, 0x97, 0x1c, 0xdf, + 0xd7, 0x24, 0xdf, 0x25, 0x1f, 0xe2, 0x44, 0x89, 0x11, 0x9a, 0x8a, 0x2c, + 0xd7, 0xe8, 0x6f, 0x6f, 0x8f, 0x0f, 0x5d, 0xef, 0xbf, 0x94, 0x96, 0x71, + 0x6d, 0xa3, 0x9f, 0x4d, 0xa3, 0x05, 0x5d, 0x92, 0x3a, 0xa7, 0x78, 0xb8, + 0xa6, 0xc8, 0x8e, 0xf2, 0x3a, 0xd8, 0x61, 0xdb, 0x38, 0x63, 0x5c, 0xb3, + 0x6f, 0x6e, 0x81, 0x1d, 0x3d, 0x20, 0x4c, 0x08, 0xbd, 0xfd, 0x93, 0xc2, + 0x36, 0x11, 0x9c, 0x2c, 0x72, 0x5a, 0x52, 0x42, 0x7d, 0xae, 0x25, 0xee, + 0xad, 0xc4, 0x74, 0x2b, 0x83, 0xe3, 0x3b, 0xf4, 0x89, 0xb8, 0x9c, 0x0c, + 0xfe, 0x90, 0xd6, 0x6f, 0x73, 0xe4, 0x07, 0x57, 0x61, 0x76, 0x7f, 0x4f, + 0x15, 0xe6, 0x0e, 0x26, 0x61, 0xe4, 0x7c, 0x39, 0x1b, 0xfe, 0x3e, 0x8b, + 0x7a, 0x3a, 0x78, 0x86, 0x08, 0x61, 0x2d, 0xde, 0xf8, 0xd9, 0xd8, 0x62, + 0x53, 0xcd, 0x42, 0x6f, 0xeb, 0x2d, 0xec, 0x10, 0x1d, 0x88, 0x0e, 0xf3, + 0x6b, 0x33, 0x1e, 0x61, 0x85, 0xd2, 0x74, 0xd6, 0x5c, 0x14, 0x4a, 0xc7, + 0x24, 0x17, 0xb1, 0x30, 0x45, 0x7b, 0x37, 0x4d, 0x41, 0x65, 0x20, 0xa9, + 0x8f, 0x9a, 0x26, 0x18, 0x4e, 0x9a, 0x49, 0x00, 0xd8, 0xc6, 0x50, 0x95, + 0x4d, 0x9e, 0xd1, 0xee, 0xfb, 0x8c, 0xf3, 0xff, 0x56, 0x06, 0xc8, 0x8d, + 0x44, 0xaa, 0xf7, 0x69, 0xc3, 0x97, 0xbf, 0xb9, 0xdb, 0x57, 0x3f, 0x7f, + 0xb5, 0x60, 0xfc, 0x73, 0xa9, 0x4e, 0x33, 0x8c, 0x4c, 0x84, 0x5e, 0x7b, + 0xe6, 0xe9, 0xd8, 0x63, 0x6d, 0x9a, 0x95, 0x38, 0x25, 0x0b, 0x72, 0x9c, + 0x4e, 0x93, 0x1b, 0xca, 0x1c, 0x11, 0x84, 0x0f, 0xa5, 0x92, 0x50, 0xa3, + 0xe3, 0x09, 0xe1, 0x7c, 0x53, 0x82, 0x6f, 0x41, 0xa9, 0xae, 0x08, 0x47, + 0x2e, 0x4b, 0x63, 0x3b, 0x53, 0x50, 0x73, 0x0b, 0xa4, 0xcc, 0x51, 0x6a, + 0x72, 0x20, 0x73, 0x5e, 0x49, 0x28, 0x53, 0xa8, 0xcb, 0x53, 0xe5, 0xf0, + 0x59, 0x66, 0x32, 0xcb, 0x99, 0x2d, 0x5a, 0xde, 0xab, 0xf0, 0xdb, 0x4f, + 0xc5, 0x6a, 0xef, 0xc7, 0x65, 0x5d, 0x37, 0xc8, 0xc0, 0x0c, 0xd5, 0xd0, + 0x22, 0xad, 0xde, 0xd8, 0x3e, 0x95, 0xbb, 0xea, 0x91, 0xbb, 0x9e, 0xbb, + 0x86, 0xf8, 0x68, 0xec, 0x87, 0x15, 0x96, 0x29, 0x92, 0x3e, 0x6b, 0x6d, + 0xb9, 0x70, 0x56, 0x57, 0x28, 0x19, 0x1c, 0xbb, 0xe1, 0x51, 0x7d, 0xd2, + 0xf4, 0xf4, 0x73, 0x0f, 0xc6, 0x58, 0xc2, 0x21, 0x31, 0xc7, 0x6b, 0x42, + 0xad, 0x34, 0x98, 0xbd, 0x5a, 0xad, 0xea, 0x98, 0x5e, 0x64, 0xa8, 0x30, + 0x79, 0xf9, 0x25, 0xb7, 0xab, 0x12, 0x23, 0x4b, 0xe3, 0x89, 0x9e, 0xb0, + 0xc1, 0x9c, 0xd5, 0x6c, 0x84, 0xc9, 0xff, 0x53, 0xea, 0x29, 0x4c, 0x55, + 0x46, 0x5c, 0x55, 0xaf, 0x3e, 0xfa, 0x72, 0xc1, 0x15, 0xb0, 0x07, 0x73, + 0x8a, 0x69, 0x6d, 0x0f, 0x3e, 0x68, 0xfa, 0xa5, 0xef, 0xab, 0x67, 0xff, + 0x4d, 0x96, 0x2b, 0x40, 0x75, 0x6b, 0x35, 0x38, 0x2e, 0xc7, 0x71, 0xb8, + 0x6a, 0xb1, 0x64, 0xf8, 0xf7, 0x28, 0xda, 0xc1, 0x24, 0x9b, 0x0b, 0xcf, + 0xda, 0x1a, 0xde, 0xd4, 0x69, 0x38, 0xe9, 0xe5, 0x85, 0x35, 0x54, 0x9d, + 0x34, 0xbb, 0xf7, 0xd9, 0x9c, 0xf1, 0xa9, 0x8e, 0xff, 0xeb, 0xc8, 0x44, + 0x74, 0xb0, 0xad, 0x47, 0x76, 0x81, 0x31, 0x70, 0x01, 0x90, 0xf7, 0x7c, + 0x3d, 0xbf, 0xa5, 0x8a, 0x2e, 0xa9, 0xd8, 0x8d, 0x1c, 0xee, 0x0f, 0x37, + 0xb8, 0x77, 0x03, 0xb3, 0xd6, 0x0c, 0xa5, 0xc8, 0xb8, 0xe1, 0xde, 0xc0, + 0x65, 0x82, 0x94, 0xea, 0xf3, 0xae, 0xcb, 0x9b, 0xf9, 0x2d, 0x75, 0x58, + 0x41, 0xaa, 0x68, 0x5f, 0x6c, 0x03, 0x39, 0x75, 0x6f, 0xaf, 0x52, 0x70, + 0x9a, 0x55, 0x99, 0x43, 0x78, 0xad, 0xab, 0x31, 0x8b, 0x6e, 0xf4, 0xbe, + 0x38, 0xc3, 0x0b, 0x29, 0xc9, 0xc6, 0x9e, 0x7d, 0x24, 0x55, 0x32, 0xa4, + 0x87, 0xb1, 0xf8, 0x36, 0x61, 0x2c, 0x9b, 0x4d, 0xca, 0xf9, 0x84, 0x8b, + 0x7a, 0x8e, 0xa5, 0xe6, 0xe7, 0x22, 0x08, 0xba, 0x83, 0x4e, 0xfa, 0xe2, + 0x88, 0xe2, 0xb7, 0x3c, 0x83, 0x64, 0x60, 0x73, 0x5a, 0xa4, 0x71, 0x5e, + 0x62, 0x9c, 0x15, 0xeb, 0xa9, 0x8a, 0xe2, 0x3d, 0xc8, 0x86, 0x76, 0x8a, + 0xed, 0x18, 0x85, 0x98, 0x24, 0x04, 0xd9, 0xaa, 0x95, 0x86, 0x47, 0x08, + 0x49, 0x15, 0xfb, 0x24, 0x0c, 0x06, 0x83, 0x40, 0x5f, 0xce, 0xab, 0x2c, + 0xbd, 0x96, 0x12, 0x98, 0x46, 0x49, 0x4e, 0x9f, 0xbb, 0x38, 0x72, 0xfd, + 0x47, 0xda, 0xaa, 0x4f, 0xea, 0x48, 0xc2, 0x3d, 0x25, 0xcf, 0x2c, 0x36, + 0xb2, 0x1b, 0x3c, 0x7d, 0x0c, 0x9c, 0x4d, 0xb2, 0xbc, 0x58, 0x01, 0xa1, + 0xc6, 0x70, 0x8d, 0x5a, 0x36, 0xa0, 0xe5, 0x78, 0x42, 0x55, 0x3b, 0xd4, + 0xc1, 0x2e, 0x09, 0xa5, 0x01, 0x71, 0x71, 0x92, 0x0b, 0x57, 0x64, 0xaa, + 0x9c, 0x1d, 0x95, 0x45, 0x63, 0x87, 0x74, 0x27, 0xc8, 0xc6, 0xeb, 0x60, + 0x21, 0x52, 0x85, 0x79, 0x2b, 0xc8, 0x9f, 0x4b, 0x0f, 0xdd, 0x28, 0x6c, + 0x2d, 0xc4, 0xd4, 0xbb, 0xd7, 0x28, 0xca, 0xc8, 0x2b, 0x5e, 0x82, 0x6c, + 0x35, 0x7a, 0xef, 0x48, 0x6b, 0x7b, 0xcf, 0x9f, 0x56, 0x85, 0xfa, 0x64, + 0xad, 0xa3, 0x53, 0xcb, 0x26, 0x2c, 0x7d, 0x6b, 0x9c, 0x7a, 0x7d, 0x74, + 0x6e, 0x95, 0x37, 0x8a, 0x98, 0xe6, 0x5a, 0x90, 0xb6, 0x72, 0xc2, 0x93, + 0x01, 0x54, 0x98, 0x9c, 0x71, 0x2b, 0x04, 0x34, 0x31, 0xe5, 0x6d, 0x61, + 0x89, 0xcd, 0xe4, 0x07, 0x1a, 0x81, 0x6a, 0x2b, 0x96, 0x37, 0xad, 0x0b, + 0x71, 0x65, 0x9e, 0x47, 0xca, 0x06, 0xab, 0x3a, 0x9d, 0x0b, 0x70, 0xbb, + 0xe8, 0x50, 0xaa, 0xe0, 0x78, 0x99, 0xd1, 0xe9, 0xe8, 0x7d, 0x30, 0x23, + 0x9a, 0x32, 0x92, 0x9b, 0xa2, 0x5e, 0x80, 0x61, 0x39, 0x1d, 0x40, 0x3d, + 0xfc, 0x12, 0xcf, 0x40, 0x57, 0xa0, 0x68, 0x71, 0xb8, 0x12, 0x4f, 0xeb, + 0x43, 0x95, 0xce, 0x41, 0x7f, 0x5b, 0xab, 0xc8, 0x77, 0xe8, 0x74, 0xfd, + 0xd2, 0x1d, 0xc9, 0x6a, 0x6d, 0x5f, 0x9c, 0x52, 0x96, 0x7d, 0x52, 0x2f, + 0xef, 0x16, 0x66, 0x1b, 0xbe, 0x33, 0x2c, 0x35, 0x2a, 0xa4, 0x94, 0x96, + 0xc1, 0x52, 0x94, 0x92, 0xb7, 0x24, 0xcb, 0x84, 0xd4, 0xe6, 0x10, 0xf2, + 0xba, 0x22, 0x82, 0x29, 0x82, 0x17, 0xdf, 0x25, 0xd1, 0x97, 0xdc, 0xb9, + 0x4c, 0x36, 0x0d, 0x76, 0xb4, 0xd5, 0x86, 0xb4, 0x87, 0x07, 0x4b, 0x56, + 0x27, 0x78, 0x10, 0x3a, 0x3a, 0xfe, 0x0a, 0x4e, 0x07, 0x39, 0x11, 0x93, + 0x29, 0x6f, 0x31, 0xb7, 0x82, 0x85, 0x47, 0x8b, 0x45, 0xe9, 0x95, 0x56, + 0x91, 0x5c, 0x97, 0x36, 0x8f, 0xd2, 0xd9, 0xd1, 0xbb, 0x1c, 0x7a, 0x29, + 0xf0, 0x00, 0x06, 0x55, 0xba, 0x09, 0x6c, 0xb0, 0xda, 0xac, 0xaa, 0x29, + 0xce, 0x57, 0x0d, 0xb0, 0xbf, 0x6a, 0xd0, 0x23, 0xce, 0xd9, 0x9b, 0x44, + 0x28, 0x40, 0xec, 0x21, 0x10, 0xb9, 0x26, 0x91, 0xa1, 0xea, 0x95, 0xbf, + 0xa3, 0x04, 0xf2, 0x20, 0x99, 0x6b, 0x82, 0xba, 0xfb, 0x20, 0xb7, 0x62, + 0x96, 0xd6, 0x37, 0xa6, 0xb6, 0x8c, 0x37, 0x41, 0x58, 0x9b, 0x7f, 0xc0, + 0x68, 0x77, 0xad, 0x61, 0x07, 0x24, 0x38, 0x48, 0x0b, 0x0c, 0x2d, 0x9b, + 0xd8, 0x1b, 0x54, 0xd5, 0x65, 0x0f, 0x14, 0xd3, 0xa1, 0xf9, 0x95, 0x2a, + 0x4d, 0x1d, 0x8d, 0xdf, 0x0d, 0xe4, 0xbe, 0xc9, 0xb1, 0xc8, 0x4a, 0x27, + 0x5b, 0xb0, 0xea, 0x2e, 0x08, 0xf0, 0xdb, 0x9b, 0xf0, 0xbe, 0x34, 0x81, + 0x0d, 0x85, 0x93, 0xdc, 0xee, 0x6e, 0x97, 0xdb, 0x6f, 0x2f, 0x0f, 0xf6, + 0x53, 0x28, 0x17, 0xb8, 0x4d, 0x2a, 0x4f, 0x79, 0x89, 0x6c, 0x81, 0x86, + 0x40, 0x16, 0xa5, 0xb9, 0x36, 0xe5, 0x09, 0xe1, 0x93, 0x6a, 0x8a, 0xba, + 0xc5, 0xab, 0xc2, 0x6a, 0x64, 0x8b, 0xe9, 0x7c, 0x03, 0x15, 0x85, 0xb0, + 0x81, 0x0c, 0x82, 0x51, 0x53, 0x3b, 0x74, 0x29, 0xd6, 0x69, 0x32, 0x47, + 0x12, 0xce, 0x36, 0x53, 0x89, 0xd6, 0x4a, 0x03, 0xfa, 0xca, 0x16, 0x15, + 0xa6, 0xb9, 0xab, 0xa0, 0x22, 0x1e, 0x38, 0xee, 0x6c, 0x44, 0x5d, 0x5e, + 0x44, 0xe5, 0x5d, 0x26, 0x72, 0x9a, 0x53, 0x2f, 0xd7, 0xc2, 0xee, 0x25, + 0x72, 0x3a, 0xce, 0xe9, 0x36, 0xc5, 0x4b, 0x57, 0xb4, 0x72, 0xf6, 0xd1, + 0x87, 0x1b, 0xf3, 0x32, 0xc1, 0x82, 0x25, 0xc4, 0x00, 0x04, 0x9c, 0x27, + 0xc1, 0x16, 0x58, 0x0d, 0x13, 0x45, 0xbb, 0x5a, 0x44, 0xfb, 0xa1, 0xf4, + 0xc5, 0x53, 0xce, 0x4c, 0xa3, 0xf6, 0x37, 0x6e, 0x3b, 0x3f, 0xd6, 0xa7, + 0x2d, 0xce, 0x96, 0x19, 0x66, 0x60, 0x9a, 0x19, 0xa4, 0xb9, 0x9f, 0x6f, + 0x68, 0x67, 0x63, 0xf5, 0xca, 0x41, 0x50, 0xc0, 0x78, 0x8e, 0x5e, 0x19, + 0x30, 0xaa, 0x6c, 0x4b, 0x77, 0xb8, 0x60, 0x54, 0x05, 0x32, 0x05, 0x4d, + 0xac, 0x6d, 0x42, 0x82, 0xc6, 0xd6, 0xd5, 0x30, 0xd7, 0xf9, 0x32, 0x04, + 0xcd, 0xdf, 0xb3, 0x09, 0x04, 0xd7, 0xd7, 0xd7, 0x83, 0x65, 0x39, 0xa0, + 0x27, 0x70, 0x7f, 0x5e, 0x82, 0x30, 0xf8, 0x10, 0x39, 0x0d, 0xc1, 0x89, + 0x5f, 0x3b, 0x1d, 0x31, 0x92, 0xe8, 0xef, 0x6f, 0x5e, 0xf4, 0x4d, 0xfa, + 0x9a, 0xe0, 0x57, 0x62, 0x25, 0x94, 0xe7, 0x4d, 0x04, 0xf3, 0x3c, 0xe3, + 0x26, 0xed, 0x09, 0xd8, 0xa5, 0x87, 0x07, 0xa7, 0xef, 0x5e, 0x1f, 0x9d, + 0xbf, 0x7b, 0x73, 0xf0, 0x43, 0xc4, 0x5a, 0x1b, 0x8c, 0x0e, 0x26, 0x19, + 0x16, 0x20, 0x96, 0x45, 0x81, 0x4a, 0xfd, 0x2b, 0xea, 0xae, 0x25, 0x64, + 0x1d, 0x94, 0xc6, 0x58, 0x3c, 0x4f, 0x05, 0x7e, 0xb2, 0x4e, 0x58, 0xcb, + 0x5e, 0xd4, 0xf8, 0xc0, 0xf7, 0x69, 0x99, 0xa7, 0xd3, 0x41, 0x51, 0x5e, + 0x20, 0x63, 0xde, 0x7c, 0x2e, 0x3a, 0x6a, 0x70, 0xb8, 0x4d, 0x01, 0xce, + 0xc2, 0xd4, 0xc1, 0xab, 0x72, 0x82, 0x49, 0x6f, 0xc1, 0xd4, 0x5f, 0xbb, + 0xa3, 0xab, 0x25, 0x9a, 0x3f, 0x4c, 0xa6, 0x79, 0xf3, 0x3c, 0x57, 0xbc, + 0x17, 0xe3, 0xbc, 0xb2, 0x03, 0x34, 0xe8, 0x7f, 0x3e, 0xa9, 0xe2, 0x0b, + 0x10, 0x9b, 0x98, 0x53, 0xb0, 0x0f, 0x92, 0xf8, 0xeb, 0x8e, 0x0c, 0x4c, + 0xe1, 0xf6, 0xfa, 0xa8, 0xb8, 0xb9, 0x90, 0x3d, 0x1e, 0x9f, 0xbe, 0x60, + 0xb6, 0x78, 0x7c, 0xfa, 0xfa, 0x4c, 0x02, 0x24, 0xaf, 0x8b, 0x9a, 0x49, + 0xc5, 0xd3, 0x4a, 0x6e, 0x0c, 0x73, 0xbf, 0x46, 0xcf, 0x93, 0xa6, 0x4b, + 0x59, 0x7e, 0xc7, 0x15, 0x83, 0xe2, 0xd6, 0xc2, 0xb1, 0xdf, 0x7d, 0x77, + 0x70, 0x7e, 0xf4, 0xc3, 0xc1, 0x3f, 0x42, 0x30, 0x88, 0x57, 0x59, 0x59, + 0xe4, 0x14, 0x9a, 0x84, 0xbd, 0x2e, 0x33, 0xe6, 0x42, 0xc8, 0xf7, 0x40, + 0x75, 0x2c, 0x4a, 0x0e, 0x3e, 0xfc, 0xbf, 0x9b, 0x03, 0xfc, 0xca, 0x4d, + 0x5d, 0x3a, 0x89, 0xc5, 0xcb, 0x62, 0x1a, 0xe8, 0x95, 0x4d, 0xfe, 0x3e, + 0x79, 0x0c, 0xb5, 0x12, 0x4e, 0xa7, 0x0d, 0x65, 0x84, 0xa2, 0x47, 0x91, + 0xa8, 0x36, 0xa2, 0x96, 0xd2, 0xbc, 0x09, 0x79, 0x31, 0x4e, 0x45, 0xa2, + 0xeb, 0x28, 0x8d, 0x18, 0x75, 0xc4, 0xae, 0xd2, 0x20, 0x10, 0x04, 0x3b, + 0x89, 0xe8, 0x58, 0xe1, 0x54, 0x69, 0x50, 0xe4, 0x07, 0x7b, 0xcf, 0xb6, + 0x9e, 0x6d, 0x61, 0x80, 0x96, 0x9a, 0xc4, 0x29, 0x4f, 0x20, 0xcc, 0x53, + 0x62, 0x0b, 0x2b, 0x73, 0x05, 0xf7, 0xbc, 0x83, 0x93, 0x45, 0xf8, 0x08, + 0xfc, 0x74, 0x98, 0x4c, 0x6e, 0x86, 0x69, 0x76, 0x91, 0x5c, 0x8c, 0x1f, + 0xe7, 0xb3, 0x3c, 0xdf, 0xc9, 0x6e, 0xaa, 0x9d, 0xc9, 0xee, 0xb8, 0x28, + 0x8b, 0xa7, 0x37, 0xc0, 0xb3, 0xae, 0x6e, 0xca, 0x9d, 0xd9, 0x6f, 0x49, + 0x79, 0x9d, 0x8d, 0x2f, 0x92, 0x71, 0x72, 0x3d, 0x4b, 0x10, 0x3c, 0xea, + 0x66, 0x3c, 0xfc, 0x2d, 0x0b, 0xe0, 0xed, 0x95, 0x5c, 0xb8, 0x49, 0xdd, + 0x18, 0x45, 0x0b, 0xa0, 0x2d, 0x93, 0xa5, 0x00, 0xc9, 0x50, 0x6b, 0x6d, + 0x2b, 0x6d, 0xfd, 0x2f, 0x50, 0x8a, 0xc7, 0xf5, 0x0d, 0x2e, 0x80, 0xa5, + 0x2c, 0x86, 0x83, 0xac, 0xd8, 0xe4, 0xd1, 0xf4, 0x9b, 0x62, 0x22, 0x9f, + 0xb4, 0xdc, 0xec, 0x54, 0x2f, 0xe4, 0xf0, 0x0a, 0xf6, 0xbe, 0x5e, 0x14, + 0x06, 0x90, 0x9d, 0x0b, 0x1b, 0x74, 0x6f, 0xe8, 0xa1, 0xee, 0x12, 0xbc, + 0xe4, 0x3a, 0xd1, 0x7a, 0x6d, 0x4a, 0x1a, 0x95, 0x2c, 0x72, 0xca, 0xe2, + 0x5c, 0x54, 0xb5, 0x4b, 0x49, 0x16, 0x8e, 0x67, 0x22, 0x45, 0xbb, 0xd3, + 0xc2, 0x83, 0xf3, 0x04, 0x12, 0xd2, 0xad, 0x40, 0x4e, 0x88, 0x63, 0xb2, + 0xab, 0x9f, 0xc6, 0x2f, 0x31, 0x25, 0x60, 0x10, 0xfd, 0x80, 0x62, 0x55, + 0x16, 0x6a, 0x9e, 0x26, 0x0b, 0xd4, 0x43, 0x60, 0xa1, 0x55, 0xcf, 0x0b, + 0xf4, 0x5a, 0x64, 0xac, 0xfd, 0x21, 0x72, 0x95, 0xa3, 0x1a, 0x10, 0x76, + 0x20, 0xb6, 0x0c, 0x5e, 0x94, 0xb9, 0x56, 0x50, 0x33, 0xdc, 0xf4, 0x92, + 0xfe, 0xb4, 0xa4, 0xda, 0x37, 0xcc, 0x76, 0xea, 0xf4, 0x96, 0x20, 0xd9, + 0xc3, 0x4d, 0x46, 0x3c, 0x1e, 0x2a, 0xb3, 0xa6, 0x94, 0x04, 0x91, 0x76, + 0xfe, 0xea, 0x2c, 0x5e, 0x98, 0x01, 0xeb, 0xe5, 0x4a, 0x5a, 0xe2, 0x08, + 0x8c, 0x8f, 0x5a, 0x33, 0xcc, 0x0f, 0xb2, 0x09, 0x06, 0x00, 0x51, 0x08, + 0x56, 0xb8, 0x0b, 0xed, 0xa4, 0xee, 0xac, 0x06, 0x2a, 0x95, 0x32, 0x48, + 0x2d, 0x62, 0x72, 0x4e, 0xb6, 0x47, 0x27, 0x82, 0x25, 0x26, 0xbd, 0xd6, + 0x91, 0x70, 0x52, 0x48, 0x6b, 0x38, 0x3a, 0x77, 0xba, 0x12, 0xb8, 0x6b, + 0x02, 0x72, 0xe5, 0xc6, 0xc4, 0x70, 0x97, 0x06, 0x88, 0x29, 0x9f, 0x57, + 0x04, 0x7f, 0xc8, 0x2e, 0x10, 0xc4, 0x59, 0x47, 0x8c, 0xb2, 0x76, 0xac, + 0x87, 0x26, 0x47, 0x95, 0x10, 0xb9, 0x55, 0x65, 0x7f, 0x84, 0xeb, 0xd9, + 0x6b, 0x12, 0x36, 0x8e, 0x42, 0xac, 0x6a, 0x50, 0xa7, 0xa3, 0xcb, 0x4d, + 0x4a, 0x0d, 0xf5, 0x92, 0xe8, 0xf2, 0x51, 0xba, 0x89, 0x2f, 0x28, 0x3b, + 0xdb, 0xfc, 0x83, 0xcc, 0x10, 0x5f, 0x55, 0xb1, 0x19, 0x39, 0x8c, 0xb9, + 0xd5, 0xb8, 0xfc, 0xbf, 0x7f, 0xe9, 0x8a, 0xc7, 0x7b, 0x5a, 0xf2, 0x4b, + 0x39, 0x4f, 0xb7, 0x1c, 0xb3, 0xa5, 0x92, 0xa4, 0xcf, 0xbd, 0x62, 0xfc, + 0xc5, 0x7c, 0x81, 0x21, 0x37, 0x07, 0x90, 0xab, 0x99, 0xd8, 0xfb, 0x88, + 0x34, 0xdc, 0xf9, 0xd5, 0xa3, 0x25, 0xd1, 0xa7, 0xda, 0xcb, 0x6e, 0x6a, + 0x21, 0x1d, 0x52, 0x2c, 0x83, 0x48, 0x11, 0x4d, 0x46, 0x2a, 0xc7, 0xe8, + 0x34, 0x78, 0xfa, 0x8d, 0xe8, 0x97, 0xf2, 0x6c, 0x8c, 0xe5, 0x21, 0xb4, + 0xdf, 0x32, 0x65, 0xdc, 0x2c, 0xf5, 0x13, 0xc4, 0x39, 0x68, 0xd8, 0x07, + 0x08, 0x73, 0x84, 0x82, 0x11, 0x4e, 0xf0, 0xa1, 0x33, 0xad, 0xf7, 0x89, + 0x7c, 0x9b, 0x5b, 0xcb, 0x66, 0x7e, 0xb6, 0xea, 0xd1, 0x3c, 0xf9, 0x14, + 0x47, 0xf3, 0x68, 0xd9, 0xd1, 0x98, 0xa5, 0x7e, 0x9a, 0xa3, 0x79, 0xb2, + 0x6a, 0x7e, 0xef, 0x9d, 0x0e, 0xe7, 0x8e, 0x19, 0xd7, 0x86, 0xec, 0x5c, + 0xcd, 0xf0, 0xd7, 0x0a, 0xc6, 0xd8, 0x47, 0x66, 0xf7, 0x75, 0x37, 0x82, + 0x5d, 0xd5, 0xc2, 0x1b, 0xfe, 0xcf, 0xb3, 0x93, 0xd7, 0x82, 0xdf, 0x8e, + 0xba, 0x11, 0xc1, 0xb9, 0xbb, 0x49, 0x75, 0x21, 0xc7, 0x03, 0xfb, 0xb6, + 0xb5, 0xc1, 0x8a, 0xce, 0x2c, 0xfd, 0xd1, 0x04, 0x50, 0xf4, 0xb2, 0x28, + 0xeb, 0xd1, 0x82, 0x4f, 0x6d, 0x6e, 0x81, 0x0f, 0x08, 0x11, 0xc2, 0xd3, + 0xe1, 0xca, 0xd4, 0xd4, 0x40, 0xfb, 0x5a, 0x84, 0x40, 0x96, 0xff, 0x94, + 0x94, 0x17, 0xbf, 0xf8, 0xbf, 0x93, 0x7a, 0xf8, 0x9e, 0xc6, 0x79, 0xce, + 0x6f, 0xe6, 0xe9, 0x1e, 0x42, 0xce, 0x4f, 0xc5, 0xd1, 0xb2, 0x89, 0x8b, + 0xeb, 0x75, 0xbf, 0x78, 0x40, 0xe0, 0x90, 0xa1, 0x57, 0x82, 0x3a, 0x11, + 0x97, 0x41, 0x35, 0x1c, 0x89, 0xc6, 0x0b, 0x46, 0x08, 0x28, 0xc4, 0xd1, + 0x0c, 0x04, 0xff, 0x08, 0x8f, 0x33, 0xa2, 0x5d, 0xf6, 0x00, 0x47, 0xed, + 0x8b, 0xd5, 0x0d, 0x18, 0x3a, 0x1f, 0xf0, 0x05, 0x09, 0x5b, 0x05, 0x21, + 0x18, 0x59, 0xbf, 0x21, 0xd8, 0x68, 0x0b, 0xe5, 0x60, 0x0a, 0x33, 0x19, + 0x19, 0x3d, 0xfa, 0xa6, 0xaf, 0x38, 0x55, 0x6e, 0x1b, 0xec, 0x24, 0x04, + 0xa9, 0x46, 0x1e, 0x40, 0xee, 0x4f, 0xee, 0x60, 0x43, 0xa0, 0x43, 0x82, + 0x54, 0x71, 0xd3, 0xfc, 0x1b, 0x7e, 0x5e, 0x81, 0xf8, 0x5f, 0x8f, 0x37, + 0xba, 0x40, 0xa1, 0xa8, 0x6f, 0xa4, 0xb9, 0xf1, 0xfe, 0x78, 0x8a, 0x52, + 0x72, 0x5a, 0x70, 0xe5, 0x9f, 0xfd, 0x45, 0xd2, 0x55, 0x33, 0x38, 0x8e, + 0xd6, 0x26, 0x45, 0x31, 0x4c, 0xca, 0x35, 0xd1, 0x9b, 0x09, 0x00, 0x47, + 0x3a, 0x7a, 0xab, 0xbb, 0x82, 0xe8, 0xee, 0x1b, 0x7e, 0x2e, 0x92, 0x48, + 0x5b, 0xe6, 0x99, 0x1c, 0x6c, 0xaf, 0x74, 0xad, 0xaa, 0x4f, 0x1c, 0x4a, + 0xc7, 0x8a, 0xef, 0x5a, 0x4c, 0x36, 0x63, 0xcf, 0x34, 0xa5, 0xa6, 0x8d, + 0x52, 0x4d, 0x3d, 0x20, 0xd0, 0x2b, 0x83, 0xa6, 0x87, 0x0e, 0xcb, 0x7e, + 0xc0, 0x60, 0x41, 0x56, 0x98, 0x71, 0x58, 0x9d, 0x57, 0x33, 0xcf, 0x10, + 0x26, 0x94, 0xf4, 0xed, 0x11, 0x0c, 0x07, 0x02, 0x97, 0x81, 0x8d, 0x24, + 0x85, 0xc4, 0xf4, 0x00, 0x1e, 0x7a, 0xb1, 0x0a, 0x72, 0x07, 0x0b, 0x1c, + 0x63, 0x10, 0x35, 0x5b, 0x63, 0x28, 0xee, 0x37, 0x54, 0xa9, 0xad, 0x46, + 0x93, 0x56, 0xc3, 0xe3, 0x54, 0x7d, 0x40, 0x0e, 0xca, 0x44, 0x5b, 0x83, + 0xc6, 0x4f, 0x47, 0xc9, 0xed, 0x21, 0x53, 0xf0, 0xe6, 0x7d, 0x3a, 0x4c, + 0x0a, 0x1e, 0x7f, 0xed, 0x5f, 0x51, 0x6f, 0x5c, 0x66, 0xf9, 0xfb, 0xde, + 0x5e, 0xd4, 0x1b, 0x15, 0xc0, 0xb8, 0x7b, 0xd1, 0xbf, 0xd7, 0x56, 0x68, + 0xa1, 0xd0, 0x1e, 0x65, 0xcd, 0xfc, 0xec, 0x23, 0xc6, 0xfb, 0x06, 0x31, + 0xe2, 0x12, 0xf4, 0x21, 0xae, 0xfa, 0x62, 0x1c, 0x54, 0xa9, 0xf6, 0x23, + 0xfc, 0x6d, 0xc8, 0xa5, 0xe1, 0x7a, 0x07, 0x9c, 0x16, 0x24, 0xd2, 0xf4, + 0x10, 0x7f, 0x52, 0x26, 0xd7, 0x4d, 0x89, 0xd2, 0x90, 0xf7, 0x9d, 0xc5, + 0x22, 0x9c, 0x79, 0xf0, 0x82, 0x52, 0x56, 0xc9, 0x79, 0x46, 0x43, 0x1a, + 0xec, 0x49, 0xfe, 0xe7, 0x39, 0x01, 0x64, 0x10, 0xfa, 0x5c, 0xcc, 0x61, + 0xe9, 0xe6, 0x70, 0x6e, 0xc5, 0x71, 0x13, 0x5f, 0xf5, 0x57, 0x7c, 0xf3, + 0xd7, 0x45, 0xfe, 0x3e, 0x06, 0xe1, 0x8f, 0x91, 0xc6, 0x58, 0x62, 0x94, + 0x61, 0x29, 0xf5, 0x83, 0xe9, 0x7c, 0xe7, 0x54, 0xdb, 0xd2, 0xed, 0x95, + 0xd7, 0x94, 0x73, 0x70, 0x9e, 0x8f, 0x96, 0x0e, 0x77, 0x65, 0xb1, 0x49, + 0xc8, 0x09, 0x5b, 0xd2, 0x57, 0x23, 0xac, 0xc5, 0xc0, 0x72, 0xce, 0x9e, + 0xac, 0x44, 0x87, 0xec, 0xc9, 0xb6, 0xb9, 0xe0, 0x75, 0xc1, 0x08, 0x36, + 0xc1, 0x9d, 0xa1, 0x8f, 0x22, 0x4f, 0xaf, 0x23, 0x1d, 0x04, 0xfd, 0x17, + 0xc8, 0x96, 0xa9, 0x2b, 0xd4, 0xcd, 0x3c, 0x43, 0xdb, 0x70, 0x58, 0x16, + 0xd7, 0x15, 0x81, 0xc2, 0xc8, 0xbc, 0x1e, 0x30, 0x6a, 0x63, 0x01, 0x82, + 0x6e, 0x83, 0x48, 0x5b, 0xc4, 0x05, 0xa6, 0x05, 0xde, 0x22, 0x4c, 0x06, + 0x58, 0xa6, 0xe2, 0x74, 0xee, 0xec, 0x32, 0x95, 0xe7, 0x1e, 0x91, 0xf9, + 0xd0, 0x14, 0xab, 0xaa, 0x4c, 0xc1, 0x65, 0xc6, 0x43, 0xdd, 0x80, 0xd5, + 0x0b, 0x57, 0x87, 0xdc, 0x43, 0x02, 0xdf, 0x66, 0x0a, 0x1d, 0xd9, 0x1f, + 0xc4, 0xbf, 0x26, 0x2e, 0x60, 0x4b, 0xfc, 0x3e, 0x85, 0x3b, 0x3a, 0x05, + 0x7a, 0x61, 0xe0, 0xf7, 0xfd, 0x8e, 0xb6, 0x11, 0x8d, 0xcc, 0x8a, 0x4a, + 0x7b, 0xdf, 0x71, 0x99, 0xb4, 0x1b, 0xcb, 0x24, 0xaf, 0x29, 0x93, 0x25, + 0x76, 0xf6, 0x8c, 0x32, 0x2c, 0x4a, 0x5e, 0xce, 0x9c, 0x23, 0xb3, 0x04, + 0x34, 0xe2, 0x86, 0x36, 0xc8, 0xc2, 0xc1, 0x62, 0x07, 0xb7, 0xdb, 0x56, + 0x69, 0xb7, 0x86, 0x6b, 0x8f, 0x40, 0x88, 0x91, 0x59, 0xe5, 0x00, 0xfc, + 0xf3, 0x59, 0xe2, 0x13, 0x85, 0xf1, 0x7e, 0x23, 0x54, 0xc8, 0x0d, 0x88, + 0xc0, 0x99, 0x0f, 0xef, 0x0e, 0xd6, 0x2a, 0xe7, 0xde, 0xe1, 0x2a, 0xce, + 0x0f, 0x4f, 0xdf, 0xfd, 0xf5, 0xe8, 0xe8, 0xf4, 0xf8, 0xf9, 0xcb, 0x23, + 0x09, 0x87, 0x98, 0x1f, 0xbd, 0x3e, 0xff, 0xfb, 0x4b, 0x20, 0xd9, 0x62, + 0xf4, 0x1e, 0x6b, 0x64, 0x45, 0x53, 0x6b, 0xdf, 0x5e, 0x34, 0xcd, 0x71, + 0x38, 0xf2, 0xf0, 0xf6, 0x61, 0x6b, 0x46, 0xe8, 0xe5, 0x3b, 0x38, 0xfe, + 0xb1, 0x1f, 0x7d, 0x7f, 0x1a, 0xbf, 0xfd, 0x51, 0x06, 0x45, 0xc1, 0xb9, + 0x81, 0x4d, 0x43, 0xff, 0xaa, 0x9f, 0x53, 0x11, 0x94, 0x61, 0x30, 0xa6, + 0x2f, 0xc5, 0x10, 0xd8, 0x04, 0x98, 0xbb, 0x6b, 0x60, 0x67, 0xc0, 0xb4, + 0xa6, 0xe6, 0xdf, 0x65, 0xf1, 0x3e, 0xcd, 0xb5, 0x85, 0x02, 0x67, 0x12, + 0x8f, 0xa7, 0xe9, 0x92, 0xa6, 0x16, 0x82, 0x3c, 0xee, 0x76, 0xd8, 0x20, + 0x7d, 0xcd, 0xee, 0xab, 0x1e, 0x8d, 0xc6, 0x59, 0x11, 0x87, 0x7c, 0x9a, + 0x94, 0x61, 0xb7, 0x63, 0xa3, 0x3b, 0x04, 0x35, 0xa6, 0x23, 0x6e, 0x7b, + 0x72, 0x06, 0x6f, 0x11, 0x68, 0xa8, 0xa0, 0x08, 0x91, 0x56, 0x37, 0x9b, + 0x91, 0xd1, 0xf3, 0x25, 0x2a, 0x56, 0xdb, 0x5b, 0xcb, 0xd2, 0x2a, 0xbd, + 0xf6, 0x97, 0x74, 0x03, 0xed, 0x1a, 0xbb, 0x70, 0xb3, 0xb1, 0x69, 0x53, + 0xee, 0x20, 0xe7, 0x50, 0x9a, 0x09, 0x0f, 0xe9, 0xf6, 0x8d, 0x78, 0xb2, + 0x15, 0x69, 0x4f, 0x91, 0xa0, 0xcb, 0xbc, 0x75, 0x53, 0x5c, 0x9f, 0x83, + 0x85, 0x7a, 0x13, 0xaf, 0x03, 0x6f, 0x03, 0xf9, 0x1d, 0x1e, 0x1a, 0xe6, + 0xbb, 0xb5, 0x8c, 0x9d, 0x55, 0xdd, 0xe7, 0x8d, 0x2d, 0x23, 0xee, 0xd0, + 0x68, 0xfd, 0xd0, 0xe4, 0x0d, 0x37, 0x71, 0x0d, 0x56, 0x43, 0xb4, 0x8f, + 0x7f, 0x7e, 0x1d, 0xc8, 0x74, 0xd8, 0xa0, 0x8c, 0x95, 0x2b, 0x0c, 0x55, + 0xc3, 0xc3, 0xac, 0x3c, 0xe3, 0xb3, 0x03, 0xe3, 0x6b, 0x17, 0xb8, 0x04, + 0x1c, 0x85, 0x30, 0x4b, 0x69, 0x54, 0xdc, 0x39, 0xdf, 0xfd, 0x8d, 0x3b, + 0x39, 0x77, 0x46, 0xcb, 0x80, 0x2c, 0x9f, 0x1f, 0xbd, 0xe9, 0x47, 0xa7, + 0x47, 0xaf, 0xd8, 0xd8, 0x3d, 0x7a, 0xfd, 0x1d, 0x09, 0x01, 0xcd, 0x2a, + 0x24, 0x30, 0x0c, 0x34, 0x00, 0xc0, 0x0a, 0x0e, 0x62, 0xc8, 0xd3, 0x79, + 0xc3, 0xeb, 0x64, 0x71, 0x54, 0xd5, 0x62, 0xd6, 0x89, 0xe1, 0x6e, 0xbe, + 0xf5, 0x73, 0x20, 0xef, 0x98, 0xc9, 0xe1, 0x73, 0x65, 0x87, 0xc8, 0xa4, + 0x5a, 0xed, 0x64, 0x11, 0xb8, 0xa6, 0x79, 0x7a, 0xd1, 0x3e, 0xfc, 0xf1, + 0x75, 0x30, 0x43, 0xe5, 0xec, 0xfb, 0x0d, 0xff, 0xe8, 0x24, 0x60, 0xd7, + 0x00, 0x82, 0x95, 0xbd, 0xe0, 0xd3, 0x9b, 0xfb, 0xb9, 0x19, 0xf6, 0xb8, + 0x24, 0xe3, 0xc3, 0x24, 0x06, 0x33, 0x8a, 0x23, 0x66, 0x0a, 0xc0, 0x6c, + 0x7d, 0xbc, 0xb0, 0xb9, 0x86, 0x52, 0xf8, 0x60, 0xe8, 0xf3, 0x3d, 0x1f, + 0x23, 0xe5, 0x7a, 0xf0, 0x05, 0xb2, 0xe0, 0x6f, 0xa8, 0x42, 0x8f, 0xb3, + 0x31, 0x15, 0xd9, 0x51, 0xd0, 0x9f, 0xba, 0x52, 0xec, 0x45, 0xd1, 0xda, + 0xff, 0xbb, 0x89, 0xf1, 0xfc, 0xcd, 0x6c, 0xfc, 0xae, 0xac, 0x92, 0xb5, + 0xb6, 0x51, 0xe1, 0xfc, 0x7a, 0x8c, 0xbf, 0x8e, 0xd6, 0x06, 0xe6, 0x51, + 0xf9, 0x3b, 0xfe, 0x7c, 0x19, 0xac, 0x09, 0x27, 0x08, 0x6a, 0x63, 0x9a, + 0x13, 0x60, 0x60, 0x67, 0x67, 0x2f, 0x31, 0x85, 0xb0, 0x4c, 0x30, 0x73, + 0x40, 0x85, 0x55, 0x9a, 0x5f, 0xa0, 0x4b, 0x3c, 0x9a, 0xbf, 0x1f, 0x55, + 0xdb, 0xdb, 0xbe, 0x93, 0xd1, 0x64, 0x96, 0x9b, 0x26, 0x43, 0xa7, 0x7f, + 0x3d, 0x3c, 0xfb, 0xc3, 0xf6, 0x36, 0x35, 0xba, 0x5a, 0xc7, 0xc6, 0x3b, + 0x4f, 0x1f, 0x6f, 0xef, 0x6c, 0x84, 0xa2, 0x94, 0x1e, 0xfa, 0x2e, 0xba, + 0x71, 0x93, 0xa8, 0x71, 0x5b, 0x08, 0xdf, 0x4f, 0x1a, 0xeb, 0x99, 0xa1, + 0xc7, 0x29, 0x62, 0xcc, 0x63, 0xcc, 0x45, 0x20, 0x93, 0x08, 0x7a, 0xbf, + 0x3d, 0x1c, 0x09, 0x27, 0xd2, 0x69, 0x7a, 0xbc, 0xfa, 0xbd, 0x1e, 0x31, + 0x6c, 0xd3, 0x1a, 0x8c, 0xd2, 0x00, 0x18, 0x7e, 0x42, 0x47, 0xc6, 0x55, + 0xcb, 0xe5, 0x6b, 0xeb, 0x4d, 0xee, 0x23, 0xcd, 0x56, 0x08, 0x7d, 0x45, + 0xb1, 0xa5, 0x7c, 0xb8, 0x58, 0xb6, 0xcc, 0xda, 0x8f, 0x78, 0xad, 0xbc, + 0x1c, 0x36, 0x59, 0x53, 0x8f, 0x09, 0x28, 0xe7, 0x0c, 0x35, 0x73, 0x43, + 0x75, 0xfb, 0x9d, 0x4b, 0xe4, 0x6a, 0xf8, 0x3e, 0xf3, 0x85, 0x97, 0x7b, + 0xc0, 0x47, 0xc2, 0xc3, 0x05, 0x99, 0x43, 0x98, 0x10, 0xce, 0x38, 0xa6, + 0x4f, 0x60, 0x95, 0x94, 0xe1, 0x8c, 0x74, 0xae, 0x2d, 0x53, 0x6b, 0xcd, + 0x7f, 0xea, 0xac, 0x1f, 0xe1, 0x6c, 0x4c, 0x4e, 0x86, 0xc2, 0x0b, 0x69, + 0x73, 0x3a, 0xd6, 0xa5, 0x90, 0x32, 0xad, 0x47, 0x1b, 0x28, 0x97, 0x31, + 0x5b, 0x50, 0x71, 0x9c, 0x3c, 0x43, 0x85, 0xc2, 0x14, 0x6c, 0x09, 0x5b, + 0x52, 0xe0, 0x40, 0xb4, 0x34, 0xb1, 0x6e, 0xe7, 0x10, 0xc1, 0x03, 0xb0, + 0x4a, 0xbe, 0x42, 0xc1, 0x83, 0xdb, 0x61, 0x5e, 0xe0, 0x80, 0x6b, 0xb5, + 0xf2, 0x98, 0xba, 0xc4, 0xe3, 0xcd, 0xca, 0xac, 0xf3, 0x5e, 0xcc, 0x92, + 0x72, 0x20, 0xdc, 0x24, 0xa9, 0x8f, 0x61, 0x98, 0x4c, 0x31, 0x24, 0x06, + 0x8f, 0xfa, 0x32, 0x78, 0x83, 0x89, 0x96, 0xc3, 0x68, 0x9f, 0x50, 0xc8, + 0xc3, 0x6d, 0xa0, 0xa3, 0x23, 0x82, 0x7f, 0x02, 0x95, 0xad, 0x04, 0xd5, + 0xa9, 0xa8, 0x5a, 0x8d, 0x50, 0x35, 0xd7, 0x85, 0xf5, 0x2b, 0x1a, 0x47, + 0x1b, 0x0d, 0x79, 0xc1, 0x10, 0xb8, 0x6b, 0x42, 0xcf, 0xd6, 0x3b, 0x25, + 0xe8, 0xe0, 0x6b, 0xd4, 0x92, 0x15, 0x39, 0x16, 0xa2, 0xfd, 0xe2, 0x7f, + 0xa9, 0x43, 0xdc, 0x98, 0x23, 0x62, 0x6b, 0x7d, 0xff, 0x28, 0xd7, 0x84, + 0x1e, 0xd6, 0x40, 0x12, 0xf3, 0x68, 0xc8, 0xce, 0xd1, 0x9f, 0x93, 0xc8, + 0x32, 0x04, 0xca, 0x5c, 0xaa, 0xd1, 0x68, 0x26, 0x85, 0x46, 0xab, 0x3c, + 0xdf, 0x8c, 0x19, 0x6e, 0x99, 0x92, 0xc5, 0xbb, 0xf5, 0xbb, 0xd0, 0x00, + 0x4e, 0xc4, 0x6d, 0x6a, 0xef, 0x86, 0x03, 0x66, 0xbc, 0x03, 0x29, 0xf6, + 0x29, 0x34, 0x27, 0xc3, 0x7d, 0x52, 0x65, 0xbc, 0x87, 0xab, 0x75, 0x50, + 0x62, 0x70, 0x09, 0x49, 0x5f, 0xd8, 0x0f, 0xf5, 0x19, 0x38, 0xa0, 0x3e, + 0xa0, 0xcd, 0x02, 0xcc, 0x82, 0x2b, 0x03, 0xb1, 0x25, 0x22, 0xfa, 0x32, + 0x1a, 0xd0, 0x98, 0xec, 0x3f, 0x13, 0xb3, 0xc1, 0x77, 0x3a, 0x12, 0x5e, + 0x8f, 0x4c, 0x18, 0x73, 0xb8, 0x31, 0x3a, 0x44, 0x2b, 0x05, 0xd3, 0x03, + 0xa9, 0xdd, 0xa2, 0xe9, 0x45, 0xe5, 0x62, 0x81, 0xd1, 0x77, 0x07, 0xc0, + 0xe5, 0x48, 0xba, 0xc1, 0xde, 0xc0, 0x89, 0xa5, 0xdc, 0x2b, 0x4a, 0x61, + 0xd7, 0x4b, 0x5d, 0x51, 0x2c, 0x60, 0x9d, 0x9a, 0x55, 0x84, 0xa3, 0xfc, + 0xc7, 0x2d, 0x3d, 0x7b, 0x04, 0xe2, 0x5f, 0xfb, 0x98, 0x4b, 0x53, 0x20, + 0x16, 0x7a, 0x43, 0xd7, 0x11, 0xaf, 0x40, 0xd1, 0x01, 0x6c, 0xaf, 0x82, + 0x8c, 0x00, 0x30, 0xde, 0xc3, 0xf4, 0xa8, 0x9b, 0x7e, 0x17, 0x9a, 0x64, + 0xc8, 0xde, 0x87, 0xcc, 0x72, 0x31, 0x6d, 0xea, 0xa8, 0xd3, 0xcc, 0x60, + 0xf4, 0x20, 0xb9, 0xc7, 0x31, 0x35, 0xb6, 0x8a, 0x49, 0xc1, 0xda, 0x87, + 0x3d, 0x4a, 0xc7, 0x9d, 0x59, 0x2e, 0x0c, 0x66, 0x9a, 0x7c, 0xc8, 0x66, + 0x8b, 0x99, 0xed, 0xe4, 0x8c, 0xcd, 0x12, 0x6a, 0x86, 0x87, 0x22, 0xe7, + 0xb4, 0x1b, 0x8d, 0x8a, 0x03, 0xe5, 0xc3, 0xd4, 0x84, 0x49, 0x6b, 0x2f, + 0xd8, 0x36, 0x67, 0x5f, 0x57, 0x35, 0x68, 0xa2, 0x18, 0xf2, 0x55, 0xc6, + 0x1a, 0x95, 0x8c, 0xd3, 0x12, 0x28, 0x47, 0x2a, 0xf1, 0x32, 0x3a, 0xb8, + 0x2f, 0xd7, 0x3c, 0x13, 0xbe, 0x4b, 0x0b, 0xe1, 0xfc, 0x0f, 0x4c, 0xda, + 0x27, 0xaa, 0x32, 0x6b, 0x25, 0xd6, 0x64, 0xaa, 0xa9, 0xf1, 0x77, 0x3e, + 0xdb, 0xc4, 0x7e, 0xd6, 0x43, 0x18, 0xe9, 0x3a, 0x1b, 0xd7, 0x97, 0x03, + 0x4c, 0xc8, 0xa7, 0x04, 0x9c, 0xac, 0xa6, 0xda, 0x30, 0x6e, 0xbe, 0x80, + 0xb5, 0xb4, 0x81, 0x46, 0xc1, 0xe1, 0x6e, 0x8a, 0xec, 0x3d, 0xa3, 0xbd, + 0x8d, 0x18, 0x6d, 0x01, 0x01, 0xed, 0x49, 0xb3, 0xa2, 0xa2, 0x97, 0x4d, + 0x36, 0x13, 0xfb, 0x0a, 0xf6, 0x98, 0xc0, 0xc5, 0x9f, 0x4c, 0xb2, 0x0f, + 0x3e, 0xd5, 0x68, 0x7f, 0xdf, 0x81, 0x5e, 0x71, 0xbc, 0x8a, 0x6b, 0xef, + 0xd7, 0x50, 0x57, 0x58, 0xfb, 0xeb, 0x1a, 0xc6, 0xf8, 0x73, 0x71, 0xa5, + 0x88, 0xed, 0x8d, 0x5a, 0xd6, 0xfb, 0x0c, 0x6e, 0x06, 0x4e, 0xe4, 0x71, + 0xe1, 0xd9, 0x1a, 0x43, 0xbf, 0xaf, 0xbd, 0x5a, 0xb3, 0xde, 0xbb, 0x19, + 0x70, 0x34, 0x7e, 0x1c, 0x8d, 0x2d, 0xb8, 0xc7, 0x6b, 0x17, 0x3c, 0xc1, + 0x77, 0xce, 0x43, 0xdd, 0x15, 0x3c, 0xf4, 0xcd, 0xfc, 0x01, 0xf0, 0xe8, + 0xfa, 0xfb, 0x7e, 0x04, 0xc6, 0xd6, 0x77, 0xfd, 0xe8, 0x1c, 0x0c, 0xa7, + 0x0d, 0xb2, 0xb6, 0xb6, 0xb7, 0x76, 0x1e, 0xc1, 0x0e, 0x13, 0xf4, 0x20, + 0xe5, 0xfd, 0x0a, 0xfd, 0xb6, 0x86, 0xdb, 0x7e, 0x8f, 0xbb, 0x85, 0x0f, + 0x0f, 0xac, 0xd7, 0x1a, 0xbb, 0x31, 0xfe, 0xb5, 0x1f, 0xed, 0xb2, 0xe7, + 0x74, 0xfb, 0xbb, 0xe0, 0x8e, 0x13, 0x41, 0x12, 0x61, 0x10, 0x6b, 0x2d, + 0x2e, 0xb2, 0x51, 0x64, 0x5c, 0x17, 0x09, 0x5e, 0xd7, 0x0b, 0x55, 0x43, + 0x0c, 0x65, 0xf0, 0xf1, 0x78, 0x45, 0xa2, 0x98, 0xdf, 0x49, 0x01, 0x08, + 0x29, 0x5e, 0xe2, 0x9c, 0xf1, 0x9a, 0x22, 0x69, 0x15, 0x26, 0x4a, 0x31, + 0x56, 0x45, 0x82, 0x38, 0x7d, 0x59, 0x41, 0xd0, 0x56, 0xc6, 0x21, 0x58, + 0xf9, 0x8a, 0x76, 0x97, 0x37, 0x80, 0x7a, 0x19, 0xe0, 0x35, 0x45, 0xba, + 0x24, 0xf5, 0xf3, 0x1f, 0x78, 0x5d, 0x69, 0x51, 0x7c, 0x43, 0x4d, 0xf7, + 0x5e, 0xee, 0x51, 0x2d, 0x2a, 0x69, 0x1d, 0x80, 0xb1, 0x9f, 0xa3, 0x3f, + 0x68, 0xac, 0x70, 0xf2, 0xd1, 0x8c, 0x72, 0xd0, 0x47, 0x65, 0x36, 0x27, + 0x27, 0xa5, 0x6c, 0x4f, 0x6c, 0xb6, 0x87, 0xab, 0x26, 0xa7, 0x60, 0x79, + 0xc0, 0xbd, 0xc0, 0xfc, 0x81, 0x80, 0x2f, 0x4c, 0x77, 0xcb, 0x5d, 0x8f, + 0xdd, 0xd6, 0x50, 0x40, 0x44, 0xd8, 0xa5, 0x61, 0x2d, 0x9f, 0xd0, 0x08, + 0xae, 0xba, 0xf9, 0xa5, 0x99, 0x7e, 0x1b, 0xa8, 0x66, 0x85, 0xa8, 0x41, + 0xf3, 0xcd, 0xad, 0xfb, 0xbe, 0xf9, 0x6a, 0x45, 0xfd, 0x11, 0x5f, 0xeb, + 0x07, 0x8e, 0x9e, 0x54, 0x8b, 0x1b, 0xfb, 0xd3, 0x96, 0x5f, 0x65, 0xda, + 0xa7, 0x89, 0xab, 0x3a, 0x88, 0x5a, 0x81, 0x39, 0xf5, 0xa7, 0x27, 0xa7, + 0xbb, 0x94, 0x5d, 0xbf, 0x21, 0x6a, 0x26, 0x79, 0xfe, 0xa7, 0x82, 0x0e, + 0x2a, 0xdd, 0xa2, 0x9c, 0xec, 0x75, 0xb6, 0xbb, 0xa9, 0xed, 0xb4, 0xef, + 0x68, 0xa5, 0x9e, 0x7c, 0x09, 0xc7, 0x0e, 0xb9, 0x8e, 0x15, 0x0b, 0x96, + 0x6c, 0x26, 0x57, 0x4a, 0x92, 0x96, 0x42, 0xeb, 0x96, 0x7f, 0x93, 0xfa, + 0x53, 0x79, 0x81, 0x2e, 0x94, 0x18, 0x15, 0xb7, 0x87, 0x19, 0x5d, 0x82, + 0xc8, 0x8f, 0xa9, 0x99, 0xb5, 0x02, 0xe4, 0x32, 0x50, 0x24, 0xb6, 0xbd, + 0x02, 0x52, 0xa7, 0xda, 0x00, 0x9b, 0x7c, 0xcf, 0x18, 0x81, 0x21, 0x67, + 0xa1, 0x34, 0x90, 0x76, 0x9e, 0xa5, 0x82, 0x2a, 0xa3, 0x13, 0xb0, 0xd2, + 0x6a, 0x00, 0xa3, 0x30, 0x4b, 0x10, 0xd9, 0xdb, 0xc4, 0x47, 0xe7, 0x9e, + 0x25, 0x8d, 0xc6, 0x5a, 0x24, 0x4f, 0x70, 0x6b, 0x1a, 0x2e, 0xbf, 0x51, + 0xb2, 0xe0, 0x2c, 0xf9, 0xe8, 0xf5, 0x4b, 0x8c, 0xe8, 0x1b, 0x9d, 0xca, + 0xe3, 0x25, 0x54, 0x6e, 0xc3, 0x40, 0xf8, 0xb6, 0xf4, 0xc4, 0x05, 0xc5, + 0x7b, 0x79, 0x7c, 0x76, 0xee, 0x51, 0x39, 0x36, 0x0a, 0xda, 0x03, 0x32, + 0xc1, 0xda, 0x03, 0xde, 0x04, 0x2d, 0xd6, 0xa4, 0x03, 0x8c, 0x38, 0xc7, + 0x83, 0x2b, 0x2d, 0xd9, 0x24, 0xcb, 0x4a, 0x5b, 0x0d, 0xe7, 0x2d, 0x02, + 0x17, 0xf9, 0x17, 0x0e, 0x7f, 0x48, 0x9b, 0x12, 0xad, 0xa9, 0xaa, 0x16, + 0xc3, 0x58, 0xf7, 0x2c, 0x13, 0xaf, 0x79, 0x75, 0x33, 0x1b, 0x16, 0x98, + 0x90, 0x08, 0xfa, 0xd8, 0x7b, 0x9f, 0x73, 0xad, 0x9f, 0x05, 0xa9, 0xe9, + 0xac, 0x79, 0x56, 0x06, 0xe3, 0x88, 0x29, 0xca, 0x21, 0xa2, 0x40, 0x34, + 0x5a, 0xe0, 0x17, 0xf0, 0xc8, 0xfa, 0x64, 0x44, 0x60, 0xc7, 0x16, 0xd4, + 0x06, 0xb5, 0xae, 0x75, 0x09, 0x85, 0x05, 0xaa, 0x36, 0xee, 0x4a, 0x61, + 0x44, 0x62, 0xad, 0x75, 0x7b, 0x29, 0x21, 0xc8, 0x52, 0x1b, 0x34, 0xd6, + 0x22, 0x31, 0xe1, 0x70, 0x15, 0x4b, 0x8c, 0x46, 0x05, 0xc4, 0xa5, 0x87, + 0x7b, 0x42, 0x28, 0xab, 0xc6, 0x4b, 0x16, 0xd8, 0x5b, 0xbc, 0xb4, 0xb2, + 0xb7, 0x65, 0x8a, 0x6e, 0xac, 0xab, 0x46, 0x66, 0xfd, 0x28, 0x4a, 0xa9, + 0x05, 0x08, 0x85, 0xe8, 0xf0, 0xd9, 0xd6, 0x36, 0x77, 0x5f, 0x5c, 0x24, + 0x33, 0xb7, 0x62, 0x76, 0x98, 0x5a, 0x94, 0x59, 0x97, 0x1c, 0xdf, 0x1c, + 0x9d, 0xbf, 0x31, 0xd7, 0x7a, 0x59, 0x2d, 0xb1, 0x7f, 0xcd, 0xed, 0xb6, + 0x57, 0xc0, 0xde, 0x28, 0x8c, 0x67, 0x96, 0x8d, 0xbd, 0x6d, 0xbc, 0xc4, + 0x81, 0xe4, 0x22, 0x8d, 0xb3, 0xb1, 0x62, 0xf4, 0x6a, 0x8c, 0x9f, 0x6f, + 0x08, 0x2e, 0x93, 0x2c, 0x04, 0xaa, 0xde, 0xa5, 0x96, 0x66, 0x5d, 0xb7, + 0x84, 0x23, 0x9a, 0x8d, 0x86, 0x0f, 0xf1, 0x8f, 0xdc, 0x5a, 0x40, 0x3a, + 0xa2, 0xb9, 0x36, 0x91, 0xe3, 0x19, 0xf3, 0x13, 0xf3, 0x2b, 0x6e, 0x42, + 0xf9, 0xf6, 0xf8, 0xf9, 0x4b, 0xb3, 0x59, 0xb2, 0x39, 0x04, 0x2e, 0x60, + 0x3e, 0x15, 0x5b, 0x7e, 0xa9, 0xd8, 0xe6, 0x33, 0xf1, 0x90, 0xdf, 0x17, + 0x79, 0xf6, 0x4f, 0x32, 0x03, 0xc8, 0xc2, 0x9e, 0x64, 0xa2, 0x35, 0x5f, + 0xda, 0xa2, 0x68, 0xea, 0xbe, 0x8a, 0xfd, 0x4b, 0x79, 0x1f, 0xb4, 0x61, + 0x16, 0x27, 0x98, 0x04, 0x1b, 0x7a, 0x2c, 0x8b, 0x56, 0x36, 0x25, 0x42, + 0x28, 0x44, 0xf9, 0x51, 0x85, 0x2b, 0x66, 0xe4, 0xd5, 0x2d, 0x18, 0x5d, + 0x92, 0x6f, 0x66, 0xc3, 0x5d, 0xda, 0xec, 0x14, 0x8d, 0x7f, 0xc3, 0x0f, + 0xfa, 0xe7, 0x02, 0x93, 0x7b, 0x49, 0x18, 0xba, 0x67, 0xda, 0x30, 0x66, + 0x30, 0x37, 0x35, 0x26, 0xa3, 0x79, 0x1f, 0x34, 0xe0, 0x4d, 0x6a, 0x8e, + 0xeb, 0x19, 0x34, 0x02, 0x3f, 0x6b, 0x01, 0x46, 0x25, 0xfd, 0x46, 0xe3, + 0x55, 0xa5, 0x34, 0xd5, 0x5d, 0x7f, 0xf1, 0xe6, 0xe4, 0x55, 0x7c, 0x7e, + 0xb2, 0x81, 0xb7, 0x81, 0x73, 0xd9, 0x71, 0xe8, 0x36, 0xd7, 0x92, 0x46, + 0xc7, 0x4e, 0xda, 0x7f, 0x13, 0xe0, 0x7d, 0xbd, 0xc2, 0x28, 0xdc, 0x6b, + 0xd3, 0x10, 0x88, 0x96, 0xa7, 0x6f, 0x0d, 0x6f, 0x3c, 0x26, 0x48, 0xd6, + 0x0f, 0x2a, 0xca, 0x70, 0x69, 0x46, 0x09, 0x9a, 0xd8, 0x5a, 0x8a, 0x87, + 0x74, 0x07, 0x5a, 0x52, 0x6d, 0xea, 0x04, 0x78, 0x9d, 0x68, 0xd0, 0x60, + 0x1b, 0x53, 0xaa, 0x56, 0xf6, 0x28, 0x19, 0xb8, 0x7c, 0x52, 0x96, 0xc5, + 0xb5, 0x6a, 0x82, 0x28, 0xaf, 0x80, 0x22, 0x6d, 0xbf, 0x5c, 0x27, 0xba, + 0x06, 0x83, 0x63, 0xb7, 0x29, 0xa0, 0x61, 0x58, 0x43, 0x47, 0xdc, 0xca, + 0xd9, 0xe3, 0xcf, 0x10, 0xda, 0x70, 0x66, 0x47, 0xd5, 0x2c, 0xde, 0xdd, + 0x5a, 0xb5, 0x33, 0xf9, 0x05, 0x75, 0x78, 0x04, 0x93, 0xa8, 0x98, 0x4c, + 0xda, 0xb4, 0x83, 0x9b, 0x10, 0x4b, 0xd2, 0x70, 0x07, 0xc4, 0xe6, 0x4b, + 0xd4, 0x02, 0xb0, 0x07, 0x8e, 0x7d, 0x83, 0x6b, 0x7d, 0x04, 0xa5, 0xc5, + 0x74, 0x6c, 0xbd, 0x94, 0xbc, 0xaf, 0x3f, 0x53, 0xb6, 0x5a, 0xfb, 0x0e, + 0x83, 0xe2, 0x4c, 0xd7, 0x1c, 0x73, 0x24, 0x4c, 0x0b, 0x1c, 0xc9, 0x51, + 0xc3, 0xbe, 0x5a, 0xc8, 0x55, 0xb4, 0x43, 0x4d, 0x84, 0xa8, 0xd1, 0xe7, + 0x0c, 0x80, 0x80, 0x2e, 0x1c, 0xfc, 0x4f, 0x00, 0xb0, 0x3f, 0xc3, 0xfe, + 0x5b, 0xe3, 0xc5, 0x88, 0x08, 0x07, 0xbd, 0xc9, 0x88, 0x24, 0x32, 0x2c, + 0xa9, 0x27, 0x96, 0xf0, 0x66, 0x1a, 0xda, 0xf6, 0xfe, 0xa1, 0x3c, 0xb7, + 0x60, 0x33, 0x59, 0x7c, 0x0e, 0x7e, 0xc1, 0xd1, 0x36, 0xd3, 0x54, 0x8e, + 0x8c, 0xe9, 0x96, 0x47, 0x12, 0xc5, 0x5c, 0xb4, 0xce, 0x0f, 0x66, 0x54, + 0x2f, 0xec, 0x07, 0x04, 0x6a, 0xe0, 0x34, 0xa6, 0xe6, 0x34, 0x61, 0x3f, + 0x0b, 0xa5, 0x36, 0x7e, 0x9b, 0x54, 0x20, 0x11, 0x9a, 0x23, 0x6e, 0x2c, + 0x45, 0x48, 0x68, 0x9f, 0xd2, 0xc3, 0x76, 0xaa, 0x6d, 0x8f, 0x7e, 0x1f, + 0xea, 0x6c, 0xac, 0x2e, 0x26, 0x27, 0x69, 0xb9, 0x87, 0x24, 0x40, 0x47, + 0xbe, 0x12, 0xa9, 0x2e, 0xb4, 0x55, 0x8e, 0x43, 0xa7, 0x0d, 0xca, 0xeb, + 0xa0, 0xd1, 0xe3, 0x89, 0x5b, 0xdd, 0x8c, 0x9d, 0x08, 0x09, 0xab, 0xc3, + 0x50, 0x98, 0x70, 0x4e, 0x74, 0x9b, 0x60, 0x62, 0x3e, 0xee, 0x19, 0x76, + 0x35, 0x0c, 0x48, 0xc1, 0x04, 0x74, 0x1c, 0xcc, 0x5e, 0x40, 0xbd, 0x55, + 0x27, 0x8d, 0xd6, 0x6d, 0x7b, 0x75, 0x81, 0xde, 0x79, 0x29, 0xbf, 0xda, + 0x33, 0xad, 0x99, 0x51, 0x78, 0xb6, 0x86, 0xdb, 0xfd, 0xf1, 0x47, 0xab, + 0x98, 0xa2, 0xd7, 0x70, 0xa3, 0xb3, 0xc4, 0x17, 0x48, 0xb4, 0x68, 0xa1, + 0x4e, 0xfa, 0xd5, 0x03, 0xa4, 0x88, 0x81, 0xda, 0xa5, 0x35, 0xea, 0xf4, + 0xd9, 0x9c, 0xcd, 0x50, 0x17, 0x17, 0x29, 0x8b, 0x57, 0x2e, 0xa8, 0x68, + 0xa2, 0x07, 0xc0, 0x0d, 0x8a, 0x8f, 0xfb, 0x5f, 0x84, 0xf2, 0x54, 0xfb, + 0x26, 0x8d, 0x8f, 0x53, 0x9f, 0xa6, 0xd3, 0xd6, 0x66, 0x71, 0xee, 0x20, + 0x98, 0xfe, 0x81, 0x7c, 0x21, 0x86, 0x3a, 0x6a, 0x5d, 0x8f, 0x4a, 0x3a, + 0x95, 0xd3, 0x77, 0x91, 0xec, 0xab, 0x28, 0x39, 0x18, 0x25, 0xfe, 0xa8, + 0x4c, 0xc5, 0xe7, 0x1e, 0x6a, 0x22, 0x4e, 0x1f, 0x98, 0xe5, 0x19, 0xfe, + 0x9e, 0x78, 0x04, 0x75, 0x7f, 0x48, 0x1c, 0xb6, 0x60, 0x37, 0xac, 0x75, + 0x54, 0xd4, 0x3c, 0xcb, 0x07, 0x1f, 0x37, 0x36, 0xd0, 0x45, 0x5a, 0x1b, + 0x05, 0xe6, 0xcf, 0x86, 0x36, 0x89, 0x51, 0xe1, 0x4e, 0x0f, 0x5a, 0xf9, + 0xd4, 0x78, 0xf2, 0xa1, 0x3c, 0x0f, 0x43, 0xe6, 0x98, 0x4d, 0x81, 0x10, + 0x52, 0x05, 0x76, 0xff, 0x23, 0x91, 0x74, 0x19, 0x50, 0xd2, 0x5e, 0x92, + 0x35, 0x2b, 0x1f, 0x86, 0x3d, 0xe7, 0x16, 0x98, 0xcc, 0x4a, 0xea, 0xb7, + 0xe5, 0x49, 0xc4, 0x8f, 0x38, 0x50, 0xcb, 0x2d, 0x35, 0xc5, 0xe1, 0xec, + 0xeb, 0xf7, 0x9c, 0x64, 0x40, 0x6f, 0x76, 0x36, 0xa1, 0xb3, 0x29, 0x6e, + 0x3c, 0x64, 0xe5, 0xee, 0x1f, 0xa9, 0x74, 0x93, 0x46, 0xcd, 0x8e, 0x80, + 0xe2, 0x63, 0x72, 0x36, 0x21, 0xec, 0xf9, 0xdd, 0xea, 0xc7, 0x82, 0x1c, + 0xe0, 0x36, 0x12, 0x6b, 0x74, 0x86, 0xfb, 0xee, 0xe8, 0xdc, 0x45, 0x9e, + 0xb2, 0x24, 0xef, 0xc3, 0x69, 0xec, 0x6e, 0x6d, 0xf7, 0xe1, 0x8f, 0x1d, + 0xca, 0x02, 0xde, 0xdd, 0xda, 0x35, 0xed, 0x3d, 0x1a, 0xd7, 0x84, 0x82, + 0x02, 0x16, 0xd6, 0x2f, 0xda, 0xfd, 0xf0, 0x21, 0xa2, 0x5f, 0xf4, 0x43, + 0x0d, 0x0c, 0x23, 0x0a, 0xcf, 0xe9, 0x2a, 0xdd, 0x90, 0xb7, 0xae, 0xd3, + 0xe2, 0x86, 0x51, 0x12, 0xed, 0x22, 0xd7, 0x66, 0x1c, 0x6d, 0xf3, 0x97, + 0xc0, 0xc4, 0x82, 0x7d, 0xfd, 0xa8, 0x77, 0x63, 0xaa, 0x1d, 0xb6, 0x6a, + 0x36, 0x24, 0xe5, 0xe8, 0x29, 0xb1, 0xdd, 0x6d, 0x55, 0x8e, 0x1b, 0xc2, + 0x5d, 0xe7, 0x12, 0xf8, 0xc8, 0x0f, 0xed, 0x56, 0xbb, 0xfa, 0xa9, 0xc3, + 0x1b, 0x67, 0x65, 0xa0, 0x51, 0x08, 0x87, 0x31, 0x2d, 0xbb, 0x18, 0xa9, + 0x08, 0x79, 0xd8, 0x1e, 0x75, 0x14, 0x04, 0x12, 0xc7, 0xfd, 0xf3, 0x88, + 0x82, 0x7f, 0xa1, 0xe8, 0x7e, 0xfc, 0xaf, 0xdd, 0xb0, 0x67, 0x56, 0xe1, + 0xd2, 0x6c, 0x77, 0x3d, 0x52, 0x2d, 0xad, 0x6e, 0xa9, 0x49, 0xbb, 0x52, + 0x62, 0x2f, 0xcf, 0x07, 0xd2, 0x0c, 0xd8, 0x03, 0x6c, 0x3d, 0xc2, 0x55, + 0x3a, 0x65, 0xc1, 0x4d, 0xd1, 0xba, 0x25, 0x02, 0xad, 0xc1, 0xce, 0x1f, + 0xbe, 0xc6, 0xdc, 0x74, 0xe9, 0x5b, 0x4d, 0x90, 0xbd, 0x5c, 0xd5, 0x73, + 0x45, 0xd5, 0x25, 0x0a, 0x81, 0x95, 0x4c, 0xeb, 0xb8, 0xba, 0x1a, 0x35, + 0x95, 0x2b, 0xcc, 0x13, 0xd0, 0xa3, 0xdc, 0x97, 0xbf, 0x78, 0x31, 0x50, + 0xea, 0x2e, 0x1d, 0xbd, 0x7c, 0x8e, 0x7f, 0x92, 0xd3, 0x4a, 0xfa, 0x64, + 0x6b, 0x0c, 0x82, 0xb4, 0x4a, 0x1c, 0xca, 0x50, 0x85, 0x68, 0xdd, 0xe3, + 0x45, 0x20, 0x77, 0x4c, 0xed, 0xc7, 0x06, 0x47, 0xee, 0xa4, 0x67, 0x1c, + 0xc6, 0x1b, 0x5b, 0x6b, 0xba, 0x2d, 0x82, 0xb8, 0xb5, 0x63, 0xc3, 0xd9, + 0x79, 0x1c, 0x07, 0x45, 0x45, 0xcd, 0xa2, 0xa8, 0xf2, 0xea, 0xda, 0x0b, + 0x89, 0x0e, 0x6a, 0x13, 0x4c, 0x27, 0xc1, 0x80, 0x5f, 0xdf, 0xa6, 0x67, + 0xda, 0x05, 0xdc, 0x56, 0x6a, 0xb8, 0xad, 0x11, 0xc1, 0xc6, 0x3a, 0xd9, + 0x8b, 0xee, 0xf9, 0x1c, 0xb8, 0x0e, 0xbc, 0x1d, 0x2e, 0xa1, 0x17, 0xed, + 0x9d, 0xe2, 0x8e, 0x81, 0x64, 0xa5, 0x63, 0xc6, 0xc8, 0xce, 0xee, 0xb3, + 0x47, 0x7d, 0xfa, 0xdb, 0xe3, 0xad, 0x2f, 0x77, 0x4c, 0x32, 0xc4, 0xf1, + 0xd1, 0xf9, 0x8b, 0x68, 0x5c, 0xc2, 0x25, 0xfe, 0x22, 0x5c, 0x77, 0x8a, + 0x39, 0xd1, 0xd8, 0x1b, 0xfd, 0x3d, 0xa8, 0x2a, 0x59, 0x5a, 0x4f, 0x4c, + 0x71, 0x39, 0x62, 0x7d, 0x6c, 0xd2, 0x9b, 0x71, 0x9a, 0x94, 0x97, 0x49, + 0x59, 0xc7, 0x18, 0x44, 0xac, 0x66, 0xf5, 0x3c, 0xde, 0xf2, 0xb2, 0xf3, + 0xce, 0xc8, 0xc5, 0xf2, 0x6c, 0xb0, 0x33, 0xd8, 0xea, 0x73, 0xa7, 0x71, + 0x83, 0x13, 0xdf, 0x3e, 0xf9, 0xa8, 0x77, 0xf0, 0xf6, 0xfc, 0xfb, 0xaf, + 0xfe, 0xfc, 0xf2, 0xe4, 0xbb, 0xe3, 0xd7, 0x3d, 0x10, 0x58, 0x3f, 0x74, + 0x74, 0x27, 0x35, 0x8e, 0x73, 0x26, 0x6d, 0xd3, 0x80, 0x8b, 0x14, 0xd5, + 0x68, 0x1d, 0x19, 0xd7, 0xd9, 0xc1, 0xd9, 0xcb, 0x8d, 0x88, 0x46, 0xe2, + 0x59, 0xc5, 0xde, 0x6f, 0xc7, 0x86, 0x30, 0x8c, 0xa3, 0x8a, 0xb4, 0x90, + 0xd6, 0xf8, 0x0a, 0x13, 0x07, 0x70, 0x4c, 0x1c, 0xc4, 0x3b, 0xe1, 0xe8, + 0x90, 0xd3, 0xcb, 0x28, 0x64, 0xee, 0xbb, 0x03, 0x49, 0x82, 0xe7, 0x9c, + 0x80, 0xe4, 0x41, 0x7b, 0x70, 0xc3, 0xe7, 0x5a, 0x64, 0x0e, 0xa7, 0x4b, + 0xa9, 0xa4, 0x46, 0xb6, 0x14, 0xd0, 0x16, 0x24, 0x45, 0x13, 0xc7, 0xe3, + 0xcf, 0x43, 0xc5, 0x5b, 0x4c, 0x87, 0x26, 0x7a, 0x99, 0xd6, 0x90, 0xd3, + 0x1e, 0xd3, 0xb7, 0xb4, 0xeb, 0x5a, 0x99, 0xa7, 0xb8, 0x7b, 0xc5, 0x1b, + 0xb4, 0x9e, 0x0e, 0x2e, 0x06, 0x9c, 0xc8, 0x85, 0x1b, 0x52, 0xdb, 0x45, + 0x55, 0x79, 0x51, 0x60, 0xa8, 0x60, 0xa3, 0xcb, 0x6e, 0x74, 0x59, 0xc0, + 0xef, 0x5f, 0x62, 0xd9, 0x9c, 0x7f, 0x8d, 0xc8, 0xe7, 0x4f, 0x6b, 0x51, + 0x36, 0x4b, 0xe6, 0x1f, 0xa3, 0x8f, 0xc7, 0xe8, 0xf1, 0x89, 0xf1, 0xe0, + 0xa3, 0x7d, 0x29, 0xbc, 0xf3, 0x1b, 0xce, 0x35, 0x98, 0x98, 0x29, 0xf7, + 0x91, 0xc7, 0xad, 0xeb, 0xbc, 0x8d, 0x24, 0x81, 0x3b, 0x91, 0x78, 0xb5, + 0x69, 0xcd, 0x84, 0x10, 0xc1, 0xc8, 0x58, 0x67, 0xdf, 0x52, 0x7d, 0x43, + 0xce, 0x0a, 0x0c, 0x21, 0x0e, 0x67, 0x18, 0x92, 0x1f, 0xab, 0x5b, 0xc9, + 0x34, 0x9b, 0xaf, 0x3c, 0x3a, 0x64, 0x25, 0x66, 0x9a, 0xdc, 0xf0, 0xec, + 0x49, 0xce, 0x8a, 0x46, 0x07, 0x26, 0x17, 0xe7, 0x37, 0xda, 0xaf, 0xfe, + 0x0c, 0x4e, 0x00, 0x3b, 0x39, 0x1e, 0xc6, 0x37, 0xce, 0xd9, 0x81, 0x69, + 0x7e, 0xce, 0xad, 0x91, 0x91, 0xc5, 0xdc, 0xbd, 0xa3, 0x1b, 0x8d, 0x58, + 0x8e, 0xe6, 0x8a, 0x86, 0x42, 0xff, 0x46, 0x13, 0xc0, 0x3b, 0x69, 0xb2, + 0x0b, 0xee, 0x79, 0xd2, 0xd6, 0x02, 0xe3, 0x98, 0x30, 0x2d, 0xd4, 0x14, + 0xd2, 0x5f, 0xa4, 0x01, 0x75, 0xb3, 0x8e, 0x9a, 0xab, 0xf0, 0x0f, 0x81, + 0x16, 0xf4, 0xb9, 0x0e, 0x81, 0x26, 0x6f, 0x1f, 0xc2, 0x43, 0x9e, 0x01, + 0x9e, 0xb2, 0x77, 0x06, 0xf8, 0x50, 0x4c, 0xfe, 0x16, 0x82, 0x6e, 0x0d, + 0x1f, 0x02, 0xa9, 0xfe, 0xea, 0x8d, 0xe1, 0xf2, 0xfd, 0xc2, 0x2a, 0x58, + 0x60, 0x00, 0x64, 0x73, 0xcc, 0xa3, 0x80, 0x1d, 0x72, 0x50, 0x28, 0x02, + 0xaa, 0x1d, 0x88, 0x51, 0x14, 0x40, 0x24, 0x7f, 0x47, 0x45, 0x8e, 0xa1, + 0x17, 0x31, 0xed, 0x30, 0x6c, 0x80, 0x99, 0x31, 0x69, 0x52, 0xb5, 0x32, + 0x9e, 0x22, 0x67, 0x7c, 0x0f, 0xce, 0x80, 0x44, 0xd0, 0x9b, 0xc3, 0xd3, + 0xf3, 0xe8, 0xfc, 0xc4, 0xf5, 0xc3, 0x33, 0xe0, 0x00, 0x35, 0xee, 0xeb, + 0xc0, 0x44, 0xa7, 0x3c, 0x79, 0x81, 0xcb, 0x18, 0xa6, 0x97, 0xc9, 0x55, + 0x56, 0x98, 0x06, 0xc5, 0xac, 0x7d, 0x13, 0x08, 0x98, 0x56, 0x81, 0x36, + 0x77, 0xcb, 0x4b, 0x3c, 0x92, 0xdd, 0x6b, 0xe7, 0xdc, 0x70, 0x0f, 0x52, + 0x81, 0x2b, 0x33, 0x06, 0x26, 0xe7, 0x17, 0xf2, 0xca, 0xaa, 0x10, 0xf6, + 0x74, 0x03, 0x1e, 0x97, 0x6d, 0x98, 0x99, 0xe4, 0xfb, 0x01, 0xd1, 0x65, + 0x63, 0x67, 0x47, 0x82, 0xd4, 0x8c, 0xa6, 0xb6, 0xf3, 0x4c, 0xa4, 0x90, + 0xf1, 0x11, 0x6f, 0x15, 0xee, 0x95, 0xfa, 0x25, 0x45, 0x2f, 0xc1, 0x5c, + 0x91, 0x69, 0x72, 0xe1, 0x53, 0x73, 0xbb, 0xab, 0x2d, 0x03, 0xf9, 0xca, + 0x39, 0x12, 0x66, 0xa8, 0x77, 0x96, 0x9c, 0xfa, 0xc4, 0x27, 0x10, 0xcc, + 0x57, 0x12, 0x04, 0xc3, 0x51, 0x9a, 0x61, 0xcb, 0x43, 0x22, 0x7b, 0x89, + 0xe3, 0xd1, 0xdd, 0x6a, 0x1d, 0xe7, 0x52, 0x17, 0x56, 0x88, 0x84, 0x6f, + 0x71, 0x63, 0xf9, 0xb0, 0xc5, 0xb7, 0x15, 0x12, 0x85, 0x26, 0xb9, 0xd7, + 0x0d, 0x6f, 0x2f, 0xd4, 0xbd, 0xa7, 0x60, 0x17, 0xd5, 0x8d, 0x8b, 0xef, + 0x5f, 0xf8, 0xbb, 0xdc, 0xf7, 0x26, 0x50, 0xee, 0x97, 0x4d, 0xa0, 0x5c, + 0x3b, 0xdb, 0xaa, 0x4c, 0x97, 0xe3, 0x63, 0xf2, 0x52, 0x9f, 0x83, 0x35, + 0xe4, 0x91, 0x25, 0x0f, 0x6a, 0x36, 0xe5, 0xbc, 0xbb, 0x60, 0xcb, 0x48, + 0xd8, 0xdb, 0x37, 0xe9, 0x3c, 0x65, 0x5c, 0x0b, 0xb7, 0x9c, 0xd3, 0xad, + 0xb5, 0xd4, 0x20, 0x51, 0x93, 0xad, 0x78, 0xf0, 0x25, 0x5d, 0x44, 0x4f, + 0xfc, 0x49, 0x02, 0x6f, 0x12, 0x38, 0x55, 0x31, 0xd1, 0x28, 0x7a, 0x5e, + 0xff, 0xfb, 0x9b, 0x17, 0xff, 0x50, 0xc2, 0xda, 0xe8, 0x2b, 0x7b, 0xe9, + 0x98, 0xc7, 0xc5, 0x65, 0x71, 0x6e, 0x42, 0x24, 0xe5, 0x76, 0x8d, 0x4d, + 0xb0, 0xff, 0xf0, 0xaf, 0xf3, 0xb8, 0xa0, 0x7a, 0xab, 0x75, 0x4c, 0x66, + 0xc6, 0xe6, 0xaf, 0x12, 0x20, 0xd8, 0x1d, 0x3c, 0xa6, 0xd0, 0x20, 0x5a, + 0x08, 0xbb, 0x3b, 0xdb, 0x1b, 0xb7, 0x7f, 0x55, 0x63, 0xab, 0x31, 0xc3, + 0x18, 0x6f, 0xda, 0xfa, 0xd1, 0x8f, 0xa7, 0xaf, 0x5b, 0xdf, 0x44, 0x77, + 0xdf, 0xcb, 0x4c, 0xc7, 0x4f, 0xb2, 0xf9, 0xab, 0xf6, 0x7b, 0xac, 0xab, + 0xa0, 0x31, 0xbe, 0x62, 0xb3, 0x12, 0xfa, 0x5b, 0x20, 0xf7, 0xfb, 0x45, + 0x99, 0xa1, 0x3a, 0xdd, 0xc3, 0xcf, 0xef, 0xbd, 0x2c, 0xf2, 0x71, 0x91, + 0xc7, 0x27, 0x13, 0xd8, 0xeb, 0xb4, 0x17, 0x28, 0xb6, 0xb5, 0xb4, 0xf7, + 0xe9, 0x3a, 0x4a, 0xda, 0x39, 0x1a, 0x62, 0x34, 0x47, 0x04, 0xf6, 0x7b, + 0xdd, 0xa6, 0xe0, 0x85, 0x77, 0xf1, 0x40, 0x5a, 0x63, 0xbc, 0x12, 0x90, + 0x90, 0xe7, 0xdc, 0xfb, 0x9b, 0xb1, 0x29, 0x17, 0x17, 0xd2, 0xf5, 0xbb, + 0x0e, 0x25, 0x43, 0xde, 0xfa, 0x49, 0x34, 0xcd, 0x9d, 0x52, 0x11, 0xfb, + 0x4e, 0x62, 0x23, 0x8b, 0x7d, 0xb4, 0x23, 0xd3, 0x26, 0x07, 0xf8, 0x40, + 0x75, 0xb0, 0x14, 0xfe, 0xdd, 0xa7, 0x2c, 0xb3, 0xaf, 0xbb, 0x90, 0xb2, + 0xa3, 0x57, 0x7f, 0x3b, 0x3f, 0x6f, 0xfa, 0x0b, 0x34, 0x63, 0x91, 0x5e, + 0x5f, 0xd7, 0xa4, 0x3b, 0x51, 0x93, 0x39, 0x51, 0xb5, 0xf0, 0x88, 0x9f, + 0xd3, 0x13, 0x07, 0xd6, 0x95, 0x4e, 0x0f, 0x5a, 0x57, 0x30, 0xb6, 0x99, + 0x67, 0x54, 0x6b, 0x8a, 0xdf, 0x72, 0x57, 0x20, 0xd4, 0xad, 0xfa, 0x01, + 0x47, 0xa5, 0x49, 0x32, 0x33, 0x36, 0x18, 0x63, 0x0b, 0xe0, 0xf7, 0x8a, + 0xbb, 0x9b, 0xe4, 0x0e, 0xb3, 0xef, 0xf4, 0x03, 0x81, 0x8e, 0x8e, 0xd3, + 0xe8, 0x89, 0xef, 0xb6, 0x3a, 0xe0, 0xcf, 0x10, 0x8f, 0x1d, 0x07, 0x9f, + 0x85, 0x2e, 0xd9, 0x0d, 0x20, 0xc4, 0xd2, 0x6f, 0x25, 0x08, 0x72, 0x9a, + 0xdf, 0x5f, 0xd7, 0x7c, 0x30, 0x24, 0x96, 0xb5, 0xe4, 0x4b, 0x37, 0x29, + 0x83, 0x36, 0x63, 0x90, 0x72, 0x04, 0x31, 0xf9, 0x2f, 0x9c, 0x21, 0xd8, + 0xf6, 0x82, 0x2d, 0xcd, 0x17, 0x94, 0xfc, 0xc0, 0x8e, 0x5c, 0x3e, 0x4a, + 0xe6, 0x6b, 0x9d, 0xaa, 0x23, 0x16, 0x1e, 0x3f, 0x0b, 0xb4, 0xe7, 0x7c, + 0x7d, 0x72, 0x7e, 0xb4, 0x67, 0x6b, 0x08, 0x69, 0x2f, 0x09, 0xe2, 0xa6, + 0x6f, 0xaa, 0x7c, 0xf9, 0xe0, 0x38, 0x73, 0x80, 0xf7, 0x9e, 0xc0, 0x40, + 0xb9, 0x65, 0x9d, 0x1f, 0xef, 0xd0, 0x93, 0xef, 0x33, 0x38, 0x3f, 0x72, + 0x11, 0x4e, 0xad, 0xa9, 0xfd, 0xc2, 0x41, 0xad, 0x1c, 0x54, 0x48, 0xa7, + 0x49, 0x40, 0x6f, 0x60, 0xfa, 0xd2, 0xf3, 0x27, 0x4b, 0x7e, 0x31, 0x17, + 0x93, 0xcb, 0x23, 0x20, 0x36, 0x0a, 0x28, 0xe7, 0xcb, 0xef, 0xf6, 0x8b, + 0x14, 0x43, 0x6e, 0x5c, 0x22, 0x12, 0xf7, 0x53, 0x1b, 0xb8, 0xcb, 0x56, + 0xc9, 0xb1, 0x78, 0xa0, 0x13, 0xdf, 0x91, 0x4d, 0x51, 0x41, 0x05, 0x0e, + 0x35, 0xb9, 0x8c, 0xe2, 0xa7, 0x32, 0xdd, 0xa6, 0x83, 0x76, 0x7c, 0xe3, + 0x3a, 0xde, 0xd5, 0xee, 0x78, 0x40, 0x3b, 0xbe, 0x31, 0x7f, 0x67, 0x62, + 0x5f, 0x37, 0xa3, 0xb4, 0x29, 0x7a, 0x6d, 0x26, 0x23, 0xa1, 0x04, 0xcc, + 0x1c, 0xe8, 0xc0, 0x75, 0xe1, 0xdc, 0x01, 0x93, 0x03, 0x6d, 0x0b, 0x5c, + 0x35, 0xa6, 0xa0, 0x7e, 0x43, 0x76, 0xbb, 0x4b, 0xf6, 0x58, 0xfc, 0xd2, + 0xf7, 0x52, 0x1b, 0x97, 0xaf, 0x09, 0x10, 0x39, 0x2e, 0x15, 0xf1, 0xe4, + 0x93, 0x96, 0xe9, 0x7a, 0xf0, 0x31, 0x98, 0x4f, 0x38, 0x71, 0xde, 0x69, + 0x4a, 0xf4, 0xa4, 0xcf, 0x21, 0x13, 0x03, 0x11, 0x2d, 0x75, 0xa3, 0x14, + 0x77, 0x91, 0x7a, 0x28, 0x98, 0xe6, 0xf1, 0x96, 0x7d, 0x03, 0xc1, 0xe5, + 0xea, 0x90, 0xdf, 0xcc, 0xd6, 0x0d, 0xc4, 0xdb, 0x26, 0x1f, 0x25, 0xa3, + 0x8e, 0xf4, 0x9c, 0x72, 0xdd, 0x4d, 0x1d, 0xb2, 0x8f, 0x9f, 0xc5, 0x26, + 0x35, 0xb3, 0xef, 0xba, 0x9b, 0xbc, 0x12, 0x85, 0x34, 0x5c, 0xf2, 0x0e, + 0x8d, 0x34, 0xea, 0x5a, 0xa3, 0xfd, 0x09, 0xc8, 0x29, 0x81, 0x16, 0xe9, + 0x28, 0x72, 0x7f, 0x25, 0x74, 0xc2, 0xf5, 0xbd, 0xb9, 0x3e, 0x66, 0xa1, + 0xf1, 0x48, 0x52, 0x53, 0x2d, 0x82, 0x9b, 0x4f, 0x4f, 0x50, 0x40, 0xd4, + 0x7f, 0x32, 0x54, 0x33, 0x8f, 0xff, 0x93, 0x84, 0x2b, 0x06, 0xbe, 0x26, + 0x92, 0x11, 0x98, 0xba, 0x32, 0x1a, 0x12, 0x0c, 0xdd, 0xaf, 0xc5, 0x50, + 0x22, 0x98, 0x68, 0x15, 0xe2, 0x2f, 0xfd, 0x44, 0xfc, 0x4b, 0xc4, 0xce, + 0x83, 0x2b, 0x4f, 0x81, 0x7e, 0x4c, 0x6d, 0x77, 0x2a, 0xbc, 0x4b, 0x4e, + 0xf8, 0x8b, 0x2e, 0x0a, 0x32, 0x9e, 0xa9, 0x4d, 0x54, 0x03, 0xed, 0x22, + 0xf1, 0x52, 0x9b, 0x11, 0xdb, 0xa7, 0xc2, 0x32, 0xee, 0x0c, 0x33, 0xe3, + 0xe8, 0x4c, 0xab, 0x6e, 0x70, 0x1d, 0xee, 0x72, 0x4f, 0x89, 0x6d, 0x37, + 0x5e, 0x2e, 0xf6, 0x3a, 0x06, 0x14, 0xe0, 0x17, 0x1b, 0x5a, 0xf7, 0x66, + 0x84, 0xb8, 0x17, 0x83, 0x24, 0x10, 0x98, 0x05, 0xd6, 0x3a, 0x71, 0x6b, + 0x3f, 0xa4, 0x27, 0xda, 0x4f, 0xfa, 0x55, 0x93, 0x0d, 0x56, 0x92, 0x47, + 0x37, 0x36, 0x40, 0xb4, 0x81, 0x0a, 0x10, 0x99, 0xda, 0x9e, 0x33, 0x6c, + 0x0e, 0xdf, 0x1f, 0xd6, 0x51, 0x11, 0x0f, 0xab, 0x99, 0x7f, 0xeb, 0x58, + 0xe7, 0x8d, 0xaf, 0xb7, 0xd8, 0x05, 0xe6, 0x16, 0x28, 0x38, 0xee, 0x18, + 0xc4, 0xd0, 0xfa, 0x60, 0x83, 0x8b, 0x20, 0xe5, 0x25, 0xcf, 0xf5, 0x43, + 0x55, 0xaf, 0x28, 0xb6, 0x63, 0x12, 0x5b, 0xec, 0x00, 0xc7, 0x1c, 0x24, + 0xed, 0x22, 0xa0, 0xfe, 0x68, 0x94, 0xc8, 0x94, 0xda, 0x43, 0x8a, 0x00, + 0x9b, 0x12, 0x5e, 0xe2, 0xb9, 0x78, 0xf4, 0x64, 0xd0, 0xe0, 0xdd, 0x6d, + 0xd2, 0xf7, 0xc3, 0x70, 0xf6, 0x15, 0x53, 0xb6, 0xcd, 0xec, 0xdb, 0xab, + 0x24, 0x5d, 0x9b, 0xb7, 0x76, 0x06, 0x5f, 0xae, 0xda, 0xff, 0x50, 0x92, + 0x9f, 0xe8, 0x7d, 0xea, 0xb8, 0x43, 0x3a, 0x68, 0x93, 0x06, 0x1a, 0x72, + 0x22, 0xad, 0x13, 0xbc, 0x1b, 0xcb, 0xf0, 0x2c, 0xb8, 0x02, 0x94, 0x91, + 0x84, 0x38, 0x3d, 0xb2, 0x85, 0x0f, 0xfc, 0x4a, 0x06, 0x31, 0x89, 0x5d, + 0xed, 0xab, 0x6e, 0x1e, 0xd0, 0x80, 0x8f, 0xdb, 0xc0, 0x3c, 0x33, 0x11, + 0xed, 0xd2, 0xe6, 0xf9, 0x80, 0x40, 0xaf, 0x50, 0xf6, 0x70, 0x4b, 0x73, + 0x0f, 0x5b, 0x19, 0xfb, 0x3f, 0xa0, 0x06, 0xd5, 0xc1, 0xb4, 0x75, 0xba, + 0xd5, 0x0e, 0xfd, 0x81, 0xea, 0x9a, 0xcc, 0xec, 0x8c, 0x3e, 0xbb, 0xca, + 0xf1, 0xfd, 0x17, 0x92, 0x2c, 0xd2, 0xf4, 0x74, 0x9a, 0x4e, 0xdd, 0x63, + 0x32, 0x3d, 0x54, 0xc3, 0x72, 0x9c, 0xab, 0x2c, 0xab, 0xe8, 0xb5, 0x3e, + 0x16, 0xad, 0x9f, 0x9d, 0xbe, 0x3e, 0xfa, 0xee, 0x64, 0xe3, 0xb6, 0x68, + 0x61, 0xb3, 0x25, 0x8c, 0xa9, 0xf1, 0x4b, 0xb4, 0x80, 0x5b, 0xaa, 0xf7, + 0x48, 0x49, 0xfb, 0xee, 0xec, 0x2c, 0x3e, 0x38, 0x3d, 0xa6, 0x4a, 0xde, + 0x33, 0xf8, 0x2f, 0x1c, 0x66, 0xa8, 0x03, 0xc6, 0x80, 0x5b, 0x43, 0x45, + 0xf1, 0xdf, 0x29, 0xf4, 0xac, 0xd7, 0x9b, 0xd3, 0xfa, 0x30, 0x0d, 0x03, + 0x1d, 0x8d, 0xcc, 0xdd, 0x55, 0x33, 0x30, 0x71, 0xb1, 0xd6, 0x70, 0x32, + 0xe3, 0x26, 0x4d, 0x87, 0xd3, 0xd2, 0x47, 0x75, 0x00, 0xc1, 0x07, 0x22, + 0x4e, 0x04, 0x59, 0x4a, 0x98, 0xea, 0xb8, 0xbd, 0x5a, 0xaa, 0x8f, 0x5d, + 0xa8, 0x30, 0xe9, 0xcd, 0x84, 0x3f, 0xc2, 0x55, 0xc8, 0x18, 0x3a, 0x40, + 0x4c, 0x94, 0xa4, 0x4e, 0x25, 0x72, 0xd1, 0x88, 0x54, 0x90, 0x49, 0x03, + 0x43, 0xce, 0xb1, 0x6b, 0x1e, 0x65, 0x98, 0xb0, 0x79, 0xe2, 0xe5, 0x09, + 0xad, 0xc5, 0x20, 0x20, 0xf6, 0xd6, 0x58, 0xd4, 0xa5, 0x39, 0x35, 0x6f, + 0x25, 0x4e, 0xd9, 0x74, 0x60, 0x50, 0xc7, 0x31, 0x8d, 0x3d, 0xb1, 0x43, + 0xee, 0x92, 0x16, 0xe9, 0xe9, 0x5a, 0xf4, 0x8e, 0x2a, 0xc8, 0x60, 0x28, + 0x50, 0xbb, 0xc4, 0x91, 0xc0, 0xff, 0x05, 0x29, 0xd6, 0x75, 0xd7, 0x19, + 0x52, 0xfa, 0x04, 0xe8, 0x86, 0x76, 0x6c, 0xf8, 0xe6, 0xbd, 0x15, 0x59, + 0xd7, 0x10, 0x93, 0xe7, 0xf0, 0x48, 0xf2, 0x7a, 0x4a, 0xbc, 0x1b, 0x14, + 0x43, 0x0a, 0x8a, 0x48, 0xe6, 0x03, 0xe1, 0xbd, 0x9b, 0x19, 0x9a, 0xb7, + 0xa3, 0x2e, 0x47, 0xa4, 0x44, 0x73, 0xfd, 0x68, 0x08, 0xde, 0xbd, 0x55, + 0x5d, 0xa9, 0x7d, 0xca, 0x50, 0x1f, 0xcc, 0xfb, 0x3a, 0x46, 0x1f, 0xb1, + 0xad, 0x52, 0x84, 0x0b, 0xa6, 0xd8, 0x12, 0x89, 0x76, 0xa1, 0x9a, 0x50, + 0x32, 0x13, 0x22, 0xcc, 0xc3, 0x1d, 0x4c, 0x86, 0x55, 0x31, 0x5d, 0x20, + 0xa2, 0x30, 0x8a, 0x37, 0x8c, 0x3c, 0x21, 0x92, 0xce, 0x46, 0xa4, 0x1e, + 0x55, 0x1a, 0xda, 0xa9, 0x21, 0x0d, 0x38, 0xe5, 0xc5, 0x25, 0x44, 0xa5, + 0xd0, 0x1a, 0xc0, 0xe7, 0xe4, 0x2a, 0x61, 0xb2, 0xe8, 0x8d, 0x77, 0xc6, + 0x99, 0x53, 0xa5, 0xc5, 0x55, 0x57, 0x36, 0xc4, 0x31, 0x10, 0xc4, 0x90, + 0xd2, 0x3c, 0x40, 0x7d, 0xd6, 0xfd, 0xe1, 0x8f, 0x4f, 0x28, 0xb1, 0xdd, + 0x38, 0x9e, 0xc2, 0x0c, 0xd4, 0xd9, 0xd0, 0xcf, 0xa0, 0xf5, 0x3a, 0xb3, + 0xf3, 0x27, 0xaf, 0x44, 0x47, 0xee, 0x69, 0xda, 0x2b, 0xce, 0x44, 0xf4, + 0x57, 0x06, 0x7a, 0xca, 0x27, 0xd9, 0xc5, 0x20, 0xba, 0xa5, 0x67, 0x6f, + 0x47, 0x07, 0x4b, 0x3b, 0xbc, 0x4f, 0x81, 0xba, 0xc3, 0x5e, 0x1a, 0x00, + 0xd3, 0x1a, 0xa3, 0xa5, 0xb9, 0xeb, 0x63, 0x4c, 0xfd, 0x50, 0xf7, 0x8b, + 0x01, 0x7f, 0xf9, 0x02, 0x43, 0x9d, 0x41, 0xf6, 0x24, 0xa5, 0xc1, 0x0c, + 0xd5, 0x9c, 0x8f, 0x13, 0x2a, 0xdb, 0x10, 0xaf, 0xa8, 0x33, 0x87, 0x41, + 0xf2, 0x29, 0xd2, 0xea, 0x16, 0xb6, 0xd0, 0xa0, 0x91, 0x30, 0x6f, 0xb8, + 0x77, 0xde, 0x4e, 0x73, 0xf4, 0xfb, 0x11, 0x84, 0x59, 0xdb, 0x4a, 0xf0, + 0xa9, 0x2e, 0x39, 0xdd, 0x02, 0x9a, 0xea, 0x9c, 0xb1, 0xc7, 0x73, 0xdb, + 0x27, 0x6e, 0x77, 0xd8, 0x33, 0x92, 0x6c, 0x63, 0x17, 0x4a, 0x2b, 0xb3, + 0x87, 0xc9, 0xf7, 0x29, 0x37, 0x7c, 0xdf, 0x6f, 0xc1, 0xe2, 0x5b, 0x35, + 0x9c, 0x23, 0xe2, 0x09, 0x08, 0x1b, 0x63, 0xaf, 0x19, 0x36, 0x4e, 0xf5, + 0xb2, 0x09, 0x37, 0x98, 0xc3, 0x0c, 0xc6, 0xb7, 0x79, 0xf6, 0x61, 0x10, + 0x30, 0x58, 0x38, 0xa5, 0x94, 0xd3, 0xc3, 0xb8, 0x07, 0x9f, 0x48, 0xe1, + 0x54, 0xb4, 0x08, 0x16, 0x4a, 0x7e, 0xf2, 0x07, 0x6c, 0x6a, 0x3b, 0xb6, + 0x80, 0xdf, 0xb5, 0xfe, 0x78, 0x43, 0xe2, 0x4d, 0x93, 0x7a, 0xbe, 0xbe, + 0xbd, 0xc1, 0x99, 0x6d, 0xd2, 0x4b, 0x47, 0x6b, 0x5f, 0xe8, 0xdb, 0x39, + 0x99, 0x67, 0x10, 0x1d, 0x6a, 0x67, 0xf7, 0x40, 0xd6, 0x37, 0xc1, 0xab, + 0x13, 0x34, 0xda, 0x84, 0xb9, 0x25, 0xbd, 0x69, 0x3c, 0x8d, 0x54, 0x34, + 0x2d, 0x31, 0x03, 0x32, 0x12, 0x90, 0x15, 0x22, 0x1c, 0x57, 0x08, 0x58, + 0x2c, 0x6b, 0x86, 0x0f, 0x72, 0x69, 0x4e, 0x01, 0x1b, 0x38, 0x1d, 0xa3, + 0x15, 0x52, 0x46, 0x17, 0x65, 0x01, 0x4a, 0x0c, 0x02, 0x81, 0xe0, 0xa7, + 0x6f, 0x70, 0xb5, 0x6f, 0x9a, 0x53, 0xaf, 0x01, 0xaf, 0x7c, 0x0e, 0x5d, + 0x19, 0xa6, 0xf5, 0x40, 0xef, 0xfb, 0x93, 0x57, 0x47, 0x3d, 0x37, 0xcb, + 0x61, 0x92, 0x49, 0x7a, 0x51, 0xf3, 0x50, 0x07, 0x81, 0xa6, 0x1b, 0x3f, + 0xc0, 0xa3, 0x98, 0xbc, 0x09, 0xf6, 0x69, 0xa4, 0x02, 0xab, 0xd2, 0x66, + 0x3d, 0x11, 0x0f, 0xe0, 0x16, 0x07, 0x52, 0xd6, 0x0d, 0xc3, 0xdd, 0x8f, + 0xdb, 0x97, 0x44, 0x88, 0x0b, 0x0f, 0xe0, 0x9d, 0xb0, 0x15, 0xa9, 0x04, + 0x51, 0x43, 0x94, 0x4a, 0xa1, 0xca, 0x41, 0x74, 0x42, 0xbd, 0x46, 0xdd, + 0x0e, 0xca, 0x3f, 0xf8, 0xb9, 0xed, 0xb4, 0x2e, 0x99, 0x8a, 0x0e, 0xf2, + 0x9d, 0xf0, 0x91, 0x50, 0x7d, 0xcc, 0x01, 0x16, 0xef, 0x64, 0xa3, 0xf7, + 0x72, 0xfe, 0x20, 0x54, 0xa9, 0x8d, 0x89, 0x82, 0x2d, 0x17, 0x13, 0x4d, + 0xa3, 0xe5, 0x42, 0x8c, 0x44, 0x17, 0xcb, 0x85, 0x02, 0xc5, 0x75, 0x28, + 0xe1, 0x13, 0x7e, 0x87, 0x04, 0x2c, 0xb2, 0x53, 0xca, 0xdc, 0x38, 0x5f, + 0x98, 0x83, 0x38, 0x14, 0x99, 0x23, 0xf2, 0x65, 0x3a, 0xa5, 0xcb, 0x11, + 0xad, 0xcd, 0x6e, 0xbc, 0x2a, 0xac, 0x74, 0x3a, 0x59, 0x6b, 0xea, 0x55, + 0x6b, 0x60, 0x60, 0x80, 0x31, 0xb4, 0x26, 0xf0, 0xf1, 0x54, 0x2c, 0x69, + 0x55, 0x01, 0x1f, 0x42, 0xb8, 0x63, 0xfa, 0xf6, 0x63, 0x7c, 0x4b, 0x67, + 0x37, 0x38, 0x63, 0xfb, 0x77, 0x36, 0x9f, 0x88, 0xa6, 0xee, 0xe6, 0xc1, + 0x0d, 0xb6, 0x7d, 0x07, 0xdd, 0x8c, 0x18, 0x6e, 0xb0, 0xc1, 0x44, 0x17, + 0x03, 0xbe, 0x17, 0xdf, 0x5d, 0x15, 0x3f, 0xcd, 0x70, 0xdb, 0x7e, 0x43, + 0xde, 0xb2, 0x00, 0xb6, 0x19, 0x47, 0xf7, 0x93, 0xbe, 0xae, 0x6e, 0xc0, + 0x6a, 0x61, 0x97, 0x64, 0x89, 0xf7, 0xfa, 0x82, 0x7d, 0xb1, 0xb4, 0xed, + 0xb2, 0x54, 0xcf, 0x2a, 0x26, 0x97, 0x85, 0xe8, 0xd0, 0xba, 0x27, 0xeb, + 0xae, 0x94, 0xde, 0x65, 0x1e, 0x5e, 0x52, 0x55, 0x8c, 0xb2, 0x46, 0x6a, + 0xaf, 0x51, 0x2d, 0xa4, 0x84, 0xc6, 0xd4, 0xa5, 0x50, 0x78, 0x55, 0x95, + 0x28, 0x1c, 0xae, 0xa3, 0x16, 0x0e, 0x74, 0x2b, 0x72, 0xfa, 0x68, 0xee, + 0x41, 0x56, 0x62, 0x67, 0x73, 0x9b, 0xaa, 0x29, 0xf3, 0xf4, 0x5d, 0x64, + 0x73, 0x09, 0x12, 0xfa, 0x68, 0x4e, 0x36, 0x8b, 0xde, 0xd8, 0x1a, 0xe4, + 0x11, 0x1b, 0x81, 0x5d, 0x04, 0x17, 0xc9, 0x64, 0x36, 0x2b, 0x8c, 0x88, + 0x1f, 0x37, 0xdc, 0xeb, 0x47, 0xb2, 0x95, 0x9c, 0x8d, 0x5d, 0xf3, 0xa7, + 0x89, 0xfb, 0x46, 0x33, 0xd0, 0xf0, 0x38, 0x48, 0x65, 0x15, 0xe0, 0x12, + 0xd0, 0x58, 0x2b, 0x62, 0xd7, 0xbe, 0xe6, 0x0c, 0xdf, 0xc3, 0x0e, 0x35, + 0x58, 0x72, 0x79, 0x45, 0xa8, 0x93, 0x57, 0xdc, 0x09, 0x9a, 0xd8, 0x9f, + 0x3d, 0x84, 0x86, 0xb3, 0x18, 0x7f, 0x05, 0x6b, 0x09, 0x88, 0x66, 0x5c, + 0x18, 0x15, 0x33, 0x96, 0xd2, 0x6a, 0x1b, 0x2c, 0x47, 0x5e, 0x84, 0xcd, + 0x0c, 0xd5, 0x62, 0x09, 0x0a, 0xd7, 0x39, 0xf1, 0x3a, 0x6f, 0x38, 0x8a, + 0xd7, 0xf5, 0xf5, 0x2f, 0x71, 0x52, 0x8d, 0xb2, 0x4c, 0x68, 0x0d, 0x83, + 0x90, 0x98, 0xf7, 0x19, 0xe0, 0x84, 0x8d, 0x58, 0xd5, 0x8d, 0x68, 0xf0, + 0xe3, 0x82, 0xe1, 0x41, 0x38, 0x89, 0x9e, 0x6a, 0x48, 0x38, 0x9d, 0x9c, + 0x82, 0xac, 0x06, 0x25, 0x1b, 0x2e, 0x94, 0x5f, 0xaa, 0x2d, 0xd1, 0xd7, + 0x8e, 0xee, 0x2e, 0xd7, 0xd7, 0xd7, 0xdb, 0x83, 0x46, 0x8a, 0x12, 0x6f, + 0x43, 0x8c, 0x5d, 0xab, 0xab, 0x9a, 0xbb, 0x69, 0x5c, 0x5f, 0xef, 0x0c, + 0x96, 0x5c, 0x5a, 0x7b, 0x43, 0x3e, 0x1d, 0x00, 0x73, 0x08, 0xa7, 0xf8, + 0x2e, 0x4b, 0x0d, 0xf2, 0xa3, 0xe3, 0x65, 0xc3, 0xb5, 0x7f, 0x05, 0x7c, + 0x61, 0xf3, 0x8e, 0x8e, 0x16, 0xdf, 0x36, 0x70, 0x35, 0xfb, 0x22, 0x4e, + 0xa6, 0xf3, 0x60, 0x65, 0x12, 0xc2, 0x3b, 0xaa, 0xce, 0xcb, 0x7d, 0xcb, + 0x5f, 0x9e, 0xbe, 0x26, 0xb4, 0x32, 0x58, 0x50, 0x9a, 0x57, 0x9c, 0x14, + 0x8d, 0x3f, 0xc3, 0x22, 0xef, 0x9c, 0xbd, 0x5d, 0x94, 0x9c, 0xe5, 0xe5, + 0xbf, 0x50, 0x0e, 0x54, 0xb0, 0xf3, 0xae, 0xb6, 0xe7, 0x8e, 0x10, 0x55, + 0xcf, 0x78, 0x65, 0xc4, 0x40, 0xed, 0x70, 0x9b, 0xe0, 0x9c, 0x83, 0xc8, + 0x4c, 0x4d, 0xc7, 0x4a, 0xcd, 0x14, 0x75, 0x78, 0x7a, 0xdb, 0xe4, 0x22, + 0x53, 0xef, 0xe9, 0x1d, 0x2a, 0x7b, 0x20, 0xeb, 0xda, 0x93, 0x29, 0x75, + 0xaa, 0xcf, 0xa8, 0xff, 0xce, 0x64, 0x45, 0x49, 0xe2, 0xb0, 0x44, 0xda, + 0xe8, 0x10, 0x14, 0xa1, 0x38, 0x5c, 0xd5, 0xac, 0x39, 0x83, 0xa2, 0xbd, + 0x92, 0x79, 0x7c, 0x41, 0xec, 0x53, 0xd4, 0x72, 0x16, 0xe7, 0xda, 0x69, + 0x96, 0xc0, 0x61, 0xd0, 0x22, 0xee, 0xf4, 0x6f, 0xe3, 0xe9, 0x50, 0xe7, + 0x31, 0x76, 0xc1, 0xd3, 0xb7, 0x2f, 0x35, 0x74, 0xf8, 0x40, 0xef, 0x2c, + 0x61, 0x71, 0x54, 0xbf, 0xf4, 0xa8, 0x21, 0x5f, 0x71, 0xbc, 0x95, 0x65, + 0xab, 0x2c, 0x63, 0xd5, 0x5e, 0x10, 0x28, 0xcb, 0xe7, 0x79, 0xbb, 0x1d, + 0xb9, 0x8e, 0x16, 0x02, 0xe9, 0xf2, 0x34, 0x3c, 0x74, 0x58, 0xdd, 0x0a, + 0xd2, 0x05, 0x64, 0xec, 0x5c, 0x83, 0xd7, 0x7d, 0x9e, 0x64, 0xb8, 0x40, + 0x61, 0x12, 0xb6, 0xfb, 0xf8, 0x34, 0xf9, 0x09, 0x6a, 0xda, 0x30, 0x71, + 0x3a, 0x16, 0x23, 0xc0, 0x62, 0x9a, 0xcc, 0x06, 0xd1, 0x71, 0xae, 0x68, + 0x03, 0x94, 0xb8, 0x5d, 0x65, 0x75, 0x7b, 0x7d, 0x8b, 0x44, 0xa4, 0x9b, + 0x4d, 0x70, 0x77, 0xf0, 0x2d, 0x78, 0x7c, 0x24, 0x17, 0x1e, 0x57, 0x06, + 0xd6, 0x1b, 0x71, 0x99, 0x84, 0xd2, 0xdd, 0x4c, 0x68, 0x9b, 0x1e, 0x42, + 0xf4, 0x19, 0x7a, 0xb9, 0xb2, 0xb0, 0xfe, 0xe8, 0x84, 0xbe, 0x5c, 0xe4, + 0xef, 0x61, 0x5a, 0x06, 0xda, 0xe2, 0x6a, 0xe2, 0x2c, 0x00, 0x7e, 0x9e, + 0x8c, 0x6a, 0xed, 0x42, 0x62, 0x5e, 0x4f, 0x40, 0xdb, 0xbe, 0xc2, 0x6c, + 0x80, 0xb7, 0x5e, 0x47, 0x4b, 0x9b, 0x7a, 0x1e, 0xea, 0xb7, 0x64, 0xb6, + 0x2b, 0x7c, 0x59, 0x4c, 0x33, 0x22, 0x09, 0x95, 0x75, 0xdd, 0x17, 0xf7, + 0xba, 0x2c, 0x0b, 0x06, 0xf1, 0x74, 0xce, 0x75, 0xb1, 0xc7, 0x45, 0x14, + 0xbd, 0xec, 0xe6, 0x34, 0x69, 0xe0, 0x61, 0xab, 0xf0, 0x79, 0xcc, 0x7b, + 0xdc, 0x21, 0x59, 0xcc, 0x4a, 0x3a, 0xea, 0x1f, 0xfa, 0xec, 0x4e, 0xbc, + 0xc0, 0xe4, 0xb4, 0x78, 0xd8, 0x04, 0xfc, 0x86, 0x31, 0x47, 0xa0, 0x3b, + 0x0c, 0x3d, 0x2a, 0x57, 0x27, 0xb3, 0xed, 0x18, 0x9d, 0xff, 0xba, 0xc8, + 0x47, 0xcd, 0x8e, 0xd1, 0xa8, 0x5f, 0x14, 0xa4, 0x5f, 0x30, 0x85, 0xc1, + 0x4c, 0xff, 0xc9, 0xb5, 0xfd, 0x9e, 0x84, 0x87, 0xe3, 0x95, 0x6e, 0x09, + 0x31, 0x27, 0x79, 0xc5, 0x27, 0xfc, 0x24, 0xfd, 0x46, 0xf2, 0xbe, 0x28, + 0x5e, 0xe6, 0xfe, 0x2c, 0xa6, 0xbc, 0xd2, 0x70, 0xe7, 0xe2, 0xca, 0x58, + 0xf2, 0xc9, 0x55, 0x91, 0x61, 0xc9, 0x1c, 0xaa, 0x55, 0x08, 0x65, 0x47, + 0x0a, 0x94, 0x26, 0x7e, 0x24, 0xb5, 0xc1, 0xbe, 0x24, 0x7c, 0x0a, 0xbc, + 0x93, 0xc1, 0xce, 0x17, 0x7d, 0x09, 0xed, 0xb1, 0xe2, 0x22, 0xc9, 0x01, + 0x17, 0xa8, 0xfe, 0x29, 0x70, 0x97, 0xf1, 0x70, 0x52, 0x06, 0xde, 0x44, + 0x4a, 0xf4, 0xfc, 0xbe, 0x1c, 0x4c, 0xc5, 0xd7, 0x36, 0x91, 0x0f, 0x2c, + 0x21, 0xa4, 0xe1, 0x3e, 0x66, 0x8f, 0xd4, 0xd6, 0x06, 0x1e, 0x6c, 0x6f, + 0x6d, 0x49, 0x6d, 0x9d, 0x54, 0x60, 0xd7, 0x9d, 0x7e, 0x02, 0x1a, 0x81, + 0xea, 0x08, 0x83, 0xbd, 0xee, 0xef, 0x2e, 0x6b, 0x1a, 0xa2, 0xa6, 0x4b, + 0xd6, 0x50, 0x13, 0x11, 0xb9, 0x44, 0x42, 0x1f, 0x7c, 0x8b, 0x08, 0x88, + 0x84, 0x2b, 0xc1, 0xf9, 0xc7, 0xb0, 0xd7, 0x7d, 0x13, 0xcb, 0xbc, 0xeb, + 0xe9, 0x93, 0x4b, 0xba, 0xd3, 0x27, 0xdb, 0x12, 0x5f, 0x3a, 0xff, 0x83, + 0xda, 0x88, 0x32, 0xe8, 0x3d, 0xae, 0xa0, 0x2e, 0x47, 0x69, 0x9e, 0xed, + 0x02, 0x02, 0xc0, 0xe8, 0x8c, 0x80, 0x75, 0x5d, 0xcd, 0xa2, 0x6f, 0x87, + 0x21, 0x11, 0xd7, 0xbe, 0x13, 0x8d, 0xdc, 0xda, 0x67, 0xbb, 0xcd, 0xdc, + 0x5a, 0x17, 0xbb, 0x7b, 0x99, 0x8c, 0x12, 0x68, 0x44, 0x8b, 0xf3, 0x2d, + 0x35, 0x25, 0xe4, 0x13, 0x31, 0xa0, 0xf6, 0x2e, 0x4e, 0xfb, 0x20, 0xe4, + 0xa9, 0xb0, 0xe5, 0x91, 0xea, 0x39, 0x83, 0x1f, 0xcc, 0x9c, 0xf4, 0xfb, + 0x4f, 0xcd, 0xd3, 0x89, 0x28, 0x99, 0x26, 0xed, 0xb7, 0x38, 0x54, 0x69, + 0x7e, 0x78, 0x1b, 0x45, 0x39, 0x3b, 0xf1, 0xa0, 0x15, 0x9b, 0xdd, 0x0b, + 0xb8, 0x9d, 0xac, 0xec, 0x9a, 0x56, 0x45, 0xad, 0x75, 0x01, 0xe0, 0x5b, + 0xe4, 0x91, 0x77, 0x6a, 0xf2, 0x34, 0x71, 0x8e, 0xb6, 0x0f, 0xab, 0x1c, + 0xaf, 0x4f, 0x5f, 0xf7, 0x43, 0x59, 0x72, 0xa2, 0x49, 0x70, 0x5c, 0x1a, + 0xc8, 0xb0, 0x35, 0x1c, 0x10, 0xe5, 0x93, 0x50, 0x5c, 0xba, 0x61, 0x27, + 0xe0, 0xe0, 0x11, 0x19, 0x0a, 0xae, 0xa5, 0x40, 0x3f, 0x6d, 0x5b, 0x0a, + 0x6a, 0x19, 0x78, 0x30, 0x91, 0x5d, 0x76, 0x82, 0x03, 0xbe, 0xdd, 0x52, + 0xf3, 0x5f, 0xa3, 0x51, 0x40, 0x33, 0x07, 0xa3, 0x34, 0xd1, 0x2a, 0x26, + 0x42, 0xd3, 0x24, 0x08, 0x45, 0x81, 0xef, 0x69, 0x22, 0xb4, 0x08, 0x33, + 0xbf, 0xab, 0xa2, 0x7e, 0x47, 0x4d, 0x3d, 0xbf, 0x97, 0xa2, 0x9e, 0xdf, + 0x4f, 0x4f, 0x27, 0x8d, 0xdc, 0x57, 0xd4, 0xf3, 0x4f, 0xa8, 0xa7, 0xe3, + 0xf8, 0x46, 0xb3, 0x99, 0xa5, 0x7e, 0x5b, 0xea, 0x13, 0x13, 0xdb, 0x16, + 0xf4, 0xb2, 0x62, 0x32, 0x11, 0x80, 0x6c, 0x7e, 0x2b, 0xa2, 0xb7, 0x54, + 0xbb, 0xc6, 0x6d, 0xc3, 0x34, 0x92, 0xd9, 0x82, 0x74, 0x08, 0x2f, 0x3c, + 0x61, 0x59, 0x60, 0xc2, 0x1d, 0x44, 0x10, 0x29, 0x3d, 0xe1, 0x36, 0xa3, + 0x8c, 0x30, 0x65, 0x0a, 0x78, 0x31, 0xa8, 0xa4, 0x6c, 0x96, 0xa0, 0xe7, + 0xa2, 0xb8, 0xf2, 0xbd, 0x2f, 0x55, 0x46, 0x20, 0xba, 0xc1, 0x70, 0xd5, + 0xa7, 0xe3, 0x9e, 0xcd, 0x2d, 0x73, 0xd4, 0xe3, 0xc0, 0xce, 0xdc, 0xaa, + 0x27, 0xfb, 0x67, 0x70, 0xbb, 0xae, 0xbc, 0x62, 0x41, 0x4c, 0x73, 0xf8, + 0x7b, 0x50, 0x74, 0x6b, 0x7d, 0x71, 0xc1, 0xed, 0xec, 0xef, 0x0f, 0xc1, + 0xcb, 0x74, 0x5e, 0xf5, 0xcd, 0x11, 0x36, 0x8b, 0x60, 0x9e, 0x7a, 0x82, + 0x5a, 0x38, 0x40, 0x36, 0x0e, 0xb7, 0xcd, 0x30, 0xfc, 0x12, 0xd7, 0xbc, + 0x56, 0xa9, 0xc8, 0x46, 0xee, 0xa6, 0xad, 0x80, 0x8e, 0x9f, 0xc3, 0xa1, + 0xa2, 0x7b, 0xfe, 0x62, 0x10, 0x7d, 0x6b, 0x78, 0x65, 0x5b, 0xd7, 0x01, + 0x75, 0x59, 0x53, 0xe6, 0x18, 0xeb, 0x84, 0xda, 0xc0, 0xd9, 0x72, 0x0b, + 0x1c, 0x22, 0x1d, 0x38, 0xea, 0x22, 0x27, 0x7d, 0xa3, 0x8e, 0x19, 0x80, + 0x9f, 0xd2, 0x68, 0x12, 0xc9, 0x09, 0x06, 0x92, 0xbe, 0x5c, 0x60, 0x5b, + 0x3d, 0xe4, 0x9d, 0x75, 0x9d, 0xce, 0xe6, 0x0c, 0x66, 0x85, 0xd5, 0x6f, + 0xb8, 0xe4, 0xe6, 0x7a, 0xab, 0x40, 0x4f, 0x37, 0x6a, 0xf4, 0x93, 0xce, + 0x04, 0xb8, 0x4e, 0x7a, 0xd3, 0xe0, 0x6b, 0x14, 0x4b, 0xa1, 0x46, 0xe6, + 0x52, 0x61, 0xcc, 0xe6, 0xe6, 0x75, 0x46, 0x2d, 0xed, 0x92, 0x3a, 0x80, + 0x9a, 0x24, 0x5c, 0x45, 0x5b, 0x53, 0x88, 0xe1, 0x29, 0x0a, 0x70, 0xce, + 0x3d, 0x21, 0xc8, 0xcf, 0x2b, 0x0f, 0x54, 0x8b, 0x11, 0xd6, 0xb8, 0x7d, + 0x6a, 0x3f, 0x8d, 0x73, 0xd1, 0xcc, 0xa9, 0xbb, 0x6a, 0x4a, 0xe0, 0x40, + 0x97, 0x45, 0x49, 0x1a, 0xd4, 0x13, 0xd9, 0xbb, 0xe5, 0xaa, 0x2c, 0xf7, + 0x84, 0x4c, 0x32, 0xc3, 0xde, 0xe3, 0x4a, 0xd9, 0x25, 0xad, 0x74, 0x89, + 0xde, 0x33, 0x92, 0x0f, 0x25, 0xbe, 0xb5, 0xb4, 0x15, 0xca, 0x78, 0x89, + 0xf6, 0xf9, 0xba, 0x7e, 0xb8, 0x21, 0xb8, 0xb9, 0x76, 0x5a, 0xcb, 0x21, + 0xba, 0x66, 0x63, 0x8d, 0x5f, 0x8c, 0xb9, 0x6a, 0x88, 0xe2, 0x6e, 0xea, + 0xd3, 0x67, 0x43, 0x8a, 0x52, 0x2e, 0x35, 0xdc, 0x11, 0xd1, 0x78, 0xfd, + 0x40, 0x8e, 0x3f, 0x15, 0x7d, 0x12, 0xe8, 0xa2, 0x31, 0x46, 0xa4, 0x50, + 0x93, 0x5b, 0xaf, 0x02, 0xf1, 0x51, 0x2b, 0xb4, 0xac, 0xb2, 0x75, 0x69, + 0x7f, 0xc2, 0x5a, 0x4d, 0x4c, 0x1e, 0x4e, 0xcb, 0x40, 0x01, 0x05, 0x95, + 0x5d, 0xd6, 0x94, 0x9c, 0x6f, 0xb0, 0xc1, 0xb8, 0x2b, 0x88, 0x6d, 0x3a, + 0x85, 0x08, 0x99, 0xae, 0x97, 0x24, 0x95, 0x15, 0x7a, 0x99, 0xf4, 0x94, + 0x59, 0xcc, 0xf6, 0x92, 0xd4, 0x18, 0xd0, 0xf7, 0x12, 0x92, 0x18, 0xce, + 0x41, 0x75, 0x61, 0x12, 0xe5, 0x4d, 0xb4, 0xe6, 0x8b, 0x17, 0x31, 0xf2, + 0x03, 0xba, 0xd8, 0xbf, 0xa1, 0x92, 0x88, 0x6d, 0x55, 0xb3, 0xc5, 0x2d, + 0x51, 0x1f, 0xfd, 0x01, 0x21, 0x19, 0x52, 0x43, 0xee, 0x06, 0xb4, 0x73, + 0x3f, 0x0a, 0x37, 0xf6, 0x26, 0x87, 0xb4, 0xd8, 0xb9, 0xdc, 0x40, 0x9b, + 0x6c, 0x21, 0xfc, 0x71, 0xdf, 0xfe, 0x75, 0xef, 0xd9, 0x16, 0xef, 0xc0, + 0xf5, 0xf5, 0xf5, 0xc0, 0x3e, 0xe0, 0x79, 0x86, 0x6a, 0xc6, 0x37, 0x80, + 0x87, 0xe0, 0xbf, 0xe6, 0xb9, 0xc1, 0x32, 0xdc, 0xf8, 0x26, 0xbe, 0x8b, + 0x04, 0xb2, 0x1b, 0x81, 0x6b, 0x51, 0x39, 0x2c, 0x6f, 0x48, 0xfd, 0xc2, + 0x57, 0xa0, 0xba, 0xf5, 0xb5, 0xbc, 0x78, 0x47, 0x7f, 0xe5, 0x08, 0xea, + 0xda, 0xeb, 0x93, 0x77, 0xa7, 0x6f, 0x4e, 0x7e, 0xfc, 0xc7, 0xda, 0x86, + 0xd5, 0x7d, 0xb1, 0x8e, 0x65, 0x17, 0xb5, 0x5d, 0xc1, 0xf9, 0x29, 0x03, + 0x09, 0x40, 0x58, 0xfe, 0x1b, 0x58, 0x86, 0x2c, 0x80, 0xf3, 0x87, 0x85, + 0x1c, 0x35, 0x6c, 0xc2, 0x29, 0x99, 0x02, 0x4c, 0x1a, 0x5c, 0x1d, 0x9d, + 0x3a, 0x90, 0x73, 0xaf, 0x87, 0x7f, 0xea, 0x47, 0x47, 0x81, 0x3a, 0x93, + 0xe3, 0x53, 0xa7, 0x7d, 0xb0, 0x2d, 0xb7, 0x23, 0xbf, 0x85, 0x87, 0x9c, + 0xd9, 0x4a, 0x6c, 0x3e, 0x3c, 0x7e, 0xfe, 0xc6, 0xf7, 0x3c, 0x48, 0x64, + 0xca, 0xdd, 0x04, 0x52, 0xf9, 0xf7, 0xa8, 0xe2, 0x51, 0x1d, 0x23, 0xd5, + 0x14, 0x5b, 0x9f, 0x52, 0x86, 0x0e, 0xfb, 0x4d, 0x68, 0x6e, 0x4f, 0xcc, + 0x67, 0x69, 0x03, 0xde, 0x1c, 0x2e, 0x6e, 0x4f, 0x41, 0x2f, 0x86, 0x40, + 0x79, 0x3d, 0xd4, 0xc3, 0xd4, 0xb1, 0x62, 0x8a, 0xee, 0x15, 0xef, 0x3d, + 0x0b, 0x41, 0x88, 0x61, 0xfe, 0x04, 0xec, 0x31, 0x76, 0x82, 0x74, 0x83, + 0x52, 0x51, 0x6f, 0xfb, 0xcb, 0x9d, 0xc1, 0xf6, 0x93, 0x67, 0x20, 0x88, + 0xb7, 0x36, 0xb7, 0x9f, 0xf4, 0x1a, 0x54, 0x8a, 0x37, 0x33, 0x19, 0x7b, + 0x0a, 0xa8, 0x6e, 0x9b, 0xd6, 0xea, 0x70, 0x0f, 0x1c, 0x19, 0xa8, 0xd7, + 0x51, 0xc4, 0xaf, 0x7c, 0xab, 0xd1, 0xd9, 0xe6, 0x77, 0x4b, 0x1d, 0x93, + 0xc9, 0x7b, 0x78, 0x6b, 0xe4, 0xd3, 0x7b, 0xab, 0x31, 0xe4, 0x0f, 0x7d, + 0x4d, 0x36, 0x6c, 0x70, 0xe3, 0x7a, 0x3a, 0x8b, 0xaf, 0x87, 0xb7, 0xa4, + 0xdf, 0x9e, 0xbf, 0x7c, 0x05, 0xf2, 0x08, 0xfd, 0x56, 0x82, 0xf8, 0x5a, + 0xdf, 0x4c, 0x53, 0x79, 0x9b, 0x74, 0x5a, 0x4e, 0xf9, 0xba, 0xa4, 0x58, + 0x69, 0x18, 0xf3, 0xa4, 0x95, 0x65, 0x6a, 0xc0, 0x95, 0x25, 0x40, 0x2d, + 0xad, 0x3b, 0x23, 0x1c, 0x91, 0x92, 0x23, 0xdd, 0xf6, 0xc3, 0x21, 0xaf, + 0x1b, 0x1a, 0x94, 0x1f, 0x40, 0xb8, 0x10, 0xba, 0xdd, 0x65, 0xca, 0x2d, + 0x08, 0x6f, 0xf3, 0x31, 0xf1, 0xc7, 0x7e, 0x8a, 0x04, 0x51, 0x19, 0xf9, + 0xe3, 0x70, 0x04, 0x79, 0x3f, 0x1b, 0x69, 0xa1, 0xf0, 0x83, 0xf6, 0x71, + 0x99, 0x22, 0x27, 0x3d, 0x1e, 0x3e, 0x1f, 0x3f, 0xaf, 0x89, 0xe4, 0x1b, + 0xfd, 0xae, 0xf9, 0xab, 0x20, 0x7e, 0x18, 0x59, 0x61, 0xc0, 0x60, 0xb3, + 0x8b, 0x9c, 0x6d, 0xf4, 0x57, 0xd9, 0xa8, 0x2c, 0xaa, 0x62, 0x62, 0x7a, + 0xf6, 0x69, 0xb8, 0xed, 0xf8, 0xf8, 0x2c, 0xba, 0x4e, 0x87, 0x8a, 0x6f, + 0x3d, 0xf0, 0x73, 0x34, 0x49, 0x8a, 0x62, 0x0a, 0x71, 0x99, 0xa5, 0x35, + 0x1e, 0xab, 0xc2, 0x32, 0x61, 0x13, 0x44, 0x7c, 0x27, 0x95, 0x1e, 0x50, + 0x14, 0xf0, 0x80, 0x21, 0x47, 0x53, 0x56, 0x3c, 0xe7, 0xa9, 0x27, 0x7d, + 0xe6, 0x92, 0x11, 0x61, 0xd4, 0x46, 0x27, 0xb3, 0x9e, 0x9a, 0x13, 0x48, + 0x26, 0x56, 0x56, 0xe2, 0xd1, 0xa1, 0x51, 0x2f, 0x29, 0x18, 0xef, 0x31, + 0x6d, 0xa9, 0x98, 0x78, 0x28, 0x2a, 0x02, 0xc7, 0x60, 0x54, 0x5e, 0x94, + 0x45, 0x43, 0x94, 0x29, 0xe3, 0xa2, 0xa4, 0x02, 0x2f, 0x82, 0xd1, 0xe4, + 0x5f, 0xa6, 0xf9, 0xa8, 0x58, 0x94, 0x88, 0xca, 0x82, 0xeb, 0xbb, 0x01, + 0x2d, 0xc2, 0x53, 0x04, 0x0a, 0x71, 0xab, 0xe0, 0x36, 0x5b, 0xeb, 0x93, + 0x70, 0xfe, 0xe6, 0x8b, 0x21, 0x62, 0x72, 0x93, 0x4e, 0x60, 0xf5, 0x49, + 0xf7, 0xa0, 0x42, 0xde, 0x6e, 0x3d, 0x0f, 0x0b, 0x62, 0x8c, 0x17, 0x0f, + 0x0e, 0xe7, 0x79, 0x76, 0x11, 0xc2, 0x13, 0x36, 0xb5, 0x3a, 0xd4, 0xd6, + 0xc3, 0x9a, 0x78, 0xb4, 0x22, 0x51, 0x8a, 0x4b, 0x91, 0x2f, 0x4d, 0x3a, + 0xe0, 0x8e, 0x64, 0xc1, 0x78, 0x4a, 0x88, 0xfa, 0x3a, 0x2e, 0xd4, 0x27, + 0xba, 0x4d, 0x1f, 0x77, 0x95, 0x9a, 0x9f, 0x60, 0x6e, 0x8e, 0xf5, 0x4f, + 0x18, 0x73, 0x1b, 0xb1, 0xbf, 0x72, 0x75, 0x49, 0xdc, 0xea, 0x8d, 0x6a, + 0x39, 0x28, 0xee, 0xd9, 0xac, 0x9e, 0x53, 0xc2, 0x4d, 0xa2, 0x8f, 0x3a, + 0x9e, 0xa4, 0x6f, 0x31, 0x1d, 0xb3, 0x42, 0xb4, 0x71, 0xaa, 0xb8, 0xcb, + 0x02, 0x0a, 0xfc, 0xc1, 0x4e, 0x3c, 0x4c, 0xc1, 0xe8, 0x2b, 0xa3, 0xfd, + 0x1a, 0x0d, 0xab, 0x3b, 0x02, 0xb4, 0x45, 0xd2, 0xf5, 0xde, 0xa9, 0xba, + 0xfe, 0x96, 0x87, 0x39, 0x27, 0xf3, 0x0c, 0xa9, 0xe5, 0x04, 0x01, 0x97, + 0x5a, 0xc3, 0xed, 0x0c, 0xb6, 0x3a, 0x40, 0xda, 0x88, 0xc7, 0x34, 0xc6, + 0x50, 0x46, 0xe1, 0x84, 0x92, 0x82, 0x54, 0xee, 0x86, 0x96, 0x6c, 0xb1, + 0x80, 0xe8, 0xb4, 0xac, 0xb6, 0x34, 0x50, 0x11, 0x10, 0xc9, 0x5c, 0x34, + 0x06, 0xbf, 0x70, 0x00, 0x9d, 0xd6, 0xa5, 0x9b, 0x15, 0xad, 0x19, 0x4b, + 0xa1, 0xea, 0xaf, 0xc6, 0x72, 0xa5, 0x51, 0x97, 0xd6, 0x2a, 0x94, 0x9a, + 0xcc, 0xc9, 0x17, 0x75, 0x34, 0xa2, 0x46, 0x4c, 0x17, 0x9c, 0xe2, 0xfc, + 0xe6, 0xc5, 0x61, 0x6b, 0xb8, 0x27, 0x4f, 0x1f, 0x6f, 0x85, 0x33, 0xcd, + 0x9b, 0xa7, 0xf4, 0xfb, 0xa3, 0x68, 0x35, 0xe7, 0xef, 0xcd, 0x5e, 0xbc, + 0xfb, 0x72, 0xf0, 0xed, 0xe3, 0x49, 0xfc, 0x68, 0xb0, 0xfd, 0x9f, 0xff, + 0x7c, 0xd5, 0xfb, 0x98, 0x12, 0x86, 0x06, 0x9d, 0x36, 0x28, 0x93, 0x7c, + 0x6b, 0xd8, 0x9c, 0x20, 0xda, 0x87, 0x3f, 0x96, 0xf6, 0x12, 0x36, 0x87, + 0xab, 0x86, 0x91, 0xcd, 0x0a, 0x35, 0xa6, 0x0d, 0x07, 0xf6, 0x0c, 0xaa, + 0x84, 0x17, 0xca, 0xc3, 0x46, 0x7a, 0x52, 0x41, 0xee, 0xc5, 0x53, 0x88, + 0x1e, 0x1a, 0x51, 0x97, 0x32, 0x0d, 0x6b, 0x5e, 0xe7, 0x06, 0xe6, 0x49, + 0x9e, 0x74, 0x56, 0x52, 0xd9, 0xe4, 0x63, 0x54, 0x25, 0xdf, 0xbe, 0x79, + 0xc9, 0xf9, 0x60, 0x26, 0x48, 0xdf, 0x11, 0xb0, 0xd4, 0xec, 0x60, 0x37, + 0xc1, 0x88, 0x62, 0x82, 0x0b, 0xb8, 0x3a, 0x53, 0x49, 0x1c, 0x2e, 0xe1, + 0xd0, 0x6d, 0xae, 0x52, 0x90, 0xaf, 0x4b, 0x33, 0x17, 0x55, 0xee, 0xb1, + 0x10, 0xdd, 0x5d, 0x9f, 0xc9, 0x1e, 0xa6, 0x78, 0xa7, 0xb6, 0xbb, 0x90, + 0x24, 0x33, 0x2f, 0x15, 0x07, 0xb3, 0x96, 0xa5, 0x75, 0x51, 0x1c, 0x73, + 0x98, 0x31, 0xd6, 0x02, 0x60, 0x6d, 0x6a, 0xd3, 0x51, 0x37, 0xe1, 0x9c, + 0xec, 0x67, 0xa8, 0x9b, 0x70, 0x66, 0xef, 0xd5, 0xb3, 0x79, 0x0f, 0x4e, + 0x7b, 0x35, 0xfa, 0xf5, 0x88, 0x83, 0x28, 0xf8, 0x3f, 0xfb, 0x4e, 0x0c, + 0xda, 0x89, 0x59, 0x0e, 0xa4, 0x75, 0x7b, 0xb0, 0x38, 0xaf, 0x19, 0x99, + 0x73, 0x09, 0x2c, 0xd8, 0xe1, 0xed, 0x87, 0x12, 0x11, 0xba, 0xe5, 0x09, + 0xe0, 0x21, 0xfc, 0x90, 0xdb, 0xbd, 0xa1, 0xaa, 0xc7, 0xf0, 0xeb, 0x81, + 0xe9, 0x2e, 0x54, 0xaa, 0x13, 0xef, 0x5f, 0xff, 0xf6, 0xdd, 0xd2, 0x3f, + 0xfd, 0x42, 0x51, 0xe5, 0x14, 0x55, 0x0c, 0x23, 0x76, 0x55, 0xb5, 0xa8, + 0x1a, 0xaa, 0x0b, 0xa3, 0xf0, 0xe3, 0x91, 0x48, 0x7e, 0x67, 0xa0, 0x61, + 0x1c, 0x19, 0xa5, 0x64, 0x72, 0xad, 0xfd, 0x61, 0x4d, 0x72, 0x12, 0x35, + 0xa5, 0x4a, 0x2c, 0x37, 0x51, 0xf8, 0x65, 0xdd, 0x4a, 0x8b, 0x94, 0xe6, + 0x9a, 0xf8, 0xfd, 0x8d, 0xc5, 0x06, 0xa6, 0x12, 0x5e, 0x42, 0x7b, 0x76, + 0x70, 0xa6, 0xa4, 0x29, 0xb7, 0x76, 0x24, 0xd5, 0x3c, 0x54, 0x5a, 0x1e, + 0x23, 0x2d, 0x78, 0xbe, 0x62, 0x72, 0x7d, 0x0c, 0x18, 0xca, 0x3d, 0xcb, + 0x3b, 0x52, 0x06, 0x7b, 0x48, 0x0a, 0x40, 0x09, 0xff, 0x02, 0xed, 0xac, + 0x0f, 0x26, 0xe6, 0xbf, 0xdd, 0x84, 0xbb, 0x1e, 0xba, 0x80, 0x7b, 0xb8, + 0xf8, 0x77, 0x7f, 0xd8, 0xc6, 0x8e, 0xea, 0xbd, 0xf6, 0x20, 0x8c, 0xaf, + 0x63, 0x48, 0xd9, 0xba, 0x13, 0xd0, 0x97, 0x7f, 0xdb, 0x94, 0x88, 0xbf, + 0xde, 0x47, 0x9f, 0xca, 0xbf, 0x07, 0xf8, 0xe7, 0x4f, 0xdb, 0xf1, 0xe3, + 0x5f, 0xac, 0x79, 0x86, 0x53, 0xff, 0x61, 0xfb, 0xdd, 0x1f, 0x76, 0x7a, + 0x21, 0x2c, 0x53, 0xa7, 0x21, 0x85, 0x83, 0x0b, 0x51, 0x11, 0x6e, 0x80, + 0xa8, 0x52, 0x49, 0xdb, 0x88, 0x26, 0x06, 0xe4, 0x9f, 0x23, 0x66, 0xa3, + 0xb6, 0x60, 0x45, 0xa4, 0x17, 0x9b, 0x41, 0x28, 0xbc, 0x2e, 0xf8, 0x65, + 0x61, 0x4c, 0x0c, 0x29, 0xdc, 0x01, 0xa0, 0xc9, 0xdc, 0xea, 0xc6, 0xc1, + 0x5b, 0xc5, 0x3e, 0x52, 0xda, 0x55, 0xa7, 0x63, 0x4f, 0xe0, 0x63, 0x93, + 0x24, 0x6a, 0x24, 0x30, 0x16, 0xd1, 0x70, 0x18, 0x39, 0x79, 0x8b, 0x5f, + 0x78, 0x2e, 0x94, 0xb1, 0x30, 0x7f, 0xf6, 0xe0, 0xaa, 0x43, 0x00, 0x5e, + 0x74, 0x93, 0x6f, 0x85, 0x86, 0x1d, 0x68, 0x4c, 0x92, 0xcf, 0x9e, 0x53, + 0x8e, 0x3a, 0xb5, 0x98, 0xb8, 0x93, 0xf0, 0xd7, 0x02, 0x89, 0xd1, 0xe4, + 0x3c, 0xd3, 0xcf, 0xf4, 0x3e, 0xa0, 0x9a, 0x48, 0x80, 0xa3, 0xf8, 0x17, + 0x5f, 0xad, 0x48, 0x86, 0x60, 0xc9, 0x36, 0x38, 0x38, 0x6d, 0x07, 0x71, + 0x94, 0xa1, 0xed, 0xa4, 0x98, 0x54, 0xe1, 0xfd, 0x70, 0x77, 0xc2, 0x05, + 0x0b, 0xe2, 0x7d, 0xa2, 0xbd, 0x59, 0x12, 0x67, 0xe3, 0xd6, 0xb6, 0x2e, + 0x93, 0xb6, 0xc5, 0x9b, 0x92, 0x21, 0x62, 0x0b, 0xcd, 0x45, 0x20, 0xb4, + 0x25, 0x11, 0x75, 0x07, 0x1a, 0xdf, 0x00, 0x4b, 0xe3, 0x42, 0x1a, 0xd3, + 0x9c, 0x5b, 0x43, 0x04, 0x2a, 0x19, 0xab, 0x68, 0x2d, 0x5e, 0x8b, 0xd6, + 0x9d, 0xcc, 0xdd, 0x71, 0x52, 0x5d, 0x6e, 0x7c, 0xe1, 0xe7, 0xfb, 0x8b, + 0x57, 0xc7, 0xf2, 0x33, 0xe1, 0x5e, 0x9e, 0x4c, 0x2d, 0xa4, 0xf6, 0x95, + 0x1c, 0x3b, 0x16, 0x3b, 0x3a, 0x1a, 0x16, 0xe3, 0x8c, 0x1a, 0xa5, 0xdf, + 0x88, 0x4b, 0xdd, 0x82, 0x62, 0x58, 0xa1, 0xea, 0xe1, 0xfc, 0x6c, 0x8e, + 0xd3, 0xab, 0xcd, 0x7c, 0x31, 0x9d, 0xee, 0xdd, 0xbe, 0xd7, 0xb0, 0xb3, + 0xe6, 0x71, 0xaf, 0x42, 0x85, 0xa3, 0x04, 0x52, 0xa5, 0x72, 0xb7, 0xc1, + 0x60, 0x1c, 0x2f, 0xc1, 0xd8, 0x65, 0xfb, 0x9f, 0x2c, 0xc5, 0x38, 0x2e, + 0xa2, 0x3b, 0xa6, 0x99, 0xdc, 0x8f, 0x0f, 0x3e, 0x0c, 0x63, 0x5b, 0x71, + 0xe5, 0xfa, 0xbb, 0x9d, 0x50, 0x5e, 0xf3, 0x52, 0x01, 0xee, 0xa5, 0x90, + 0x05, 0xd2, 0xc7, 0x88, 0xa1, 0x18, 0xb9, 0x7e, 0x5b, 0x6e, 0x92, 0xab, + 0xba, 0x6a, 0xca, 0x74, 0x9c, 0xcd, 0x66, 0x40, 0x8f, 0x7e, 0x41, 0x3a, + 0x67, 0xc9, 0x8d, 0x09, 0x67, 0x23, 0x32, 0x09, 0xd6, 0x26, 0x02, 0xd7, + 0x4c, 0xa9, 0xd0, 0x94, 0x7d, 0x2d, 0xc7, 0xf0, 0x45, 0x65, 0x66, 0xd0, + 0xd2, 0xa4, 0xbf, 0x10, 0x97, 0x36, 0xa1, 0xf6, 0x46, 0x31, 0x66, 0x50, + 0x15, 0x09, 0x28, 0xda, 0x66, 0xea, 0x70, 0x19, 0x95, 0xce, 0xec, 0x65, + 0x32, 0x03, 0x27, 0x1b, 0xa5, 0x3a, 0x18, 0x41, 0x15, 0x5d, 0x27, 0x99, + 0xc6, 0xec, 0xa4, 0xb9, 0x13, 0x36, 0x61, 0xb0, 0x31, 0x43, 0x21, 0xdc, + 0x10, 0x0e, 0x41, 0x62, 0x71, 0x0e, 0x3f, 0x20, 0x59, 0x53, 0x26, 0x2a, + 0x77, 0x65, 0x14, 0xcc, 0x59, 0x37, 0x83, 0xe8, 0x73, 0xb6, 0x7b, 0x6d, + 0xc4, 0xcf, 0xfc, 0x43, 0x8c, 0x1e, 0x1c, 0xaf, 0xd1, 0x9f, 0x63, 0x55, + 0x6d, 0x36, 0xb0, 0xca, 0xf8, 0xbf, 0x96, 0xdd, 0x95, 0xed, 0xa5, 0x17, + 0x69, 0xa5, 0x5a, 0x00, 0x3b, 0xf9, 0x2c, 0xf9, 0xd0, 0x8c, 0x64, 0x3f, + 0x6b, 0x46, 0xb2, 0xdd, 0x07, 0x83, 0x48, 0x4b, 0xdc, 0x44, 0xa3, 0x7a, + 0xcf, 0x27, 0x39, 0x2e, 0x82, 0x97, 0x82, 0x35, 0xd9, 0xe6, 0x4a, 0xa4, + 0xff, 0x59, 0x18, 0x9b, 0x00, 0x7b, 0xbd, 0x95, 0xd8, 0x0d, 0xdd, 0x45, + 0x84, 0x93, 0x0e, 0x14, 0xa8, 0x1d, 0x18, 0xea, 0xe5, 0x39, 0xab, 0x0c, + 0xcf, 0x37, 0xc9, 0xbd, 0xbb, 0x4e, 0x88, 0x1e, 0xbf, 0x17, 0x69, 0x3a, + 0x36, 0x5c, 0x08, 0x6b, 0x46, 0x52, 0x9d, 0xaa, 0x28, 0xec, 0x2b, 0x68, + 0x6f, 0xf6, 0xef, 0xef, 0x2b, 0x68, 0x4c, 0x8f, 0x99, 0xaa, 0x1d, 0xf4, + 0x38, 0x59, 0x01, 0x25, 0xb8, 0x89, 0xf8, 0xd1, 0xa0, 0xb4, 0x27, 0x0d, + 0x4a, 0x6b, 0x3c, 0xd8, 0x5d, 0x73, 0x2c, 0x50, 0x95, 0xd4, 0x8e, 0xc5, + 0x52, 0x01, 0x02, 0xa8, 0x1b, 0x02, 0xaf, 0x24, 0x46, 0xc4, 0x07, 0x18, + 0xd0, 0xe8, 0xca, 0xf4, 0x02, 0x3b, 0xe1, 0xa1, 0x2b, 0x0b, 0x5b, 0xb5, + 0x80, 0x5c, 0xce, 0xd3, 0xf2, 0xbf, 0x0f, 0xff, 0xfa, 0xaf, 0xbe, 0x4b, + 0x0b, 0x7e, 0x02, 0xc0, 0xc7, 0xb5, 0x4c, 0xf2, 0xd1, 0x57, 0x56, 0x23, + 0x8e, 0x4f, 0xc1, 0xa1, 0x6c, 0xa1, 0x16, 0x71, 0xa7, 0x46, 0xeb, 0xeb, + 0x25, 0x24, 0x13, 0x53, 0xff, 0x9b, 0xfd, 0xf9, 0x65, 0x99, 0x54, 0xa9, + 0x8f, 0x32, 0x7b, 0xf6, 0x7d, 0x44, 0xb9, 0x36, 0xa7, 0xf0, 0x14, 0x3f, + 0x63, 0x0c, 0x00, 0x69, 0x67, 0x1f, 0xbd, 0x4f, 0x6f, 0xc2, 0x8e, 0x0e, + 0x1a, 0xf9, 0x77, 0x69, 0x65, 0x4f, 0x33, 0x71, 0xe9, 0x2c, 0x25, 0x77, + 0xde, 0xdc, 0x03, 0x56, 0x87, 0x5e, 0x6b, 0xd5, 0x9f, 0x36, 0xb6, 0xa9, + 0xbe, 0x8c, 0x93, 0x2a, 0xf6, 0x98, 0xed, 0x79, 0xbb, 0x25, 0x0c, 0x06, + 0xee, 0xa8, 0x13, 0xf2, 0x3f, 0x17, 0xd8, 0x90, 0x98, 0x5a, 0x6d, 0x6e, + 0x0e, 0x06, 0x9b, 0x68, 0x1d, 0x6f, 0xc2, 0x7f, 0x6c, 0x09, 0x37, 0x79, + 0xca, 0x5a, 0xc3, 0x91, 0x05, 0x8f, 0x93, 0x51, 0xfb, 0x3c, 0xac, 0x81, + 0xc1, 0xc4, 0x07, 0xce, 0xd8, 0xaf, 0xfe, 0xb9, 0x00, 0x5b, 0x82, 0x2b, + 0x33, 0x67, 0x69, 0x79, 0xa1, 0xc9, 0xc4, 0xd6, 0xb5, 0xea, 0x69, 0xfb, + 0x5a, 0x12, 0x53, 0x51, 0x4c, 0x51, 0xfc, 0x07, 0x2e, 0xb8, 0x2f, 0x83, + 0xb2, 0x51, 0x5f, 0x9b, 0xac, 0xd6, 0x0c, 0x10, 0x6a, 0x44, 0x95, 0x2c, + 0x6d, 0xb7, 0xe8, 0x6c, 0xc8, 0x83, 0xd7, 0x21, 0xdb, 0xa1, 0x57, 0x27, + 0x04, 0xb3, 0xa8, 0xc0, 0xe1, 0xe3, 0x29, 0xc0, 0xff, 0x4f, 0xeb, 0xd1, + 0x26, 0x05, 0x42, 0xc6, 0x4b, 0xbb, 0xbb, 0x50, 0xc9, 0x6b, 0xcc, 0x7e, + 0xc2, 0x06, 0x25, 0x64, 0xc0, 0xea, 0xc6, 0xf3, 0xc5, 0x10, 0x09, 0x66, + 0xff, 0x92, 0x4e, 0xe4, 0xeb, 0x60, 0x82, 0x5a, 0xb3, 0x8a, 0x98, 0x9d, + 0x43, 0xec, 0x30, 0x30, 0x8c, 0x4e, 0xe3, 0x5a, 0x78, 0x8b, 0xb8, 0x2a, + 0x02, 0x5e, 0xf6, 0x61, 0xeb, 0x68, 0x12, 0x06, 0x8b, 0x61, 0xa0, 0x64, + 0x0e, 0x38, 0xcc, 0x53, 0x53, 0x24, 0xad, 0x1a, 0x28, 0xe3, 0xcd, 0x50, + 0xc8, 0x8c, 0x46, 0x23, 0xef, 0xaf, 0x87, 0x80, 0x9a, 0x73, 0x5a, 0x8b, + 0x49, 0xcf, 0x91, 0x55, 0xe0, 0x22, 0xe0, 0x24, 0x4e, 0x8f, 0x5e, 0x21, + 0x89, 0x3d, 0x3f, 0x7a, 0x23, 0x0e, 0x7c, 0x4a, 0x79, 0x41, 0x57, 0x0a, + 0x7b, 0x4f, 0xda, 0xfa, 0xc1, 0x84, 0x82, 0x87, 0x4f, 0x1e, 0x51, 0x88, + 0x8f, 0x2e, 0xfa, 0x65, 0xb2, 0xf3, 0xf8, 0x89, 0x2c, 0x5b, 0x9b, 0x73, + 0x93, 0x2f, 0x6c, 0x8d, 0x7f, 0xb5, 0xb9, 0xc9, 0x19, 0x23, 0x18, 0xb2, + 0xf6, 0x4c, 0x6d, 0xca, 0x51, 0xc2, 0x67, 0xff, 0xb2, 0x16, 0x46, 0x71, + 0xd2, 0x28, 0x0f, 0x27, 0x86, 0x60, 0x8a, 0x34, 0xa1, 0x4d, 0xbd, 0x74, + 0x34, 0x69, 0x85, 0x81, 0x94, 0x48, 0x8b, 0x36, 0xb1, 0x4a, 0x3c, 0x00, + 0xbf, 0xb2, 0x66, 0xd4, 0x69, 0x4a, 0x95, 0xa0, 0xfe, 0x4b, 0x24, 0x40, + 0x50, 0x34, 0x6a, 0x77, 0x09, 0x60, 0x9f, 0x8d, 0x0d, 0xaa, 0x98, 0xb4, + 0x47, 0x7e, 0xbf, 0x44, 0x41, 0x64, 0xc2, 0xe3, 0x70, 0x06, 0x96, 0x96, + 0x5b, 0x6e, 0x2f, 0x32, 0x2d, 0x10, 0xe3, 0xcc, 0x0a, 0x4e, 0x66, 0x5a, + 0x0c, 0x3d, 0xb4, 0x7a, 0x25, 0x0c, 0xc3, 0x41, 0x9b, 0x29, 0x29, 0x52, + 0xfd, 0xe6, 0xe0, 0x9f, 0x3a, 0x6d, 0x2d, 0x87, 0x7e, 0x01, 0x69, 0x41, + 0x79, 0x84, 0x8c, 0x40, 0x65, 0x90, 0xdd, 0x39, 0x0b, 0xf7, 0x86, 0x4a, + 0xd4, 0x6e, 0x93, 0xdf, 0xb0, 0x43, 0x29, 0xe5, 0xae, 0xb0, 0x06, 0x29, + 0xbf, 0x68, 0xa5, 0xa7, 0xa9, 0xf7, 0x15, 0xe9, 0xbd, 0x1d, 0x30, 0xc6, + 0x42, 0x67, 0xa7, 0xd5, 0x90, 0x34, 0xac, 0x33, 0x88, 0x87, 0x48, 0xcf, + 0x54, 0xe5, 0x42, 0xe0, 0xf5, 0x8c, 0x08, 0x2e, 0xf0, 0xfe, 0xb4, 0xff, + 0x5e, 0x9b, 0x76, 0x5f, 0xf2, 0x00, 0xed, 0x6e, 0x22, 0xe1, 0x4a, 0x64, + 0xd1, 0xf3, 0x4b, 0x9c, 0xc0, 0xfa, 0x91, 0x54, 0xf0, 0x50, 0xbe, 0xcb, + 0x17, 0x40, 0x3c, 0xfd, 0xe8, 0xba, 0x98, 0x4e, 0xf0, 0x67, 0x6e, 0xba, + 0xce, 0x23, 0xcc, 0x59, 0xea, 0x47, 0x40, 0xee, 0x63, 0x24, 0xb0, 0x3e, + 0x32, 0x07, 0xfc, 0xbc, 0xf6, 0x06, 0xa1, 0xfa, 0x44, 0x21, 0xcc, 0x59, + 0x32, 0x3a, 0x39, 0x03, 0x8d, 0x6f, 0xf0, 0xf4, 0xcf, 0x9b, 0x19, 0xfd, + 0xed, 0xcf, 0xd1, 0xfa, 0xd3, 0xc1, 0xe3, 0x47, 0x83, 0x6d, 0x18, 0xe7, + 0x0c, 0x5b, 0x15, 0xe4, 0x20, 0xf9, 0xd7, 0x09, 0xd6, 0x77, 0xdb, 0x83, + 0xf5, 0x95, 0x2b, 0x73, 0xcb, 0xb2, 0x61, 0x19, 0xbc, 0x68, 0xb6, 0xcf, + 0x65, 0xe1, 0x76, 0x99, 0x8d, 0x2f, 0x78, 0x4a, 0x5f, 0xf0, 0x69, 0x97, + 0x7d, 0x42, 0x07, 0x88, 0x9b, 0x37, 0xc4, 0x4e, 0x48, 0x78, 0xc9, 0x08, + 0xeb, 0x99, 0x3f, 0xa3, 0x2b, 0x04, 0xd2, 0x60, 0xa1, 0x9f, 0x05, 0x74, + 0xb1, 0xb1, 0x02, 0xf8, 0xdf, 0x4a, 0xde, 0xa1, 0xd6, 0xeb, 0x86, 0xa7, + 0x8d, 0xd2, 0xed, 0xed, 0x67, 0xc3, 0xc7, 0xdb, 0xcf, 0xbe, 0x7c, 0x3a, + 0x79, 0xf4, 0xe8, 0xf1, 0xce, 0x78, 0xb4, 0xb6, 0xa2, 0x0e, 0x82, 0xfe, + 0x21, 0x18, 0x95, 0x07, 0x6c, 0x08, 0x1d, 0xee, 0xfc, 0x16, 0x4e, 0x2d, + 0x6a, 0xca, 0x99, 0x92, 0x5a, 0x85, 0xd7, 0x84, 0x57, 0xff, 0x74, 0x67, + 0x77, 0x7b, 0xf3, 0xc9, 0xe0, 0xd1, 0x60, 0xc7, 0x00, 0x41, 0x71, 0x0b, + 0x88, 0x9a, 0x30, 0x06, 0x02, 0xa9, 0xc1, 0x04, 0xf3, 0x90, 0xe5, 0xd2, + 0xc2, 0xce, 0xfc, 0x84, 0x02, 0x83, 0x16, 0x68, 0x01, 0x9b, 0xda, 0x6d, + 0xbb, 0x00, 0xc0, 0x14, 0xbc, 0xf6, 0xf2, 0xe0, 0xf2, 0x18, 0x17, 0x61, + 0xd2, 0x44, 0xf0, 0xb0, 0x86, 0xd9, 0x3f, 0x17, 0x59, 0x0d, 0x26, 0x25, + 0x85, 0x26, 0xd3, 0x21, 0x66, 0x33, 0x5f, 0x57, 0x64, 0xe0, 0xc2, 0x0e, + 0x8c, 0x14, 0xf4, 0x27, 0x60, 0x71, 0x48, 0xef, 0x0a, 0xe2, 0x6d, 0xb6, + 0xea, 0x85, 0x50, 0x7a, 0x33, 0x92, 0x67, 0xf8, 0x44, 0x95, 0x55, 0x35, + 0x48, 0x21, 0xe0, 0xd9, 0xdf, 0x17, 0xd7, 0x48, 0x4c, 0x7d, 0x42, 0xee, + 0x08, 0x34, 0x7b, 0xa2, 0x6e, 0x65, 0x9a, 0x0c, 0xad, 0xfd, 0x0f, 0x79, + 0xff, 0x28, 0x23, 0x54, 0x50, 0x18, 0xb8, 0xd0, 0x90, 0xd3, 0x46, 0x1a, + 0x1f, 0xbc, 0x9c, 0x53, 0xce, 0xd2, 0x04, 0x7d, 0x4f, 0x88, 0x58, 0xcb, + 0x49, 0xb1, 0xb8, 0x7f, 0x62, 0xc1, 0x77, 0x60, 0xed, 0x86, 0x74, 0x2c, + 0x3e, 0xf5, 0x87, 0x2c, 0x43, 0x47, 0xf5, 0x8a, 0x47, 0x5d, 0x59, 0xb7, + 0x92, 0xc5, 0x38, 0x10, 0xc3, 0xf1, 0x38, 0xea, 0xa1, 0xdc, 0x58, 0x35, + 0x04, 0x2e, 0xed, 0x0a, 0xfb, 0xb6, 0x57, 0x21, 0x6b, 0xde, 0x5d, 0x28, + 0xc4, 0xfa, 0xc2, 0xbd, 0xc9, 0x7f, 0xf7, 0xe1, 0xc9, 0x7f, 0xe7, 0x7f, + 0x3e, 0xf9, 0x2b, 0xf5, 0x27, 0x4b, 0x69, 0x5f, 0xfb, 0x4a, 0x44, 0x9f, + 0x89, 0xfc, 0x77, 0x3e, 0x09, 0xf9, 0xef, 0xdc, 0x8f, 0xfc, 0x77, 0x1e, + 0x8e, 0xfc, 0xb7, 0x57, 0x25, 0xff, 0xdd, 0xbb, 0x90, 0x3f, 0x50, 0xda, + 0x14, 0x95, 0xce, 0x06, 0xf9, 0x3f, 0x5a, 0x89, 0xfc, 0x99, 0xfe, 0xe9, + 0x02, 0x74, 0xde, 0x00, 0x5c, 0xb3, 0x8b, 0xff, 0x0e, 0x3a, 0x72, 0xb8, + 0x11, 0xe5, 0xdd, 0xe9, 0x2c, 0xa1, 0x41, 0x75, 0xd4, 0x50, 0x2a, 0xc8, + 0xe0, 0x53, 0x92, 0xd9, 0xee, 0x27, 0x21, 0xb3, 0xdd, 0xfb, 0x91, 0xd9, + 0xee, 0x27, 0xe1, 0xb2, 0xdb, 0xb7, 0x91, 0x59, 0x99, 0x72, 0x6a, 0xe3, + 0x4f, 0x9a, 0x63, 0x0a, 0x73, 0xfd, 0x42, 0x31, 0xab, 0x3d, 0x54, 0xe7, + 0x7e, 0x69, 0xfb, 0x2a, 0x42, 0x06, 0xed, 0xd9, 0xc9, 0xe1, 0x5f, 0xcf, + 0x24, 0x45, 0x52, 0x9a, 0x54, 0xa8, 0x55, 0xc2, 0x01, 0x14, 0x30, 0x54, + 0xa9, 0x6b, 0x89, 0x67, 0xe5, 0x52, 0x91, 0x6d, 0x23, 0xb7, 0x1a, 0x81, + 0x40, 0x44, 0xf4, 0x52, 0x0b, 0x75, 0x69, 0x11, 0x40, 0x91, 0x67, 0x1d, + 0x55, 0xba, 0x27, 0xfb, 0x0c, 0x93, 0x17, 0x22, 0x2b, 0x31, 0xf1, 0xf1, + 0xdc, 0x79, 0x71, 0xbd, 0xbe, 0x2c, 0x09, 0x69, 0x97, 0x1e, 0xdd, 0xd0, + 0x3c, 0xea, 0x65, 0xab, 0x93, 0x75, 0x7d, 0x8f, 0x9e, 0x1d, 0x34, 0x6c, + 0xa3, 0x56, 0x12, 0xb8, 0xe3, 0xac, 0x36, 0xbf, 0xd5, 0x2c, 0x8d, 0x50, + 0x4b, 0x1f, 0xe9, 0x9f, 0xec, 0xec, 0x37, 0xbe, 0xe7, 0x97, 0x00, 0x7c, + 0x60, 0x64, 0x64, 0xc9, 0x40, 0x80, 0x13, 0x86, 0x1b, 0x93, 0x13, 0x84, + 0xac, 0xf9, 0x42, 0x1d, 0xa3, 0x52, 0x6c, 0xe5, 0xaa, 0x18, 0xbd, 0xaf, + 0x1e, 0xc1, 0x90, 0xed, 0xe0, 0x3e, 0xff, 0x22, 0xc1, 0xdf, 0xc8, 0x3f, + 0x1e, 0xe3, 0xc4, 0x04, 0x24, 0xc1, 0xff, 0xbc, 0xa4, 0x7f, 0xe3, 0x94, + 0xda, 0x14, 0xd8, 0xc9, 0x9e, 0x1a, 0x05, 0x37, 0x5a, 0x85, 0x13, 0xbb, + 0x72, 0xb9, 0x39, 0xcb, 0xeb, 0xc2, 0x36, 0x91, 0xb5, 0xdf, 0xcc, 0x00, + 0xa6, 0x72, 0x98, 0x5d, 0x38, 0x47, 0x30, 0x0c, 0x8d, 0xfb, 0xa8, 0x33, + 0x97, 0x8b, 0x2b, 0x88, 0x35, 0xb5, 0x46, 0xec, 0x0e, 0x33, 0x89, 0xe4, + 0xda, 0xb8, 0x07, 0xd0, 0x8f, 0xa8, 0x23, 0x84, 0x8f, 0xcd, 0xb6, 0x98, + 0x19, 0x17, 0xf4, 0xf6, 0xd6, 0x33, 0x3f, 0xb0, 0xf0, 0x56, 0xb1, 0x61, + 0x4d, 0xfa, 0x2c, 0xd7, 0xd6, 0x29, 0x00, 0xbd, 0x31, 0x5f, 0x02, 0x93, + 0x62, 0x12, 0x52, 0xc0, 0xc5, 0x37, 0x4e, 0xd9, 0x53, 0x82, 0xf9, 0xda, + 0xb0, 0x0f, 0xc2, 0xd9, 0x04, 0x0b, 0x4e, 0x2a, 0xef, 0xd8, 0x7f, 0x2a, + 0x90, 0x6e, 0x88, 0x53, 0xc6, 0x25, 0x54, 0x1e, 0x67, 0x44, 0xe7, 0xbd, + 0xe6, 0x35, 0x7f, 0x63, 0x5b, 0x4a, 0xff, 0xf1, 0xd1, 0x16, 0x9e, 0xa8, + 0x8e, 0x82, 0xe1, 0xf3, 0x69, 0x21, 0x1c, 0xea, 0x8f, 0xbb, 0x49, 0x57, + 0xf8, 0x44, 0x79, 0xc0, 0xe7, 0x48, 0x4e, 0x33, 0x93, 0x1b, 0xa2, 0xe4, + 0xeb, 0xa5, 0xf5, 0x29, 0xf1, 0x87, 0x48, 0x82, 0xea, 0xf8, 0x1f, 0xf3, + 0xe3, 0x7b, 0x96, 0x6e, 0x48, 0x18, 0x8f, 0xe7, 0x6a, 0xf8, 0xc8, 0x1f, + 0xef, 0x34, 0x7c, 0xe4, 0x1e, 0x16, 0x4c, 0x20, 0xb4, 0x22, 0xba, 0x9b, + 0xf6, 0x93, 0xd2, 0x06, 0x0c, 0xa6, 0x2e, 0x38, 0x61, 0x6f, 0x1b, 0xad, + 0xd7, 0xfc, 0x10, 0x86, 0x8a, 0xb2, 0x30, 0xae, 0x8a, 0xe6, 0xef, 0xa8, + 0x03, 0xb7, 0xef, 0x35, 0x3b, 0x4e, 0xa6, 0xfd, 0x28, 0x5c, 0xda, 0x4b, + 0xb4, 0xd4, 0x98, 0x64, 0x5c, 0x26, 0xd7, 0x8e, 0xbb, 0x8f, 0xbb, 0x1e, + 0x4e, 0x28, 0x53, 0xcd, 0x16, 0xe6, 0xa1, 0x7f, 0x0c, 0xcb, 0x14, 0x42, + 0xe0, 0x48, 0xd5, 0xa8, 0x4c, 0x25, 0xc3, 0x17, 0xd8, 0x18, 0x8d, 0x35, + 0x4f, 0xcb, 0x11, 0x56, 0x9e, 0x5e, 0xa4, 0xda, 0x59, 0xd7, 0x7c, 0xb5, + 0xb6, 0xc9, 0xa1, 0xb6, 0x43, 0x83, 0x00, 0x0a, 0x9e, 0x13, 0x76, 0x32, + 0xe5, 0xe3, 0xa8, 0x61, 0x72, 0x9f, 0x22, 0x7a, 0xbf, 0xaf, 0x95, 0xaf, + 0x52, 0x47, 0x38, 0x4f, 0xb0, 0x0a, 0xf4, 0x32, 0x9b, 0xb7, 0xb5, 0xa0, + 0xf8, 0xab, 0xe2, 0xab, 0x78, 0x43, 0xae, 0x64, 0x71, 0x85, 0x78, 0xd6, + 0xc9, 0xe8, 0x3d, 0x2d, 0x15, 0x4b, 0x18, 0x2e, 0xc9, 0xf3, 0x2d, 0xea, + 0x01, 0xc1, 0xc4, 0x22, 0x16, 0x13, 0x15, 0x1e, 0x85, 0x12, 0xe5, 0x74, + 0x61, 0x9c, 0x0e, 0xcb, 0xdc, 0x19, 0xa9, 0x1c, 0x76, 0x6b, 0xc2, 0x95, + 0xf6, 0xe8, 0xd5, 0x8c, 0xb0, 0xb4, 0x23, 0xaa, 0x6e, 0x66, 0xc3, 0x42, + 0xe0, 0x6b, 0x8b, 0xf9, 0x7f, 0x97, 0xe0, 0x97, 0x4f, 0xae, 0x77, 0xaa, + 0x2a, 0xb8, 0x7b, 0xf0, 0x2b, 0x08, 0x8a, 0x74, 0xa7, 0x0b, 0xfe, 0x87, + 0x95, 0xb3, 0x4d, 0x63, 0xaa, 0x8e, 0x1a, 0x4b, 0x82, 0x50, 0x53, 0x59, + 0x01, 0xc1, 0x12, 0xab, 0x1d, 0xb4, 0xaf, 0x72, 0xe6, 0xeb, 0x5b, 0x91, + 0x3c, 0x8d, 0x44, 0x9a, 0x88, 0x53, 0x1b, 0xf9, 0x31, 0xa1, 0x03, 0x93, + 0x65, 0x57, 0x8d, 0x2e, 0xd3, 0x19, 0xa3, 0x15, 0xf9, 0x50, 0xb6, 0x98, + 0xe2, 0x99, 0x0b, 0x91, 0x22, 0x19, 0x2f, 0x72, 0xe3, 0xe9, 0xb2, 0x02, + 0x58, 0xdb, 0x9d, 0x72, 0xff, 0xcc, 0x43, 0x18, 0xfe, 0xe8, 0xdd, 0xdb, + 0xd7, 0x67, 0x6f, 0x4f, 0x63, 0xaf, 0xcf, 0xf9, 0x9b, 0xf3, 0xa3, 0xe7, + 0x58, 0x32, 0x79, 0x7e, 0x72, 0x78, 0xf2, 0x32, 0x5a, 0x0f, 0xf4, 0x16, + 0x74, 0x89, 0xc8, 0x90, 0x0d, 0xf7, 0x3d, 0x65, 0x64, 0x31, 0xd9, 0x00, + 0xe6, 0x68, 0x66, 0x09, 0xeb, 0xb8, 0xcb, 0x81, 0x4e, 0x85, 0x72, 0xd7, + 0x5a, 0x31, 0x20, 0x71, 0x24, 0x5f, 0x2c, 0xb8, 0x96, 0xcf, 0x8c, 0xe2, + 0xd6, 0x04, 0x51, 0xb9, 0x6b, 0xa0, 0x6d, 0x64, 0x9f, 0x32, 0x62, 0xb8, + 0x6e, 0xc0, 0xc1, 0x74, 0xee, 0x70, 0xfc, 0x35, 0x0e, 0xed, 0x33, 0x44, + 0xe7, 0x1b, 0xf3, 0x33, 0xcc, 0xc8, 0xc4, 0x4a, 0x92, 0xdb, 0x14, 0x6a, + 0x7c, 0xdb, 0x96, 0x94, 0xc1, 0x48, 0x64, 0xac, 0xf8, 0x54, 0x49, 0x3f, + 0xb6, 0x34, 0x59, 0x2d, 0x27, 0x4a, 0x6e, 0xb5, 0x73, 0x8d, 0xfc, 0xcb, + 0xbc, 0x41, 0x0d, 0x6e, 0x24, 0xa7, 0xb5, 0xc8, 0x8d, 0xa9, 0x35, 0xa0, + 0x8b, 0xee, 0x69, 0x00, 0xfc, 0x0a, 0x6c, 0x7d, 0x2e, 0xee, 0x72, 0xb3, + 0x56, 0xe9, 0xfc, 0x20, 0xd5, 0xaf, 0xf0, 0x00, 0xfe, 0xd6, 0x39, 0xfd, + 0x41, 0x00, 0xb0, 0x5b, 0x5f, 0xc6, 0xd3, 0x44, 0x68, 0x66, 0xbb, 0x28, + 0x1c, 0x0e, 0x45, 0x74, 0x5a, 0x71, 0x35, 0x7f, 0xc7, 0xed, 0xef, 0x4b, + 0x93, 0x27, 0x62, 0xba, 0xa4, 0x4d, 0xe3, 0x9e, 0xb1, 0x02, 0xed, 0x7c, + 0x4c, 0x57, 0xf2, 0x6b, 0x63, 0x13, 0x31, 0x19, 0xad, 0x8f, 0x07, 0xd5, + 0xe7, 0xd3, 0x12, 0xf9, 0xbf, 0xe4, 0xc0, 0xbe, 0x6d, 0x76, 0x36, 0xe6, + 0x55, 0x88, 0x66, 0xc5, 0x50, 0xe6, 0xb4, 0x92, 0x3e, 0x21, 0x48, 0xe3, + 0xc2, 0x5e, 0xe0, 0xba, 0xa2, 0x42, 0xd2, 0x27, 0xbd, 0x70, 0x14, 0x9b, + 0x0a, 0x8e, 0x63, 0xfd, 0xc9, 0xe3, 0xc1, 0xce, 0x46, 0x23, 0x01, 0x14, + 0x13, 0xe6, 0x60, 0xb3, 0xfe, 0x8c, 0xff, 0x55, 0x98, 0x27, 0xfc, 0xfb, + 0xbc, 0xf3, 0xac, 0x9c, 0x6d, 0xa8, 0xfa, 0x8a, 0x63, 0xc6, 0x97, 0xfb, + 0xa2, 0x28, 0xc6, 0x8d, 0x3e, 0x37, 0x9d, 0x9a, 0x9a, 0xdd, 0xa5, 0xcf, + 0x76, 0x95, 0x78, 0xfa, 0xaf, 0x5a, 0x07, 0xb4, 0x82, 0x8d, 0x8a, 0xa3, + 0x78, 0x17, 0xe8, 0xa3, 0xaf, 0x0e, 0x7b, 0x77, 0x29, 0xe0, 0x3a, 0x69, + 0xa8, 0x1b, 0x03, 0x5f, 0x6c, 0xea, 0xed, 0x41, 0xe2, 0x4e, 0x71, 0x7f, + 0x18, 0x23, 0x21, 0x9d, 0x90, 0x11, 0x42, 0x00, 0xf2, 0x7d, 0xfa, 0x25, + 0xa5, 0x9f, 0x9a, 0x2a, 0xdb, 0x71, 0x3f, 0x04, 0xf4, 0x8c, 0x63, 0x24, + 0x23, 0xd7, 0xa4, 0x33, 0x9d, 0x67, 0xd7, 0x80, 0x22, 0xd6, 0xfa, 0xa6, + 0x33, 0xc3, 0xf4, 0x86, 0xf2, 0x14, 0xb3, 0x0f, 0x82, 0xaa, 0x14, 0xfd, + 0x96, 0x96, 0x85, 0x9f, 0x4f, 0x4f, 0x5a, 0x9f, 0xb6, 0xbe, 0x44, 0x37, + 0xcb, 0x15, 0x70, 0x57, 0x12, 0xcd, 0xe6, 0x87, 0x38, 0xab, 0x77, 0x97, + 0xfe, 0x0c, 0xdf, 0x86, 0xa0, 0xf7, 0xc2, 0xeb, 0xcd, 0x6a, 0x32, 0xea, + 0xb8, 0x9b, 0x69, 0xfe, 0xb3, 0x73, 0xb7, 0x05, 0xee, 0x8f, 0xa0, 0xf2, + 0x3d, 0xbc, 0x4d, 0xb2, 0x33, 0xc6, 0x68, 0x31, 0x5b, 0xac, 0x0f, 0x0b, + 0x3c, 0x85, 0xda, 0x84, 0x69, 0xcf, 0x29, 0xe4, 0xe4, 0x0b, 0x9f, 0x18, + 0xd4, 0x8a, 0x34, 0xbf, 0x51, 0x5c, 0x1e, 0x5b, 0xc7, 0x8a, 0xee, 0xa0, + 0x82, 0x02, 0x91, 0x59, 0x6d, 0xbb, 0xda, 0x28, 0x4a, 0x85, 0x59, 0xa2, + 0xbf, 0xa4, 0xe6, 0x9a, 0x43, 0x1c, 0xe9, 0x2b, 0xb3, 0x0d, 0xc4, 0x06, + 0x9a, 0x7b, 0xb1, 0x4e, 0x0d, 0xbe, 0x35, 0x83, 0x9b, 0xe6, 0xd3, 0x11, + 0x97, 0x6e, 0xc3, 0x06, 0xe9, 0xa6, 0xe4, 0x39, 0xa8, 0x16, 0xc3, 0x5f, + 0xd1, 0xdb, 0x8c, 0xb4, 0x98, 0x10, 0x8a, 0x0f, 0x6d, 0x83, 0x78, 0x6e, + 0xe0, 0x58, 0xe1, 0x01, 0xce, 0x04, 0xa9, 0x81, 0x33, 0x84, 0x86, 0xa3, + 0xcc, 0xf2, 0xcc, 0x29, 0x71, 0x8a, 0x9a, 0x40, 0x1d, 0xcb, 0x50, 0xa4, + 0xf7, 0xbe, 0xe8, 0x60, 0xdd, 0xf1, 0x04, 0xaf, 0x22, 0x57, 0xd3, 0xb6, + 0xb4, 0x04, 0xde, 0x4b, 0xae, 0x31, 0x37, 0x78, 0x1a, 0xf8, 0x78, 0xe7, + 0x58, 0xca, 0x81, 0xab, 0xfe, 0x9f, 0xf1, 0x3f, 0xfe, 0x37, 0x34, 0xc1, + 0x41, 0xb0, 0x62, 0x53, 0x78, 0x20, 0x3e, 0x4e, 0x2c, 0x96, 0x5e, 0xef, + 0x9a, 0xc0, 0xe1, 0x1e, 0xcb, 0xc7, 0x26, 0x9e, 0xb1, 0xc2, 0x04, 0x6f, + 0x45, 0x55, 0x23, 0x95, 0x5b, 0x3b, 0x89, 0x59, 0x8a, 0x87, 0xbf, 0x8d, + 0x17, 0x23, 0xc2, 0x3a, 0x11, 0x38, 0xaa, 0x16, 0x28, 0x7b, 0xdb, 0x2e, + 0x1b, 0x95, 0x19, 0xf6, 0xfb, 0xc3, 0x24, 0xe0, 0x64, 0x82, 0x80, 0x24, + 0x25, 0xfe, 0x41, 0xb1, 0x76, 0x92, 0x02, 0x84, 0x95, 0x61, 0x21, 0x75, + 0xe6, 0x45, 0x8d, 0x09, 0x04, 0x74, 0xd5, 0xc7, 0x7e, 0x7b, 0xba, 0x0b, + 0xb8, 0xef, 0x8b, 0xca, 0x3d, 0x12, 0xb5, 0x84, 0x70, 0x58, 0x4e, 0x5c, + 0x46, 0xf5, 0x4c, 0x4a, 0x64, 0x39, 0xed, 0xca, 0x61, 0x74, 0x5e, 0x31, + 0x36, 0xbe, 0xc2, 0x95, 0xb5, 0xe4, 0xc0, 0x55, 0x1e, 0x49, 0x38, 0x9f, + 0x04, 0xb1, 0x81, 0xfa, 0xe8, 0x52, 0x05, 0xd3, 0xcd, 0xbf, 0x6f, 0xda, + 0x0c, 0x7d, 0x5b, 0x49, 0x48, 0x9e, 0x38, 0x42, 0x0e, 0x21, 0xcb, 0xc1, + 0x17, 0x26, 0x6c, 0x30, 0x52, 0x69, 0x18, 0xa6, 0x11, 0xe6, 0x98, 0x04, + 0x91, 0x73, 0x5e, 0x85, 0x78, 0x47, 0x94, 0x51, 0xe3, 0x32, 0x11, 0x4d, + 0x06, 0x73, 0xbc, 0x13, 0xf4, 0xa8, 0x15, 0xa1, 0x7e, 0xb2, 0xa2, 0xa9, + 0x74, 0x2b, 0x94, 0xcb, 0xa4, 0x9f, 0x74, 0x03, 0x45, 0xf9, 0xf7, 0xf0, + 0x5d, 0xdc, 0x3c, 0xfa, 0xed, 0x57, 0x70, 0x93, 0xee, 0x23, 0x02, 0x45, + 0x90, 0xba, 0xba, 0xa5, 0x87, 0x0f, 0xa9, 0x65, 0xd8, 0x52, 0xc7, 0x1c, + 0x14, 0x8c, 0xe6, 0xd4, 0xe7, 0xd8, 0x71, 0x03, 0x78, 0xc9, 0x22, 0xab, + 0x89, 0x18, 0x5b, 0x90, 0x11, 0x8a, 0x53, 0x80, 0x0e, 0x51, 0xe4, 0x3a, + 0x5e, 0x7d, 0x75, 0xae, 0xa9, 0x30, 0xa6, 0xe6, 0x8c, 0xeb, 0x3a, 0x49, + 0x9d, 0x13, 0x2f, 0x28, 0x91, 0x0e, 0x7b, 0xc1, 0xd8, 0xe6, 0x21, 0x24, + 0x17, 0xb6, 0x2b, 0xc3, 0xc1, 0x85, 0x4d, 0x53, 0xbd, 0x02, 0xb4, 0x9f, + 0x8f, 0x63, 0xe0, 0x7e, 0xf3, 0xe5, 0xbe, 0x79, 0xf7, 0x8b, 0x3f, 0x41, + 0x75, 0x7c, 0x73, 0x7c, 0xfd, 0x37, 0x15, 0x31, 0xdb, 0x82, 0xf9, 0x31, + 0x3a, 0x9e, 0xd8, 0xc0, 0xba, 0xa7, 0xab, 0xc9, 0xfc, 0xa5, 0x51, 0xad, + 0xce, 0x3f, 0xf1, 0x6b, 0x7f, 0x9d, 0x27, 0x97, 0x1c, 0xb2, 0xda, 0xb3, + 0x74, 0x22, 0xdf, 0xf2, 0xb0, 0xcd, 0x43, 0xb6, 0xa7, 0xab, 0xa7, 0xd9, + 0x46, 0x5c, 0x68, 0x9e, 0xad, 0x1c, 0xeb, 0x5b, 0x46, 0x81, 0xa6, 0x11, + 0xc9, 0x17, 0x91, 0x0b, 0x08, 0x8f, 0x33, 0x13, 0x7b, 0x46, 0xbc, 0x43, + 0xc6, 0xb2, 0x10, 0xee, 0x83, 0x22, 0xcf, 0x89, 0xaa, 0x60, 0x04, 0x50, + 0x7b, 0x89, 0x4a, 0x88, 0xa1, 0x7e, 0x67, 0x24, 0xbd, 0x68, 0x22, 0x5c, + 0x58, 0x76, 0x4b, 0x6f, 0x2a, 0x77, 0x7b, 0x3f, 0x15, 0x9d, 0xf0, 0xe8, + 0xbf, 0x03, 0x95, 0x84, 0xba, 0xda, 0x75, 0xd1, 0xc9, 0x28, 0x89, 0x39, + 0x12, 0x10, 0x06, 0xc9, 0x6b, 0xf1, 0x85, 0x85, 0x30, 0xef, 0xc3, 0x03, + 0x41, 0xf3, 0x33, 0xfa, 0x96, 0x84, 0x13, 0xa4, 0xe6, 0xd9, 0x47, 0xb5, + 0xbb, 0xa9, 0x6a, 0x86, 0xa0, 0x73, 0x12, 0x10, 0x1b, 0x41, 0x11, 0x6b, + 0x78, 0x19, 0x8c, 0x69, 0x3a, 0x42, 0x14, 0xb0, 0x87, 0x07, 0xa1, 0x8a, + 0x73, 0x07, 0xfb, 0x87, 0xb2, 0x62, 0x6d, 0xd5, 0x1c, 0xe5, 0xe3, 0xa0, + 0x37, 0x41, 0xeb, 0xb3, 0x59, 0x61, 0xb1, 0x01, 0xbe, 0x25, 0xed, 0x9b, + 0x33, 0x12, 0x80, 0x69, 0x39, 0x49, 0x46, 0x5a, 0x63, 0xa7, 0xdf, 0x24, + 0x5f, 0xb1, 0x56, 0x51, 0xaf, 0x94, 0xab, 0x20, 0xfe, 0x6e, 0x03, 0x2a, + 0x8b, 0xdc, 0x86, 0xd4, 0x1f, 0x78, 0x42, 0xed, 0x50, 0xc8, 0x9e, 0x34, + 0xad, 0x99, 0x78, 0x3d, 0x22, 0x74, 0x35, 0xc7, 0x33, 0x9c, 0xb9, 0x35, + 0xd0, 0xb2, 0x27, 0xde, 0x18, 0x24, 0x7d, 0x1d, 0x25, 0x73, 0x00, 0x31, + 0x08, 0x0f, 0x50, 0x92, 0xae, 0xfa, 0xa1, 0xda, 0x8e, 0x49, 0x9a, 0xd4, + 0x0b, 0xc2, 0xd0, 0x22, 0x14, 0x17, 0x02, 0x74, 0x00, 0x22, 0x91, 0xda, + 0xa8, 0x54, 0x96, 0x6c, 0x14, 0x3f, 0x39, 0x54, 0x3d, 0x6d, 0xef, 0x63, + 0x19, 0xfa, 0xc5, 0x82, 0xc3, 0x6a, 0x2a, 0x1c, 0x57, 0x4e, 0x1a, 0x68, + 0x57, 0x51, 0xd9, 0x15, 0x6f, 0x40, 0xac, 0x61, 0x1f, 0x5c, 0xea, 0xd9, + 0x60, 0x37, 0x04, 0x6c, 0xdb, 0xac, 0x2c, 0x6a, 0x52, 0xed, 0x83, 0x3b, + 0x27, 0xdd, 0xc1, 0x57, 0xbd, 0xe6, 0x76, 0x55, 0x2b, 0x76, 0xd4, 0x4d, + 0x30, 0xe1, 0x93, 0x9a, 0x83, 0x24, 0x94, 0x80, 0x4b, 0x17, 0xb7, 0x95, + 0x17, 0x69, 0x02, 0x0c, 0xcf, 0x06, 0x3b, 0xad, 0x1c, 0x7c, 0x59, 0x35, + 0x0e, 0x12, 0xae, 0x7d, 0x3f, 0x13, 0x75, 0x4a, 0xa7, 0xa2, 0xdb, 0xa0, + 0xd8, 0x20, 0xce, 0x2d, 0xa4, 0xdc, 0xde, 0x0e, 0x04, 0x84, 0xd6, 0x3c, + 0x9f, 0xa1, 0x8d, 0x7d, 0x63, 0xfe, 0xc3, 0x03, 0xee, 0xb7, 0x57, 0x63, + 0x9f, 0x97, 0x0f, 0x66, 0xc3, 0x57, 0xe2, 0xa0, 0x2d, 0x80, 0x1a, 0xde, + 0x7c, 0x2a, 0xfd, 0xd0, 0x13, 0x69, 0x1d, 0x89, 0x0b, 0xdc, 0xd5, 0xf2, + 0xed, 0x76, 0x86, 0x7f, 0x1a, 0x83, 0x07, 0xd1, 0x38, 0xdc, 0xd3, 0xa1, + 0x87, 0x3e, 0xea, 0x74, 0x68, 0x84, 0xcf, 0x78, 0x3a, 0x34, 0xff, 0xa6, + 0x01, 0x68, 0x17, 0x7c, 0x8c, 0x07, 0x3b, 0x22, 0x3d, 0x97, 0x0f, 0x7d, + 0xf3, 0xd3, 0x48, 0x04, 0x1d, 0xcf, 0x6d, 0x6f, 0x8a, 0x87, 0x9b, 0xdd, + 0x71, 0x32, 0x30, 0x62, 0x5c, 0xdf, 0xcc, 0xd3, 0x68, 0x1f, 0xff, 0x5c, + 0x72, 0x3a, 0xe6, 0xc1, 0x8f, 0x39, 0x20, 0x33, 0x48, 0xe8, 0x8c, 0x3a, + 0xec, 0x0e, 0x0f, 0xdd, 0xe1, 0x63, 0xaa, 0x5d, 0x5a, 0xcb, 0xc0, 0x74, + 0x7d, 0xf7, 0xa7, 0x2c, 0x3c, 0xef, 0x7b, 0x5e, 0xd6, 0x2a, 0x91, 0xe1, + 0x06, 0x77, 0xb8, 0x1a, 0xc4, 0xb7, 0xf0, 0xcf, 0x9f, 0x44, 0x17, 0xfa, + 0xa5, 0xf3, 0x10, 0x8e, 0xfa, 0x72, 0x10, 0x1f, 0x7b, 0x06, 0x9f, 0x27, + 0x40, 0xfd, 0x89, 0x36, 0x99, 0x4e, 0xf2, 0x2e, 0x3b, 0x9d, 0xcd, 0x2f, + 0xd1, 0xe5, 0xb7, 0x1f, 0xc2, 0x79, 0x75, 0x08, 0x5d, 0x1e, 0x5b, 0x75, + 0x8b, 0xcf, 0x2c, 0x90, 0x10, 0x1b, 0xfb, 0x91, 0x8e, 0xa4, 0xca, 0x89, + 0xf1, 0x54, 0x99, 0x42, 0x03, 0x27, 0x6b, 0xe6, 0x2c, 0x04, 0xc4, 0xc9, + 0xb8, 0x56, 0xea, 0xcd, 0xd3, 0xf1, 0xa8, 0xe3, 0xb6, 0xe6, 0xb3, 0xc0, + 0x09, 0x65, 0x63, 0xfd, 0x15, 0x68, 0x4a, 0x6f, 0x30, 0x00, 0x1e, 0x2d, + 0xe6, 0x1e, 0xf0, 0x2c, 0x57, 0x79, 0xd0, 0x73, 0x3c, 0x62, 0xa3, 0x83, + 0x28, 0x10, 0xc4, 0xdb, 0x37, 0x2f, 0x3d, 0xa7, 0x98, 0x9e, 0x09, 0x25, + 0x5a, 0x54, 0xe9, 0xe6, 0xb8, 0x18, 0x55, 0x9b, 0x55, 0x35, 0xd5, 0x5d, + 0x1a, 0x5c, 0xd6, 0xb3, 0xe9, 0x32, 0x62, 0x93, 0x25, 0x7f, 0x16, 0x1f, + 0xbb, 0x33, 0xff, 0xd1, 0xe1, 0xf3, 0xef, 0x8f, 0x62, 0xf8, 0xf3, 0xec, + 0x20, 0x3e, 0x38, 0x3a, 0xdb, 0x79, 0xfc, 0x24, 0x3e, 0x3c, 0x7c, 0xf5, + 0xec, 0x63, 0x89, 0x50, 0x86, 0xa7, 0x6b, 0xb9, 0x28, 0x31, 0x7e, 0xde, + 0x96, 0x94, 0x77, 0x20, 0xcb, 0x72, 0x6a, 0x3b, 0x6b, 0x2f, 0x21, 0x4b, + 0x79, 0xec, 0x63, 0x6e, 0xbe, 0x0c, 0xf1, 0xd9, 0x0e, 0x43, 0xe6, 0x2f, + 0x53, 0xf4, 0xfb, 0x56, 0x1f, 0xa5, 0xbd, 0xe8, 0x01, 0xc8, 0x90, 0xab, + 0x6f, 0x3b, 0x9b, 0x84, 0xcb, 0x1d, 0x41, 0xc6, 0x45, 0xf0, 0x5c, 0xb0, + 0xf0, 0x1e, 0xd0, 0x47, 0x20, 0xf0, 0x7a, 0xbe, 0x93, 0x40, 0xe6, 0xc2, + 0x77, 0xdb, 0x11, 0x92, 0x86, 0x97, 0xe0, 0x76, 0x83, 0x5e, 0xa6, 0xf8, + 0x54, 0x16, 0xbd, 0x0c, 0xff, 0x99, 0x4c, 0x7a, 0xf2, 0x27, 0xf8, 0xc7, + 0xca, 0xb8, 0x1a, 0xd1, 0x3e, 0xff, 0x77, 0xf3, 0x9b, 0xd0, 0xa5, 0x52, + 0x54, 0x59, 0xda, 0x01, 0x79, 0x01, 0x3d, 0xa1, 0xd2, 0xc1, 0x52, 0xd8, + 0xb4, 0x66, 0xef, 0xd1, 0x29, 0x6b, 0xe9, 0x17, 0x1d, 0x91, 0x17, 0x96, + 0x54, 0x88, 0x65, 0xee, 0x84, 0x80, 0xf1, 0x33, 0xe5, 0xce, 0xb6, 0xf0, + 0x0f, 0x19, 0x78, 0xea, 0xcc, 0x58, 0x99, 0x16, 0xd3, 0xc1, 0x7e, 0x6a, + 0xff, 0x5c, 0x64, 0x70, 0xfd, 0xa8, 0x58, 0xcc, 0x00, 0xee, 0xc4, 0xdf, + 0xe3, 0x96, 0xc8, 0x82, 0x91, 0x0f, 0x08, 0xa4, 0x90, 0x32, 0x00, 0x22, + 0x44, 0x1f, 0x35, 0xdb, 0x5a, 0xe3, 0x53, 0x06, 0xb0, 0x8a, 0x0e, 0x4f, + 0x5e, 0xbf, 0x3e, 0x3a, 0x6c, 0xe7, 0xe8, 0x5b, 0xf0, 0x4e, 0x72, 0x26, + 0x48, 0x24, 0xa5, 0x2d, 0x10, 0x78, 0x76, 0xdc, 0x90, 0xda, 0x64, 0x8f, + 0xca, 0x0a, 0xe0, 0x5f, 0xd7, 0x02, 0x89, 0x4b, 0xbf, 0x16, 0xe9, 0x96, + 0x8c, 0x10, 0x8c, 0x52, 0x68, 0xb7, 0x3d, 0x5c, 0x88, 0x92, 0x89, 0xca, + 0x38, 0xd3, 0xb1, 0x42, 0x7b, 0x9d, 0x5c, 0xf7, 0x14, 0x1a, 0x94, 0xd9, + 0x09, 0xa0, 0x6c, 0x3c, 0xde, 0x14, 0x70, 0x2f, 0x41, 0x54, 0xa7, 0x15, + 0x05, 0xae, 0x8d, 0x2c, 0x70, 0x9e, 0xe2, 0x4d, 0x1b, 0xc7, 0xc5, 0x24, + 0xa6, 0x1c, 0xae, 0x59, 0x52, 0xbe, 0xc7, 0x24, 0x7f, 0x07, 0xab, 0x8c, + 0x80, 0xf4, 0x31, 0x8e, 0x0c, 0x83, 0x4b, 0x23, 0xaf, 0xca, 0xf3, 0xd4, + 0x11, 0x00, 0xa4, 0xa6, 0x98, 0xc9, 0x82, 0x88, 0xf9, 0xe6, 0xf5, 0x1e, + 0x56, 0xff, 0xea, 0xfb, 0x79, 0x7a, 0x8d, 0xf3, 0x70, 0x2f, 0x58, 0xec, + 0x5f, 0x87, 0xd9, 0x5e, 0x7e, 0x7e, 0x6a, 0xbd, 0x28, 0x73, 0x66, 0xbc, + 0x37, 0x7c, 0x48, 0x33, 0xc2, 0xa0, 0x46, 0x94, 0xfe, 0x0a, 0xe1, 0x57, + 0x04, 0x39, 0xd5, 0xdb, 0xa4, 0xef, 0x99, 0x8a, 0xda, 0xf9, 0xb0, 0x0d, + 0x10, 0x2f, 0xc9, 0x60, 0x10, 0xc2, 0x66, 0x2c, 0x4c, 0x3d, 0xf3, 0x10, + 0x96, 0x31, 0x6d, 0x3c, 0xc6, 0x7d, 0x2a, 0xf3, 0xee, 0x30, 0x35, 0x67, + 0x99, 0x74, 0x26, 0xec, 0x3a, 0xfe, 0x0d, 0x6a, 0xc9, 0x8e, 0x39, 0x7d, + 0x08, 0x51, 0x55, 0x5e, 0x10, 0x20, 0x1c, 0xce, 0xfb, 0x8d, 0xb6, 0x20, + 0x63, 0xcc, 0x66, 0x8d, 0xdb, 0x07, 0x80, 0x5f, 0x61, 0xef, 0x30, 0x69, + 0x4d, 0x76, 0x56, 0x13, 0xba, 0x38, 0xef, 0x4e, 0xae, 0x66, 0x96, 0x23, + 0xe2, 0x11, 0x31, 0xfe, 0x06, 0x56, 0xfa, 0x63, 0x72, 0xa0, 0xb4, 0x13, + 0x50, 0xf1, 0xde, 0x7e, 0x13, 0x0b, 0x41, 0xd1, 0x27, 0x62, 0x9c, 0xd2, + 0x39, 0xbe, 0x8a, 0x1d, 0x79, 0x55, 0x3d, 0xce, 0xf2, 0x3b, 0xc7, 0x78, + 0xfc, 0xbe, 0x08, 0x78, 0x19, 0x1c, 0xaa, 0xdc, 0xa4, 0xc8, 0x6c, 0x9b, + 0xe0, 0xcd, 0x5b, 0xca, 0x05, 0x82, 0x91, 0x3d, 0xcb, 0xc8, 0x3e, 0x1d, + 0xac, 0x53, 0x73, 0x9e, 0xde, 0x8f, 0xf1, 0x0b, 0xcc, 0x0d, 0x8f, 0x5f, + 0xc3, 0x19, 0xed, 0x45, 0xff, 0x59, 0x20, 0xbc, 0x92, 0x49, 0x19, 0xed, + 0xe6, 0xe3, 0x77, 0x19, 0x1a, 0x73, 0x80, 0xe3, 0x83, 0x0b, 0xba, 0x20, + 0x70, 0xa1, 0xe7, 0x65, 0x56, 0x3d, 0xe0, 0xe8, 0xdf, 0x03, 0x0b, 0xd9, + 0xbb, 0xdb, 0x70, 0x2b, 0x62, 0x92, 0xcb, 0x3c, 0xd8, 0x5a, 0x28, 0x2c, + 0x41, 0x5a, 0x19, 0x15, 0x35, 0x98, 0xfa, 0xcd, 0xf6, 0x4d, 0x26, 0xb3, + 0x7b, 0xc7, 0xf4, 0x8f, 0xba, 0x45, 0xd7, 0xe7, 0xc5, 0x73, 0x60, 0x88, + 0x4b, 0x79, 0x89, 0x29, 0x14, 0xd4, 0x85, 0x91, 0x5b, 0x42, 0x6d, 0x37, + 0x33, 0xf2, 0x7d, 0xe7, 0x3f, 0xbc, 0x37, 0x7a, 0x5f, 0xb1, 0x02, 0xc3, + 0x91, 0x43, 0xb8, 0xdb, 0xb2, 0x92, 0x30, 0x7d, 0x37, 0x7b, 0x6f, 0x69, + 0x72, 0x1f, 0x43, 0x2c, 0x21, 0x7e, 0x75, 0x25, 0xc9, 0x04, 0xb7, 0x44, + 0x12, 0x9a, 0x7b, 0xd6, 0xd1, 0x3a, 0xe4, 0xa3, 0x3d, 0x94, 0xdc, 0xeb, + 0xe9, 0x5e, 0x2a, 0x0b, 0xaf, 0xeb, 0x63, 0x15, 0x93, 0x41, 0x6b, 0xbc, + 0x50, 0xb3, 0xa9, 0xfb, 0x20, 0x39, 0x73, 0xc3, 0xaf, 0x86, 0xb3, 0x73, + 0x3b, 0xa4, 0xba, 0xaa, 0x5b, 0xb4, 0xcb, 0x56, 0x68, 0xf8, 0x4e, 0x57, + 0x36, 0x18, 0x7c, 0x3d, 0xd2, 0x0c, 0x15, 0xd6, 0x24, 0xef, 0xd7, 0xba, + 0xce, 0x1c, 0xa7, 0xdf, 0x9b, 0x65, 0x95, 0x13, 0x35, 0x6b, 0xfb, 0x38, + 0x43, 0xa2, 0x9d, 0xd9, 0xde, 0xe5, 0x7e, 0xee, 0xb2, 0x26, 0xde, 0xa7, + 0x37, 0x77, 0xf2, 0xa2, 0x99, 0xe7, 0xee, 0x61, 0xc6, 0xf9, 0x93, 0x35, + 0x5b, 0x40, 0x78, 0x7e, 0x34, 0xd7, 0x98, 0x7b, 0x78, 0x27, 0x9a, 0x59, + 0x05, 0x42, 0x06, 0x38, 0x3f, 0x8c, 0x28, 0xf3, 0xfc, 0x41, 0xbc, 0x3b, + 0x06, 0x56, 0x66, 0x25, 0xcb, 0x8e, 0xb0, 0x45, 0xe0, 0x8f, 0xa5, 0xa7, + 0xf0, 0x31, 0x76, 0xf4, 0x2a, 0x95, 0xf7, 0x0f, 0x9c, 0x32, 0xf1, 0x29, + 0xb6, 0x98, 0x4f, 0x71, 0xf5, 0x7d, 0x36, 0xa2, 0xee, 0x96, 0x40, 0xbb, + 0x35, 0xa3, 0x5f, 0x1b, 0xe1, 0xb8, 0x7e, 0x76, 0xfa, 0xfa, 0xe8, 0xbb, + 0x93, 0x8d, 0x90, 0x49, 0xed, 0x15, 0xef, 0x3a, 0x06, 0xf6, 0x52, 0x93, + 0xda, 0xca, 0x5e, 0xd7, 0xaa, 0x0e, 0xd4, 0xa2, 0x85, 0x16, 0x22, 0xf5, + 0x0a, 0xab, 0x59, 0xd8, 0x76, 0xc6, 0x4f, 0x65, 0x64, 0xdb, 0x19, 0x1e, + 0xd8, 0xce, 0x5e, 0xdd, 0xb4, 0x46, 0xcc, 0xf5, 0x5b, 0x2b, 0x04, 0x78, + 0x7b, 0x03, 0x7d, 0x40, 0x34, 0xe0, 0x7b, 0x5f, 0x7f, 0x09, 0x21, 0xbe, + 0x37, 0xbc, 0x25, 0x34, 0x4b, 0xe3, 0xd8, 0xee, 0x62, 0x5c, 0x06, 0x0e, + 0xf1, 0xd3, 0x34, 0x8f, 0x70, 0x06, 0x5f, 0x76, 0x74, 0xf7, 0x57, 0x5a, + 0x3d, 0x0a, 0x71, 0xcf, 0x30, 0xd0, 0xb0, 0x81, 0x7f, 0xb1, 0x0c, 0xb3, + 0xcc, 0x72, 0x48, 0x7a, 0xea, 0x23, 0x58, 0xe4, 0xbd, 0xf0, 0xcb, 0x1e, + 0x8c, 0x45, 0x36, 0x31, 0xcd, 0x1e, 0x94, 0x6d, 0x7a, 0x25, 0x70, 0x66, + 0xf4, 0x3b, 0x70, 0xcc, 0xbb, 0xc3, 0x5f, 0x85, 0x99, 0x68, 0x17, 0x02, + 0x96, 0x41, 0x6d, 0xeb, 0x86, 0xbf, 0x6a, 0xe6, 0x9e, 0xb8, 0x49, 0x68, + 0x5d, 0xe8, 0x57, 0xff, 0x57, 0xc2, 0x5f, 0x35, 0xf0, 0xaf, 0xd0, 0xcd, + 0x45, 0x78, 0x40, 0x01, 0x08, 0x2c, 0xa7, 0xb1, 0x2e, 0xe3, 0x5f, 0x2d, + 0x83, 0xbf, 0x72, 0xd0, 0xaf, 0x96, 0x80, 0x5f, 0x91, 0xb6, 0xb6, 0x14, + 0xfe, 0xea, 0x9e, 0xf8, 0x57, 0x1d, 0xf0, 0x57, 0xf7, 0x45, 0xbf, 0x7a, + 0x18, 0xf8, 0x2b, 0x57, 0x61, 0xbd, 0x0f, 0x66, 0xd1, 0x7d, 0x14, 0xd6, + 0x5b, 0x5c, 0x1d, 0x1f, 0x0b, 0x5c, 0xe4, 0x0f, 0xf2, 0x80, 0xf0, 0x45, + 0x8d, 0x71, 0x97, 0x2a, 0x63, 0x5f, 0x86, 0x58, 0x0b, 0xd2, 0x6a, 0x36, + 0x92, 0xb6, 0x12, 0xfb, 0xf8, 0xe7, 0xd7, 0x4b, 0x1c, 0x59, 0xcd, 0x62, + 0x69, 0xa7, 0x24, 0x4e, 0x86, 0xe1, 0xc2, 0x0b, 0xeb, 0x5b, 0x8e, 0x7c, + 0x64, 0x5b, 0xb9, 0x46, 0xe1, 0xe4, 0xe2, 0xf0, 0xb2, 0x3e, 0xe1, 0xc9, + 0x2f, 0x3f, 0xf8, 0xc6, 0x2a, 0x7a, 0xd5, 0x65, 0xb9, 0x18, 0x02, 0x2f, + 0xba, 0xe9, 0xdd, 0x57, 0x75, 0x6a, 0x8c, 0xe7, 0xe5, 0xc6, 0x78, 0x47, + 0x53, 0x4d, 0x63, 0xda, 0x70, 0xec, 0x82, 0xe3, 0x85, 0x9c, 0xac, 0xcc, + 0x6d, 0x3d, 0xf7, 0x00, 0x86, 0x7b, 0x7b, 0xc4, 0xe5, 0xcd, 0xe7, 0x5b, + 0xc3, 0xb5, 0x61, 0x3b, 0xba, 0x2d, 0xf8, 0xd6, 0x34, 0xf7, 0x3c, 0xa3, + 0xd6, 0x5a, 0x3f, 0xd2, 0xba, 0x69, 0x0f, 0xb7, 0xba, 0x79, 0x43, 0x23, + 0x2c, 0xea, 0x22, 0x1e, 0x4d, 0x33, 0xe0, 0xe7, 0x94, 0x6a, 0xb0, 0xfc, + 0xec, 0x5a, 0x0f, 0x3f, 0xd4, 0x01, 0xb6, 0x87, 0xed, 0x52, 0x55, 0x63, + 0xbf, 0x1c, 0xbb, 0x7d, 0x94, 0x4d, 0x97, 0x8c, 0xc1, 0x5f, 0x11, 0xc7, + 0x3b, 0x1d, 0xae, 0xd5, 0xc4, 0x3d, 0xc7, 0x74, 0xf3, 0xc0, 0x5b, 0xcb, + 0xfa, 0x88, 0x53, 0x6f, 0x7f, 0xe0, 0x47, 0xa7, 0x4b, 0x05, 0x47, 0x15, + 0x54, 0x7e, 0x27, 0x75, 0x4a, 0x1b, 0xec, 0x44, 0xa1, 0x74, 0xa9, 0xa7, + 0x4f, 0x43, 0x44, 0x51, 0x4f, 0xab, 0xed, 0x5d, 0x9b, 0x49, 0x22, 0x7f, + 0x59, 0x60, 0x73, 0x9d, 0x50, 0x56, 0x89, 0x28, 0x73, 0x36, 0x35, 0x44, + 0xca, 0x40, 0x38, 0x0b, 0x83, 0xde, 0xab, 0x96, 0x65, 0x87, 0xb4, 0x86, + 0xa3, 0x0e, 0x7a, 0x2e, 0x25, 0x91, 0x49, 0x85, 0xd8, 0xb3, 0x6a, 0x03, + 0x54, 0xa4, 0xd0, 0x6c, 0x0f, 0x76, 0x83, 0x99, 0x23, 0x6d, 0x3f, 0x31, + 0xcf, 0xbf, 0x2c, 0x9d, 0x84, 0xb2, 0x49, 0x16, 0x73, 0x4e, 0xba, 0x25, + 0x5d, 0x09, 0xc6, 0xd6, 0xcc, 0x96, 0xd0, 0x70, 0x9f, 0x2e, 0xab, 0xa4, + 0xd9, 0xb6, 0x2b, 0x63, 0xe5, 0x18, 0x3b, 0xf9, 0x4c, 0xb9, 0x5c, 0x71, + 0xec, 0xe0, 0x18, 0x11, 0x8d, 0xb5, 0x72, 0x83, 0x3b, 0xc0, 0x2c, 0xb7, + 0x07, 0xf0, 0xff, 0x50, 0xa7, 0xa1, 0x1a, 0xb4, 0x40, 0xff, 0xa3, 0x24, + 0x1a, 0x67, 0xe8, 0x7d, 0xc7, 0x40, 0x96, 0x03, 0xd6, 0xe8, 0x1f, 0x8d, + 0xf4, 0x11, 0xc1, 0x28, 0x00, 0x8a, 0x31, 0x56, 0x31, 0xdb, 0x7b, 0x66, + 0x76, 0x9d, 0xea, 0x16, 0x79, 0x86, 0x60, 0x2f, 0xb9, 0x66, 0xfe, 0xca, + 0x2d, 0x75, 0x3c, 0x1e, 0x65, 0x7e, 0x36, 0x51, 0xdb, 0x5c, 0x06, 0x7c, + 0xfd, 0xbb, 0x83, 0xa3, 0xb3, 0x77, 0xdb, 0x3b, 0xcf, 0xde, 0x7d, 0x77, + 0xf8, 0xea, 0xdd, 0xd9, 0xf7, 0x07, 0xa8, 0xdd, 0xdf, 0x53, 0xec, 0x36, + 0xc6, 0x6e, 0xe7, 0xdc, 0x34, 0x37, 0x6c, 0x49, 0x1e, 0xe4, 0x93, 0xed, + 0x8e, 0x8b, 0x8d, 0xf6, 0xf2, 0x5d, 0x7c, 0xb8, 0xee, 0xa3, 0x1f, 0xe3, + 0xc6, 0x75, 0xc7, 0xf9, 0xac, 0x07, 0x66, 0x56, 0x71, 0xf6, 0xe6, 0xf4, + 0xd3, 0x98, 0xc7, 0x30, 0x09, 0x81, 0x82, 0xdf, 0x2e, 0x75, 0xe1, 0x49, + 0x83, 0x14, 0xb4, 0xcf, 0x30, 0x40, 0x4b, 0x4f, 0xc2, 0x3c, 0xfc, 0x11, + 0xce, 0x0a, 0x77, 0x98, 0x5b, 0xce, 0xe1, 0x53, 0x66, 0xa5, 0xba, 0xcb, + 0x68, 0xfa, 0x87, 0x3e, 0xe3, 0x61, 0x90, 0xcb, 0x2a, 0x68, 0x4f, 0x34, + 0x8e, 0x81, 0x1e, 0xfb, 0xb8, 0x23, 0xa0, 0x21, 0x3e, 0x57, 0x6a, 0x9a, + 0xce, 0x5f, 0xcd, 0x48, 0xb7, 0xfd, 0x44, 0xdb, 0xae, 0xc7, 0x7b, 0xb7, + 0xad, 0xbf, 0xda, 0xee, 0xda, 0x71, 0x82, 0x3f, 0xa4, 0x27, 0x1e, 0x40, + 0xc7, 0xe4, 0x71, 0x3e, 0x95, 0xff, 0x93, 0x47, 0x7f, 0xa8, 0x0d, 0x5d, + 0xb6, 0x71, 0x6f, 0xfb, 0x4d, 0x3f, 0xeb, 0x7e, 0xa3, 0x6b, 0xef, 0xd7, + 0xc1, 0x6c, 0xdd, 0x1b, 0x76, 0xa9, 0x39, 0x8d, 0x57, 0x1b, 0x48, 0x65, + 0xac, 0x98, 0x59, 0x33, 0x78, 0x79, 0xc3, 0xe4, 0x10, 0x7d, 0xa3, 0x5a, + 0x80, 0x63, 0x24, 0xa6, 0x62, 0xe9, 0xec, 0xec, 0xf4, 0x38, 0xe6, 0x1a, + 0x6c, 0x29, 0x3d, 0x92, 0x96, 0xe3, 0x0c, 0x6e, 0x14, 0xa5, 0x19, 0x45, + 0xdd, 0xa3, 0xd7, 0x1d, 0x16, 0x37, 0x75, 0xa9, 0x0b, 0x75, 0xd3, 0xe6, + 0x7c, 0x00, 0xed, 0x96, 0x57, 0xbb, 0xad, 0x15, 0xaa, 0x74, 0xea, 0x57, + 0x1b, 0x2f, 0xf9, 0x70, 0x72, 0x46, 0x91, 0xb2, 0x99, 0xe6, 0x57, 0x59, + 0x59, 0xe4, 0x94, 0xc5, 0x33, 0x34, 0x69, 0x6d, 0xa4, 0x16, 0x79, 0x4d, + 0x85, 0xc9, 0x1d, 0xe8, 0x00, 0xa5, 0x39, 0xfe, 0xa6, 0xbd, 0xa8, 0x17, + 0xbf, 0x8d, 0xf6, 0xfc, 0x96, 0xf6, 0x27, 0xb9, 0x94, 0x95, 0x51, 0x0e, + 0x5a, 0x49, 0x46, 0x26, 0xd5, 0x8c, 0x89, 0x87, 0xea, 0x12, 0x38, 0x41, + 0xe5, 0x84, 0x04, 0x54, 0xfd, 0xd3, 0xd4, 0xa2, 0x90, 0x17, 0x0d, 0xce, + 0x6a, 0x84, 0x39, 0x54, 0xa8, 0xfc, 0x62, 0x16, 0x95, 0x49, 0xb4, 0x63, + 0xf7, 0x59, 0x4e, 0xe0, 0x03, 0x82, 0xdf, 0x80, 0xe9, 0x0e, 0xa3, 0x32, + 0x1d, 0x73, 0xb1, 0x79, 0x15, 0x74, 0xca, 0xcd, 0x8b, 0xaa, 0xca, 0x86, + 0xa0, 0x5a, 0x5e, 0x88, 0x52, 0x57, 0xa5, 0x8c, 0x05, 0xc3, 0xf9, 0x11, + 0xb8, 0x87, 0xa6, 0x9f, 0x21, 0x95, 0x6e, 0x4b, 0xb9, 0x5f, 0x12, 0xc8, + 0xec, 0xbb, 0x91, 0xa4, 0x0e, 0x54, 0x2f, 0xaf, 0x32, 0x1c, 0x96, 0xe9, + 0x2b, 0x89, 0x66, 0x05, 0x6f, 0xb2, 0xc0, 0x3e, 0x4e, 0xb1, 0x61, 0x2e, + 0x30, 0x8a, 0x33, 0x02, 0x90, 0xad, 0xd2, 0xbc, 0xca, 0x7c, 0x9a, 0xbb, + 0x12, 0x44, 0x2e, 0x8b, 0x8e, 0x58, 0xa6, 0x08, 0x8a, 0x70, 0x95, 0xca, + 0x19, 0x8a, 0x2b, 0xd7, 0xb4, 0xf9, 0x44, 0x78, 0xb1, 0x59, 0x86, 0xbd, + 0x67, 0x7c, 0xfc, 0x8d, 0x9c, 0x5a, 0x9f, 0x2b, 0x2f, 0xa1, 0x05, 0x44, + 0xc8, 0x42, 0xfc, 0x44, 0xa3, 0xb0, 0x56, 0xf3, 0xd6, 0x1a, 0x56, 0x7c, + 0x01, 0x3b, 0xa2, 0xd3, 0xbf, 0x8b, 0x56, 0x63, 0x08, 0x7b, 0x6f, 0xfe, + 0xb1, 0x11, 0x32, 0xbc, 0x15, 0x0e, 0x9b, 0x71, 0xb8, 0xfb, 0x0a, 0x50, + 0x9f, 0xcd, 0x06, 0xba, 0xcb, 0x80, 0x2f, 0x1d, 0xf8, 0x43, 0xaf, 0xfd, + 0x74, 0x18, 0xf1, 0x72, 0x92, 0x7d, 0xa0, 0x86, 0x27, 0x7e, 0x52, 0x11, + 0x43, 0x75, 0xb8, 0x01, 0x03, 0x04, 0x74, 0x91, 0x88, 0x13, 0x23, 0x3a, + 0x46, 0x35, 0x75, 0x71, 0xa4, 0xd6, 0xd6, 0x49, 0xa3, 0x44, 0x3d, 0xf0, + 0x15, 0x16, 0x15, 0xb3, 0x81, 0x83, 0x69, 0x61, 0x30, 0x91, 0xc0, 0x2c, + 0x08, 0x26, 0x81, 0xd5, 0x72, 0x12, 0xad, 0xcf, 0x2e, 0x04, 0x0f, 0xb3, + 0x1b, 0x01, 0xd3, 0x47, 0xa4, 0xc8, 0x3e, 0x00, 0x83, 0x24, 0xf0, 0x5b, + 0x9c, 0x24, 0xad, 0x39, 0x4b, 0xd1, 0xa2, 0x88, 0x4d, 0x74, 0x7a, 0x8d, + 0x6f, 0x9c, 0x81, 0xa6, 0x40, 0xb5, 0x58, 0x01, 0xfc, 0x2d, 0x6d, 0xc5, + 0x83, 0xbf, 0xa2, 0x9c, 0xce, 0x41, 0x94, 0x0e, 0x2e, 0x06, 0xce, 0xfa, + 0xcd, 0x9b, 0x9b, 0x18, 0x19, 0xd9, 0xac, 0x8b, 0x4d, 0x9e, 0x76, 0x80, + 0xff, 0xf9, 0x22, 0x08, 0x71, 0xaa, 0xe7, 0x27, 0x09, 0x3d, 0x5c, 0xfd, + 0x8a, 0xfa, 0x8a, 0x89, 0x6c, 0x2a, 0x05, 0xda, 0xe3, 0xe1, 0x13, 0x0c, + 0xac, 0xce, 0x6f, 0xb7, 0xe0, 0x64, 0x3b, 0x8a, 0xfc, 0xdb, 0x80, 0x93, + 0x3f, 0xae, 0xd5, 0xf3, 0xc1, 0xf3, 0xe1, 0xcb, 0x6d, 0x5c, 0x27, 0xb8, + 0xcc, 0x6e, 0xb3, 0x83, 0x7e, 0x54, 0x82, 0xd1, 0x8f, 0xb8, 0x19, 0xb6, + 0x60, 0x96, 0x9b, 0x1d, 0x38, 0xed, 0x0d, 0x9c, 0x2e, 0x09, 0x6d, 0xb7, + 0x86, 0x93, 0x74, 0xf9, 0xec, 0x69, 0xa8, 0x6a, 0xf5, 0x6d, 0x5e, 0xa6, + 0xa3, 0xe2, 0x22, 0xcf, 0x7e, 0xa3, 0xfe, 0xe5, 0xe8, 0x79, 0x69, 0xe3, + 0xbd, 0x35, 0x70, 0x57, 0x15, 0x04, 0x41, 0xa1, 0x36, 0xc2, 0x13, 0xb6, + 0x3e, 0x3c, 0x3a, 0xc8, 0x47, 0x19, 0x65, 0xfd, 0x72, 0x98, 0x4c, 0x88, + 0x08, 0x51, 0x98, 0x11, 0x9c, 0x26, 0x1d, 0x1b, 0xc4, 0x39, 0x0f, 0x8d, + 0x04, 0x71, 0xea, 0x2a, 0x6d, 0xba, 0x3e, 0xb6, 0x57, 0x82, 0x19, 0xe5, + 0x7f, 0x03, 0xdc, 0xd4, 0x46, 0x25, 0x35, 0x23, 0x90, 0x21, 0x2c, 0xde, + 0x07, 0x96, 0x69, 0x0d, 0xb9, 0xec, 0xf4, 0x0a, 0xe6, 0x0c, 0xb4, 0x00, + 0x4b, 0xe5, 0xc5, 0x6b, 0x96, 0xf6, 0xa2, 0xe2, 0x56, 0x23, 0x0c, 0x12, + 0x99, 0xd1, 0xcd, 0x77, 0x47, 0x34, 0x0d, 0x94, 0xd5, 0x8d, 0x91, 0x84, + 0x12, 0x16, 0x6d, 0x6b, 0x5e, 0xa4, 0x70, 0x33, 0x78, 0xaf, 0x87, 0x7f, + 0xea, 0x9a, 0xe1, 0xfb, 0x7d, 0x28, 0x40, 0xcc, 0x6a, 0xd4, 0xf6, 0xe0, + 0x92, 0x35, 0x87, 0x37, 0x59, 0x7a, 0xab, 0xa1, 0x27, 0xe7, 0x8a, 0x50, + 0x63, 0x1d, 0x76, 0x44, 0x0f, 0x30, 0x16, 0x55, 0xec, 0x27, 0x64, 0x8b, + 0x17, 0x48, 0x10, 0xba, 0x79, 0x67, 0xf1, 0xdd, 0x01, 0x5e, 0x0e, 0x44, + 0xba, 0x96, 0x59, 0xd0, 0x11, 0x88, 0xfc, 0xc3, 0x45, 0xd6, 0xf5, 0x12, + 0xe6, 0x89, 0x2d, 0x39, 0xeb, 0xe3, 0x64, 0x4c, 0x49, 0x86, 0x4e, 0x14, + 0x43, 0xaa, 0xa9, 0x55, 0x90, 0xe7, 0x0e, 0xc1, 0x5d, 0xb2, 0x49, 0xc0, + 0x31, 0x44, 0x0a, 0xd9, 0x82, 0x9a, 0x81, 0x28, 0x6c, 0xb2, 0x21, 0x94, + 0x3e, 0x72, 0x5e, 0x04, 0x72, 0x31, 0x2c, 0x22, 0x8a, 0xe7, 0x8e, 0x28, + 0xf5, 0xd2, 0xc5, 0x69, 0x98, 0x0e, 0x7f, 0xd0, 0x27, 0x40, 0xdb, 0xbd, + 0x17, 0xdc, 0xee, 0xa7, 0x45, 0xdb, 0xb5, 0x82, 0x92, 0x98, 0xb7, 0x27, + 0x26, 0x8d, 0x22, 0x76, 0x9d, 0xdc, 0x68, 0xef, 0x6a, 0x61, 0x38, 0x48, + 0xe5, 0x5e, 0xd4, 0xd8, 0xbb, 0x47, 0xfd, 0x48, 0x72, 0xe6, 0xdb, 0xb8, + 0x3b, 0xc2, 0xac, 0x19, 0x22, 0x12, 0x18, 0xc6, 0x46, 0x40, 0x8f, 0x22, + 0x78, 0x1f, 0xe4, 0xb3, 0xb8, 0x69, 0xa4, 0x87, 0xfc, 0xd9, 0x1c, 0x47, + 0x38, 0x28, 0x2d, 0x89, 0xf5, 0xaa, 0xf1, 0x88, 0xa7, 0x21, 0x19, 0x31, + 0x44, 0x35, 0x42, 0xed, 0x21, 0x34, 0x56, 0x4a, 0xfd, 0x50, 0xb9, 0x70, + 0x99, 0xb6, 0x26, 0x8a, 0x4f, 0xfb, 0x9e, 0xdb, 0x70, 0x52, 0xcf, 0x63, + 0x64, 0x52, 0x7d, 0xdc, 0x16, 0xa1, 0xd9, 0xa0, 0x38, 0x25, 0x9d, 0xcd, + 0x51, 0x66, 0x3e, 0x57, 0xb2, 0x46, 0x23, 0x01, 0xe6, 0x7e, 0xb0, 0xc4, + 0x02, 0x43, 0x7c, 0x87, 0x1c, 0xa6, 0xed, 0xc1, 0x56, 0xb4, 0xef, 0x68, + 0x6a, 0x5f, 0xdf, 0xaa, 0xaa, 0x11, 0x07, 0xc2, 0xd7, 0x14, 0x55, 0xbd, + 0x21, 0x09, 0x54, 0x14, 0x90, 0xaa, 0x0b, 0xbb, 0x1d, 0x56, 0x72, 0xf0, + 0x48, 0x59, 0xd9, 0x52, 0xc6, 0x8f, 0x50, 0x54, 0xf8, 0x7e, 0x07, 0xeb, + 0x4f, 0x05, 0x0b, 0xcc, 0x78, 0x9e, 0x47, 0x29, 0x9c, 0x63, 0x7d, 0x9d, + 0xa6, 0xe2, 0x54, 0xd7, 0x76, 0xe4, 0x0e, 0x7f, 0xd4, 0x86, 0x52, 0x1f, + 0xfa, 0x61, 0x57, 0x72, 0x9f, 0xf1, 0x64, 0x90, 0xd5, 0xd6, 0x60, 0x9d, + 0x08, 0x18, 0x17, 0xca, 0x5c, 0xad, 0x06, 0xf2, 0x58, 0x13, 0xad, 0xbf, + 0x7d, 0x5b, 0x38, 0x8e, 0xa1, 0xbc, 0x59, 0x76, 0x46, 0xf1, 0xf1, 0x1a, + 0xf0, 0xcb, 0x8a, 0x5b, 0x23, 0x0f, 0x6e, 0xdf, 0xee, 0x8b, 0xc0, 0xd1, + 0x3e, 0x91, 0x23, 0x02, 0x87, 0x7e, 0xa0, 0x12, 0x81, 0xbe, 0x4f, 0x71, + 0x69, 0x3b, 0xf4, 0x3b, 0x37, 0x4f, 0x33, 0xc3, 0x0e, 0x5e, 0xfb, 0x86, + 0x7c, 0x93, 0xcb, 0xdf, 0x9c, 0xc8, 0xad, 0xe6, 0x71, 0xb1, 0xdf, 0xc3, + 0x42, 0x81, 0x09, 0x13, 0x36, 0x6a, 0x82, 0x12, 0xcc, 0x9c, 0x67, 0x33, + 0xe3, 0x27, 0xd5, 0xa7, 0x93, 0x39, 0xfc, 0x2c, 0x21, 0xec, 0x4c, 0xaf, + 0xbf, 0xc9, 0xd8, 0x11, 0x47, 0xce, 0x1a, 0x5b, 0x75, 0x63, 0xf4, 0xf9, + 0x26, 0xf9, 0x5d, 0x74, 0x0f, 0x3f, 0x96, 0x21, 0xf2, 0x9b, 0x05, 0x86, + 0xf4, 0x58, 0x97, 0x28, 0x97, 0x96, 0x88, 0x49, 0xd6, 0xa5, 0xab, 0x5d, + 0x49, 0x9a, 0x7c, 0xee, 0x57, 0x2a, 0x15, 0x9e, 0x2c, 0x2d, 0x82, 0x8d, + 0xdf, 0x6d, 0xdf, 0xf7, 0xf6, 0xea, 0x05, 0x47, 0x4b, 0xab, 0x7f, 0x1a, + 0x21, 0x23, 0xe4, 0x71, 0x5e, 0xe0, 0x4d, 0x7a, 0xac, 0xeb, 0x0b, 0x0b, + 0xca, 0x48, 0xd4, 0xf1, 0x63, 0xf9, 0x98, 0xb8, 0xab, 0xa4, 0xc7, 0xa1, + 0xf3, 0x36, 0x5d, 0x2c, 0x25, 0xf7, 0x7b, 0x66, 0xd4, 0xf3, 0xc8, 0xf7, + 0xba, 0x25, 0xb2, 0xa8, 0x4f, 0x51, 0x4b, 0x23, 0x49, 0x6f, 0x81, 0xbc, + 0xec, 0xf5, 0x33, 0x14, 0x71, 0x67, 0x87, 0xa7, 0x1b, 0xd1, 0x69, 0x2b, + 0x9f, 0x8d, 0x90, 0xa4, 0x51, 0x5f, 0x74, 0x75, 0x0d, 0x96, 0x52, 0xec, + 0x9f, 0x5a, 0x92, 0xfa, 0x94, 0x09, 0xaf, 0xd4, 0x42, 0x46, 0x1a, 0x31, + 0x5c, 0x6b, 0x68, 0x59, 0x22, 0xe5, 0xbf, 0x2d, 0xea, 0x02, 0x61, 0xe2, + 0x47, 0x84, 0x3e, 0x28, 0x09, 0x5b, 0x9a, 0x68, 0x65, 0x96, 0x27, 0xd0, + 0x4f, 0x1e, 0xad, 0x9b, 0xc6, 0xae, 0x34, 0x1f, 0xb5, 0x26, 0x42, 0xe9, + 0xcf, 0x9a, 0x44, 0x03, 0xd4, 0x3c, 0xba, 0x48, 0x73, 0x14, 0xb3, 0xc8, + 0xe8, 0x51, 0x52, 0x07, 0x8a, 0x03, 0xe9, 0x6a, 0x51, 0x33, 0x88, 0x3a, + 0xd5, 0xea, 0x12, 0x14, 0xd4, 0x76, 0x1d, 0xb2, 0xbc, 0x8c, 0x40, 0x71, + 0xe5, 0x26, 0x6a, 0x91, 0x89, 0x47, 0xc6, 0x43, 0x0c, 0x60, 0x64, 0x39, + 0xf6, 0xca, 0x26, 0xca, 0xc1, 0x2b, 0x0c, 0x57, 0x71, 0x8e, 0xf5, 0x45, + 0xf8, 0x56, 0x55, 0x5d, 0xee, 0x00, 0xa7, 0xde, 0x19, 0x3c, 0x43, 0x7d, + 0xec, 0x12, 0xb4, 0xc6, 0x54, 0x80, 0x13, 0x51, 0xd3, 0xf5, 0x10, 0x3d, + 0xab, 0x74, 0x3a, 0x69, 0x8f, 0xa7, 0x90, 0x4d, 0x61, 0x5f, 0xff, 0x9d, + 0x32, 0xc0, 0x3e, 0x19, 0xe2, 0x20, 0xcf, 0x4e, 0x64, 0x00, 0x7f, 0x8f, + 0xaa, 0x55, 0xfa, 0x48, 0xb7, 0xdd, 0x40, 0x7f, 0x43, 0x2a, 0xff, 0xe7, + 0x02, 0xcf, 0x65, 0x5f, 0x7c, 0x63, 0x1e, 0x5d, 0x93, 0xe6, 0x86, 0xc4, + 0x8d, 0x29, 0x00, 0x69, 0x3e, 0xe6, 0x9a, 0xc8, 0x61, 0x06, 0x27, 0x56, + 0xde, 0x18, 0x8f, 0x5a, 0x93, 0x05, 0xbe, 0xa0, 0xfe, 0x29, 0xf4, 0x56, + 0xb0, 0x29, 0xd0, 0x20, 0xfa, 0x1b, 0x4d, 0x2a, 0x6f, 0x8b, 0x0b, 0x04, + 0xd5, 0xd7, 0x6f, 0x8f, 0x5e, 0x9c, 0xbc, 0x39, 0x6a, 0x36, 0x13, 0xa8, + 0x59, 0x64, 0x50, 0x3d, 0x62, 0x7b, 0x75, 0xbf, 0x2e, 0xc8, 0x2f, 0xc3, + 0x7d, 0xaa, 0x68, 0xdf, 0xb3, 0x3c, 0x43, 0x2f, 0x68, 0x74, 0xfa, 0xc3, + 0x73, 0xb3, 0xba, 0x8c, 0xe4, 0x14, 0xae, 0x4a, 0x07, 0xed, 0xb3, 0xd9, + 0xda, 0xce, 0x16, 0xc2, 0xac, 0x44, 0x30, 0xca, 0xcf, 0x0b, 0x92, 0x53, + 0x76, 0x7d, 0x54, 0x0c, 0xca, 0x65, 0xba, 0xda, 0xab, 0x08, 0x4c, 0x00, + 0x74, 0xd0, 0x62, 0xeb, 0x21, 0x33, 0xa8, 0x77, 0x8f, 0x48, 0xcf, 0xa6, + 0x16, 0xbd, 0xe2, 0xf5, 0x1a, 0x63, 0xef, 0x80, 0xb5, 0xd8, 0x4f, 0xec, + 0xa4, 0x7d, 0x46, 0x7d, 0x69, 0xc3, 0x9f, 0x5d, 0xcb, 0x57, 0x79, 0x6a, + 0x76, 0x29, 0xa3, 0x16, 0xcd, 0x29, 0x6f, 0xe3, 0x90, 0xb8, 0x42, 0x27, + 0x0a, 0x45, 0xe5, 0x1d, 0xfc, 0xb4, 0x88, 0x37, 0x4b, 0x9c, 0xb3, 0xb4, + 0x5b, 0xc4, 0x9f, 0xcc, 0x46, 0xcb, 0x84, 0xeb, 0xd5, 0x46, 0xf7, 0x97, + 0x98, 0x3d, 0x95, 0x0f, 0x5a, 0xfb, 0xf3, 0x5a, 0xd3, 0x88, 0xb4, 0xf6, + 0xef, 0x35, 0x9b, 0x05, 0x51, 0x18, 0x52, 0x1b, 0x21, 0x85, 0xc4, 0xb9, + 0x4d, 0x77, 0x49, 0x5f, 0xf3, 0x76, 0x66, 0x79, 0x35, 0xba, 0x6e, 0xd2, + 0x20, 0x80, 0x02, 0x6e, 0x41, 0x07, 0xa5, 0x7d, 0x72, 0x5d, 0xcc, 0x2b, + 0x54, 0x5b, 0xb9, 0x81, 0xd0, 0x04, 0x8c, 0x60, 0x2a, 0x8c, 0x32, 0x1b, + 0x8e, 0x4f, 0x61, 0xcc, 0x29, 0xcb, 0xbd, 0xb8, 0x5c, 0x8a, 0x8e, 0x7b, + 0x69, 0x73, 0xa1, 0x5b, 0x80, 0x03, 0xc0, 0x75, 0xef, 0xda, 0x1c, 0xc2, + 0xc2, 0x04, 0x2e, 0x90, 0x96, 0x59, 0xf5, 0xbe, 0x7d, 0xdc, 0x7f, 0x42, + 0xdf, 0x0f, 0x35, 0xcf, 0xbc, 0xce, 0x2a, 0xec, 0x75, 0x91, 0x4d, 0x9a, + 0x1d, 0x6b, 0xcb, 0x94, 0x8a, 0xaa, 0x75, 0x95, 0xe4, 0x4c, 0x2b, 0xb8, + 0x6b, 0x47, 0xa8, 0x37, 0x1c, 0xef, 0x02, 0xf3, 0x1e, 0x8c, 0x03, 0x94, + 0xa9, 0xb5, 0xfe, 0x49, 0x69, 0x1f, 0x86, 0xdb, 0x71, 0xd2, 0xee, 0x52, + 0xee, 0x0c, 0xde, 0xed, 0xea, 0x26, 0xaf, 0x91, 0x11, 0xb3, 0xd4, 0x18, + 0x15, 0x25, 0xe9, 0x39, 0x48, 0x9a, 0xf6, 0xaa, 0x56, 0xd4, 0x5a, 0xec, + 0xcb, 0xc7, 0x5f, 0x06, 0x7b, 0xf7, 0x50, 0xb1, 0x38, 0xe5, 0x7a, 0x13, + 0xe3, 0xe0, 0x8f, 0x41, 0x5b, 0xb4, 0xb1, 0x7c, 0x3b, 0x1c, 0x92, 0x00, + 0xda, 0xe5, 0x29, 0xe2, 0xc5, 0x7b, 0xbc, 0x9e, 0x84, 0xaa, 0x8c, 0xe1, + 0x63, 0xd5, 0xe0, 0x2f, 0xa9, 0x37, 0x88, 0x04, 0x9f, 0x54, 0x87, 0x1f, + 0x44, 0x6f, 0x73, 0x42, 0x09, 0xc0, 0x3d, 0x7b, 0x81, 0x80, 0xef, 0xac, + 0x17, 0x21, 0x26, 0x20, 0x1c, 0x16, 0x4a, 0xc8, 0x00, 0x6b, 0x62, 0x3e, + 0x68, 0x57, 0x86, 0x59, 0xd0, 0x28, 0x1b, 0xf4, 0xc2, 0x68, 0xe6, 0x30, + 0x5d, 0x67, 0xe1, 0x77, 0xca, 0xce, 0x5e, 0x64, 0x5e, 0x47, 0x30, 0x94, + 0xfa, 0x15, 0x11, 0x2e, 0x5c, 0x5f, 0x1a, 0x1b, 0xf3, 0xc2, 0xd3, 0xe9, + 0x94, 0x3b, 0x5a, 0xe0, 0x08, 0x64, 0x60, 0x73, 0x63, 0x13, 0x2a, 0xb0, + 0x77, 0x1d, 0x0f, 0x5e, 0xab, 0x6c, 0x6a, 0xd0, 0x02, 0x33, 0x99, 0x0e, + 0x6c, 0x82, 0xac, 0xa9, 0xd9, 0x51, 0x08, 0x37, 0x6f, 0x7d, 0x93, 0xb4, + 0x37, 0xce, 0x27, 0xc5, 0x9e, 0x76, 0x0c, 0x9f, 0xe8, 0xa5, 0x34, 0xf5, + 0x12, 0x94, 0x60, 0x18, 0x8e, 0x61, 0xd6, 0xd0, 0x0b, 0xc3, 0x31, 0x93, + 0x6d, 0xc7, 0x8f, 0x1a, 0x8a, 0xaf, 0x52, 0xc9, 0xc1, 0x26, 0xb9, 0x97, + 0x10, 0x6f, 0x24, 0x79, 0xa8, 0x27, 0x3e, 0xf1, 0xb7, 0xc8, 0xd9, 0xa9, + 0x31, 0xb7, 0x25, 0x50, 0xdc, 0x47, 0xa4, 0xdc, 0x7c, 0xcc, 0x9a, 0xfe, + 0x3e, 0x2d, 0x27, 0xfd, 0x40, 0x6a, 0x2a, 0x50, 0xf3, 0xd7, 0x92, 0xa2, + 0x34, 0xec, 0x18, 0x0e, 0x37, 0x02, 0x14, 0x16, 0x42, 0x2d, 0x84, 0xb9, + 0xf9, 0x6b, 0xd8, 0x3b, 0x54, 0x71, 0xaf, 0x0a, 0x22, 0x40, 0xa0, 0x88, + 0x77, 0x17, 0x69, 0x8d, 0xbf, 0x5d, 0xdf, 0xdd, 0xc0, 0x0d, 0x09, 0x0f, + 0x37, 0x47, 0xc4, 0x03, 0xea, 0x6b, 0xd1, 0x5c, 0x86, 0xe9, 0x73, 0x11, + 0xad, 0x3b, 0xe1, 0xdc, 0xa7, 0x08, 0x7f, 0xe8, 0x6d, 0xeb, 0xe8, 0xf2, + 0xa2, 0x9c, 0x47, 0x17, 0xa0, 0xe8, 0xcf, 0x6f, 0xdb, 0x57, 0x7e, 0xd4, + 0xdb, 0x55, 0x7e, 0xf7, 0xf8, 0xb9, 0xbb, 0x9b, 0xb2, 0x71, 0xb0, 0x73, + 0xe1, 0xe1, 0x88, 0x9b, 0x70, 0x15, 0x84, 0x6c, 0xa8, 0x92, 0xad, 0x19, + 0xcd, 0xba, 0x08, 0x64, 0xfb, 0xe9, 0x37, 0xe1, 0xe1, 0x1a, 0x87, 0xc2, + 0x23, 0xe8, 0xb0, 0x74, 0x09, 0xc7, 0x30, 0xd4, 0x2c, 0xe1, 0x6b, 0x76, + 0x01, 0x0c, 0x4c, 0x27, 0x19, 0x04, 0xb6, 0x63, 0x56, 0x8c, 0xd9, 0x1b, + 0x74, 0xeb, 0x6e, 0xe0, 0x93, 0xba, 0x1b, 0x82, 0x30, 0x5f, 0xb9, 0x5f, + 0xc6, 0x3e, 0xa5, 0x61, 0xa6, 0xa7, 0xed, 0xf3, 0xc6, 0xb6, 0x1b, 0x83, + 0x75, 0x27, 0x1a, 0x9e, 0x5e, 0x76, 0x3f, 0x22, 0x8f, 0x8a, 0x51, 0xed, + 0x7c, 0x03, 0x3e, 0xd0, 0x41, 0xb4, 0x24, 0x81, 0x42, 0xdf, 0x86, 0xc0, + 0xa2, 0xe4, 0x31, 0xbb, 0xf5, 0xdb, 0xf0, 0x49, 0xef, 0xa4, 0xe1, 0x87, + 0x2c, 0xd9, 0x5a, 0xc7, 0xcc, 0x07, 0x14, 0x1e, 0xae, 0x79, 0xc8, 0x06, + 0xd0, 0x84, 0x97, 0x81, 0xe7, 0xec, 0x46, 0xcf, 0x86, 0x4e, 0xbe, 0xc0, + 0x1d, 0x4e, 0x9a, 0xc6, 0x58, 0x7a, 0xd0, 0xf4, 0x44, 0xe8, 0x9c, 0xa7, + 0x18, 0xe3, 0x5a, 0x94, 0xa3, 0xf4, 0x1d, 0xeb, 0x19, 0x49, 0x09, 0x17, + 0xee, 0xdd, 0x2d, 0xdb, 0x32, 0x95, 0x26, 0x53, 0x37, 0x33, 0x54, 0xca, + 0x2d, 0x3b, 0x1e, 0x51, 0x88, 0x0f, 0x15, 0x2f, 0x6a, 0xba, 0x04, 0x96, + 0x03, 0xfd, 0x9e, 0x6b, 0xd5, 0x3b, 0x2e, 0x80, 0x9d, 0x30, 0x32, 0xcd, + 0x14, 0xe7, 0x45, 0x96, 0x6b, 0x27, 0x42, 0x11, 0xb8, 0xce, 0x1a, 0xe9, + 0xb9, 0xb8, 0x63, 0xb8, 0x90, 0xb3, 0xba, 0x37, 0x7b, 0x8f, 0xb8, 0xdd, + 0x46, 0xcd, 0x7a, 0x87, 0xa7, 0xb5, 0x8c, 0x6f, 0xf2, 0xf3, 0x7a, 0xec, + 0xfc, 0x55, 0x82, 0xd1, 0x6f, 0xa0, 0x16, 0x1b, 0x1c, 0xd1, 0x57, 0x9f, + 0x9a, 0x5a, 0xd4, 0x3b, 0xee, 0x2f, 0x21, 0x67, 0xe6, 0xaf, 0xef, 0xce, + 0x2c, 0x9d, 0x9f, 0x0c, 0x33, 0xf4, 0x46, 0x57, 0x03, 0x65, 0xeb, 0xb7, + 0x10, 0xe4, 0xca, 0x7c, 0x7d, 0xd4, 0xc5, 0x83, 0x31, 0x64, 0x81, 0xe2, + 0x8d, 0x98, 0x3a, 0x4c, 0xfc, 0xdf, 0x80, 0xa5, 0xcf, 0xaf, 0xc7, 0x3d, + 0x39, 0x51, 0x0c, 0xce, 0x9b, 0x6d, 0x33, 0x7a, 0x1b, 0xa3, 0x06, 0x0d, + 0xab, 0x62, 0xba, 0x40, 0xa7, 0x10, 0x96, 0xa5, 0xf1, 0x41, 0x4d, 0xba, + 0xb7, 0x4d, 0x72, 0x81, 0x8d, 0xf6, 0x6e, 0x28, 0xc2, 0x3f, 0xd6, 0x52, + 0x70, 0x68, 0x88, 0x76, 0x85, 0xd2, 0x97, 0x9c, 0xad, 0x3c, 0xae, 0xab, + 0xe4, 0x7f, 0x56, 0xce, 0xc9, 0x94, 0x01, 0xf2, 0xeb, 0x16, 0x2b, 0x32, + 0x6d, 0x4b, 0xac, 0x8c, 0x53, 0x54, 0xe7, 0xe5, 0x9a, 0xe9, 0x07, 0x5b, + 0x8e, 0xb3, 0xec, 0x92, 0x76, 0xd3, 0x6f, 0x39, 0xbb, 0x55, 0x15, 0x81, + 0x47, 0xdc, 0xfd, 0xe7, 0x1e, 0x70, 0xf6, 0xdb, 0x3c, 0x21, 0xd7, 0xad, + 0x8a, 0x2c, 0x59, 0x45, 0xe3, 0x96, 0x2f, 0xdb, 0xe9, 0x99, 0x7b, 0xbf, + 0x75, 0x35, 0xcd, 0xfb, 0x8d, 0x1a, 0x3a, 0x25, 0x58, 0xeb, 0xca, 0x3a, + 0xc8, 0xfe, 0xa6, 0xf5, 0x9e, 0x2c, 0xaf, 0xef, 0x84, 0xc0, 0xc8, 0xab, + 0x81, 0x6e, 0x9f, 0x00, 0x8d, 0x28, 0x0f, 0x5d, 0x8d, 0x09, 0xa3, 0xbb, + 0x60, 0xea, 0x33, 0x3a, 0xd7, 0x59, 0xf0, 0xf1, 0x78, 0x3e, 0x5d, 0xee, + 0x0d, 0x1e, 0xbf, 0xf7, 0xfc, 0xe8, 0xe5, 0x11, 0x1f, 0x7b, 0xe4, 0xfb, + 0x37, 0x26, 0x45, 0xd1, 0xed, 0xe2, 0xf8, 0x11, 0x57, 0x29, 0xae, 0x5d, + 0xd7, 0x75, 0x87, 0xfb, 0x06, 0x6a, 0x70, 0x37, 0x48, 0xe1, 0x73, 0x6c, + 0x6b, 0x35, 0xa2, 0x2c, 0x12, 0xd3, 0x1a, 0xcb, 0x4f, 0xd7, 0xd7, 0x98, + 0x7c, 0x23, 0x79, 0xe0, 0x51, 0x00, 0xb1, 0xe9, 0xb4, 0xc4, 0x8e, 0xdf, + 0x74, 0x31, 0xd0, 0xf3, 0x24, 0xed, 0x67, 0x2e, 0x13, 0x6e, 0xc4, 0xc1, + 0x10, 0x35, 0x85, 0x3a, 0x6c, 0x27, 0x4d, 0xfc, 0xef, 0xa8, 0x98, 0xb6, + 0x29, 0xc2, 0x64, 0x05, 0x00, 0xfb, 0xe8, 0xf2, 0x4e, 0x35, 0xb2, 0x01, + 0x1d, 0x8e, 0x83, 0x9d, 0xbc, 0x32, 0xca, 0x6a, 0xa3, 0xb2, 0x57, 0x64, + 0x2c, 0xbc, 0x1b, 0x5c, 0xf3, 0x48, 0x54, 0x8b, 0x7f, 0x0b, 0x34, 0x08, + 0xd7, 0x43, 0xa6, 0xf4, 0x3b, 0x09, 0x4a, 0xca, 0xbb, 0x69, 0x7e, 0x81, + 0x60, 0x56, 0x13, 0xaf, 0xec, 0xb4, 0xa3, 0xf3, 0x9b, 0x7b, 0x00, 0x77, + 0x09, 0xd3, 0x3d, 0x34, 0xb8, 0xb1, 0x3b, 0x3f, 0x96, 0xce, 0x65, 0xd5, + 0xe5, 0x8a, 0x01, 0xba, 0xf4, 0x62, 0x1c, 0x37, 0xdd, 0xaf, 0x71, 0xd9, + 0xe7, 0x91, 0x41, 0x9e, 0xec, 0xd3, 0x7f, 0x82, 0x28, 0x7d, 0x64, 0x0a, + 0x93, 0x45, 0xf6, 0xe2, 0xf8, 0xe5, 0xd1, 0x46, 0xf4, 0x46, 0xf2, 0xdb, + 0xd0, 0x72, 0xbd, 0xa9, 0x69, 0x47, 0x61, 0x80, 0xf5, 0x6c, 0x00, 0x6a, + 0x69, 0x42, 0x69, 0x3c, 0x68, 0x05, 0x8e, 0x8b, 0x91, 0xd7, 0x94, 0x03, + 0x43, 0xbc, 0x1b, 0x9a, 0xd2, 0x87, 0x46, 0x10, 0x63, 0x29, 0x0d, 0xb6, + 0xfb, 0x62, 0x6f, 0x8b, 0xd7, 0x4d, 0x9d, 0x08, 0x94, 0x94, 0x47, 0x29, + 0x40, 0x34, 0x75, 0x7b, 0xcb, 0xde, 0xe0, 0xc4, 0x95, 0x1f, 0x7b, 0xa6, + 0x5b, 0x6c, 0x7d, 0x2c, 0xd7, 0xc9, 0x8d, 0x7f, 0xa8, 0x5b, 0xf1, 0xa3, + 0x2f, 0xbf, 0x6c, 0x68, 0xd6, 0x2a, 0x4e, 0xd0, 0xb7, 0xf2, 0x78, 0x6b, + 0x8b, 0xbe, 0xcd, 0x6b, 0xc9, 0x03, 0xbf, 0x88, 0xbf, 0xa4, 0x17, 0x9b, + 0xaf, 0x55, 0x29, 0x50, 0xd0, 0xb8, 0xfb, 0xbd, 0x18, 0x7f, 0x13, 0x98, + 0x8e, 0x68, 0xa5, 0xf3, 0xad, 0x2f, 0x71, 0xba, 0xc0, 0x5b, 0xf4, 0x30, + 0x6f, 0x63, 0x31, 0x99, 0x20, 0xa5, 0xe1, 0x93, 0xda, 0x32, 0xf4, 0x3a, + 0x29, 0xc7, 0xfe, 0xe7, 0x6e, 0xf5, 0xe3, 0xed, 0xae, 0xcf, 0x25, 0x6e, + 0x47, 0xe5, 0x8e, 0x78, 0x9e, 0x78, 0xd5, 0xd7, 0xff, 0xb4, 0xc1, 0xf8, + 0x5a, 0xed, 0x81, 0xb6, 0x61, 0x45, 0xdb, 0x5f, 0x7e, 0xd9, 0xc7, 0x95, + 0x3d, 0xfe, 0xf2, 0xcb, 0xce, 0x86, 0x47, 0xce, 0x34, 0xd7, 0x85, 0xf5, + 0xff, 0xe3, 0xeb, 0x96, 0x68, 0x2a, 0x98, 0x26, 0x0a, 0xcf, 0x83, 0xbf, + 0xf9, 0x2a, 0x7a, 0x7d, 0x72, 0x7e, 0xe4, 0xf8, 0xdc, 0xa5, 0x31, 0xa5, + 0x53, 0x17, 0x4e, 0xe9, 0x6d, 0x73, 0x2c, 0x39, 0x62, 0x7f, 0x1e, 0x87, + 0x72, 0x12, 0xaf, 0x4a, 0x50, 0xe3, 0x4d, 0x4e, 0xaf, 0x3a, 0xd6, 0x74, + 0x28, 0xeb, 0x2e, 0xc6, 0x32, 0x25, 0x4e, 0xad, 0xf8, 0x8f, 0xe8, 0x34, + 0x29, 0x2b, 0x29, 0xb1, 0xe6, 0xec, 0x52, 0xf4, 0x70, 0x05, 0xbb, 0xac, + 0x16, 0xe5, 0xcc, 0x84, 0x14, 0x4c, 0x40, 0x4b, 0xfc, 0x1a, 0xf2, 0xef, + 0x6c, 0x98, 0x4d, 0xb3, 0xfa, 0xc6, 0xf8, 0x8d, 0x40, 0x0f, 0x0c, 0x98, + 0x5d, 0x27, 0x12, 0x68, 0xbe, 0xc8, 0x6a, 0xb7, 0x9d, 0xed, 0x3a, 0xd0, + 0xda, 0x06, 0xa7, 0xa9, 0x52, 0x45, 0x98, 0x24, 0x8c, 0xac, 0x55, 0x20, + 0x05, 0x6b, 0xae, 0xc0, 0x5f, 0x43, 0xa7, 0xe0, 0x9a, 0xe7, 0xc5, 0x4a, + 0xa7, 0x0c, 0x17, 0x66, 0x1f, 0x8f, 0xe9, 0x41, 0xb9, 0xab, 0xe4, 0x27, + 0xfb, 0x40, 0x81, 0x74, 0xb8, 0x28, 0x45, 0x1e, 0xf3, 0xd4, 0xdd, 0x29, + 0x23, 0xd4, 0xff, 0x95, 0x92, 0x7f, 0x15, 0x98, 0x13, 0xc7, 0x71, 0x2b, + 0xf4, 0xd7, 0x9a, 0x5b, 0xb0, 0xc8, 0x6d, 0xdc, 0xbd, 0x35, 0xdc, 0x38, + 0x9d, 0x6b, 0x11, 0x7b, 0xde, 0x1c, 0x00, 0xae, 0xd0, 0x24, 0xbb, 0x58, + 0x94, 0xe1, 0x92, 0xe6, 0x57, 0xe8, 0x39, 0x35, 0x1c, 0x43, 0xdd, 0x6a, + 0x8a, 0xf6, 0x78, 0x99, 0x5c, 0xa5, 0x7c, 0x12, 0xda, 0x61, 0x42, 0xf2, + 0xbb, 0x29, 0xfa, 0x83, 0x24, 0xd4, 0x76, 0x31, 0x6b, 0xa6, 0xb6, 0xc4, + 0x9d, 0x90, 0x94, 0x50, 0x93, 0x4b, 0xf4, 0xdb, 0xd8, 0xe9, 0xaa, 0xf1, + 0x74, 0xfc, 0x9d, 0x68, 0x65, 0xf0, 0x6a, 0xe1, 0x69, 0x60, 0xc8, 0xee, + 0x90, 0xbd, 0xf9, 0xed, 0xce, 0x90, 0xaf, 0x71, 0xf6, 0x9d, 0xb8, 0xb5, + 0xe4, 0x10, 0xf0, 0x9d, 0xeb, 0x7c, 0x5a, 0x24, 0xe8, 0xac, 0xe3, 0x54, + 0x03, 0xcd, 0x59, 0x14, 0xc3, 0x8e, 0xba, 0x2d, 0xb7, 0x86, 0x6b, 0x9c, + 0x26, 0x9f, 0x63, 0xb4, 0xee, 0xf4, 0xe4, 0xa3, 0x7b, 0x20, 0x9e, 0x4a, + 0x1e, 0x86, 0x19, 0x21, 0xce, 0x11, 0x68, 0x08, 0x87, 0xdd, 0xe0, 0x06, + 0xb4, 0x46, 0x94, 0xdc, 0x7c, 0x34, 0x26, 0x91, 0x3a, 0xfd, 0x50, 0xc3, + 0x3f, 0xd3, 0xb1, 0xeb, 0x41, 0x8d, 0xce, 0x8e, 0xff, 0xeb, 0x28, 0x9c, + 0xc8, 0xe2, 0x48, 0x93, 0xcf, 0x90, 0xc8, 0xc2, 0x13, 0xef, 0xec, 0xc4, + 0x8f, 0x1e, 0xad, 0x26, 0x18, 0x0f, 0xa9, 0x8a, 0x4d, 0xdc, 0xe6, 0x71, + 0x22, 0x65, 0xca, 0x09, 0xfe, 0x34, 0x99, 0xe3, 0x7e, 0x34, 0xf5, 0x30, + 0x0c, 0x36, 0xcd, 0x60, 0xd3, 0x35, 0xfe, 0x8e, 0x3f, 0xe9, 0x2a, 0x6c, + 0xc0, 0x6f, 0x85, 0x67, 0xb3, 0xd9, 0x62, 0x66, 0xc3, 0x14, 0x13, 0x7a, + 0x33, 0x1f, 0xdd, 0x30, 0xf5, 0x51, 0xa7, 0x51, 0x2d, 0x12, 0x60, 0xfd, + 0xc9, 0x4b, 0xf7, 0xc8, 0x1d, 0x69, 0x66, 0x9b, 0x54, 0x23, 0x21, 0x50, + 0xe4, 0x81, 0x2d, 0xda, 0x45, 0x0e, 0x57, 0x78, 0xbd, 0x2a, 0x66, 0x29, + 0xeb, 0xb2, 0xc4, 0x6b, 0xc6, 0xc1, 0x80, 0x26, 0x65, 0x03, 0xe3, 0xc2, + 0xe1, 0xec, 0x03, 0x2d, 0x75, 0x85, 0xf6, 0x65, 0x02, 0x6a, 0xc3, 0x82, + 0x39, 0xe8, 0x3a, 0xb3, 0x97, 0x48, 0x19, 0x4d, 0xc8, 0x69, 0x5a, 0x69, + 0x96, 0x7e, 0x30, 0x39, 0x9d, 0xd9, 0x87, 0x12, 0xc3, 0xdb, 0x37, 0x2f, + 0x39, 0x83, 0x26, 0x69, 0xc4, 0x6f, 0xe0, 0xb0, 0x48, 0xb2, 0x51, 0xd8, + 0x81, 0xb2, 0x19, 0xf2, 0x90, 0xed, 0x45, 0x9b, 0x86, 0x9a, 0x2e, 0x7e, + 0x83, 0x36, 0xeb, 0xb9, 0x4e, 0xd0, 0x8b, 0xb6, 0x80, 0x73, 0x9c, 0xfa, + 0x6b, 0xa6, 0xac, 0x02, 0xfc, 0x1e, 0xd2, 0x06, 0x3d, 0x55, 0x31, 0x23, + 0xd5, 0xd2, 0x85, 0x1c, 0xc6, 0x9d, 0x83, 0xc1, 0x07, 0x8d, 0x24, 0xd0, + 0x26, 0x44, 0x23, 0x63, 0x29, 0xc5, 0xff, 0x15, 0x48, 0xf6, 0x49, 0x30, + 0xa4, 0x9c, 0x4e, 0x3b, 0xf3, 0xe7, 0xcf, 0x1d, 0x6c, 0x63, 0x22, 0x29, + 0xf7, 0xc2, 0xc0, 0x24, 0xbd, 0xd7, 0x9b, 0x6f, 0x7b, 0x52, 0x8d, 0xf1, + 0x5a, 0x5c, 0x7b, 0xea, 0xaf, 0x02, 0x52, 0x88, 0xbd, 0x98, 0x72, 0xc9, + 0x2c, 0xe6, 0x2d, 0xbb, 0xb8, 0x0c, 0x3d, 0x60, 0xed, 0x82, 0xfa, 0xd4, + 0xf1, 0xdf, 0x1c, 0xaa, 0x5c, 0xab, 0xd6, 0x80, 0x50, 0x48, 0x63, 0xd9, + 0xe8, 0x47, 0x6b, 0xb3, 0xb6, 0xfc, 0x58, 0x07, 0xb1, 0x06, 0x56, 0x3f, + 0xfe, 0xee, 0x12, 0x9e, 0x04, 0xf2, 0x28, 0x37, 0x58, 0xda, 0x8c, 0xd7, + 0xa2, 0xcd, 0xf5, 0x71, 0xc2, 0x09, 0x93, 0xa4, 0x66, 0xed, 0xc0, 0x6d, + 0xc3, 0x24, 0x00, 0x1a, 0x7e, 0x83, 0x6c, 0x0e, 0x8f, 0x35, 0x6a, 0x18, + 0x8b, 0x5d, 0xee, 0xf8, 0x60, 0x5f, 0x9a, 0x6e, 0xf6, 0xf0, 0x33, 0x9d, + 0x6f, 0xa7, 0x04, 0xa9, 0x16, 0xad, 0x7b, 0x31, 0x1a, 0x64, 0x66, 0x48, + 0xf5, 0x38, 0x6f, 0x88, 0xd2, 0x34, 0x8b, 0xa4, 0x2e, 0xa6, 0xa4, 0xfa, + 0xf3, 0x15, 0xdb, 0xde, 0xb2, 0x50, 0xcb, 0xf8, 0x76, 0xc4, 0x1f, 0xd9, + 0xe7, 0xe2, 0x7b, 0x42, 0x76, 0x09, 0x65, 0x8f, 0xd5, 0x89, 0xe1, 0xc7, + 0x44, 0x50, 0xe6, 0xd8, 0x98, 0xd0, 0x9e, 0x88, 0xe6, 0x57, 0xb1, 0x00, + 0x4a, 0xa7, 0xc9, 0x9c, 0xac, 0xca, 0x0c, 0xd3, 0xc5, 0x42, 0xa9, 0x09, + 0xe9, 0x55, 0x86, 0x5d, 0x13, 0x0d, 0x5d, 0x22, 0x08, 0xa5, 0x10, 0x66, + 0x38, 0xff, 0x78, 0xb2, 0xc8, 0x39, 0xb5, 0x80, 0x54, 0x9f, 0x59, 0x36, + 0x9d, 0x66, 0xa2, 0x6c, 0x82, 0xbc, 0x45, 0xef, 0x0c, 0x99, 0x7a, 0x9c, + 0x48, 0xec, 0xdc, 0x8c, 0x49, 0xf0, 0xde, 0x23, 0xd7, 0x11, 0xa0, 0xe6, + 0x9a, 0x5b, 0xb3, 0xd2, 0x15, 0x03, 0xad, 0x6c, 0x8b, 0x36, 0x85, 0x47, + 0xe6, 0x4c, 0x39, 0x11, 0x7c, 0x25, 0x88, 0x72, 0xf8, 0x58, 0x7f, 0x38, + 0x74, 0x60, 0x8d, 0x42, 0xcb, 0xa6, 0xc4, 0x2a, 0x2c, 0x82, 0xa1, 0x1a, + 0x25, 0xd3, 0xba, 0xb6, 0x1f, 0xa9, 0x48, 0x36, 0xb9, 0x93, 0x31, 0x3d, + 0xd5, 0x37, 0x91, 0xc3, 0x20, 0xda, 0x35, 0x3d, 0x03, 0x44, 0x34, 0x05, + 0x83, 0x6e, 0x5a, 0x5c, 0x70, 0x53, 0x36, 0x32, 0xeb, 0x90, 0x24, 0x39, + 0xf1, 0x97, 0x73, 0x86, 0xd0, 0x2f, 0xfa, 0x79, 0xbb, 0xd8, 0x8b, 0xa9, + 0x58, 0xaf, 0x2e, 0x01, 0xef, 0x87, 0xa9, 0x43, 0x53, 0xed, 0x6c, 0x06, + 0xbb, 0x16, 0x47, 0x83, 0xc1, 0x60, 0xd9, 0x6b, 0xbb, 0x9b, 0x97, 0xf7, + 0x79, 0x6d, 0xfb, 0xd1, 0xe6, 0xac, 0xf3, 0xbd, 0x6e, 0xeb, 0x93, 0x3a, + 0x1d, 0xf3, 0x08, 0x9c, 0xb0, 0x47, 0xc7, 0x1a, 0xd3, 0xb1, 0x36, 0x2a, + 0x0a, 0xd1, 0x1d, 0xd1, 0x94, 0xb8, 0xd7, 0x06, 0xeb, 0xf7, 0x07, 0x6e, + 0x9f, 0x26, 0xb9, 0x9c, 0xa6, 0xfb, 0x2b, 0x3a, 0x57, 0x29, 0x3a, 0x0a, + 0x2a, 0x10, 0xa7, 0xca, 0x51, 0xbe, 0x34, 0xa9, 0x98, 0x18, 0x62, 0xcf, + 0x7d, 0xad, 0x07, 0x53, 0x8d, 0xd1, 0xc1, 0xa1, 0xd7, 0x90, 0xa0, 0xaf, + 0x08, 0xee, 0x9b, 0x13, 0x2e, 0x98, 0xf6, 0x39, 0xdb, 0x8f, 0x22, 0xa6, + 0x98, 0x7a, 0xc2, 0xbd, 0xe4, 0x17, 0xde, 0x70, 0xc9, 0x14, 0xe6, 0xc6, + 0x45, 0xc1, 0x5a, 0x97, 0x26, 0x58, 0xe2, 0xb7, 0xdc, 0x21, 0xb7, 0xd2, + 0x41, 0x07, 0xc9, 0xda, 0x0c, 0xa9, 0x9d, 0x6d, 0x16, 0x9a, 0xf2, 0x56, + 0x4d, 0xe9, 0x7a, 0xd5, 0xa2, 0xff, 0x32, 0xd6, 0x0d, 0x72, 0x8e, 0x26, + 0x65, 0x5f, 0x15, 0x26, 0xc7, 0x96, 0xd1, 0x3e, 0x48, 0xf4, 0x0e, 0x8c, + 0xff, 0x33, 0xd2, 0x29, 0x91, 0xea, 0x7b, 0x6f, 0xf0, 0x69, 0x7c, 0xfc, + 0x34, 0xb9, 0x48, 0x81, 0xf3, 0xe7, 0x0c, 0x50, 0xd6, 0x6a, 0xc3, 0xa2, + 0x71, 0xe9, 0x20, 0xf8, 0x04, 0x5a, 0xfb, 0xb4, 0x2c, 0x4a, 0x2b, 0x71, + 0xaa, 0x7a, 0x1a, 0xc8, 0xfc, 0x93, 0x69, 0x22, 0x87, 0xbf, 0x28, 0xb1, + 0xd0, 0xe2, 0x07, 0x1f, 0xd3, 0x92, 0x58, 0x08, 0x6f, 0xe4, 0x4b, 0x7c, + 0xd3, 0x84, 0x58, 0x2c, 0x8c, 0x04, 0xeb, 0x7f, 0x51, 0xd4, 0xfb, 0x0b, + 0xe6, 0xa3, 0xf5, 0x9c, 0xd0, 0x14, 0x7c, 0xbc, 0x27, 0xf5, 0x75, 0x2b, + 0x38, 0x65, 0x1f, 0x1f, 0xb5, 0x69, 0x19, 0xcd, 0x7c, 0x36, 0xca, 0x6f, + 0xa4, 0x84, 0x50, 0x11, 0x07, 0xf0, 0x46, 0xc8, 0x3c, 0xc1, 0x76, 0xd2, + 0x05, 0x27, 0xde, 0x25, 0xd1, 0x4b, 0x59, 0xdf, 0x9e, 0xa4, 0x40, 0xb2, + 0xe7, 0xcb, 0x2c, 0x4d, 0x0a, 0x08, 0x3a, 0x82, 0xcb, 0xcc, 0x2f, 0xa7, + 0x60, 0x18, 0xf4, 0x4d, 0x2e, 0x08, 0x7e, 0xa7, 0x58, 0x4f, 0xb8, 0x20, + 0x52, 0x31, 0x38, 0xf9, 0xa8, 0x71, 0xb4, 0x61, 0x65, 0x3f, 0xed, 0xbb, + 0x9f, 0xfc, 0x20, 0x25, 0xe3, 0xab, 0xf2, 0x3e, 0x99, 0xbb, 0xa7, 0xb4, + 0x3c, 0x81, 0xdd, 0xd6, 0xe4, 0xf5, 0xde, 0x0a, 0x98, 0x62, 0x4b, 0x07, + 0x92, 0xed, 0x8d, 0x5f, 0xde, 0x67, 0xc0, 0xe5, 0x2f, 0x77, 0xde, 0xb7, + 0x03, 0xdc, 0x7d, 0x0c, 0x4b, 0xc6, 0xc9, 0x05, 0x25, 0x4e, 0x21, 0xc3, + 0x74, 0xa8, 0xdb, 0xb9, 0x83, 0xff, 0xc9, 0x07, 0x85, 0x69, 0x6b, 0xf2, + 0x4b, 0x02, 0xc4, 0x0a, 0x5f, 0x44, 0x57, 0x14, 0xd6, 0x84, 0x6d, 0x48, + 0xf7, 0xe6, 0xc4, 0x19, 0x43, 0x82, 0x71, 0x7a, 0x23, 0xa5, 0xdb, 0x66, + 0x30, 0x0b, 0x2e, 0xb6, 0xb2, 0xf2, 0x90, 0x5b, 0x2f, 0xc4, 0xc0, 0xb6, + 0xc0, 0x04, 0xe0, 0xe6, 0xec, 0x91, 0x69, 0x36, 0x60, 0x6d, 0x68, 0xb4, + 0x49, 0x83, 0x18, 0x49, 0x23, 0x83, 0x05, 0x68, 0xdf, 0x32, 0x8d, 0x3d, + 0xe1, 0x72, 0x18, 0x05, 0x47, 0xa6, 0x36, 0xc4, 0x36, 0x09, 0x67, 0xae, + 0xb8, 0x18, 0x89, 0xdc, 0x52, 0x4f, 0x33, 0x28, 0xf1, 0x9a, 0xc0, 0xad, + 0xc6, 0x04, 0xf9, 0x89, 0xa6, 0xc6, 0x98, 0x50, 0x4b, 0x14, 0xd8, 0xbb, + 0x65, 0x2a, 0x7c, 0xa4, 0xee, 0xe0, 0x2a, 0xb9, 0xb2, 0x05, 0x3d, 0x1a, + 0x06, 0x73, 0x72, 0xd7, 0x40, 0xd4, 0xc8, 0x2f, 0xcd, 0x0f, 0xbb, 0xca, + 0x14, 0x94, 0xb7, 0x73, 0xba, 0x73, 0x0c, 0xcf, 0x87, 0x2e, 0xa0, 0x0b, + 0x8d, 0x68, 0x3c, 0x6d, 0x89, 0x0d, 0x5c, 0x8a, 0x6d, 0x25, 0x20, 0x92, + 0xa4, 0x6d, 0x71, 0x6a, 0x78, 0xe0, 0x0b, 0xb5, 0x67, 0x3c, 0x15, 0xb6, + 0x99, 0x5e, 0xee, 0x6e, 0x34, 0xcc, 0xf9, 0x12, 0x8e, 0xd8, 0x20, 0xcf, + 0xc0, 0xfa, 0xb0, 0xeb, 0x32, 0xe4, 0x52, 0xc8, 0xc5, 0xdf, 0x41, 0xcd, + 0x94, 0xb1, 0x92, 0x10, 0x4e, 0x7e, 0x04, 0xbb, 0x02, 0xdc, 0x3b, 0x46, + 0xfd, 0x7f, 0x8a, 0xc9, 0x35, 0xd6, 0xf8, 0xcd, 0x6a, 0x5b, 0x86, 0x14, + 0x42, 0xe1, 0x19, 0x81, 0xca, 0x46, 0x06, 0xc1, 0xbc, 0xa1, 0xeb, 0xca, + 0xe7, 0x1b, 0x2d, 0xce, 0x64, 0xd8, 0x29, 0x19, 0x05, 0x3f, 0x96, 0x0a, + 0xf4, 0xeb, 0x2e, 0x9b, 0x2e, 0x74, 0xca, 0x25, 0x23, 0xc3, 0xc0, 0x33, + 0x8e, 0xa7, 0x88, 0x0b, 0xb2, 0xa2, 0x3f, 0xc6, 0x15, 0x1b, 0xf3, 0xb0, + 0x86, 0xf5, 0x9b, 0xb4, 0xde, 0x70, 0x8a, 0xba, 0x88, 0x40, 0xbf, 0xe8, + 0x08, 0x2c, 0x8b, 0x57, 0xca, 0x2e, 0x03, 0xc3, 0x15, 0x4e, 0x56, 0x35, + 0x9f, 0x19, 0xa8, 0x4b, 0x54, 0xdd, 0x0e, 0xba, 0x26, 0x7c, 0x5b, 0xdd, + 0x3d, 0x5c, 0xd5, 0x61, 0x3b, 0x88, 0x2b, 0xcc, 0x69, 0xa7, 0x3a, 0x73, + 0x3a, 0xe6, 0xf6, 0xf4, 0xb2, 0xf5, 0xc4, 0x67, 0xe8, 0x18, 0x43, 0xed, + 0x4b, 0x85, 0x1b, 0x7c, 0x83, 0x21, 0x0d, 0xf5, 0x51, 0x35, 0x06, 0xf8, + 0x53, 0x8f, 0x07, 0x88, 0xd6, 0xf5, 0x27, 0xd2, 0xf9, 0x18, 0x16, 0x3e, + 0xcd, 0x46, 0x9e, 0x16, 0x63, 0x9c, 0x9c, 0x14, 0xa7, 0xf7, 0x4b, 0x57, + 0x7f, 0x38, 0x78, 0xf3, 0xfa, 0xf8, 0xf5, 0x77, 0x7b, 0x20, 0x04, 0xd2, + 0x72, 0x04, 0x06, 0x4f, 0xf4, 0xeb, 0x62, 0x0c, 0xe3, 0xa0, 0xac, 0x14, + 0x0d, 0xdc, 0xed, 0xe8, 0x8a, 0xa6, 0x85, 0x64, 0x9f, 0xa1, 0x1b, 0xad, + 0x68, 0x8b, 0x7a, 0xc1, 0x7d, 0x40, 0xac, 0x31, 0x2c, 0x35, 0xbb, 0x58, + 0xd8, 0x3c, 0x45, 0xd4, 0x10, 0xa6, 0x54, 0x19, 0x0f, 0x14, 0x4b, 0xd9, + 0xed, 0xba, 0x4d, 0x98, 0x94, 0x16, 0x3d, 0x7f, 0xf9, 0x32, 0xf2, 0x2a, + 0x61, 0x19, 0x73, 0x80, 0xe3, 0x91, 0x54, 0xd1, 0xa8, 0x95, 0xff, 0xe8, + 0xcc, 0x43, 0x39, 0xdb, 0x10, 0xf6, 0x40, 0xdb, 0x8a, 0x3b, 0x41, 0xb5, + 0xd1, 0x01, 0x92, 0xcc, 0x08, 0x6d, 0xa6, 0xac, 0x41, 0x33, 0x28, 0x26, + 0xf5, 0x75, 0x12, 0x00, 0xe2, 0x77, 0xd4, 0xc8, 0x0e, 0x9e, 0x1f, 0xd2, + 0x2c, 0x3f, 0x0a, 0x58, 0xd0, 0x9f, 0x62, 0x45, 0x4d, 0xf3, 0xe4, 0x3f, + 0x43, 0x72, 0x6f, 0x93, 0x78, 0x76, 0xa7, 0xf0, 0x6b, 0x4b, 0xa3, 0x86, + 0x2d, 0x60, 0x7f, 0x8c, 0xc0, 0x82, 0x4b, 0x7b, 0xe0, 0x5c, 0x72, 0x70, + 0xc8, 0x2d, 0x82, 0x92, 0x1c, 0x7d, 0xc2, 0x7a, 0x00, 0x93, 0x81, 0x3d, + 0x52, 0xe4, 0x89, 0x0a, 0x65, 0x53, 0x8f, 0xd3, 0x44, 0xbb, 0x0a, 0xa3, + 0xb3, 0x63, 0x12, 0x10, 0x94, 0xd7, 0x69, 0x29, 0x11, 0x46, 0xd3, 0x22, + 0x07, 0x34, 0xac, 0x41, 0x74, 0x56, 0x84, 0x6b, 0x50, 0xb9, 0xb1, 0x13, + 0x6a, 0x86, 0x63, 0x55, 0xf0, 0x99, 0x2b, 0xe3, 0xeb, 0xd4, 0xf0, 0x49, + 0x2b, 0xf2, 0x59, 0x87, 0x94, 0xc4, 0x70, 0x9c, 0xd4, 0x0b, 0xa5, 0xb9, + 0x1b, 0x21, 0x28, 0x92, 0x43, 0xac, 0x4d, 0x13, 0xfb, 0x88, 0xe6, 0xa3, + 0xcc, 0x58, 0xbc, 0x2f, 0xbd, 0x18, 0x76, 0xb6, 0x87, 0xf4, 0x27, 0x27, + 0xdb, 0x39, 0xdc, 0x72, 0xfb, 0xa5, 0xb9, 0xff, 0x0f, 0x5c, 0x38, 0xd3, + 0x1a, 0x7d, 0x65, 0xb3, 0xa6, 0xb5, 0xb8, 0x40, 0xe4, 0x1d, 0x08, 0x6f, + 0xbb, 0xe3, 0xe7, 0x3b, 0xf7, 0xa2, 0xc8, 0xf6, 0xaf, 0xda, 0x7c, 0xa7, + 0xcc, 0x08, 0x2b, 0x86, 0x2b, 0x97, 0x08, 0xd6, 0x99, 0xa3, 0x99, 0x4e, + 0x82, 0x11, 0x65, 0xfa, 0x3a, 0xc5, 0x07, 0xf4, 0xab, 0xeb, 0x14, 0xe3, + 0x0d, 0xed, 0xbd, 0x5b, 0xa7, 0x38, 0x91, 0xd1, 0x56, 0xa8, 0x09, 0x96, + 0x04, 0x79, 0xdc, 0x97, 0x1b, 0x25, 0xac, 0xda, 0x8c, 0x17, 0x76, 0xa9, + 0xf6, 0x80, 0x9f, 0x27, 0x83, 0x8d, 0xd5, 0xd5, 0x1a, 0x3f, 0xbb, 0x47, + 0x41, 0x76, 0x90, 0xbc, 0x03, 0x85, 0xb8, 0x9c, 0xc5, 0xa2, 0x43, 0xb9, + 0x50, 0x7e, 0x8e, 0x5e, 0x41, 0xa6, 0x12, 0xb7, 0x1a, 0x13, 0x03, 0x8c, + 0x2e, 0x70, 0x60, 0xb8, 0xce, 0x75, 0xa8, 0x3a, 0x97, 0xe5, 0x57, 0x05, + 0xfd, 0x86, 0xdd, 0xc2, 0x0e, 0x0c, 0x4e, 0x08, 0x31, 0x08, 0x2f, 0x05, + 0xd7, 0x92, 0x2d, 0xd1, 0xb8, 0x38, 0x4f, 0x87, 0xf7, 0xd8, 0xd1, 0x2d, + 0x22, 0x17, 0x9e, 0x08, 0xbe, 0x50, 0xf2, 0x9a, 0x0d, 0xbe, 0x74, 0x57, + 0x85, 0x92, 0xe1, 0x3c, 0x7d, 0x14, 0xac, 0x97, 0x04, 0x26, 0x30, 0xc5, + 0xe0, 0xa4, 0x85, 0x9a, 0x6e, 0x29, 0x65, 0x24, 0x97, 0x89, 0xbd, 0xa1, + 0xfa, 0xdb, 0xb6, 0x15, 0x81, 0xcc, 0x40, 0xeb, 0x1a, 0xb0, 0x69, 0x66, + 0x5b, 0xc8, 0x35, 0xe3, 0xa4, 0x98, 0x85, 0x36, 0xe4, 0xcc, 0xed, 0xd1, + 0x65, 0x51, 0x54, 0x69, 0x57, 0x32, 0x11, 0x7d, 0x19, 0xd9, 0x30, 0xd4, + 0xf0, 0xae, 0x4b, 0xdc, 0x08, 0x8c, 0xa6, 0x93, 0x4b, 0x83, 0xc8, 0x10, + 0xc9, 0xb8, 0xbd, 0xba, 0xb1, 0xd8, 0x03, 0x6c, 0x3b, 0x5b, 0x16, 0x3d, + 0x68, 0x2b, 0xb2, 0xbc, 0x2a, 0x4f, 0x8d, 0x0d, 0x35, 0x49, 0xe3, 0xdf, + 0xb5, 0xf4, 0x56, 0x4f, 0x33, 0xc5, 0x3d, 0x09, 0x2b, 0x74, 0xac, 0xcf, + 0x21, 0x8f, 0x35, 0x9e, 0xa2, 0x31, 0x05, 0xcd, 0xf2, 0x66, 0xde, 0x2a, + 0x91, 0x76, 0x56, 0x13, 0x67, 0xfb, 0xe3, 0xce, 0x56, 0x97, 0x2a, 0x80, + 0x03, 0x29, 0x78, 0xfa, 0x3c, 0x91, 0x2c, 0x3f, 0x55, 0x24, 0xa4, 0xaf, + 0x1c, 0xea, 0x17, 0x8b, 0xb9, 0x04, 0x9b, 0xa9, 0x8a, 0xbc, 0x63, 0xeb, + 0x83, 0x35, 0x0e, 0xa4, 0x1f, 0xb2, 0x35, 0xe6, 0x20, 0x48, 0x63, 0x82, + 0x7e, 0x7e, 0x23, 0xdc, 0x57, 0x8a, 0xec, 0xad, 0xf7, 0x9c, 0x24, 0x1b, + 0x50, 0x83, 0x87, 0x46, 0x1f, 0xe8, 0x2b, 0xef, 0xcb, 0xb6, 0x4f, 0x96, + 0x24, 0x75, 0xd2, 0xa9, 0x14, 0x10, 0x07, 0x5d, 0x86, 0x29, 0xdb, 0x62, + 0xf1, 0x7d, 0x52, 0x0a, 0xec, 0xb5, 0x35, 0x71, 0x56, 0xa4, 0xd9, 0x25, + 0x62, 0xb3, 0xa1, 0xd1, 0xe8, 0x06, 0xbc, 0x71, 0x36, 0x00, 0xbf, 0xd3, + 0x8b, 0x3e, 0x9b, 0xc2, 0x5f, 0x53, 0xaa, 0xc8, 0x34, 0x4d, 0x21, 0xeb, + 0x34, 0xe2, 0x18, 0x9a, 0x88, 0xc2, 0x1a, 0x3e, 0xac, 0xc9, 0x9a, 0x43, + 0x9a, 0xbb, 0xda, 0xa4, 0x8a, 0x69, 0xa5, 0xf1, 0x60, 0xe4, 0xdd, 0xc2, + 0x09, 0xf4, 0x11, 0x8b, 0x79, 0xc1, 0x5e, 0xa5, 0x00, 0x5f, 0x74, 0x24, + 0xcb, 0x05, 0xf9, 0x97, 0xe0, 0x4d, 0x42, 0x60, 0x30, 0x2b, 0x5a, 0xda, + 0x35, 0xac, 0xfd, 0xfd, 0x77, 0x2a, 0x02, 0x5f, 0x55, 0xb6, 0xe3, 0x50, + 0xf7, 0x94, 0xeb, 0xb4, 0x26, 0x50, 0x63, 0x26, 0x45, 0xb1, 0x9a, 0x37, + 0xc5, 0xa3, 0x6c, 0x72, 0xa7, 0xfc, 0x46, 0xf0, 0x7d, 0x30, 0x26, 0x86, + 0x7e, 0xc7, 0x6d, 0x25, 0xf3, 0x2a, 0x8d, 0x8b, 0x3c, 0x0e, 0xa1, 0xe0, + 0xfc, 0x60, 0xea, 0x94, 0x35, 0x53, 0x56, 0xe1, 0x72, 0xd8, 0x65, 0xa7, + 0x41, 0x27, 0x94, 0x77, 0x2a, 0xf8, 0x89, 0x2f, 0x72, 0x6e, 0xf6, 0x34, + 0x40, 0x07, 0xfd, 0x26, 0x5f, 0x74, 0x92, 0x2e, 0xe9, 0x04, 0xaf, 0xc4, + 0xcd, 0xa1, 0xe2, 0x0d, 0xd8, 0x1d, 0x05, 0x3a, 0x48, 0xdf, 0x0d, 0xc4, + 0x97, 0x40, 0x36, 0x4a, 0x3b, 0x18, 0x92, 0x3e, 0xd3, 0x94, 0xe5, 0x92, + 0xcd, 0xcc, 0x12, 0x38, 0x32, 0x8b, 0x97, 0x82, 0x96, 0x0e, 0x99, 0xea, + 0x3e, 0x2a, 0x07, 0xd8, 0xd7, 0x8b, 0xd2, 0x0d, 0xe3, 0x74, 0x39, 0x23, + 0xf4, 0x53, 0xa5, 0x77, 0xa7, 0x7c, 0xd8, 0xdd, 0x0d, 0xed, 0x46, 0x03, + 0xbb, 0xd6, 0x11, 0x3c, 0x3c, 0x29, 0x3a, 0x83, 0xdf, 0x87, 0x1c, 0xdd, + 0xb5, 0x01, 0x49, 0x6a, 0x65, 0xfa, 0x2a, 0x54, 0x39, 0x41, 0xfa, 0xc3, + 0xe2, 0xb8, 0x66, 0xf0, 0x63, 0xb7, 0x15, 0xfc, 0xe0, 0x60, 0x63, 0x2c, + 0x59, 0xc6, 0xfb, 0xa8, 0xcd, 0x75, 0x78, 0xd9, 0xfd, 0x36, 0x40, 0xe4, + 0x28, 0xa7, 0xa8, 0x08, 0x81, 0x98, 0xf4, 0x24, 0xcb, 0x3a, 0x5a, 0xc7, + 0x51, 0x36, 0x8c, 0x5b, 0xce, 0x6f, 0x07, 0xe2, 0x40, 0x22, 0x4b, 0x22, + 0x66, 0x52, 0x79, 0xb0, 0x35, 0xe4, 0x95, 0x3b, 0x45, 0x92, 0x1a, 0x2d, + 0xa6, 0x49, 0x39, 0x25, 0xf1, 0x34, 0x59, 0x4c, 0x43, 0x7e, 0x6c, 0xd4, + 0x46, 0xa4, 0x66, 0x21, 0xab, 0xaa, 0x85, 0x78, 0xf9, 0x4d, 0x38, 0x96, + 0x0e, 0x07, 0xf9, 0x27, 0x12, 0x2b, 0xd3, 0x40, 0x35, 0xc5, 0x4a, 0xd3, + 0x2e, 0x79, 0xcb, 0x88, 0x7b, 0x62, 0x3b, 0x19, 0x07, 0x10, 0xbb, 0xca, + 0x85, 0xe7, 0x5e, 0xe0, 0xa2, 0x48, 0x30, 0xcf, 0x91, 0x5b, 0x97, 0x79, + 0x9f, 0x34, 0xed, 0x76, 0x8e, 0xf1, 0xc9, 0xe9, 0xf9, 0xf1, 0xc9, 0xeb, + 0xb3, 0xe8, 0x4f, 0xbd, 0x70, 0x55, 0x3a, 0x85, 0x7d, 0x4c, 0x42, 0x0c, + 0x48, 0xc1, 0x21, 0x16, 0x8e, 0xa9, 0xb3, 0x1d, 0x55, 0x2d, 0xd4, 0xe5, + 0x48, 0xf7, 0x30, 0xe9, 0x41, 0xf2, 0x5d, 0x81, 0xbe, 0x4a, 0xf4, 0x8d, + 0x94, 0xc6, 0x04, 0xd7, 0x83, 0x4c, 0x3b, 0x93, 0x64, 0x06, 0x17, 0x7d, + 0x02, 0x8c, 0x7b, 0x91, 0x94, 0x63, 0x02, 0x4b, 0x4c, 0x4c, 0xcb, 0x58, + 0x02, 0x2c, 0xf7, 0x04, 0x08, 0x95, 0xdd, 0x11, 0x2b, 0x43, 0x57, 0x67, + 0x59, 0x4c, 0x9d, 0xc4, 0xb1, 0x8e, 0xb0, 0x64, 0x93, 0x96, 0x5c, 0x97, + 0xbd, 0xd7, 0xb5, 0xee, 0x13, 0xe2, 0xec, 0xb6, 0x96, 0xd1, 0xfb, 0x53, + 0x2f, 0x8a, 0x7f, 0x8c, 0xf4, 0x1c, 0x56, 0xba, 0x43, 0x8d, 0x64, 0xe9, + 0x06, 0x2a, 0xe9, 0xe3, 0xc6, 0x35, 0x72, 0x9f, 0x8b, 0xf6, 0x67, 0x29, + 0x1c, 0x84, 0x57, 0x28, 0x7e, 0x68, 0xfb, 0x6f, 0xf0, 0x03, 0x7a, 0x8b, + 0xb8, 0xf5, 0x34, 0x46, 0xe8, 0x15, 0x88, 0xa8, 0x93, 0x15, 0xb2, 0x72, + 0x20, 0x24, 0x73, 0x57, 0x9a, 0x71, 0x72, 0x4e, 0x3a, 0x28, 0x06, 0x09, + 0x46, 0xe8, 0x05, 0xab, 0x50, 0x2d, 0xb5, 0x18, 0x72, 0x61, 0x7a, 0xb1, + 0x04, 0xf3, 0xf1, 0x14, 0x43, 0x17, 0xb4, 0x9d, 0xd0, 0x84, 0x3e, 0x66, + 0x14, 0x64, 0xa3, 0x45, 0x55, 0x63, 0x06, 0xaf, 0x01, 0x16, 0xf4, 0x77, + 0xac, 0x33, 0x2f, 0xd4, 0xd4, 0xfb, 0x06, 0xda, 0xc9, 0xb9, 0xb1, 0x3f, + 0x32, 0xb9, 0x6e, 0x29, 0x30, 0xb0, 0x19, 0x02, 0xbc, 0x0e, 0x59, 0x86, + 0xa6, 0x07, 0xb4, 0xa0, 0x70, 0xe4, 0xb7, 0xb0, 0x7f, 0xf1, 0xf2, 0xe1, + 0x38, 0xe3, 0x93, 0xc7, 0x58, 0x67, 0x2b, 0x47, 0x3c, 0x48, 0x52, 0x1a, + 0xfc, 0xdd, 0xd1, 0x39, 0x66, 0xba, 0x10, 0x2e, 0x7f, 0x77, 0x65, 0x48, + 0x73, 0x2b, 0x31, 0x65, 0xd1, 0xb8, 0x77, 0x12, 0xe3, 0x87, 0x52, 0xa4, + 0x7e, 0x3c, 0x16, 0xf4, 0x95, 0x26, 0x79, 0x72, 0xcb, 0xea, 0x38, 0x47, + 0x3d, 0x3a, 0x84, 0x2d, 0x44, 0x13, 0x60, 0xcc, 0xe6, 0x15, 0xde, 0x5d, + 0x9e, 0xc8, 0x72, 0x55, 0x21, 0x87, 0xe5, 0xc3, 0x9d, 0xbe, 0x3d, 0x17, + 0xad, 0x19, 0x8b, 0x16, 0xce, 0x8f, 0xe0, 0xee, 0x23, 0x9c, 0x31, 0x0c, + 0x33, 0xa5, 0x62, 0x82, 0x3a, 0x1d, 0x5d, 0xe6, 0x05, 0xe6, 0x5d, 0x10, + 0xa8, 0xc5, 0xfb, 0x5b, 0x86, 0xfb, 0x21, 0x1d, 0x3e, 0x3f, 0xf8, 0x3b, + 0xb7, 0xca, 0xad, 0xa2, 0xd3, 0x37, 0x27, 0xa7, 0x2f, 0x8e, 0x5f, 0x3f, + 0xef, 0x47, 0x87, 0x27, 0xa7, 0xff, 0xe8, 0x47, 0xaf, 0x4e, 0xfe, 0x7e, + 0x14, 0x71, 0x29, 0x64, 0xc0, 0xc5, 0xd9, 0xfa, 0xbf, 0xd7, 0x18, 0x1a, + 0x46, 0x07, 0xaa, 0x13, 0xa7, 0xe4, 0x4c, 0x0d, 0xab, 0x54, 0x0c, 0x18, + 0xc8, 0x8e, 0x4b, 0xab, 0x96, 0x0f, 0x87, 0x72, 0x0d, 0x0e, 0x0e, 0xbe, + 0xef, 0xfb, 0xa3, 0x03, 0x58, 0x51, 0x74, 0x7a, 0x72, 0x76, 0x4e, 0x8b, + 0xc1, 0x2d, 0x30, 0xbb, 0x86, 0xf9, 0x51, 0xec, 0x76, 0x5f, 0x3e, 0x1c, + 0x39, 0x19, 0xb8, 0x26, 0x87, 0xa5, 0x25, 0x30, 0x9f, 0x8c, 0xeb, 0x2f, + 0x5c, 0xd3, 0x48, 0xd6, 0x59, 0xdd, 0xf6, 0xb1, 0x0d, 0xa8, 0x41, 0xf4, + 0xf2, 0xb8, 0xfe, 0x4b, 0x69, 0xde, 0x4e, 0x58, 0x72, 0xdc, 0xf7, 0x3a, + 0xbb, 0xe5, 0x82, 0x11, 0xfb, 0x76, 0x85, 0x6c, 0xbf, 0xd1, 0xbe, 0x8a, + 0xd4, 0x02, 0x7a, 0x08, 0xd1, 0xd9, 0x02, 0x60, 0x46, 0x5e, 0x01, 0x1b, + 0x1a, 0x8d, 0x15, 0x39, 0x36, 0xc9, 0xd3, 0x29, 0x08, 0x61, 0x12, 0x44, + 0x76, 0xfc, 0x9a, 0xec, 0xc6, 0x49, 0x96, 0x0f, 0x27, 0x8d, 0xe0, 0xe9, + 0x20, 0xec, 0x02, 0x79, 0x1b, 0x41, 0x16, 0xd0, 0x8f, 0xcd, 0x5a, 0xab, + 0xc5, 0xe4, 0x96, 0x1b, 0x01, 0x17, 0x0a, 0x0c, 0x75, 0xb4, 0x92, 0x35, + 0x91, 0x47, 0xc2, 0x96, 0x51, 0x7c, 0xac, 0x41, 0xd3, 0x2e, 0xb0, 0xbe, + 0x50, 0x1d, 0x21, 0xf3, 0x09, 0x87, 0x5d, 0x9b, 0x34, 0x03, 0x94, 0x24, + 0x8e, 0x28, 0xf1, 0x13, 0x57, 0xa3, 0x40, 0xd4, 0x5d, 0x9c, 0xbb, 0xd3, + 0xa9, 0x21, 0x32, 0x93, 0x84, 0xce, 0xdb, 0xe7, 0xec, 0xe8, 0xad, 0xc3, + 0xb5, 0x73, 0x15, 0xd0, 0x2d, 0xc0, 0xa8, 0x9d, 0xc0, 0x4f, 0x73, 0x49, + 0xd7, 0x8d, 0x2a, 0x90, 0xea, 0x71, 0x7a, 0xeb, 0xbe, 0x81, 0xde, 0x5c, + 0x99, 0x96, 0x90, 0x24, 0xbb, 0xcc, 0xae, 0x4b, 0x3b, 0xaa, 0x26, 0x67, + 0x5d, 0x3e, 0x5c, 0x32, 0x1a, 0x01, 0x81, 0x8a, 0x9a, 0x67, 0xd8, 0xf9, + 0xee, 0xd6, 0x07, 0x9b, 0x18, 0x1e, 0xa1, 0x8b, 0x84, 0xa3, 0x80, 0xbe, + 0x63, 0xa7, 0x5d, 0x40, 0xc0, 0x20, 0xc9, 0x1d, 0xf9, 0xd4, 0x61, 0xc9, + 0x24, 0x82, 0xc9, 0x4d, 0x57, 0x36, 0x8d, 0x5d, 0x54, 0x16, 0x2c, 0x9f, + 0xf5, 0xe5, 0x31, 0x30, 0x05, 0xda, 0x91, 0x71, 0x81, 0x9f, 0xc2, 0xc5, + 0xb7, 0xe4, 0x5f, 0x22, 0x0a, 0x80, 0xa1, 0x7d, 0xd3, 0xe5, 0xe4, 0x74, + 0x37, 0xb8, 0x22, 0xb3, 0x20, 0x7a, 0xe2, 0x63, 0x56, 0x04, 0x14, 0xf2, + 0xe6, 0xe8, 0xfc, 0x8d, 0xaf, 0xd8, 0xbd, 0x3a, 0x38, 0x5d, 0x3e, 0x35, + 0x3d, 0xf1, 0x11, 0x53, 0xfb, 0x39, 0x5d, 0xaf, 0xce, 0x6f, 0x99, 0x92, + 0x9e, 0xb8, 0xe7, 0x94, 0xdf, 0x1f, 0xbd, 0x24, 0xec, 0x9d, 0xbf, 0xbf, + 0x79, 0xf1, 0x8f, 0xa0, 0x1a, 0xdb, 0xd0, 0xe5, 0x1e, 0xa8, 0x10, 0x6b, + 0xb5, 0xc4, 0x93, 0x1f, 0xb9, 0xbe, 0xef, 0xfc, 0x68, 0x85, 0x1c, 0x93, + 0x1f, 0xa3, 0xd7, 0x2f, 0xe1, 0x18, 0x57, 0x02, 0x3b, 0x6a, 0x2a, 0xca, + 0x4d, 0xab, 0xb0, 0x2a, 0xa6, 0xa0, 0x41, 0xee, 0xff, 0xf4, 0x67, 0x82, + 0xbc, 0x26, 0x1c, 0xc5, 0x3d, 0x50, 0x05, 0xca, 0x9f, 0xfa, 0xf8, 0xe7, + 0x2f, 0x83, 0xc1, 0xe0, 0xeb, 0xa0, 0x7d, 0x9d, 0x3a, 0xb7, 0x04, 0x9f, + 0xc4, 0x40, 0x3c, 0x43, 0x9f, 0x9b, 0xc8, 0x13, 0xc1, 0x79, 0x12, 0x7c, + 0x29, 0x46, 0x79, 0xe7, 0x49, 0x56, 0x62, 0xf7, 0x57, 0x3f, 0x25, 0x9d, + 0xeb, 0x5e, 0x2c, 0xfe, 0x2c, 0x71, 0x7e, 0xad, 0x63, 0x36, 0xac, 0x6e, + 0xbd, 0xda, 0x10, 0xec, 0x7d, 0xa7, 0x84, 0x3f, 0xe0, 0x23, 0x66, 0x8c, + 0x38, 0x9a, 0x96, 0x5d, 0x18, 0xec, 0x54, 0xd0, 0xf2, 0x1b, 0xe0, 0x49, + 0xa2, 0x0c, 0xc8, 0xb7, 0x8f, 0xcd, 0xf2, 0x43, 0xa1, 0x3b, 0x3a, 0x56, + 0xcc, 0x4a, 0x41, 0x46, 0x58, 0x92, 0x13, 0x80, 0x54, 0x04, 0x54, 0x02, + 0x36, 0xd3, 0x7a, 0xb4, 0x89, 0x1f, 0x59, 0x35, 0xac, 0x63, 0xc7, 0x18, + 0xf2, 0xc2, 0xc7, 0x24, 0x4d, 0x1b, 0xe0, 0xeb, 0x0c, 0x7f, 0xea, 0x20, + 0xe5, 0x59, 0xf4, 0x77, 0xc7, 0x07, 0xab, 0x91, 0xc1, 0xc0, 0x70, 0x66, + 0xbb, 0x0d, 0x70, 0xa3, 0xc1, 0xc1, 0x56, 0xf5, 0x15, 0x5e, 0x24, 0xe8, + 0x5c, 0xc1, 0xce, 0x65, 0x49, 0x8b, 0x12, 0xce, 0xcb, 0xc6, 0x61, 0xc2, + 0xc7, 0xa2, 0x5c, 0xbc, 0x87, 0x99, 0x0d, 0xc6, 0xb8, 0x50, 0x6d, 0xee, + 0x71, 0x1b, 0x70, 0xd6, 0x00, 0x26, 0x37, 0x6a, 0x7f, 0x36, 0x42, 0x83, + 0xdf, 0x18, 0x06, 0x27, 0x72, 0xda, 0x10, 0xac, 0xfd, 0x69, 0x0d, 0x3d, + 0x04, 0xb4, 0xfa, 0x60, 0xef, 0x03, 0x25, 0x58, 0xb4, 0x64, 0x02, 0x53, + 0x52, 0xbd, 0xbe, 0xd9, 0x10, 0x25, 0x3b, 0x03, 0x52, 0x63, 0x08, 0x47, + 0x3e, 0x01, 0x6b, 0x16, 0xa6, 0xe3, 0x51, 0xc2, 0x9d, 0x62, 0x02, 0x89, + 0xc9, 0x4c, 0x20, 0x9c, 0x74, 0x56, 0xd0, 0xa4, 0xf6, 0xce, 0x48, 0x9d, + 0x58, 0x93, 0xdc, 0x59, 0x01, 0xe6, 0xd2, 0x9b, 0x60, 0x31, 0x0a, 0xd7, + 0xc9, 0x85, 0xc3, 0x42, 0x96, 0x70, 0x74, 0x8b, 0x99, 0xe5, 0x70, 0xd9, + 0x78, 0x23, 0xf9, 0x98, 0x86, 0xd2, 0xf4, 0xbb, 0xf8, 0x91, 0x9f, 0x42, + 0x98, 0xcd, 0xaf, 0x1e, 0x51, 0x94, 0xf6, 0x49, 0x9f, 0xff, 0xf5, 0xc4, + 0xc2, 0x21, 0x3a, 0xd9, 0x84, 0xec, 0xdd, 0x61, 0x4b, 0xf0, 0xf8, 0x54, + 0xab, 0x6b, 0x07, 0xfe, 0x29, 0x31, 0xb6, 0x93, 0x1a, 0xae, 0xf4, 0xad, + 0x16, 0xf8, 0xca, 0xbf, 0xba, 0x5c, 0xd7, 0xcd, 0xf8, 0x08, 0x5e, 0xb8, + 0xd0, 0xc2, 0x77, 0xad, 0x55, 0x26, 0xa4, 0x8e, 0xcf, 0xa2, 0x8d, 0xba, + 0xbe, 0x2d, 0xf9, 0xf4, 0x1b, 0x04, 0x83, 0x5f, 0xa7, 0x16, 0x8a, 0x32, + 0x93, 0xf2, 0x26, 0xaf, 0xe8, 0x82, 0x1c, 0xea, 0xd8, 0x55, 0x21, 0x15, + 0x1d, 0x69, 0x5a, 0x60, 0x6d, 0xef, 0x22, 0xa7, 0x1a, 0x5f, 0x53, 0x43, + 0x61, 0x12, 0xc8, 0x75, 0xe9, 0x53, 0x0c, 0xf1, 0x4c, 0x02, 0x8e, 0x54, + 0xa0, 0x8c, 0xe3, 0x9c, 0xc1, 0x8d, 0xd1, 0xaf, 0x59, 0xf5, 0xd9, 0x83, + 0xee, 0x1f, 0x01, 0xd3, 0x25, 0xdd, 0x16, 0xd2, 0x5a, 0x3b, 0x68, 0x48, + 0x6e, 0xbe, 0x90, 0x08, 0x07, 0xe1, 0x0c, 0x23, 0xba, 0xa6, 0x0b, 0x5f, + 0x48, 0x9e, 0xbf, 0xd9, 0x08, 0xf4, 0x4d, 0xfa, 0x29, 0x6e, 0x73, 0x82, + 0x10, 0xf4, 0x98, 0xbd, 0xa4, 0xd2, 0x48, 0x73, 0x13, 0xf1, 0x7f, 0xe2, + 0x68, 0x70, 0xa8, 0x4a, 0x4c, 0xf8, 0xd1, 0x59, 0x1e, 0xfd, 0x34, 0x2c, + 0x13, 0xc2, 0xdb, 0xff, 0x85, 0x4a, 0x06, 0xa8, 0x7e, 0xdb, 0x2f, 0x13, + 0x7a, 0x3a, 0x78, 0xdc, 0x68, 0x99, 0xb7, 0x74, 0x22, 0xe3, 0x55, 0xb5, + 0xb3, 0xa5, 0x5c, 0x1b, 0xc1, 0x74, 0x80, 0xf3, 0x2c, 0x99, 0xe8, 0xcb, + 0x5b, 0x26, 0xe2, 0x1b, 0x67, 0x0c, 0xfc, 0x6b, 0xbd, 0xb3, 0x66, 0xf9, + 0x3c, 0xce, 0x93, 0x47, 0xb7, 0x8c, 0x43, 0x35, 0x8c, 0x40, 0xad, 0x82, + 0x53, 0x86, 0xaf, 0xb7, 0x86, 0x78, 0xfa, 0x38, 0x30, 0x84, 0xbd, 0xf2, + 0x9f, 0xae, 0xdc, 0x5f, 0x67, 0x70, 0x24, 0xfa, 0xde, 0xa3, 0x47, 0xbb, + 0x7b, 0xdb, 0x3b, 0x78, 0x0a, 0x5b, 0x60, 0xf2, 0xaf, 0x96, 0x67, 0xad, + 0x20, 0xa6, 0x98, 0x29, 0x40, 0x49, 0xf2, 0x20, 0xa1, 0xe2, 0xea, 0x6a, + 0xd4, 0x14, 0xfe, 0x98, 0x37, 0x0f, 0x24, 0xc8, 0xfe, 0xe7, 0x36, 0xb7, + 0x7a, 0x43, 0xd5, 0x12, 0xe8, 0x19, 0x00, 0xb6, 0xc7, 0x0e, 0xee, 0x76, + 0x09, 0x84, 0x94, 0xc4, 0x83, 0x52, 0x81, 0xfc, 0x43, 0x1c, 0xe3, 0x34, + 0xec, 0xe0, 0xd6, 0x7e, 0x7f, 0x94, 0xf5, 0x55, 0x4d, 0xd3, 0xf1, 0x05, + 0x98, 0x84, 0xb3, 0x59, 0x5a, 0xf6, 0x50, 0xa6, 0x6a, 0xb1, 0xc7, 0x20, + 0x7a, 0xce, 0x76, 0xba, 0x46, 0x2a, 0xdb, 0xde, 0x5b, 0x1e, 0x68, 0x78, + 0x63, 0xf8, 0xc7, 0x7a, 0xc3, 0x9c, 0xcc, 0x19, 0x50, 0x14, 0x77, 0xb7, + 0x1c, 0x6d, 0xf4, 0x05, 0x1b, 0x5f, 0x2b, 0xf9, 0x73, 0x5f, 0x09, 0x11, + 0x83, 0x67, 0x84, 0xd6, 0x85, 0xe6, 0xe1, 0x29, 0xb8, 0xb9, 0x41, 0x3c, + 0x23, 0x27, 0xab, 0xed, 0x96, 0x1c, 0x8d, 0x17, 0x98, 0x93, 0xe6, 0x17, + 0x9a, 0x30, 0x9c, 0x80, 0xfb, 0x09, 0x9c, 0x84, 0x97, 0x72, 0x86, 0x01, + 0x51, 0x1b, 0xfa, 0xf9, 0xd1, 0x09, 0x47, 0x1e, 0x7f, 0x32, 0x3a, 0xd7, + 0x48, 0xea, 0xcf, 0x16, 0x5e, 0xa5, 0xc8, 0x30, 0xad, 0xc9, 0x65, 0x37, + 0x99, 0x00, 0x53, 0xc8, 0xc7, 0x53, 0xb1, 0x26, 0x31, 0x9d, 0x2f, 0x83, + 0xb5, 0xe2, 0x45, 0x1c, 0x4e, 0xb1, 0xe9, 0x0e, 0x62, 0xb6, 0x23, 0xb2, + 0x5a, 0x54, 0x8d, 0xca, 0x6c, 0x0e, 0xa3, 0x9e, 0x4e, 0xd3, 0xa4, 0xf2, + 0xcb, 0x60, 0x92, 0xb1, 0x54, 0x65, 0xf2, 0x6e, 0x11, 0xe6, 0x5c, 0x77, + 0xe6, 0xdc, 0x0b, 0x4c, 0x49, 0x90, 0xc0, 0x7a, 0x31, 0x9b, 0x83, 0x96, + 0x23, 0xa5, 0xc8, 0x9c, 0x8f, 0xee, 0xe0, 0x4f, 0x73, 0x81, 0x0d, 0x21, + 0xf5, 0xf9, 0x19, 0x86, 0xd3, 0xe4, 0xfd, 0x4d, 0xe4, 0xf0, 0x60, 0xdc, + 0xd9, 0xd1, 0x14, 0xb3, 0x07, 0x9c, 0x7a, 0x3f, 0x1c, 0xe5, 0x92, 0x5d, + 0xef, 0x37, 0x9c, 0x14, 0x25, 0x25, 0x4d, 0xfd, 0x80, 0x72, 0x51, 0xbb, + 0x68, 0x8b, 0x3a, 0x40, 0x78, 0xa7, 0xd9, 0x3d, 0x2e, 0x7b, 0x8d, 0x5f, + 0xe4, 0x03, 0x5e, 0xe2, 0x56, 0xf4, 0x2d, 0x2a, 0xa4, 0x29, 0x3b, 0x42, + 0x5e, 0xad, 0x81, 0x34, 0x89, 0xcf, 0x50, 0xd0, 0x40, 0x5b, 0xf2, 0x84, + 0x3e, 0x56, 0x03, 0x64, 0x16, 0xba, 0x13, 0x45, 0x18, 0x31, 0x1c, 0xce, + 0x26, 0x20, 0x61, 0x81, 0xa1, 0x32, 0x19, 0x51, 0xb0, 0xb8, 0xa2, 0xef, + 0x8b, 0x6b, 0xe4, 0x2b, 0x7e, 0x5e, 0x9f, 0xed, 0x4d, 0x50, 0x2e, 0x52, + 0x81, 0xfe, 0x49, 0xdc, 0xef, 0xa4, 0x9c, 0xa0, 0xff, 0x03, 0xf2, 0x61, + 0x4e, 0x20, 0x36, 0x5f, 0x4b, 0xdc, 0x2c, 0xd4, 0xf6, 0x9d, 0x9a, 0x2f, + 0x08, 0x46, 0x2d, 0x68, 0x04, 0x03, 0x74, 0xb6, 0xa1, 0x97, 0x02, 0x84, + 0x26, 0x96, 0x14, 0x2c, 0x2e, 0x2e, 0x52, 0xd1, 0xbf, 0xc4, 0x59, 0x06, + 0x9f, 0x53, 0xa5, 0xd2, 0x29, 0x1c, 0x2c, 0xf3, 0x30, 0x9c, 0xf2, 0x55, + 0x66, 0xd7, 0x43, 0x3d, 0x87, 0x8a, 0xd9, 0x50, 0xd3, 0x7e, 0xdb, 0x1d, + 0xa4, 0xfa, 0x91, 0x14, 0xb6, 0x05, 0xb2, 0x0a, 0xf0, 0x92, 0xf2, 0x1d, + 0x4b, 0xed, 0x05, 0x0b, 0x77, 0x25, 0xff, 0xd6, 0x5e, 0x7f, 0xa2, 0x45, + 0xe3, 0x74, 0xe0, 0x88, 0xaa, 0x44, 0x53, 0x27, 0x4e, 0x79, 0x8e, 0x8a, + 0x7e, 0x06, 0xeb, 0xee, 0x28, 0xed, 0x67, 0xef, 0x82, 0x44, 0xcc, 0xb9, + 0x19, 0xbc, 0x03, 0x92, 0x4e, 0x83, 0xf6, 0x15, 0x02, 0xd3, 0x2d, 0xbf, + 0xf3, 0x3a, 0xa8, 0x2a, 0x30, 0xea, 0x80, 0xee, 0x90, 0xa1, 0xb1, 0x0c, + 0xf3, 0x41, 0x0d, 0xba, 0x25, 0x7c, 0x21, 0x8c, 0xfe, 0x68, 0xeb, 0x11, + 0x6a, 0x3b, 0x48, 0x9b, 0x0b, 0xce, 0x78, 0x0e, 0x75, 0x22, 0x10, 0x88, + 0x02, 0x8a, 0xe3, 0xc3, 0xb8, 0xf8, 0x57, 0xd9, 0xaa, 0xb1, 0x49, 0x48, + 0x4e, 0x6c, 0xec, 0x34, 0x57, 0xbe, 0x1d, 0x28, 0x5a, 0x11, 0x46, 0x6d, + 0xd9, 0xb8, 0x1b, 0x8e, 0x26, 0x85, 0xa6, 0xc8, 0x29, 0xc7, 0xd4, 0xba, + 0x83, 0x1b, 0xbe, 0x97, 0x50, 0x32, 0x8d, 0xd9, 0x2d, 0xb9, 0xe7, 0xd4, + 0xce, 0xc5, 0x6e, 0x1a, 0xa8, 0x51, 0x7c, 0x6d, 0x13, 0xc7, 0x83, 0x18, + 0xf6, 0x2d, 0xcf, 0x50, 0x53, 0x7a, 0xf4, 0xc1, 0xf1, 0xf8, 0xb0, 0xc3, + 0x47, 0x59, 0x32, 0x6c, 0x57, 0x23, 0x59, 0xcc, 0x72, 0x1f, 0xee, 0x87, + 0xde, 0x75, 0xb2, 0x3c, 0x4a, 0xe3, 0x64, 0xdd, 0x05, 0x46, 0xeb, 0x38, + 0x27, 0x4a, 0xcc, 0xc7, 0x1f, 0x3e, 0x6c, 0xc8, 0x9e, 0xf8, 0xa0, 0x91, + 0xc3, 0x4c, 0x3b, 0x7c, 0x38, 0xd1, 0xd7, 0xe5, 0xe9, 0x8e, 0x4d, 0x51, + 0xfb, 0xd0, 0x71, 0xe8, 0xe6, 0xe8, 0xab, 0x07, 0xd2, 0x70, 0xe3, 0x1e, + 0x87, 0xd6, 0xb9, 0x9a, 0xd6, 0xc1, 0xa2, 0xdf, 0x8d, 0x9f, 0x3d, 0xdd, + 0x6e, 0x87, 0xa1, 0x71, 0x02, 0xd4, 0x4e, 0x40, 0x07, 0x43, 0xba, 0x6b, + 0x3b, 0x66, 0x6c, 0x20, 0x42, 0xad, 0x36, 0x36, 0x4e, 0x30, 0xb7, 0x82, + 0x7e, 0x8c, 0xbd, 0xe4, 0xd4, 0x1c, 0x3f, 0x42, 0x10, 0xf8, 0x37, 0x47, + 0x2f, 0xde, 0x9e, 0x1d, 0x3d, 0x27, 0x41, 0x9d, 0x84, 0xd0, 0x35, 0xb8, + 0xa9, 0x90, 0x94, 0x0f, 0xd4, 0x45, 0xc1, 0x36, 0x82, 0x59, 0xed, 0x32, + 0x9d, 0x26, 0x10, 0x47, 0xeb, 0xd4, 0x70, 0xfc, 0xf3, 0x76, 0x3e, 0x73, + 0x79, 0x4a, 0x35, 0xa6, 0xb8, 0xfa, 0xc5, 0xc9, 0xb7, 0x67, 0x55, 0xb7, + 0x26, 0xb9, 0xd7, 0xb9, 0x37, 0x56, 0xa9, 0xb4, 0xf0, 0xf4, 0x3e, 0x07, + 0xdf, 0x28, 0xc7, 0x74, 0xa8, 0x71, 0x59, 0x7b, 0x4c, 0xa7, 0x76, 0x33, + 0xda, 0x97, 0x02, 0xe8, 0xaf, 0x03, 0x09, 0x53, 0x06, 0xb9, 0x78, 0x9a, + 0xa6, 0x73, 0xb5, 0x05, 0x93, 0x19, 0xf0, 0x4a, 0x4e, 0x5c, 0x45, 0x43, + 0x53, 0xb3, 0x5a, 0x30, 0x79, 0x9a, 0x17, 0xc4, 0xc0, 0xcb, 0x41, 0xc4, + 0x15, 0xac, 0xfa, 0x4e, 0x2a, 0x91, 0xde, 0x6a, 0x0f, 0x5a, 0x72, 0x61, + 0x6a, 0x59, 0xcf, 0x6a, 0x13, 0x3e, 0x61, 0xfe, 0x1b, 0x00, 0xfa, 0xe5, + 0x8a, 0x74, 0xec, 0x23, 0x8d, 0x0a, 0x9a, 0x94, 0xa6, 0x27, 0xd3, 0x8b, + 0x02, 0x24, 0xfd, 0xe5, 0xcc, 0x74, 0xfa, 0x10, 0xae, 0xba, 0xd1, 0x26, + 0xb8, 0xb6, 0x30, 0xc5, 0x90, 0x0d, 0x95, 0xa0, 0xa6, 0x02, 0x09, 0x3d, + 0x71, 0x59, 0x35, 0xed, 0x37, 0x3b, 0xa5, 0xce, 0x24, 0xd7, 0x8b, 0xf6, + 0x82, 0x77, 0xd0, 0x07, 0x24, 0xf8, 0x2d, 0x2d, 0x0b, 0x31, 0x90, 0x8d, + 0xbd, 0xef, 0x26, 0xb2, 0xeb, 0xb2, 0x83, 0xe9, 0x54, 0xdc, 0xde, 0xd8, + 0x3d, 0xa2, 0xcf, 0xd0, 0xd1, 0xd5, 0x9d, 0xfe, 0xf1, 0xc7, 0x11, 0xa8, + 0x4f, 0x78, 0xb3, 0xe4, 0x03, 0xa7, 0x83, 0x75, 0xd1, 0x1e, 0xc3, 0x2b, + 0xa8, 0x2f, 0xa3, 0x64, 0x37, 0x11, 0x7e, 0x60, 0xa3, 0xe0, 0x0b, 0x91, + 0x8f, 0x0c, 0x59, 0x89, 0x42, 0x4c, 0x61, 0x5d, 0xbf, 0x40, 0x8d, 0xe3, + 0x0b, 0xa8, 0x80, 0x51, 0x9a, 0x68, 0x82, 0x7b, 0x82, 0x21, 0xb9, 0x75, + 0x04, 0x6f, 0x94, 0x65, 0x6d, 0xe0, 0x8f, 0xc9, 0x85, 0x21, 0x99, 0x98, + 0x3c, 0xf7, 0x65, 0x12, 0xaa, 0xa5, 0x29, 0x91, 0xde, 0x35, 0x96, 0xc9, + 0xe9, 0xc0, 0x54, 0x21, 0x4d, 0x6d, 0x06, 0xb2, 0x91, 0xaa, 0x31, 0x13, + 0x67, 0x20, 0xe5, 0x3e, 0x3e, 0xb4, 0x11, 0x0f, 0x25, 0x70, 0xca, 0x33, + 0x44, 0x57, 0x70, 0x92, 0x0a, 0xf0, 0xe3, 0xa9, 0x99, 0x08, 0x01, 0x7b, + 0x5f, 0x52, 0xe2, 0x38, 0x83, 0x95, 0x4b, 0x6b, 0xb4, 0x80, 0x22, 0x47, + 0x78, 0xf1, 0xf8, 0x29, 0xac, 0x03, 0xe7, 0xee, 0x32, 0x69, 0xe3, 0x61, + 0x84, 0xac, 0x18, 0x13, 0xf4, 0x38, 0xcd, 0xc8, 0xc5, 0x0b, 0xd4, 0x7d, + 0xf4, 0x8b, 0x60, 0x6c, 0x7e, 0xad, 0x8a, 0x0c, 0x12, 0x0a, 0x0d, 0xd1, + 0xe7, 0x68, 0xd6, 0x0c, 0x05, 0xb1, 0x9e, 0x27, 0x37, 0x0b, 0x74, 0x1d, + 0x36, 0xe1, 0x9b, 0x51, 0xb3, 0x7e, 0xab, 0x2e, 0x17, 0xb9, 0xa3, 0x5d, + 0x59, 0x2f, 0x0d, 0x8a, 0xf9, 0x7c, 0x59, 0x2f, 0x8d, 0x65, 0xec, 0x6e, + 0x99, 0x3b, 0xb1, 0xbd, 0xf5, 0x20, 0x97, 0x22, 0xda, 0xcf, 0x17, 0xb3, + 0xaf, 0x03, 0xac, 0x20, 0x09, 0xc8, 0x53, 0x17, 0xfd, 0xca, 0x36, 0x5e, + 0x61, 0x32, 0x47, 0x97, 0x31, 0xd3, 0x47, 0x27, 0x0f, 0xee, 0xb3, 0x71, + 0x25, 0xcf, 0x5f, 0x36, 0x21, 0x3b, 0x48, 0x50, 0xca, 0x3d, 0xbb, 0x60, + 0x8b, 0x7b, 0x31, 0xa7, 0x93, 0xf5, 0xb3, 0xef, 0xc5, 0xdb, 0x25, 0x6f, + 0xc3, 0xcc, 0x5b, 0x2e, 0xd7, 0x23, 0x33, 0xc6, 0xcc, 0xb3, 0x6e, 0x80, + 0xbb, 0x96, 0xb1, 0x74, 0x42, 0x20, 0x69, 0xc9, 0x03, 0xf6, 0x9f, 0x73, + 0x4f, 0xdf, 0x3d, 0x41, 0x47, 0x01, 0xba, 0xe9, 0x6b, 0x53, 0x05, 0x56, + 0x58, 0x3d, 0x0f, 0xa0, 0x55, 0x3d, 0x09, 0x87, 0x4e, 0xec, 0x88, 0x47, + 0x5b, 0xcf, 0xfa, 0xd1, 0xa3, 0x9d, 0x2f, 0xfb, 0x88, 0xda, 0x86, 0x7f, + 0xec, 0xe0, 0x1f, 0xbb, 0x64, 0xa9, 0x3e, 0x06, 0x6b, 0xc0, 0x28, 0xad, + 0x1e, 0xc4, 0xfd, 0x38, 0x0d, 0x23, 0x65, 0x18, 0xbc, 0x92, 0x64, 0x58, + 0x2c, 0x1c, 0x95, 0x38, 0x69, 0xee, 0x37, 0xf3, 0x2b, 0x06, 0xb9, 0x41, + 0x1e, 0x54, 0xf9, 0x6d, 0xa1, 0x8a, 0x7c, 0xac, 0x5d, 0xa9, 0x6c, 0x95, + 0x13, 0xfc, 0xb7, 0xbe, 0x04, 0x8a, 0x22, 0xdc, 0x44, 0xd9, 0x4b, 0xca, + 0x05, 0x58, 0x10, 0x76, 0x02, 0x03, 0x5a, 0x25, 0x94, 0x52, 0xea, 0x9d, + 0x0f, 0xc3, 0xb5, 0x20, 0xce, 0x09, 0xd5, 0x1f, 0x30, 0xa7, 0xa9, 0x90, + 0x64, 0xd9, 0xd9, 0x5b, 0x49, 0x20, 0xbb, 0x66, 0xc4, 0x8f, 0x19, 0x55, + 0xdc, 0x32, 0xd3, 0x1f, 0xfa, 0x5c, 0x54, 0x5a, 0x67, 0x11, 0x36, 0x9a, + 0x53, 0xb8, 0xc2, 0x97, 0x17, 0xad, 0x42, 0xc9, 0x00, 0x68, 0xca, 0x2e, + 0x0a, 0x7b, 0x8c, 0x33, 0x2f, 0x02, 0xc5, 0xb9, 0xd0, 0xaa, 0x54, 0xa0, + 0x4a, 0x06, 0xdb, 0xce, 0x2d, 0x84, 0x49, 0xd9, 0x57, 0xc9, 0x6e, 0x85, + 0xfa, 0x40, 0xd3, 0xc9, 0xe9, 0x26, 0x85, 0x0d, 0x2b, 0x7b, 0x45, 0x6b, + 0x65, 0x6d, 0xc4, 0x81, 0x8b, 0x5a, 0x44, 0xa6, 0x41, 0x58, 0x61, 0x17, + 0x67, 0x98, 0xf3, 0x48, 0x27, 0x86, 0x19, 0x1b, 0x89, 0x26, 0xbf, 0x89, + 0x7c, 0x73, 0xf1, 0x01, 0xfa, 0xd1, 0xf7, 0xda, 0x1d, 0x90, 0xa8, 0x81, + 0x02, 0x9e, 0x6b, 0xc0, 0x24, 0x45, 0x80, 0xdf, 0x94, 0xad, 0x25, 0xec, + 0xa4, 0xa9, 0x89, 0xc6, 0x92, 0x4b, 0x69, 0xb0, 0x8e, 0x98, 0x6c, 0x5c, + 0x68, 0xcf, 0x27, 0x4f, 0x42, 0x7d, 0x41, 0x1d, 0x05, 0xa1, 0xab, 0x3f, + 0xf0, 0x27, 0x07, 0xeb, 0xba, 0xbf, 0x3a, 0x60, 0xa5, 0x85, 0xc3, 0x02, + 0xab, 0xa4, 0x9a, 0xc6, 0xd8, 0x8a, 0xfb, 0xb7, 0x6c, 0x1c, 0xed, 0x67, + 0xd4, 0x4a, 0xba, 0xbe, 0x09, 0x77, 0x96, 0xc3, 0x9b, 0x06, 0x4f, 0x02, + 0x4d, 0xfc, 0x26, 0xed, 0x25, 0xe4, 0x71, 0xd8, 0x3a, 0x1e, 0x61, 0xa3, + 0xaf, 0x59, 0xcf, 0x67, 0x07, 0x67, 0x2f, 0xa3, 0xd3, 0x97, 0x07, 0xc7, + 0xaf, 0xe1, 0x9d, 0x38, 0x50, 0x4a, 0xac, 0x8d, 0xbf, 0xfb, 0xe4, 0x4b, + 0x6e, 0xd9, 0x40, 0xad, 0xde, 0xe0, 0x66, 0x1e, 0x9e, 0xc8, 0xef, 0x79, + 0x39, 0x26, 0x15, 0xa2, 0x81, 0xf7, 0x1b, 0x2f, 0x14, 0x0b, 0xa0, 0xbb, + 0x1f, 0xaa, 0xb5, 0x82, 0x1a, 0xad, 0x50, 0xfb, 0x8d, 0x2a, 0x69, 0x10, + 0xd8, 0x0a, 0xe4, 0x2b, 0x5f, 0x19, 0xea, 0xb3, 0xad, 0xbf, 0x86, 0xb5, + 0xb0, 0xd5, 0x0f, 0x54, 0xe9, 0x0c, 0x48, 0xa8, 0x39, 0x6d, 0xf8, 0x3e, + 0x99, 0xa2, 0xad, 0x36, 0xe2, 0x79, 0x22, 0x20, 0x9e, 0x6c, 0x0f, 0x31, + 0x90, 0x16, 0x26, 0xab, 0xb4, 0x59, 0xd0, 0x48, 0x16, 0x7e, 0xe5, 0x1a, + 0xba, 0x43, 0x87, 0x85, 0xd7, 0x40, 0x4f, 0x30, 0x20, 0x05, 0xcf, 0x1d, + 0x35, 0x21, 0x2a, 0x76, 0xbc, 0x00, 0x0e, 0x49, 0x8d, 0x93, 0xa5, 0x61, + 0x43, 0x41, 0xa5, 0xf6, 0xa4, 0x8c, 0x5c, 0x26, 0xd4, 0x7c, 0x16, 0x78, + 0xd2, 0x14, 0xc6, 0x0b, 0xb4, 0xf6, 0x55, 0x9a, 0x0b, 0x5f, 0x8f, 0x06, + 0x45, 0xfd, 0xfe, 0xfa, 0x73, 0x63, 0x7a, 0x5a, 0xc2, 0x2c, 0x59, 0x21, + 0x77, 0x00, 0xf3, 0xf5, 0xf2, 0x58, 0x73, 0xcf, 0x5c, 0x53, 0x0e, 0x59, + 0x82, 0x77, 0x73, 0xb2, 0xf6, 0xe9, 0x1d, 0xe5, 0x6c, 0xbe, 0x0a, 0x1e, + 0x88, 0x45, 0x76, 0xcc, 0xf9, 0x4a, 0x34, 0x29, 0x7b, 0xa9, 0x51, 0x2d, + 0x13, 0xac, 0x84, 0x7b, 0xd3, 0xde, 0x42, 0xdf, 0x8a, 0x96, 0x51, 0x57, + 0xe5, 0x3b, 0xba, 0x98, 0xd5, 0x76, 0xd3, 0x3d, 0x8c, 0xc6, 0xde, 0x01, + 0xe1, 0x83, 0xae, 0xce, 0x55, 0x25, 0xfb, 0xf8, 0xe7, 0xd7, 0x4b, 0xc0, + 0xa7, 0x9a, 0xdd, 0x5a, 0x47, 0x36, 0xdf, 0x58, 0x86, 0x91, 0xe2, 0x7c, + 0x84, 0xc0, 0x3d, 0x7d, 0x7d, 0xf4, 0xdd, 0x49, 0x58, 0x9f, 0x6d, 0xcc, + 0x79, 0x57, 0xba, 0x7c, 0x48, 0xc2, 0x74, 0xe7, 0xc7, 0x0e, 0x8c, 0xe3, + 0x4d, 0x61, 0x31, 0xab, 0xf1, 0xf2, 0x3c, 0xbd, 0x00, 0x43, 0xc7, 0xc2, + 0x41, 0x71, 0xc7, 0x50, 0x77, 0x74, 0x67, 0xa7, 0xcf, 0xa8, 0xdd, 0xe3, + 0x65, 0x71, 0xdd, 0x5d, 0x92, 0xe3, 0xa0, 0xf9, 0x54, 0xf4, 0x34, 0xd6, + 0x93, 0x71, 0xda, 0xa3, 0xa3, 0x52, 0xe2, 0x18, 0xb6, 0x60, 0x07, 0x36, + 0xaa, 0x4a, 0xbc, 0x1a, 0x53, 0xae, 0xbf, 0xa4, 0xe6, 0x48, 0x9f, 0x17, + 0x4c, 0xcc, 0x2d, 0x89, 0x39, 0xa3, 0xc4, 0x43, 0xbb, 0x05, 0x0f, 0xeb, + 0x8a, 0xb4, 0xe3, 0xae, 0x7c, 0xa1, 0xec, 0x8a, 0x74, 0xcf, 0x57, 0x25, + 0x04, 0xea, 0x98, 0x78, 0x41, 0x4d, 0x1c, 0x67, 0x69, 0xdd, 0x40, 0xb7, + 0x71, 0x4e, 0xb2, 0x3d, 0x00, 0x4f, 0x05, 0xd3, 0xfe, 0x73, 0x91, 0x11, + 0x96, 0x1d, 0xa8, 0xd7, 0x1a, 0xba, 0xa3, 0x53, 0xd6, 0x41, 0x23, 0x1a, + 0x94, 0xc4, 0x82, 0x38, 0x13, 0x61, 0xbf, 0x3c, 0x65, 0x1f, 0xc8, 0x00, + 0xf3, 0xe8, 0xa5, 0xca, 0xef, 0x10, 0x3f, 0x6e, 0xb6, 0x40, 0xf8, 0xc7, + 0x63, 0x18, 0x0e, 0x14, 0xe0, 0xa9, 0xc4, 0x4b, 0x04, 0x50, 0x00, 0xa3, + 0x38, 0x04, 0x60, 0x52, 0xbd, 0xc7, 0xb3, 0xf5, 0xfa, 0x8d, 0x15, 0x35, + 0x6b, 0xa2, 0xd8, 0xbb, 0xf0, 0x2a, 0x35, 0x0a, 0x01, 0x2c, 0x04, 0x14, + 0xe7, 0x64, 0xba, 0x59, 0xd5, 0x63, 0xd4, 0xf5, 0x1d, 0x28, 0x14, 0x1b, + 0x83, 0xa9, 0x43, 0x1d, 0xa5, 0xbd, 0x3b, 0x20, 0xc5, 0xb6, 0x5d, 0xc5, + 0xb5, 0x0d, 0x94, 0x01, 0xbf, 0x17, 0xa8, 0xbb, 0x33, 0x28, 0xe6, 0xf9, + 0x13, 0x69, 0xdf, 0x1a, 0x57, 0x63, 0x69, 0x1f, 0x4d, 0xe7, 0x74, 0xee, + 0xcc, 0xdd, 0x83, 0x5a, 0x7c, 0x88, 0x22, 0x69, 0xd8, 0x15, 0xa9, 0x71, + 0x45, 0xc7, 0xf7, 0x15, 0xae, 0x1f, 0xcb, 0x33, 0x8a, 0x8a, 0xf0, 0xae, + 0xe0, 0x50, 0xe0, 0xe3, 0x85, 0x1f, 0x2d, 0x23, 0x4b, 0xee, 0x3c, 0xfb, + 0x68, 0xc5, 0x2e, 0xc6, 0x67, 0x27, 0x87, 0x7f, 0x3d, 0x7b, 0xe4, 0xf4, + 0x30, 0xae, 0x5b, 0x39, 0x64, 0xae, 0x02, 0xe7, 0x37, 0x26, 0x4b, 0x15, + 0x9d, 0x85, 0xcb, 0x87, 0x03, 0x3d, 0x8c, 0x61, 0x4e, 0xe3, 0x59, 0xc4, + 0x15, 0xa2, 0x2f, 0xe5, 0x66, 0x9e, 0x86, 0xea, 0x45, 0x25, 0x62, 0xc4, + 0xd9, 0x0b, 0x26, 0x35, 0xc8, 0x54, 0x47, 0xda, 0x66, 0x99, 0xa9, 0x93, + 0xd5, 0x64, 0xe9, 0x2c, 0xd8, 0x5d, 0x36, 0xdc, 0xff, 0x55, 0x31, 0x79, + 0xa4, 0xf7, 0x77, 0xc1, 0xa5, 0x90, 0x8b, 0x3c, 0xfb, 0x00, 0x2c, 0x13, + 0x0d, 0x46, 0x59, 0x2a, 0xfb, 0x83, 0xa8, 0x44, 0x92, 0xd6, 0xe2, 0xa7, + 0xcd, 0xe1, 0x8f, 0xfb, 0x51, 0x3a, 0xb8, 0x18, 0x44, 0x11, 0x1f, 0x00, + 0x1c, 0xb4, 0x79, 0x61, 0x13, 0xeb, 0xd4, 0x36, 0xeb, 0x62, 0x93, 0x87, + 0x1b, 0xe0, 0x7f, 0x96, 0x71, 0x6f, 0xac, 0x11, 0x2f, 0xb3, 0x31, 0x45, + 0x08, 0x6f, 0x2c, 0x10, 0x9b, 0x72, 0x64, 0xb7, 0x01, 0x30, 0xc5, 0x28, + 0x30, 0xb4, 0x1d, 0x08, 0xc8, 0x02, 0x93, 0x58, 0x48, 0x8b, 0xd2, 0xd1, + 0x14, 0xec, 0xd7, 0x40, 0x69, 0x75, 0x23, 0x87, 0x02, 0x8f, 0x66, 0x81, + 0xfe, 0x95, 0xe9, 0x02, 0xa7, 0xe3, 0x70, 0xaa, 0xe6, 0x61, 0x99, 0x16, + 0x81, 0xf2, 0x7d, 0xbc, 0x69, 0xc1, 0x68, 0x86, 0xd3, 0x34, 0x9c, 0xad, + 0xe6, 0xc4, 0xee, 0x49, 0xbb, 0x53, 0x7a, 0x20, 0x35, 0x46, 0xbb, 0x25, + 0x37, 0x72, 0x63, 0xb0, 0x6a, 0xd5, 0xac, 0x80, 0xa8, 0x55, 0xdb, 0x06, + 0xd7, 0x36, 0x63, 0x30, 0x50, 0x1a, 0xdd, 0xec, 0x9d, 0xec, 0x46, 0x6a, + 0x37, 0xf1, 0x0f, 0x1d, 0x45, 0x2d, 0x53, 0xe2, 0x5c, 0x1c, 0x53, 0x40, + 0x6f, 0xcd, 0x71, 0xee, 0x07, 0x60, 0x2f, 0xb9, 0xcc, 0x28, 0xa9, 0x0c, + 0xb8, 0xaf, 0xb8, 0x3f, 0x24, 0x41, 0xa6, 0x52, 0x86, 0xda, 0x58, 0xa5, + 0x78, 0x3e, 0x3c, 0xc7, 0x8b, 0xbc, 0xb2, 0xae, 0xad, 0x8a, 0xe9, 0xa5, + 0x8d, 0x46, 0x96, 0x3a, 0x70, 0x3c, 0x67, 0xa9, 0x1d, 0x9a, 0x17, 0x9f, + 0xc9, 0x67, 0x6a, 0x9c, 0x2a, 0xb3, 0x23, 0xa9, 0xe3, 0x35, 0xdd, 0x7b, + 0xb4, 0xf5, 0xe5, 0x93, 0xfb, 0x74, 0x68, 0x7f, 0x94, 0x78, 0xad, 0xb3, + 0xf9, 0x1f, 0xb1, 0x0e, 0xed, 0x33, 0xba, 0xe4, 0x5e, 0x9c, 0x2e, 0xb9, + 0x1b, 0xab, 0x0b, 0xf5, 0x36, 0xbf, 0x9d, 0xd5, 0xd1, 0xa5, 0x02, 0xe9, + 0x5b, 0x39, 0x9d, 0xd2, 0xc9, 0x73, 0x16, 0x4e, 0xe4, 0x6b, 0xb0, 0xb8, + 0x10, 0xa3, 0x52, 0xc2, 0x97, 0x3e, 0xee, 0x98, 0x17, 0x46, 0x3c, 0x4a, + 0x99, 0x94, 0xe1, 0x52, 0x8c, 0xd0, 0x6d, 0xf9, 0xd4, 0x9d, 0x18, 0x55, + 0x72, 0x2f, 0x4e, 0x65, 0x44, 0xf9, 0x0a, 0xbc, 0x8a, 0x43, 0x0f, 0x1f, + 0xc3, 0xa9, 0xee, 0xc3, 0xa8, 0x92, 0xfb, 0x70, 0xaa, 0xe4, 0x33, 0xb0, + 0x2a, 0x77, 0x35, 0xb7, 0x32, 0x2c, 0xeb, 0x49, 0x33, 0xec, 0xca, 0x8f, + 0x7b, 0x4b, 0x6e, 0x83, 0x30, 0x2b, 0x2e, 0xbb, 0xff, 0x6f, 0xc2, 0xaa, + 0x92, 0x55, 0xeb, 0x23, 0x1e, 0x94, 0x55, 0x25, 0x0f, 0xc0, 0xab, 0x56, + 0x66, 0x55, 0x8f, 0xe3, 0x61, 0x52, 0x65, 0xa3, 0x36, 0x5d, 0x7b, 0xa5, + 0xf1, 0xe8, 0x45, 0xc2, 0x01, 0x36, 0x51, 0xd3, 0xa1, 0xba, 0xba, 0x96, + 0xaf, 0x8e, 0xa3, 0x22, 0x92, 0x8e, 0x19, 0xa8, 0x7d, 0xe0, 0xc4, 0x2d, + 0x3a, 0x9e, 0xc7, 0xca, 0xe7, 0x4c, 0xbf, 0xc1, 0xa5, 0x23, 0x7b, 0x5b, + 0xac, 0xa0, 0xd8, 0x36, 0x2b, 0x72, 0x20, 0x2a, 0xbf, 0x7e, 0xd3, 0x05, + 0xe8, 0xe2, 0xf3, 0x8c, 0xc1, 0x46, 0x0a, 0x6c, 0x5c, 0x16, 0x7d, 0x77, + 0x76, 0x16, 0x1f, 0x9c, 0x1e, 0x47, 0xb7, 0x78, 0x25, 0xf1, 0x15, 0x67, + 0x8d, 0xd9, 0x72, 0x7d, 0xbe, 0xb1, 0x85, 0x77, 0x32, 0x30, 0xef, 0x41, + 0x17, 0x3a, 0xbc, 0x39, 0xd8, 0x8f, 0xa6, 0x92, 0xc7, 0xcb, 0x4a, 0xbf, + 0x9b, 0x5b, 0x08, 0x76, 0x76, 0x9b, 0x36, 0x0e, 0xaa, 0xa8, 0x01, 0xa4, + 0xa5, 0x3b, 0xab, 0xfe, 0x09, 0xf2, 0xdc, 0x10, 0x9b, 0xe2, 0xf6, 0x50, + 0xdc, 0x74, 0x13, 0xe5, 0x17, 0x3d, 0xe0, 0xd9, 0x33, 0x08, 0x88, 0x4e, + 0x1d, 0x86, 0xb7, 0xbf, 0x7c, 0xb2, 0x0d, 0x7c, 0xe8, 0x86, 0xf3, 0x3b, + 0xe5, 0xe5, 0x47, 0x83, 0xdd, 0xcd, 0x47, 0x83, 0x47, 0x28, 0xdc, 0xa4, + 0x62, 0x84, 0xfa, 0xc1, 0xcb, 0xf0, 0xe1, 0x7c, 0x49, 0x56, 0x2b, 0x5e, + 0x1f, 0x1d, 0x46, 0x0c, 0xca, 0x94, 0x52, 0x06, 0x5e, 0xd3, 0xbf, 0xea, + 0x00, 0xd8, 0x0b, 0x1d, 0x32, 0x1b, 0xf7, 0xb8, 0xa9, 0xb7, 0x1d, 0xea, + 0x96, 0x22, 0xdf, 0x6a, 0x6e, 0x16, 0x82, 0x52, 0x82, 0x3d, 0x54, 0xb2, + 0x2f, 0xb8, 0x46, 0x1f, 0xe9, 0xd3, 0xd9, 0x12, 0x67, 0xc3, 0x96, 0x83, + 0x7b, 0xf8, 0x4b, 0xb0, 0xb4, 0x16, 0x26, 0xb6, 0xd5, 0x93, 0x6c, 0xbc, + 0x39, 0xee, 0x49, 0xab, 0xce, 0x22, 0x1f, 0x92, 0x60, 0x3b, 0xe9, 0x53, + 0x5d, 0x81, 0x1d, 0xce, 0x44, 0x9b, 0x01, 0xe2, 0xf9, 0x0c, 0x45, 0xaa, + 0xaa, 0xbf, 0x1f, 0x23, 0xbc, 0xa3, 0x99, 0xfa, 0xe6, 0xe2, 0xc9, 0x3f, + 0xc7, 0xf9, 0x60, 0x55, 0xdf, 0x64, 0x56, 0x2f, 0x91, 0x2e, 0xde, 0x92, + 0x97, 0xc8, 0x1a, 0xab, 0x18, 0x7b, 0xa5, 0x4b, 0xf5, 0xc7, 0x85, 0xd5, + 0xc3, 0x4b, 0x21, 0xb7, 0xe4, 0xef, 0x72, 0x60, 0x41, 0x41, 0x23, 0x16, + 0x8b, 0xb6, 0x73, 0x51, 0x8e, 0xb2, 0x44, 0xc2, 0x48, 0xd1, 0x6c, 0x3b, + 0xde, 0x1e, 0x10, 0x2f, 0x1d, 0x83, 0x21, 0xe8, 0x9c, 0x15, 0x23, 0x4a, + 0x25, 0x6d, 0xa0, 0x18, 0x0c, 0x31, 0x6a, 0xb0, 0x19, 0xa3, 0x93, 0x36, + 0x89, 0x4a, 0x87, 0x15, 0x70, 0xd7, 0x8d, 0xb6, 0x04, 0x0a, 0x49, 0xd5, + 0xba, 0x10, 0x69, 0x74, 0xab, 0xc8, 0xbb, 0x97, 0x14, 0x12, 0xa1, 0x77, + 0x6b, 0x06, 0xde, 0xaa, 0xae, 0x4e, 0x77, 0xf4, 0x8f, 0x22, 0xb7, 0xdf, + 0x5b, 0x84, 0xe9, 0x2c, 0xb7, 0x1a, 0x63, 0x12, 0x95, 0xb3, 0xf5, 0x96, + 0x2e, 0x1d, 0x81, 0x56, 0x8b, 0xb5, 0x2e, 0x06, 0x80, 0x1e, 0x7f, 0xe4, + 0x38, 0x82, 0x02, 0xa6, 0x0c, 0xf1, 0x98, 0x8d, 0x5b, 0x3d, 0x56, 0x6c, + 0xb6, 0xb5, 0xac, 0x36, 0x4f, 0x3a, 0x3a, 0x36, 0xdc, 0xef, 0xed, 0x2e, + 0x7a, 0x7c, 0xf9, 0x7f, 0xb9, 0xbf, 0x88, 0x09, 0x31, 0x0e, 0xa1, 0x39, + 0xf2, 0x76, 0x2e, 0x37, 0xc8, 0x68, 0x7f, 0xfe, 0x7f, 0x83, 0xec, 0xd3, + 0x19, 0x64, 0xce, 0x15, 0x0e, 0x09, 0xcb, 0xdf, 0x21, 0x0b, 0xad, 0xbd, + 0x0c, 0x5e, 0xb1, 0x30, 0xaa, 0xbd, 0xa7, 0xd8, 0x05, 0xe8, 0x3e, 0xdc, + 0xcb, 0x35, 0xce, 0x1e, 0x25, 0x3e, 0xeb, 0x5a, 0x99, 0x63, 0x35, 0x18, + 0x56, 0x4c, 0x5a, 0x70, 0xd8, 0x59, 0x3d, 0xf5, 0x74, 0x52, 0xc2, 0xdc, + 0xbe, 0x23, 0xb3, 0xf2, 0x7c, 0x4c, 0x91, 0xd7, 0x25, 0xf0, 0x33, 0xb2, + 0xab, 0xff, 0xeb, 0xb9, 0xd5, 0xea, 0x3e, 0xa3, 0xc7, 0xff, 0x3f, 0x87, + 0xfa, 0x04, 0x1c, 0xca, 0x25, 0x9c, 0x75, 0x2c, 0x76, 0xc3, 0x5a, 0x44, + 0xf8, 0xaf, 0xde, 0xe8, 0x0d, 0x1b, 0xdc, 0x46, 0xcc, 0x65, 0xfe, 0xfa, + 0xe3, 0xd3, 0xbf, 0x3f, 0xe1, 0xae, 0xbd, 0x67, 0xed, 0x2c, 0xc4, 0x32, + 0x7a, 0xf9, 0xfc, 0xe0, 0xb4, 0x2b, 0xaf, 0x86, 0xcf, 0xbe, 0x23, 0xef, + 0xec, 0x13, 0xa7, 0x9d, 0xb9, 0x84, 0xf7, 0xf1, 0x6c, 0xcf, 0xf2, 0xd1, + 0x2e, 0xfe, 0xf7, 0x0f, 0x72, 0x60, 0xcd, 0xd3, 0x74, 0xcc, 0xfd, 0xaf, + 0xa2, 0x7d, 0xfa, 0x47, 0x20, 0x4d, 0x37, 0x69, 0x76, 0x2a, 0xc4, 0x14, + 0x43, 0x3f, 0xf5, 0x9a, 0x5e, 0x06, 0x35, 0x3e, 0x97, 0x06, 0xc0, 0xd2, + 0xb1, 0x2d, 0x90, 0x06, 0xba, 0xc1, 0x88, 0xd4, 0x34, 0x33, 0x65, 0x2d, + 0x6a, 0x97, 0x3a, 0x58, 0x03, 0x35, 0x32, 0x4d, 0x86, 0xd4, 0x14, 0x70, + 0xe0, 0x3e, 0xa3, 0x8d, 0xe1, 0x82, 0x57, 0xf2, 0xc6, 0x7e, 0x0a, 0xa7, + 0x41, 0xe6, 0x94, 0x16, 0xb5, 0xbb, 0xc5, 0x9d, 0xfc, 0xe8, 0xa8, 0xc2, + 0x47, 0xfe, 0x0f, 0x4e, 0x5d, 0x70, 0x76, 0xa1, 0x79, 0xf8, 0x4b, 0xce, + 0xfe, 0x41, 0x65, 0x9f, 0xb3, 0x80, 0xdd, 0xad, 0xad, 0xe6, 0xd7, 0xac, + 0x9a, 0x84, 0xdd, 0xda, 0x8d, 0x7e, 0xa0, 0xc1, 0x59, 0x33, 0xb3, 0xdd, + 0xd2, 0x44, 0x7b, 0x23, 0xbb, 0x6a, 0x18, 0x9a, 0x44, 0x41, 0x5d, 0xf8, + 0x5c, 0xb2, 0x70, 0x3f, 0xa7, 0x41, 0x0d, 0x98, 0x04, 0x3c, 0x5e, 0x94, + 0x21, 0xa7, 0x65, 0xe2, 0x9e, 0x36, 0xa7, 0xf0, 0xf7, 0x9b, 0xe5, 0x90, + 0x99, 0x43, 0x19, 0x78, 0x78, 0xf6, 0x79, 0x3f, 0x79, 0x48, 0x1b, 0x0d, + 0x48, 0x3a, 0xb6, 0x54, 0xd4, 0x78, 0xe7, 0xbc, 0x6d, 0x3a, 0xbe, 0x58, + 0x18, 0xad, 0x7f, 0xf8, 0xc8, 0x17, 0xce, 0x7b, 0x4b, 0x19, 0x94, 0x60, + 0x17, 0x56, 0x4e, 0x6d, 0x28, 0x5d, 0x88, 0x02, 0xc6, 0xe5, 0x0c, 0x0a, + 0x4c, 0x79, 0xdb, 0x60, 0x18, 0x13, 0x61, 0x5b, 0x1e, 0x90, 0x05, 0xb5, + 0xef, 0xac, 0xa8, 0xf1, 0xaa, 0xf2, 0xcf, 0xb4, 0x1e, 0x89, 0xd6, 0xc0, + 0x45, 0xbb, 0x88, 0x0b, 0x00, 0xd2, 0xab, 0xe4, 0x44, 0x6a, 0x90, 0x61, + 0xb0, 0x53, 0xe5, 0x4d, 0x14, 0x6e, 0x50, 0xa3, 0x65, 0xfb, 0x52, 0x90, + 0xd0, 0x81, 0x35, 0x46, 0xb7, 0xe1, 0xc6, 0xb9, 0x0d, 0xf6, 0xd6, 0xdd, + 0x89, 0x13, 0xfe, 0xb7, 0xbd, 0x0d, 0x1e, 0x9b, 0x63, 0x7e, 0x68, 0x6f, + 0x44, 0x43, 0x25, 0xc4, 0x5c, 0x3a, 0x74, 0x37, 0xc5, 0xc3, 0xd4, 0xf7, + 0x08, 0xf9, 0x2d, 0xaa, 0xd4, 0x6d, 0x6f, 0xc4, 0x4f, 0x52, 0x52, 0xad, + 0x2d, 0xd6, 0xe2, 0xc2, 0xef, 0x30, 0x9f, 0x76, 0x32, 0x4d, 0xae, 0x05, + 0x96, 0xb6, 0xbd, 0xc6, 0xb3, 0x97, 0xbb, 0xb4, 0x9a, 0xf3, 0x97, 0x67, + 0xdb, 0x83, 0x2d, 0xa3, 0x3b, 0x54, 0x94, 0x48, 0x4d, 0x08, 0xea, 0xdf, + 0x1e, 0x1d, 0x9c, 0x9d, 0x2b, 0x16, 0x7d, 0x23, 0xfe, 0xe5, 0x53, 0x8e, + 0x6d, 0xab, 0x00, 0x03, 0xc3, 0xb9, 0xdc, 0xc0, 0x95, 0x51, 0x60, 0x76, + 0x5c, 0x1b, 0x2f, 0x4d, 0x07, 0x47, 0x4f, 0x1a, 0x41, 0xb3, 0x71, 0x65, + 0x98, 0xdf, 0x7e, 0x00, 0x0e, 0x5a, 0x6a, 0xf2, 0x0d, 0x16, 0x00, 0xdd, + 0x0f, 0xaa, 0xdf, 0x2d, 0xa6, 0x98, 0x15, 0x8e, 0xf3, 0x34, 0x5d, 0xbd, + 0x55, 0x77, 0xc9, 0xbf, 0xbb, 0xfe, 0x29, 0x62, 0xe9, 0xe7, 0x95, 0x59, + 0xac, 0x6e, 0x16, 0x27, 0xf1, 0x3a, 0xfd, 0x96, 0x3c, 0xc1, 0x4a, 0xad, + 0xf3, 0x9c, 0xe4, 0x26, 0x4c, 0x94, 0x1d, 0xd5, 0xd4, 0x78, 0x22, 0xb9, + 0x05, 0xb7, 0xb9, 0x75, 0xb6, 0x0f, 0x9c, 0xa4, 0xd6, 0x1c, 0x7c, 0x65, + 0x8a, 0x6f, 0xad, 0x6d, 0x35, 0x89, 0x2f, 0xe9, 0x89, 0xad, 0x31, 0x88, + 0xce, 0xdf, 0x13, 0x54, 0x4f, 0x4e, 0x1b, 0xec, 0x53, 0xfa, 0xa2, 0x2e, + 0xe2, 0xd1, 0x14, 0xab, 0x51, 0x62, 0xe0, 0x26, 0x9e, 0x4b, 0xee, 0x0c, + 0x7d, 0xad, 0x79, 0x3a, 0x65, 0xfc, 0xe6, 0x68, 0x9a, 0x0d, 0x95, 0xde, + 0x9b, 0x4d, 0x84, 0x08, 0xf0, 0x8f, 0x25, 0x0b, 0xc3, 0x69, 0xf1, 0x98, + 0x6d, 0x6d, 0x10, 0x66, 0x60, 0x7c, 0x51, 0x71, 0x0a, 0x2f, 0x9a, 0x39, + 0xea, 0xd7, 0x5c, 0xa7, 0xa1, 0x0d, 0x8e, 0x05, 0xa2, 0xc8, 0xa4, 0x70, + 0x0f, 0xbc, 0x24, 0x3b, 0x0a, 0x35, 0x38, 0x4f, 0x48, 0x7b, 0x41, 0x03, + 0x80, 0x48, 0x58, 0xc6, 0xee, 0xac, 0x8c, 0x59, 0xce, 0x5e, 0xc4, 0x36, + 0x61, 0xf1, 0x92, 0x3d, 0xd7, 0x25, 0x67, 0x91, 0x9f, 0x9c, 0x35, 0xc6, + 0xa9, 0x6a, 0xea, 0xe4, 0xe1, 0xf4, 0x56, 0xf2, 0xbc, 0xa3, 0xf3, 0x32, + 0xbb, 0x4a, 0x46, 0x37, 0x11, 0x98, 0x36, 0x53, 0x89, 0xd3, 0xe0, 0xee, + 0x98, 0x5e, 0x59, 0xcb, 0x9d, 0x8c, 0x81, 0xb3, 0xb9, 0x85, 0x5c, 0xef, + 0x11, 0x85, 0x08, 0x4c, 0x72, 0x2f, 0xb2, 0x6d, 0x2f, 0xf4, 0xde, 0xb4, + 0xdb, 0x5e, 0x4c, 0xa3, 0xe8, 0xfb, 0x69, 0xcb, 0xed, 0x08, 0x2f, 0x50, + 0xbd, 0x32, 0x02, 0x9d, 0x2e, 0xa1, 0xdb, 0x4e, 0x8e, 0xad, 0x3d, 0x8e, + 0xdc, 0x73, 0xc5, 0xd1, 0x46, 0x49, 0xb0, 0x0f, 0xcb, 0xe8, 0x32, 0x05, + 0xfd, 0x79, 0x70, 0x1f, 0x7e, 0xd6, 0x8e, 0x9a, 0xb9, 0xdc, 0xed, 0x63, + 0xf9, 0x99, 0xd9, 0x82, 0x5b, 0xc3, 0x54, 0xf7, 0xe0, 0x67, 0x66, 0xf0, + 0xfb, 0x90, 0x85, 0x5d, 0xd9, 0x8a, 0x28, 0x43, 0xe5, 0x94, 0x70, 0x4b, + 0x5a, 0x67, 0x0d, 0x97, 0xba, 0xbd, 0x91, 0xeb, 0x58, 0x1e, 0x47, 0x08, + 0x92, 0x84, 0x60, 0x49, 0xc0, 0x8e, 0x68, 0xdb, 0x6d, 0x44, 0x6f, 0x80, + 0x03, 0x80, 0xb6, 0x85, 0x47, 0xb1, 0x09, 0xb2, 0x55, 0x00, 0xbc, 0x04, + 0x28, 0x8f, 0x63, 0x1a, 0x3e, 0x20, 0xd9, 0x39, 0xa7, 0xbf, 0xd6, 0x5a, + 0x97, 0x6d, 0x9f, 0xf4, 0x70, 0x39, 0x80, 0xcd, 0xa0, 0xc0, 0x47, 0xe3, + 0x7d, 0x7e, 0x51, 0x52, 0x57, 0x35, 0xaf, 0x16, 0x14, 0x19, 0xa1, 0xcc, + 0x7f, 0x5b, 0x2a, 0x0b, 0x01, 0xf0, 0x30, 0xa1, 0xe3, 0xfa, 0x1b, 0x45, + 0x52, 0xcf, 0xb6, 0x25, 0x11, 0xad, 0x76, 0x10, 0x3a, 0xbc, 0x9c, 0x34, + 0xed, 0xa2, 0x6e, 0x79, 0xe6, 0xc9, 0x3c, 0xcd, 0x69, 0x30, 0x2c, 0x35, + 0x4b, 0xa5, 0xf4, 0xae, 0x4c, 0x7f, 0xe5, 0xf8, 0xe9, 0x90, 0x1b, 0x35, + 0x5d, 0xa4, 0x39, 0xe8, 0xd9, 0xed, 0xd0, 0xc9, 0x74, 0x9c, 0xcc, 0xcd, + 0x6b, 0xf0, 0xe9, 0xda, 0x25, 0x0f, 0xd5, 0x14, 0x2e, 0xce, 0xa4, 0xdd, + 0x1d, 0xdf, 0xf6, 0x59, 0x0b, 0xdc, 0x3f, 0xcc, 0xd4, 0xc5, 0x32, 0x73, + 0x86, 0xd5, 0x60, 0xe9, 0x80, 0xb8, 0xf7, 0x15, 0x5c, 0xa8, 0x59, 0x6a, + 0x20, 0x3e, 0xd0, 0xdb, 0xe5, 0x25, 0x47, 0xa5, 0xd3, 0x09, 0x87, 0x92, + 0xa9, 0xc0, 0x39, 0x9b, 0xcd, 0xd2, 0xb1, 0xc9, 0xc9, 0xa7, 0x1f, 0xe3, + 0xa2, 0xc4, 0x6b, 0x04, 0x6b, 0x63, 0x0c, 0x7d, 0x3a, 0x6b, 0x34, 0xfc, + 0xfb, 0x01, 0x34, 0x52, 0x78, 0x06, 0x69, 0x05, 0xfe, 0x83, 0xd4, 0x72, + 0x46, 0x23, 0xe1, 0x2e, 0x9d, 0x61, 0x2b, 0xfa, 0xd1, 0xa5, 0x6b, 0xd3, + 0x24, 0xd3, 0x6b, 0x0c, 0x8f, 0x73, 0xaa, 0x7d, 0xe4, 0x77, 0x4c, 0xc3, + 0xfd, 0xc3, 0x0d, 0xc1, 0xc3, 0xab, 0x2e, 0xb1, 0x24, 0xb9, 0xe1, 0x87, + 0x58, 0xba, 0x39, 0x08, 0xda, 0x83, 0x35, 0xac, 0x29, 0x36, 0x26, 0x30, + 0xba, 0x5e, 0x1c, 0x4f, 0xea, 0xb9, 0x21, 0xf6, 0xdb, 0xef, 0x3e, 0x3e, + 0x15, 0x3d, 0x7c, 0x6e, 0x73, 0xd7, 0xfc, 0x77, 0xb8, 0xf3, 0xb4, 0x22, + 0x0f, 0x46, 0x74, 0x99, 0xab, 0xa2, 0x9a, 0xde, 0x41, 0x4d, 0x61, 0x3e, + 0x02, 0x5a, 0x4d, 0x55, 0xc7, 0xf0, 0x49, 0xc5, 0x52, 0x45, 0xa5, 0x93, + 0xe1, 0x67, 0x17, 0x39, 0x4a, 0x6d, 0x97, 0xdf, 0xdf, 0xce, 0xf0, 0xa5, + 0x9a, 0x11, 0x91, 0xa3, 0x04, 0xd6, 0x61, 0xbc, 0xa0, 0xea, 0xcb, 0x59, + 0x46, 0x49, 0xc8, 0x9b, 0xc5, 0x64, 0x42, 0x48, 0xda, 0x20, 0x4e, 0xea, + 0x32, 0x1b, 0x2e, 0x02, 0x79, 0x0d, 0xf3, 0x22, 0xc3, 0xa6, 0x27, 0x8a, + 0x16, 0xc7, 0x73, 0xda, 0x39, 0x18, 0xc0, 0xf7, 0x2e, 0xc7, 0xdd, 0xde, + 0x85, 0xa5, 0x87, 0x7f, 0x8f, 0x96, 0x8a, 0xe1, 0x59, 0xee, 0x47, 0x08, + 0xde, 0x5a, 0xef, 0x25, 0x05, 0x42, 0xc4, 0xd1, 0xd0, 0x0a, 0xb6, 0x3c, + 0xad, 0x60, 0x99, 0x5c, 0xf8, 0x21, 0x29, 0x11, 0xbd, 0x71, 0xcf, 0xd8, + 0xd1, 0x8a, 0xfa, 0x92, 0x4a, 0x3f, 0x58, 0x9c, 0x24, 0xf6, 0xb3, 0xd1, + 0x53, 0xa7, 0x2b, 0x98, 0xc1, 0x6d, 0xd5, 0x7a, 0x60, 0x43, 0xf8, 0x8a, + 0x22, 0x2c, 0xe5, 0x35, 0xf8, 0x5a, 0x00, 0xbc, 0x5c, 0x24, 0x46, 0xc5, + 0x39, 0x5a, 0xfc, 0x4d, 0x0d, 0xa9, 0xd4, 0xe6, 0x1b, 0xe5, 0x8d, 0xe6, + 0x85, 0xa9, 0x38, 0x53, 0x4a, 0x72, 0xde, 0x02, 0x91, 0x07, 0x0a, 0x30, + 0x3b, 0x67, 0xd1, 0xc9, 0x9f, 0x17, 0x79, 0xcc, 0x63, 0x87, 0x5d, 0xb2, + 0x8c, 0x98, 0x37, 0x69, 0xa9, 0xcf, 0x26, 0x4d, 0xc7, 0xf4, 0x51, 0x55, + 0x09, 0x66, 0xce, 0xc6, 0x73, 0x2f, 0x28, 0xcf, 0xd2, 0xb6, 0x0d, 0xe2, + 0x6d, 0x34, 0xdc, 0x00, 0xdb, 0x08, 0x18, 0xc0, 0xd6, 0x29, 0xac, 0x72, + 0x4a, 0xfd, 0xc7, 0xd2, 0x7c, 0x54, 0xde, 0x84, 0x5b, 0xde, 0xdd, 0x55, + 0xbe, 0x7c, 0x52, 0xb1, 0xd9, 0x90, 0x9b, 0xcc, 0x3a, 0x56, 0x10, 0x9b, + 0xfe, 0x6d, 0x26, 0xd0, 0x3c, 0xdc, 0x5a, 0x91, 0x79, 0x06, 0xac, 0x8b, + 0x30, 0xd2, 0xa7, 0xda, 0xf0, 0xce, 0x57, 0x3a, 0x28, 0x75, 0xc9, 0xdf, + 0x27, 0x69, 0x7d, 0x6c, 0x71, 0xe8, 0x47, 0xa3, 0xb4, 0x6b, 0xcb, 0x4c, + 0xaa, 0x2e, 0x61, 0x66, 0x2e, 0x11, 0x3c, 0xd2, 0xda, 0x45, 0x1e, 0x0f, + 0xb4, 0x8c, 0xa4, 0x48, 0x09, 0x55, 0xe3, 0x68, 0xe0, 0x02, 0x3d, 0x59, + 0xb3, 0xec, 0xe2, 0x92, 0xb4, 0x21, 0x86, 0xb4, 0x93, 0x46, 0x8a, 0x93, + 0x05, 0x75, 0xf7, 0x35, 0xf0, 0xaf, 0xcb, 0xed, 0x9d, 0x95, 0x2a, 0x30, + 0x23, 0x1f, 0x18, 0x24, 0xc0, 0xcb, 0xee, 0xc1, 0xb8, 0x80, 0x57, 0xcf, + 0x77, 0x57, 0x28, 0xbd, 0x14, 0x2a, 0xef, 0xb7, 0x78, 0x94, 0x5c, 0x82, + 0x51, 0x36, 0xbf, 0x6c, 0xb4, 0x2f, 0x89, 0x77, 0xfa, 0xfc, 0xd6, 0xd5, + 0x8e, 0x27, 0xc1, 0xce, 0x5e, 0x36, 0x85, 0x97, 0x86, 0xc5, 0xe0, 0xa0, + 0xc0, 0x34, 0x30, 0xb0, 0xb0, 0x86, 0x13, 0x5c, 0xed, 0x48, 0x0d, 0x34, + 0xee, 0xd3, 0x75, 0xdb, 0x01, 0x2a, 0x04, 0xeb, 0x56, 0x35, 0xb0, 0x0d, + 0x05, 0x97, 0x82, 0x5e, 0xc6, 0xf7, 0xae, 0x81, 0x8f, 0x61, 0x33, 0x07, + 0xcb, 0x04, 0xf5, 0x03, 0xda, 0xab, 0x43, 0x20, 0x19, 0x4c, 0x1b, 0x7c, + 0xb2, 0xfd, 0xf4, 0xc9, 0xc6, 0xb2, 0xa3, 0xb4, 0x1f, 0xf8, 0x29, 0x52, + 0x34, 0x69, 0xdc, 0xd5, 0x04, 0x09, 0x3e, 0x8d, 0xdd, 0x4d, 0xf8, 0x44, + 0xf0, 0x5f, 0x3b, 0x83, 0xc6, 0x32, 0x95, 0xdd, 0x54, 0x16, 0x13, 0xd8, + 0x03, 0xec, 0xce, 0xc7, 0x78, 0x61, 0x48, 0x16, 0xab, 0x0f, 0x04, 0xaf, + 0xd2, 0x70, 0x91, 0x4d, 0x09, 0xf7, 0x40, 0xb9, 0x25, 0x71, 0xca, 0x16, + 0x97, 0x9a, 0xf9, 0x39, 0xb0, 0xad, 0xa8, 0x25, 0xf5, 0xb1, 0xdc, 0xd5, + 0x15, 0xb1, 0x47, 0x30, 0xde, 0x26, 0x4f, 0x6c, 0x3d, 0xad, 0xae, 0xb6, + 0x05, 0x00, 0x5a, 0xfe, 0x35, 0xd8, 0x0e, 0xe0, 0x53, 0xeb, 0xef, 0x76, + 0x1c, 0x5a, 0xb3, 0x23, 0x7e, 0x3c, 0xad, 0xed, 0x7e, 0x0c, 0xad, 0xed, + 0xde, 0x8f, 0xd6, 0x9e, 0x3e, 0x7e, 0xf2, 0x6c, 0x29, 0xad, 0x39, 0x5b, + 0xf6, 0x69, 0x68, 0x6d, 0xf7, 0x41, 0x68, 0xcd, 0x59, 0xe6, 0x7f, 0x13, + 0x5a, 0x73, 0xa8, 0xff, 0x81, 0x68, 0x4d, 0xab, 0x13, 0xf7, 0x51, 0x69, + 0xfb, 0xda, 0x03, 0xfd, 0x95, 0xe2, 0x51, 0x42, 0x7c, 0x41, 0xb0, 0x52, + 0xd6, 0x7e, 0xe4, 0x1d, 0x0f, 0x48, 0x5d, 0x3a, 0x00, 0x92, 0x32, 0x85, + 0x51, 0x8f, 0xae, 0xa6, 0xbd, 0x9a, 0xab, 0x92, 0x44, 0xf3, 0x29, 0x32, + 0xff, 0xb5, 0x78, 0xad, 0x2f, 0x7d, 0x56, 0x55, 0x15, 0x73, 0x90, 0x51, + 0xb9, 0xa8, 0xf5, 0xf3, 0xd6, 0x4c, 0x73, 0xb6, 0x0d, 0x7f, 0xf6, 0xe7, + 0xaa, 0xd4, 0xe2, 0xd9, 0x05, 0xb6, 0xb6, 0xfe, 0x50, 0xdf, 0xbf, 0x2a, + 0x95, 0xa9, 0xc1, 0xa9, 0xb3, 0x6d, 0x12, 0xc4, 0x0d, 0xe8, 0x66, 0xd2, + 0xfe, 0x34, 0x88, 0xdf, 0x20, 0x6e, 0x16, 0xe3, 0x49, 0xd6, 0xbd, 0x1b, + 0x62, 0x8f, 0xca, 0x09, 0x68, 0x93, 0x11, 0x8d, 0x21, 0x26, 0x18, 0x9e, + 0x24, 0x5e, 0x8a, 0x00, 0xc4, 0x2a, 0x43, 0xd4, 0x54, 0xed, 0x32, 0xe6, + 0x81, 0x24, 0x89, 0xa2, 0x32, 0xe0, 0x2e, 0x86, 0x54, 0xe4, 0x0a, 0x34, + 0x05, 0x2c, 0xe4, 0x83, 0x17, 0x66, 0x81, 0xc6, 0xd3, 0xde, 0x06, 0xd0, + 0x00, 0x8a, 0x4a, 0x6b, 0x6e, 0x71, 0x62, 0x26, 0x6b, 0xba, 0x96, 0xed, + 0x37, 0x54, 0xc1, 0x46, 0x98, 0x93, 0x34, 0x21, 0xdd, 0x88, 0x54, 0x53, + 0x02, 0xc3, 0x15, 0x0c, 0x9d, 0x42, 0xc0, 0xae, 0x90, 0xba, 0x7e, 0xc8, + 0xf2, 0x31, 0xa6, 0x3d, 0x8b, 0xc1, 0x39, 0x05, 0xcd, 0x92, 0xd3, 0xdd, + 0xbd, 0xe1, 0x46, 0xc9, 0x5c, 0x42, 0x35, 0xff, 0x5d, 0x20, 0x01, 0x5a, + 0xe7, 0xff, 0xf0, 0x79, 0xb2, 0xee, 0xe8, 0xab, 0x5f, 0x01, 0x77, 0x69, + 0xf1, 0xf1, 0x6a, 0x37, 0xc0, 0x36, 0x6d, 0x22, 0xf2, 0x77, 0x2f, 0x44, + 0x13, 0xca, 0xa4, 0x85, 0x52, 0x8a, 0xb4, 0x41, 0xf5, 0xda, 0x1a, 0x8f, + 0x15, 0xb2, 0x0d, 0x82, 0x6e, 0xc5, 0x73, 0x93, 0xd6, 0x53, 0xa3, 0x1b, + 0x6d, 0x6a, 0x92, 0x7b, 0x12, 0x0a, 0x2e, 0x22, 0x46, 0xe9, 0xd1, 0xe1, + 0xb9, 0x87, 0xa2, 0x37, 0x2e, 0x02, 0x68, 0x7e, 0xf2, 0xa1, 0x9c, 0xa9, + 0x63, 0xdf, 0x6c, 0x00, 0x3c, 0x55, 0x9e, 0x2c, 0x21, 0x60, 0xb2, 0xda, + 0xcf, 0xaa, 0xa6, 0x68, 0x07, 0xb7, 0x8e, 0xa2, 0xf3, 0x88, 0xe2, 0xe7, + 0xb8, 0xd6, 0xf1, 0x62, 0x36, 0x97, 0x4f, 0xa2, 0x16, 0x11, 0x19, 0xeb, + 0xc3, 0x84, 0xc3, 0x2b, 0x38, 0x5c, 0x49, 0x19, 0xea, 0x84, 0x42, 0xbc, + 0x59, 0x20, 0x11, 0x38, 0x73, 0x4a, 0xef, 0xb3, 0xc4, 0x5e, 0x14, 0x61, + 0xfb, 0xb8, 0x6e, 0x36, 0x69, 0xf5, 0x3b, 0xa1, 0x8c, 0xd3, 0xe1, 0xe2, + 0x42, 0x7b, 0x9a, 0x19, 0x58, 0xdf, 0x26, 0xcf, 0x22, 0x28, 0x08, 0x6c, + 0x80, 0x9e, 0x0a, 0x18, 0x0f, 0xc6, 0x88, 0x2a, 0x0c, 0x5e, 0x56, 0xbe, + 0x91, 0x35, 0xba, 0x25, 0x17, 0xbc, 0xe3, 0x48, 0x1f, 0xda, 0x2d, 0xd3, + 0x31, 0xcd, 0xca, 0x74, 0xdf, 0xb5, 0x5c, 0x7b, 0x50, 0xf1, 0x07, 0x21, + 0x93, 0x95, 0xae, 0x44, 0x9b, 0x00, 0xfa, 0xad, 0xe3, 0xa7, 0x8b, 0xd2, + 0xa6, 0xe8, 0xf6, 0x6d, 0x77, 0x53, 0xcc, 0x1f, 0x35, 0xaf, 0x4e, 0x3d, + 0x9a, 0xc7, 0x13, 0x10, 0x87, 0x05, 0x18, 0xe7, 0x5f, 0x84, 0xb1, 0x80, + 0xb8, 0xf0, 0x15, 0xfd, 0xc0, 0x87, 0xa7, 0xd1, 0x0b, 0x14, 0x9d, 0x68, + 0xc9, 0x47, 0xeb, 0xa4, 0x48, 0x3e, 0xda, 0xde, 0x45, 0x88, 0xd4, 0xc6, + 0x6f, 0x48, 0x6f, 0x80, 0x1f, 0x79, 0x98, 0xed, 0xa0, 0x2e, 0x54, 0xe4, + 0x3c, 0x24, 0x2b, 0x9d, 0x2b, 0x4f, 0x08, 0x51, 0x03, 0xe8, 0x14, 0x5b, + 0x82, 0x12, 0x9f, 0x4e, 0x93, 0x72, 0x9a, 0x21, 0xa5, 0x5f, 0x49, 0xa7, + 0x3a, 0x31, 0xdc, 0x83, 0xfe, 0x8c, 0x68, 0x5d, 0xf1, 0xdf, 0x59, 0x75, + 0x41, 0x71, 0x61, 0xbd, 0xc6, 0x07, 0x87, 0x7f, 0xdd, 0x50, 0x5b, 0x5f, + 0x63, 0x90, 0xd8, 0x71, 0x26, 0x04, 0x5b, 0x85, 0x7d, 0xee, 0x18, 0x5a, + 0x4a, 0x8e, 0x30, 0x1d, 0x3b, 0xba, 0xfb, 0x52, 0x5a, 0x75, 0xf7, 0xb0, + 0x4d, 0x9f, 0x1f, 0xcf, 0x8f, 0xdd, 0xd1, 0x57, 0x25, 0xcb, 0xc6, 0xca, + 0x56, 0x53, 0xb8, 0x27, 0xf0, 0xdf, 0x34, 0x26, 0x34, 0xff, 0x36, 0xbd, + 0xe4, 0x05, 0x21, 0xf4, 0xb5, 0xc5, 0x21, 0x22, 0xb8, 0x2b, 0x34, 0x18, + 0x9c, 0xfe, 0xbb, 0xd7, 0x27, 0xcf, 0x8f, 0x5e, 0x1e, 0xfc, 0xc3, 0xb8, + 0xf7, 0x70, 0x70, 0x6d, 0x13, 0xf5, 0x2e, 0x4d, 0xaa, 0x9b, 0x77, 0xa0, + 0x81, 0xc1, 0x2f, 0xd7, 0x77, 0x37, 0xb0, 0x9b, 0xbd, 0x07, 0xc9, 0x7f, + 0x91, 0x36, 0x1b, 0x65, 0x32, 0x48, 0xa2, 0xd3, 0x02, 0x32, 0x08, 0xbe, + 0x57, 0xa5, 0x75, 0xd5, 0x88, 0x1f, 0x3a, 0x3d, 0x27, 0x58, 0x01, 0x37, + 0xed, 0x94, 0x98, 0xe7, 0x6a, 0x08, 0xc6, 0xf7, 0x61, 0xb1, 0x1e, 0x93, + 0xd5, 0xd4, 0xc9, 0x41, 0xa2, 0x2c, 0x82, 0xb0, 0x4f, 0x18, 0xe6, 0x19, + 0x29, 0x15, 0xae, 0x6b, 0xec, 0xf1, 0xd6, 0x60, 0x67, 0x63, 0xb9, 0xbb, + 0xd9, 0xd9, 0x40, 0x3f, 0xae, 0x68, 0xa8, 0xe5, 0x9e, 0x91, 0x45, 0x67, + 0xf0, 0xfb, 0x90, 0x8a, 0xae, 0x6b, 0x25, 0x4a, 0x79, 0xdd, 0xe7, 0xb9, + 0x87, 0x8b, 0x49, 0xa3, 0x35, 0x6e, 0x5c, 0x53, 0xa3, 0xf5, 0x74, 0x9a, + 0xa7, 0xb5, 0x00, 0x92, 0x45, 0xfb, 0xf0, 0xdf, 0xaf, 0x40, 0xe5, 0xf6, + 0x7a, 0x94, 0x25, 0x55, 0x65, 0x84, 0x8b, 0xd1, 0x35, 0xf1, 0x4d, 0x23, + 0xba, 0x06, 0xda, 0x1a, 0x26, 0x1d, 0x9b, 0x27, 0x41, 0xea, 0xed, 0x79, + 0x5a, 0xd9, 0xf9, 0x3f, 0x4e, 0x8f, 0xbe, 0xda, 0x47, 0xe5, 0xf1, 0x6b, + 0xc4, 0x1e, 0xad, 0x1a, 0x8a, 0x2b, 0xe1, 0xa2, 0x78, 0x5b, 0xf3, 0xe3, + 0xf3, 0xe3, 0xb3, 0xd3, 0x97, 0x27, 0x87, 0x5f, 0xed, 0xff, 0x88, 0xc1, + 0x06, 0x30, 0x79, 0x6e, 0x9c, 0x77, 0xcd, 0xcf, 0x22, 0x6d, 0xbe, 0xe8, + 0x0d, 0xf0, 0xfa, 0xe8, 0x87, 0x77, 0x47, 0xaf, 0xff, 0xfe, 0xd5, 0xfe, + 0x55, 0x52, 0xf6, 0xf1, 0xfb, 0xf8, 0x6d, 0xc4, 0x9b, 0xca, 0xaf, 0xb2, + 0xb2, 0xc8, 0x31, 0x89, 0x07, 0x6c, 0x8d, 0x32, 0xc3, 0x93, 0xf3, 0x13, + 0x97, 0x03, 0x5b, 0xf5, 0xc9, 0x7a, 0xd7, 0xd4, 0xb2, 0x45, 0x57, 0xf5, + 0xf6, 0xd6, 0x96, 0xec, 0xf2, 0x9d, 0xdd, 0x72, 0x7f, 0xed, 0x73, 0xd6, + 0xdb, 0x24, 0xbb, 0x18, 0x38, 0x4c, 0x01, 0x7d, 0x9c, 0xc3, 0xe9, 0xfb, + 0x2a, 0xfb, 0x2d, 0x8d, 0xf6, 0xc9, 0xa4, 0xf2, 0x7a, 0x95, 0x9f, 0xbf, + 0xc0, 0x5e, 0xe5, 0x67, 0x52, 0x7e, 0x84, 0xff, 0x8a, 0xbe, 0x7d, 0xf9, + 0xd7, 0xb3, 0xe3, 0xff, 0x3a, 0x32, 0x19, 0xc8, 0xb3, 0x45, 0x45, 0xae, + 0xce, 0xaf, 0x1f, 0x6f, 0xef, 0x28, 0xee, 0x36, 0xa9, 0x4b, 0xbe, 0x29, + 0x3f, 0x84, 0xa3, 0x78, 0x8f, 0xc0, 0xc3, 0xbf, 0x69, 0xbf, 0xa9, 0x26, + 0x90, 0xad, 0xe9, 0xdf, 0xac, 0x31, 0x47, 0x02, 0x75, 0x54, 0x59, 0xe3, + 0xe5, 0xe0, 0x4b, 0x6f, 0x10, 0x5a, 0x95, 0xb6, 0x21, 0x76, 0x9a, 0x55, + 0xc0, 0x7a, 0x24, 0xd5, 0x12, 0x73, 0xe3, 0x83, 0xa6, 0x21, 0x99, 0x9f, + 0x8d, 0x7d, 0xf8, 0x0c, 0x10, 0x6d, 0x8d, 0xf9, 0xb7, 0xb7, 0x76, 0x1e, + 0x45, 0xb5, 0xdf, 0x78, 0x10, 0xed, 0xfb, 0x25, 0x7c, 0x9f, 0xc6, 0x80, + 0xeb, 0xec, 0xb5, 0xaf, 0xf5, 0x7e, 0x15, 0x3e, 0x61, 0xa7, 0xe4, 0x9e, + 0xa0, 0x9a, 0x0b, 0xea, 0xc6, 0xc3, 0x5b, 0xab, 0xf7, 0x56, 0x7b, 0x04, + 0xde, 0xd6, 0x75, 0x68, 0x86, 0x1b, 0x48, 0xf1, 0x69, 0x4e, 0xa3, 0x73, + 0x92, 0xe4, 0xa6, 0xe9, 0x05, 0xa6, 0x00, 0xf1, 0x61, 0x55, 0xda, 0xa3, + 0x22, 0xa0, 0xa1, 0x83, 0x69, 0x97, 0x17, 0xd7, 0xd4, 0xb7, 0x28, 0xe2, + 0x26, 0x58, 0x73, 0xf2, 0xd0, 0x9b, 0xdc, 0x3a, 0x5e, 0x9a, 0x69, 0xd7, + 0xab, 0x66, 0x42, 0x77, 0x13, 0x23, 0x35, 0x17, 0xfc, 0xf3, 0x16, 0x77, + 0xdd, 0x2d, 0x02, 0xa0, 0xb9, 0x8b, 0x0f, 0x9b, 0x2a, 0xd7, 0x79, 0x7a, + 0x2b, 0x10, 0x90, 0xb3, 0x36, 0x21, 0x9f, 0xed, 0x2f, 0x77, 0x06, 0xdb, + 0x4f, 0x9e, 0x61, 0x5f, 0xab, 0xcd, 0xdb, 0x48, 0x47, 0xb6, 0xc3, 0xa1, + 0x9b, 0xdf, 0x88, 0xb9, 0xc1, 0xc7, 0xc5, 0x94, 0xa2, 0xbc, 0x8f, 0x7f, + 0xf5, 0xd8, 0x03, 0x95, 0x2b, 0x10, 0x01, 0xbd, 0x11, 0xbb, 0x2b, 0x61, + 0x4f, 0x14, 0x9d, 0xac, 0x81, 0xfd, 0x9c, 0x15, 0x63, 0x36, 0xa2, 0xb1, + 0x47, 0xb5, 0x24, 0x44, 0x07, 0xd8, 0x03, 0x67, 0xcd, 0x2b, 0xb6, 0x3f, + 0x5a, 0xe4, 0xf0, 0x38, 0x19, 0x25, 0x08, 0xb4, 0xdb, 0x31, 0xa4, 0x81, + 0x88, 0xf7, 0x6a, 0x81, 0x18, 0xa2, 0x1c, 0xab, 0x70, 0xf7, 0x71, 0x20, + 0x54, 0x19, 0x50, 0xd9, 0x87, 0x2d, 0xfa, 0x5a, 0xf9, 0x34, 0xba, 0xdf, + 0xa8, 0x17, 0xb5, 0xf4, 0xfa, 0x49, 0xa5, 0x8d, 0x30, 0x92, 0x73, 0xe9, + 0xe3, 0x0c, 0x52, 0x01, 0x92, 0x71, 0x13, 0xcc, 0x12, 0x54, 0x34, 0xd0, + 0x5c, 0x22, 0x42, 0x47, 0x39, 0x05, 0xeb, 0xac, 0xd4, 0xe3, 0x86, 0xa0, + 0xec, 0x14, 0x4c, 0xe2, 0x2d, 0x09, 0xd6, 0xf9, 0x51, 0x95, 0x88, 0x72, + 0xbf, 0x0b, 0xe1, 0xb2, 0xfc, 0x69, 0x12, 0x10, 0xa7, 0x45, 0xad, 0xcf, + 0xf0, 0x5b, 0x36, 0x98, 0xe1, 0x85, 0x5d, 0x8a, 0xc6, 0x3b, 0xc8, 0x90, + 0xc9, 0x46, 0x63, 0x83, 0x41, 0x71, 0x08, 0xd1, 0xd6, 0x48, 0x3f, 0xe3, + 0xc0, 0x7b, 0x6b, 0x4b, 0x3c, 0xc3, 0xb1, 0x0e, 0x02, 0x2a, 0x9e, 0xa1, + 0x66, 0xa9, 0x98, 0x7a, 0xee, 0xfb, 0xda, 0xdc, 0x61, 0x9c, 0x54, 0x97, + 0xd1, 0x7a, 0xbc, 0x61, 0x1a, 0x20, 0x66, 0xb5, 0xb1, 0xc9, 0xfd, 0x2a, + 0x2a, 0x78, 0xbe, 0x18, 0x2d, 0x66, 0xdc, 0x3f, 0x94, 0x5b, 0xea, 0x70, + 0x1e, 0xad, 0x94, 0x52, 0xa4, 0x42, 0x13, 0x38, 0xd9, 0x26, 0x67, 0xee, + 0x2b, 0x77, 0xcf, 0x02, 0x8d, 0x48, 0xbc, 0xc1, 0xf2, 0xf4, 0xda, 0x1d, + 0xcc, 0x7a, 0x73, 0xcc, 0x80, 0xc1, 0xac, 0x6f, 0xa7, 0x45, 0x24, 0x07, + 0x8e, 0xd3, 0x0f, 0x19, 0xf7, 0x89, 0xe0, 0x76, 0x4f, 0x74, 0xef, 0x14, + 0x60, 0x30, 0x01, 0xb5, 0x92, 0x82, 0xe8, 0xac, 0xeb, 0x86, 0x80, 0x70, + 0x27, 0xc9, 0x48, 0x7a, 0xb4, 0x96, 0x05, 0x06, 0x25, 0xe9, 0xb8, 0xc7, + 0x45, 0xab, 0xb5, 0x11, 0x6c, 0x20, 0xea, 0xca, 0x89, 0x5c, 0x00, 0xea, + 0xc5, 0x12, 0x32, 0x9f, 0x82, 0x52, 0xac, 0x75, 0x5d, 0x1f, 0x04, 0x01, + 0x77, 0xb5, 0x3e, 0xbb, 0xbf, 0x45, 0xbd, 0x1f, 0x60, 0xb6, 0xad, 0x6d, + 0xa0, 0xc0, 0x79, 0xb4, 0xb3, 0xb5, 0xb3, 0x1d, 0x6d, 0xef, 0xec, 0x6d, + 0x3f, 0xdb, 0xdb, 0xda, 0x5a, 0xa1, 0xf3, 0x2e, 0x8c, 0x12, 0x3f, 0xc8, + 0x30, 0xc4, 0x86, 0x56, 0x33, 0x9e, 0x80, 0xe6, 0x2f, 0x62, 0x6a, 0xbe, + 0xa6, 0x01, 0xcb, 0x37, 0xdc, 0xbd, 0x78, 0x56, 0xd4, 0xa9, 0x87, 0x61, + 0x5d, 0x4f, 0x2b, 0xac, 0x17, 0x89, 0xf6, 0xff, 0x7e, 0xf4, 0xe6, 0xec, + 0xf8, 0xe4, 0xb5, 0xaf, 0x3b, 0xbd, 0x3c, 0xdb, 0x88, 0xe4, 0x97, 0x48, + 0xb6, 0xa0, 0xf3, 0x55, 0xa6, 0xa9, 0x82, 0x0d, 0xb5, 0x63, 0xfe, 0x82, + 0x86, 0x84, 0xb9, 0xa1, 0x79, 0x96, 0xe3, 0x23, 0xed, 0xab, 0x32, 0x1a, + 0xa5, 0xf3, 0x9a, 0x4d, 0x7b, 0x79, 0xdc, 0x54, 0x00, 0x49, 0xb8, 0x9e, + 0x82, 0x10, 0x5b, 0x7d, 0xfd, 0xdb, 0xb6, 0xf9, 0xdb, 0x8e, 0xcf, 0xcd, + 0xf8, 0x17, 0xbb, 0x21, 0x5a, 0x6a, 0x47, 0xdd, 0x2b, 0x6e, 0xa2, 0xa1, + 0xf4, 0x49, 0x79, 0x65, 0xae, 0xa9, 0xe6, 0x18, 0xcb, 0x1d, 0x49, 0xb7, + 0xa4, 0x20, 0x88, 0xef, 0xa3, 0x8a, 0xfe, 0xf6, 0xf6, 0xf8, 0x30, 0xe6, + 0x5c, 0x11, 0x12, 0x20, 0x9b, 0xc0, 0x9b, 0x4c, 0x75, 0x88, 0xb7, 0xa0, + 0x30, 0x36, 0x82, 0x53, 0x8c, 0xba, 0x98, 0x33, 0x92, 0x18, 0xea, 0xd6, + 0xdc, 0x5e, 0xd0, 0xdd, 0xd1, 0xf6, 0x70, 0x58, 0x55, 0xd0, 0x78, 0x11, + 0x1e, 0xbe, 0x22, 0xc7, 0x64, 0xfb, 0xb9, 0xed, 0xd0, 0x73, 0xdb, 0xfe, + 0x73, 0x3b, 0xa1, 0xe7, 0x76, 0xfc, 0xe7, 0x76, 0x43, 0xcf, 0xed, 0x76, + 0x94, 0xdd, 0x29, 0x71, 0xdd, 0xb9, 0xf4, 0xea, 0x3e, 0x65, 0x77, 0x55, + 0xa7, 0x42, 0x21, 0xb3, 0xe3, 0xc7, 0xdd, 0xf9, 0xca, 0x39, 0x6f, 0xed, + 0xda, 0x90, 0xd8, 0x5d, 0xaf, 0x20, 0xdf, 0x41, 0xf3, 0xde, 0x56, 0xdf, + 0x09, 0xb9, 0xf5, 0xa3, 0xc8, 0x19, 0x50, 0xfc, 0x01, 0xe6, 0x27, 0xbb, + 0x03, 0x2f, 0x03, 0x47, 0x57, 0x62, 0xc2, 0x12, 0x16, 0x8e, 0xdc, 0x06, + 0x13, 0xbb, 0x62, 0x89, 0x71, 0xa8, 0xa4, 0x98, 0x62, 0x8b, 0xcb, 0x1c, + 0x72, 0xd3, 0x6a, 0x7b, 0x57, 0xd3, 0x1b, 0xa2, 0x7d, 0xf9, 0xcb, 0x22, + 0xab, 0xb9, 0x1b, 0x7d, 0x98, 0x37, 0x38, 0xcd, 0xd8, 0xd9, 0x1f, 0xcc, + 0xaf, 0x45, 0xf4, 0x5e, 0x65, 0x5b, 0xb1, 0xfb, 0x79, 0x30, 0x3e, 0xe0, + 0xb6, 0xc1, 0x67, 0xae, 0x88, 0xfc, 0x71, 0x5b, 0x88, 0x99, 0xe0, 0xec, + 0xa8, 0xdc, 0xe8, 0xd2, 0x64, 0xec, 0x88, 0xac, 0x36, 0xad, 0xb0, 0xf5, + 0x2b, 0x95, 0xb2, 0x71, 0xa4, 0xaf, 0x50, 0x8b, 0x9d, 0x64, 0x8c, 0x64, + 0x0b, 0x73, 0xcb, 0xe0, 0x8d, 0xa5, 0x1a, 0x67, 0x4f, 0x91, 0x87, 0x14, + 0xf0, 0xb7, 0x6f, 0x5e, 0x7a, 0xf6, 0xbe, 0x52, 0x05, 0x9e, 0xc0, 0xa0, + 0x4a, 0x37, 0x41, 0x72, 0x57, 0x9b, 0x94, 0x34, 0x25, 0x93, 0x5e, 0xd6, + 0xb3, 0xe9, 0x2d, 0xa1, 0x1b, 0x78, 0x17, 0x53, 0xa8, 0xa6, 0x37, 0xac, + 0xd8, 0x53, 0x4f, 0x27, 0xdb, 0x1d, 0x85, 0x6e, 0x0e, 0x9f, 0xab, 0x42, + 0xbb, 0xb4, 0x86, 0x43, 0xaf, 0x27, 0xa6, 0xa6, 0xe3, 0x5d, 0x87, 0xdb, + 0x0e, 0x3a, 0x11, 0xa9, 0xa7, 0xa4, 0x70, 0x6a, 0xfa, 0xa4, 0x69, 0x7f, + 0xc7, 0x26, 0x24, 0x57, 0xe5, 0x71, 0xf6, 0x96, 0x57, 0x1d, 0x94, 0x53, + 0x72, 0x98, 0x49, 0x93, 0x32, 0x9d, 0xb5, 0x4b, 0x34, 0x78, 0xb8, 0x8b, + 0x54, 0x68, 0xf7, 0x2a, 0xce, 0x7f, 0x0f, 0x77, 0x6c, 0x4f, 0x6d, 0xd2, + 0xcc, 0x92, 0x32, 0xb5, 0x36, 0xfd, 0xfd, 0xfe, 0xf8, 0xf7, 0xcd, 0xf9, + 0xe1, 0x33, 0xdf, 0x1d, 0x1c, 0x9d, 0xbd, 0xdb, 0xde, 0x79, 0xf6, 0xee, + 0xbb, 0xc3, 0x57, 0xef, 0xce, 0xbe, 0x3f, 0xd8, 0x79, 0xbc, 0x2a, 0xd2, + 0x8a, 0x0c, 0x46, 0xae, 0x8b, 0x45, 0x79, 0x45, 0xb5, 0xf1, 0x16, 0x79, + 0xbc, 0x31, 0xa1, 0xbd, 0x9a, 0xad, 0xe1, 0xfc, 0xa0, 0x13, 0xbc, 0x87, + 0x05, 0x2d, 0x04, 0xb4, 0xbb, 0x8f, 0x7f, 0x7e, 0xed, 0xad, 0x80, 0xd3, + 0xba, 0xdb, 0x98, 0x38, 0xe8, 0x81, 0x42, 0xa0, 0x69, 0x26, 0x39, 0xde, + 0x48, 0x22, 0x39, 0x37, 0x6b, 0xae, 0x08, 0xe7, 0xef, 0x11, 0x2d, 0xf6, + 0xce, 0xde, 0x9c, 0xf6, 0xfa, 0x92, 0x79, 0x0f, 0x33, 0xc4, 0xf0, 0xef, + 0x88, 0xfd, 0xf1, 0xd1, 0xe3, 0xad, 0xc7, 0x8f, 0x36, 0x06, 0x0e, 0xf3, + 0xa7, 0xb6, 0x09, 0x81, 0x52, 0x09, 0xfa, 0xa5, 0xc5, 0xed, 0x29, 0x5d, + 0x9d, 0x16, 0xf3, 0x51, 0x9a, 0x1f, 0xc8, 0x45, 0x71, 0x7d, 0xee, 0xf7, + 0xb2, 0xc4, 0x36, 0x16, 0x19, 0x4b, 0x2c, 0x87, 0x96, 0xd9, 0x8c, 0x7d, + 0x61, 0xf6, 0x76, 0x25, 0x3d, 0xd3, 0x26, 0x2e, 0x1b, 0x0d, 0x22, 0xed, + 0x29, 0x5f, 0x75, 0x2f, 0x20, 0xc7, 0xc5, 0xcc, 0x47, 0xcb, 0x8e, 0xc1, + 0x66, 0x30, 0xdf, 0x53, 0x3e, 0xdd, 0x71, 0x41, 0x61, 0xc3, 0xbe, 0xcb, + 0x17, 0x78, 0x28, 0x34, 0x8e, 0x0e, 0x23, 0xa3, 0x74, 0x5e, 0x08, 0x77, + 0x1b, 0x56, 0x81, 0x55, 0x7c, 0xa8, 0x0b, 0x61, 0xe6, 0xc7, 0xc5, 0xae, + 0x46, 0xfb, 0x42, 0x01, 0x2d, 0xc2, 0x35, 0xe7, 0xbe, 0xcf, 0x56, 0x6a, + 0x88, 0x74, 0x23, 0xf3, 0x10, 0x11, 0x9a, 0xe9, 0x8a, 0xac, 0xc9, 0xf9, + 0x2d, 0xb2, 0x9e, 0xa5, 0xa0, 0xd4, 0x8d, 0xbb, 0x31, 0xac, 0xd5, 0x49, + 0xe1, 0x7c, 0xce, 0x40, 0x8b, 0x49, 0x44, 0xac, 0x5a, 0x7a, 0xa5, 0xc5, + 0x63, 0xd0, 0x3c, 0x5d, 0x9e, 0x55, 0x12, 0x80, 0x27, 0x50, 0x99, 0xd5, + 0x75, 0x96, 0xe6, 0xab, 0x3e, 0xd3, 0x59, 0x9a, 0xf9, 0xe7, 0xd7, 0x63, + 0xe7, 0x8b, 0xb9, 0xbb, 0xc9, 0x03, 0x1c, 0x2d, 0x0d, 0x14, 0x44, 0x91, + 0xa3, 0x43, 0x55, 0xc8, 0xae, 0xdf, 0xe3, 0x50, 0x25, 0x11, 0xab, 0xf9, + 0xd9, 0xa2, 0x9e, 0x79, 0x0c, 0xe4, 0x61, 0x8f, 0xda, 0xe5, 0x7d, 0x9f, + 0x52, 0xf1, 0xfd, 0xbd, 0x0e, 0x5a, 0x07, 0x6b, 0x1d, 0x36, 0xea, 0xb7, + 0x41, 0x85, 0xf0, 0x05, 0xe2, 0xb3, 0x35, 0x91, 0x4f, 0x1d, 0x5b, 0x86, + 0x6c, 0x17, 0xd5, 0x52, 0x58, 0xd3, 0x59, 0x06, 0x79, 0x4a, 0xd9, 0xf4, + 0x6c, 0xbb, 0xd2, 0x28, 0x5a, 0x33, 0x1a, 0x00, 0x38, 0xc1, 0xdc, 0x1c, + 0x9d, 0xa5, 0xa2, 0xa0, 0xb1, 0x62, 0xe2, 0xb5, 0x4a, 0x74, 0xd4, 0xc1, + 0x22, 0xfd, 0x80, 0x30, 0x16, 0xdc, 0x1a, 0xee, 0x1d, 0x8a, 0x89, 0x77, + 0x72, 0xc8, 0x5b, 0x84, 0x82, 0x97, 0x60, 0x78, 0xe0, 0x32, 0xb9, 0xca, + 0x0a, 0xea, 0xdf, 0x8c, 0x86, 0x20, 0xe6, 0x3c, 0x56, 0xd8, 0x73, 0xc1, + 0x6b, 0x4f, 0xd4, 0xa6, 0x25, 0x18, 0x07, 0x04, 0x4a, 0x99, 0x60, 0x0f, + 0x59, 0xce, 0x5e, 0x52, 0xe5, 0x3e, 0x6b, 0xf6, 0x25, 0x46, 0x52, 0x48, + 0x8c, 0x79, 0x2d, 0xdb, 0xe6, 0x15, 0x50, 0xdd, 0x96, 0x77, 0x2d, 0xa7, + 0xf3, 0x09, 0xd2, 0x27, 0x75, 0xe4, 0x95, 0x89, 0xa8, 0x69, 0x25, 0x76, + 0xe5, 0x21, 0xde, 0x91, 0x80, 0xb6, 0xff, 0x67, 0x11, 0xd0, 0xf6, 0xff, + 0x50, 0x02, 0xda, 0xfe, 0x64, 0x04, 0xb4, 0x7d, 0x3f, 0x02, 0xb2, 0x79, + 0xaa, 0xf8, 0xe9, 0x3e, 0x39, 0xed, 0xdc, 0x8f, 0x9c, 0x76, 0xfe, 0x67, + 0x91, 0xd3, 0xce, 0xff, 0x50, 0x72, 0xda, 0xf9, 0x64, 0xe4, 0xb4, 0xf3, + 0x69, 0xc8, 0x69, 0xf7, 0x7e, 0xe4, 0xb4, 0xfb, 0x09, 0xc8, 0x69, 0xe2, + 0x95, 0x39, 0x47, 0xb7, 0xbb, 0x34, 0x4d, 0x5a, 0xdd, 0xc3, 0xfb, 0x33, + 0x5f, 0x9b, 0x82, 0x27, 0x75, 0x06, 0x28, 0xd0, 0x9d, 0x31, 0x23, 0x87, + 0x37, 0x14, 0x98, 0xc2, 0xdf, 0x8b, 0x33, 0xa1, 0x1a, 0xdc, 0x4a, 0x23, + 0xbb, 0x9f, 0x8c, 0x46, 0x76, 0xef, 0x45, 0x23, 0x3b, 0x2d, 0x1a, 0x59, + 0xd2, 0x9f, 0x7c, 0xbb, 0xaf, 0x6f, 0x05, 0xc9, 0xc6, 0x87, 0x83, 0x4f, + 0xb0, 0x6e, 0x0e, 0xf5, 0xbf, 0x26, 0xf9, 0x7c, 0x10, 0xaa, 0x51, 0x5f, + 0x58, 0xd0, 0x3c, 0x65, 0x53, 0x34, 0x89, 0x94, 0x76, 0x68, 0x0c, 0x93, + 0x3e, 0x40, 0xdc, 0x81, 0x1b, 0xd0, 0xfa, 0x9a, 0x57, 0xdb, 0x87, 0x95, + 0x5d, 0x60, 0xf3, 0xfa, 0xee, 0x93, 0xb1, 0xdf, 0xf5, 0xa9, 0xce, 0xe6, + 0x41, 0xca, 0x31, 0x9c, 0x65, 0xfe, 0x37, 0x29, 0xc7, 0x30, 0xb2, 0xae, + 0x51, 0x5d, 0xd1, 0xf8, 0x57, 0x53, 0x25, 0x2a, 0xe3, 0x14, 0x98, 0xf8, + 0xd8, 0xef, 0x89, 0x4b, 0x17, 0xd2, 0x8d, 0x4e, 0x63, 0x78, 0x07, 0x43, + 0x96, 0x18, 0x26, 0x90, 0x3b, 0x1a, 0x1f, 0xc9, 0xbb, 0x36, 0x05, 0x98, + 0x6f, 0x33, 0xb0, 0x08, 0x2f, 0x13, 0x9e, 0x33, 0xf4, 0xb5, 0x45, 0xad, + 0xb6, 0xa9, 0x93, 0x2c, 0xf7, 0xbe, 0x40, 0x9a, 0xe8, 0x24, 0x82, 0xb5, + 0x85, 0xf9, 0x2b, 0xdc, 0xca, 0xdb, 0x6b, 0xb6, 0x3d, 0x4a, 0xb9, 0xe5, + 0x72, 0x76, 0x0b, 0xb2, 0x85, 0xf3, 0x85, 0x9f, 0x20, 0xff, 0xcc, 0x0e, + 0xbe, 0x32, 0x15, 0x3a, 0xeb, 0x5a, 0xd1, 0xbd, 0x67, 0x0e, 0xa2, 0x79, + 0x92, 0xc9, 0x28, 0x8d, 0x93, 0x6a, 0x94, 0x65, 0xe1, 0x38, 0xb7, 0x56, + 0x4a, 0x24, 0x54, 0xc0, 0x1a, 0xd1, 0xf3, 0x11, 0x66, 0xda, 0xe2, 0xd9, + 0x20, 0xd7, 0x44, 0x69, 0x4e, 0xcd, 0x93, 0xf1, 0x28, 0x80, 0xb9, 0x5f, + 0x14, 0x9a, 0x43, 0x84, 0x3d, 0x5f, 0xbd, 0x52, 0x66, 0x60, 0xe1, 0xf4, + 0xfb, 0xb4, 0x1a, 0x95, 0x19, 0xd0, 0xe9, 0x15, 0x3a, 0xdc, 0xb1, 0x20, + 0x54, 0x20, 0x78, 0x24, 0xad, 0x8d, 0xc3, 0xd0, 0x92, 0x37, 0x4e, 0xb1, + 0x45, 0x86, 0xdc, 0x6e, 0x0d, 0xd7, 0x8b, 0x7b, 0x18, 0xf1, 0xc7, 0xdf, + 0x93, 0xb9, 0x0e, 0x6f, 0x53, 0x86, 0xaa, 0xcd, 0xda, 0x8e, 0xb4, 0x33, + 0xf0, 0xb2, 0xea, 0x1b, 0x84, 0x14, 0xcc, 0x66, 0xd9, 0x34, 0x29, 0xe5, + 0x3a, 0x70, 0x76, 0x36, 0x3a, 0xf8, 0x80, 0xef, 0xa1, 0x2b, 0x94, 0x93, + 0x2a, 0x31, 0x57, 0xfd, 0x03, 0xb7, 0x43, 0xa0, 0xaf, 0xcd, 0xfd, 0x6c, + 0xc8, 0x4b, 0xcc, 0xd6, 0x65, 0x3a, 0x3c, 0x38, 0x3b, 0x3c, 0x3e, 0x6e, + 0x34, 0x4f, 0xc0, 0x7d, 0xa3, 0x34, 0x72, 0x6e, 0xb9, 0x58, 0xcd, 0x60, + 0x03, 0x53, 0x2d, 0x85, 0x09, 0xa5, 0x54, 0x98, 0xba, 0x56, 0xe0, 0xbe, + 0x19, 0xb7, 0x00, 0x2f, 0x31, 0x36, 0x40, 0x5e, 0x89, 0x1c, 0x96, 0x99, + 0x61, 0x8b, 0xf2, 0xcb, 0xc5, 0x2c, 0xc9, 0x97, 0x49, 0x3e, 0x93, 0x7a, + 0xce, 0x13, 0x61, 0x78, 0x02, 0xc9, 0x29, 0x01, 0xf1, 0x7c, 0x95, 0xd5, + 0x99, 0xb8, 0x7a, 0xf3, 0xb4, 0x26, 0xaf, 0x01, 0x1e, 0xf2, 0x64, 0xe2, + 0x55, 0x17, 0xf3, 0x5a, 0x08, 0x60, 0x8e, 0x80, 0x5b, 0x31, 0x4b, 0x99, + 0xce, 0x4f, 0xcf, 0x5a, 0xcf, 0x96, 0x6c, 0x77, 0x3c, 0x0e, 0xb8, 0x9f, + 0xa3, 0x32, 0x1d, 0x73, 0xab, 0xbf, 0xca, 0x87, 0xc1, 0xac, 0x52, 0xf8, + 0x75, 0xcd, 0xf7, 0x15, 0x87, 0xc5, 0x02, 0x9e, 0xe8, 0x5b, 0xa0, 0xd8, + 0x6b, 0x0d, 0x08, 0x53, 0xaa, 0xff, 0x08, 0xfe, 0x05, 0xc4, 0x17, 0x89, + 0xb4, 0xc1, 0xce, 0xb5, 0x81, 0x66, 0xdc, 0x44, 0x98, 0xd3, 0xe2, 0x42, + 0x30, 0xc2, 0xa8, 0x65, 0x6e, 0xf5, 0xd9, 0x8b, 0xad, 0x5a, 0x57, 0xec, + 0x73, 0x44, 0x0a, 0x9c, 0xe9, 0x61, 0x7b, 0x1e, 0xa2, 0xe0, 0x8a, 0xc7, + 0x0c, 0x08, 0x1b, 0x11, 0x2e, 0xc0, 0x17, 0x03, 0xf7, 0xde, 0x91, 0x36, + 0x74, 0x56, 0x7e, 0xf1, 0x8a, 0xc7, 0x97, 0x38, 0x85, 0x72, 0xa9, 0xfb, + 0x95, 0x1f, 0x59, 0x94, 0xd2, 0xe6, 0x83, 0x61, 0x76, 0x68, 0x7c, 0xad, + 0xda, 0x38, 0xe0, 0x2c, 0xd0, 0xb8, 0x4a, 0xe1, 0x2a, 0x62, 0xff, 0x11, + 0x8d, 0xd1, 0x79, 0xb8, 0x04, 0x33, 0xee, 0x90, 0x4e, 0xf5, 0x5e, 0xa5, + 0x46, 0xd9, 0x6c, 0xd1, 0x15, 0x41, 0x7b, 0x21, 0x41, 0x52, 0xa1, 0x4b, + 0x94, 0x5c, 0xc1, 0x6f, 0x39, 0x3f, 0x00, 0xf3, 0x84, 0xda, 0xc7, 0xf2, + 0x3a, 0x21, 0x51, 0x81, 0x94, 0x4c, 0x48, 0xb6, 0x54, 0x9a, 0x2d, 0x57, + 0x66, 0xa0, 0xa1, 0xc8, 0x9b, 0x68, 0x0d, 0x76, 0x6c, 0x0d, 0xb7, 0x85, + 0xfb, 0x13, 0x10, 0x4b, 0xa5, 0xf5, 0x77, 0xae, 0x2e, 0x64, 0xc1, 0x35, + 0x3a, 0x6b, 0xd3, 0xd7, 0x9b, 0xe7, 0xf5, 0x26, 0x2a, 0xb8, 0x6f, 0x2f, + 0x1b, 0x57, 0x3d, 0x89, 0xe9, 0xf6, 0x90, 0xf4, 0x7a, 0x7e, 0x85, 0x4d, + 0x72, 0x55, 0x64, 0x63, 0x91, 0x6e, 0x7a, 0x16, 0xf0, 0x9a, 0x53, 0xba, + 0x22, 0x18, 0x99, 0xb0, 0xa1, 0xd4, 0xfc, 0x31, 0x90, 0xb8, 0xe4, 0xa6, + 0xb1, 0xf3, 0x35, 0x7b, 0x47, 0x6f, 0xba, 0x99, 0x51, 0x74, 0x5c, 0xb3, + 0xc2, 0xec, 0xf5, 0x67, 0xbe, 0xaf, 0x2d, 0xb2, 0xfb, 0x64, 0xb9, 0xc5, + 0xcd, 0x69, 0x60, 0x63, 0xfb, 0x78, 0x21, 0x37, 0x57, 0x8c, 0xdd, 0xdf, + 0xe3, 0x62, 0xde, 0xf3, 0x5e, 0x5a, 0x53, 0xe2, 0x19, 0xe8, 0x81, 0x5b, + 0xfe, 0x3d, 0x85, 0x4f, 0xf0, 0x94, 0x29, 0xb2, 0xeb, 0xab, 0x66, 0xca, + 0x15, 0x0e, 0xed, 0xc6, 0xd5, 0x49, 0x34, 0xc0, 0x79, 0x71, 0xe9, 0x24, + 0x1d, 0x58, 0x14, 0xa4, 0x7e, 0x38, 0x4d, 0xfd, 0x50, 0xc2, 0xba, 0xb1, + 0xb9, 0xcc, 0x92, 0x74, 0xfe, 0xdf, 0xa8, 0x15, 0xb1, 0x73, 0x5f, 0x1e, + 0x1a, 0x19, 0xc9, 0x8c, 0x3c, 0xb8, 0x17, 0xc1, 0xe1, 0x92, 0x9a, 0x02, + 0x41, 0x38, 0xdb, 0x8a, 0xf6, 0xe6, 0x1d, 0xc8, 0x64, 0x27, 0x44, 0x26, + 0x01, 0x9c, 0x5c, 0x43, 0x27, 0x92, 0x85, 0x57, 0xd5, 0xb0, 0x02, 0x62, + 0x87, 0x48, 0x0b, 0xc2, 0xc8, 0xed, 0xe1, 0xf3, 0xe9, 0x8b, 0xad, 0x14, + 0x80, 0xb6, 0xf9, 0xef, 0x46, 0x0d, 0x0d, 0x6e, 0xf9, 0x69, 0xa8, 0x21, + 0x98, 0x54, 0x79, 0x27, 0x72, 0xa0, 0x45, 0x7d, 0x42, 0x7a, 0x68, 0x9f, + 0xff, 0xef, 0x6a, 0x60, 0x34, 0x2c, 0x8c, 0xdb, 0x4d, 0x0c, 0xb6, 0x30, + 0x1e, 0xc2, 0xc0, 0x90, 0x8e, 0x0d, 0xbd, 0x3f, 0xa2, 0x90, 0xf5, 0xca, + 0xae, 0xef, 0x36, 0x4e, 0x5a, 0x96, 0x61, 0x6d, 0xfe, 0x3e, 0xea, 0xfc, + 0x32, 0x6d, 0x7e, 0x35, 0x65, 0x7e, 0xb9, 0x36, 0xaf, 0xea, 0xbc, 0xd8, + 0xdf, 0x46, 0xa1, 0x6f, 0x6a, 0xf4, 0x70, 0xbb, 0x54, 0x9f, 0x27, 0x75, + 0xfe, 0x7f, 0x94, 0x36, 0xaf, 0x84, 0x7c, 0xa7, 0x5e, 0x5e, 0x9f, 0x00, + 0x3a, 0xc1, 0x6c, 0xcb, 0x2a, 0x5a, 0xbc, 0xc6, 0x92, 0x9b, 0x57, 0xbd, + 0xef, 0xe9, 0x3b, 0xfd, 0xa6, 0x40, 0xef, 0xc8, 0x86, 0xb1, 0x3c, 0x67, + 0x89, 0x96, 0xe1, 0x6a, 0x15, 0x2e, 0x4b, 0x08, 0x63, 0x79, 0xd8, 0x45, + 0xb9, 0x2c, 0x03, 0x9b, 0x84, 0xc4, 0xd2, 0xa6, 0x7b, 0x1f, 0xdb, 0x7b, + 0x7c, 0x1d, 0x76, 0x35, 0x1d, 0xb2, 0x3e, 0x11, 0x69, 0x7f, 0x07, 0x72, + 0x2b, 0xbf, 0x0d, 0x74, 0x18, 0x51, 0x44, 0x0e, 0x38, 0x61, 0x72, 0x37, + 0x05, 0x40, 0x3d, 0xe4, 0xca, 0x84, 0x8f, 0xde, 0x5d, 0xd0, 0xe7, 0xc8, + 0x8a, 0x70, 0xe7, 0xe7, 0xff, 0xc4, 0xb8, 0x2d, 0x2b, 0x32, 0xeb, 0x64, + 0x58, 0xe1, 0x86, 0xd7, 0xee, 0x70, 0xce, 0xb6, 0x9f, 0xe3, 0x69, 0x2d, + 0xe6, 0xd3, 0x22, 0x19, 0xc7, 0x94, 0xd1, 0x1d, 0xe4, 0xd9, 0x74, 0xf2, + 0x16, 0x60, 0xbe, 0x99, 0xea, 0x4f, 0x4d, 0x59, 0xa4, 0x2a, 0xa5, 0x10, + 0xbc, 0x41, 0xf2, 0xfc, 0xbe, 0x7d, 0xf3, 0xb2, 0x2b, 0x5c, 0x50, 0x4a, + 0xee, 0x14, 0xbf, 0x46, 0x2e, 0x93, 0xac, 0x5d, 0x42, 0x00, 0xaf, 0x4b, + 0x25, 0x40, 0x32, 0x37, 0xba, 0x65, 0x1b, 0x01, 0xcd, 0xce, 0xad, 0x6c, + 0x16, 0x07, 0xc1, 0xf4, 0x40, 0x8a, 0x6a, 0xd1, 0xe5, 0x44, 0xf0, 0xcf, + 0xc8, 0x2d, 0x88, 0x8e, 0xb0, 0xd8, 0x29, 0x09, 0xe0, 0x26, 0x52, 0x5d, + 0x2f, 0x26, 0x64, 0xfe, 0xa3, 0x58, 0x70, 0x06, 0x27, 0xc3, 0x87, 0xa2, + 0xe3, 0x65, 0x8a, 0xdc, 0xb1, 0x9a, 0x52, 0xf9, 0xc5, 0xe6, 0x86, 0x56, + 0xf4, 0xd2, 0xc9, 0x33, 0xd8, 0x4c, 0x51, 0xde, 0xf8, 0x96, 0x15, 0x95, + 0x6a, 0x11, 0xf2, 0x39, 0xb9, 0xd7, 0x25, 0x4d, 0xb6, 0xf9, 0xf9, 0xb4, + 0x72, 0xe0, 0x50, 0xf2, 0x48, 0x96, 0xbf, 0x17, 0xf7, 0x70, 0x6b, 0xb8, + 0x9b, 0x62, 0x51, 0xb6, 0x26, 0x34, 0x88, 0x34, 0xce, 0xb6, 0x37, 0x76, + 0x63, 0x51, 0xf9, 0xca, 0x02, 0x55, 0x72, 0x81, 0x20, 0xa9, 0x35, 0x05, + 0xb2, 0xbd, 0x8b, 0x92, 0xcb, 0x8b, 0xbb, 0x28, 0x8e, 0x2c, 0x7b, 0x16, + 0xd9, 0x85, 0x57, 0x68, 0x53, 0x94, 0x94, 0x60, 0x2b, 0xe5, 0x25, 0xb2, + 0x2f, 0xe9, 0x04, 0xa8, 0x16, 0xee, 0x0b, 0x49, 0xf5, 0xfc, 0xc6, 0xdd, + 0xb9, 0x92, 0xa2, 0x2e, 0xf2, 0x83, 0x9f, 0x37, 0x42, 0x08, 0x0d, 0x42, + 0x0c, 0xce, 0x92, 0xc4, 0xfd, 0x66, 0x68, 0xa1, 0x35, 0x5f, 0x49, 0xe2, + 0x0d, 0x27, 0x0c, 0x7b, 0x94, 0xe9, 0xf7, 0x33, 0x6c, 0x35, 0x44, 0x20, + 0x0d, 0x23, 0x90, 0x42, 0x70, 0x29, 0x02, 0xf1, 0x2c, 0xd3, 0x7e, 0xc9, + 0xce, 0x8d, 0x3a, 0xc1, 0x7a, 0x82, 0xdd, 0x7b, 0x2e, 0xa6, 0x29, 0x15, + 0xe0, 0x6c, 0x68, 0xa0, 0x04, 0x64, 0x77, 0x96, 0xbb, 0x9c, 0x26, 0x09, + 0x96, 0x5c, 0x89, 0x3f, 0xf3, 0x60, 0x4a, 0x65, 0x4c, 0x75, 0xaa, 0xf9, + 0x8d, 0xce, 0x1c, 0x83, 0x1e, 0xc2, 0x59, 0x45, 0x3a, 0x8b, 0xb4, 0xa3, + 0x68, 0x6f, 0x0e, 0x42, 0xf7, 0x91, 0x4b, 0xc2, 0xe9, 0x66, 0xa7, 0xb3, + 0xe3, 0xf4, 0xb8, 0xd4, 0xd6, 0xd2, 0xa8, 0xbe, 0x86, 0x0a, 0x43, 0x7d, + 0x1e, 0x48, 0x8d, 0x4a, 0x35, 0xb0, 0x4b, 0x9e, 0x46, 0x22, 0x72, 0x86, + 0x09, 0x14, 0x6d, 0x83, 0xfc, 0xea, 0x91, 0x0c, 0xc7, 0x39, 0x87, 0x29, + 0x29, 0x5c, 0x7e, 0x26, 0x37, 0x72, 0x91, 0x70, 0x11, 0x28, 0x73, 0x69, + 0x5b, 0xc2, 0x28, 0xdd, 0x32, 0xb4, 0xa8, 0x09, 0x39, 0xfb, 0xfa, 0xd9, + 0x06, 0x93, 0x19, 0x6e, 0xcc, 0xe9, 0xdb, 0x73, 0xcd, 0xb2, 0xba, 0x9b, + 0x20, 0xfd, 0x47, 0xab, 0xa9, 0x12, 0x46, 0x1f, 0x7d, 0xe6, 0xa6, 0x7a, + 0x00, 0xb1, 0x84, 0x22, 0x37, 0x91, 0xcb, 0x59, 0xec, 0xed, 0x33, 0x72, + 0x10, 0x34, 0x3e, 0xe0, 0xd8, 0x8e, 0xf0, 0x0d, 0x7f, 0xb0, 0x3f, 0xd3, + 0x28, 0xf3, 0x24, 0x2b, 0xcd, 0x69, 0x08, 0x59, 0xfa, 0xc8, 0xcc, 0xf4, + 0x1a, 0x57, 0xa3, 0x15, 0xec, 0x6d, 0x1a, 0x08, 0x6b, 0x43, 0x2e, 0x6d, + 0x40, 0x7c, 0x7a, 0xa8, 0xd1, 0x0c, 0x61, 0x77, 0x7b, 0x0e, 0xfb, 0x82, + 0x99, 0x3d, 0xb1, 0xec, 0xae, 0x23, 0x4a, 0xca, 0x0b, 0x0a, 0xd2, 0xf7, + 0x19, 0x41, 0x85, 0xdb, 0x31, 0x93, 0xc5, 0xa4, 0x29, 0xd2, 0x32, 0xbf, + 0x1a, 0x24, 0x01, 0x25, 0x55, 0xc1, 0x41, 0x99, 0xfa, 0xf0, 0xc3, 0x1c, + 0xd0, 0x70, 0x69, 0x06, 0x85, 0x3f, 0xd5, 0x05, 0x32, 0x52, 0x52, 0xd4, + 0x95, 0xcf, 0x6f, 0xaf, 0x70, 0x48, 0x08, 0x70, 0x29, 0x29, 0x2f, 0xca, + 0x34, 0x8f, 0xce, 0x19, 0x36, 0x95, 0x89, 0x6f, 0x8f, 0xb3, 0x60, 0xe7, + 0x4c, 0x51, 0xac, 0x61, 0x52, 0x83, 0xfb, 0x50, 0x17, 0x45, 0xd6, 0xf6, + 0x30, 0xcf, 0xf7, 0xf1, 0xee, 0xce, 0x4e, 0xc4, 0x9a, 0x3f, 0xb7, 0x6c, + 0xe1, 0x82, 0x46, 0xec, 0xcc, 0x29, 0xf8, 0x47, 0x2c, 0xf5, 0x15, 0x23, + 0x1a, 0x25, 0xb6, 0xe7, 0x17, 0x54, 0x8c, 0x12, 0x3c, 0x2d, 0x50, 0x28, + 0xa6, 0xd1, 0xb0, 0x18, 0xdf, 0xd8, 0x51, 0x81, 0x5c, 0x4a, 0xe4, 0xbe, + 0xc0, 0x8b, 0x04, 0x9c, 0x33, 0x92, 0x64, 0xe2, 0x2a, 0x6c, 0xa2, 0xaa, + 0x66, 0x4a, 0xf2, 0x73, 0x44, 0xad, 0x81, 0x91, 0x0c, 0x73, 0xfa, 0x2b, + 0x98, 0x79, 0x93, 0x45, 0x89, 0x22, 0x81, 0x9c, 0x4c, 0xc0, 0x28, 0xaf, + 0x03, 0x20, 0x05, 0x3e, 0xf1, 0x7d, 0xbc, 0xaf, 0xaa, 0xab, 0x38, 0xe5, + 0xbc, 0xbb, 0xb2, 0xab, 0xe3, 0xf9, 0x5e, 0x36, 0xbb, 0xf8, 0x69, 0x3b, + 0xde, 0xde, 0xda, 0xda, 0xfa, 0x65, 0x30, 0x47, 0xe2, 0xe5, 0xfa, 0x58, + 0xf8, 0x73, 0xd0, 0xa8, 0x9f, 0xef, 0xd0, 0x73, 0x9c, 0xcf, 0xea, 0xfd, + 0x0b, 0xff, 0xb3, 0xdd, 0xc7, 0x3f, 0x77, 0xfe, 0xdd, 0x5b, 0x4d, 0xd7, + 0xf9, 0x0e, 0x37, 0xe9, 0x02, 0x55, 0x3f, 0x0b, 0x99, 0x04, 0xff, 0xfd, + 0x91, 0x6b, 0xcc, 0x24, 0x40, 0x89, 0x2a, 0xe8, 0x98, 0xd0, 0x63, 0x80, + 0xa6, 0x1a, 0xfa, 0x67, 0x39, 0x8d, 0xe1, 0x19, 0xa0, 0x0a, 0xac, 0x66, + 0x4d, 0x3c, 0xed, 0x13, 0x78, 0xe4, 0x46, 0xab, 0x14, 0x3b, 0x19, 0x93, + 0x23, 0x63, 0x9e, 0xa5, 0xa3, 0x54, 0x0a, 0x5c, 0x13, 0xec, 0x6c, 0xc7, + 0x6a, 0x71, 0xc2, 0x9c, 0xfd, 0xcf, 0x41, 0x95, 0x10, 0xd9, 0x46, 0xdf, + 0x55, 0x57, 0xac, 0xa0, 0x8d, 0x78, 0x15, 0xa8, 0x14, 0x71, 0x89, 0x49, + 0x75, 0x03, 0x46, 0xdb, 0x07, 0x62, 0x9a, 0xec, 0x41, 0x03, 0x69, 0xed, + 0x5f, 0x01, 0xba, 0xf1, 0x44, 0x0f, 0x13, 0x72, 0xdb, 0xe2, 0x62, 0xf0, + 0xa3, 0x84, 0xd0, 0xd8, 0xac, 0xca, 0x53, 0x8b, 0x37, 0xb3, 0xd7, 0x51, + 0x9a, 0xa6, 0xec, 0x44, 0xb4, 0x21, 0xe5, 0xd1, 0x6b, 0x7f, 0x5e, 0x8b, + 0xd6, 0xe7, 0xa0, 0xe8, 0x6f, 0xf4, 0x45, 0xdb, 0xa8, 0x4c, 0x9c, 0x8b, + 0xfd, 0xf5, 0xbe, 0xd6, 0x6b, 0x74, 0xe6, 0xa4, 0x8a, 0x09, 0x9e, 0x9d, + 0x17, 0x13, 0x02, 0x8d, 0x85, 0x6b, 0xc4, 0xdf, 0x6d, 0x02, 0x68, 0x8c, + 0xda, 0x2e, 0xba, 0x0d, 0xae, 0x7c, 0x52, 0xa0, 0x98, 0x52, 0x96, 0x44, + 0xe7, 0x49, 0xd9, 0xb8, 0x49, 0xf9, 0xde, 0xeb, 0xf8, 0xe5, 0x28, 0x05, + 0x21, 0x70, 0x5c, 0xf7, 0xb8, 0x3f, 0xdd, 0x55, 0x72, 0x26, 0x41, 0x52, + 0x40, 0x88, 0x8f, 0x15, 0xca, 0xbd, 0xec, 0xcb, 0x5f, 0xf1, 0xb6, 0x91, + 0x0c, 0xc5, 0xf7, 0x9d, 0xd7, 0xc1, 0x82, 0xd9, 0x9c, 0x14, 0xc5, 0x9d, + 0xe6, 0xff, 0x66, 0xb5, 0x8b, 0xed, 0xbc, 0x4d, 0x6f, 0x92, 0xfa, 0x75, + 0x9f, 0xb7, 0x7b, 0x7f, 0xa6, 0xaf, 0xff, 0xe3, 0xce, 0x16, 0xac, 0x74, + 0xc5, 0x3b, 0xdd, 0x26, 0x63, 0xba, 0xbf, 0x7a, 0xd1, 0x1b, 0x39, 0x2f, + 0xcf, 0x5a, 0xed, 0x3a, 0x70, 0x15, 0xfb, 0xf0, 0x87, 0x17, 0x45, 0x32, + 0x4d, 0x0f, 0x91, 0xbc, 0x48, 0x34, 0xd4, 0xa3, 0xcb, 0x00, 0x18, 0x19, + 0x28, 0x8b, 0x18, 0xdb, 0x42, 0xdc, 0xa4, 0x1b, 0x8d, 0x45, 0x82, 0x40, + 0x6d, 0x77, 0x83, 0xd3, 0x74, 0x34, 0x19, 0x16, 0x06, 0x5d, 0xaf, 0x36, + 0x94, 0x74, 0xc8, 0xe1, 0xdf, 0x6c, 0x2e, 0xd1, 0xca, 0x9b, 0x62, 0x05, + 0x51, 0x28, 0x5d, 0x20, 0xde, 0x51, 0x10, 0x73, 0xb3, 0x02, 0xe2, 0x20, + 0xeb, 0x8a, 0x2b, 0xd6, 0x93, 0xc3, 0xef, 0xf9, 0xb9, 0x32, 0xbd, 0x89, + 0xfc, 0x06, 0x3e, 0x66, 0x83, 0xeb, 0x51, 0xe8, 0x1c, 0x38, 0xf0, 0x9c, + 0x44, 0x17, 0x0b, 0x4c, 0x97, 0x18, 0x26, 0x5c, 0xc8, 0x65, 0xba, 0x86, + 0x0e, 0x74, 0x1d, 0xed, 0x0b, 0xb4, 0x40, 0x68, 0x98, 0x82, 0xac, 0xda, + 0xc5, 0x50, 0x0c, 0x6b, 0x5a, 0x0c, 0x15, 0xe5, 0xc3, 0x90, 0xcf, 0x8f, + 0x0f, 0x41, 0x28, 0xbd, 0x38, 0x3f, 0xed, 0x13, 0xf0, 0x79, 0x9f, 0x00, + 0xb1, 0xb9, 0xd7, 0x81, 0xbf, 0x3a, 0x92, 0xec, 0x35, 0xe3, 0xda, 0x27, + 0x16, 0xbc, 0x46, 0x0d, 0xe3, 0x3e, 0xfb, 0x7b, 0xae, 0xb3, 0x4a, 0x1a, + 0x34, 0xaa, 0xc1, 0x1c, 0x45, 0xdf, 0xe1, 0xba, 0x43, 0x79, 0x46, 0x0a, + 0x30, 0x80, 0x91, 0x2b, 0x4e, 0xe9, 0x9a, 0x1b, 0x2f, 0xac, 0xb8, 0x16, + 0x69, 0x53, 0x8d, 0x63, 0x8b, 0xf8, 0x14, 0xed, 0x6a, 0xdf, 0xf7, 0x65, + 0x49, 0x6b, 0x16, 0x1a, 0x47, 0x6b, 0xc9, 0x12, 0x53, 0x0a, 0x6f, 0xd6, + 0xeb, 0x82, 0x1a, 0x3d, 0x7a, 0x3c, 0xd8, 0x02, 0x56, 0x58, 0xa5, 0x69, + 0xa0, 0xdf, 0x26, 0x3c, 0x1f, 0xeb, 0xdb, 0x0e, 0x5a, 0x53, 0xb0, 0x69, + 0xaa, 0xc2, 0x98, 0x4b, 0x14, 0x52, 0x1c, 0x1a, 0x4c, 0x10, 0x82, 0x26, + 0xca, 0xed, 0x52, 0xa9, 0x5a, 0xad, 0x40, 0xda, 0x57, 0x47, 0x60, 0x19, + 0xf0, 0x69, 0xc4, 0x27, 0x4e, 0x4d, 0x35, 0x9b, 0x96, 0xf3, 0x5b, 0xfa, + 0x64, 0x9d, 0xe4, 0x0a, 0xfd, 0xd8, 0x27, 0xee, 0x9b, 0x8d, 0x16, 0x98, + 0x1a, 0x81, 0x74, 0x8b, 0x0d, 0x46, 0xa9, 0x34, 0xba, 0xaa, 0x30, 0xba, + 0x69, 0x42, 0xa2, 0xb0, 0xe8, 0xf6, 0xa9, 0x20, 0x1a, 0x3c, 0xfb, 0xde, + 0xd4, 0x13, 0x69, 0xde, 0x13, 0x45, 0x49, 0xcc, 0x6e, 0xd4, 0x1e, 0x6f, + 0xc0, 0x66, 0x99, 0x61, 0xf0, 0x1f, 0x1d, 0x85, 0xff, 0x11, 0x64, 0xcf, + 0x9f, 0x30, 0x1e, 0x87, 0x7f, 0xae, 0xc4, 0x86, 0xf6, 0xfa, 0xe2, 0x25, + 0x64, 0x06, 0xd4, 0xc0, 0xfb, 0x31, 0x2c, 0xe7, 0x5b, 0x52, 0xd2, 0x2a, + 0xf1, 0x6d, 0x85, 0x5a, 0xc7, 0x48, 0x53, 0x00, 0x41, 0x90, 0xe3, 0x7c, + 0x11, 0x75, 0xab, 0x0c, 0x30, 0x7d, 0x93, 0x2f, 0x14, 0x51, 0x00, 0x7e, + 0xbd, 0x16, 0xfc, 0xa4, 0xde, 0x66, 0x53, 0xa7, 0x79, 0xa7, 0x6f, 0x99, + 0x70, 0x33, 0xd2, 0xfa, 0xc9, 0x3e, 0x96, 0x3c, 0xbc, 0xde, 0x5f, 0xb0, + 0xfa, 0xe4, 0xab, 0x83, 0xde, 0xa0, 0xa9, 0xbb, 0x78, 0x78, 0x9e, 0x0b, + 0x3c, 0x27, 0xd2, 0xb3, 0x9b, 0xfe, 0x6d, 0xd1, 0xae, 0x51, 0x9b, 0xc7, + 0xcf, 0x27, 0x8b, 0x11, 0x29, 0x1a, 0xe4, 0xf0, 0xee, 0x8e, 0x9c, 0xe3, + 0x92, 0xec, 0x49, 0xda, 0x15, 0x77, 0x5b, 0xa2, 0x87, 0x45, 0x76, 0x31, + 0xe3, 0xae, 0xe8, 0x5a, 0xfd, 0xd6, 0x6f, 0x1a, 0xb2, 0xf9, 0xe6, 0xe8, + 0xe0, 0xf9, 0xab, 0xa3, 0x5b, 0x5a, 0x44, 0x88, 0x13, 0x93, 0xc4, 0x52, + 0xdb, 0x87, 0x79, 0x20, 0x04, 0x50, 0xc6, 0xc9, 0x05, 0x6e, 0x62, 0xb0, + 0xde, 0x48, 0xdc, 0x98, 0x2a, 0x86, 0x48, 0xe9, 0xc3, 0x57, 0x0e, 0x2e, + 0x58, 0xe7, 0x2a, 0x25, 0xf9, 0x96, 0xf0, 0x81, 0xdc, 0xae, 0xb5, 0xe1, + 0x9e, 0x64, 0xe7, 0x85, 0x9a, 0x12, 0xc3, 0x69, 0x82, 0x9e, 0x23, 0xf5, + 0xa3, 0xd1, 0x40, 0x7d, 0x6c, 0x0a, 0xc1, 0xfd, 0x01, 0xed, 0x0f, 0x85, + 0x34, 0xd8, 0xd6, 0x6b, 0x0d, 0xf7, 0xcf, 0x05, 0x85, 0x1d, 0x50, 0xa7, + 0xaa, 0x94, 0x64, 0x04, 0x63, 0xd3, 0x25, 0x48, 0xd3, 0xba, 0x92, 0x38, + 0xce, 0xf7, 0xaa, 0x6d, 0x7b, 0xf0, 0x81, 0xd2, 0x36, 0x42, 0x8b, 0x4a, + 0x15, 0xad, 0xb3, 0x83, 0x21, 0x49, 0x29, 0x30, 0x8a, 0x44, 0x02, 0x09, + 0x9b, 0xcd, 0xeb, 0x1b, 0xab, 0x8e, 0xa2, 0x73, 0xb9, 0xbd, 0xc3, 0xeb, + 0xbd, 0xde, 0x86, 0xf4, 0xad, 0x2e, 0x3d, 0x04, 0x98, 0x19, 0xa3, 0x24, + 0x91, 0x89, 0x26, 0x33, 0x53, 0x9a, 0xc4, 0x34, 0x45, 0x0f, 0x0c, 0x83, + 0xbd, 0xb0, 0x26, 0x4b, 0xba, 0xa4, 0x29, 0x45, 0xc6, 0x3e, 0xca, 0x18, + 0xbc, 0xf6, 0xc0, 0xb5, 0x60, 0x7f, 0x23, 0xc5, 0x9b, 0x34, 0x5d, 0x9c, + 0x53, 0x42, 0xbc, 0x73, 0xad, 0xe7, 0x6a, 0x8e, 0x5e, 0xfb, 0xf5, 0x5e, + 0xd4, 0xdb, 0x08, 0x7a, 0x96, 0xdb, 0x1f, 0xe1, 0x2a, 0xca, 0xbf, 0x63, + 0xf7, 0xf3, 0x83, 0xa8, 0xc7, 0x34, 0xb7, 0xb5, 0xf5, 0x74, 0x45, 0xad, + 0xcc, 0x39, 0xf0, 0x46, 0xd1, 0x30, 0xff, 0xc8, 0xb9, 0x11, 0x0b, 0xfd, + 0x54, 0x50, 0xc5, 0xe0, 0xcf, 0x3d, 0x2d, 0xd8, 0xea, 0x52, 0xca, 0xc8, + 0xea, 0xd7, 0x08, 0x14, 0x23, 0xba, 0x68, 0xbd, 0x98, 0xb8, 0xb5, 0xa8, + 0x8f, 0x2f, 0x3b, 0xa8, 0x6c, 0x55, 0x5e, 0x10, 0xc5, 0x25, 0x3a, 0x31, + 0x4d, 0xbf, 0xe3, 0x9c, 0xf9, 0x77, 0x5d, 0x8e, 0x64, 0xbd, 0xf4, 0x77, + 0x01, 0x74, 0x4a, 0xa6, 0x41, 0xed, 0x8c, 0x00, 0x11, 0x2b, 0x04, 0xc4, + 0xba, 0xb1, 0x9d, 0xcd, 0x1b, 0x0b, 0x14, 0x97, 0x28, 0x7c, 0x3b, 0x50, + 0x2a, 0xa3, 0xfe, 0x24, 0xb4, 0xe0, 0xf6, 0x7a, 0x9a, 0x35, 0x6a, 0x8e, + 0xcd, 0x13, 0xfe, 0xd6, 0x4a, 0x0a, 0x8f, 0xa7, 0xd8, 0x6c, 0x6a, 0x1e, + 0x59, 0x4f, 0x15, 0xb7, 0xc5, 0x06, 0x22, 0x9e, 0x16, 0x79, 0x5b, 0x8b, + 0xe1, 0x4a, 0x5f, 0x51, 0xf8, 0x08, 0x22, 0x69, 0x36, 0x2f, 0x40, 0x9d, + 0x1c, 0x4e, 0x53, 0x93, 0xd6, 0xcd, 0x6f, 0x2a, 0x8b, 0xb0, 0x93, 0xe3, + 0x55, 0xf6, 0x54, 0x09, 0x8b, 0x28, 0x49, 0x4b, 0x35, 0x07, 0x01, 0x54, + 0xdf, 0xe7, 0x96, 0x1c, 0xde, 0x27, 0x81, 0x22, 0x21, 0x12, 0x41, 0x94, + 0x99, 0x8c, 0x0b, 0x13, 0x2b, 0xd9, 0xa9, 0x4b, 0x3a, 0x0d, 0x27, 0x18, + 0x2b, 0xfe, 0x40, 0xbd, 0xe3, 0x21, 0xfc, 0x39, 0x82, 0xf4, 0x01, 0xdd, + 0x75, 0xca, 0x08, 0x41, 0x0a, 0x1b, 0x2c, 0x49, 0xfd, 0x69, 0xce, 0x41, + 0x20, 0xf2, 0xb4, 0xd7, 0x18, 0x17, 0xea, 0x8e, 0x59, 0x32, 0xba, 0x93, + 0x6c, 0xca, 0x0d, 0xc2, 0x41, 0xb1, 0x2e, 0x82, 0x70, 0x57, 0x20, 0x48, + 0x49, 0x07, 0xa5, 0x4d, 0x31, 0x5e, 0x65, 0x72, 0x7b, 0xf1, 0x17, 0xf9, + 0xb1, 0x5d, 0x6a, 0xd1, 0xc4, 0xad, 0x49, 0xf0, 0xb8, 0xae, 0x32, 0xde, + 0x6b, 0xa6, 0x82, 0x61, 0x99, 0xa5, 0x13, 0xe0, 0x40, 0xc4, 0xb9, 0x34, + 0xf6, 0x30, 0x9a, 0xa6, 0x49, 0x49, 0x6a, 0x2d, 0xb6, 0xfe, 0xf2, 0x2a, + 0x3d, 0x35, 0x24, 0x2b, 0x62, 0xf8, 0x52, 0x3b, 0x3d, 0x96, 0x29, 0x42, + 0x58, 0x61, 0x97, 0x13, 0x01, 0xe4, 0x73, 0xe1, 0xea, 0x29, 0xaf, 0x32, + 0x9b, 0x79, 0x75, 0xa8, 0xa8, 0xc0, 0x71, 0x54, 0xf8, 0x8a, 0xbf, 0x8a, + 0xd4, 0x56, 0x5a, 0x01, 0x4b, 0x72, 0x4f, 0x87, 0x0a, 0xbb, 0xe9, 0x58, + 0xbd, 0xf8, 0x6b, 0x5a, 0x0e, 0xd3, 0xb2, 0xa8, 0xa2, 0xbf, 0x3f, 0x56, + 0x7f, 0x80, 0x82, 0x85, 0xb3, 0x4d, 0x61, 0x1a, 0xfa, 0xf0, 0xad, 0xa1, + 0xb5, 0x7b, 0x5a, 0x3b, 0x63, 0xf3, 0x32, 0x29, 0x1b, 0xac, 0x71, 0xc7, + 0xb6, 0x68, 0xd3, 0x25, 0xc6, 0xf0, 0xe0, 0xfb, 0x90, 0xcb, 0x4c, 0x82, + 0xba, 0xae, 0x4c, 0x4a, 0x49, 0xf1, 0xa4, 0x6b, 0x52, 0xd3, 0x9d, 0xa8, + 0x18, 0x52, 0x90, 0x3b, 0xb1, 0xcb, 0x3e, 0xcf, 0x28, 0xee, 0x65, 0xef, + 0x75, 0x08, 0x14, 0xaf, 0xaf, 0x26, 0x0a, 0xae, 0x24, 0x43, 0x0a, 0x6a, + 0x17, 0xfe, 0x5a, 0x0c, 0x5d, 0x74, 0xc4, 0x63, 0x7b, 0xae, 0x2e, 0xdf, + 0x26, 0xed, 0x5a, 0xf4, 0xfa, 0xfc, 0xe5, 0x2b, 0x61, 0xe1, 0xf6, 0xb2, + 0x89, 0x5a, 0x6b, 0x3d, 0xf8, 0xc2, 0x63, 0x92, 0x50, 0x80, 0xcb, 0xd9, + 0x0b, 0x2d, 0xa6, 0xa1, 0xc4, 0x62, 0xda, 0xb5, 0xbe, 0xc0, 0x05, 0x94, + 0xd2, 0x94, 0x40, 0x63, 0x07, 0xb2, 0xa7, 0x81, 0x80, 0x2e, 0xd2, 0x61, + 0x45, 0x67, 0x4f, 0xc1, 0x24, 0x10, 0x28, 0xc0, 0x5f, 0xa4, 0x07, 0x24, + 0xb1, 0xfd, 0x90, 0x81, 0xa2, 0xbc, 0xcf, 0x99, 0x99, 0xbf, 0x04, 0x79, + 0x4a, 0x9a, 0xd1, 0xb5, 0x79, 0x5e, 0x5c, 0xe7, 0xf1, 0x4b, 0xec, 0xb5, + 0x14, 0xbd, 0x2c, 0x2e, 0x60, 0xab, 0x5e, 0x73, 0x50, 0xab, 0x1d, 0x5d, + 0x39, 0x7d, 0x1d, 0xad, 0xa3, 0xba, 0x03, 0x2a, 0x22, 0xd0, 0x43, 0x36, + 0x87, 0x3d, 0xc6, 0x27, 0x37, 0xc4, 0xbf, 0x5a, 0xb1, 0x16, 0x2c, 0xab, + 0xe9, 0x47, 0x47, 0x3f, 0x1e, 0xbc, 0x3a, 0x7d, 0x79, 0xf4, 0x33, 0x97, + 0xbf, 0x7b, 0x9f, 0x83, 0x3f, 0xfe, 0xc6, 0x91, 0x58, 0x54, 0x60, 0x80, + 0xc9, 0x66, 0xb0, 0x8e, 0x9b, 0x2e, 0xf5, 0x82, 0x39, 0xa1, 0xd2, 0xdf, + 0xd9, 0xd9, 0xe9, 0x71, 0xcc, 0xb9, 0x98, 0xd2, 0x84, 0x64, 0x98, 0xe5, + 0xe8, 0x1b, 0xa6, 0x08, 0x00, 0x18, 0x2c, 0xb8, 0xb0, 0x08, 0x29, 0xa9, + 0x7d, 0xc3, 0x98, 0xb2, 0xe0, 0x46, 0xf4, 0xa3, 0xd7, 0x0a, 0x0e, 0xd3, + 0xa7, 0x23, 0xc7, 0x3b, 0xf9, 0x3c, 0xbb, 0x20, 0x7f, 0x63, 0x0b, 0xe5, + 0x02, 0xa9, 0x43, 0x54, 0x87, 0x36, 0x3d, 0x63, 0xbf, 0x5b, 0x2d, 0xc2, + 0xa9, 0xd2, 0x29, 0xc7, 0xb8, 0x3b, 0xc5, 0x21, 0x33, 0x33, 0x3a, 0x45, + 0x42, 0x53, 0x6d, 0xaf, 0x4e, 0xd1, 0x55, 0xd1, 0xa0, 0xe5, 0xf3, 0x13, + 0xc7, 0x02, 0xd3, 0x08, 0x0b, 0x02, 0x51, 0xe1, 0x0c, 0xa7, 0xdf, 0x8b, + 0x7a, 0xf1, 0x22, 0xda, 0xeb, 0x85, 0x33, 0x9b, 0x17, 0xaa, 0xc9, 0x97, + 0xab, 0xa5, 0x35, 0x3f, 0x48, 0x2e, 0x04, 0x9d, 0x5b, 0xb9, 0x27, 0x39, + 0x27, 0x2b, 0x69, 0x2b, 0x6d, 0xe1, 0x1f, 0xb6, 0xde, 0x62, 0xc5, 0xa1, + 0x8d, 0xf6, 0x7f, 0xfa, 0xe3, 0x2f, 0xe4, 0xb1, 0x42, 0x3e, 0xb9, 0xf9, + 0x4d, 0x28, 0x20, 0x7e, 0x46, 0xc5, 0x87, 0xe6, 0x0d, 0xda, 0xc7, 0x1e, + 0xbd, 0x23, 0x69, 0x30, 0xe8, 0xa2, 0xe1, 0x9f, 0xd0, 0xfb, 0xbd, 0x68, + 0x5d, 0xac, 0xfb, 0x1e, 0xfd, 0x33, 0xd0, 0xe4, 0x8a, 0xc3, 0x7a, 0x12, + 0x65, 0x9b, 0xd0, 0xee, 0xb9, 0x4a, 0xa5, 0xe2, 0xfe, 0x6d, 0xb0, 0x34, + 0xb6, 0x9d, 0x48, 0x30, 0xd7, 0xb8, 0x53, 0x94, 0xd8, 0x8c, 0x4b, 0xb6, + 0x0d, 0x29, 0xa6, 0x2d, 0xd5, 0x98, 0xe8, 0x63, 0x05, 0xc3, 0x8b, 0xc5, + 0x1e, 0xe8, 0xc4, 0x98, 0xd6, 0x4b, 0x81, 0xa3, 0x36, 0x65, 0x26, 0x08, + 0x7e, 0x77, 0x10, 0xff, 0x57, 0x3f, 0xda, 0x8a, 0xbf, 0x8c, 0xa8, 0x12, + 0x01, 0x03, 0x24, 0xa3, 0xa2, 0x14, 0xf8, 0x47, 0xcb, 0xca, 0xe4, 0xeb, + 0xc5, 0x6b, 0x8b, 0xe8, 0x8c, 0x95, 0xd7, 0x49, 0x6c, 0x94, 0x51, 0x52, + 0xb6, 0xa5, 0x3d, 0xbb, 0xc8, 0x40, 0x56, 0xb1, 0x8d, 0x52, 0x93, 0x30, + 0x36, 0x5b, 0xce, 0x37, 0x82, 0xac, 0x41, 0x84, 0x44, 0xd7, 0x1e, 0x2f, + 0x97, 0xd4, 0x28, 0x5c, 0xd7, 0xd1, 0xa6, 0x3b, 0x63, 0xb2, 0xe4, 0xe9, + 0x75, 0xd8, 0x07, 0xad, 0x2f, 0xfe, 0x7f, 0xed, 0x5d, 0x6d, 0x53, 0xdb, + 0x48, 0xb6, 0xfe, 0xce, 0xaf, 0x50, 0x51, 0x37, 0x15, 0xd8, 0xb2, 0x9d, + 0x04, 0x02, 0x21, 0xa9, 0x6c, 0x76, 0x09, 0x90, 0x84, 0x5d, 0x02, 0x2c, + 0x76, 0x92, 0xd9, 0xda, 0xd9, 0xa2, 0x04, 0x96, 0x8d, 0x26, 0xb6, 0xe4, + 0x95, 0xe4, 0x00, 0x99, 0x9a, 0xfb, 0xdb, 0x6f, 0x9f, 0xd7, 0x6e, 0xa9, + 0xdb, 0x16, 0xcc, 0x24, 0x33, 0xfb, 0xe1, 0xce, 0x87, 0x21, 0xb6, 0xa5, + 0x7e, 0x3d, 0x7d, 0xfa, 0xbc, 0x3e, 0x87, 0x0c, 0xd0, 0xda, 0x1b, 0xf3, + 0x6c, 0x54, 0x0c, 0x8c, 0xba, 0x25, 0x05, 0xc7, 0x28, 0x95, 0x92, 0x2f, + 0xd1, 0xe6, 0x05, 0x0c, 0x91, 0x8b, 0x92, 0x4a, 0xab, 0xa6, 0x2f, 0xa7, + 0xd0, 0x19, 0x1d, 0xa2, 0x64, 0x94, 0xde, 0xc8, 0x6a, 0x98, 0xd3, 0xd7, + 0x4d, 0x6e, 0x66, 0xa6, 0xad, 0xee, 0x6a, 0x27, 0x10, 0x3b, 0x53, 0x39, + 0x1b, 0x4f, 0xa5, 0x19, 0xca, 0x68, 0xf5, 0xe7, 0x9f, 0xe1, 0xab, 0x5f, + 0x7e, 0x01, 0x12, 0x73, 0x6e, 0x08, 0x54, 0xe4, 0xca, 0xf5, 0x80, 0xe5, + 0xbb, 0x36, 0x29, 0x10, 0x12, 0x8b, 0x2a, 0x88, 0xc7, 0x0c, 0xaa, 0x24, + 0xeb, 0x9f, 0xd8, 0x29, 0xaa, 0x35, 0x3d, 0x0f, 0x42, 0x06, 0xc9, 0x94, + 0x6f, 0x01, 0xce, 0x6e, 0x63, 0xa7, 0x86, 0xdf, 0xa4, 0x04, 0x66, 0x81, + 0xdb, 0x0d, 0x41, 0x67, 0x3d, 0x1b, 0x52, 0x8a, 0x91, 0xf6, 0x6a, 0x79, + 0x23, 0xfe, 0x21, 0xd5, 0x07, 0xb5, 0x19, 0x90, 0x64, 0xa0, 0xb8, 0x5d, + 0x5a, 0x89, 0x1c, 0x18, 0x4f, 0xc0, 0x7b, 0x7d, 0x7b, 0x07, 0xf4, 0x0c, + 0x67, 0x01, 0x1e, 0xd0, 0x62, 0x4e, 0xc9, 0xf9, 0x5a, 0xeb, 0x01, 0xaa, + 0x8c, 0x83, 0x58, 0xf3, 0x10, 0x1e, 0x79, 0x18, 0x61, 0x6a, 0x90, 0xb9, + 0x96, 0xd2, 0x30, 0x49, 0x61, 0x25, 0x47, 0xa3, 0x6c, 0x98, 0x71, 0xe2, + 0x8d, 0x1c, 0x87, 0x57, 0xb4, 0x31, 0x58, 0x1a, 0x9e, 0x77, 0xdf, 0x32, + 0x63, 0xf5, 0x56, 0x81, 0xa1, 0x81, 0xdc, 0x86, 0x6d, 0xcb, 0x52, 0xd7, + 0xc5, 0x5f, 0x80, 0x0e, 0x57, 0x2a, 0x68, 0xce, 0x5b, 0x38, 0x15, 0x05, + 0xf9, 0xd7, 0x7f, 0xfb, 0xab, 0x04, 0xf3, 0x2d, 0xcc, 0x30, 0xca, 0x33, + 0x02, 0x1c, 0x16, 0x71, 0xbf, 0x8b, 0x2b, 0x44, 0x93, 0x33, 0xdc, 0x3a, + 0x3c, 0xca, 0xe6, 0xda, 0x81, 0xd8, 0x4c, 0xfb, 0xe8, 0xa4, 0x4a, 0x84, + 0x05, 0x2a, 0x3a, 0x16, 0xc0, 0x0a, 0xb4, 0xb1, 0x4e, 0x3d, 0x37, 0x10, + 0xeb, 0x1b, 0x22, 0x53, 0x1b, 0xcd, 0xb3, 0x4b, 0x06, 0xea, 0xf5, 0x83, + 0x68, 0x80, 0xe8, 0x11, 0x37, 0xb5, 0xbe, 0xdd, 0x72, 0xec, 0x31, 0x39, + 0xc1, 0x7c, 0x32, 0xda, 0x49, 0xca, 0x46, 0x07, 0x08, 0xa1, 0xc1, 0xf8, + 0x82, 0x78, 0x36, 0xf3, 0xf2, 0xbf, 0x62, 0xed, 0x8d, 0xb8, 0xb5, 0xb6, + 0x88, 0x03, 0x2e, 0x19, 0x69, 0x1f, 0xd2, 0x35, 0xf0, 0xf6, 0xe5, 0x7b, + 0x97, 0x84, 0x0b, 0xe0, 0x90, 0x1e, 0xd3, 0x28, 0x2b, 0x16, 0x90, 0x8d, + 0xa6, 0x94, 0x62, 0x91, 0x33, 0x3b, 0x1d, 0x47, 0x66, 0x6f, 0x66, 0xb7, + 0x30, 0x20, 0x6b, 0x13, 0x32, 0x0d, 0x28, 0x27, 0xae, 0x94, 0x5d, 0x25, + 0xa3, 0xaa, 0x5b, 0xe5, 0x5d, 0xf2, 0x8b, 0x91, 0x64, 0x6d, 0x94, 0x91, + 0x8f, 0x4a, 0x44, 0x42, 0x12, 0xd1, 0x95, 0x61, 0xa2, 0xbe, 0x47, 0x2f, + 0x03, 0xab, 0x3a, 0x21, 0x7e, 0x53, 0xad, 0x8a, 0x22, 0x61, 0x25, 0x0c, + 0xbd, 0x7a, 0xc4, 0xe6, 0x68, 0xa7, 0xc0, 0xa8, 0xcf, 0x46, 0x45, 0xb0, + 0xe4, 0xc0, 0xd1, 0xf0, 0x76, 0x76, 0x57, 0x13, 0x6a, 0x74, 0x8a, 0x9e, + 0x4f, 0xd2, 0x68, 0x3e, 0xd3, 0x5a, 0x42, 0x27, 0x19, 0x75, 0x80, 0xc8, + 0x26, 0x1c, 0xae, 0x42, 0x18, 0xbf, 0x1c, 0xa0, 0x65, 0xb4, 0xe0, 0x4a, + 0x59, 0x55, 0xa3, 0xad, 0x9f, 0x4a, 0x58, 0x7a, 0xd7, 0xc7, 0x81, 0xf8, + 0xb2, 0x9a, 0xbe, 0x4e, 0x53, 0x67, 0xd1, 0xfd, 0x6f, 0xfd, 0x93, 0x63, + 0xb1, 0x97, 0x01, 0x2f, 0xf5, 0x57, 0xa3, 0xf1, 0x5f, 0x31, 0x37, 0x34, + 0xe9, 0xf5, 0x89, 0xa8, 0x0a, 0xcd, 0x74, 0x41, 0x86, 0x1b, 0xc4, 0xfe, + 0xc0, 0x6c, 0xbb, 0x66, 0xc4, 0xcc, 0x4b, 0xf3, 0x61, 0x3d, 0x5a, 0xe4, + 0x1f, 0xbd, 0xd8, 0x7e, 0x5a, 0xdb, 0x57, 0x5c, 0xe3, 0x06, 0xcb, 0x02, + 0x45, 0xcc, 0x3c, 0xc6, 0x4d, 0xb4, 0xf0, 0xfd, 0xef, 0x63, 0x57, 0xaf, + 0xdd, 0xce, 0x7f, 0x2e, 0xa7, 0xe9, 0x7d, 0xc3, 0x15, 0x5d, 0xd1, 0x6c, + 0x71, 0x16, 0xca, 0x92, 0x10, 0xd3, 0xf7, 0x68, 0xfe, 0xc0, 0xe1, 0x48, + 0xd4, 0xf4, 0x70, 0x5e, 0x88, 0x08, 0xa1, 0x71, 0x7f, 0x14, 0xb5, 0x8d, + 0x49, 0x86, 0x98, 0x41, 0x86, 0x75, 0x7c, 0xc6, 0xfe, 0x1e, 0xe3, 0x39, + 0x2d, 0x13, 0x0a, 0x78, 0x82, 0xd8, 0x9e, 0x87, 0x86, 0x5e, 0x28, 0x20, + 0x1d, 0x58, 0xe0, 0x2a, 0x4a, 0x42, 0xec, 0x4d, 0xcb, 0x87, 0xab, 0x90, + 0x7c, 0x86, 0xf7, 0x3e, 0xba, 0xce, 0xfd, 0xe6, 0xf0, 0xb2, 0x78, 0xf8, + 0xea, 0x21, 0x67, 0xc0, 0xaf, 0xb2, 0x09, 0x0d, 0xf4, 0xfd, 0x55, 0xb2, + 0xbb, 0x03, 0xce, 0x2c, 0x8c, 0xde, 0x70, 0xed, 0x87, 0x2f, 0x1f, 0x46, + 0xfc, 0xa0, 0x3c, 0xd9, 0x0c, 0x2d, 0xc1, 0xf7, 0x38, 0xcb, 0x59, 0x8a, + 0xca, 0x0a, 0x90, 0x07, 0x85, 0xc7, 0x5d, 0xa5, 0x66, 0x11, 0x39, 0x0c, + 0xcc, 0x28, 0x58, 0x13, 0xe4, 0xb7, 0x9c, 0x47, 0x1d, 0x87, 0x24, 0x16, + 0x19, 0x39, 0x8f, 0xf5, 0x4f, 0x32, 0x56, 0xc9, 0x38, 0x8b, 0x27, 0x18, + 0x5c, 0x6f, 0xc5, 0x7f, 0xd3, 0x27, 0x82, 0x4c, 0x2e, 0xd0, 0xb6, 0x08, + 0x35, 0x12, 0x9c, 0xa4, 0x68, 0xc4, 0x0e, 0x56, 0x5a, 0x02, 0xbd, 0x22, + 0x45, 0xe5, 0x42, 0x6d, 0x04, 0x9e, 0xe6, 0xe8, 0xd7, 0x7c, 0xd2, 0x5c, + 0x59, 0xe4, 0xd9, 0x00, 0xf5, 0x88, 0xa4, 0xd7, 0x62, 0x5c, 0xc6, 0xf8, + 0xca, 0x1a, 0x16, 0x05, 0x99, 0x70, 0x34, 0x4c, 0x07, 0xad, 0xcf, 0xf0, + 0x24, 0x9b, 0x96, 0xd8, 0x75, 0xd7, 0xf1, 0xab, 0x1a, 0xd7, 0x8b, 0x32, + 0x6b, 0xee, 0x4a, 0x3d, 0xc3, 0x42, 0x70, 0xc3, 0xff, 0x3f, 0xbc, 0xff, + 0xbf, 0x2c, 0xbc, 0xdf, 0x49, 0xda, 0xa9, 0x25, 0xd6, 0x2d, 0x4c, 0xfe, + 0xff, 0xd5, 0xa5, 0x8a, 0xbc, 0xfc, 0x98, 0x3b, 0x32, 0x53, 0x1e, 0xd0, + 0xbd, 0x18, 0xa8, 0x5b, 0x05, 0xab, 0x53, 0x2b, 0x95, 0xd8, 0xa9, 0x67, + 0xee, 0xd4, 0xc3, 0xf0, 0x97, 0xee, 0xc3, 0x82, 0x40, 0xff, 0xc5, 0xad, + 0x29, 0xa3, 0xfe, 0xc8, 0x0b, 0x1b, 0x00, 0xc0, 0xdf, 0xe7, 0xcc, 0x2d, + 0x37, 0x55, 0x87, 0x8b, 0x19, 0x11, 0xf5, 0xb3, 0xbe, 0x23, 0x10, 0x18, + 0x82, 0x14, 0x92, 0x62, 0x90, 0x53, 0xd9, 0x0b, 0x29, 0x6f, 0x6c, 0x1e, + 0xa7, 0x9c, 0x31, 0x85, 0x8f, 0xc1, 0x40, 0x5b, 0x90, 0x5c, 0xa4, 0x09, + 0x3e, 0x60, 0x1d, 0x6d, 0xdb, 0x57, 0xde, 0x48, 0x29, 0xde, 0x04, 0x98, + 0x3a, 0xc3, 0x0e, 0x6f, 0x19, 0x92, 0x08, 0x8e, 0xa2, 0x69, 0xfc, 0xb3, + 0xd5, 0x5e, 0x41, 0xce, 0x4b, 0x2e, 0xe7, 0x55, 0xb0, 0x7e, 0x0d, 0xaa, + 0xc6, 0x09, 0xc2, 0xc5, 0xe3, 0x90, 0xd6, 0xdc, 0x80, 0xaa, 0xd5, 0xb3, + 0x04, 0x0b, 0x74, 0x77, 0xf7, 0x8d, 0x7c, 0xf6, 0x62, 0x75, 0xdd, 0x11, + 0x0d, 0x0c, 0x43, 0xc7, 0x9f, 0x7c, 0x6e, 0x1f, 0xee, 0x03, 0xb8, 0x59, + 0x31, 0x94, 0x79, 0xd7, 0x7b, 0x39, 0xe5, 0xd0, 0x85, 0xd2, 0x76, 0x01, + 0xb2, 0x93, 0x44, 0x34, 0x94, 0x21, 0x34, 0x7d, 0x59, 0x96, 0x22, 0x61, + 0xc5, 0x28, 0x5f, 0x08, 0x05, 0x0a, 0xdd, 0x8f, 0x72, 0x08, 0x60, 0x0c, + 0x4d, 0xf1, 0x0d, 0x05, 0x5d, 0x62, 0xdf, 0x82, 0x94, 0xc0, 0xa7, 0xf6, + 0x12, 0x4b, 0x52, 0xfa, 0x60, 0x25, 0x05, 0x2e, 0xb1, 0xd7, 0x7f, 0x8e, + 0x45, 0x94, 0x5c, 0x89, 0x91, 0x9b, 0x96, 0x6d, 0xf6, 0x04, 0xc7, 0x78, + 0x52, 0x75, 0xcb, 0x2f, 0x97, 0x61, 0x99, 0x8d, 0x6b, 0x26, 0xa9, 0x62, + 0xb9, 0x6b, 0x1e, 0xee, 0x7f, 0xb9, 0x7c, 0x21, 0x6e, 0x42, 0xc7, 0xbc, + 0xe5, 0x4b, 0xad, 0xe5, 0x6d, 0x76, 0x79, 0xb5, 0x7f, 0xdc, 0x0f, 0x37, + 0x4d, 0x4e, 0x76, 0xba, 0x84, 0x49, 0xfc, 0xc5, 0xe7, 0x8d, 0x2e, 0x94, + 0xcf, 0x4b, 0x52, 0xa4, 0xcd, 0xb0, 0xf3, 0x89, 0x91, 0x62, 0x7b, 0xdc, + 0x16, 0xfd, 0x16, 0x6e, 0xae, 0xf6, 0x82, 0x48, 0x6e, 0x88, 0xad, 0x44, + 0xf7, 0x0e, 0x2b, 0xde, 0x28, 0x51, 0x76, 0x63, 0x58, 0x10, 0x4c, 0x88, + 0xf7, 0xec, 0xc8, 0xba, 0xbf, 0xa0, 0x79, 0x1a, 0xfa, 0xe5, 0x26, 0x0b, + 0x07, 0x00, 0xa9, 0x29, 0x72, 0x1a, 0x12, 0x99, 0xa4, 0xb5, 0xa5, 0xb2, + 0x85, 0x53, 0xf9, 0x47, 0xc1, 0x18, 0xc1, 0x53, 0x05, 0xad, 0x71, 0x20, + 0xb7, 0xd7, 0xd8, 0x9e, 0xb9, 0x16, 0xf6, 0x8c, 0x56, 0x15, 0x1e, 0x55, + 0x03, 0xe3, 0x86, 0xca, 0xd9, 0x38, 0xfd, 0x6a, 0xb4, 0x3e, 0x6a, 0x78, + 0xa8, 0x9d, 0x11, 0x74, 0x59, 0xb8, 0xb9, 0xb5, 0x49, 0x6a, 0xf4, 0xbb, + 0x83, 0xd7, 0x7b, 0xfb, 0x87, 0x7b, 0xeb, 0xcd, 0x91, 0xec, 0x63, 0xc5, + 0xc6, 0xc0, 0x36, 0x29, 0xd9, 0x39, 0x83, 0xc0, 0x87, 0xd9, 0xe1, 0x44, + 0x36, 0xe2, 0x05, 0x5d, 0xa2, 0x08, 0x42, 0x6a, 0x0e, 0xb2, 0xc2, 0xcf, + 0x28, 0x21, 0xa2, 0xf4, 0x38, 0x35, 0x2a, 0x0b, 0x84, 0x35, 0xaa, 0x88, + 0x09, 0xf2, 0x7b, 0x75, 0x69, 0x2e, 0x52, 0x30, 0x75, 0x2f, 0x5e, 0x90, + 0xee, 0x10, 0xac, 0xe9, 0x20, 0xb1, 0x12, 0x34, 0xb0, 0x17, 0x24, 0x33, + 0x2e, 0xe3, 0x72, 0xc2, 0x1c, 0x00, 0xc7, 0xdc, 0x05, 0xd3, 0x61, 0x7f, + 0xb7, 0x7f, 0xd4, 0xb4, 0x3a, 0x2b, 0x2b, 0xd4, 0xd8, 0xcf, 0xd2, 0x8f, + 0x51, 0x17, 0x0d, 0x85, 0xd7, 0xbd, 0xbf, 0x77, 0xb6, 0xfb, 0xde, 0x10, + 0x1b, 0x2a, 0x71, 0x01, 0x20, 0x22, 0x5c, 0x1f, 0xf3, 0x35, 0x8e, 0xc2, + 0xdb, 0xef, 0xb7, 0xfd, 0x7e, 0x77, 0xf7, 0xf4, 0x30, 0xdc, 0x05, 0xff, + 0x88, 0x28, 0x2c, 0x82, 0xc9, 0xe5, 0xb5, 0xf0, 0xae, 0x3f, 0xe8, 0xcb, + 0x1f, 0x19, 0x13, 0x19, 0xcc, 0xca, 0x5a, 0xdd, 0x5f, 0x79, 0xdc, 0x10, + 0xde, 0x06, 0xfd, 0x79, 0xb4, 0xa1, 0x2f, 0x68, 0x35, 0x1b, 0x59, 0x9f, + 0x5e, 0xe0, 0xb5, 0x4d, 0x7e, 0x6d, 0x73, 0xd9, 0x6b, 0x81, 0xf7, 0xfa, + 0xe4, 0xf4, 0x5e, 0xc2, 0x06, 0x28, 0x61, 0x26, 0x00, 0xdd, 0x84, 0xaf, + 0x53, 0xdd, 0x4b, 0x5f, 0x4e, 0xdd, 0x3f, 0xae, 0x37, 0xa0, 0x06, 0x0e, + 0xf8, 0xa5, 0x2b, 0xb5, 0x70, 0x58, 0x16, 0x77, 0xdc, 0x31, 0x01, 0x91, + 0xf7, 0xf4, 0xcb, 0xb6, 0x93, 0x1b, 0x01, 0x1b, 0x89, 0x5f, 0xa9, 0xe9, + 0xd5, 0x7b, 0x43, 0x1c, 0x66, 0xe1, 0x49, 0xb9, 0x5e, 0xc0, 0x26, 0x89, + 0x2d, 0xdb, 0xcb, 0xa3, 0xb8, 0x18, 0x27, 0x23, 0x1f, 0x9e, 0xc9, 0x5b, + 0x2b, 0x9d, 0xaa, 0xcd, 0x35, 0x33, 0x97, 0xf5, 0x04, 0x5e, 0xa7, 0x2c, + 0x85, 0x0e, 0x27, 0x2b, 0xe0, 0x57, 0xc5, 0x22, 0x1e, 0x67, 0xe6, 0xba, + 0xf1, 0xf6, 0xb5, 0x37, 0x0c, 0x43, 0xad, 0x5f, 0x81, 0x81, 0x2b, 0x17, + 0x1b, 0x26, 0x2e, 0x03, 0x5b, 0xfb, 0x92, 0xc6, 0xd1, 0xf8, 0x6b, 0x3a, + 0xc3, 0x1a, 0x38, 0x60, 0xda, 0x5d, 0x47, 0x51, 0x41, 0x71, 0x94, 0xc2, + 0xdd, 0xd1, 0x80, 0x94, 0xfb, 0x2d, 0x5f, 0x89, 0xf7, 0x20, 0x5c, 0xf6, + 0xfb, 0x47, 0x77, 0x5e, 0x08, 0x95, 0x46, 0xeb, 0x60, 0x75, 0x4d, 0x65, + 0x02, 0x9c, 0x4e, 0xfc, 0xe7, 0x3e, 0x1b, 0x03, 0x2f, 0x9c, 0x7f, 0x7a, + 0x1d, 0x1e, 0x0d, 0xb6, 0x36, 0x4c, 0xa0, 0xa4, 0x98, 0xd8, 0xb7, 0xae, + 0xd3, 0xec, 0x22, 0x35, 0x4c, 0xed, 0x2a, 0x99, 0xcc, 0xe8, 0x9a, 0x5c, + 0xdc, 0xf6, 0x29, 0x20, 0xff, 0xd3, 0x1f, 0x78, 0xee, 0x4a, 0x98, 0xf9, + 0xe9, 0xfc, 0x62, 0x62, 0xd6, 0xbe, 0x3f, 0x37, 0x5a, 0xcc, 0x4d, 0x74, + 0x94, 0x72, 0x50, 0x3e, 0x2b, 0xba, 0x82, 0x8a, 0x96, 0x96, 0x4b, 0xae, + 0x0a, 0x12, 0xc9, 0xf1, 0x84, 0xd6, 0x00, 0xd0, 0x6d, 0x49, 0x33, 0x12, + 0x24, 0x57, 0x67, 0xd4, 0x57, 0x39, 0xf7, 0x70, 0x06, 0x75, 0xf3, 0x6e, + 0x92, 0xd2, 0x77, 0x77, 0xf5, 0x4f, 0x8f, 0x0f, 0xde, 0x9e, 0xc8, 0x9f, + 0xfb, 0xac, 0x68, 0x9f, 0x66, 0x0d, 0x7f, 0x14, 0x5f, 0xd3, 0x10, 0x11, + 0x18, 0x46, 0xe0, 0xfe, 0x57, 0xb9, 0x8b, 0x22, 0x3c, 0xa4, 0x99, 0x0e, + 0x65, 0xa5, 0xf9, 0x31, 0x06, 0x2e, 0xbb, 0xc1, 0x68, 0xdb, 0x3e, 0x85, + 0xd8, 0xf6, 0xa9, 0x62, 0xab, 0x11, 0x8c, 0xb2, 0xc0, 0x10, 0x0c, 0x6f, + 0xe5, 0x3f, 0x4b, 0xc7, 0xca, 0x38, 0xef, 0x0b, 0x44, 0x24, 0x04, 0xcf, + 0xef, 0x1b, 0xe1, 0xd6, 0x0c, 0xf4, 0x8c, 0x32, 0x0b, 0x4f, 0xd9, 0xf9, + 0xb8, 0xbe, 0x6c, 0x49, 0x16, 0x2c, 0xb4, 0xd9, 0x79, 0x00, 0xac, 0xf3, + 0xc6, 0x00, 0x97, 0xe5, 0x7b, 0xbc, 0x22, 0xc3, 0x2f, 0xd2, 0x7d, 0xcd, + 0x97, 0xa8, 0x5e, 0xad, 0x4b, 0xe7, 0xf5, 0x21, 0x4b, 0xc1, 0x04, 0xb6, + 0xa0, 0xa2, 0x0d, 0xfd, 0xa8, 0xac, 0x38, 0xd7, 0xd8, 0xd7, 0x50, 0x3b, + 0x37, 0x7d, 0x4c, 0x98, 0x2d, 0x17, 0xb6, 0x75, 0xc3, 0xa9, 0xb9, 0x65, + 0xfd, 0x92, 0x5a, 0x20, 0x3b, 0x7e, 0x2d, 0xab, 0x61, 0x1b, 0x07, 0x82, + 0x67, 0xd6, 0x19, 0x93, 0xd5, 0x62, 0xe9, 0x11, 0x9b, 0x09, 0x0f, 0xe3, + 0x8e, 0xbc, 0xa7, 0x5d, 0xdd, 0x44, 0x35, 0x6d, 0xa1, 0x6a, 0x79, 0x45, + 0x41, 0x5f, 0x93, 0x19, 0xa9, 0x7c, 0xef, 0xe1, 0xe3, 0x34, 0xce, 0xe6, + 0x6e, 0xf8, 0x54, 0xf7, 0x1a, 0xbe, 0x45, 0x67, 0x1c, 0x04, 0x29, 0x47, + 0x2f, 0x49, 0xb7, 0x7b, 0x15, 0xb0, 0xd2, 0xd5, 0xe0, 0x5c, 0x6a, 0x5a, + 0x20, 0xda, 0x64, 0x30, 0xf6, 0x34, 0x1e, 0x81, 0xd0, 0x17, 0x6b, 0xd4, + 0xde, 0x90, 0x2e, 0x06, 0x1f, 0x34, 0xb4, 0xe8, 0x89, 0x0a, 0x88, 0xad, + 0x44, 0x1c, 0x0f, 0xc1, 0xc1, 0x94, 0xe8, 0xf9, 0x34, 0x9d, 0x88, 0x79, + 0xc4, 0xf4, 0xa8, 0xf1, 0xac, 0xe0, 0x7d, 0x0b, 0x59, 0xe9, 0x20, 0x15, + 0x2b, 0x9b, 0x4f, 0x2f, 0x20, 0x5c, 0x71, 0x64, 0x9d, 0x0e, 0x3d, 0x56, + 0x79, 0xb0, 0x17, 0x2f, 0x92, 0x03, 0x73, 0xc0, 0x7c, 0xb3, 0x5a, 0x45, + 0x11, 0x7d, 0xab, 0x34, 0x1e, 0xa8, 0x51, 0x91, 0x17, 0x36, 0x39, 0x0f, + 0x71, 0x21, 0x58, 0xe1, 0x89, 0x49, 0xe9, 0xe5, 0xf6, 0x29, 0xdc, 0x27, + 0x90, 0xad, 0xc7, 0xfa, 0xd5, 0x5f, 0x05, 0x5e, 0x62, 0x55, 0x52, 0x0b, + 0x6b, 0x41, 0x04, 0xda, 0x9c, 0xae, 0x0a, 0x34, 0xe8, 0xa5, 0x3c, 0x0f, + 0x29, 0x1a, 0x04, 0x63, 0xcd, 0x13, 0xd3, 0x68, 0x77, 0x35, 0xac, 0x65, + 0x5a, 0xbf, 0xa0, 0x48, 0x61, 0x51, 0xdd, 0x8c, 0x27, 0xdd, 0x10, 0x6b, + 0xbb, 0x28, 0xab, 0xb4, 0x9a, 0x13, 0xdc, 0x6a, 0x20, 0x74, 0x87, 0x7c, + 0x5a, 0x39, 0x07, 0x23, 0x39, 0xb5, 0x4a, 0x29, 0xff, 0x79, 0x94, 0x56, + 0x1d, 0x58, 0x4d, 0x42, 0xf5, 0xb8, 0xc0, 0x3a, 0x84, 0x93, 0xfc, 0x1a, + 0x93, 0x68, 0x27, 0x5e, 0x10, 0xa4, 0x0c, 0xac, 0x5e, 0xaf, 0xc3, 0xbc, + 0xfe, 0xe0, 0x67, 0xf9, 0xf1, 0x1c, 0xbd, 0xa4, 0xb2, 0x4e, 0x3c, 0xe0, + 0x18, 0xac, 0xa2, 0x7e, 0xee, 0xe7, 0x24, 0x7a, 0x80, 0x2b, 0xf2, 0x13, + 0x78, 0xcb, 0x69, 0x59, 0xcc, 0x90, 0xa7, 0xd8, 0xe0, 0x83, 0x9e, 0xca, + 0x53, 0xb6, 0x91, 0xe4, 0x1a, 0xb5, 0xdf, 0x85, 0x75, 0x66, 0x7e, 0xcc, + 0x3a, 0xe8, 0xa9, 0x2f, 0xcc, 0x58, 0xc6, 0x18, 0xd0, 0x05, 0x55, 0xa1, + 0x71, 0x13, 0x7f, 0xa4, 0x30, 0xad, 0x38, 0xaa, 0xe2, 0x0b, 0x8e, 0x1c, + 0xa5, 0xef, 0xc3, 0xca, 0xb6, 0x74, 0x9a, 0x96, 0x6e, 0x05, 0x67, 0x4e, + 0x13, 0xa0, 0xa8, 0x6d, 0xd3, 0x5c, 0x5c, 0x0c, 0xd5, 0xb4, 0x7a, 0x31, + 0x17, 0x42, 0x6d, 0x5a, 0x30, 0x8d, 0x9c, 0x34, 0x16, 0x53, 0xc6, 0x83, + 0x9f, 0x09, 0x86, 0x84, 0x56, 0xe8, 0x01, 0xbd, 0xfc, 0xf3, 0x2f, 0x7e, + 0x84, 0x1f, 0x75, 0x5f, 0xb3, 0xe5, 0x72, 0x2c, 0x0a, 0x52, 0x1a, 0xe5, + 0x8c, 0x80, 0x45, 0x3a, 0xab, 0x22, 0x2d, 0x4c, 0x88, 0x86, 0xe9, 0x10, + 0x08, 0xc3, 0x03, 0x6a, 0x83, 0x5c, 0xd8, 0x9a, 0x01, 0x41, 0x95, 0x18, + 0xb8, 0xc4, 0xad, 0xe7, 0x21, 0xe4, 0x7c, 0xf9, 0x51, 0x40, 0xcb, 0x65, + 0xf5, 0xbd, 0xe6, 0x08, 0x57, 0xd7, 0x10, 0xba, 0xde, 0x38, 0x7c, 0x42, + 0x42, 0x9a, 0xc5, 0xed, 0x07, 0x84, 0xe3, 0x83, 0x65, 0xc5, 0x98, 0xe5, + 0x69, 0x76, 0x1d, 0x89, 0x5d, 0x2b, 0xaf, 0xb3, 0x25, 0xb6, 0xc3, 0x3a, + 0xd0, 0x42, 0x37, 0x94, 0x07, 0x46, 0x8d, 0xbb, 0x0b, 0x1e, 0xad, 0xa9, + 0x59, 0x76, 0x37, 0x97, 0x64, 0xe7, 0x69, 0xef, 0xf1, 0x7a, 0x20, 0xf8, + 0x01, 0x83, 0x80, 0x62, 0x6b, 0x33, 0xa9, 0x40, 0xec, 0x05, 0x0c, 0x6d, + 0x08, 0x85, 0x24, 0x66, 0x29, 0xb8, 0x0b, 0x4c, 0xa7, 0x8c, 0x6f, 0x80, + 0xbb, 0xe4, 0xe5, 0x08, 0x76, 0x9c, 0x8d, 0xd0, 0x3d, 0xa6, 0xa5, 0xb7, + 0xa3, 0xc1, 0x53, 0x88, 0x1e, 0x97, 0x75, 0xde, 0x0f, 0x0e, 0x39, 0x08, + 0x1c, 0x62, 0x34, 0xab, 0x69, 0x12, 0x3b, 0x2d, 0xad, 0x62, 0x78, 0x6a, + 0xb6, 0x1e, 0x0b, 0x75, 0x60, 0x09, 0x2f, 0xe6, 0x8a, 0x10, 0xed, 0x37, + 0x97, 0x45, 0x4a, 0xc8, 0x9a, 0xd0, 0x48, 0x99, 0xf3, 0xef, 0xb9, 0x02, + 0x69, 0x86, 0x79, 0x80, 0x4a, 0x9d, 0x6e, 0x93, 0x01, 0x37, 0x6f, 0x8d, + 0x35, 0xa7, 0x4e, 0x44, 0xa7, 0xbd, 0x9f, 0x34, 0xf2, 0xb4, 0xe7, 0x20, + 0x59, 0x07, 0x34, 0x15, 0xa2, 0x48, 0xd3, 0x28, 0xd8, 0xa0, 0x29, 0x01, + 0xc6, 0x70, 0x57, 0x94, 0xdc, 0x70, 0xbd, 0x18, 0x35, 0xd4, 0xe1, 0x85, + 0xee, 0x1e, 0x79, 0xba, 0xb6, 0x64, 0x34, 0xa2, 0x0b, 0x6e, 0x56, 0xa4, + 0x68, 0xb3, 0xc9, 0xb9, 0x7b, 0x3b, 0x3d, 0x77, 0x7e, 0x82, 0x33, 0x04, + 0xbf, 0x7a, 0x19, 0xd7, 0xe6, 0xe9, 0x57, 0xaf, 0x68, 0x23, 0xc1, 0x0b, + 0x8d, 0x10, 0x09, 0x5a, 0xd6, 0x19, 0xfc, 0xaf, 0x6e, 0x79, 0x4d, 0x5f, + 0x0b, 0x38, 0x19, 0x1c, 0xbc, 0x00, 0x54, 0x41, 0x89, 0x89, 0x83, 0x61, + 0x3c, 0xe8, 0x96, 0xb7, 0xd3, 0x0b, 0xca, 0xd1, 0x62, 0x0a, 0x34, 0x7c, + 0x91, 0xbf, 0xc3, 0x71, 0x43, 0xd8, 0x07, 0xfa, 0x21, 0xbd, 0x3a, 0x5d, + 0x21, 0xd7, 0x7f, 0x0f, 0x3a, 0xb8, 0xc0, 0x8a, 0xae, 0xa4, 0x31, 0x81, + 0x19, 0x32, 0xbf, 0xa4, 0x1a, 0x63, 0x80, 0x5a, 0x6e, 0x0e, 0xf4, 0x03, + 0x8c, 0x4f, 0xf2, 0xc2, 0xec, 0x8c, 0x92, 0x3b, 0xc7, 0xf0, 0xbc, 0x6b, + 0x1b, 0x90, 0xea, 0x3a, 0x70, 0x28, 0xf8, 0x97, 0xea, 0x17, 0x47, 0xe6, + 0xbe, 0x88, 0xa1, 0xdc, 0x8a, 0xa2, 0x0e, 0x84, 0x2b, 0x32, 0x59, 0x08, + 0x02, 0x41, 0xbb, 0x10, 0xb7, 0x27, 0x45, 0x73, 0xdb, 0x50, 0xd0, 0x07, + 0xb2, 0xed, 0x90, 0x87, 0xe3, 0x71, 0x77, 0xe8, 0x6c, 0xc8, 0xa8, 0xc4, + 0xa0, 0x99, 0x63, 0x7d, 0x44, 0xeb, 0xfb, 0x07, 0x61, 0x90, 0x83, 0xb0, + 0x83, 0xec, 0xdc, 0xb9, 0xba, 0xd4, 0xb4, 0x19, 0x2a, 0xdf, 0x7e, 0x99, + 0x80, 0x32, 0xd8, 0xe4, 0xc2, 0x38, 0x6c, 0xf3, 0x0b, 0x55, 0xb3, 0x4d, + 0x80, 0xa3, 0x8b, 0xe3, 0x41, 0x33, 0xce, 0xd0, 0xd8, 0xd9, 0x5d, 0xee, + 0xba, 0xd6, 0xea, 0x5a, 0x99, 0x4d, 0x6a, 0xe7, 0xda, 0x50, 0x1d, 0xae, + 0x0c, 0xd5, 0xd1, 0x8a, 0x6d, 0x01, 0x6b, 0x79, 0x53, 0x75, 0x20, 0xa5, + 0x01, 0xe1, 0x9f, 0x51, 0x24, 0x56, 0xbd, 0x35, 0x5a, 0x73, 0x13, 0x36, + 0x77, 0x0c, 0x8b, 0x59, 0xf1, 0xdd, 0x6a, 0xc0, 0x91, 0xcf, 0xb1, 0xae, + 0x13, 0xad, 0xd1, 0x1e, 0x7d, 0xd5, 0x1d, 0xc0, 0x57, 0x9c, 0x70, 0x2c, + 0x37, 0x0b, 0x8c, 0x5a, 0x6a, 0x14, 0x40, 0x1e, 0xc8, 0x68, 0xf9, 0xc8, + 0x28, 0x56, 0x16, 0x8c, 0x58, 0x46, 0xbc, 0xf3, 0x36, 0x04, 0xcd, 0x77, + 0xd3, 0x72, 0xec, 0xec, 0x0f, 0xc5, 0xf4, 0x4c, 0x01, 0x2e, 0x60, 0x9c, + 0xd4, 0x87, 0xff, 0x6c, 0x2b, 0x30, 0x7c, 0x88, 0x10, 0x42, 0xf5, 0xc2, + 0xb9, 0xb1, 0x8d, 0x14, 0x99, 0x14, 0x90, 0xb3, 0x4d, 0x3f, 0x47, 0xf8, + 0x3b, 0xcf, 0xc3, 0x26, 0x7f, 0x51, 0xd3, 0xcb, 0x87, 0xbf, 0xb8, 0x5f, + 0x11, 0x04, 0xcf, 0xc9, 0x39, 0x65, 0x6e, 0xc9, 0xe5, 0x2d, 0x61, 0xee, + 0xc1, 0xa4, 0x4a, 0xa7, 0x31, 0x03, 0xc6, 0x10, 0x5e, 0x8c, 0x4a, 0x61, + 0x11, 0xc7, 0xd3, 0x21, 0x0e, 0xb2, 0x39, 0x60, 0xbd, 0xb6, 0xe6, 0xb8, + 0x26, 0x3d, 0x52, 0x10, 0x83, 0x50, 0x80, 0x4f, 0x30, 0x1d, 0xa9, 0x11, + 0xac, 0x82, 0xb8, 0x3c, 0xb0, 0x21, 0x40, 0xcb, 0x2d, 0xdb, 0x94, 0x4b, + 0x90, 0x3b, 0x13, 0x33, 0xe1, 0x60, 0x9c, 0xa0, 0x8b, 0xd8, 0xcd, 0x6c, + 0x44, 0x39, 0xba, 0x9b, 0x77, 0x96, 0x37, 0xa7, 0xf9, 0x92, 0x9a, 0xcf, + 0x70, 0x08, 0x7e, 0x7c, 0x14, 0x55, 0xe6, 0x14, 0x05, 0x00, 0xf7, 0x5e, + 0x3e, 0xbd, 0x60, 0x86, 0xbd, 0xbc, 0x39, 0x9b, 0xf7, 0xf4, 0x37, 0x27, + 0xd3, 0x92, 0x24, 0x0a, 0x37, 0xe1, 0xd2, 0xa3, 0xaf, 0x51, 0x35, 0x3b, + 0x37, 0x74, 0x5a, 0xdc, 0x9e, 0x23, 0x8e, 0xd3, 0xc0, 0x89, 0x33, 0xc7, + 0x2f, 0x70, 0xa5, 0x88, 0x83, 0xcc, 0x67, 0x30, 0x24, 0xe4, 0x77, 0x93, + 0x9c, 0xac, 0xc6, 0x6d, 0xc3, 0xaa, 0x63, 0x2f, 0xbd, 0x71, 0x12, 0xc6, + 0x82, 0x42, 0xd2, 0xb9, 0x44, 0xc3, 0xec, 0x52, 0xa8, 0x4b, 0x7e, 0xf1, + 0x13, 0x08, 0x1b, 0xa4, 0xfb, 0x18, 0xd6, 0x8c, 0x12, 0x9e, 0xe2, 0xb5, + 0x8b, 0xa8, 0x17, 0x50, 0x20, 0xfc, 0x23, 0x26, 0xe2, 0x9f, 0x25, 0xee, + 0x8f, 0x20, 0xec, 0x93, 0x94, 0xe5, 0x94, 0x7e, 0x46, 0xb4, 0xdc, 0x16, + 0xd6, 0x54, 0xc4, 0xb7, 0x80, 0x65, 0x9b, 0x66, 0x97, 0xb6, 0x50, 0x67, + 0x4c, 0x7e, 0x5d, 0x35, 0x8d, 0xc9, 0xe0, 0xf0, 0x74, 0x2f, 0x6f, 0x8e, + 0xc5, 0x02, 0x7d, 0x15, 0xb5, 0x90, 0x26, 0x5f, 0xda, 0x0c, 0x1c, 0xb0, + 0xc0, 0xf9, 0x61, 0x19, 0x12, 0x4d, 0xaf, 0x76, 0x5a, 0x29, 0xec, 0xd8, + 0x75, 0x52, 0xc0, 0x28, 0x3b, 0x18, 0x9b, 0x15, 0xaa, 0x9b, 0xd8, 0xd4, + 0xe0, 0x31, 0xc7, 0x01, 0x42, 0x4e, 0xcd, 0xd5, 0x1d, 0x9b, 0x65, 0x83, + 0x48, 0x02, 0x11, 0x37, 0xaf, 0x53, 0x88, 0xb3, 0x3d, 0xb8, 0x81, 0xf2, + 0xc4, 0x94, 0x4c, 0x3c, 0x6f, 0xe3, 0xe7, 0x13, 0xbc, 0x0f, 0x86, 0x8a, + 0x65, 0x42, 0xda, 0xf1, 0x2d, 0x6e, 0xc0, 0xb8, 0xc8, 0xe7, 0x33, 0x9b, + 0x05, 0x8e, 0x3e, 0xd3, 0x96, 0xd1, 0xe9, 0x2d, 0x4d, 0x6c, 0x0b, 0xca, + 0xc4, 0x73, 0x16, 0x1c, 0x43, 0xb8, 0x2a, 0xe6, 0x1d, 0xaa, 0x86, 0x2d, + 0xa3, 0x2b, 0xa9, 0x9e, 0x0c, 0xef, 0x26, 0x12, 0x9f, 0x51, 0x8c, 0x02, + 0xa8, 0x27, 0xe0, 0xf8, 0x3e, 0xb7, 0xdc, 0x14, 0xc3, 0x9e, 0x95, 0x97, + 0x2a, 0x69, 0xe2, 0x03, 0x38, 0x28, 0xe0, 0xeb, 0x23, 0xcc, 0x75, 0x4c, + 0xb3, 0xc5, 0x2e, 0x30, 0x9b, 0x20, 0x53, 0x56, 0x4e, 0x6a, 0x8d, 0x40, + 0x10, 0x51, 0x0e, 0x2e, 0xa4, 0xf0, 0x2b, 0xf9, 0x2e, 0x18, 0x17, 0xc1, + 0xd0, 0x35, 0xc7, 0xb5, 0x78, 0x38, 0xd2, 0x63, 0xdb, 0xf2, 0xd0, 0xb4, + 0xd6, 0x38, 0xd7, 0x07, 0x9d, 0x04, 0xeb, 0xc4, 0x12, 0x91, 0x41, 0xec, + 0x9d, 0x1c, 0x1f, 0x1f, 0xec, 0x0d, 0x34, 0x6b, 0x31, 0x38, 0x3a, 0x2d, + 0x60, 0x4d, 0x57, 0x10, 0x7c, 0xe7, 0x54, 0xb5, 0x26, 0x79, 0x1c, 0xc6, + 0x17, 0xe9, 0x7d, 0x31, 0xb9, 0x8d, 0x82, 0x20, 0x75, 0x4d, 0xdf, 0x9a, + 0x5b, 0x65, 0xe4, 0x71, 0xe0, 0xa0, 0x34, 0x82, 0xec, 0x16, 0x70, 0x17, + 0x2b, 0xed, 0x7c, 0x4e, 0x6e, 0xed, 0xf9, 0x6b, 0x3d, 0x28, 0xe6, 0xfa, + 0x0b, 0x75, 0x8a, 0x00, 0x66, 0xe7, 0xe9, 0xcc, 0xbd, 0x76, 0x0f, 0x4f, + 0x23, 0x08, 0x5a, 0xc2, 0x32, 0x11, 0x7c, 0xdb, 0x12, 0xce, 0x99, 0x83, + 0xb6, 0x82, 0x57, 0x40, 0xeb, 0x8e, 0x5c, 0x52, 0x11, 0x5c, 0xf4, 0xba, + 0x3a, 0x68, 0xc6, 0x5d, 0xe1, 0x26, 0xe2, 0x84, 0x05, 0xe7, 0xca, 0xd3, + 0x40, 0xe8, 0x52, 0xe4, 0x7b, 0x65, 0x7a, 0xe1, 0x19, 0xa0, 0xb4, 0xa4, + 0x33, 0xa0, 0xe1, 0x52, 0x7d, 0x64, 0x6b, 0x8a, 0x72, 0xc6, 0xed, 0x0c, + 0xac, 0x65, 0x06, 0x3a, 0x6a, 0xaf, 0x63, 0x46, 0xd9, 0xaa, 0x31, 0x36, + 0xa0, 0x16, 0xfe, 0xde, 0x45, 0x63, 0x73, 0x7a, 0xa5, 0xeb, 0xa1, 0x7d, + 0xe9, 0x38, 0xb1, 0xb6, 0x26, 0x37, 0x6d, 0x04, 0x36, 0xd0, 0x4c, 0xef, + 0xdc, 0x91, 0x71, 0x8f, 0x75, 0xb6, 0x9c, 0xe1, 0xe5, 0x48, 0xb9, 0xa5, + 0x8d, 0x77, 0xe3, 0x71, 0x19, 0xf1, 0x74, 0xf9, 0x28, 0x34, 0x6d, 0xab, + 0x27, 0xee, 0x6c, 0x29, 0x67, 0xbc, 0x40, 0xd8, 0x6d, 0x91, 0x6f, 0x45, + 0x12, 0x26, 0x07, 0xef, 0x12, 0x71, 0xf7, 0xee, 0x52, 0x5d, 0x50, 0x18, + 0xc6, 0x55, 0xa1, 0xad, 0x2b, 0x6b, 0xab, 0x92, 0x25, 0xd7, 0x91, 0xfe, + 0x80, 0xe8, 0xf4, 0xbc, 0x14, 0x62, 0x78, 0x09, 0x9a, 0x49, 0x23, 0xdf, + 0x6a, 0x1a, 0xea, 0x51, 0xcd, 0x3a, 0xca, 0xda, 0xb8, 0x57, 0x4f, 0x1a, + 0xf0, 0xe9, 0xa2, 0xe5, 0x32, 0x17, 0x73, 0xd0, 0x1a, 0x64, 0xa1, 0xc5, + 0xa4, 0x74, 0x40, 0xac, 0x7c, 0x8c, 0x35, 0x6a, 0x09, 0xd5, 0x70, 0xbd, + 0x67, 0xc3, 0xcc, 0xdb, 0x45, 0x0d, 0xd3, 0x4c, 0x35, 0x2f, 0x25, 0xf6, + 0xe5, 0xb0, 0x8f, 0xda, 0x2c, 0x96, 0x1f, 0xe2, 0x5c, 0xe4, 0xe8, 0x3e, + 0xbc, 0x65, 0x73, 0xc1, 0x26, 0xc8, 0xd8, 0x4a, 0x77, 0x13, 0xec, 0x97, + 0xc4, 0xee, 0x41, 0xb5, 0x20, 0xa3, 0x87, 0x25, 0xcd, 0x3b, 0x1e, 0x90, + 0x15, 0x0f, 0xbf, 0x88, 0x14, 0x0f, 0x97, 0x9f, 0x61, 0xe2, 0x9e, 0x45, + 0x85, 0x13, 0x91, 0x16, 0x21, 0x1d, 0x80, 0x94, 0x21, 0xbe, 0x26, 0xe3, + 0x24, 0x81, 0x96, 0x75, 0x13, 0x78, 0x76, 0xb2, 0x43, 0x82, 0xfe, 0x8a, + 0x20, 0x81, 0x5f, 0x93, 0x22, 0x67, 0x2d, 0xa8, 0x17, 0xdd, 0x6b, 0xdd, + 0x42, 0x2a, 0x09, 0x5e, 0x5c, 0xe7, 0x65, 0x39, 0x81, 0xcb, 0x28, 0x1d, + 0xdd, 0x9a, 0x45, 0x2c, 0x8d, 0xd8, 0xd5, 0x2e, 0x57, 0xd1, 0x73, 0xc2, + 0xea, 0x1c, 0x57, 0xf9, 0xc3, 0x12, 0xfd, 0x6a, 0xb3, 0xc4, 0x32, 0x84, + 0x36, 0xce, 0x0d, 0xea, 0x0d, 0x76, 0x6f, 0x13, 0xf0, 0xf8, 0x66, 0x56, + 0x05, 0xb2, 0x17, 0x3d, 0x66, 0xe7, 0x63, 0xeb, 0xc2, 0xd5, 0x5a, 0x82, + 0x46, 0x6c, 0xd6, 0x69, 0x9d, 0xc7, 0x6d, 0x85, 0x78, 0x9c, 0xd0, 0xcb, + 0x39, 0xc5, 0x84, 0x63, 0x5e, 0x83, 0xb9, 0x40, 0x58, 0xd0, 0xa6, 0x93, + 0x01, 0x8d, 0xe2, 0x79, 0x16, 0x0b, 0x66, 0xf7, 0x08, 0x74, 0x0c, 0xb8, + 0x09, 0x5a, 0xa6, 0x2a, 0x96, 0x10, 0xa2, 0x40, 0x87, 0x38, 0xd7, 0x72, + 0x2e, 0xf6, 0x06, 0xde, 0x9a, 0x9b, 0x2e, 0xfe, 0x50, 0x46, 0x8b, 0xfc, + 0xab, 0xce, 0xb5, 0xb0, 0xde, 0xe1, 0x2c, 0x70, 0x8d, 0xea, 0xb6, 0x21, + 0x6a, 0xf1, 0x25, 0x84, 0x04, 0x62, 0xf0, 0x7a, 0x8c, 0x7d, 0xb5, 0x89, + 0xf1, 0x78, 0xfb, 0x63, 0x42, 0x33, 0xba, 0x3b, 0xc6, 0x70, 0x97, 0x82, + 0x5a, 0xe9, 0xad, 0x11, 0x24, 0x58, 0xd5, 0x08, 0xff, 0x8c, 0xbe, 0x7a, + 0xa1, 0x32, 0xa7, 0xe6, 0xbc, 0x8a, 0x1e, 0x7f, 0x1f, 0x4a, 0xdd, 0x0e, + 0x6e, 0x0c, 0xa8, 0x4c, 0x2a, 0x3e, 0xf0, 0x69, 0xa3, 0xe2, 0x65, 0x46, + 0x8a, 0x68, 0x08, 0x11, 0xbf, 0xfe, 0xee, 0xb5, 0x12, 0x03, 0x0b, 0x0c, + 0x28, 0x2f, 0xe4, 0x45, 0x58, 0x22, 0xe0, 0x51, 0x89, 0x48, 0x30, 0xb0, + 0xba, 0x5d, 0xab, 0x40, 0xf0, 0xdb, 0x24, 0x02, 0x61, 0xf3, 0x2c, 0x7a, + 0x7f, 0x0f, 0xb1, 0x5b, 0x39, 0xd0, 0x1a, 0xb8, 0x8c, 0xd0, 0x70, 0x07, + 0xbe, 0xfb, 0x4c, 0x41, 0xae, 0xb0, 0xef, 0x00, 0x7c, 0x06, 0xc3, 0x62, + 0xd5, 0x18, 0x23, 0xc2, 0xfb, 0xf2, 0x0f, 0x6b, 0x90, 0x94, 0x44, 0x71, + 0xbb, 0x9c, 0xc1, 0x25, 0x1e, 0xf7, 0xf5, 0x3b, 0x5c, 0x28, 0x30, 0x13, + 0x57, 0x20, 0x26, 0x0c, 0xaa, 0xd6, 0x83, 0x5d, 0xa6, 0x5f, 0x93, 0xf3, + 0xa1, 0x19, 0x3e, 0x82, 0x6c, 0xe2, 0xa0, 0xaa, 0xbc, 0x82, 0xc8, 0xe5, + 0xa9, 0x59, 0x16, 0xe4, 0x64, 0x4e, 0xd2, 0x0c, 0x5d, 0x14, 0x91, 0x3c, + 0xdf, 0x2a, 0x71, 0x0b, 0xda, 0x01, 0xde, 0x76, 0xa6, 0x27, 0xd9, 0x72, + 0x40, 0xa5, 0x7c, 0x44, 0x36, 0x5e, 0xd9, 0x85, 0x3b, 0xde, 0xfa, 0x05, + 0x98, 0xad, 0x31, 0x96, 0x97, 0xca, 0x8a, 0xb1, 0x8e, 0x18, 0x9c, 0x96, + 0xe0, 0xa6, 0x2c, 0x9b, 0x96, 0x14, 0xbb, 0xd2, 0x19, 0x61, 0x93, 0x2d, + 0xe3, 0x58, 0xd8, 0xa3, 0x0a, 0x09, 0x1c, 0xdb, 0x8a, 0x5d, 0x86, 0x97, + 0x12, 0x57, 0x12, 0x7d, 0x33, 0x77, 0xa1, 0x3c, 0x97, 0xd1, 0x86, 0xbb, + 0x66, 0x98, 0xd4, 0x05, 0x93, 0xe5, 0x9e, 0x6b, 0xbb, 0x28, 0x08, 0xa5, + 0xff, 0xb5, 0x7b, 0x68, 0x2e, 0xcb, 0xa1, 0xa5, 0x4d, 0x98, 0x56, 0x0c, + 0x09, 0x3f, 0x63, 0xbb, 0x5d, 0xf4, 0x8c, 0x63, 0xfb, 0x33, 0x97, 0x61, + 0x39, 0x2f, 0x28, 0xac, 0xbe, 0x5d, 0x00, 0x13, 0xd7, 0xbc, 0xb6, 0xd7, + 0x8b, 0x5e, 0xe3, 0x3a, 0xcd, 0x30, 0x5c, 0x13, 0xa2, 0x9f, 0x17, 0x8c, + 0x4a, 0x57, 0x1b, 0xf7, 0x59, 0x86, 0x25, 0x58, 0xb5, 0xdf, 0x68, 0x54, + 0xd4, 0xda, 0x5d, 0xc6, 0xf4, 0x5b, 0x05, 0x95, 0xa6, 0x68, 0x82, 0xb2, + 0x87, 0x8a, 0x0c, 0x77, 0xba, 0xbd, 0x97, 0xcb, 0x26, 0x35, 0xf1, 0xa3, + 0x9d, 0x91, 0x39, 0xb2, 0xc9, 0x8a, 0xef, 0xf3, 0x37, 0x14, 0xa4, 0x1f, + 0xdf, 0x10, 0x10, 0x12, 0xfa, 0x2a, 0x52, 0xa0, 0xf5, 0x8c, 0xb2, 0xf8, + 0x9b, 0xc1, 0x1c, 0xea, 0x7a, 0x6e, 0xe9, 0x3c, 0xe0, 0x8c, 0x66, 0xa1, + 0xd2, 0x65, 0xa5, 0xdb, 0x21, 0x61, 0x9b, 0xe3, 0x3e, 0x7e, 0xc7, 0x91, + 0x49, 0xd5, 0xb0, 0xda, 0x19, 0x65, 0xbf, 0x7a, 0x8b, 0x1e, 0x68, 0x3d, + 0xeb, 0xea, 0x10, 0x2b, 0x8d, 0xdc, 0x66, 0x74, 0x19, 0xd0, 0x00, 0x39, + 0x78, 0x85, 0xbe, 0x21, 0x4c, 0xaf, 0x16, 0xc3, 0x0f, 0xd5, 0x01, 0x89, + 0xda, 0x57, 0x09, 0x2e, 0xb8, 0xf3, 0x78, 0x36, 0xe3, 0x4b, 0xbc, 0x9d, + 0x52, 0xf1, 0x0d, 0x44, 0x53, 0x21, 0xea, 0x2f, 0x3b, 0x84, 0x59, 0x95, + 0x7f, 0xb6, 0x28, 0x58, 0xa8, 0x90, 0x45, 0xf3, 0xac, 0x95, 0x52, 0x27, + 0x42, 0xee, 0x8f, 0xfa, 0xfd, 0x77, 0x8f, 0x92, 0xea, 0x52, 0x84, 0x89, + 0x47, 0x16, 0x1e, 0x85, 0x8d, 0xd1, 0xed, 0xfa, 0x0f, 0x0a, 0x34, 0x80, + 0x44, 0x89, 0x34, 0xab, 0x71, 0x3e, 0xbd, 0xe0, 0x94, 0xeb, 0x36, 0xb7, + 0xef, 0x30, 0xa9, 0xc1, 0xde, 0xa9, 0x4c, 0xa6, 0x61, 0x4f, 0xc7, 0x21, + 0xae, 0x51, 0xd2, 0xfa, 0xcd, 0xed, 0x7a, 0xfb, 0xf1, 0x6b, 0x99, 0x0a, + 0x58, 0x8d, 0x27, 0x66, 0xa8, 0xf3, 0x59, 0xfb, 0xee, 0xdd, 0x79, 0x9e, + 0x77, 0x9f, 0xa8, 0x93, 0x56, 0x80, 0xe1, 0x0a, 0xed, 0x03, 0x9e, 0x81, + 0xa9, 0x94, 0xa4, 0xb6, 0x3f, 0x84, 0xde, 0x28, 0xce, 0x41, 0xe4, 0x46, + 0x18, 0x30, 0x46, 0xe7, 0x70, 0xa4, 0x27, 0x7a, 0xcf, 0x2f, 0x92, 0xb1, + 0x1f, 0xe1, 0x1d, 0xbc, 0x89, 0x25, 0x1e, 0x9e, 0x52, 0x61, 0x92, 0xae, + 0xb6, 0xcb, 0x4e, 0x60, 0xc9, 0xb8, 0x1b, 0xe7, 0xad, 0xa3, 0x8b, 0x6d, + 0xa6, 0xb9, 0x1b, 0x7e, 0x74, 0x29, 0xf4, 0xe3, 0xe0, 0x69, 0x06, 0xf0, + 0x0e, 0x3c, 0x1f, 0x8e, 0x91, 0x54, 0x09, 0x3e, 0xf6, 0x0b, 0xa4, 0x67, + 0x2c, 0xd8, 0x0b, 0x51, 0xee, 0x5a, 0xc9, 0x03, 0x72, 0x36, 0x26, 0x13, + 0x55, 0x06, 0x5b, 0xef, 0x0d, 0x73, 0xe7, 0xcc, 0x4a, 0x27, 0x5b, 0x10, + 0xc9, 0x84, 0xc8, 0xb4, 0x23, 0x07, 0xa3, 0x13, 0xdd, 0x99, 0x14, 0x28, + 0xcb, 0x5d, 0xd6, 0xb6, 0x5e, 0x82, 0x63, 0x94, 0x42, 0xf8, 0x3a, 0xfe, + 0x18, 0x5f, 0x8a, 0x42, 0xdd, 0x36, 0x3a, 0x34, 0x19, 0xf5, 0x1a, 0x8b, + 0xe0, 0xe6, 0x54, 0xf3, 0xad, 0x4f, 0x59, 0x59, 0x77, 0xba, 0x73, 0xa1, + 0x26, 0x16, 0x56, 0x25, 0x14, 0x97, 0x90, 0xb3, 0x58, 0x65, 0x78, 0xf9, + 0x71, 0x1c, 0x7f, 0xf0, 0x61, 0x80, 0x44, 0x37, 0x90, 0x47, 0xd1, 0xfe, + 0x23, 0x06, 0xd1, 0x9e, 0x75, 0xc5, 0x32, 0x85, 0xb7, 0x35, 0x57, 0x3f, + 0xd8, 0xbc, 0x63, 0x54, 0x3e, 0xa8, 0x92, 0xa1, 0x3b, 0x48, 0x5b, 0xcb, + 0x9b, 0x83, 0xdc, 0x4c, 0xba, 0x06, 0x8d, 0xee, 0x05, 0x24, 0x4f, 0x71, + 0x73, 0x2c, 0x27, 0x85, 0xd7, 0x92, 0xc5, 0xfb, 0x9a, 0xc8, 0xed, 0xaf, + 0x97, 0xd4, 0x4d, 0xa1, 0x80, 0x23, 0x4a, 0xe3, 0xbe, 0xcb, 0xee, 0x82, + 0xb2, 0x19, 0x38, 0x44, 0x8d, 0xa4, 0xfc, 0x01, 0xe3, 0xae, 0x5b, 0x6d, + 0x16, 0x10, 0xa1, 0x9b, 0xaa, 0x5f, 0xd0, 0xc8, 0x05, 0x89, 0xcf, 0x8e, + 0x4e, 0x8a, 0xdb, 0x2d, 0x9f, 0x11, 0xc7, 0xbc, 0x5e, 0x85, 0xc6, 0xeb, + 0xe1, 0xae, 0xce, 0x96, 0x9d, 0xde, 0x93, 0x05, 0xbd, 0x53, 0xed, 0x01, + 0xeb, 0xd4, 0x87, 0x8f, 0x6e, 0x09, 0xe2, 0x65, 0x13, 0x6b, 0xb5, 0x4b, + 0x2f, 0xee, 0x56, 0x71, 0xa8, 0xa2, 0x3a, 0x38, 0x60, 0xb3, 0x6b, 0xd7, + 0xd7, 0xf4, 0xed, 0x26, 0xcd, 0x39, 0xde, 0x36, 0x28, 0x52, 0x3e, 0xd7, + 0xd7, 0xfc, 0x3b, 0x2d, 0x39, 0xca, 0x02, 0x8e, 0xbb, 0x04, 0x3e, 0xfe, + 0x1e, 0x4b, 0x2e, 0xce, 0x21, 0x5e, 0x72, 0xdf, 0x0a, 0x54, 0xeb, 0xd8, + 0xf6, 0x1c, 0x1d, 0xb6, 0x84, 0xc5, 0x40, 0x72, 0xb3, 0xdb, 0x1c, 0xaa, + 0x0f, 0x12, 0x39, 0x47, 0x11, 0xa4, 0xd2, 0x3c, 0x11, 0x77, 0xcb, 0x2c, + 0x4a, 0xb2, 0xe6, 0xf0, 0xb9, 0xa5, 0x57, 0x1e, 0x96, 0x1a, 0xad, 0x4a, + 0x7d, 0x49, 0x67, 0xad, 0x52, 0x3b, 0x1a, 0xb6, 0x7b, 0x77, 0xda, 0x19, + 0x0c, 0xa3, 0x70, 0x96, 0x08, 0x3e, 0xfe, 0x0e, 0x3b, 0xc3, 0x85, 0x0b, + 0x94, 0x1c, 0xdd, 0x42, 0x06, 0x8d, 0x32, 0x54, 0xdf, 0x81, 0x1c, 0x47, + 0x46, 0x6f, 0xa6, 0x60, 0x3b, 0x8a, 0x4d, 0x97, 0x8f, 0xbf, 0xcf, 0x51, + 0xfc, 0x9a, 0x67, 0x49, 0x3a, 0xb4, 0x73, 0x87, 0xcf, 0x50, 0xa7, 0xc2, + 0x99, 0xfe, 0xf7, 0x3b, 0x8a, 0x89, 0xc3, 0x7c, 0x07, 0x8a, 0xef, 0x5e, + 0x9b, 0xb9, 0xda, 0xf3, 0xa2, 0x35, 0xb8, 0x0d, 0xd6, 0xed, 0x52, 0xb4, + 0xcb, 0xf0, 0x81, 0x7b, 0x60, 0xc9, 0x50, 0x2c, 0x27, 0x1e, 0xd8, 0xa2, + 0x30, 0xb5, 0x45, 0x08, 0x8e, 0xe5, 0x7b, 0x0c, 0xc5, 0x72, 0xe7, 0x20, + 0x73, 0x26, 0x7a, 0xb4, 0xa3, 0x91, 0xe1, 0xc0, 0x78, 0xda, 0x6c, 0x2b, + 0x8b, 0xaf, 0xc8, 0x25, 0xe3, 0xb1, 0xfc, 0x1a, 0x23, 0x84, 0xf9, 0x53, + 0xeb, 0x36, 0x7d, 0x8f, 0xa5, 0xb1, 0xcc, 0x9b, 0x22, 0x23, 0xf0, 0xe3, + 0x1f, 0xb4, 0x4b, 0xca, 0xd0, 0x17, 0xf0, 0xf3, 0x6f, 0x42, 0xbb, 0x87, + 0x88, 0xf2, 0xb7, 0x9c, 0xbd, 0xb7, 0x1b, 0xd4, 0x6a, 0x56, 0xf6, 0x36, + 0x0e, 0xdf, 0x1e, 0x6d, 0x2a, 0x43, 0xa1, 0xcc, 0xc0, 0x3b, 0xb2, 0xf7, + 0xc4, 0xe1, 0xef, 0x41, 0xf6, 0x1e, 0xa6, 0xe8, 0xef, 0x73, 0xda, 0x2d, + 0xcf, 0x0f, 0xd5, 0xae, 0xf9, 0x5d, 0xe9, 0xc8, 0x5e, 0x00, 0x41, 0xfe, + 0xff, 0xbb, 0x9f, 0x76, 0x7b, 0x25, 0xc0, 0x78, 0xf0, 0x42, 0x48, 0x87, + 0x7f, 0xc4, 0xd2, 0x18, 0x22, 0xf3, 0x84, 0xfc, 0x34, 0x1b, 0x26, 0x37, + 0xb5, 0x73, 0xe6, 0x94, 0xb6, 0x04, 0x84, 0x4b, 0x7c, 0xa0, 0xf5, 0x72, + 0xfa, 0x90, 0x61, 0x25, 0x34, 0x2a, 0x53, 0x59, 0x22, 0xec, 0x4d, 0x62, + 0x13, 0x0c, 0x6a, 0x9d, 0xc4, 0x77, 0xf0, 0x2c, 0xe7, 0x45, 0x3a, 0x36, + 0x33, 0x71, 0xda, 0xbc, 0x9b, 0xf2, 0x71, 0xee, 0x6c, 0xeb, 0x22, 0x35, + 0x06, 0xb5, 0x20, 0x8b, 0x9a, 0x8d, 0xae, 0x42, 0x30, 0x2a, 0x77, 0xdb, + 0x24, 0x1e, 0x8c, 0xe0, 0x05, 0x77, 0x2b, 0xe4, 0x42, 0x51, 0xf5, 0x62, + 0xc4, 0xd6, 0xe4, 0xf4, 0x32, 0xf6, 0x34, 0x83, 0x6f, 0x1a, 0xb1, 0x63, + 0x5b, 0x62, 0x70, 0x16, 0x78, 0x28, 0x00, 0x10, 0xbf, 0x61, 0xcd, 0xbd, + 0x17, 0xb8, 0xec, 0xb7, 0x28, 0xb5, 0x7a, 0x1d, 0x3d, 0x7c, 0xf0, 0x73, + 0xcd, 0xed, 0xf9, 0xcb, 0x8f, 0xd9, 0xc3, 0xfb, 0x01, 0xef, 0xd4, 0x30, + 0x84, 0x30, 0x41, 0x52, 0x6b, 0x90, 0xb9, 0x20, 0xb3, 0x37, 0x71, 0x55, + 0x15, 0x21, 0x84, 0xc3, 0x32, 0x46, 0x4b, 0x1c, 0x5b, 0xb2, 0x35, 0x02, + 0xba, 0x53, 0xcf, 0x74, 0x48, 0x26, 0x13, 0x85, 0xad, 0x00, 0x93, 0x57, + 0x59, 0xe5, 0x5e, 0xc8, 0x2b, 0xf8, 0x1f, 0x10, 0xfe, 0x99, 0x22, 0xa8, + 0xa7, 0x49, 0x15, 0x13, 0x84, 0x53, 0x9a, 0x11, 0x00, 0x04, 0xac, 0x2b, + 0xfe, 0x06, 0x63, 0x49, 0x0d, 0xfb, 0x87, 0x08, 0xd8, 0x3d, 0x0c, 0xf1, + 0xac, 0x26, 0xb7, 0x9d, 0x40, 0xae, 0x0a, 0x57, 0xa3, 0xc1, 0xde, 0x34, + 0xb6, 0xe5, 0x66, 0x38, 0xee, 0x11, 0xdd, 0xf6, 0x10, 0x44, 0x47, 0x1a, + 0x83, 0xd9, 0x77, 0xd0, 0xa6, 0x02, 0x1e, 0xb7, 0x50, 0x73, 0x82, 0x7d, + 0x87, 0x41, 0xfe, 0x5e, 0xbb, 0x53, 0xb4, 0x0b, 0x60, 0xfc, 0xbf, 0xb6, + 0x69, 0xd3, 0x73, 0x42, 0xd9, 0x90, 0x02, 0xd1, 0x6e, 0x61, 0xa2, 0x24, + 0x19, 0x57, 0xe7, 0x6b, 0xa7, 0x0a, 0x99, 0x78, 0xd7, 0x71, 0x91, 0x51, + 0x1a, 0xb1, 0x47, 0x3e, 0xe5, 0x3c, 0x94, 0xcb, 0xee, 0x14, 0x78, 0xc7, + 0x1d, 0x5c, 0x5a, 0xc4, 0xc4, 0x16, 0x77, 0x17, 0x54, 0xa8, 0x66, 0x2f, + 0x3e, 0x46, 0x14, 0xb6, 0x7a, 0xdf, 0x94, 0x5d, 0x1a, 0x4a, 0x37, 0xc7, + 0x05, 0x04, 0xe7, 0xd9, 0xbd, 0x28, 0xf6, 0xcc, 0x89, 0x5e, 0x27, 0x93, + 0x4b, 0xf3, 0x20, 0x86, 0x4a, 0xbc, 0xbf, 0x39, 0x3c, 0x3a, 0xd0, 0x70, + 0xbb, 0xff, 0x7d, 0xd4, 0x83, 0xa1, 0x14, 0x97, 0x1e, 0xc8, 0x0a, 0x69, + 0x7a, 0x4e, 0x01, 0x2c, 0xac, 0x94, 0x54, 0x03, 0xf8, 0x6b, 0x14, 0x46, + 0x3a, 0x38, 0xfe, 0x78, 0x78, 0x76, 0x72, 0xfc, 0xfe, 0xe0, 0x78, 0xb0, + 0xe2, 0x66, 0x60, 0x04, 0x91, 0x69, 0x43, 0xe9, 0x5d, 0x18, 0x76, 0xcd, + 0xd1, 0xe1, 0x45, 0x64, 0x08, 0x80, 0x3f, 0xf5, 0xdc, 0xe6, 0x9c, 0x87, + 0x24, 0x1c, 0x16, 0xf6, 0x6e, 0x06, 0x26, 0xb4, 0x21, 0x84, 0x38, 0xf7, + 0x28, 0x80, 0x16, 0xcd, 0xfc, 0x98, 0xfb, 0x04, 0x87, 0x06, 0x42, 0xaf, + 0x11, 0x9f, 0xca, 0x70, 0x50, 0xbd, 0xa3, 0x24, 0xdd, 0xc1, 0xc6, 0xb2, + 0xd6, 0x06, 0x61, 0x37, 0xf3, 0x43, 0xc9, 0x68, 0x30, 0xd1, 0x42, 0x50, + 0x5c, 0x44, 0x7b, 0xbe, 0x4a, 0xc8, 0xbb, 0x40, 0x35, 0x2b, 0xe5, 0x2e, + 0x21, 0x62, 0x72, 0xa0, 0x01, 0x6c, 0x55, 0xce, 0xee, 0x4d, 0x47, 0x4a, + 0x6f, 0x78, 0x39, 0x07, 0xce, 0x2c, 0xfe, 0x25, 0x31, 0x10, 0x86, 0x32, + 0xfe, 0xfd, 0x12, 0x24, 0xde, 0x57, 0xff, 0x7a, 0x01, 0xc7, 0xe3, 0xdf, + 0x3e, 0xda, 0x72, 0xe9, 0x0c, 0xc3, 0xa2, 0xeb, 0x4b, 0xe1, 0x0d, 0x38, + 0xd0, 0xba, 0x9c, 0x18, 0x99, 0x75, 0x7e, 0x7a, 0x76, 0xf2, 0xc3, 0x3f, + 0xbf, 0x71, 0x17, 0x0e, 0x4c, 0xc0, 0xbf, 0x00, 0x09, 0x47, 0x1a, 0xff, + 0xf7, 0x37, 0xef, 0xad, 0xde, 0x7c, 0x87, 0x13, 0x1e, 0x51, 0x60, 0x0a, + 0x58, 0xeb, 0xa9, 0x08, 0x18, 0x9a, 0x5c, 0xe3, 0xc8, 0x56, 0x05, 0x73, + 0xbc, 0xd4, 0x16, 0x8c, 0x36, 0xc3, 0xfc, 0xe3, 0x1a, 0x81, 0x36, 0x33, + 0xb9, 0xf1, 0x96, 0xc7, 0x82, 0x4f, 0x16, 0xd8, 0x41, 0xaa, 0xa9, 0x41, + 0xc5, 0x34, 0xa9, 0xa9, 0x06, 0x68, 0x41, 0xba, 0x20, 0xbb, 0x47, 0x47, + 0xdf, 0x74, 0x15, 0xd2, 0x11, 0x99, 0x7f, 0xb8, 0xad, 0xae, 0xc5, 0xe7, + 0xa2, 0xa7, 0x7d, 0x1e, 0x59, 0x03, 0x55, 0x3e, 0x3e, 0xe1, 0xd1, 0xbc, + 0x0c, 0xc2, 0xd2, 0x1a, 0x01, 0x0b, 0x06, 0x56, 0x3e, 0x22, 0x9c, 0x9a, + 0xf2, 0x55, 0x10, 0xef, 0x96, 0x9f, 0xe2, 0x54, 0x0a, 0x52, 0x29, 0xa8, + 0xfa, 0x05, 0x02, 0x32, 0xe6, 0x5a, 0xeb, 0x1d, 0x92, 0xf2, 0x09, 0x35, + 0x07, 0xae, 0x03, 0xbf, 0x1c, 0x0e, 0x65, 0x3b, 0x82, 0xd1, 0xb7, 0x48, + 0xcb, 0xcf, 0x88, 0x5e, 0x09, 0x47, 0x14, 0x0d, 0xee, 0x52, 0xb8, 0x0e, + 0x1c, 0x22, 0x38, 0xa6, 0x1e, 0x15, 0xf6, 0xb5, 0x95, 0x27, 0xbc, 0x99, + 0xe2, 0xe8, 0x40, 0x64, 0x8a, 0x49, 0x90, 0x82, 0xf0, 0x20, 0x8a, 0xdc, + 0x8a, 0x6b, 0x75, 0x10, 0xa8, 0xf4, 0x0a, 0xa3, 0x0b, 0x94, 0x5a, 0x5c, + 0xaf, 0x1b, 0x48, 0x22, 0xed, 0x48, 0x49, 0x24, 0x78, 0x80, 0xba, 0xae, + 0xca, 0x64, 0x32, 0x0a, 0x63, 0x21, 0x06, 0xd9, 0x05, 0xd7, 0xaa, 0x2b, + 0x05, 0xdf, 0x50, 0xa8, 0x15, 0x36, 0x2b, 0xf9, 0x82, 0x59, 0xb4, 0x3e, + 0xb0, 0xb0, 0x83, 0x51, 0xe0, 0xa6, 0x54, 0xdd, 0x74, 0x22, 0xe5, 0x20, + 0x4e, 0xb5, 0x17, 0xc2, 0x0e, 0x95, 0xbd, 0xfd, 0xb3, 0x1f, 0xde, 0x07, + 0x0e, 0x12, 0xb7, 0xb6, 0xab, 0xc8, 0x24, 0xdd, 0x9b, 0x48, 0x2a, 0x54, + 0xd2, 0x3e, 0xd5, 0x9e, 0xe1, 0x5f, 0xee, 0xd2, 0x9c, 0x53, 0x73, 0x8e, + 0x86, 0x2a, 0xb9, 0xcf, 0xac, 0xd2, 0x91, 0x8f, 0x06, 0xb6, 0x36, 0x90, + 0x8f, 0xe8, 0x0c, 0x7c, 0xd9, 0x40, 0x17, 0x8e, 0x34, 0x90, 0x51, 0x61, + 0x1e, 0x83, 0xd0, 0x32, 0x2a, 0xdd, 0xec, 0xb6, 0xa7, 0xe3, 0xc4, 0x74, + 0x3e, 0x1a, 0x23, 0x49, 0xe1, 0x44, 0xb2, 0xbe, 0xc8, 0x12, 0x86, 0x7d, + 0xa2, 0x88, 0x7f, 0x39, 0x0e, 0x6c, 0x97, 0xa0, 0x03, 0x51, 0xab, 0xbc, + 0x25, 0x08, 0xa9, 0x36, 0x24, 0x0f, 0x43, 0x14, 0x9b, 0x2b, 0x8a, 0x21, + 0x8b, 0x02, 0xf4, 0x8a, 0xa0, 0x4f, 0x0a, 0x47, 0xc3, 0x47, 0x0b, 0x13, + 0x5c, 0x2f, 0xa4, 0x12, 0x8f, 0xc4, 0x9b, 0x02, 0x7c, 0xf0, 0x24, 0x0f, + 0x82, 0x18, 0x5c, 0x00, 0xf8, 0x8a, 0x61, 0x25, 0x01, 0x98, 0x29, 0xcd, + 0xb4, 0x90, 0xd1, 0xd6, 0xee, 0x66, 0xba, 0xb0, 0xf6, 0x0e, 0xf7, 0xcf, + 0xe0, 0x3c, 0x93, 0xb2, 0x80, 0xe7, 0x14, 0xf3, 0x94, 0x3d, 0xcb, 0x2b, + 0x15, 0x86, 0x47, 0x07, 0x2c, 0x29, 0x50, 0xb6, 0xba, 0x76, 0x55, 0x8b, + 0x47, 0x5f, 0x15, 0x48, 0xd4, 0x0b, 0x73, 0x86, 0x56, 0x39, 0x57, 0xd1, + 0x2b, 0xe7, 0x8c, 0xd4, 0x23, 0x31, 0x9c, 0xc2, 0xf4, 0x32, 0xf5, 0x17, + 0x9a, 0x53, 0x05, 0x19, 0x2b, 0xb5, 0x6c, 0x7c, 0x08, 0x12, 0x95, 0x42, + 0x24, 0x1e, 0x26, 0x00, 0xec, 0x7c, 0xb4, 0xfa, 0xe4, 0xf9, 0x46, 0xef, + 0xc9, 0xf6, 0x4e, 0xef, 0x71, 0xef, 0xf1, 0xa3, 0x27, 0xdb, 0xab, 0x1c, + 0xdb, 0x8a, 0x8c, 0x82, 0x12, 0x5c, 0xec, 0x7a, 0x28, 0xa2, 0x6e, 0xa8, + 0xcc, 0x92, 0x34, 0xe4, 0x60, 0x6e, 0xec, 0x9e, 0x9e, 0xee, 0xef, 0x0e, + 0x76, 0xa3, 0x97, 0x86, 0x7a, 0x5f, 0xf9, 0x05, 0x96, 0x6c, 0xa9, 0xc6, + 0x46, 0x74, 0xae, 0x14, 0x05, 0xa0, 0x62, 0x03, 0xc5, 0x2d, 0xd7, 0x91, + 0x1b, 0xa5, 0x8c, 0xa4, 0x79, 0x95, 0x7b, 0x86, 0x7b, 0x3a, 0x1f, 0x79, + 0x41, 0xfc, 0x94, 0xae, 0x88, 0x74, 0x0a, 0xd5, 0x4f, 0xe0, 0x61, 0xdb, + 0x34, 0xa2, 0xbd, 0x9a, 0x59, 0xcd, 0xb3, 0x1a, 0xf3, 0xdf, 0x3b, 0x39, + 0xfa, 0xf0, 0xfe, 0xb8, 0x1f, 0xbd, 0x84, 0x62, 0xa1, 0xe8, 0xcf, 0xbd, + 0x4e, 0x87, 0xd5, 0xd5, 0x2b, 0x5f, 0xc5, 0x43, 0x1c, 0xfa, 0xaa, 0x56, + 0x2a, 0xc2, 0xee, 0xa3, 0xc2, 0xfb, 0x95, 0x6e, 0x61, 0x03, 0x3c, 0x4f, + 0xd0, 0xae, 0xcf, 0x46, 0xb9, 0x1f, 0x29, 0xab, 0x00, 0x63, 0x63, 0x4c, + 0xb4, 0x2f, 0x78, 0xc9, 0x8d, 0x61, 0xe9, 0xbb, 0x17, 0x71, 0x41, 0x77, + 0x35, 0x5b, 0x98, 0x50, 0x83, 0x58, 0x00, 0x91, 0x4f, 0x3a, 0x2d, 0x02, + 0x7c, 0xe2, 0x92, 0x8d, 0xe7, 0x54, 0xbc, 0x0a, 0x48, 0x8a, 0xc8, 0x97, + 0x10, 0x41, 0xaf, 0xe3, 0x5b, 0x87, 0xfe, 0xf7, 0xcc, 0x41, 0x3f, 0xdf, + 0xdb, 0x3d, 0x7f, 0xfd, 0xe1, 0x78, 0xff, 0xe8, 0x20, 0x7a, 0x19, 0xaa, + 0x14, 0x22, 0x93, 0xa7, 0x52, 0x05, 0xee, 0xe4, 0x8c, 0x1c, 0x1c, 0x83, + 0xae, 0x46, 0x7a, 0x6c, 0xa3, 0xd5, 0x77, 0x27, 0xef, 0x0f, 0x82, 0x14, + 0x00, 0x93, 0x20, 0x54, 0x7f, 0xc1, 0xc7, 0x20, 0x67, 0xb0, 0x45, 0xf7, + 0xc6, 0xd2, 0x99, 0x57, 0xc9, 0xe5, 0xe7, 0x32, 0x44, 0x0a, 0x9e, 0x2a, + 0x52, 0xd2, 0x5e, 0xd7, 0x49, 0x01, 0x75, 0x28, 0x1e, 0x36, 0xdc, 0x6b, + 0x69, 0x36, 0xa7, 0xa5, 0xa1, 0x96, 0xa3, 0xe8, 0x87, 0xfd, 0xb7, 0xe7, + 0x7b, 0x27, 0xc7, 0xcd, 0xbd, 0x79, 0x73, 0xf8, 0x16, 0x87, 0x5e, 0x9f, + 0x4c, 0xbf, 0x7f, 0x74, 0xfe, 0x7a, 0x77, 0xef, 0xef, 0x07, 0xc7, 0xfb, + 0xd1, 0x4b, 0x07, 0xc8, 0x2c, 0x34, 0x37, 0x4e, 0x3f, 0x5e, 0x0c, 0x06, + 0xb9, 0x2a, 0x18, 0x6a, 0xab, 0x1d, 0x2d, 0x77, 0x4f, 0x68, 0xd7, 0xcd, + 0x9d, 0xbd, 0x92, 0x46, 0x00, 0x18, 0xd1, 0x6d, 0x62, 0x5a, 0x83, 0x93, + 0x70, 0x06, 0x24, 0x67, 0x6a, 0x69, 0x45, 0x1d, 0xaf, 0x2a, 0x08, 0x97, + 0x6a, 0xb9, 0x27, 0x56, 0x89, 0x13, 0x18, 0xc2, 0xbd, 0x0b, 0x77, 0xba, + 0xd6, 0xea, 0xbd, 0x18, 0xab, 0xf2, 0x25, 0xff, 0x0c, 0xf6, 0x2e, 0x29, + 0x85, 0x02, 0xa2, 0x27, 0xb4, 0x1a, 0x42, 0x6e, 0xd5, 0x02, 0x13, 0x76, + 0xde, 0xee, 0xd1, 0x98, 0x5a, 0x70, 0x74, 0xc3, 0x94, 0x6e, 0x6d, 0x26, + 0xf3, 0xd0, 0x0b, 0xd3, 0x42, 0xfd, 0x2d, 0x88, 0x6e, 0x26, 0x83, 0xa5, + 0xbb, 0x69, 0x0d, 0x66, 0xdc, 0x75, 0x66, 0xbc, 0xfe, 0xc2, 0x2c, 0x49, + 0x5c, 0x94, 0xe5, 0xa4, 0x13, 0x8d, 0xb3, 0x79, 0x35, 0x01, 0x46, 0x65, + 0x4e, 0xfa, 0xb0, 0xf2, 0x31, 0xb4, 0x73, 0xc3, 0xff, 0xf1, 0xc1, 0x62, + 0x5e, 0xe2, 0x83, 0x25, 0x67, 0x56, 0x81, 0xb2, 0x08, 0x49, 0x55, 0x14, + 0x98, 0x03, 0xfb, 0x66, 0x44, 0xf3, 0x7c, 0x32, 0x32, 0x0f, 0xeb, 0x90, + 0xee, 0x70, 0x42, 0x2a, 0x49, 0x4b, 0xd7, 0xf8, 0xbc, 0x1a, 0x33, 0xb4, + 0x34, 0xef, 0x14, 0x68, 0xf1, 0x84, 0x40, 0x8a, 0x6a, 0xe8, 0x45, 0x47, + 0x00, 0x2a, 0xca, 0x19, 0xd9, 0x39, 0x82, 0x90, 0x09, 0x7a, 0xac, 0xf8, + 0x35, 0x59, 0x17, 0xee, 0x39, 0x27, 0xd8, 0x97, 0x4d, 0xf8, 0xe0, 0xc8, + 0x41, 0x21, 0xbb, 0xda, 0x4c, 0x0b, 0xcb, 0xd8, 0x25, 0xff, 0xc7, 0xd1, + 0xc9, 0xdb, 0xfd, 0xc3, 0x33, 0x9c, 0x22, 0x8f, 0x32, 0x54, 0x4e, 0xf4, + 0x70, 0x14, 0x84, 0x4f, 0xad, 0x23, 0x5a, 0x76, 0xb4, 0xa8, 0xb1, 0x25, + 0x6f, 0x26, 0xe7, 0x05, 0x58, 0x4a, 0x64, 0x5e, 0x8a, 0x39, 0x07, 0xd1, + 0x0e, 0xc1, 0x21, 0x21, 0xc3, 0x68, 0x87, 0xf3, 0xcb, 0x24, 0xfa, 0x0f, + 0xe2, 0x7a, 0xa7, 0x59, 0xc8, 0x80, 0xab, 0x2f, 0x76, 0x98, 0x8d, 0x2a, + 0x58, 0x0c, 0x61, 0xe1, 0x0e, 0x39, 0x4a, 0x92, 0x96, 0xd1, 0x22, 0xa6, + 0x70, 0xb0, 0x51, 0xa8, 0xae, 0x23, 0x39, 0x17, 0xd7, 0xc0, 0xc0, 0x75, + 0x95, 0xdc, 0x98, 0x7b, 0x3a, 0xda, 0xcf, 0x81, 0xe8, 0x13, 0x8d, 0x12, + 0x29, 0x19, 0x2c, 0x92, 0xcf, 0xe7, 0x25, 0x6c, 0xb5, 0xd1, 0x49, 0xae, + 0xbc, 0xf8, 0x15, 0x44, 0x91, 0xec, 0x45, 0x9f, 0xa0, 0x42, 0xa1, 0x53, + 0x1b, 0x68, 0x5c, 0x5d, 0xce, 0x36, 0x50, 0x00, 0xf9, 0xcf, 0xdc, 0x08, + 0xf6, 0x49, 0xf4, 0x8f, 0x0f, 0x87, 0x7b, 0x01, 0xf0, 0xc5, 0xfe, 0xbb, + 0x83, 0xa3, 0x23, 0x84, 0x65, 0xc1, 0x6c, 0xea, 0x8f, 0xef, 0xfb, 0x4d, + 0x86, 0x3b, 0x4c, 0xb0, 0x24, 0xa1, 0xd1, 0xb1, 0xa4, 0xac, 0x84, 0x39, + 0xbc, 0xfb, 0x7b, 0x47, 0x04, 0x5c, 0x10, 0x43, 0xc0, 0x5e, 0x7a, 0xd3, + 0xbc, 0x8f, 0xae, 0x12, 0xb7, 0xb2, 0x22, 0xf0, 0xce, 0xbd, 0x83, 0xb3, + 0xc1, 0xb9, 0xd0, 0xc2, 0xfd, 0x2e, 0x18, 0xf4, 0x91, 0x34, 0x2e, 0x18, + 0x6d, 0x12, 0x6c, 0x39, 0xd1, 0x4b, 0x78, 0xe4, 0xb7, 0xdf, 0x5a, 0xa6, + 0xd1, 0xbf, 0x1f, 0xfc, 0xd3, 0xd0, 0x2c, 0x35, 0xaa, 0xfb, 0xfc, 0x2a, + 0x0c, 0xc3, 0x4f, 0x06, 0x8f, 0x45, 0x2a, 0x8e, 0x05, 0x80, 0x70, 0xca, + 0x6c, 0xa2, 0x95, 0xb0, 0xf4, 0x31, 0x0c, 0x05, 0xa9, 0x5e, 0x81, 0xa8, + 0xe0, 0x4e, 0xb3, 0xf9, 0x2d, 0x4a, 0x9a, 0x8c, 0x9c, 0x76, 0x85, 0xe5, + 0x10, 0x90, 0xa9, 0xfa, 0x21, 0xb9, 0x04, 0xf2, 0x4b, 0x85, 0x02, 0x40, + 0x97, 0x8c, 0x27, 0xb7, 0x5f, 0x13, 0x49, 0x32, 0x15, 0xe8, 0x7d, 0x68, + 0xb0, 0x48, 0xd8, 0x28, 0xcd, 0x1b, 0xcb, 0xa2, 0xa8, 0x57, 0x3e, 0x02, + 0x1a, 0x20, 0x62, 0x00, 0xd0, 0x47, 0x29, 0xe4, 0xfe, 0xc9, 0x1c, 0x0b, + 0x70, 0x19, 0x7c, 0x66, 0xb3, 0xfc, 0x75, 0x9d, 0x02, 0x15, 0x3a, 0x29, + 0x30, 0x59, 0x21, 0xc3, 0x17, 0x36, 0x69, 0x15, 0xc0, 0xc9, 0x13, 0xe4, + 0xa3, 0xaf, 0x73, 0x00, 0x98, 0x73, 0x32, 0x59, 0x91, 0x8a, 0x81, 0x73, + 0x9a, 0xef, 0x1c, 0x83, 0x54, 0xff, 0xe0, 0xcc, 0x28, 0x48, 0xb4, 0x53, + 0x61, 0x29, 0x53, 0x85, 0xcc, 0xbb, 0xcb, 0x98, 0x5c, 0x68, 0x77, 0xa9, + 0x94, 0x69, 0x41, 0x96, 0x50, 0x9e, 0xea, 0x44, 0x22, 0x70, 0x76, 0x16, + 0x09, 0x9b, 0x7e, 0xf0, 0x8a, 0x15, 0xd8, 0xe6, 0xa2, 0x77, 0x21, 0x95, + 0xaf, 0xfe, 0x8f, 0x33, 0xaf, 0x1f, 0x77, 0x67, 0x84, 0x82, 0x00, 0x1c, + 0x63, 0x1f, 0xea, 0x64, 0xd8, 0xe9, 0x37, 0x59, 0xf0, 0x82, 0x53, 0x65, + 0xb9, 0x38, 0xdf, 0xaa, 0x2c, 0xc4, 0x36, 0xd6, 0x03, 0x05, 0x22, 0xd4, + 0xab, 0x11, 0xc1, 0x8a, 0x2f, 0x07, 0xbf, 0xee, 0xa2, 0x53, 0xcf, 0x89, + 0x2f, 0x0a, 0x41, 0x63, 0x22, 0x03, 0x8a, 0xf9, 0xff, 0xe0, 0xc4, 0x48, + 0xd4, 0xe6, 0x1f, 0x07, 0x6f, 0x0e, 0x7f, 0xb0, 0x46, 0xd6, 0x81, 0xd5, + 0xef, 0x19, 0xd0, 0x10, 0xb0, 0x0c, 0x6b, 0x1a, 0x16, 0x97, 0xe4, 0x74, + 0x0c, 0x42, 0x5c, 0x59, 0x0c, 0x6d, 0x8b, 0x54, 0xfe, 0x4f, 0x9a, 0x6b, + 0xc8, 0xca, 0x37, 0xb7, 0x16, 0x94, 0xd4, 0x2e, 0x11, 0x3b, 0x8d, 0xc5, + 0xc2, 0x95, 0x96, 0x3e, 0x92, 0x56, 0x6d, 0x44, 0x52, 0xf8, 0x0a, 0x4b, + 0xd8, 0xe1, 0x37, 0x68, 0x8b, 0x5f, 0xd1, 0x00, 0xa3, 0x4a, 0x74, 0x23, + 0x0b, 0x50, 0x09, 0xc2, 0x57, 0xc7, 0x69, 0x0a, 0xfd, 0x70, 0x08, 0xaa, + 0x15, 0x61, 0x62, 0x1f, 0x25, 0xec, 0x34, 0xb4, 0x65, 0x8c, 0xf2, 0xd0, + 0x16, 0xea, 0xe3, 0x97, 0x6a, 0x6a, 0x04, 0x34, 0x82, 0x59, 0x69, 0x70, + 0x8e, 0x9c, 0xa2, 0x42, 0xac, 0xc9, 0x07, 0x6b, 0xc6, 0x70, 0x65, 0x01, + 0x34, 0xce, 0x37, 0xbb, 0xc7, 0x6e, 0x65, 0xf7, 0xc8, 0x62, 0x26, 0xa1, + 0x26, 0x7e, 0x84, 0x3b, 0x2c, 0xbb, 0x57, 0x91, 0x59, 0x2c, 0xf3, 0xc1, + 0xae, 0x21, 0x1c, 0xd4, 0x9b, 0xb9, 0x87, 0x0f, 0x0d, 0x40, 0xa3, 0xe5, + 0xd3, 0x65, 0x6d, 0x80, 0xb9, 0xdc, 0x5c, 0x59, 0x86, 0x33, 0x27, 0x94, + 0xb2, 0xd4, 0xed, 0xd2, 0x4b, 0x8d, 0x36, 0xe2, 0x5f, 0xd5, 0x48, 0x5c, + 0x6f, 0x65, 0xeb, 0xd7, 0x34, 0xb2, 0xd5, 0x68, 0xe3, 0xea, 0x57, 0x35, + 0xd2, 0x15, 0xe3, 0xd9, 0xca, 0xca, 0xc1, 0x0f, 0x87, 0x03, 0xa3, 0x87, + 0xee, 0xd7, 0x8e, 0x4b, 0xc1, 0x4c, 0xc4, 0x08, 0x44, 0x99, 0xa1, 0x39, + 0xf3, 0xe6, 0x30, 0x1d, 0xa1, 0x80, 0x55, 0x31, 0xa2, 0x13, 0xf8, 0xf8, + 0x4a, 0xa9, 0x31, 0x91, 0xc2, 0xe7, 0x82, 0xfc, 0x7f, 0x54, 0xb4, 0xde, + 0x29, 0xf6, 0x89, 0x69, 0xd8, 0x0c, 0x00, 0xa5, 0xc9, 0x5f, 0x70, 0x00, + 0x19, 0xab, 0x85, 0x8a, 0x21, 0x6a, 0xb3, 0x19, 0x55, 0xc9, 0x01, 0x6c, + 0x7f, 0x86, 0x1f, 0x4c, 0x51, 0x01, 0x58, 0x51, 0x31, 0x1d, 0xd8, 0x7d, + 0x91, 0x56, 0x58, 0x9c, 0x9d, 0x0a, 0x48, 0x30, 0x26, 0x54, 0x59, 0x47, + 0xfe, 0x7a, 0xcc, 0xf7, 0x2a, 0xa5, 0xf1, 0x30, 0xb6, 0x9e, 0xd4, 0x2f, + 0x72, 0x10, 0x51, 0x6b, 0x95, 0x6f, 0xe3, 0x4b, 0x33, 0x13, 0x9a, 0x03, + 0xe3, 0xc9, 0x79, 0x86, 0x1c, 0x45, 0x94, 0x73, 0x8e, 0xfb, 0x13, 0x71, + 0x6a, 0xd7, 0x8e, 0x16, 0x1e, 0x2a, 0xbe, 0xa1, 0x40, 0xb4, 0x1c, 0x6a, + 0x69, 0x1a, 0x76, 0x77, 0x95, 0xb5, 0x32, 0x0a, 0x9e, 0xe4, 0xac, 0x4d, + 0x68, 0x3f, 0x1b, 0xac, 0x25, 0xc6, 0xe9, 0x84, 0xe4, 0x71, 0xc6, 0x3f, + 0x4a, 0xbf, 0x3a, 0x92, 0xc4, 0xa6, 0x5a, 0xc7, 0x01, 0x8a, 0x13, 0x13, + 0x44, 0x87, 0x5c, 0x67, 0xf2, 0x36, 0xab, 0xe2, 0x1b, 0x14, 0x75, 0x81, + 0xa3, 0xe0, 0xa6, 0x5d, 0x3a, 0x5a, 0x0a, 0xd7, 0xc8, 0xda, 0x8d, 0xa4, + 0x3c, 0x04, 0xca, 0x59, 0xe2, 0x3b, 0x15, 0xb7, 0xb8, 0x0d, 0x53, 0x96, + 0xea, 0xae, 0x2c, 0x7d, 0x62, 0xb9, 0x35, 0xff, 0x3c, 0xdb, 0xcc, 0x6c, + 0xaa, 0x75, 0x46, 0xa5, 0x62, 0x73, 0x8a, 0xa3, 0x49, 0x6e, 0xe0, 0x9a, + 0x49, 0x31, 0x15, 0x98, 0xec, 0xb2, 0xe0, 0x6b, 0x24, 0x58, 0xea, 0x21, + 0xba, 0xd5, 0x02, 0x15, 0xfe, 0xa6, 0x0a, 0x7f, 0x2b, 0xd2, 0xce, 0x30, + 0xc7, 0x05, 0xec, 0x70, 0xfd, 0xf9, 0xfc, 0x22, 0x86, 0x0a, 0xd5, 0x58, + 0xec, 0x26, 0xce, 0xc8, 0xf4, 0x20, 0x3b, 0xe0, 0x83, 0x9a, 0xd7, 0xcb, + 0x2f, 0x6d, 0xb1, 0xe2, 0x8d, 0x06, 0x29, 0x1c, 0xb2, 0x14, 0x7b, 0x70, + 0x99, 0x19, 0x59, 0xfd, 0xd8, 0xdd, 0x94, 0x63, 0x51, 0x50, 0xb1, 0xb7, + 0x5f, 0x84, 0x60, 0x0b, 0xca, 0x46, 0x3a, 0xc2, 0xb6, 0xdb, 0x0b, 0xbc, + 0x25, 0x7d, 0x40, 0x63, 0x6e, 0x17, 0x6e, 0xfe, 0x8c, 0xed, 0x03, 0x61, + 0x53, 0xda, 0x7b, 0x79, 0xd6, 0xa4, 0x17, 0x27, 0x39, 0x07, 0x3b, 0xd2, + 0x27, 0x77, 0xd8, 0x95, 0x9e, 0x40, 0x25, 0x14, 0xf6, 0x70, 0x14, 0xc9, + 0x6c, 0xc2, 0xd3, 0xe5, 0x6f, 0x30, 0x57, 0x14, 0x9d, 0xe1, 0x64, 0x25, + 0xd1, 0xf1, 0x18, 0x65, 0xdc, 0xf5, 0xd8, 0x3d, 0xe7, 0x7e, 0x01, 0xe3, + 0x84, 0x0c, 0xbc, 0x00, 0xa8, 0x97, 0xa5, 0x4a, 0x88, 0xd4, 0x1c, 0x7d, + 0x05, 0x08, 0x5d, 0x58, 0xa7, 0x5a, 0x3e, 0xf3, 0x1b, 0x41, 0xd4, 0x47, + 0x47, 0xeb, 0x87, 0x15, 0x9b, 0x17, 0x54, 0x33, 0xca, 0x2a, 0x58, 0x88, + 0xc4, 0x1b, 0x23, 0x42, 0x12, 0x9c, 0xe0, 0x02, 0xb0, 0x31, 0x8c, 0xdc, + 0xf4, 0x3e, 0xf7, 0x50, 0x9a, 0xf2, 0x11, 0x22, 0x65, 0xa2, 0xac, 0x5a, + 0xa4, 0xbc, 0x3e, 0x88, 0xe9, 0x4a, 0xf2, 0xb3, 0x6d, 0x13, 0x49, 0x5f, + 0x7d, 0xe3, 0x08, 0x06, 0xe9, 0xc3, 0x89, 0xd9, 0x28, 0x7f, 0x87, 0x2f, + 0x3c, 0xd6, 0x75, 0x80, 0x49, 0x01, 0xfe, 0x14, 0x6e, 0x85, 0xd1, 0x99, + 0xae, 0x50, 0x98, 0x8e, 0xd3, 0xca, 0xd5, 0x84, 0xad, 0x6b, 0x49, 0x53, + 0xb5, 0x40, 0x5e, 0xf5, 0x2a, 0xd5, 0x27, 0x58, 0x02, 0x91, 0x2a, 0x5c, + 0x09, 0x56, 0x59, 0x29, 0x80, 0x89, 0x70, 0x71, 0x76, 0xb4, 0x6a, 0x20, + 0x25, 0x9a, 0x5f, 0xbb, 0x20, 0xac, 0x0b, 0x22, 0x0a, 0x8a, 0x7c, 0xe2, + 0x26, 0xdb, 0x73, 0x5d, 0x74, 0xb3, 0xd2, 0xce, 0x7c, 0x9e, 0xe8, 0x7c, + 0xae, 0x91, 0x52, 0x4e, 0x77, 0xfb, 0x7d, 0xa1, 0x93, 0xbd, 0x00, 0x49, + 0x70, 0xfe, 0x02, 0x94, 0xe7, 0x2e, 0xb9, 0x1c, 0xa4, 0xcf, 0x53, 0xb9, + 0x91, 0x46, 0x62, 0xf1, 0x13, 0x62, 0x76, 0xfb, 0x54, 0x7d, 0x2e, 0x3c, + 0xdb, 0xeb, 0xda, 0x2a, 0x52, 0x29, 0x3a, 0x12, 0xa2, 0xb8, 0x9a, 0xba, + 0x47, 0x43, 0xb2, 0xae, 0x98, 0x61, 0x08, 0xeb, 0x8c, 0x85, 0x8c, 0xe4, + 0xa2, 0x01, 0x73, 0xa5, 0xe1, 0x48, 0xc0, 0xc8, 0x9c, 0x81, 0x6c, 0xfa, + 0x93, 0xfe, 0x48, 0x93, 0xea, 0xfc, 0xa6, 0x49, 0x7f, 0x0c, 0x4c, 0xfa, + 0xa9, 0x3d, 0x38, 0xd4, 0x59, 0xb4, 0xb1, 0xf1, 0x4c, 0x00, 0xa8, 0x0d, + 0x1d, 0x63, 0x7f, 0xc1, 0x0e, 0xcd, 0x73, 0x5d, 0x44, 0x71, 0xf1, 0xfb, + 0x72, 0x4e, 0xaf, 0xd3, 0xd5, 0x96, 0x76, 0xc5, 0x00, 0x9d, 0x20, 0xbd, + 0x11, 0xfb, 0xf1, 0xd9, 0x92, 0xb8, 0xdc, 0xc0, 0x59, 0x71, 0x0d, 0xf8, + 0x13, 0x0b, 0x72, 0xc6, 0x65, 0x14, 0x4e, 0x3f, 0xdb, 0xea, 0xed, 0x7e, + 0xb4, 0x21, 0x89, 0xac, 0xbb, 0xc8, 0xa4, 0x27, 0xc9, 0x14, 0x29, 0x93, + 0xd4, 0x7c, 0x2b, 0x1a, 0x53, 0x31, 0x92, 0x51, 0x11, 0x4f, 0x61, 0x5b, + 0x27, 0xf1, 0x2d, 0x9c, 0xa9, 0x70, 0x46, 0x38, 0x39, 0x95, 0xcc, 0xf1, + 0x1c, 0x27, 0x19, 0xf8, 0x73, 0x50, 0x26, 0x61, 0xbb, 0x22, 0x18, 0x27, + 0x73, 0x2a, 0x08, 0x27, 0x61, 0x50, 0xdc, 0xab, 0x67, 0x49, 0x83, 0xd8, + 0x8a, 0xaa, 0x89, 0x57, 0xd9, 0x08, 0xb0, 0x90, 0xf9, 0x3c, 0xb3, 0xeb, + 0xa6, 0xcb, 0x04, 0xea, 0x38, 0xd5, 0x3d, 0x77, 0x17, 0x8f, 0xb9, 0x89, + 0x93, 0xc2, 0x25, 0x68, 0x51, 0x1e, 0x5d, 0xf2, 0xcb, 0xb6, 0x17, 0x62, + 0xc8, 0xa7, 0xc0, 0xee, 0xe2, 0x09, 0xc3, 0xf8, 0x9e, 0x60, 0xb8, 0x44, + 0x2d, 0x12, 0x90, 0x74, 0xf2, 0xd8, 0x86, 0xe0, 0xd5, 0x49, 0xf7, 0x79, + 0x60, 0xac, 0x92, 0x68, 0xfe, 0x48, 0xf8, 0xac, 0xde, 0x35, 0x12, 0x30, + 0x95, 0x44, 0x67, 0x07, 0x83, 0x33, 0x4c, 0xd7, 0x04, 0x16, 0xd0, 0xf5, + 0xcd, 0x3e, 0xeb, 0x0a, 0xf7, 0xca, 0x0c, 0xcd, 0x8a, 0x28, 0x96, 0x45, + 0x60, 0x09, 0x65, 0xbb, 0xe3, 0xf4, 0x51, 0xde, 0x53, 0xec, 0x1c, 0x5a, + 0x72, 0x9b, 0xc9, 0xc5, 0x2c, 0x54, 0xe9, 0xc9, 0x62, 0x0f, 0x98, 0x89, + 0x8f, 0x13, 0xa6, 0x4a, 0x86, 0x9d, 0xeb, 0x71, 0x22, 0xb9, 0x80, 0x99, + 0x82, 0xd0, 0x23, 0x92, 0x06, 0x61, 0x6a, 0xe4, 0x45, 0xe0, 0x9e, 0x14, + 0xd8, 0x1e, 0x16, 0x0d, 0x68, 0x08, 0x6a, 0x3e, 0xe0, 0xde, 0x18, 0x42, + 0x88, 0x50, 0x3c, 0x2e, 0xa8, 0x84, 0xe5, 0xd3, 0xc7, 0x8f, 0x03, 0x00, + 0x65, 0xf1, 0x85, 0x61, 0xab, 0x2c, 0xe8, 0x31, 0x36, 0x39, 0x81, 0x94, + 0xe2, 0x7e, 0xa1, 0x98, 0x5b, 0x82, 0xda, 0xd3, 0x1d, 0x41, 0xbc, 0x09, + 0xac, 0x98, 0xaf, 0xe0, 0x6c, 0x10, 0x97, 0xf9, 0x44, 0x28, 0xd4, 0xbc, + 0x68, 0x0d, 0xee, 0x42, 0x10, 0xd5, 0x8a, 0x4b, 0xcc, 0xc6, 0x45, 0xb4, + 0xd5, 0x51, 0x00, 0x97, 0x37, 0x32, 0x8f, 0x83, 0x6f, 0x6c, 0xb9, 0x12, + 0x81, 0xba, 0xd6, 0x60, 0xda, 0x92, 0xea, 0xff, 0x86, 0x20, 0xfc, 0x3a, + 0xb5, 0x1b, 0xe9, 0x76, 0x06, 0xbe, 0x52, 0x90, 0xd2, 0xf0, 0x8e, 0x0e, + 0x5c, 0x21, 0xfd, 0xc1, 0xc9, 0x99, 0xec, 0xae, 0xd3, 0x1f, 0x9d, 0xfe, + 0x33, 0x80, 0xd2, 0xe7, 0x49, 0x7d, 0xe4, 0x5a, 0x1e, 0x05, 0x03, 0x7f, + 0xcb, 0x99, 0x74, 0x5e, 0xa2, 0x23, 0x76, 0x42, 0x67, 0x97, 0x6a, 0x57, + 0x00, 0x05, 0x71, 0x15, 0x0b, 0x33, 0x0e, 0x8e, 0x99, 0x54, 0xdc, 0x1f, + 0x8f, 0x0a, 0xe9, 0xf8, 0x9c, 0xa8, 0xbc, 0xcf, 0xdc, 0xbd, 0x59, 0x6f, + 0x1d, 0xbe, 0xc6, 0x50, 0x2d, 0xf3, 0x60, 0x6a, 0x0e, 0x26, 0xa1, 0x07, + 0xc4, 0x14, 0xad, 0xe0, 0x99, 0x4f, 0x45, 0x37, 0x10, 0x67, 0x85, 0xd5, + 0x56, 0xac, 0xf0, 0x6d, 0x6f, 0xfc, 0xd3, 0x93, 0xb3, 0x81, 0xde, 0xf7, + 0xd0, 0x2d, 0x7e, 0xd1, 0x38, 0x37, 0x80, 0xd5, 0x15, 0xa1, 0xb9, 0x86, + 0x98, 0x3e, 0xad, 0xb7, 0x17, 0x32, 0xc2, 0x8a, 0x02, 0x91, 0x27, 0xb6, + 0x23, 0x0d, 0x75, 0xc0, 0x8c, 0x64, 0xce, 0x34, 0xd5, 0x47, 0x56, 0x4e, + 0x43, 0x56, 0x35, 0xbc, 0x64, 0x52, 0x2f, 0x52, 0x15, 0x2b, 0x6a, 0xda, + 0x7a, 0x58, 0x9b, 0x4f, 0x02, 0x5c, 0x02, 0x2e, 0x83, 0xb3, 0x83, 0xfe, + 0x80, 0x86, 0x0e, 0xff, 0xf2, 0x86, 0x4e, 0xe5, 0x76, 0xf8, 0x4b, 0x4f, + 0x7b, 0x41, 0x3b, 0xd7, 0x08, 0x8f, 0x5f, 0x39, 0x07, 0x4b, 0x35, 0xb4, + 0xaf, 0x75, 0x89, 0x9c, 0x15, 0xdb, 0x74, 0xd0, 0x45, 0x90, 0x5f, 0x32, + 0x9d, 0xe0, 0xc9, 0xc6, 0x2f, 0x56, 0xb9, 0x93, 0x55, 0x23, 0x93, 0xf1, + 0x49, 0xc8, 0x8b, 0xcf, 0x4e, 0x13, 0x4f, 0x6d, 0x13, 0x33, 0xb8, 0xa4, + 0xb8, 0x85, 0x43, 0x2a, 0xf5, 0x34, 0xc1, 0x2f, 0xbb, 0x42, 0x2b, 0x78, + 0x53, 0x10, 0x55, 0x34, 0xea, 0x2a, 0x6f, 0x6e, 0xa9, 0x97, 0x46, 0xe4, + 0x04, 0x67, 0x2c, 0xf0, 0xb5, 0x64, 0xe8, 0xa3, 0xd0, 0xd6, 0xa0, 0xb9, + 0x4d, 0x22, 0xf5, 0xd7, 0xf1, 0xd0, 0x62, 0x83, 0xd0, 0xdc, 0x6b, 0x77, + 0x02, 0x7b, 0x03, 0x51, 0x40, 0x8b, 0x8b, 0x49, 0x0a, 0xd1, 0x30, 0x17, + 0xa4, 0x33, 0xc2, 0x6b, 0x1e, 0xb3, 0xcd, 0xdd, 0x00, 0xd8, 0x4d, 0xbe, + 0x7c, 0xc0, 0xf2, 0x78, 0xe9, 0x5c, 0xd2, 0xf1, 0x90, 0xaf, 0x08, 0x2b, + 0xea, 0x83, 0x73, 0x48, 0xaf, 0x88, 0x5e, 0x74, 0x0a, 0xae, 0x60, 0x94, + 0x9a, 0xca, 0xbf, 0xd8, 0xe6, 0xe8, 0x98, 0x40, 0x98, 0x94, 0xa2, 0x74, + 0xa7, 0x19, 0x38, 0x6b, 0xe0, 0x1b, 0x2c, 0x55, 0x64, 0x55, 0x66, 0x6f, + 0xbe, 0xcf, 0xed, 0xcb, 0xa5, 0x99, 0x0a, 0x20, 0x93, 0x37, 0x1e, 0x79, + 0xca, 0x94, 0x25, 0x25, 0xbe, 0x95, 0x2d, 0xc3, 0x69, 0xe6, 0x62, 0xf7, + 0x43, 0x6a, 0x41, 0xcb, 0x80, 0xd7, 0xd8, 0xb7, 0xd3, 0x14, 0x5d, 0x04, + 0xbb, 0xbc, 0x54, 0x50, 0x35, 0xd7, 0x9c, 0x1a, 0x10, 0xe3, 0x4c, 0x5b, + 0x18, 0x0b, 0xa1, 0xe6, 0xca, 0x5a, 0x94, 0x35, 0xae, 0xad, 0x16, 0x2f, + 0xf6, 0xa2, 0x11, 0xea, 0x41, 0x7f, 0x4f, 0x89, 0x16, 0x95, 0x6e, 0xf4, + 0xee, 0xaa, 0x8d, 0x8e, 0x91, 0x91, 0xd8, 0x68, 0x78, 0x11, 0x63, 0x6c, + 0x7e, 0x6c, 0xae, 0x76, 0x57, 0xf4, 0x7f, 0xba, 0x65, 0x9b, 0x1a, 0x41, + 0xdd, 0x02, 0x6d, 0xcb, 0x72, 0x1f, 0xc3, 0x78, 0xb8, 0x16, 0x72, 0xaa, + 0x8f, 0xf1, 0xb6, 0x8a, 0x96, 0x17, 0x38, 0x54, 0x4e, 0x1f, 0xcf, 0x58, + 0x23, 0x06, 0x95, 0x38, 0xbb, 0xb5, 0xa0, 0x65, 0x3d, 0x8a, 0x89, 0xb6, + 0x25, 0x04, 0xf4, 0x17, 0xb6, 0xfc, 0x5e, 0xb1, 0x7d, 0x68, 0x1a, 0xdf, + 0x78, 0xd7, 0xfb, 0x74, 0x3e, 0x65, 0xd4, 0x1e, 0xa7, 0xa7, 0x1d, 0x36, + 0x70, 0x10, 0xcc, 0x94, 0xa2, 0xc0, 0x3b, 0x61, 0x51, 0xa0, 0x6d, 0x89, + 0x32, 0x2d, 0x30, 0x01, 0x43, 0x46, 0x9c, 0x44, 0x05, 0xca, 0x28, 0x5a, + 0x9e, 0x0b, 0x17, 0x6b, 0xf3, 0xc4, 0x2c, 0xea, 0x5a, 0x38, 0x7a, 0xae, + 0x64, 0xc2, 0x06, 0x07, 0x7e, 0x8c, 0x7e, 0x92, 0x4a, 0x7a, 0x01, 0xd7, + 0x60, 0x91, 0xfc, 0x84, 0x62, 0x64, 0x8f, 0xae, 0x1b, 0xc2, 0x80, 0xa6, + 0x59, 0x42, 0x95, 0x1d, 0xcb, 0xf0, 0x9e, 0x3e, 0x67, 0x4b, 0x19, 0x5b, + 0x47, 0x20, 0x2e, 0x3c, 0x33, 0x12, 0x5c, 0x33, 0x06, 0x74, 0x6b, 0xc3, + 0xc9, 0x4a, 0x66, 0x8d, 0x42, 0x38, 0x10, 0xc9, 0xf7, 0x66, 0xd5, 0xa1, + 0xe0, 0xca, 0xb8, 0xc3, 0x31, 0x6c, 0x68, 0x3b, 0x43, 0xae, 0x48, 0xd5, + 0x8d, 0x51, 0xc8, 0x08, 0xc1, 0xa4, 0x3b, 0x9d, 0x6c, 0x5a, 0xa6, 0x53, + 0xdc, 0xce, 0xa0, 0x2a, 0x40, 0x36, 0x06, 0x39, 0x3e, 0x70, 0x08, 0xb6, + 0x88, 0xd1, 0xed, 0xd1, 0x51, 0x05, 0xa1, 0xd3, 0x7f, 0x2d, 0xd6, 0x34, + 0x22, 0xe7, 0xbd, 0xfa, 0xad, 0x9f, 0x90, 0x99, 0x4e, 0xc2, 0x7f, 0x40, + 0xa0, 0x70, 0x9e, 0xdd, 0xd6, 0x67, 0x31, 0x88, 0x23, 0xe3, 0xf4, 0xf8, + 0x25, 0x6f, 0xec, 0x48, 0x90, 0x37, 0x49, 0xf4, 0x22, 0x47, 0x91, 0x78, + 0xe2, 0xc0, 0xf9, 0xa8, 0x54, 0xb7, 0xf5, 0xbc, 0x61, 0xfd, 0x80, 0xdb, + 0xc6, 0xd2, 0x12, 0x4e, 0x2a, 0x9d, 0x5d, 0xb9, 0xe7, 0x69, 0x9b, 0x2e, + 0xd6, 0xd3, 0x26, 0x42, 0x90, 0x2d, 0x2e, 0xe0, 0xd4, 0xd4, 0x92, 0xd3, + 0x49, 0xd4, 0xba, 0xb7, 0x1b, 0x2d, 0xc2, 0x3b, 0x44, 0xf2, 0x74, 0x3a, + 0x79, 0xc2, 0x64, 0x6e, 0xa6, 0x9c, 0x8f, 0xb3, 0xf4, 0xab, 0x54, 0x4c, + 0x82, 0x2b, 0x15, 0x0b, 0xc3, 0x9b, 0x55, 0x70, 0x1e, 0xdf, 0x64, 0x3a, + 0xba, 0x49, 0xe1, 0xd0, 0xa0, 0x2c, 0x8e, 0xf0, 0x54, 0x10, 0xf1, 0x9c, + 0xd4, 0x0a, 0x58, 0x71, 0xfd, 0xf9, 0x33, 0x95, 0x54, 0xe1, 0x36, 0x84, + 0x79, 0x4e, 0xa0, 0x4a, 0xa5, 0xc7, 0x38, 0xb7, 0xf9, 0x26, 0xe2, 0x9d, + 0x42, 0x03, 0x1b, 0x88, 0x7d, 0xcc, 0x33, 0x4b, 0x44, 0x0d, 0xbc, 0x26, + 0x67, 0x7c, 0xec, 0x8b, 0x3f, 0xdb, 0xdb, 0x0b, 0xed, 0x84, 0xd8, 0xe9, + 0x01, 0x92, 0x8a, 0xf3, 0xfc, 0xb3, 0x66, 0xde, 0x25, 0xf9, 0x0d, 0x35, + 0xf5, 0xb1, 0xe3, 0x98, 0x03, 0x94, 0x43, 0x93, 0x49, 0x83, 0xcb, 0x37, + 0xc0, 0xa1, 0xf4, 0x62, 0x20, 0xa4, 0xfb, 0x49, 0x3e, 0x8e, 0xdc, 0x2a, + 0x90, 0xdb, 0x44, 0x31, 0x6f, 0xd0, 0x43, 0x69, 0x45, 0xf5, 0x2c, 0x1a, + 0x84, 0x70, 0xd7, 0xb7, 0x9f, 0xf3, 0xd6, 0xcb, 0x0d, 0xa6, 0xca, 0xe3, + 0xa2, 0x37, 0x9e, 0x3d, 0x76, 0x05, 0xc8, 0x21, 0xc4, 0xb2, 0x52, 0xf1, + 0x98, 0x85, 0x2f, 0xd0, 0xc6, 0x1f, 0x4e, 0xa0, 0x5a, 0xdf, 0x84, 0x9e, + 0xb1, 0xc5, 0xee, 0xed, 0x63, 0x1b, 0x35, 0x36, 0x38, 0x70, 0x45, 0x9a, + 0xe8, 0x70, 0xdf, 0x79, 0x70, 0xd3, 0x4e, 0x30, 0x9e, 0xc0, 0xfd, 0x7c, + 0x4b, 0x76, 0xa3, 0x32, 0x5a, 0x83, 0xb7, 0x1c, 0x64, 0xbe, 0x67, 0x44, + 0x19, 0xc7, 0x39, 0x79, 0x37, 0x71, 0xf9, 0xbd, 0x67, 0x9e, 0xd5, 0x4e, + 0x98, 0x48, 0xce, 0x02, 0x9b, 0x65, 0x08, 0x1c, 0x5d, 0xca, 0x6b, 0xe0, + 0xc7, 0xfb, 0x8b, 0xd8, 0xcf, 0x0a, 0x28, 0x69, 0x5e, 0xfe, 0xc5, 0x6d, + 0x66, 0x47, 0xb7, 0x59, 0x8d, 0x67, 0x1a, 0x39, 0xa1, 0xda, 0x37, 0xe8, + 0x50, 0x75, 0x63, 0x97, 0xd3, 0x02, 0x6d, 0x85, 0xb9, 0x70, 0xe7, 0x99, + 0x3d, 0xaf, 0xa4, 0x29, 0x31, 0xcc, 0xb9, 0x11, 0x63, 0xe6, 0x85, 0x1d, + 0xdd, 0x3b, 0x31, 0xd6, 0x38, 0xb6, 0xc6, 0xc7, 0x0d, 0xea, 0x2c, 0xaf, + 0xe6, 0xa4, 0x96, 0xea, 0x8c, 0x42, 0xf0, 0x8a, 0x3b, 0x1b, 0x0d, 0xa6, + 0x81, 0x12, 0xd6, 0x9e, 0x19, 0x2d, 0xe9, 0xad, 0x48, 0x1c, 0xe4, 0x4b, + 0xbb, 0x2e, 0x72, 0xb2, 0xaa, 0x81, 0xd1, 0xc4, 0x36, 0xc0, 0xb7, 0x3b, + 0xe4, 0xa8, 0x14, 0x1c, 0x88, 0xd5, 0x3c, 0x39, 0x3b, 0x4f, 0x75, 0x89, + 0x50, 0x86, 0x37, 0x8a, 0xf0, 0x42, 0x55, 0x77, 0x87, 0x0e, 0xe9, 0xfb, + 0xb4, 0x24, 0xdf, 0x9c, 0x21, 0xb5, 0xb3, 0x41, 0xff, 0x34, 0xda, 0xeb, + 0x27, 0xff, 0xe1, 0xf0, 0x3c, 0x87, 0xb7, 0xec, 0x6c, 0x87, 0x9f, 0xee, + 0xb3, 0x2d, 0xeb, 0x10, 0x4b, 0xc9, 0x9b, 0xf5, 0xac, 0xbd, 0xf4, 0x8c, + 0x09, 0x4e, 0x0c, 0xdd, 0x64, 0xef, 0x81, 0xa1, 0x21, 0xb7, 0x99, 0xd4, + 0x76, 0x67, 0x67, 0xc7, 0x0a, 0xf2, 0x57, 0xf3, 0xec, 0xb3, 0x8a, 0x48, + 0x5c, 0x0a, 0x5a, 0xb6, 0xca, 0x79, 0xe3, 0xb9, 0x10, 0x9f, 0x63, 0xf9, + 0xd3, 0x84, 0x0c, 0x51, 0x01, 0xd5, 0xb4, 0x68, 0x98, 0x57, 0x2d, 0xbd, + 0xe7, 0xf9, 0x63, 0xbd, 0xbb, 0xb8, 0x54, 0xe4, 0xe7, 0xe4, 0xd6, 0x12, + 0x8f, 0xc4, 0x7d, 0xcf, 0xd2, 0x0c, 0xd4, 0x6d, 0xfb, 0x88, 0xd3, 0x02, + 0x1f, 0xbc, 0xec, 0x8b, 0xe1, 0x4e, 0xcc, 0xf9, 0x1d, 0xee, 0x4e, 0xf0, + 0xc4, 0xce, 0xe3, 0x44, 0x03, 0x7d, 0x70, 0xf7, 0x4d, 0x99, 0xee, 0xd2, + 0x4c, 0x8c, 0x4b, 0x0d, 0x8b, 0x91, 0xbe, 0xb4, 0x29, 0x44, 0x0b, 0x55, + 0x73, 0x43, 0xa2, 0x1c, 0x5a, 0x1f, 0x52, 0xbc, 0xb2, 0xb1, 0xce, 0x18, + 0x0b, 0x96, 0xb6, 0x85, 0xa7, 0xd2, 0x42, 0xa3, 0x70, 0xa3, 0x36, 0x66, + 0xa1, 0x80, 0x3d, 0xad, 0xe2, 0xf9, 0x16, 0x7b, 0x55, 0xda, 0x4c, 0x5e, + 0x8f, 0x36, 0x23, 0x1e, 0xba, 0x53, 0x11, 0x44, 0x2d, 0x5c, 0xcd, 0xea, + 0xc5, 0x6c, 0xef, 0x22, 0xc8, 0x19, 0xb0, 0x78, 0xb5, 0x99, 0xbc, 0xea, + 0x46, 0x2e, 0x0f, 0xc6, 0x7c, 0x89, 0xc9, 0xeb, 0x39, 0x91, 0x2e, 0x86, + 0xf1, 0x38, 0x74, 0xa2, 0xba, 0x11, 0x84, 0xa1, 0x90, 0xe1, 0x8c, 0x1c, + 0xeb, 0x58, 0xf3, 0x18, 0x65, 0x74, 0x4c, 0xda, 0xc1, 0x9a, 0x9e, 0x13, + 0xef, 0xee, 0x85, 0x8a, 0xf0, 0xb7, 0xd2, 0x08, 0xb6, 0x9d, 0x6a, 0x9a, + 0x05, 0xf9, 0xa3, 0x55, 0x85, 0xe4, 0xd5, 0x09, 0x68, 0x8f, 0xcf, 0x95, + 0x33, 0x62, 0xde, 0x8f, 0xe0, 0xa7, 0x35, 0xb7, 0x60, 0x47, 0x1c, 0x5b, + 0x97, 0x46, 0xe1, 0xca, 0xaa, 0x2e, 0xee, 0xb4, 0x4b, 0x68, 0x69, 0x69, + 0xf5, 0x11, 0x34, 0xbf, 0x33, 0x12, 0x92, 0x84, 0xae, 0x40, 0xd3, 0x9e, + 0x1a, 0x8d, 0x90, 0xe8, 0xb6, 0x13, 0xbe, 0xa6, 0x72, 0x28, 0xcc, 0x04, + 0xd6, 0x56, 0xac, 0x3e, 0xa6, 0x84, 0x31, 0x8a, 0x2b, 0xd5, 0x28, 0x6c, + 0x28, 0xc5, 0x0f, 0xc4, 0x14, 0x20, 0xa0, 0xd2, 0xf5, 0xac, 0x4e, 0x81, + 0x77, 0x8b, 0x87, 0x94, 0x84, 0x4a, 0x20, 0x36, 0xf4, 0xc9, 0x71, 0x75, + 0xfb, 0x52, 0x4a, 0x36, 0xfa, 0x31, 0xd6, 0x5c, 0xac, 0xca, 0x10, 0x03, + 0xb9, 0xf2, 0x21, 0xcc, 0x13, 0xcd, 0xd0, 0x59, 0x82, 0x60, 0xf0, 0x68, + 0x96, 0x34, 0x83, 0x78, 0xfd, 0xe1, 0x6d, 0xdf, 0x89, 0x58, 0x40, 0x57, + 0x08, 0xd8, 0xbf, 0x0d, 0x61, 0x61, 0xb5, 0x0a, 0xcc, 0x17, 0x51, 0x02, + 0x92, 0xcc, 0x07, 0x32, 0x99, 0x43, 0x85, 0xc2, 0x29, 0xf8, 0xfa, 0x33, + 0x4a, 0xfa, 0x6b, 0x98, 0x83, 0xcd, 0x4b, 0x20, 0x8c, 0x3f, 0x04, 0xcf, + 0xe7, 0x98, 0xea, 0x8e, 0x42, 0xb0, 0x72, 0x16, 0xbd, 0x4d, 0xab, 0x77, + 0xf3, 0x8b, 0x17, 0xea, 0xd0, 0x1f, 0x9b, 0x36, 0xe7, 0x17, 0x90, 0x0a, + 0xf0, 0x08, 0x1a, 0xa6, 0xff, 0x61, 0x8b, 0xe5, 0xca, 0xca, 0xee, 0x87, + 0xc1, 0xbb, 0x93, 0xb3, 0x7e, 0xf4, 0x08, 0xaa, 0x36, 0x0c, 0xce, 0x0e, + 0x5f, 0x7f, 0x18, 0x98, 0x8f, 0xd2, 0xc7, 0x7e, 0x9c, 0xa5, 0x46, 0x76, + 0xea, 0x57, 0x49, 0x66, 0x58, 0xed, 0x58, 0xc8, 0x07, 0xf3, 0x4a, 0xe0, + 0x9c, 0xe6, 0x85, 0xc5, 0x5e, 0xb9, 0xbe, 0xca, 0x99, 0x5d, 0x72, 0x65, + 0xd0, 0x8c, 0xf2, 0x19, 0x73, 0x6b, 0x6b, 0x49, 0x1b, 0xe5, 0x26, 0x24, + 0x15, 0x27, 0x1a, 0xbc, 0xdb, 0x3d, 0xfe, 0x7b, 0x5f, 0xa2, 0x4d, 0x3e, + 0x7d, 0xfa, 0xd4, 0x0c, 0x4a, 0x40, 0x9d, 0xa7, 0x4c, 0x56, 0x56, 0xfa, + 0x07, 0x07, 0xd1, 0xee, 0x51, 0xff, 0x44, 0x1e, 0x18, 0x55, 0xb3, 0xb5, + 0x27, 0xeb, 0x46, 0x39, 0x18, 0x27, 0x95, 0xf9, 0xc7, 0xca, 0xca, 0xff, + 0x01, 0x98, 0x89, 0xe7, 0x01, 0x76, 0x43, 0x04, 0x00, }; #define BUF_SIZE 0x10000 static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size) diff --git a/external/curl/src/tool_ipfs.c b/external/curl/src/tool_ipfs.c new file mode 100644 index 000000000..435d1697c --- /dev/null +++ b/external/curl/src/tool_ipfs.c @@ -0,0 +1,296 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +#include "tool_setup.h" + +#define ENABLE_CURLX_PRINTF +/* use our own printf() functions */ +#include "curlx.h" +#include "dynbuf.h" + +#include "tool_cfgable.h" +#include "tool_msgs.h" +#include "tool_ipfs.h" + +#include "memdebug.h" /* keep this as LAST include */ + +/* ensure input ends in slash */ +static CURLcode ensure_trailing_slash(char **input) +{ + if(*input && **input) { + size_t len = strlen(*input); + if(((*input)[len - 1] != '/')) { + struct curlx_dynbuf dyn; + curlx_dyn_init(&dyn, len + 2); + + if(curlx_dyn_addn(&dyn, *input, len)) { + Curl_safefree(*input); + return CURLE_OUT_OF_MEMORY; + } + + Curl_safefree(*input); + + if(curlx_dyn_addn(&dyn, "/", 1)) + return CURLE_OUT_OF_MEMORY; + + *input = curlx_dyn_ptr(&dyn); + } + } + + return CURLE_OK; +} + +static char *ipfs_gateway(void) +{ + char *ipfs_path = NULL; + char *gateway_composed_file_path = NULL; + FILE *gateway_file = NULL; + char *gateway = curlx_getenv("IPFS_GATEWAY"); + + /* Gateway is found from environment variable. */ + if(gateway) { + if(ensure_trailing_slash(&gateway)) + goto fail; + return gateway; + } + + /* Try to find the gateway in the IPFS data folder. */ + ipfs_path = curlx_getenv("IPFS_PATH"); + + if(!ipfs_path) { + char *home = curlx_getenv("HOME"); + if(home && *home) + ipfs_path = aprintf("%s/.ipfs/", home); + /* fallback to "~/.ipfs", as that's the default location. */ + + Curl_safefree(home); + } + + if(!ipfs_path || ensure_trailing_slash(&ipfs_path)) + goto fail; + + gateway_composed_file_path = aprintf("%sgateway", ipfs_path); + + if(!gateway_composed_file_path) + goto fail; + + gateway_file = fopen(gateway_composed_file_path, FOPEN_READTEXT); + Curl_safefree(gateway_composed_file_path); + + if(gateway_file) { + int c; + struct curlx_dynbuf dyn; + curlx_dyn_init(&dyn, MAX_GATEWAY_URL_LEN); + + /* get the first line of the gateway file, ignore the rest */ + while((c = getc(gateway_file)) != EOF && c != '\n' && c != '\r') { + char c_char = (char)c; + if(curlx_dyn_addn(&dyn, &c_char, 1)) + goto fail; + } + + fclose(gateway_file); + gateway_file = NULL; + + if(curlx_dyn_len(&dyn)) + gateway = curlx_dyn_ptr(&dyn); + + if(gateway) + ensure_trailing_slash(&gateway); + + if(!gateway) + goto fail; + + Curl_safefree(ipfs_path); + + return gateway; + } +fail: + if(gateway_file) + fclose(gateway_file); + Curl_safefree(gateway); + Curl_safefree(ipfs_path); + return NULL; +} + +/* + * Rewrite ipfs:// and ipns:// to a HTTP(S) + * URL that can be handled by an IPFS gateway. + */ +CURLcode ipfs_url_rewrite(CURLU *uh, const char *protocol, char **url, + struct OperationConfig *config) +{ + CURLcode result = CURLE_URL_MALFORMAT; + CURLUcode getResult; + char *gateway = NULL; + char *gwhost = NULL; + char *gwpath = NULL; + char *gwquery = NULL; + char *gwscheme = NULL; + char *gwport = NULL; + char *inputpath = NULL; + char *cid = NULL; + char *pathbuffer = NULL; + char *cloneurl; + CURLU *gatewayurl = curl_url(); + + if(!gatewayurl) { + result = CURLE_FAILED_INIT; + goto clean; + } + + getResult = curl_url_get(uh, CURLUPART_HOST, &cid, CURLU_URLDECODE); + if(getResult || !cid) + goto clean; + + /* We might have a --ipfs-gateway argument. Check it first and use it. Error + * if we do have something but if it's an invalid url. + */ + if(config->ipfs_gateway) { + /* ensure the gateway ends in a trailing / */ + if(ensure_trailing_slash(&config->ipfs_gateway) != CURLE_OK) { + result = CURLE_OUT_OF_MEMORY; + goto clean; + } + + if(!curl_url_set(gatewayurl, CURLUPART_URL, config->ipfs_gateway, + CURLU_GUESS_SCHEME)) { + gateway = strdup(config->ipfs_gateway); + if(!gateway) { + result = CURLE_URL_MALFORMAT; + goto clean; + } + + } + else { + result = CURLE_BAD_FUNCTION_ARGUMENT; + goto clean; + } + } + else { + /* this is ensured to end in a trailing / within ipfs_gateway() */ + gateway = ipfs_gateway(); + if(!gateway) { + result = CURLE_FILE_COULDNT_READ_FILE; + goto clean; + } + + if(curl_url_set(gatewayurl, CURLUPART_URL, gateway, 0)) { + result = CURLE_URL_MALFORMAT; + goto clean; + } + } + + /* check for unsupported gateway parts */ + if(curl_url_get(gatewayurl, CURLUPART_QUERY, &gwquery, 0) + != CURLUE_NO_QUERY) { + result = CURLE_URL_MALFORMAT; + goto clean; + } + + /* get gateway parts */ + if(curl_url_get(gatewayurl, CURLUPART_HOST, + &gwhost, CURLU_URLDECODE)) { + goto clean; + } + + if(curl_url_get(gatewayurl, CURLUPART_SCHEME, + &gwscheme, CURLU_URLDECODE)) { + goto clean; + } + + curl_url_get(gatewayurl, CURLUPART_PORT, &gwport, CURLU_URLDECODE); + curl_url_get(gatewayurl, CURLUPART_PATH, &gwpath, CURLU_URLDECODE); + + /* get the path from user input */ + curl_url_get(uh, CURLUPART_PATH, &inputpath, CURLU_URLDECODE); + /* inputpath might be NULL or a valid pointer now */ + + /* set gateway parts in input url */ + if(curl_url_set(uh, CURLUPART_SCHEME, gwscheme, CURLU_URLENCODE) || + curl_url_set(uh, CURLUPART_HOST, gwhost, CURLU_URLENCODE) || + curl_url_set(uh, CURLUPART_PORT, gwport, CURLU_URLENCODE)) + goto clean; + + /* if the input path is just a slash, clear it */ + if(inputpath && (inputpath[0] == '/') && !inputpath[1]) + *inputpath = '\0'; + + /* ensure the gateway path ends with a trailing slash */ + ensure_trailing_slash(&gwpath); + + pathbuffer = aprintf("%s%s/%s%s", gwpath, protocol, cid, + inputpath ? inputpath : ""); + if(!pathbuffer) { + goto clean; + } + + if(curl_url_set(uh, CURLUPART_PATH, pathbuffer, CURLU_URLENCODE)) { + goto clean; + } + + /* Free whatever it has now, rewriting is next */ + Curl_safefree(*url); + + if(curl_url_get(uh, CURLUPART_URL, &cloneurl, CURLU_URLENCODE)) { + goto clean; + } + /* we need to strdup the URL so that we can call free() on it later */ + *url = strdup(cloneurl); + curl_free(cloneurl); + if(!*url) + goto clean; + + result = CURLE_OK; + +clean: + free(gateway); + curl_free(gwhost); + curl_free(gwpath); + curl_free(gwquery); + curl_free(inputpath); + curl_free(gwscheme); + curl_free(gwport); + curl_free(cid); + curl_free(pathbuffer); + curl_url_cleanup(gatewayurl); + { + const char *msg = NULL; + switch(result) { + case CURLE_URL_MALFORMAT: + msg = "malformed target URL"; + break; + case CURLE_FILE_COULDNT_READ_FILE: + msg = "IPFS automatic gateway detection failed"; + break; + case CURLE_BAD_FUNCTION_ARGUMENT: + msg = "--ipfs-gateway was given a malformed URL"; + break; + default: + break; + } + if(msg) + helpf(tool_stderr, msg); + } + return result; +} diff --git a/external/curl/tests/libtest/sethostname.h b/external/curl/src/tool_ipfs.h similarity index 70% rename from external/curl/tests/libtest/sethostname.h rename to external/curl/src/tool_ipfs.h index 1ffcba110..9c8a83e3b 100644 --- a/external/curl/tests/libtest/sethostname.h +++ b/external/curl/src/tool_ipfs.h @@ -1,3 +1,5 @@ +#ifndef HEADER_CURL_TOOL_IPFS_H +#define HEADER_CURL_TOOL_IPFS_H /*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | @@ -21,22 +23,11 @@ * SPDX-License-Identifier: curl * ***************************************************************************/ +#include "tool_setup.h" -#ifdef CURL_STATICLIB -# define LIBHOSTNAME_EXTERN -#elif defined(WIN32) -# define LIBHOSTNAME_EXTERN __declspec(dllexport) -#elif defined(CURL_HIDDEN_SYMBOLS) -# define LIBHOSTNAME_EXTERN CURL_EXTERN_SYMBOL -#else -# define LIBHOSTNAME_EXTERN -#endif +#define MAX_GATEWAY_URL_LEN 10000 -#ifdef USE_WINSOCK -# define FUNCALLCONV __stdcall -#else -# define FUNCALLCONV -#endif +CURLcode ipfs_url_rewrite(CURLU *uh, const char *protocol, char **url, + struct OperationConfig *config); -LIBHOSTNAME_EXTERN int FUNCALLCONV - gethostname(char *name, GETHOSTNAME_TYPE_ARG2 namelen); +#endif /* HEADER_CURL_TOOL_IPFS_H */ diff --git a/external/curl/src/tool_main.c b/external/curl/src/tool_main.c index 2f132e2d2..446806ecb 100644 --- a/external/curl/src/tool_main.c +++ b/external/curl/src/tool_main.c @@ -25,7 +25,7 @@ #include -#ifdef WIN32 +#ifdef _WIN32 #include #endif @@ -220,6 +220,7 @@ static void main_free(struct GlobalConfig *config) #ifdef _UNICODE #if defined(__GNUC__) /* GCC doesn't know about wmain() */ +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wmissing-prototypes" #pragma GCC diagnostic ignored "-Wmissing-declarations" #endif @@ -234,7 +235,7 @@ int main(int argc, char *argv[]) tool_init_stderr(); -#ifdef WIN32 +#ifdef _WIN32 /* Undocumented diagnostic option to list the full paths of all loaded modules. This is purposely pre-init. */ if(argc == 2 && !_tcscmp(argv[1], _T("--dump-module-paths"))) { @@ -275,7 +276,7 @@ int main(int argc, char *argv[]) main_free(&global); } -#ifdef WIN32 +#ifdef _WIN32 /* Flush buffers of all streams opened in write or update mode */ fflush(NULL); #endif @@ -287,4 +288,10 @@ int main(int argc, char *argv[]) #endif } +#ifdef _UNICODE +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif +#endif + #endif /* ndef UNITTESTS */ diff --git a/external/curl/src/tool_operate.c b/external/curl/src/tool_operate.c index 4991186eb..c805b7732 100644 --- a/external/curl/src/tool_operate.c +++ b/external/curl/src/tool_operate.c @@ -81,6 +81,7 @@ #include "tool_help.h" #include "tool_hugehelp.h" #include "tool_progress.h" +#include "tool_ipfs.h" #include "dynbuf.h" #include "memdebug.h" /* keep this as LAST include */ @@ -210,7 +211,7 @@ static curl_off_t all_pers; static CURLcode add_per_transfer(struct per_transfer **per) { struct per_transfer *p; - p = calloc(sizeof(struct per_transfer), 1); + p = calloc(1, sizeof(struct per_transfer)); if(!p) return CURLE_OUT_OF_MEMORY; if(!transfers) @@ -462,7 +463,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global, } } -#ifdef WIN32 +#ifdef _WIN32 /* Discard incomplete UTF-8 sequence buffered from body */ if(outs->utf8seq[0]) memset(outs->utf8seq, 0, sizeof(outs->utf8seq)); @@ -697,197 +698,6 @@ static CURLcode post_per_transfer(struct GlobalConfig *global, return result; } -static char *ipfs_gateway(void) -{ - char *gateway = NULL; - char *ipfs_path = NULL; - char *gateway_composed_file_path = NULL; - FILE *gateway_file = NULL; - - gateway = getenv("IPFS_GATEWAY"); - - /* Gateway is found from environment variable. */ - if(gateway && *gateway) { - char *composed_gateway = NULL; - bool add_slash = (gateway[strlen(gateway) - 1] != '/'); - composed_gateway = aprintf("%s%s", gateway, (add_slash) ? "/" : ""); - if(composed_gateway) { - gateway = aprintf("%s", composed_gateway); - Curl_safefree(composed_gateway); - } - return gateway; - } - else - /* a blank string does not count */ - gateway = NULL; - - /* Try to find the gateway in the IPFS data folder. */ - ipfs_path = getenv("IPFS_PATH"); - - if(!ipfs_path) { - char *home = getenv("HOME"); - if(home && *home) - ipfs_path = aprintf("%s/.ipfs/", home); - /* fallback to "~/.ipfs", as that's the default location. */ - } - - if(!ipfs_path) { - Curl_safefree(gateway); - Curl_safefree(ipfs_path); - return NULL; - } - - gateway_composed_file_path = aprintf("%sgateway", ipfs_path); - - if(!gateway_composed_file_path) { - Curl_safefree(gateway); - Curl_safefree(ipfs_path); - return NULL; - } - - gateway_file = fopen(gateway_composed_file_path, FOPEN_READTEXT); - Curl_safefree(gateway_composed_file_path); - - if(gateway_file) { - char *buf = NULL; - - if((PARAM_OK == file2string(&buf, gateway_file)) && buf && *buf) { - bool add_slash = (buf[strlen(buf) - 1] != '/'); - gateway = aprintf("%s%s", buf, (add_slash) ? "/" : ""); - } - Curl_safefree(buf); - - if(gateway_file) - fclose(gateway_file); - - if(!gateway) { - Curl_safefree(gateway); - Curl_safefree(ipfs_path); - return NULL; - } - - Curl_safefree(ipfs_path); - return gateway; - } - - Curl_safefree(gateway); - Curl_safefree(ipfs_path); - return NULL; -} - -/* - * Rewrite ipfs:// and ipns:// to a HTTP(S) - * URL that can be handled by an IPFS gateway. - */ -static CURLcode ipfs_url_rewrite(CURLU *uh, const char *protocol, char **url, - struct OperationConfig *config) -{ - CURLcode result = CURLE_URL_MALFORMAT; - CURLUcode urlGetResult; - char *gateway = NULL; - char *cid = NULL; - char *pathbuffer = NULL; - CURLU *ipfsurl = curl_url(); - - if(!ipfsurl) { - result = CURLE_FAILED_INIT; - goto clean; - } - - urlGetResult = curl_url_get(uh, CURLUPART_HOST, &cid, CURLU_URLDECODE); - - if(urlGetResult) { - goto clean; - } - - if(!cid) { - goto clean; - } - - /* We might have a --ipfs-gateway argument. Check it first and use it. Error - * if we do have something but if it's an invalid url. - */ - if(config->ipfs_gateway) { - if(curl_url_set(ipfsurl, CURLUPART_URL, config->ipfs_gateway, - CURLU_GUESS_SCHEME) - == CURLUE_OK) { - gateway = strdup(config->ipfs_gateway); - if(!gateway) { - result = CURLE_URL_MALFORMAT; - goto clean; - } - - } - else { - result = CURLE_BAD_FUNCTION_ARGUMENT; - goto clean; - } - } - else { - gateway = ipfs_gateway(); - if(!gateway) { - result = CURLE_FILE_COULDNT_READ_FILE; - goto clean; - } - - if(curl_url_set(ipfsurl, CURLUPART_URL, gateway, CURLU_GUESS_SCHEME - | CURLU_NON_SUPPORT_SCHEME) != CURLUE_OK) { - goto clean; - } - } - - pathbuffer = aprintf("%s/%s", protocol, cid); - if(!pathbuffer) { - goto clean; - } - - if(curl_url_set(ipfsurl, CURLUPART_PATH, pathbuffer, CURLU_URLENCODE) - != CURLUE_OK) { - goto clean; - } - - /* Free whatever it has now, rewriting is next */ - Curl_safefree(*url); - - if(curl_url_get(ipfsurl, CURLUPART_URL, url, CURLU_URLENCODE) - != CURLUE_OK) { - goto clean; - } - - result = CURLE_OK; - -clean: - free(gateway); - curl_free(cid); - curl_free(pathbuffer); - curl_url_cleanup(ipfsurl); - - switch(result) { - case CURLE_URL_MALFORMAT: - helpf(tool_stderr, "malformed URL. Visit https://curl.se/" - "docs/ipfs.html#Gateway-file-and-" - "environment-variable for more " - "information"); - break; - case CURLE_FILE_COULDNT_READ_FILE: - helpf(tool_stderr, "IPFS automatic gateway detection " - "failure. Visit https://curl.se/docs/" - "ipfs.html#Malformed-gateway-URL for " - "more information"); - break; - case CURLE_BAD_FUNCTION_ARGUMENT: - helpf(tool_stderr, "--ipfs-gateway argument results in " - "malformed URL. Visit https://curl.se/" - "docs/ipfs.html#Malformed-gateway-URL " - "for more information"); - break; - default: - break; - } - - return result; -} - /* * Return the protocol token for the scheme used in the given URL */ @@ -911,13 +721,13 @@ static CURLcode url_proto(char **url, if(curl_strequal(schemep, proto_ipfs) || curl_strequal(schemep, proto_ipns)) { result = ipfs_url_rewrite(uh, schemep, url, config); - /* short-circuit proto_token, we know it's ipfs or ipns */ if(curl_strequal(schemep, proto_ipfs)) proto = proto_ipfs; else if(curl_strequal(schemep, proto_ipns)) proto = proto_ipns; - + if(result) + config->synthetic_error = TRUE; } else proto = proto_token(schemep); @@ -1776,7 +1586,8 @@ static CURLcode single_transfer(struct GlobalConfig *global, (config->proxy_capath ? config->proxy_capath : config->capath)); - if(result == CURLE_NOT_BUILT_IN) { + if((result == CURLE_NOT_BUILT_IN) || + (result == CURLE_UNKNOWN_OPTION)) { if(config->proxy_capath) { warnf(global, "ignoring --proxy-capath, not supported by libcurl"); @@ -2825,7 +2636,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global, if(env) curl_free(env); -#ifdef WIN32 +#ifdef _WIN32 else { result = FindWin32CACert(config, tls_backend_info->backend, TEXT("curl-ca-bundle.crt")); diff --git a/external/curl/src/tool_operate.h b/external/curl/src/tool_operate.h index 21a7f929d..4993b1c96 100644 --- a/external/curl/src/tool_operate.h +++ b/external/curl/src/tool_operate.h @@ -74,7 +74,7 @@ struct per_transfer { /* NULL or malloced */ char *uploadfile; - char *errorbuffer; /* alloced and assigned while this is used for a + char *errorbuffer; /* allocated and assigned while this is used for a transfer */ }; diff --git a/external/curl/src/tool_operhlp.c b/external/curl/src/tool_operhlp.c index a964d796d..d1e8352d8 100644 --- a/external/curl/src/tool_operhlp.c +++ b/external/curl/src/tool_operhlp.c @@ -215,7 +215,7 @@ CURLcode get_url_file_name(char **filename, const char *url) if(!*filename) return CURLE_OUT_OF_MEMORY; -#if defined(MSDOS) || defined(WIN32) +#if defined(_WIN32) || defined(MSDOS) { char *sanitized; SANITIZEcode sc = sanitize_file_name(&sanitized, *filename, 0); @@ -227,7 +227,7 @@ CURLcode get_url_file_name(char **filename, const char *url) } *filename = sanitized; } -#endif /* MSDOS || WIN32 */ +#endif /* _WIN32 || MSDOS */ /* in case we built debug enabled, we allow an environment variable * named CURL_TESTDIR to prefix the given file name to put it into a diff --git a/external/curl/src/tool_parsecfg.c b/external/curl/src/tool_parsecfg.c index c15f21043..da4870066 100644 --- a/external/curl/src/tool_parsecfg.c +++ b/external/curl/src/tool_parsecfg.c @@ -46,7 +46,7 @@ static const char *unslashquote(const char *line, char *param); #define MAX_CONFIG_LINE_LENGTH (10*1024*1024) static bool my_get_line(FILE *fp, struct curlx_dynbuf *, bool *error); -#ifdef WIN32 +#ifdef _WIN32 static FILE *execpath(const char *filename, char **pathp) { static char filebuffer[512]; @@ -98,7 +98,7 @@ int parseconfig(const char *filename, struct GlobalConfig *global) } filename = pathalloc = curlrc; } -#ifdef WIN32 /* Windows */ +#ifdef _WIN32 /* Windows */ else { char *fullp; /* check for .curlrc then _curlrc in the dir of the executable */ @@ -210,8 +210,9 @@ int parseconfig(const char *filename, struct GlobalConfig *global) break; default: warnf(operation->global, "%s:%d: warning: '%s' uses unquoted " - "whitespace in the line that may cause side-effects", - filename, lineno, option); + "whitespace", filename, lineno, option); + warnf(operation->global, "This may cause side-effects. " + "Consider using double quotes?"); } } if(!*param) diff --git a/external/curl/src/tool_sdecls.h b/external/curl/src/tool_sdecls.h index 7b2eb2338..b93c32462 100644 --- a/external/curl/src/tool_sdecls.h +++ b/external/curl/src/tool_sdecls.h @@ -71,7 +71,7 @@ struct OutStruct { FILE *stream; curl_off_t bytes; curl_off_t init; -#ifdef WIN32 +#ifdef _WIN32 unsigned char utf8seq[5]; #endif }; diff --git a/external/curl/src/tool_setup.h b/external/curl/src/tool_setup.h index 48b355640..c69859ea6 100644 --- a/external/curl/src/tool_setup.h +++ b/external/curl/src/tool_setup.h @@ -66,10 +66,12 @@ extern FILE *tool_stderr; # include "tool_strdup.h" #endif -#if defined(WIN32) && !defined(MSDOS) +#if defined(_WIN32) /* set in win32_init() */ extern LARGE_INTEGER tool_freq; extern bool tool_isVistaOrGreater; +/* set in init_terminal() */ +extern bool tool_term_has_bold; #endif #endif /* HEADER_CURL_TOOL_SETUP_H */ diff --git a/external/curl/src/tool_sleep.c b/external/curl/src/tool_sleep.c index 08d6f9028..c24f73729 100644 --- a/external/curl/src/tool_sleep.c +++ b/external/curl/src/tool_sleep.c @@ -47,7 +47,7 @@ void tool_go_sleep(long ms) { #if defined(MSDOS) delay(ms); -#elif defined(WIN32) +#elif defined(_WIN32) Sleep(ms); #elif defined(HAVE_POLL_FINE) (void)poll((void *)0, 0, (int)ms); diff --git a/external/curl/src/tool_urlglob.c b/external/curl/src/tool_urlglob.c index 69016179d..e45c7d10b 100644 --- a/external/curl/src/tool_urlglob.c +++ b/external/curl/src/tool_urlglob.c @@ -66,13 +66,23 @@ static CURLcode glob_fixed(struct URLGlob *glob, char *fixed, size_t len) */ static int multiply(curl_off_t *amount, curl_off_t with) { - curl_off_t sum = *amount * with; - if(!with) { - *amount = 0; - return 0; + curl_off_t sum; + DEBUGASSERT(*amount >= 0); + DEBUGASSERT(with >= 0); + if((with <= 0) || (*amount <= 0)) { + sum = 0; + } + else { +#if defined(__GNUC__) && \ + ((__GNUC__ > 5) || ((__GNUC__ == 5) && (__GNUC_MINOR__ >= 1))) + if(__builtin_mul_overflow(*amount, with, &sum)) + return 1; +#else + sum = *amount * with; + if(sum/with != *amount) + return 1; /* didn't fit, bail out */ +#endif } - if(sum/with != *amount) - return 1; /* didn't fit, bail out */ *amount = sum; return 0; } @@ -692,7 +702,7 @@ CURLcode glob_match_url(char **result, char *filename, struct URLGlob *glob) if(curlx_dyn_addn(&dyn, "", 0)) return CURLE_OUT_OF_MEMORY; -#if defined(MSDOS) || defined(WIN32) +#if defined(_WIN32) || defined(MSDOS) { char *sanitized; SANITIZEcode sc = sanitize_file_name(&sanitized, curlx_dyn_ptr(&dyn), @@ -707,5 +717,5 @@ CURLcode glob_match_url(char **result, char *filename, struct URLGlob *glob) #else *result = curlx_dyn_ptr(&dyn); return CURLE_OK; -#endif /* MSDOS || WIN32 */ +#endif /* _WIN32 || MSDOS */ } diff --git a/external/curl/src/tool_util.c b/external/curl/src/tool_util.c index 7a1c03b20..812a689d0 100644 --- a/external/curl/src/tool_util.c +++ b/external/curl/src/tool_util.c @@ -31,7 +31,7 @@ #include "memdebug.h" /* keep this as LAST include */ -#if defined(WIN32) && !defined(MSDOS) +#if defined(_WIN32) /* In case of bug fix this function has a counterpart in timeval.c */ struct timeval tvnow(void) diff --git a/external/curl/src/tool_version.h b/external/curl/src/tool_version.h index d8f2f65f8..2eca403c4 100644 --- a/external/curl/src/tool_version.h +++ b/external/curl/src/tool_version.h @@ -27,7 +27,7 @@ #define CURL_NAME "curl" #define CURL_COPYRIGHT LIBCURL_COPYRIGHT -#define CURL_VERSION "8.4.0" +#define CURL_VERSION "8.5.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/external/curl/src/tool_writeout_json.c b/external/curl/src/tool_writeout_json.c index 7bc74a269..4ed6b93fb 100644 --- a/external/curl/src/tool_writeout_json.c +++ b/external/curl/src/tool_writeout_json.c @@ -41,8 +41,8 @@ int jsonquoted(const char *in, size_t len, struct curlx_dynbuf *out, bool lowercase) { - const char *i = in; - const char *in_end = &in[len]; + const unsigned char *i = (unsigned char *)in; + const unsigned char *in_end = &i[len]; CURLcode result = CURLE_OK; for(; (i < in_end) && !result; i++) { diff --git a/external/curl/src/tool_xattr.c b/external/curl/src/tool_xattr.c index 968cf2f72..9472194fa 100644 --- a/external/curl/src/tool_xattr.c +++ b/external/curl/src/tool_xattr.c @@ -87,11 +87,12 @@ static int xattr(int fd, int err = 0; if(value) { #ifdef DEBUGBUILD + (void)fd; if(getenv("CURL_FAKE_XATTR")) { printf("%s => %s\n", attr, value); } return 0; -#endif +#else #ifdef HAVE_FSETXATTR_6 err = fsetxattr(fd, attr, value, strlen(value), 0, 0); #elif defined(HAVE_FSETXATTR_5) @@ -104,6 +105,7 @@ static int xattr(int fd, attribute */ err = (rc < 0 ? -1 : 0); } +#endif #endif } return err; diff --git a/external/curl/src/var.c b/external/curl/src/var.c index f8f42f666..388d45592 100644 --- a/external/curl/src/var.c +++ b/external/curl/src/var.c @@ -358,7 +358,7 @@ static ParameterError addvariable(struct GlobalConfig *global, if(check) notef(global, "Overwriting variable '%s'", check->name); - p = calloc(sizeof(struct var), 1); + p = calloc(1, sizeof(struct var)); if(!p) return PARAM_NO_MEM; diff --git a/external/curl/tests/README.md b/external/curl/tests/README.md index 65af2a0bd..1464eacdc 100644 --- a/external/curl/tests/README.md +++ b/external/curl/tests/README.md @@ -8,6 +8,41 @@ SPDX-License-Identifier: curl # Running + See the "Requires to run" section for prerequisites. + + In the root of the curl repository: + + ./configure && make && make test + + To run a specific set of tests (e.g. 303 and 410): + + make test TFLAGS="303 410" + + To run the tests faster, pass the -j (parallelism) flag: + + make test TFLAGS="-j10" + + "make test" builds the test suite support code and invokes the 'runtests.pl' + perl script to run all the tests. The value of `TFLAGS` is passed + directly to 'runtests.pl'. + + When you run tests via make, the flags `-a` and `-s` are passed, meaning + to continue running tests even after one fails, and to emit short output. + + If you'd like to not use those flags, you can run 'runtests.pl' directly. + You must `chdir` into the tests directory, then you can run it like so: + + ./runtests.pl 303 410 + + You must have run `make test` at least once first to build the support code. + + To see what flags are available for runtests.pl, and what output it emits, run: + + man ./tests/runtests.1 + + After a test fails, examine the tests/log directory for stdout, stderr, and + output from the servers used in the test. + ## Requires to run - perl (and a unix-style shell) @@ -15,7 +50,7 @@ SPDX-License-Identifier: curl - python-impacket (for SMB tests) - diff (when a test fails, a diff is shown) - stunnel (for HTTPS and FTPS tests) - - OpenSSH or SunSSH (for SCP, SFTP and SOCKS4/5 tests) + - OpenSSH or SunSSH (for SCP and SFTP tests) - nghttpx (for HTTP/2 and HTTP/3 tests) - nroff (for --manual tests) - An available `en_US.UTF-8` locale @@ -59,9 +94,7 @@ SPDX-License-Identifier: curl The test suite runs stand-alone servers on random ports to which it makes requests. For SSL tests, it runs stunnel to handle encryption to the regular - servers. For SSH, it runs a standard OpenSSH server. For SOCKS4/5 tests SSH - is used to perform the SOCKS functionality and requires a SSH client and - server. + servers. For SSH, it runs a standard OpenSSH server. The listen port numbers for the test servers are picked randomly to allow users to run multiple test cases concurrently and to not collide with other @@ -75,47 +108,9 @@ SPDX-License-Identifier: curl used, set the environment variable `NGHTTPX`. The default can also be changed by specifying `--with-test-nghttpx=` as argument to `configure`. -### Run - - `./configure && make && make test`. This builds the test suite support code - and invokes the 'runtests.pl' perl script to run all the tests. Edit the top - variables of that script in case you have some specific needs, or run the - script manually (after the support code has been built). - - The script breaks on the first test that doesn't do OK. Use `-a` to prevent - the script from aborting on the first error. Run the script with `-v` for - more verbose output. Use `-d` to run the test servers with debug output - enabled as well. Specifying `-k` keeps all the log files generated by the - test intact. - - Use `-s` for shorter output, or pass test numbers to run specific tests only - (like `./runtests.pl 3 4` to test 3 and 4 only). It also supports test case - ranges with 'to', as in `./runtests.pl 3 to 9` which runs the seven tests - from 3 to 9. Any test numbers starting with ! are disabled, as are any test - numbers found in the files `data/DISABLED` or `data/DISABLED.local` (one per - line). The latter is meant for local temporary disables and will be ignored - by git. - - Test cases mentioned in `DISABLED` can still be run if `-f` is provided. - - When `-s` is not present, each successful test will display on one line the - test number and description and on the next line a set of flags, the test - result, current test sequence, total number of tests to be run and an - estimated amount of time to complete the test run. The flags consist of - these letters describing what is checked in this test: - - s stdout - d data - u upload - p protocol - o output - e exit code - m memory - v valgrind - ### Shell startup scripts - Tests which use the ssh test server, SCP/SFTP/SOCKS tests, might be badly + Tests which use the ssh test server, SCP/SFTP tests, might be badly influenced by the output of system wide or user specific shell startup scripts, .bashrc, .profile, /etc/csh.cshrc, .login, /etc/bashrc, etc. which output text messages or escape sequences on user login. When these shell diff --git a/external/curl/tests/data/DISABLED b/external/curl/tests/data/DISABLED index 308d27e5a..b077c67a0 100644 --- a/external/curl/tests/data/DISABLED +++ b/external/curl/tests/data/DISABLED @@ -70,9 +70,6 @@ 266 579 587 -722 -724 -727 # 1021 re-added here due to flakiness 1021 1117 diff --git a/external/curl/tests/data/Makefile.in b/external/curl/tests/data/Makefile.in index b03165e98..4a0937e2f 100644 --- a/external/curl/tests/data/Makefile.in +++ b/external/curl/tests/data/Makefile.in @@ -418,7 +418,7 @@ test226 test227 test228 test229 test230 test231 test232 test233 test234 \ test235 test236 test237 test238 test239 test240 test241 test242 test243 \ test244 test245 test246 test247 test248 test249 test250 test251 test252 \ test253 test254 test255 test256 test257 test258 test259 test260 test261 \ -test262 test263 test264 test265 test266 test267 test269 test270 \ +test262 test263 test264 test265 test266 test267 test268 test269 test270 \ test271 test272 test273 test274 test275 test276 test277 test278 test279 \ test280 test281 test282 test283 test284 test285 test286 test287 test288 \ test289 test290 test291 test292 test293 test294 test295 test296 test297 \ @@ -439,7 +439,7 @@ test417 test418 test419 test420 test421 test422 test423 test424 test425 \ test426 test427 test428 test429 test430 test431 test432 test433 test434 \ test435 test436 test437 test438 test439 test440 test441 test442 test443 \ test444 test445 test446 test447 test448 test449 test450 test451 test452 \ -test453 test454 test455 test456 test457 test458 \ +test453 test454 test455 test456 test457 test458 test459 \ \ test490 test491 test492 test493 test494 test495 test496 test497 test498 \ \ @@ -468,7 +468,8 @@ test681 test682 test683 test684 test685 test686 test687 test688 \ test700 test701 test702 test703 test704 test705 test706 test707 test708 \ test709 test710 test711 test712 test713 test714 test715 test716 test717 \ test718 test719 test720 test721 test722 test723 test724 test725 test726 \ -test727 test728 \ +test727 test728 test729 test730 test731 test732 test733 test734 test735 \ +test736 test737 test738 test739 test740 test741 \ \ test799 test800 test801 test802 test803 test804 test805 test806 test807 \ test808 test809 test810 test811 test812 test813 test814 test815 test816 \ @@ -552,14 +553,14 @@ test1439 test1440 test1441 test1442 test1443 test1444 test1445 test1446 \ test1447 test1448 test1449 test1450 test1451 test1452 test1453 test1454 \ test1455 test1456 test1457 test1458 test1459 test1460 test1461 test1462 \ test1463 test1464 test1465 test1466 test1467 test1468 test1469 test1470 \ -test1471 test1472 test1473 test1474 \ +test1471 test1472 test1473 test1474 test1475 test1476 test1477 \ \ test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \ test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \ test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \ test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \ test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \ -test1540 test1542 test1543 test1544 \ +test1540 test1542 test1543 test1544 test1545 \ \ test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \ test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \ @@ -585,7 +586,7 @@ test1700 test1701 test1702 test1703 \ \ test1800 test1801 \ \ - test1903 test1904 test1905 test1906 test1907 \ +test1900 test1903 test1904 test1905 test1906 test1907 \ test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \ test1916 test1917 test1918 test1919 \ \ diff --git a/external/curl/tests/data/Makefile.inc b/external/curl/tests/data/Makefile.inc index 1472b1954..de13c525e 100644 --- a/external/curl/tests/data/Makefile.inc +++ b/external/curl/tests/data/Makefile.inc @@ -51,7 +51,7 @@ test226 test227 test228 test229 test230 test231 test232 test233 test234 \ test235 test236 test237 test238 test239 test240 test241 test242 test243 \ test244 test245 test246 test247 test248 test249 test250 test251 test252 \ test253 test254 test255 test256 test257 test258 test259 test260 test261 \ -test262 test263 test264 test265 test266 test267 test269 test270 \ +test262 test263 test264 test265 test266 test267 test268 test269 test270 \ test271 test272 test273 test274 test275 test276 test277 test278 test279 \ test280 test281 test282 test283 test284 test285 test286 test287 test288 \ test289 test290 test291 test292 test293 test294 test295 test296 test297 \ @@ -72,7 +72,7 @@ test417 test418 test419 test420 test421 test422 test423 test424 test425 \ test426 test427 test428 test429 test430 test431 test432 test433 test434 \ test435 test436 test437 test438 test439 test440 test441 test442 test443 \ test444 test445 test446 test447 test448 test449 test450 test451 test452 \ -test453 test454 test455 test456 test457 test458 \ +test453 test454 test455 test456 test457 test458 test459 \ \ test490 test491 test492 test493 test494 test495 test496 test497 test498 \ \ @@ -101,7 +101,8 @@ test681 test682 test683 test684 test685 test686 test687 test688 \ test700 test701 test702 test703 test704 test705 test706 test707 test708 \ test709 test710 test711 test712 test713 test714 test715 test716 test717 \ test718 test719 test720 test721 test722 test723 test724 test725 test726 \ -test727 test728 \ +test727 test728 test729 test730 test731 test732 test733 test734 test735 \ +test736 test737 test738 test739 test740 test741 \ \ test799 test800 test801 test802 test803 test804 test805 test806 test807 \ test808 test809 test810 test811 test812 test813 test814 test815 test816 \ @@ -185,14 +186,14 @@ test1439 test1440 test1441 test1442 test1443 test1444 test1445 test1446 \ test1447 test1448 test1449 test1450 test1451 test1452 test1453 test1454 \ test1455 test1456 test1457 test1458 test1459 test1460 test1461 test1462 \ test1463 test1464 test1465 test1466 test1467 test1468 test1469 test1470 \ -test1471 test1472 test1473 test1474 \ +test1471 test1472 test1473 test1474 test1475 test1476 test1477 \ \ test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \ test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \ test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \ test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \ test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \ -test1540 test1542 test1543 test1544 \ +test1540 test1542 test1543 test1544 test1545 \ \ test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \ test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \ @@ -218,7 +219,7 @@ test1700 test1701 test1702 test1703 \ \ test1800 test1801 \ \ - test1903 test1904 test1905 test1906 test1907 \ +test1900 test1903 test1904 test1905 test1906 test1907 \ test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \ test1916 test1917 test1918 test1919 \ \ diff --git a/external/curl/tests/data/test1475 b/external/curl/tests/data/test1475 new file mode 100644 index 000000000..f88ef74ee --- /dev/null +++ b/external/curl/tests/data/test1475 @@ -0,0 +1,83 @@ + +# also verified by 1156 in libcurl API terms + + + +HTTP +HTTP GET +Resume + + + +# Server-side + + +HTTP/1.1 416 Invalid range +Connection: close +Content-Length: 0 +Content-Range: */100 + + + +# The file data that exists at the start of the test must be included in +# the verification. + +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +HTTP/1.1 416 Invalid range +Connection: close +Content-Length: 0 +Content-Range: */100 + + + + + +# Client-side + + +http + + +http + + +-f and 416 with Content-Range: */size + + +http://%HOSTIP:%HTTPPORT/%TESTNUMBER -C - -f + + +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 +012345678 + + + +# Verify data after the test has been "shot" + + +GET /%TESTNUMBER HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Range: bytes=100- +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test1476 b/external/curl/tests/data/test1476 new file mode 100644 index 000000000..101fa95b0 --- /dev/null +++ b/external/curl/tests/data/test1476 @@ -0,0 +1,59 @@ + + + +HTTP +HTTP GET +cookies + + + +# Server-side + + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Content-Length: 0 +Set-Cookie: super=oops; domain=co.UK; path=/ +Set-Cookie: fine=yesyes; domain=CURL.CO.UK; path=/ + + + + +# Client-side + + +http + + +PSL violating cookie with mixed case domain and cookie domain property + + +-x http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://curl.co.UK -c %LOGDIR/cookies%TESTNUMBER.txt + + +proxy +PSL +cookies + + + +# Verify data after the test has been "shot" + + +GET http://curl.co.UK/ HTTP/1.1 +Host: curl.co.UK +User-Agent: curl/%VERSION +Accept: */* +Proxy-Connection: Keep-Alive + + + +# Netscape HTTP Cookie File +# https://curl.se/docs/http-cookies.html +# This file was generated by libcurl! Edit at your own risk. + +.CURL.CO.UK TRUE / FALSE 0 fine yesyes + + + diff --git a/external/curl/tests/data/test1477 b/external/curl/tests/data/test1477 new file mode 100644 index 000000000..2771d7f1d --- /dev/null +++ b/external/curl/tests/data/test1477 @@ -0,0 +1,30 @@ + + + +documentation + + + +# +# Client-side + + +none + + + +Verify that error codes in headers and libcurl-errors.3 are in sync + + + +%SRCDIR/errorcodes.pl %SRCDIR/.. + + + + + +Result + + + + diff --git a/external/curl/tests/data/test1506 b/external/curl/tests/data/test1506 index 9eb38cf6d..0a62c0c2a 100644 --- a/external/curl/tests/data/test1506 +++ b/external/curl/tests/data/test1506 @@ -86,7 +86,6 @@ Accept: */* * Connection #0 to host server1.example.com left intact * Connection #1 to host server2.example.com left intact * Connection #2 to host server3.example.com left intact -* Closing connection * Connection #3 to host server4.example.com left intact diff --git a/external/curl/tests/data/test1545 b/external/curl/tests/data/test1545 new file mode 100644 index 000000000..477b5bf44 --- /dev/null +++ b/external/curl/tests/data/test1545 @@ -0,0 +1,38 @@ + + + +HTTP +HTTP GET + + +# +# Server-side + + + +# Client-side + + +form-api + + +http + +# tool is what to use instead of 'curl' + +lib%TESTNUMBER + + + +use curl_formadd() data twice with unreadable file + + +http://%HOSTIP:%HTTPPORT/%TESTNUMBER + + + +# +# Verify data after the test has been "shot" + + + diff --git a/external/curl/tests/data/test1683 b/external/curl/tests/data/test1683 index 178b4054d..581470dfc 100644 --- a/external/curl/tests/data/test1683 +++ b/external/curl/tests/data/test1683 @@ -40,11 +40,9 @@ to stay the same perl -e 'for my $i ((1..100)) { my $filename = "%LOGDIR/exist%TESTNUMBER.$i"; open(FH, ">", $filename) or die $!; print FH "to stay the same" ; close(FH) }' -# python3 -c 'for i in range(1, 101): open("%LOGDIR/exist%TESTNUMBER.{}".format(i), mode="w").write("to stay the same")' perl -e 'for my $i ((1..100)) { my $filename = "%LOGDIR/exist%TESTNUMBER.$i"; open(FH, "<", $filename) or die $!; ( eq "to stay the same" and eq "") or die "incorrect $filename" ; close(FH) }' -# python3 -c 'for i in range(1, 101): assert open("%LOGDIR/exist%TESTNUMBER.{}".format(i), mode="r").read(17) == "to stay the same"' diff --git a/external/curl/tests/data/test1900 b/external/curl/tests/data/test1900 new file mode 100644 index 000000000..f04e7e2af --- /dev/null +++ b/external/curl/tests/data/test1900 @@ -0,0 +1,38 @@ + + + +HTTP +HSTS + + + +# Server-side + + + +# Client-side + + +HSTS +http + + +none + + + +HSTS curl_easy_duphandle + + +lib%TESTNUMBER + + + +http://%HOSTIP:%NOLISTENPORT/not-there/%TESTNUMBER + + + +# Verify data after the test has been "shot" + + + diff --git a/external/curl/tests/data/test194 b/external/curl/tests/data/test194 index 4de767e3a..074348950 100644 --- a/external/curl/tests/data/test194 +++ b/external/curl/tests/data/test194 @@ -64,9 +64,8 @@ User-Agent: curl/%VERSION Accept: */* -# CURLE_HTTP_RETURNED_ERROR -22 +0 diff --git a/external/curl/tests/data/test268 b/external/curl/tests/data/test268 new file mode 100644 index 000000000..3a1ab6a9b --- /dev/null +++ b/external/curl/tests/data/test268 @@ -0,0 +1,59 @@ + + + +HTTP +variables + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 6 +Connection: close +Content-Type: text/html +Funny-head: yesyes + +-foo- + + + +# +# Client-side + + +http + + +JSON encoding of unicode string + + +%hex[%e2%80%9c]hex% + + +http://%HOSTIP:%HTTPPORT/%TESTNUMBER --variable hello@%LOGDIR/junk --expand-data {{hello:json}} + + + +# +# Verify data after the test has been "shot" + + +POST /%TESTNUMBER HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* +Content-Length: 3 +Content-Type: application/x-www-form-urlencoded + +%hex[%e2%80%9c]hex% + + + diff --git a/external/curl/tests/data/test3103 b/external/curl/tests/data/test3103 index 23a0fea17..423c4adaa 100644 --- a/external/curl/tests/data/test3103 +++ b/external/curl/tests/data/test3103 @@ -48,7 +48,7 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER # # Verify data after the test has been "shot" - + GET http://localhost/ HTTP/1.1 Host: localhost Accept: */* diff --git a/external/curl/tests/data/test439 b/external/curl/tests/data/test439 index da1261531..c997a397a 100644 --- a/external/curl/tests/data/test439 +++ b/external/curl/tests/data/test439 @@ -38,7 +38,7 @@ debug aws-sigv4 with query -"http://fake.fake.fake:8000/%TESTNUMBER/?name=me%&aim=b%aad&&&weirdo=*.//-" -u user:secret --aws-sigv4 "aws:amz:us-east-2:es" --connect-to fake.fake.fake:8000:%HOSTIP:%HTTPPORT +"http://fake.fake.fake:8000/%TESTNUMBER/?name=me%&noval&aim=b%aad&&&weirdo=*.//-" -u user:secret --aws-sigv4 "aws:amz:us-east-2:es" --connect-to fake.fake.fake:8000:%HOSTIP:%HTTPPORT @@ -46,9 +46,9 @@ aws-sigv4 with query # Verify data after the test has been "shot" -GET /%TESTNUMBER/?name=me%&aim=b%aad&&&weirdo=*.//- HTTP/1.1 +GET /439/?name=me%&noval&aim=b%aad&&&weirdo=*.//- HTTP/1.1 Host: fake.fake.fake:8000 -Authorization: AWS4-HMAC-SHA256 Credential=user/19700101/us-east-2/es/aws4_request, SignedHeaders=host;x-amz-date, Signature=88884e3b3142133685b2092d29d8b522b785b1a9ec9e4a90cbea83e882f8dcb6 +Authorization: AWS4-HMAC-SHA256 Credential=user/19700101/us-east-2/es/aws4_request, SignedHeaders=host;x-amz-date, Signature=cbbf4a72764e27e396730f5e56cea046d4ce862a2d91db4856fb086b92f49270 X-Amz-Date: 19700101T000000Z User-Agent: curl/%VERSION Accept: */* diff --git a/external/curl/tests/data/test457 b/external/curl/tests/data/test457 index 77eb9c855..aa391d7fd 100644 --- a/external/curl/tests/data/test457 +++ b/external/curl/tests/data/test457 @@ -20,7 +20,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 30 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 21;heresatest=moooo -cccccccccccccccccccccccccccccccc +cccccccccccccccccccccccccccccc +c 0 @@ -31,7 +32,7 @@ Server: fakeit/0.9 fakeitbad/1.0 Transfer-Encoding: chunked Connection: mooo -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccc diff --git a/external/curl/tests/data/test459 b/external/curl/tests/data/test459 new file mode 100644 index 000000000..e46d02973 --- /dev/null +++ b/external/curl/tests/data/test459 @@ -0,0 +1,63 @@ + + + +HTTP +--config + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 6 +Connection: close +Content-Type: text/html +Funny-head: yesyes + +-foo- + + + +# +# Client-side + + +http + + +config file with argument using whitespace missing quotes + + +data = arg with space + + +http://%HOSTIP:%HTTPPORT/%TESTNUMBER --config %LOGDIR/config --silent + + + +# +# Verify data after the test has been "shot" + + +POST /%TESTNUMBER HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* +Content-Length: 3 +Content-Type: application/x-www-form-urlencoded + +arg + + +Warning: %LOGDIR/config:1: warning: 'data' uses unquoted whitespace +Warning: This may cause side-effects. Consider using double quotes? + + + diff --git a/external/curl/tests/data/test722 b/external/curl/tests/data/test722 index 674efd14a..c5b8d8610 100644 --- a/external/curl/tests/data/test722 +++ b/external/curl/tests/data/test722 @@ -8,7 +8,7 @@ IPFS # # Server-side - + HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake @@ -34,7 +34,7 @@ http IPFS ---ipfs-gateway http://%HOSTIP:%HTTPPORT/%TESTNUMBER ipfs://QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx +--ipfs-gateway http://%HOSTIP:%HTTPPORT ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u @@ -42,7 +42,7 @@ IPFS # Verify data after the test has been "shot" -GET /ipfs/QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx HTTP/1.1 +GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: %HOSTIP:%HTTPPORT User-Agent: curl/%VERSION Accept: */* diff --git a/external/curl/tests/data/test723 b/external/curl/tests/data/test723 index aaf4d27a3..dac78fc54 100644 --- a/external/curl/tests/data/test723 +++ b/external/curl/tests/data/test723 @@ -20,7 +20,7 @@ http IPFS with malformed gateway URL (bad function argument error) ---ipfs-gateway http://nonexisting,local:8080/%TESTNUMBER ipfs://QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx +--ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u diff --git a/external/curl/tests/data/test724 b/external/curl/tests/data/test724 index 692046b31..c97354b0d 100644 --- a/external/curl/tests/data/test724 +++ b/external/curl/tests/data/test724 @@ -8,7 +8,7 @@ IPFS # # Server-side - + HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake @@ -37,10 +37,10 @@ HOME=%PWD/%LOGDIR IPFS with gateway URL from gateway file -ipfs://QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u -http://%HOSTIP:%HTTPPORT/%TESTNUMBER +http://%HOSTIP:%HTTPPORT @@ -48,7 +48,7 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER # Verify data after the test has been "shot" -GET /ipfs/QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx HTTP/1.1 +GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: %HOSTIP:%HTTPPORT User-Agent: curl/%VERSION Accept: */* diff --git a/external/curl/tests/data/test725 b/external/curl/tests/data/test725 index cf3c19664..de7c39493 100644 --- a/external/curl/tests/data/test725 +++ b/external/curl/tests/data/test725 @@ -23,10 +23,10 @@ HOME=%PWD/%LOGDIR IPFS with malformed gateway URL from gateway file -ipfs://QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u -http://nonexisting,local:8080/%TESTNUMBER +http://nonexisting,local:8080 diff --git a/external/curl/tests/data/test726 b/external/curl/tests/data/test726 index c0abbf29c..f51adf594 100644 --- a/external/curl/tests/data/test726 +++ b/external/curl/tests/data/test726 @@ -26,7 +26,7 @@ HOME=%PWD IPFS with no gateway URL (no environment or home file either) -ipfs://QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u diff --git a/external/curl/tests/data/test727 b/external/curl/tests/data/test727 index e71ef5f44..aa2c84fbc 100644 --- a/external/curl/tests/data/test727 +++ b/external/curl/tests/data/test727 @@ -8,7 +8,7 @@ IPNS # # Server-side - + HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake @@ -34,7 +34,7 @@ http IPNS ---ipfs-gateway http://%HOSTIP:%HTTPPORT/%TESTNUMBER ipns://QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx +--ipfs-gateway http://%HOSTIP:%HTTPPORT ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u @@ -42,7 +42,7 @@ IPNS # Verify data after the test has been "shot" -GET /ipns/QmV5JejrpgUxnkZeFZYMxVCqAbKy3KdPXWXyuEDiMNZwUx HTTP/1.1 +GET /ipns/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 Host: %HOSTIP:%HTTPPORT User-Agent: curl/%VERSION Accept: */* diff --git a/external/curl/tests/data/test729 b/external/curl/tests/data/test729 new file mode 100644 index 000000000..805758921 --- /dev/null +++ b/external/curl/tests/data/test729 @@ -0,0 +1,41 @@ + + + +HTTP +HTTP GET +SOCKS4 + + + +# +# Server-side + + + +# +# Client-side + + +proxy + + +http +socks4 + + +SOCKS4 with very long proxy user name + + +http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@%HOSTIP:%SOCKSPORT + + + +# +# Verify data after the test has been "shot" + +# CURLE_PROXY + +97 + + + diff --git a/external/curl/tests/data/test730 b/external/curl/tests/data/test730 new file mode 100644 index 000000000..138f85086 --- /dev/null +++ b/external/curl/tests/data/test730 @@ -0,0 +1,52 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +IPFS arg gateway with path + + +--ipfs-gateway http://%HOSTIP:%HTTPPORT/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u + + + +# +# Verify data after the test has been "shot" + + +GET /foo/bar/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test731 b/external/curl/tests/data/test731 new file mode 100644 index 000000000..9e135dbec --- /dev/null +++ b/external/curl/tests/data/test731 @@ -0,0 +1,58 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +HOME=%PWD/%LOGDIR + + +IPFS with gateway URL and path from gateway file + + +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u + + +http://%HOSTIP:%HTTPPORT/%TESTNUMBER + + + +# +# Verify data after the test has been "shot" + + +GET /%TESTNUMBER/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test732 b/external/curl/tests/data/test732 new file mode 100644 index 000000000..9adaedb93 --- /dev/null +++ b/external/curl/tests/data/test732 @@ -0,0 +1,52 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +IPFS with path + + +--ipfs-gateway http://%HOSTIP:%HTTPPORT "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" + + + +# +# Verify data after the test has been "shot" + + +GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test733 b/external/curl/tests/data/test733 new file mode 100644 index 000000000..ad17cd4bf --- /dev/null +++ b/external/curl/tests/data/test733 @@ -0,0 +1,52 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +IPFS with path and query args + + +--ipfs-gateway http://%HOSTIP:%HTTPPORT "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" + + + +# +# Verify data after the test has been "shot" + + +GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test734 b/external/curl/tests/data/test734 new file mode 100644 index 000000000..03f571cc6 --- /dev/null +++ b/external/curl/tests/data/test734 @@ -0,0 +1,52 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +IPFS with path, query args and gateway with path + + +--ipfs-gateway http://%HOSTIP:%HTTPPORT/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" + + + +# +# Verify data after the test has been "shot" + + +GET /some/path/ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test735 b/external/curl/tests/data/test735 new file mode 100644 index 000000000..da1aac4dd --- /dev/null +++ b/external/curl/tests/data/test735 @@ -0,0 +1,52 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +IPNS with path, query args and gateway with path + + +--ipfs-gateway http://%HOSTIP:%HTTPPORT/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" + + + +# +# Verify data after the test has been "shot" + + +GET /some/path/ipns/fancy.tld/a/b?foo=bar&aaa=bbb HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test736 b/external/curl/tests/data/test736 new file mode 100644 index 000000000..45d9a055a --- /dev/null +++ b/external/curl/tests/data/test736 @@ -0,0 +1,58 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +IPFS_PATH=%LOGDIR/.ipfs + + +IPFS with IPFS_PATH set, no trailing slash + + +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u + + +http://%HOSTIP:%HTTPPORT + + + +# +# Verify data after the test has been "shot" + + +GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test737 b/external/curl/tests/data/test737 new file mode 100644 index 000000000..bc6e8576a --- /dev/null +++ b/external/curl/tests/data/test737 @@ -0,0 +1,58 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +IPFS_PATH=%LOGDIR/.ipfs/ + + +IPFS with IPFS_PATH set, with trailing slash + + +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u + + +http://%HOSTIP:%HTTPPORT + + + +# +# Verify data after the test has been "shot" + + +GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test738 b/external/curl/tests/data/test738 new file mode 100644 index 000000000..5c05137dc --- /dev/null +++ b/external/curl/tests/data/test738 @@ -0,0 +1,37 @@ + + + +IPFS + + + +# +# Server-side + + + +# +# Client-side + + +http + + +IPFS_PATH=%LOGDIR/.ipfs/ + + +IPFS with IPFS_PATH, no gateway file + + +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u + + + +# +# Verify error code with no gateway file (detection fails) + + +37 + + + diff --git a/external/curl/tests/data/test739 b/external/curl/tests/data/test739 new file mode 100644 index 000000000..fe78c41bb --- /dev/null +++ b/external/curl/tests/data/test739 @@ -0,0 +1,34 @@ + + + +IPFS + + + +# +# Server-side + + + +# +# Client-side + + +http + + +IPNS path and query args for gateway and IPFS url (malformed gateway url) + + +--ipfs-gateway "http://%HOSTIP:%HTTPPORT/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" + + + +# +# Verify data after the test has been "shot" + + +3 + + + diff --git a/external/curl/tests/data/test740 b/external/curl/tests/data/test740 new file mode 100644 index 000000000..97258d384 --- /dev/null +++ b/external/curl/tests/data/test740 @@ -0,0 +1,60 @@ + + + +IPFS + + + +# +# Server-side + + +HTTP/1.1 200 OK +Date: Tue, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT +ETag: "21025-dc7-39462498" +Accept-Ranges: bytes +Content-Length: 21 +Connection: close +Content-Type: text/plain +Funny-head: yesyes + +Hello curl from IPFS + + + +# +# Client-side + + +http + + +HOME=%PWD/%LOGDIR + + +IPFS with gateway URL from multiline gateway file + + +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u + + +http://%HOSTIP:%HTTPPORT +foo +bar + + + +# +# Verify data after the test has been "shot" + + +GET /ipfs/bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +User-Agent: curl/%VERSION +Accept: */* + + + + diff --git a/external/curl/tests/data/test741 b/external/curl/tests/data/test741 new file mode 100644 index 000000000..e773cd08a --- /dev/null +++ b/external/curl/tests/data/test741 @@ -0,0 +1,42 @@ + + + +IPFS + + + +# +# Server-side + + + +# +# Client-side + + +http + + +HOME=%PWD/%LOGDIR + + +IPFS with malformed gateway URL from multiline gateway file, first line no url + + +ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u + + +foo +bar + + + +# +# Verify data after the test has been "shot" + +# malformed gateway URL, first line in file must be a gateway URL + +3 + + + diff --git a/external/curl/tests/disable-scan.pl b/external/curl/tests/disable-scan.pl index 99f5436af..b6f3179cf 100755 --- a/external/curl/tests/disable-scan.pl +++ b/external/curl/tests/disable-scan.pl @@ -29,6 +29,8 @@ # the DISABLE options that can be set by configure my %disable; +# the DISABLE options that can be set by CMakeLists.txt +my %disable_cmake; # the DISABLE options that are used in C files my %file; # the DISABLE options that are documented @@ -61,6 +63,24 @@ sub scan_configure { } } +sub scanconf_cmake { + my ($f)=@_; + open S, "<$f"; + while() { + if(/(CURL_DISABLE_[A-Z_]+)/g) { + my ($sym)=($1); + if(not $sym =~ /(CURL_DISABLE_INSTALL|CURL_DISABLE_TESTS|CURL_DISABLE_SRP)/) { + $disable_cmake{$sym} = 1; + } + } + } + close S; +} + +sub scan_cmake { + scanconf_cmake("$root/CMakeLists.txt"); +} + sub scan_file { my ($source)=@_; open F, "<$source"; @@ -104,6 +124,7 @@ sub scan_docs { } scan_configure(); +scan_cmake(); scan_sources(); scan_docs(); @@ -121,12 +142,28 @@ sub scan_docs { } } +# Check the CMakeLists.txt symbols for use in code +for my $s (sort keys %disable_cmake) { + if(!$file{$s}) { + printf "Present in CMakeLists.txt, not used by code: %s\n", $s; + $error++; + } + if(!$docs{$s}) { + printf "Present in CMakeLists.txt, not documented in $DOCS: %s\n", $s; + $error++; + } +} + # Check the code symbols for use in configure for my $s (sort keys %file) { if(!$disable{$s}) { printf "Not set by configure: %s (%s)\n", $s, $file{$s}; $error++; } + if(!$disable_cmake{$s}) { + printf "Not set by CMakeLists.txt: %s (%s)\n", $s, $file{$s}; + $error++; + } if(!$docs{$s}) { printf "Used in code, not documented in $DOCS: %s\n", $s; $error++; @@ -139,6 +176,10 @@ sub scan_docs { printf "Documented but not in configure: %s\n", $s; $error++; } + if(!$disable_cmake{$s}) { + printf "Documented but not in CMakeLists.txt: %s\n", $s; + $error++; + } if(!$file{$s}) { printf "Documented, but not used by code: %s\n", $s; $error++; diff --git a/external/curl/tests/http/clients/h2-download.c b/external/curl/tests/http/clients/h2-download.c index 24ccedbdd..53f3ac0d0 100644 --- a/external/curl/tests/http/clients/h2-download.c +++ b/external/curl/tests/http/clients/h2-download.c @@ -196,7 +196,6 @@ int main(int argc, char *argv[]) case 'h': usage(NULL); return 2; - break; case 'a': abort_paused = 1; break; diff --git a/external/curl/tests/libtest/CMakeLists.txt b/external/curl/tests/libtest/CMakeLists.txt index 98f5b9c67..b6450ff3a 100644 --- a/external/curl/tests/libtest/CMakeLists.txt +++ b/external/curl/tests/libtest/CMakeLists.txt @@ -67,7 +67,7 @@ endforeach() # Allows for hostname override to make tests machine independent. # TODO this cmake build assumes a shared build, detect static linking here! if(NOT WIN32) - add_library(hostname MODULE EXCLUDE_FROM_ALL sethostname.c sethostname.h) + add_library(hostname MODULE EXCLUDE_FROM_ALL sethostname.c) add_dependencies(testdeps hostname) # Output to .libs for compatibility with autotools, the test data expects a # library at (tests)/libtest/.libs/libhostname.so diff --git a/external/curl/tests/libtest/Makefile.am b/external/curl/tests/libtest/Makefile.am index 09a13914a..8ae972a24 100644 --- a/external/curl/tests/libtest/Makefile.am +++ b/external/curl/tests/libtest/Makefile.am @@ -103,7 +103,7 @@ libhostname_la_CPPFLAGS = $(AM_CPPFLAGS) $(libhostname_la_CPPFLAGS_EXTRA) libhostname_la_LDFLAGS = $(AM_LDFLAGS) $(libhostname_la_LDFLAGS_EXTRA) libhostname_la_CFLAGS = $(AM_CFLAGS) $(libhostname_la_CFLAGS_EXTRA) -libhostname_la_SOURCES = sethostname.c sethostname.h +libhostname_la_SOURCES = sethostname.c libhostname_la_LIBADD = libhostname_la_DEPENDENCIES = diff --git a/external/curl/tests/libtest/Makefile.in b/external/curl/tests/libtest/Makefile.in index 9935c4b49..ebc9a8c60 100644 --- a/external/curl/tests/libtest/Makefile.in +++ b/external/curl/tests/libtest/Makefile.in @@ -138,33 +138,33 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \ lib1533$(EXEEXT) lib1534$(EXEEXT) lib1535$(EXEEXT) \ lib1536$(EXEEXT) lib1537$(EXEEXT) lib1538$(EXEEXT) \ lib1539$(EXEEXT) lib1540$(EXEEXT) lib1542$(EXEEXT) \ - lib1543$(EXEEXT) lib1550$(EXEEXT) lib1551$(EXEEXT) \ - lib1552$(EXEEXT) lib1553$(EXEEXT) lib1554$(EXEEXT) \ - lib1555$(EXEEXT) lib1556$(EXEEXT) lib1557$(EXEEXT) \ - lib1558$(EXEEXT) lib1559$(EXEEXT) lib1560$(EXEEXT) \ - lib1564$(EXEEXT) lib1565$(EXEEXT) lib1567$(EXEEXT) \ - lib1568$(EXEEXT) lib1569$(EXEEXT) lib1591$(EXEEXT) \ - lib1592$(EXEEXT) lib1593$(EXEEXT) lib1594$(EXEEXT) \ - lib1596$(EXEEXT) lib1597$(EXEEXT) lib1662$(EXEEXT) \ - lib1903$(EXEEXT) lib1905$(EXEEXT) lib1906$(EXEEXT) \ - lib1907$(EXEEXT) lib1908$(EXEEXT) lib1910$(EXEEXT) \ - lib1911$(EXEEXT) lib1912$(EXEEXT) lib1913$(EXEEXT) \ - lib1915$(EXEEXT) lib1916$(EXEEXT) lib1917$(EXEEXT) \ - lib1918$(EXEEXT) lib1919$(EXEEXT) lib1933$(EXEEXT) \ - lib1934$(EXEEXT) lib1935$(EXEEXT) lib1936$(EXEEXT) \ - lib1937$(EXEEXT) lib1938$(EXEEXT) lib1939$(EXEEXT) \ - lib1940$(EXEEXT) lib1945$(EXEEXT) lib1946$(EXEEXT) \ - lib1947$(EXEEXT) lib1948$(EXEEXT) lib1955$(EXEEXT) \ - lib1956$(EXEEXT) lib1957$(EXEEXT) lib1958$(EXEEXT) \ - lib1959$(EXEEXT) lib1960$(EXEEXT) lib1964$(EXEEXT) \ - lib1970$(EXEEXT) lib1971$(EXEEXT) lib1972$(EXEEXT) \ - lib1973$(EXEEXT) lib1974$(EXEEXT) lib1975$(EXEEXT) \ - lib2301$(EXEEXT) lib2302$(EXEEXT) lib2304$(EXEEXT) \ - lib2305$(EXEEXT) lib2306$(EXEEXT) lib2402$(EXEEXT) \ - lib2404$(EXEEXT) lib2502$(EXEEXT) lib3010$(EXEEXT) \ - lib3025$(EXEEXT) lib3026$(EXEEXT) lib3027$(EXEEXT) \ - lib3100$(EXEEXT) lib3101$(EXEEXT) lib3102$(EXEEXT) \ - lib3103$(EXEEXT) + lib1543$(EXEEXT) lib1545$(EXEEXT) lib1550$(EXEEXT) \ + lib1551$(EXEEXT) lib1552$(EXEEXT) lib1553$(EXEEXT) \ + lib1554$(EXEEXT) lib1555$(EXEEXT) lib1556$(EXEEXT) \ + lib1557$(EXEEXT) lib1558$(EXEEXT) lib1559$(EXEEXT) \ + lib1560$(EXEEXT) lib1564$(EXEEXT) lib1565$(EXEEXT) \ + lib1567$(EXEEXT) lib1568$(EXEEXT) lib1569$(EXEEXT) \ + lib1591$(EXEEXT) lib1592$(EXEEXT) lib1593$(EXEEXT) \ + lib1594$(EXEEXT) lib1596$(EXEEXT) lib1597$(EXEEXT) \ + lib1662$(EXEEXT) lib1900$(EXEEXT) lib1903$(EXEEXT) \ + lib1905$(EXEEXT) lib1906$(EXEEXT) lib1907$(EXEEXT) \ + lib1908$(EXEEXT) lib1910$(EXEEXT) lib1911$(EXEEXT) \ + lib1912$(EXEEXT) lib1913$(EXEEXT) lib1915$(EXEEXT) \ + lib1916$(EXEEXT) lib1917$(EXEEXT) lib1918$(EXEEXT) \ + lib1919$(EXEEXT) lib1933$(EXEEXT) lib1934$(EXEEXT) \ + lib1935$(EXEEXT) lib1936$(EXEEXT) lib1937$(EXEEXT) \ + lib1938$(EXEEXT) lib1939$(EXEEXT) lib1940$(EXEEXT) \ + lib1945$(EXEEXT) lib1946$(EXEEXT) lib1947$(EXEEXT) \ + lib1948$(EXEEXT) lib1955$(EXEEXT) lib1956$(EXEEXT) \ + lib1957$(EXEEXT) lib1958$(EXEEXT) lib1959$(EXEEXT) \ + lib1960$(EXEEXT) lib1964$(EXEEXT) lib1970$(EXEEXT) \ + lib1971$(EXEEXT) lib1972$(EXEEXT) lib1973$(EXEEXT) \ + lib1974$(EXEEXT) lib1975$(EXEEXT) lib2301$(EXEEXT) \ + lib2302$(EXEEXT) lib2304$(EXEEXT) lib2305$(EXEEXT) \ + lib2306$(EXEEXT) lib2402$(EXEEXT) lib2404$(EXEEXT) \ + lib2502$(EXEEXT) lib3010$(EXEEXT) lib3025$(EXEEXT) \ + lib3026$(EXEEXT) lib3027$(EXEEXT) lib3100$(EXEEXT) \ + lib3101$(EXEEXT) lib3102$(EXEEXT) lib3103$(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_NO_UNDEFINED_TRUE@am__append_3 = -no-undefined @@ -437,6 +437,12 @@ am_lib1543_OBJECTS = lib1543-lib1518.$(OBJEXT) $(am__objects_29) lib1543_OBJECTS = $(am_lib1543_OBJECTS) lib1543_LDADD = $(LDADD) lib1543_DEPENDENCIES = $(am__DEPENDENCIES_1) +am__objects_30 = ../../lib/lib1545-timediff.$(OBJEXT) +am__objects_31 = $(am__objects_30) lib1545-first.$(OBJEXT) +am_lib1545_OBJECTS = lib1545-lib1545.$(OBJEXT) $(am__objects_31) +lib1545_OBJECTS = $(am_lib1545_OBJECTS) +lib1545_LDADD = $(LDADD) +lib1545_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1550_OBJECTS = lib1550.$(OBJEXT) $(am__objects_2) lib1550_OBJECTS = $(am_lib1550_OBJECTS) lib1550_LDADD = $(LDADD) @@ -517,12 +523,12 @@ am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) lib1594_OBJECTS = $(am_lib1594_OBJECTS) lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_30 = ../../lib/lib1596-timediff.$(OBJEXT) -am__objects_31 = $(am__objects_30) lib1596-first.$(OBJEXT) -am__objects_32 = lib1596-testutil.$(OBJEXT) -am__objects_33 = ../../lib/lib1596-warnless.$(OBJEXT) -am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_31) \ - $(am__objects_32) $(am__objects_33) +am__objects_32 = ../../lib/lib1596-timediff.$(OBJEXT) +am__objects_33 = $(am__objects_32) lib1596-first.$(OBJEXT) +am__objects_34 = lib1596-testutil.$(OBJEXT) +am__objects_35 = ../../lib/lib1596-warnless.$(OBJEXT) +am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_33) \ + $(am__objects_34) $(am__objects_35) lib1596_OBJECTS = $(am_lib1596_OBJECTS) lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1597_OBJECTS = lib1597.$(OBJEXT) $(am__objects_2) \ @@ -533,6 +539,10 @@ am_lib1662_OBJECTS = lib1662.$(OBJEXT) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) lib1662_OBJECTS = $(am_lib1662_OBJECTS) lib1662_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_lib1900_OBJECTS = lib1900.$(OBJEXT) $(am__objects_2) +lib1900_OBJECTS = $(am_lib1900_OBJECTS) +lib1900_LDADD = $(LDADD) +lib1900_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1903_OBJECTS = lib1903.$(OBJEXT) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) lib1903_OBJECTS = $(am_lib1903_OBJECTS) @@ -578,11 +588,11 @@ am_lib1916_OBJECTS = lib1916.$(OBJEXT) $(am__objects_2) \ lib1916_OBJECTS = $(am_lib1916_OBJECTS) lib1916_LDADD = $(LDADD) lib1916_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_34 = ../../lib/lib1917-timediff.$(OBJEXT) -am__objects_35 = $(am__objects_34) lib1917-first.$(OBJEXT) -am__objects_36 = ../../lib/lib1917-warnless.$(OBJEXT) -am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_35) \ - $(am__objects_36) +am__objects_36 = ../../lib/lib1917-timediff.$(OBJEXT) +am__objects_37 = $(am__objects_36) lib1917-first.$(OBJEXT) +am__objects_38 = ../../lib/lib1917-warnless.$(OBJEXT) +am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_37) \ + $(am__objects_38) lib1917_OBJECTS = $(am_lib1917_OBJECTS) lib1917_LDADD = $(LDADD) lib1917_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -627,9 +637,9 @@ lib1940_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1945_OBJECTS = lib1945.$(OBJEXT) $(am__objects_2) lib1945_OBJECTS = $(am_lib1945_OBJECTS) lib1945_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_37 = ../../lib/lib1946-timediff.$(OBJEXT) -am__objects_38 = $(am__objects_37) lib1946-first.$(OBJEXT) -am_lib1946_OBJECTS = lib1946-lib1940.$(OBJEXT) $(am__objects_38) +am__objects_39 = ../../lib/lib1946-timediff.$(OBJEXT) +am__objects_40 = $(am__objects_39) lib1946-first.$(OBJEXT) +am_lib1946_OBJECTS = lib1946-lib1940.$(OBJEXT) $(am__objects_40) lib1946_OBJECTS = $(am_lib1946_OBJECTS) lib1946_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib1947_OBJECTS = lib1947.$(OBJEXT) $(am__objects_2) @@ -698,9 +708,9 @@ lib2302_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib2304_OBJECTS = lib2304.$(OBJEXT) $(am__objects_2) lib2304_OBJECTS = $(am_lib2304_OBJECTS) lib2304_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_39 = ../../lib/curl_multibyte.$(OBJEXT) +am__objects_41 = ../../lib/curl_multibyte.$(OBJEXT) am_lib2305_OBJECTS = lib2305.$(OBJEXT) $(am__objects_2) \ - $(am__objects_3) $(am__objects_23) $(am__objects_39) + $(am__objects_3) $(am__objects_23) $(am__objects_41) lib2305_OBJECTS = $(am_lib2305_OBJECTS) lib2305_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib2306_OBJECTS = lib2306.$(OBJEXT) $(am__objects_2) @@ -750,7 +760,7 @@ am_lib3103_OBJECTS = lib3103.$(OBJEXT) $(am__objects_2) lib3103_OBJECTS = $(am_lib3103_OBJECTS) lib3103_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib500_OBJECTS = lib500.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ - $(am__objects_23) $(am__objects_39) + $(am__objects_23) $(am__objects_41) lib500_OBJECTS = $(am_lib500_OBJECTS) lib500_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib501_OBJECTS = lib501.$(OBJEXT) $(am__objects_2) @@ -770,7 +780,7 @@ am_lib504_OBJECTS = lib504.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ lib504_OBJECTS = $(am_lib504_OBJECTS) lib504_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib505_OBJECTS = lib505.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib505_OBJECTS = $(am_lib505_OBJECTS) lib505_LDADD = $(LDADD) lib505_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -823,7 +833,7 @@ lib517_OBJECTS = $(am_lib517_OBJECTS) lib517_LDADD = $(LDADD) lib517_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib518_OBJECTS = lib518.$(OBJEXT) $(am__objects_2) $(am__objects_4) \ - $(am__objects_39) + $(am__objects_41) lib518_OBJECTS = $(am_lib518_OBJECTS) lib518_LDADD = $(LDADD) lib518_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -848,44 +858,44 @@ lib524_OBJECTS = $(am_lib524_OBJECTS) lib524_LDADD = $(LDADD) lib524_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib525_OBJECTS = lib525.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_39) + $(am__objects_4) $(am__objects_41) lib525_OBJECTS = $(am_lib525_OBJECTS) lib525_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_40 = ../../lib/lib526-timediff.$(OBJEXT) -am__objects_41 = $(am__objects_40) lib526-first.$(OBJEXT) -am__objects_42 = lib526-testutil.$(OBJEXT) -am__objects_43 = ../../lib/lib526-warnless.$(OBJEXT) -am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_41) \ - $(am__objects_42) $(am__objects_43) +am__objects_42 = ../../lib/lib526-timediff.$(OBJEXT) +am__objects_43 = $(am__objects_42) lib526-first.$(OBJEXT) +am__objects_44 = lib526-testutil.$(OBJEXT) +am__objects_45 = ../../lib/lib526-warnless.$(OBJEXT) +am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_43) \ + $(am__objects_44) $(am__objects_45) lib526_OBJECTS = $(am_lib526_OBJECTS) lib526_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_44 = ../../lib/lib527-timediff.$(OBJEXT) -am__objects_45 = $(am__objects_44) lib527-first.$(OBJEXT) -am__objects_46 = lib527-testutil.$(OBJEXT) -am__objects_47 = ../../lib/lib527-warnless.$(OBJEXT) -am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_45) \ - $(am__objects_46) $(am__objects_47) +am__objects_46 = ../../lib/lib527-timediff.$(OBJEXT) +am__objects_47 = $(am__objects_46) lib527-first.$(OBJEXT) +am__objects_48 = lib527-testutil.$(OBJEXT) +am__objects_49 = ../../lib/lib527-warnless.$(OBJEXT) +am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_47) \ + $(am__objects_48) $(am__objects_49) lib527_OBJECTS = $(am_lib527_OBJECTS) lib527_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_48 = ../../lib/lib529-timediff.$(OBJEXT) -am__objects_49 = $(am__objects_48) lib529-first.$(OBJEXT) -am__objects_50 = lib529-testutil.$(OBJEXT) -am__objects_51 = ../../lib/lib529-warnless.$(OBJEXT) -am__objects_52 = ../../lib/lib529-curl_multibyte.$(OBJEXT) -am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_49) \ - $(am__objects_50) $(am__objects_51) $(am__objects_52) +am__objects_50 = ../../lib/lib529-timediff.$(OBJEXT) +am__objects_51 = $(am__objects_50) lib529-first.$(OBJEXT) +am__objects_52 = lib529-testutil.$(OBJEXT) +am__objects_53 = ../../lib/lib529-warnless.$(OBJEXT) +am__objects_54 = ../../lib/lib529-curl_multibyte.$(OBJEXT) +am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_51) \ + $(am__objects_52) $(am__objects_53) $(am__objects_54) lib529_OBJECTS = $(am_lib529_OBJECTS) lib529_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib530_OBJECTS = lib530.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ $(am__objects_4) lib530_OBJECTS = $(am_lib530_OBJECTS) lib530_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_53 = ../../lib/lib532-timediff.$(OBJEXT) -am__objects_54 = $(am__objects_53) lib532-first.$(OBJEXT) -am__objects_55 = lib532-testutil.$(OBJEXT) -am__objects_56 = ../../lib/lib532-warnless.$(OBJEXT) -am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_54) \ - $(am__objects_55) $(am__objects_56) +am__objects_55 = ../../lib/lib532-timediff.$(OBJEXT) +am__objects_56 = $(am__objects_55) lib532-first.$(OBJEXT) +am__objects_57 = lib532-testutil.$(OBJEXT) +am__objects_58 = ../../lib/lib532-warnless.$(OBJEXT) +am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_56) \ + $(am__objects_57) $(am__objects_58) lib532_OBJECTS = $(am_lib532_OBJECTS) lib532_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib533_OBJECTS = lib533.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ @@ -893,7 +903,7 @@ am_lib533_OBJECTS = lib533.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ lib533_OBJECTS = $(am_lib533_OBJECTS) lib533_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib537_OBJECTS = lib537.$(OBJEXT) $(am__objects_2) $(am__objects_4) \ - $(am__objects_39) + $(am__objects_41) lib537_OBJECTS = $(am_lib537_OBJECTS) lib537_LDADD = $(LDADD) lib537_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -906,7 +916,7 @@ am_lib540_OBJECTS = lib540.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ lib540_OBJECTS = $(am_lib540_OBJECTS) lib540_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib541_OBJECTS = lib541.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib541_OBJECTS = $(am_lib541_OBJECTS) lib541_LDADD = $(LDADD) lib541_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -922,9 +932,9 @@ am_lib544_OBJECTS = lib544.$(OBJEXT) $(am__objects_2) lib544_OBJECTS = $(am_lib544_OBJECTS) lib544_LDADD = $(LDADD) lib544_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_57 = ../../lib/lib545-timediff.$(OBJEXT) -am__objects_58 = $(am__objects_57) lib545-first.$(OBJEXT) -am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_58) +am__objects_59 = ../../lib/lib545-timediff.$(OBJEXT) +am__objects_60 = $(am__objects_59) lib545-first.$(OBJEXT) +am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_60) lib545_OBJECTS = $(am_lib545_OBJECTS) lib545_LDADD = $(LDADD) lib545_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -932,9 +942,9 @@ am_lib547_OBJECTS = lib547.$(OBJEXT) $(am__objects_2) lib547_OBJECTS = $(am_lib547_OBJECTS) lib547_LDADD = $(LDADD) lib547_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_59 = ../../lib/lib548-timediff.$(OBJEXT) -am__objects_60 = $(am__objects_59) lib548-first.$(OBJEXT) -am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_60) +am__objects_61 = ../../lib/lib548-timediff.$(OBJEXT) +am__objects_62 = $(am__objects_61) lib548-first.$(OBJEXT) +am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_62) lib548_OBJECTS = $(am_lib548_OBJECTS) lib548_LDADD = $(LDADD) lib548_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -986,14 +996,14 @@ am_lib564_OBJECTS = lib564.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ $(am__objects_4) lib564_OBJECTS = $(am_lib564_OBJECTS) lib564_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_61 = ../../lib/lib565-timediff.$(OBJEXT) -am__objects_62 = $(am__objects_61) lib565-first.$(OBJEXT) -am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_62) +am__objects_63 = ../../lib/lib565-timediff.$(OBJEXT) +am__objects_64 = $(am__objects_63) lib565-first.$(OBJEXT) +am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_64) lib565_OBJECTS = $(am_lib565_OBJECTS) lib565_LDADD = $(LDADD) lib565_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib566_OBJECTS = lib566.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib566_OBJECTS = $(am_lib566_OBJECTS) lib566_LDADD = $(LDADD) lib566_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -1002,12 +1012,12 @@ lib567_OBJECTS = $(am_lib567_OBJECTS) lib567_LDADD = $(LDADD) lib567_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib568_OBJECTS = lib568.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib568_OBJECTS = $(am_lib568_OBJECTS) lib568_LDADD = $(LDADD) lib568_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib569_OBJECTS = lib569.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib569_OBJECTS = $(am_lib569_OBJECTS) lib569_LDADD = $(LDADD) lib569_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -1016,12 +1026,12 @@ lib570_OBJECTS = $(am_lib570_OBJECTS) lib570_LDADD = $(LDADD) lib570_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib571_OBJECTS = lib571.$(OBJEXT) $(am__objects_2) $(am__objects_4) \ - $(am__objects_39) + $(am__objects_41) lib571_OBJECTS = $(am_lib571_OBJECTS) lib571_LDADD = $(LDADD) lib571_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib572_OBJECTS = lib572.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib572_OBJECTS = $(am_lib572_OBJECTS) lib572_LDADD = $(LDADD) lib572_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -1042,45 +1052,45 @@ lib576_OBJECTS = $(am_lib576_OBJECTS) lib576_LDADD = $(LDADD) lib576_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib578_OBJECTS = lib578.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib578_OBJECTS = $(am_lib578_OBJECTS) lib578_LDADD = $(LDADD) lib578_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib579_OBJECTS = lib579.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib579_OBJECTS = $(am_lib579_OBJECTS) lib579_LDADD = $(LDADD) lib579_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib582_OBJECTS = lib582.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_39) + $(am__objects_4) $(am__objects_41) lib582_OBJECTS = $(am_lib582_OBJECTS) lib582_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib583_OBJECTS = lib583.$(OBJEXT) $(am__objects_2) lib583_OBJECTS = $(am_lib583_OBJECTS) lib583_LDADD = $(LDADD) lib583_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_63 = ../../lib/lib584-timediff.$(OBJEXT) -am__objects_64 = $(am__objects_63) lib584-first.$(OBJEXT) -am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_64) +am__objects_65 = ../../lib/lib584-timediff.$(OBJEXT) +am__objects_66 = $(am__objects_65) lib584-first.$(OBJEXT) +am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_66) lib584_OBJECTS = $(am_lib584_OBJECTS) lib584_LDADD = $(LDADD) lib584_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_65 = ../../lib/lib585-timediff.$(OBJEXT) -am__objects_66 = $(am__objects_65) lib585-first.$(OBJEXT) -am__objects_67 = lib585-testutil.$(OBJEXT) -am__objects_68 = lib585-testtrace.$(OBJEXT) -am__objects_69 = ../../lib/lib585-curl_multibyte.$(OBJEXT) -am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_66) \ - $(am__objects_67) $(am__objects_68) $(am__objects_69) +am__objects_67 = ../../lib/lib585-timediff.$(OBJEXT) +am__objects_68 = $(am__objects_67) lib585-first.$(OBJEXT) +am__objects_69 = lib585-testutil.$(OBJEXT) +am__objects_70 = lib585-testtrace.$(OBJEXT) +am__objects_71 = ../../lib/lib585-curl_multibyte.$(OBJEXT) +am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_68) \ + $(am__objects_69) $(am__objects_70) $(am__objects_71) lib585_OBJECTS = $(am_lib585_OBJECTS) lib585_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib586_OBJECTS = lib586.$(OBJEXT) $(am__objects_2) lib586_OBJECTS = $(am_lib586_OBJECTS) lib586_LDADD = $(LDADD) lib586_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_70 = ../../lib/lib587-timediff.$(OBJEXT) -am__objects_71 = $(am__objects_70) lib587-first.$(OBJEXT) -am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_71) +am__objects_72 = ../../lib/lib587-timediff.$(OBJEXT) +am__objects_73 = $(am__objects_72) lib587-first.$(OBJEXT) +am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_73) lib587_OBJECTS = $(am_lib587_OBJECTS) lib587_LDADD = $(LDADD) lib587_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -1093,7 +1103,7 @@ lib590_OBJECTS = $(am_lib590_OBJECTS) lib590_LDADD = $(LDADD) lib590_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib591_OBJECTS = lib591.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_39) + $(am__objects_4) $(am__objects_41) lib591_OBJECTS = $(am_lib591_OBJECTS) lib591_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib597_OBJECTS = lib597.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ @@ -1105,7 +1115,7 @@ lib598_OBJECTS = $(am_lib598_OBJECTS) lib598_LDADD = $(LDADD) lib598_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib599_OBJECTS = lib599.$(OBJEXT) $(am__objects_2) \ - $(am__objects_39) + $(am__objects_41) lib599_OBJECTS = $(am_lib599_OBJECTS) lib599_LDADD = $(LDADD) lib599_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -1113,9 +1123,9 @@ am_lib643_OBJECTS = lib643.$(OBJEXT) $(am__objects_2) lib643_OBJECTS = $(am_lib643_OBJECTS) lib643_LDADD = $(LDADD) lib643_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_72 = ../../lib/lib645-timediff.$(OBJEXT) -am__objects_73 = $(am__objects_72) lib645-first.$(OBJEXT) -am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_73) +am__objects_74 = ../../lib/lib645-timediff.$(OBJEXT) +am__objects_75 = $(am__objects_74) lib645-first.$(OBJEXT) +am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_75) lib645_OBJECTS = $(am_lib645_OBJECTS) lib645_LDADD = $(LDADD) lib645_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -1167,28 +1177,28 @@ am_lib668_OBJECTS = lib668.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ $(am__objects_4) lib668_OBJECTS = $(am_lib668_OBJECTS) lib668_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_74 = ../../lib/lib670-timediff.$(OBJEXT) -am__objects_75 = $(am__objects_74) lib670-first.$(OBJEXT) -am__objects_76 = lib670-testutil.$(OBJEXT) -am__objects_77 = ../../lib/lib670-warnless.$(OBJEXT) -am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_75) \ - $(am__objects_76) $(am__objects_77) +am__objects_76 = ../../lib/lib670-timediff.$(OBJEXT) +am__objects_77 = $(am__objects_76) lib670-first.$(OBJEXT) +am__objects_78 = lib670-testutil.$(OBJEXT) +am__objects_79 = ../../lib/lib670-warnless.$(OBJEXT) +am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_77) \ + $(am__objects_78) $(am__objects_79) lib670_OBJECTS = $(am_lib670_OBJECTS) lib670_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_78 = ../../lib/lib671-timediff.$(OBJEXT) -am__objects_79 = $(am__objects_78) lib671-first.$(OBJEXT) -am__objects_80 = lib671-testutil.$(OBJEXT) -am__objects_81 = ../../lib/lib671-warnless.$(OBJEXT) -am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_79) \ - $(am__objects_80) $(am__objects_81) +am__objects_80 = ../../lib/lib671-timediff.$(OBJEXT) +am__objects_81 = $(am__objects_80) lib671-first.$(OBJEXT) +am__objects_82 = lib671-testutil.$(OBJEXT) +am__objects_83 = ../../lib/lib671-warnless.$(OBJEXT) +am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_81) \ + $(am__objects_82) $(am__objects_83) lib671_OBJECTS = $(am_lib671_OBJECTS) lib671_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__objects_82 = ../../lib/lib672-timediff.$(OBJEXT) -am__objects_83 = $(am__objects_82) lib672-first.$(OBJEXT) -am__objects_84 = lib672-testutil.$(OBJEXT) -am__objects_85 = ../../lib/lib672-warnless.$(OBJEXT) -am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_83) \ - $(am__objects_84) $(am__objects_85) +am__objects_84 = ../../lib/lib672-timediff.$(OBJEXT) +am__objects_85 = $(am__objects_84) lib672-first.$(OBJEXT) +am__objects_86 = lib672-testutil.$(OBJEXT) +am__objects_87 = ../../lib/lib672-warnless.$(OBJEXT) +am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_85) \ + $(am__objects_86) $(am__objects_87) lib672_OBJECTS = $(am_lib672_OBJECTS) lib672_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib673_OBJECTS = lib670.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ @@ -1204,11 +1214,11 @@ am_lib676_OBJECTS = lib676.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ lib676_OBJECTS = $(am_lib676_OBJECTS) lib676_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib677_OBJECTS = lib677.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_39) + $(am__objects_4) $(am__objects_41) lib677_OBJECTS = $(am_lib677_OBJECTS) lib677_DEPENDENCIES = $(am__DEPENDENCIES_1) am_lib678_OBJECTS = lib678.$(OBJEXT) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_39) + $(am__objects_4) $(am__objects_41) lib678_OBJECTS = $(am_lib678_OBJECTS) lib678_DEPENDENCIES = $(am__DEPENDENCIES_1) am_libauthretry_OBJECTS = libauthretry.$(OBJEXT) $(am__objects_2) @@ -1252,6 +1262,7 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/curl_gethostname.Po \ ../../lib/$(DEPDIR)/lib1539-timediff.Po \ ../../lib/$(DEPDIR)/lib1539-warnless.Po \ ../../lib/$(DEPDIR)/lib1543-timediff.Po \ + ../../lib/$(DEPDIR)/lib1545-timediff.Po \ ../../lib/$(DEPDIR)/lib1596-timediff.Po \ ../../lib/$(DEPDIR)/lib1596-warnless.Po \ ../../lib/$(DEPDIR)/lib1917-timediff.Po \ @@ -1309,7 +1320,8 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/curl_gethostname.Po \ ./$(DEPDIR)/lib1539-first.Po ./$(DEPDIR)/lib1539-lib1514.Po \ ./$(DEPDIR)/lib1539-testutil.Po ./$(DEPDIR)/lib1540.Po \ ./$(DEPDIR)/lib1542.Po ./$(DEPDIR)/lib1543-first.Po \ - ./$(DEPDIR)/lib1543-lib1518.Po ./$(DEPDIR)/lib1550.Po \ + ./$(DEPDIR)/lib1543-lib1518.Po ./$(DEPDIR)/lib1545-first.Po \ + ./$(DEPDIR)/lib1545-lib1545.Po ./$(DEPDIR)/lib1550.Po \ ./$(DEPDIR)/lib1551.Po ./$(DEPDIR)/lib1552.Po \ ./$(DEPDIR)/lib1553.Po ./$(DEPDIR)/lib1554.Po \ ./$(DEPDIR)/lib1555.Po ./$(DEPDIR)/lib1556.Po \ @@ -1322,97 +1334,98 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/curl_gethostname.Po \ ./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \ ./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \ ./$(DEPDIR)/lib1597.Po ./$(DEPDIR)/lib1662.Po \ - ./$(DEPDIR)/lib1903.Po ./$(DEPDIR)/lib1905.Po \ - ./$(DEPDIR)/lib1906.Po ./$(DEPDIR)/lib1907.Po \ - ./$(DEPDIR)/lib1908.Po ./$(DEPDIR)/lib1910.Po \ - ./$(DEPDIR)/lib1911.Po ./$(DEPDIR)/lib1912.Po \ - ./$(DEPDIR)/lib1913.Po ./$(DEPDIR)/lib1915.Po \ - ./$(DEPDIR)/lib1916.Po ./$(DEPDIR)/lib1917-first.Po \ - ./$(DEPDIR)/lib1917-lib1916.Po ./$(DEPDIR)/lib1918.Po \ - ./$(DEPDIR)/lib1919.Po ./$(DEPDIR)/lib1933.Po \ - ./$(DEPDIR)/lib1934.Po ./$(DEPDIR)/lib1935.Po \ - ./$(DEPDIR)/lib1936.Po ./$(DEPDIR)/lib1937.Po \ - ./$(DEPDIR)/lib1938.Po ./$(DEPDIR)/lib1939.Po \ - ./$(DEPDIR)/lib1940.Po ./$(DEPDIR)/lib1945.Po \ - ./$(DEPDIR)/lib1946-first.Po ./$(DEPDIR)/lib1946-lib1940.Po \ - ./$(DEPDIR)/lib1947.Po ./$(DEPDIR)/lib1948.Po \ - ./$(DEPDIR)/lib1955.Po ./$(DEPDIR)/lib1956.Po \ - ./$(DEPDIR)/lib1957.Po ./$(DEPDIR)/lib1958.Po \ - ./$(DEPDIR)/lib1959.Po ./$(DEPDIR)/lib1960.Po \ - ./$(DEPDIR)/lib1964.Po ./$(DEPDIR)/lib1970.Po \ - ./$(DEPDIR)/lib1971.Po ./$(DEPDIR)/lib1972.Po \ - ./$(DEPDIR)/lib1973.Po ./$(DEPDIR)/lib1974.Po \ - ./$(DEPDIR)/lib1975.Po ./$(DEPDIR)/lib2301.Po \ - ./$(DEPDIR)/lib2302.Po ./$(DEPDIR)/lib2304.Po \ - ./$(DEPDIR)/lib2305.Po ./$(DEPDIR)/lib2306.Po \ - ./$(DEPDIR)/lib2402.Po ./$(DEPDIR)/lib2404.Po \ - ./$(DEPDIR)/lib2502.Po ./$(DEPDIR)/lib3010.Po \ - ./$(DEPDIR)/lib3025.Po ./$(DEPDIR)/lib3026.Po \ - ./$(DEPDIR)/lib3027.Po ./$(DEPDIR)/lib3100.Po \ - ./$(DEPDIR)/lib3101.Po ./$(DEPDIR)/lib3102.Po \ - ./$(DEPDIR)/lib3103.Po ./$(DEPDIR)/lib500.Po \ - ./$(DEPDIR)/lib501.Po ./$(DEPDIR)/lib502.Po \ - ./$(DEPDIR)/lib503.Po ./$(DEPDIR)/lib504.Po \ - ./$(DEPDIR)/lib505.Po ./$(DEPDIR)/lib506.Po \ - ./$(DEPDIR)/lib507.Po ./$(DEPDIR)/lib508.Po \ - ./$(DEPDIR)/lib509.Po ./$(DEPDIR)/lib510.Po \ - ./$(DEPDIR)/lib511.Po ./$(DEPDIR)/lib512.Po \ - ./$(DEPDIR)/lib513.Po ./$(DEPDIR)/lib514.Po \ - ./$(DEPDIR)/lib515.Po ./$(DEPDIR)/lib516.Po \ - ./$(DEPDIR)/lib517.Po ./$(DEPDIR)/lib518.Po \ - ./$(DEPDIR)/lib519.Po ./$(DEPDIR)/lib520.Po \ - ./$(DEPDIR)/lib521.Po ./$(DEPDIR)/lib523.Po \ - ./$(DEPDIR)/lib524.Po ./$(DEPDIR)/lib525.Po \ - ./$(DEPDIR)/lib526-first.Po ./$(DEPDIR)/lib526-lib526.Po \ - ./$(DEPDIR)/lib526-testutil.Po ./$(DEPDIR)/lib527-first.Po \ - ./$(DEPDIR)/lib527-lib526.Po ./$(DEPDIR)/lib527-testutil.Po \ - ./$(DEPDIR)/lib529-first.Po ./$(DEPDIR)/lib529-lib525.Po \ - ./$(DEPDIR)/lib529-testutil.Po ./$(DEPDIR)/lib530.Po \ - ./$(DEPDIR)/lib532-first.Po ./$(DEPDIR)/lib532-lib526.Po \ - ./$(DEPDIR)/lib532-testutil.Po ./$(DEPDIR)/lib533.Po \ - ./$(DEPDIR)/lib537.Po ./$(DEPDIR)/lib539.Po \ - ./$(DEPDIR)/lib540.Po ./$(DEPDIR)/lib541.Po \ - ./$(DEPDIR)/lib542.Po ./$(DEPDIR)/lib543.Po \ - ./$(DEPDIR)/lib544.Po ./$(DEPDIR)/lib545-first.Po \ - ./$(DEPDIR)/lib545-lib544.Po ./$(DEPDIR)/lib547.Po \ - ./$(DEPDIR)/lib548-first.Po ./$(DEPDIR)/lib548-lib547.Po \ - ./$(DEPDIR)/lib549.Po ./$(DEPDIR)/lib552.Po \ - ./$(DEPDIR)/lib553.Po ./$(DEPDIR)/lib554.Po \ - ./$(DEPDIR)/lib555.Po ./$(DEPDIR)/lib556.Po \ - ./$(DEPDIR)/lib557.Po ./$(DEPDIR)/lib558.Po \ - ./$(DEPDIR)/lib559.Po ./$(DEPDIR)/lib560.Po \ - ./$(DEPDIR)/lib562.Po ./$(DEPDIR)/lib564.Po \ - ./$(DEPDIR)/lib565-first.Po ./$(DEPDIR)/lib565-lib510.Po \ - ./$(DEPDIR)/lib566.Po ./$(DEPDIR)/lib567.Po \ - ./$(DEPDIR)/lib568.Po ./$(DEPDIR)/lib569.Po \ - ./$(DEPDIR)/lib570.Po ./$(DEPDIR)/lib571.Po \ - ./$(DEPDIR)/lib572.Po ./$(DEPDIR)/lib573.Po \ - ./$(DEPDIR)/lib574.Po ./$(DEPDIR)/lib575.Po \ - ./$(DEPDIR)/lib576.Po ./$(DEPDIR)/lib578.Po \ - ./$(DEPDIR)/lib579.Po ./$(DEPDIR)/lib582.Po \ - ./$(DEPDIR)/lib583.Po ./$(DEPDIR)/lib584-first.Po \ - ./$(DEPDIR)/lib584-lib589.Po ./$(DEPDIR)/lib585-first.Po \ - ./$(DEPDIR)/lib585-lib500.Po ./$(DEPDIR)/lib585-testtrace.Po \ - ./$(DEPDIR)/lib585-testutil.Po ./$(DEPDIR)/lib586.Po \ - ./$(DEPDIR)/lib587-first.Po ./$(DEPDIR)/lib587-lib554.Po \ - ./$(DEPDIR)/lib589.Po ./$(DEPDIR)/lib590.Po \ - ./$(DEPDIR)/lib591.Po ./$(DEPDIR)/lib597.Po \ - ./$(DEPDIR)/lib598.Po ./$(DEPDIR)/lib599.Po \ - ./$(DEPDIR)/lib643.Po ./$(DEPDIR)/lib645-first.Po \ - ./$(DEPDIR)/lib645-lib643.Po ./$(DEPDIR)/lib650.Po \ - ./$(DEPDIR)/lib651.Po ./$(DEPDIR)/lib652.Po \ - ./$(DEPDIR)/lib653.Po ./$(DEPDIR)/lib654.Po \ - ./$(DEPDIR)/lib655.Po ./$(DEPDIR)/lib658.Po \ - ./$(DEPDIR)/lib659.Po ./$(DEPDIR)/lib661.Po \ - ./$(DEPDIR)/lib666.Po ./$(DEPDIR)/lib667.Po \ - ./$(DEPDIR)/lib668.Po ./$(DEPDIR)/lib670-first.Po \ - ./$(DEPDIR)/lib670-lib670.Po ./$(DEPDIR)/lib670-testutil.Po \ - ./$(DEPDIR)/lib670.Po ./$(DEPDIR)/lib671-first.Po \ - ./$(DEPDIR)/lib671-lib670.Po ./$(DEPDIR)/lib671-testutil.Po \ - ./$(DEPDIR)/lib672-first.Po ./$(DEPDIR)/lib672-lib670.Po \ - ./$(DEPDIR)/lib672-testutil.Po ./$(DEPDIR)/lib674.Po \ - ./$(DEPDIR)/lib676.Po ./$(DEPDIR)/lib677.Po \ - ./$(DEPDIR)/lib678.Po ./$(DEPDIR)/libauthretry.Po \ + ./$(DEPDIR)/lib1900.Po ./$(DEPDIR)/lib1903.Po \ + ./$(DEPDIR)/lib1905.Po ./$(DEPDIR)/lib1906.Po \ + ./$(DEPDIR)/lib1907.Po ./$(DEPDIR)/lib1908.Po \ + ./$(DEPDIR)/lib1910.Po ./$(DEPDIR)/lib1911.Po \ + ./$(DEPDIR)/lib1912.Po ./$(DEPDIR)/lib1913.Po \ + ./$(DEPDIR)/lib1915.Po ./$(DEPDIR)/lib1916.Po \ + ./$(DEPDIR)/lib1917-first.Po ./$(DEPDIR)/lib1917-lib1916.Po \ + ./$(DEPDIR)/lib1918.Po ./$(DEPDIR)/lib1919.Po \ + ./$(DEPDIR)/lib1933.Po ./$(DEPDIR)/lib1934.Po \ + ./$(DEPDIR)/lib1935.Po ./$(DEPDIR)/lib1936.Po \ + ./$(DEPDIR)/lib1937.Po ./$(DEPDIR)/lib1938.Po \ + ./$(DEPDIR)/lib1939.Po ./$(DEPDIR)/lib1940.Po \ + ./$(DEPDIR)/lib1945.Po ./$(DEPDIR)/lib1946-first.Po \ + ./$(DEPDIR)/lib1946-lib1940.Po ./$(DEPDIR)/lib1947.Po \ + ./$(DEPDIR)/lib1948.Po ./$(DEPDIR)/lib1955.Po \ + ./$(DEPDIR)/lib1956.Po ./$(DEPDIR)/lib1957.Po \ + ./$(DEPDIR)/lib1958.Po ./$(DEPDIR)/lib1959.Po \ + ./$(DEPDIR)/lib1960.Po ./$(DEPDIR)/lib1964.Po \ + ./$(DEPDIR)/lib1970.Po ./$(DEPDIR)/lib1971.Po \ + ./$(DEPDIR)/lib1972.Po ./$(DEPDIR)/lib1973.Po \ + ./$(DEPDIR)/lib1974.Po ./$(DEPDIR)/lib1975.Po \ + ./$(DEPDIR)/lib2301.Po ./$(DEPDIR)/lib2302.Po \ + ./$(DEPDIR)/lib2304.Po ./$(DEPDIR)/lib2305.Po \ + ./$(DEPDIR)/lib2306.Po ./$(DEPDIR)/lib2402.Po \ + ./$(DEPDIR)/lib2404.Po ./$(DEPDIR)/lib2502.Po \ + ./$(DEPDIR)/lib3010.Po ./$(DEPDIR)/lib3025.Po \ + ./$(DEPDIR)/lib3026.Po ./$(DEPDIR)/lib3027.Po \ + ./$(DEPDIR)/lib3100.Po ./$(DEPDIR)/lib3101.Po \ + ./$(DEPDIR)/lib3102.Po ./$(DEPDIR)/lib3103.Po \ + ./$(DEPDIR)/lib500.Po ./$(DEPDIR)/lib501.Po \ + ./$(DEPDIR)/lib502.Po ./$(DEPDIR)/lib503.Po \ + ./$(DEPDIR)/lib504.Po ./$(DEPDIR)/lib505.Po \ + ./$(DEPDIR)/lib506.Po ./$(DEPDIR)/lib507.Po \ + ./$(DEPDIR)/lib508.Po ./$(DEPDIR)/lib509.Po \ + ./$(DEPDIR)/lib510.Po ./$(DEPDIR)/lib511.Po \ + ./$(DEPDIR)/lib512.Po ./$(DEPDIR)/lib513.Po \ + ./$(DEPDIR)/lib514.Po ./$(DEPDIR)/lib515.Po \ + ./$(DEPDIR)/lib516.Po ./$(DEPDIR)/lib517.Po \ + ./$(DEPDIR)/lib518.Po ./$(DEPDIR)/lib519.Po \ + ./$(DEPDIR)/lib520.Po ./$(DEPDIR)/lib521.Po \ + ./$(DEPDIR)/lib523.Po ./$(DEPDIR)/lib524.Po \ + ./$(DEPDIR)/lib525.Po ./$(DEPDIR)/lib526-first.Po \ + ./$(DEPDIR)/lib526-lib526.Po ./$(DEPDIR)/lib526-testutil.Po \ + ./$(DEPDIR)/lib527-first.Po ./$(DEPDIR)/lib527-lib526.Po \ + ./$(DEPDIR)/lib527-testutil.Po ./$(DEPDIR)/lib529-first.Po \ + ./$(DEPDIR)/lib529-lib525.Po ./$(DEPDIR)/lib529-testutil.Po \ + ./$(DEPDIR)/lib530.Po ./$(DEPDIR)/lib532-first.Po \ + ./$(DEPDIR)/lib532-lib526.Po ./$(DEPDIR)/lib532-testutil.Po \ + ./$(DEPDIR)/lib533.Po ./$(DEPDIR)/lib537.Po \ + ./$(DEPDIR)/lib539.Po ./$(DEPDIR)/lib540.Po \ + ./$(DEPDIR)/lib541.Po ./$(DEPDIR)/lib542.Po \ + ./$(DEPDIR)/lib543.Po ./$(DEPDIR)/lib544.Po \ + ./$(DEPDIR)/lib545-first.Po ./$(DEPDIR)/lib545-lib544.Po \ + ./$(DEPDIR)/lib547.Po ./$(DEPDIR)/lib548-first.Po \ + ./$(DEPDIR)/lib548-lib547.Po ./$(DEPDIR)/lib549.Po \ + ./$(DEPDIR)/lib552.Po ./$(DEPDIR)/lib553.Po \ + ./$(DEPDIR)/lib554.Po ./$(DEPDIR)/lib555.Po \ + ./$(DEPDIR)/lib556.Po ./$(DEPDIR)/lib557.Po \ + ./$(DEPDIR)/lib558.Po ./$(DEPDIR)/lib559.Po \ + ./$(DEPDIR)/lib560.Po ./$(DEPDIR)/lib562.Po \ + ./$(DEPDIR)/lib564.Po ./$(DEPDIR)/lib565-first.Po \ + ./$(DEPDIR)/lib565-lib510.Po ./$(DEPDIR)/lib566.Po \ + ./$(DEPDIR)/lib567.Po ./$(DEPDIR)/lib568.Po \ + ./$(DEPDIR)/lib569.Po ./$(DEPDIR)/lib570.Po \ + ./$(DEPDIR)/lib571.Po ./$(DEPDIR)/lib572.Po \ + ./$(DEPDIR)/lib573.Po ./$(DEPDIR)/lib574.Po \ + ./$(DEPDIR)/lib575.Po ./$(DEPDIR)/lib576.Po \ + ./$(DEPDIR)/lib578.Po ./$(DEPDIR)/lib579.Po \ + ./$(DEPDIR)/lib582.Po ./$(DEPDIR)/lib583.Po \ + ./$(DEPDIR)/lib584-first.Po ./$(DEPDIR)/lib584-lib589.Po \ + ./$(DEPDIR)/lib585-first.Po ./$(DEPDIR)/lib585-lib500.Po \ + ./$(DEPDIR)/lib585-testtrace.Po ./$(DEPDIR)/lib585-testutil.Po \ + ./$(DEPDIR)/lib586.Po ./$(DEPDIR)/lib587-first.Po \ + ./$(DEPDIR)/lib587-lib554.Po ./$(DEPDIR)/lib589.Po \ + ./$(DEPDIR)/lib590.Po ./$(DEPDIR)/lib591.Po \ + ./$(DEPDIR)/lib597.Po ./$(DEPDIR)/lib598.Po \ + ./$(DEPDIR)/lib599.Po ./$(DEPDIR)/lib643.Po \ + ./$(DEPDIR)/lib645-first.Po ./$(DEPDIR)/lib645-lib643.Po \ + ./$(DEPDIR)/lib650.Po ./$(DEPDIR)/lib651.Po \ + ./$(DEPDIR)/lib652.Po ./$(DEPDIR)/lib653.Po \ + ./$(DEPDIR)/lib654.Po ./$(DEPDIR)/lib655.Po \ + ./$(DEPDIR)/lib658.Po ./$(DEPDIR)/lib659.Po \ + ./$(DEPDIR)/lib661.Po ./$(DEPDIR)/lib666.Po \ + ./$(DEPDIR)/lib667.Po ./$(DEPDIR)/lib668.Po \ + ./$(DEPDIR)/lib670-first.Po ./$(DEPDIR)/lib670-lib670.Po \ + ./$(DEPDIR)/lib670-testutil.Po ./$(DEPDIR)/lib670.Po \ + ./$(DEPDIR)/lib671-first.Po ./$(DEPDIR)/lib671-lib670.Po \ + ./$(DEPDIR)/lib671-testutil.Po ./$(DEPDIR)/lib672-first.Po \ + ./$(DEPDIR)/lib672-lib670.Po ./$(DEPDIR)/lib672-testutil.Po \ + ./$(DEPDIR)/lib674.Po ./$(DEPDIR)/lib676.Po \ + ./$(DEPDIR)/lib677.Po ./$(DEPDIR)/lib678.Po \ + ./$(DEPDIR)/libauthretry.Po \ ./$(DEPDIR)/libhostname_la-sethostname.Plo \ ./$(DEPDIR)/libntlmconnect.Po ./$(DEPDIR)/libprereq.Po \ ./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo \ @@ -1451,68 +1464,69 @@ SOURCES = $(libhostname_la_SOURCES) $(libstubgss_la_SOURCES) \ $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \ $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \ $(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \ - $(lib1542_SOURCES) $(lib1543_SOURCES) $(lib1550_SOURCES) \ - $(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \ - $(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \ - $(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \ - $(lib1560_SOURCES) $(lib1564_SOURCES) $(lib1565_SOURCES) \ - $(lib1567_SOURCES) $(lib1568_SOURCES) $(lib1569_SOURCES) \ - $(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1593_SOURCES) \ - $(lib1594_SOURCES) $(lib1596_SOURCES) $(lib1597_SOURCES) \ - $(lib1662_SOURCES) $(lib1903_SOURCES) $(lib1905_SOURCES) \ - $(lib1906_SOURCES) $(lib1907_SOURCES) $(lib1908_SOURCES) \ - $(lib1910_SOURCES) $(lib1911_SOURCES) $(lib1912_SOURCES) \ - $(lib1913_SOURCES) $(lib1915_SOURCES) $(lib1916_SOURCES) \ - $(lib1917_SOURCES) $(lib1918_SOURCES) $(lib1919_SOURCES) \ - $(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \ - $(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \ - $(lib1939_SOURCES) $(lib1940_SOURCES) $(lib1945_SOURCES) \ - $(lib1946_SOURCES) $(lib1947_SOURCES) $(lib1948_SOURCES) \ - $(lib1955_SOURCES) $(lib1956_SOURCES) $(lib1957_SOURCES) \ - $(lib1958_SOURCES) $(lib1959_SOURCES) $(lib1960_SOURCES) \ - $(lib1964_SOURCES) $(lib1970_SOURCES) $(lib1971_SOURCES) \ - $(lib1972_SOURCES) $(lib1973_SOURCES) $(lib1974_SOURCES) \ - $(lib1975_SOURCES) $(lib2301_SOURCES) $(lib2302_SOURCES) \ - $(lib2304_SOURCES) $(lib2305_SOURCES) $(lib2306_SOURCES) \ - $(lib2402_SOURCES) $(lib2404_SOURCES) $(lib2502_SOURCES) \ - $(lib3010_SOURCES) $(lib3025_SOURCES) $(lib3026_SOURCES) \ - $(lib3027_SOURCES) $(lib3100_SOURCES) $(lib3101_SOURCES) \ - $(lib3102_SOURCES) $(lib3103_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) $(lib584_SOURCES) \ - $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \ - $(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \ - $(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \ - $(lib643_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \ - $(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \ - $(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \ - $(lib659_SOURCES) $(lib661_SOURCES) $(lib666_SOURCES) \ - $(lib667_SOURCES) $(lib668_SOURCES) $(lib670_SOURCES) \ - $(lib671_SOURCES) $(lib672_SOURCES) $(lib673_SOURCES) \ - $(lib674_SOURCES) $(lib676_SOURCES) $(lib677_SOURCES) \ - $(lib678_SOURCES) $(libauthretry_SOURCES) \ - $(libntlmconnect_SOURCES) $(libprereq_SOURCES) + $(lib1542_SOURCES) $(lib1543_SOURCES) $(lib1545_SOURCES) \ + $(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \ + $(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \ + $(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \ + $(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1564_SOURCES) \ + $(lib1565_SOURCES) $(lib1567_SOURCES) $(lib1568_SOURCES) \ + $(lib1569_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \ + $(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \ + $(lib1597_SOURCES) $(lib1662_SOURCES) $(lib1900_SOURCES) \ + $(lib1903_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \ + $(lib1907_SOURCES) $(lib1908_SOURCES) $(lib1910_SOURCES) \ + $(lib1911_SOURCES) $(lib1912_SOURCES) $(lib1913_SOURCES) \ + $(lib1915_SOURCES) $(lib1916_SOURCES) $(lib1917_SOURCES) \ + $(lib1918_SOURCES) $(lib1919_SOURCES) $(lib1933_SOURCES) \ + $(lib1934_SOURCES) $(lib1935_SOURCES) $(lib1936_SOURCES) \ + $(lib1937_SOURCES) $(lib1938_SOURCES) $(lib1939_SOURCES) \ + $(lib1940_SOURCES) $(lib1945_SOURCES) $(lib1946_SOURCES) \ + $(lib1947_SOURCES) $(lib1948_SOURCES) $(lib1955_SOURCES) \ + $(lib1956_SOURCES) $(lib1957_SOURCES) $(lib1958_SOURCES) \ + $(lib1959_SOURCES) $(lib1960_SOURCES) $(lib1964_SOURCES) \ + $(lib1970_SOURCES) $(lib1971_SOURCES) $(lib1972_SOURCES) \ + $(lib1973_SOURCES) $(lib1974_SOURCES) $(lib1975_SOURCES) \ + $(lib2301_SOURCES) $(lib2302_SOURCES) $(lib2304_SOURCES) \ + $(lib2305_SOURCES) $(lib2306_SOURCES) $(lib2402_SOURCES) \ + $(lib2404_SOURCES) $(lib2502_SOURCES) $(lib3010_SOURCES) \ + $(lib3025_SOURCES) $(lib3026_SOURCES) $(lib3027_SOURCES) \ + $(lib3100_SOURCES) $(lib3101_SOURCES) $(lib3102_SOURCES) \ + $(lib3103_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) $(lib584_SOURCES) $(lib585_SOURCES) \ + $(lib586_SOURCES) $(lib587_SOURCES) $(lib589_SOURCES) \ + $(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \ + $(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \ + $(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \ + $(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \ + $(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \ + $(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \ + $(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \ + $(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \ + $(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \ + $(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \ + $(libprereq_SOURCES) DIST_SOURCES = $(libhostname_la_SOURCES) \ $(am__libstubgss_la_SOURCES_DIST) $(chkhostname_SOURCES) \ $(lib1156_SOURCES) $(lib1301_SOURCES) $(lib1500_SOURCES) \ @@ -1528,68 +1542,69 @@ DIST_SOURCES = $(libhostname_la_SOURCES) \ $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \ $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \ $(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \ - $(lib1542_SOURCES) $(lib1543_SOURCES) $(lib1550_SOURCES) \ - $(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \ - $(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \ - $(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \ - $(lib1560_SOURCES) $(lib1564_SOURCES) $(lib1565_SOURCES) \ - $(lib1567_SOURCES) $(lib1568_SOURCES) $(lib1569_SOURCES) \ - $(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1593_SOURCES) \ - $(lib1594_SOURCES) $(lib1596_SOURCES) $(lib1597_SOURCES) \ - $(lib1662_SOURCES) $(lib1903_SOURCES) $(lib1905_SOURCES) \ - $(lib1906_SOURCES) $(lib1907_SOURCES) $(lib1908_SOURCES) \ - $(lib1910_SOURCES) $(lib1911_SOURCES) $(lib1912_SOURCES) \ - $(lib1913_SOURCES) $(lib1915_SOURCES) $(lib1916_SOURCES) \ - $(lib1917_SOURCES) $(lib1918_SOURCES) $(lib1919_SOURCES) \ - $(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \ - $(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \ - $(lib1939_SOURCES) $(lib1940_SOURCES) $(lib1945_SOURCES) \ - $(lib1946_SOURCES) $(lib1947_SOURCES) $(lib1948_SOURCES) \ - $(lib1955_SOURCES) $(lib1956_SOURCES) $(lib1957_SOURCES) \ - $(lib1958_SOURCES) $(lib1959_SOURCES) $(lib1960_SOURCES) \ - $(lib1964_SOURCES) $(lib1970_SOURCES) $(lib1971_SOURCES) \ - $(lib1972_SOURCES) $(lib1973_SOURCES) $(lib1974_SOURCES) \ - $(lib1975_SOURCES) $(lib2301_SOURCES) $(lib2302_SOURCES) \ - $(lib2304_SOURCES) $(lib2305_SOURCES) $(lib2306_SOURCES) \ - $(lib2402_SOURCES) $(lib2404_SOURCES) $(lib2502_SOURCES) \ - $(lib3010_SOURCES) $(lib3025_SOURCES) $(lib3026_SOURCES) \ - $(lib3027_SOURCES) $(lib3100_SOURCES) $(lib3101_SOURCES) \ - $(lib3102_SOURCES) $(lib3103_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) $(lib584_SOURCES) \ - $(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \ - $(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \ - $(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \ - $(lib643_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \ - $(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \ - $(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \ - $(lib659_SOURCES) $(lib661_SOURCES) $(lib666_SOURCES) \ - $(lib667_SOURCES) $(lib668_SOURCES) $(lib670_SOURCES) \ - $(lib671_SOURCES) $(lib672_SOURCES) $(lib673_SOURCES) \ - $(lib674_SOURCES) $(lib676_SOURCES) $(lib677_SOURCES) \ - $(lib678_SOURCES) $(libauthretry_SOURCES) \ - $(libntlmconnect_SOURCES) $(libprereq_SOURCES) + $(lib1542_SOURCES) $(lib1543_SOURCES) $(lib1545_SOURCES) \ + $(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \ + $(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \ + $(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \ + $(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1564_SOURCES) \ + $(lib1565_SOURCES) $(lib1567_SOURCES) $(lib1568_SOURCES) \ + $(lib1569_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \ + $(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \ + $(lib1597_SOURCES) $(lib1662_SOURCES) $(lib1900_SOURCES) \ + $(lib1903_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \ + $(lib1907_SOURCES) $(lib1908_SOURCES) $(lib1910_SOURCES) \ + $(lib1911_SOURCES) $(lib1912_SOURCES) $(lib1913_SOURCES) \ + $(lib1915_SOURCES) $(lib1916_SOURCES) $(lib1917_SOURCES) \ + $(lib1918_SOURCES) $(lib1919_SOURCES) $(lib1933_SOURCES) \ + $(lib1934_SOURCES) $(lib1935_SOURCES) $(lib1936_SOURCES) \ + $(lib1937_SOURCES) $(lib1938_SOURCES) $(lib1939_SOURCES) \ + $(lib1940_SOURCES) $(lib1945_SOURCES) $(lib1946_SOURCES) \ + $(lib1947_SOURCES) $(lib1948_SOURCES) $(lib1955_SOURCES) \ + $(lib1956_SOURCES) $(lib1957_SOURCES) $(lib1958_SOURCES) \ + $(lib1959_SOURCES) $(lib1960_SOURCES) $(lib1964_SOURCES) \ + $(lib1970_SOURCES) $(lib1971_SOURCES) $(lib1972_SOURCES) \ + $(lib1973_SOURCES) $(lib1974_SOURCES) $(lib1975_SOURCES) \ + $(lib2301_SOURCES) $(lib2302_SOURCES) $(lib2304_SOURCES) \ + $(lib2305_SOURCES) $(lib2306_SOURCES) $(lib2402_SOURCES) \ + $(lib2404_SOURCES) $(lib2502_SOURCES) $(lib3010_SOURCES) \ + $(lib3025_SOURCES) $(lib3026_SOURCES) $(lib3027_SOURCES) \ + $(lib3100_SOURCES) $(lib3101_SOURCES) $(lib3102_SOURCES) \ + $(lib3103_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) $(lib584_SOURCES) $(lib585_SOURCES) \ + $(lib586_SOURCES) $(lib587_SOURCES) $(lib589_SOURCES) \ + $(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \ + $(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \ + $(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \ + $(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \ + $(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \ + $(lib661_SOURCES) $(lib666_SOURCES) $(lib667_SOURCES) \ + $(lib668_SOURCES) $(lib670_SOURCES) $(lib671_SOURCES) \ + $(lib672_SOURCES) $(lib673_SOURCES) $(lib674_SOURCES) \ + $(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \ + $(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \ + $(libprereq_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -2165,6 +2180,8 @@ lib1542_SOURCES = lib1542.c $(SUPPORTFILES) $(TESTUTIL) $(TSTTRACE) $(WARNLESS) lib1542_LDADD = $(TESTUTIL_LIBS) lib1543_SOURCES = lib1518.c $(SUPPORTFILES) lib1543_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1543 +lib1545_SOURCES = lib1545.c $(SUPPORTFILES) +lib1545_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_DISABLE_DEPRECATION lib1550_SOURCES = lib1550.c $(SUPPORTFILES) lib1551_SOURCES = lib1551.c $(SUPPORTFILES) lib1552_SOURCES = lib1552.c $(SUPPORTFILES) $(TESTUTIL) @@ -2206,6 +2223,7 @@ lib1597_SOURCES = lib1597.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1597_LDADD = $(TESTUTIL_LIBS) lib1662_SOURCES = lib1662.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1662_LDADD = $(TESTUTIL_LIBS) +lib1900_SOURCES = lib1900.c $(SUPPORTFILES) lib1903_SOURCES = lib1903.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1903_LDADD = $(TESTUTIL_LIBS) lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) @@ -2333,7 +2351,7 @@ libstubgss_la_LDFLAGS_EXTRA = $(am__append_3) libhostname_la_CPPFLAGS = $(AM_CPPFLAGS) $(libhostname_la_CPPFLAGS_EXTRA) libhostname_la_LDFLAGS = $(AM_LDFLAGS) $(libhostname_la_LDFLAGS_EXTRA) libhostname_la_CFLAGS = $(AM_CFLAGS) $(libhostname_la_CFLAGS_EXTRA) -libhostname_la_SOURCES = sethostname.c sethostname.h +libhostname_la_SOURCES = sethostname.c libhostname_la_LIBADD = libhostname_la_DEPENDENCIES = @BUILD_STUB_GSS_TRUE@libstubgss_la_CPPFLAGS = $(AM_CPPFLAGS) @@ -2614,6 +2632,12 @@ lib1542$(EXEEXT): $(lib1542_OBJECTS) $(lib1542_DEPENDENCIES) $(EXTRA_lib1542_DEP lib1543$(EXEEXT): $(lib1543_OBJECTS) $(lib1543_DEPENDENCIES) $(EXTRA_lib1543_DEPENDENCIES) @rm -f lib1543$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1543_OBJECTS) $(lib1543_LDADD) $(LIBS) +../../lib/lib1545-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \ + ../../lib/$(DEPDIR)/$(am__dirstamp) + +lib1545$(EXEEXT): $(lib1545_OBJECTS) $(lib1545_DEPENDENCIES) $(EXTRA_lib1545_DEPENDENCIES) + @rm -f lib1545$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(lib1545_OBJECTS) $(lib1545_LDADD) $(LIBS) lib1550$(EXEEXT): $(lib1550_OBJECTS) $(lib1550_DEPENDENCIES) $(EXTRA_lib1550_DEPENDENCIES) @rm -f lib1550$(EXEEXT) @@ -2711,6 +2735,10 @@ lib1662$(EXEEXT): $(lib1662_OBJECTS) $(lib1662_DEPENDENCIES) $(EXTRA_lib1662_DEP @rm -f lib1662$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1662_OBJECTS) $(lib1662_LDADD) $(LIBS) +lib1900$(EXEEXT): $(lib1900_OBJECTS) $(lib1900_DEPENDENCIES) $(EXTRA_lib1900_DEPENDENCIES) + @rm -f lib1900$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(lib1900_OBJECTS) $(lib1900_LDADD) $(LIBS) + lib1903$(EXEEXT): $(lib1903_OBJECTS) $(lib1903_DEPENDENCIES) $(EXTRA_lib1903_DEPENDENCIES) @rm -f lib1903$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lib1903_OBJECTS) $(lib1903_LDADD) $(LIBS) @@ -3422,6 +3450,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1539-timediff.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1539-warnless.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1543-timediff.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1545-timediff.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-timediff.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)/lib1917-timediff.Po@am__quote@ # am--include-marker @@ -3508,6 +3537,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1542.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1543-first.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1543-lib1518.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1545-first.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1545-lib1545.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1550.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1551.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1552.Po@am__quote@ # am--include-marker @@ -3533,6 +3564,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-testutil.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1597.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1662.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1903.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906.Po@am__quote@ # am--include-marker @@ -4200,6 +4232,48 @@ lib1543-first.obj: first.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi` +lib1545-lib1545.o: lib1545.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1545-lib1545.o -MD -MP -MF $(DEPDIR)/lib1545-lib1545.Tpo -c -o lib1545-lib1545.o `test -f 'lib1545.c' || echo '$(srcdir)/'`lib1545.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1545-lib1545.Tpo $(DEPDIR)/lib1545-lib1545.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1545.c' object='lib1545-lib1545.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) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1545-lib1545.o `test -f 'lib1545.c' || echo '$(srcdir)/'`lib1545.c + +lib1545-lib1545.obj: lib1545.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1545-lib1545.obj -MD -MP -MF $(DEPDIR)/lib1545-lib1545.Tpo -c -o lib1545-lib1545.obj `if test -f 'lib1545.c'; then $(CYGPATH_W) 'lib1545.c'; else $(CYGPATH_W) '$(srcdir)/lib1545.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1545-lib1545.Tpo $(DEPDIR)/lib1545-lib1545.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lib1545.c' object='lib1545-lib1545.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) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1545-lib1545.obj `if test -f 'lib1545.c'; then $(CYGPATH_W) 'lib1545.c'; else $(CYGPATH_W) '$(srcdir)/lib1545.c'; fi` + +../../lib/lib1545-timediff.o: ../../lib/timediff.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1545-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1545-timediff.Tpo -c -o ../../lib/lib1545-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1545-timediff.Tpo ../../lib/$(DEPDIR)/lib1545-timediff.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1545-timediff.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) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1545-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c + +../../lib/lib1545-timediff.obj: ../../lib/timediff.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1545-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1545-timediff.Tpo -c -o ../../lib/lib1545-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1545-timediff.Tpo ../../lib/$(DEPDIR)/lib1545-timediff.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1545-timediff.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) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1545-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi` + +lib1545-first.o: first.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1545-first.o -MD -MP -MF $(DEPDIR)/lib1545-first.Tpo -c -o lib1545-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lib1545-first.Tpo $(DEPDIR)/lib1545-first.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1545-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) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1545-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c + +lib1545-first.obj: first.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1545-first.obj -MD -MP -MF $(DEPDIR)/lib1545-first.Tpo -c -o lib1545-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)/lib1545-first.Tpo $(DEPDIR)/lib1545-first.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='first.c' object='lib1545-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) $(lib1545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1545-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.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 @@ -5356,6 +5430,7 @@ distclean: distclean-am -rm -f ../../lib/$(DEPDIR)/lib1539-timediff.Po -rm -f ../../lib/$(DEPDIR)/lib1539-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1543-timediff.Po + -rm -f ../../lib/$(DEPDIR)/lib1545-timediff.Po -rm -f ../../lib/$(DEPDIR)/lib1596-timediff.Po -rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1917-timediff.Po @@ -5442,6 +5517,8 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/lib1542.Po -rm -f ./$(DEPDIR)/lib1543-first.Po -rm -f ./$(DEPDIR)/lib1543-lib1518.Po + -rm -f ./$(DEPDIR)/lib1545-first.Po + -rm -f ./$(DEPDIR)/lib1545-lib1545.Po -rm -f ./$(DEPDIR)/lib1550.Po -rm -f ./$(DEPDIR)/lib1551.Po -rm -f ./$(DEPDIR)/lib1552.Po @@ -5467,6 +5544,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/lib1596-testutil.Po -rm -f ./$(DEPDIR)/lib1597.Po -rm -f ./$(DEPDIR)/lib1662.Po + -rm -f ./$(DEPDIR)/lib1900.Po -rm -f ./$(DEPDIR)/lib1903.Po -rm -f ./$(DEPDIR)/lib1905.Po -rm -f ./$(DEPDIR)/lib1906.Po @@ -5714,6 +5792,7 @@ maintainer-clean: maintainer-clean-am -rm -f ../../lib/$(DEPDIR)/lib1539-timediff.Po -rm -f ../../lib/$(DEPDIR)/lib1539-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1543-timediff.Po + -rm -f ../../lib/$(DEPDIR)/lib1545-timediff.Po -rm -f ../../lib/$(DEPDIR)/lib1596-timediff.Po -rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po -rm -f ../../lib/$(DEPDIR)/lib1917-timediff.Po @@ -5800,6 +5879,8 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/lib1542.Po -rm -f ./$(DEPDIR)/lib1543-first.Po -rm -f ./$(DEPDIR)/lib1543-lib1518.Po + -rm -f ./$(DEPDIR)/lib1545-first.Po + -rm -f ./$(DEPDIR)/lib1545-lib1545.Po -rm -f ./$(DEPDIR)/lib1550.Po -rm -f ./$(DEPDIR)/lib1551.Po -rm -f ./$(DEPDIR)/lib1552.Po @@ -5825,6 +5906,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/lib1596-testutil.Po -rm -f ./$(DEPDIR)/lib1597.Po -rm -f ./$(DEPDIR)/lib1662.Po + -rm -f ./$(DEPDIR)/lib1900.Po -rm -f ./$(DEPDIR)/lib1903.Po -rm -f ./$(DEPDIR)/lib1905.Po -rm -f ./$(DEPDIR)/lib1906.Po diff --git a/external/curl/tests/libtest/Makefile.inc b/external/curl/tests/libtest/Makefile.inc index 85801e002..c4d36a26b 100644 --- a/external/curl/tests/libtest/Makefile.inc +++ b/external/curl/tests/libtest/Makefile.inc @@ -58,13 +58,14 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect libprereq \ lib1518 lib1520 lib1521 lib1522 lib1523 \ lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \ lib1534 lib1535 lib1536 lib1537 lib1538 lib1539 \ - lib1540 lib1542 lib1543 \ + lib1540 lib1542 lib1543 lib1545 \ lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \ lib1558 lib1559 lib1560 lib1564 lib1565 lib1567 lib1568 lib1569 \ lib1591 lib1592 lib1593 lib1594 lib1596 lib1597 \ \ lib1662 \ \ + lib1900 \ lib1903 lib1905 lib1906 lib1907 lib1908 lib1910 lib1911 lib1912 lib1913 \ lib1915 lib1916 lib1917 lib1918 lib1919 \ lib1933 lib1934 lib1935 lib1936 lib1937 lib1938 lib1939 lib1940 \ @@ -466,6 +467,9 @@ lib1542_LDADD = $(TESTUTIL_LIBS) lib1543_SOURCES = lib1518.c $(SUPPORTFILES) lib1543_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1543 +lib1545_SOURCES = lib1545.c $(SUPPORTFILES) +lib1545_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_DISABLE_DEPRECATION + lib1550_SOURCES = lib1550.c $(SUPPORTFILES) lib1551_SOURCES = lib1551.c $(SUPPORTFILES) @@ -530,6 +534,8 @@ lib1597_LDADD = $(TESTUTIL_LIBS) lib1662_SOURCES = lib1662.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1662_LDADD = $(TESTUTIL_LIBS) +lib1900_SOURCES = lib1900.c $(SUPPORTFILES) + lib1903_SOURCES = lib1903.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS) lib1903_LDADD = $(TESTUTIL_LIBS) diff --git a/external/curl/tests/libtest/first.c b/external/curl/tests/libtest/first.c index 7bd129ab3..6d1380688 100644 --- a/external/curl/tests/libtest/first.c +++ b/external/curl/tests/libtest/first.c @@ -174,7 +174,7 @@ int main(int argc, char **argv) result = test(URL); fprintf(stderr, "Test ended with result %d\n", result); -#ifdef WIN32 +#ifdef _WIN32 /* flush buffers of all streams regardless of mode */ _flushall(); #endif diff --git a/external/curl/tests/libtest/lib1156.c b/external/curl/tests/libtest/lib1156.c index aae2893ef..b512ef67a 100644 --- a/external/curl/tests/libtest/lib1156.c +++ b/external/curl/tests/libtest/lib1156.c @@ -68,7 +68,7 @@ static const struct testparams params[] = { { F_RESUME | F_HTTP416 | F_CONTENTRANGE | F_IGNOREBODY, CURLE_OK }, { F_RESUME | F_HTTP416 | F_FAIL | F_IGNOREBODY, CURLE_OK }, { F_RESUME | F_HTTP416 | F_FAIL | F_CONTENTRANGE | F_IGNOREBODY, - CURLE_HTTP_RETURNED_ERROR } + CURLE_OK } }; static int hasbody; diff --git a/external/curl/tests/libtest/lib1517.c b/external/curl/tests/libtest/lib1517.c index 706b5567c..126792017 100644 --- a/external/curl/tests/libtest/lib1517.c +++ b/external/curl/tests/libtest/lib1517.c @@ -61,7 +61,7 @@ int test(char *URL) struct WriteThis pooh; if(!strcmp(URL, "check")) { -#if (defined(WIN32) || defined(__CYGWIN__)) +#if (defined(_WIN32) || defined(__CYGWIN__)) printf("Windows TCP does not deliver response data but reports " "CONNABORTED\n"); return 1; /* skip since test will fail on Windows without workaround */ diff --git a/external/curl/tests/libtest/lib1531.c b/external/curl/tests/libtest/lib1531.c index 703400178..b64e16603 100644 --- a/external/curl/tests/libtest/lib1531.c +++ b/external/curl/tests/libtest/lib1531.c @@ -110,7 +110,7 @@ int test(char *URL) curl_multi_fdset() doc. */ if(maxfd == -1) { -#if defined(WIN32) || defined(_WIN32) +#if defined(_WIN32) Sleep(100); rc = 0; #else diff --git a/external/curl/tests/libtest/lib1545.c b/external/curl/tests/libtest/lib1545.c new file mode 100644 index 000000000..f31baa0c4 --- /dev/null +++ b/external/curl/tests/libtest/lib1545.c @@ -0,0 +1,56 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +#ifndef CURL_DISABLE_DEPRECATION +#define CURL_DISABLE_DEPRECATION /* Using and testing the form api */ +#endif +#include "test.h" + +int test(char *URL) +{ + CURL *eh = NULL; + int res = 0; + struct curl_httppost *lastptr = NULL; + struct curl_httppost *m_formpost = NULL; + + global_init(CURL_GLOBAL_ALL); + + easy_init(eh); + + easy_setopt(eh, CURLOPT_URL, URL); + curl_formadd(&m_formpost, &lastptr, CURLFORM_COPYNAME, "file", + CURLFORM_FILE, "missing-file", CURLFORM_END); + curl_easy_setopt(eh, CURLOPT_HTTPPOST, m_formpost); + + (void)curl_easy_perform(eh); + (void)curl_easy_perform(eh); + +test_cleanup: + + curl_formfree(m_formpost); + + curl_easy_cleanup(eh); + curl_global_cleanup(); + + return res; +} diff --git a/external/curl/tests/libtest/lib1560.c b/external/curl/tests/libtest/lib1560.c index 765df0a27..87420a330 100644 --- a/external/curl/tests/libtest/lib1560.c +++ b/external/curl/tests/libtest/lib1560.c @@ -151,6 +151,9 @@ struct clearurlcase { }; static const struct testcase get_parts_list[] ={ + {"https://curl.se/# ", + "https | [11] | [12] | [13] | curl.se | [15] | / | [16] | %20%20", + CURLU_URLENCODE|CURLU_ALLOW_SPACE, 0, CURLUE_OK}, {"", "", 0, 0, CURLUE_MALFORMED_INPUT}, {" ", "", 0, 0, CURLUE_MALFORMED_INPUT}, {"1h://example.net", "", 0, 0, CURLUE_BAD_SCHEME}, @@ -316,7 +319,7 @@ static const struct testcase get_parts_list[] ={ "http | ftp.user | moo | [13] | example.com | [15] | /color/ | [16] | " "green?no-red", CURLU_GUESS_SCHEME, 0, CURLUE_OK }, -#ifdef WIN32 +#ifdef _WIN32 {"file:/C:\\programs\\foo", "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK}, @@ -785,6 +788,18 @@ static const struct setgetcase setget_parts_list[] = { /* !checksrc! disable SPACEBEFORECOMMA 1 */ static const struct setcase set_parts_list[] = { + {"https://example.com/?param=value", + "query=\"\",", + "https://example.com/", + 0, CURLU_APPENDQUERY | CURLU_URLENCODE, CURLUE_OK, CURLUE_OK}, + {"https://example.com/", + "host=\"\",", + "https://example.com/", + 0, CURLU_URLENCODE, CURLUE_OK, CURLUE_BAD_HOSTNAME}, + {"https://example.com/", + "host=\"\",", + "https://example.com/", + 0, 0, CURLUE_OK, CURLUE_BAD_HOSTNAME}, {"https://example.com", "path=get,", "https://example.com/get", diff --git a/external/curl/tests/libtest/lib1900.c b/external/curl/tests/libtest/lib1900.c new file mode 100644 index 000000000..92f89c4c4 --- /dev/null +++ b/external/curl/tests/libtest/lib1900.c @@ -0,0 +1,55 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) Daniel Stenberg, , 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.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. + * + * SPDX-License-Identifier: curl + * + ***************************************************************************/ +#include "test.h" + +#include "testutil.h" +#include "warnless.h" +#include "memdebug.h" + +int test(char *URL) +{ + CURLcode res = CURLE_OK; + CURL *hnd = NULL; + CURL *second = NULL; + + global_init(CURL_GLOBAL_ALL); + + easy_init(hnd); + easy_setopt(hnd, CURLOPT_URL, URL); + easy_setopt(hnd, CURLOPT_HSTS, "first-hsts.txt"); + easy_setopt(hnd, CURLOPT_HSTS, "second-hsts.txt"); + + second = curl_easy_duphandle(hnd); + + curl_easy_cleanup(hnd); + curl_easy_cleanup(second); + curl_global_cleanup(); + return 0; + +test_cleanup: + curl_easy_cleanup(hnd); + curl_easy_cleanup(second); + curl_global_cleanup(); + return (int)res; +} diff --git a/external/curl/tests/libtest/lib1960.c b/external/curl/tests/libtest/lib1960.c index fc2f4b0af..b01370e6e 100644 --- a/external/curl/tests/libtest/lib1960.c +++ b/external/curl/tests/libtest/lib1960.c @@ -25,7 +25,7 @@ #ifdef HAVE_INET_PTON -#ifdef WIN32 +#ifdef _WIN32 #include #include #include diff --git a/external/curl/tests/libtest/lib2305.c b/external/curl/tests/libtest/lib2305.c index 0778e0b58..374423f0f 100644 --- a/external/curl/tests/libtest/lib2305.c +++ b/external/curl/tests/libtest/lib2305.c @@ -71,8 +71,6 @@ static void websocket(CURL *curl) websocket_close(curl); } -extern struct libtest_trace_cfg libtest_debug_config; - int test(char *URL) { CURL *curl; diff --git a/external/curl/tests/libtest/lib3026.c b/external/curl/tests/libtest/lib3026.c index 42b44c890..34dcafc50 100644 --- a/external/curl/tests/libtest/lib3026.c +++ b/external/curl/tests/libtest/lib3026.c @@ -28,7 +28,7 @@ #define NUM_THREADS 100 -#ifdef WIN32 +#ifdef _WIN32 #ifdef _WIN32_WCE static DWORD WINAPI run_thread(LPVOID ptr) #else diff --git a/external/curl/tests/libtest/lib518.c b/external/curl/tests/libtest/lib518.c index 87b6f2d88..e61d80a6f 100644 --- a/external/curl/tests/libtest/lib518.c +++ b/external/curl/tests/libtest/lib518.c @@ -42,7 +42,7 @@ #define NUM_OPEN (FD_SETSIZE + 10) #define NUM_NEEDED (NUM_OPEN + SAFETY_MARGIN) -#if defined(WIN32) || defined(_WIN32) || defined(MSDOS) +#if defined(_WIN32) || defined(MSDOS) #define DEV_NULL "NUL" #else #define DEV_NULL "/dev/null" diff --git a/external/curl/tests/libtest/lib537.c b/external/curl/tests/libtest/lib537.c index 3782282b8..8735947cf 100644 --- a/external/curl/tests/libtest/lib537.c +++ b/external/curl/tests/libtest/lib537.c @@ -42,7 +42,7 @@ #define SAFETY_MARGIN (11) -#if defined(WIN32) || defined(_WIN32) || defined(MSDOS) +#if defined(_WIN32) || defined(MSDOS) #define DEV_NULL "NUL" #else #define DEV_NULL "/dev/null" diff --git a/external/curl/tests/libtest/lib544.c b/external/curl/tests/libtest/lib544.c index 192bfb2e7..a58fa05e3 100644 --- a/external/curl/tests/libtest/lib544.c +++ b/external/curl/tests/libtest/lib544.c @@ -63,7 +63,6 @@ int test(char *URL) /* Update the original data to detect non-copy. */ strcpy(teststring, "FAIL"); -#ifdef LIB545 { CURL *handle2; handle2 = curl_easy_duphandle(curl); @@ -71,7 +70,6 @@ int test(char *URL) curl = handle2; } -#endif /* Now, this is a POST request with binary 0 embedded in POST data. */ res = curl_easy_perform(curl); diff --git a/external/curl/tests/libtest/lib670.c b/external/curl/tests/libtest/lib670.c index 700b908cf..b348343c2 100644 --- a/external/curl/tests/libtest/lib670.c +++ b/external/curl/tests/libtest/lib670.c @@ -215,7 +215,7 @@ int test(char *URL) mres = curl_multi_fdset(multi, &fdread, &fdwrite, &fdexcept, &maxfd); if(mres) break; -#if defined(WIN32) || defined(_WIN32) +#if defined(_WIN32) if(maxfd == -1) Sleep(100); else diff --git a/external/curl/tests/libtest/sethostname.c b/external/curl/tests/libtest/sethostname.c index 9dcad976c..1e07d26bc 100644 --- a/external/curl/tests/libtest/sethostname.c +++ b/external/curl/tests/libtest/sethostname.c @@ -23,8 +23,6 @@ ***************************************************************************/ #include "curl_setup.h" -#include "sethostname.h" - /* * we force our own host name, in order to make some tests machine independent */ diff --git a/external/curl/tests/libtest/stub_gssapi.c b/external/curl/tests/libtest/stub_gssapi.c index 634dddfd0..85c760c2d 100644 --- a/external/curl/tests/libtest/stub_gssapi.c +++ b/external/curl/tests/libtest/stub_gssapi.c @@ -183,7 +183,7 @@ OM_uint32 gss_init_sec_context(OM_uint32 *min, return GSS_S_FAILURE; } - ctx = (gss_ctx_id_t) calloc(sizeof(*ctx), 1); + ctx = (gss_ctx_id_t) calloc(1, sizeof(*ctx)); if(!ctx) { *min = GSS_NO_MEMORY; return GSS_S_FAILURE; diff --git a/external/curl/tests/libtest/test.h b/external/curl/tests/libtest/test.h index 7eb7fdaa2..7f29db117 100644 --- a/external/curl/tests/libtest/test.h +++ b/external/curl/tests/libtest/test.h @@ -42,7 +42,7 @@ #include "curl_printf.h" -#ifdef WIN32 +#ifdef _WIN32 #define sleep(sec) Sleep ((sec)*1000) #endif diff --git a/external/curl/tests/libtest/test613.pl b/external/curl/tests/libtest/test613.pl index 3ad7805af..dee3b1754 100755 --- a/external/curl/tests/libtest/test613.pl +++ b/external/curl/tests/libtest/test613.pl @@ -81,7 +81,7 @@ sub errout { rmdir $dirname || die "$!"; - if ($logfile) { + if ($logfile && -s $logfile) { # Process the directory file to remove all information that # could be inconsistent from one test run to the next (e.g. # file date) or may be unsupported on some platforms (e.g. diff --git a/external/curl/tests/libtest/testutil.c b/external/curl/tests/libtest/testutil.c index 1a1e689e7..4a3cd944a 100644 --- a/external/curl/tests/libtest/testutil.c +++ b/external/curl/tests/libtest/testutil.c @@ -26,7 +26,7 @@ #include "testutil.h" #include "memdebug.h" -#if defined(WIN32) && !defined(MSDOS) +#if defined(_WIN32) struct timeval tutil_tvnow(void) { @@ -130,7 +130,7 @@ double tutil_tvdiff_secs(struct timeval newer, struct timeval older) return (double)(newer.tv_usec-older.tv_usec)/1000000.0; } -#ifdef WIN32 +#ifdef _WIN32 HMODULE win32_load_system_library(const TCHAR *filename) { size_t filenamelen = _tcslen(filename); diff --git a/external/curl/tests/libtest/testutil.h b/external/curl/tests/libtest/testutil.h index 36b944834..9f063795a 100644 --- a/external/curl/tests/libtest/testutil.h +++ b/external/curl/tests/libtest/testutil.h @@ -42,7 +42,7 @@ long tutil_tvdiff(struct timeval t1, struct timeval t2); */ double tutil_tvdiff_secs(struct timeval t1, struct timeval t2); -#ifdef WIN32 +#ifdef _WIN32 HMODULE win32_load_system_library(const TCHAR *filename); #endif diff --git a/external/curl/tests/pathhelp.pm b/external/curl/tests/pathhelp.pm index 7d924b862..3afc5dacb 100644 --- a/external/curl/tests/pathhelp.pm +++ b/external/curl/tests/pathhelp.pm @@ -789,6 +789,7 @@ sub exe_ext { $^O eq 'dos' || $^O eq 'os2') { return '.exe'; } + return ''; } 1; # End of module diff --git a/external/curl/tests/runtests.1 b/external/curl/tests/runtests.1 index 46d3ec2ec..d7b863b9e 100644 --- a/external/curl/tests/runtests.1 +++ b/external/curl/tests/runtests.1 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH runtests.pl 1 "August 01, 2023" "untests 8.4.0" runtests +.TH runtests.pl 1 "October 24, 2023" "untests 8.5.0" runtests .SH NAME runtests.pl \- run one or more test cases @@ -54,6 +54,35 @@ this keyword. Remember that the exclamation marks and spaces will need to be quoted somehow when entered at many command shells. Prefix a keyword with a tilde (~) to still run it, but ignore the results. + +.SH "OUTPUT" + +When running without -s (short output), for instance when running runtests.pl +directly rather than via make, each test will emits a pair of lines like this: + +Test 0045...[simple HTTP Location: without protocol in initial URL] +--pd---e-v- OK (45 out of 1427, remaining: 16:08, took 6.188s, duration: 00:31) + +the first line contains the test number and a description. On the second line, +the characters at the beginning are flags indicating which aspects of curl's +behavior were checked by the test: + + s stdout + r stderr + p protocol + d data + u upload + P proxy + o output + e exit code + m memory + v valgrind + E the test was run event-based + +The remainder of the second line contains the test result, current test sequence, +total number of tests to be run and an estimated amount of time to complete the +test run. + .SH OPTIONS .IP "-a" Continue running the rest of the test cases even if one test fails. By @@ -92,9 +121,6 @@ start. Run the given test(s) with gdb as a windowed application. .IP "-h, --help" Displays a help text about this program's command line options. -.IP "-k" -Keep output and log files in log/ after a test run, even if no error was -detected. Useful for debugging. .IP "-j[num]" Spawn num processes to run tests. This defaults to 0 to run tests serially within a single process. Using a number greater than one allows multiple tests @@ -102,6 +128,9 @@ to run in parallel, speeding up a test run. The optimum number is dependent on the system and set of tests to run, but 7*number of CPU cores is a good figure to start with, or 1.3*number of CPU cores if Valgrind is in use. Enabling parallel tests is not recommended in conjunction with the \-g option. +.IP "-k" +Keep output and log files in log/ after a test run, even if no error was +detected. Useful for debugging. .IP "-L " Load and execute the specified file which should contain perl code. This option allows one to change \fIruntests.pl\fP behaviour by overwriting diff --git a/external/curl/tests/runtests.pl b/external/curl/tests/runtests.pl index 32e068037..e7b9f01f6 100755 --- a/external/curl/tests/runtests.pl +++ b/external/curl/tests/runtests.pl @@ -23,6 +23,8 @@ # ########################################################################### +# For documentation, run `man ./runtests.1` and see README.md. + # Experimental hooks are available to run tests remotely on machines that # are able to run curl but are unable to run the test harness. # The following sections need to be modified: @@ -1503,7 +1505,7 @@ sub singletest_check { } else { - $ok .= "-"; # protocol not checked + $ok .= "-"; # proxy not checked } my $outputok; diff --git a/external/curl/tests/server/getpart.c b/external/curl/tests/server/getpart.c index 7d3bff75a..9ab9e88d5 100644 --- a/external/curl/tests/server/getpart.c +++ b/external/curl/tests/server/getpart.c @@ -60,7 +60,7 @@ curl_free_callback Curl_cfree = (curl_free_callback)free; curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc; curl_strdup_callback Curl_cstrdup = (curl_strdup_callback)strdup; curl_calloc_callback Curl_ccalloc = (curl_calloc_callback)calloc; -#if defined(WIN32) && defined(UNICODE) +#if defined(_WIN32) && defined(UNICODE) curl_wcsdup_callback Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup; #endif @@ -149,7 +149,7 @@ static int readline(char **buffer, size_t *bufsize, size_t *length, char *newptr; if(!*buffer) { - *buffer = calloc(128, 1); + *buffer = calloc(1, 128); if(!*buffer) return GPE_OUT_OF_MEMORY; *bufsize = 128; diff --git a/external/curl/tests/server/mqttd.c b/external/curl/tests/server/mqttd.c index 55ef02cdb..8a0da3ee6 100644 --- a/external/curl/tests/server/mqttd.c +++ b/external/curl/tests/server/mqttd.c @@ -98,7 +98,6 @@ #define MQTT_CONNACK_LEN 4 #define MQTT_SUBACK_LEN 5 #define MQTT_CLIENTID_LEN 12 /* "curl0123abcd" */ -#define MQTT_HEADER_LEN 5 /* max 5 bytes */ struct configurable { unsigned char version; /* initial version byte in the request must match @@ -1017,7 +1016,7 @@ int main(int argc, char *argv[]) msnprintf(loglockfile, sizeof(loglockfile), "%s/%s/mqtt-%s.lock", logdir, SERVERLOGS_LOCKDIR, ipv_inuse); -#ifdef WIN32 +#ifdef _WIN32 win32_init(); atexit(win32_cleanup); diff --git a/external/curl/tests/server/resolve.c b/external/curl/tests/server/resolve.c index 221df64b0..8ae31bc59 100644 --- a/external/curl/tests/server/resolve.c +++ b/external/curl/tests/server/resolve.c @@ -102,7 +102,7 @@ int main(int argc, char *argv[]) return 1; } -#ifdef WIN32 +#ifdef _WIN32 win32_init(); atexit(win32_cleanup); #endif diff --git a/external/curl/tests/server/rtspd.c b/external/curl/tests/server/rtspd.c index dbe8a48b0..9c01ce871 100644 --- a/external/curl/tests/server/rtspd.c +++ b/external/curl/tests/server/rtspd.c @@ -1150,7 +1150,7 @@ int main(int argc, char *argv[]) msnprintf(loglockfile, sizeof(loglockfile), "%s/%s/rtsp-%s.lock", logdir, SERVERLOGS_LOCKDIR, ipv_inuse); -#ifdef WIN32 +#ifdef _WIN32 win32_init(); atexit(win32_cleanup); #endif diff --git a/external/curl/tests/server/sockfilt.c b/external/curl/tests/server/sockfilt.c index 7e342e330..f87d1c8f9 100644 --- a/external/curl/tests/server/sockfilt.c +++ b/external/curl/tests/server/sockfilt.c @@ -152,7 +152,7 @@ enum sockmode { ACTIVE_DISCONNECT /* as a client, disconnected from server */ }; -#ifdef WIN32 +#ifdef _WIN32 /* * read-wrapper to support reading from stdin on Windows. */ @@ -1461,7 +1461,7 @@ int main(int argc, char *argv[]) } } -#ifdef WIN32 +#ifdef _WIN32 win32_init(); atexit(win32_cleanup); diff --git a/external/curl/tests/server/socksd.c b/external/curl/tests/server/socksd.c index cf9a14fd8..490085d49 100644 --- a/external/curl/tests/server/socksd.c +++ b/external/curl/tests/server/socksd.c @@ -379,6 +379,10 @@ static curl_socket_t sockit(curl_socket_t fd) getconfig(); rc = recv(fd, (char *)buffer, sizeof(buffer), 0); + if(rc <= 0) { + logmsg("SOCKS identifier message missing, recv returned %d", rc); + return CURL_SOCKET_BAD; + } logmsg("READ %d bytes", rc); loghex(buffer, rc); @@ -386,6 +390,11 @@ static curl_socket_t sockit(curl_socket_t fd) if(buffer[SOCKS5_VERSION] == 4) return socks4(fd, buffer, rc); + if(rc < 3) { + logmsg("SOCKS5 identifier message too short: %d", rc); + return CURL_SOCKET_BAD; + } + if(buffer[SOCKS5_VERSION] != config.version) { logmsg("VERSION byte not %d", config.version); return CURL_SOCKET_BAD; @@ -417,6 +426,10 @@ static curl_socket_t sockit(curl_socket_t fd) /* expect the request or auth */ rc = recv(fd, (char *)buffer, sizeof(buffer), 0); + if(rc <= 0) { + logmsg("SOCKS5 request or auth message missing, recv returned %d", rc); + return CURL_SOCKET_BAD; + } logmsg("READ %d bytes", rc); loghex(buffer, rc); @@ -472,6 +485,10 @@ static curl_socket_t sockit(curl_socket_t fd) /* expect the request */ rc = recv(fd, (char *)buffer, sizeof(buffer), 0); + if(rc <= 0) { + logmsg("SOCKS5 request message missing, recv returned %d", rc); + return CURL_SOCKET_BAD; + } logmsg("READ %d bytes", rc); loghex(buffer, rc); @@ -1059,7 +1076,7 @@ int main(int argc, char *argv[]) } } -#ifdef WIN32 +#ifdef _WIN32 win32_init(); atexit(win32_cleanup); diff --git a/external/curl/tests/server/sws.c b/external/curl/tests/server/sws.c index bea3191a2..fa9b1ac80 100644 --- a/external/curl/tests/server/sws.c +++ b/external/curl/tests/server/sws.c @@ -2119,7 +2119,7 @@ int main(int argc, char *argv[]) logdir, SERVERLOGS_LOCKDIR, protocol_type, is_proxy ? "-proxy" : "", socket_type); -#ifdef WIN32 +#ifdef _WIN32 win32_init(); atexit(win32_cleanup); #endif diff --git a/external/curl/tests/server/tftpd.c b/external/curl/tests/server/tftpd.c index 670897c0d..9f93f4c6b 100644 --- a/external/curl/tests/server/tftpd.c +++ b/external/curl/tests/server/tftpd.c @@ -453,7 +453,7 @@ static ssize_t write_behind(struct testcase *test, int convert) if(!test->ofile) { char outfile[256]; msnprintf(outfile, sizeof(outfile), "%s/upload.%ld", logdir, test->testno); -#ifdef WIN32 +#ifdef _WIN32 test->ofile = open(outfile, O_CREAT|O_RDWR|O_BINARY, 0777); #else test->ofile = open(outfile, O_CREAT|O_RDWR, 0777); @@ -642,7 +642,7 @@ int main(int argc, char **argv) msnprintf(loglockfile, sizeof(loglockfile), "%s/%s/tftp-%s.lock", logdir, SERVERLOGS_LOCKDIR, ipv_inuse); -#ifdef WIN32 +#ifdef _WIN32 win32_init(); atexit(win32_cleanup); #endif diff --git a/external/curl/tests/server/util.c b/external/curl/tests/server/util.c index 19faa2615..5cfdab269 100644 --- a/external/curl/tests/server/util.c +++ b/external/curl/tests/server/util.c @@ -144,7 +144,7 @@ void logmsg(const char *msg, ...) } } -#ifdef WIN32 +#ifdef _WIN32 /* use instead of strerror() on generic Windows */ static const char *win32_strerror(int err, char *buf, size_t buflen) { @@ -208,7 +208,7 @@ const char *sstrerror(int err) static char buf[512]; return win32_strerror(err, buf, sizeof(buf)); } -#endif /* WIN32 */ +#endif /* _WIN32 */ /* set by the main code to point to where the test dir is */ const char *path = "."; @@ -292,7 +292,7 @@ curl_off_t our_getpid(void) curl_off_t pid; pid = (curl_off_t)getpid(); -#if defined(WIN32) || defined(_WIN32) +#if defined(_WIN32) || defined(_WIN32) /* store pid + 65536 to avoid conflict with Cygwin/msys PIDs, see also: * - https://cygwin.com/git/?p=newlib-cygwin.git;a=commit; ↵ * h=b5e1003722cb14235c4f166be72c09acdffc62ea @@ -378,7 +378,7 @@ void clear_advisor_read_lock(const char *filename) } -#if defined(WIN32) && !defined(MSDOS) +#if defined(_WIN32) && !defined(MSDOS) static struct timeval tvnow(void) { @@ -501,11 +501,11 @@ static SIGHANDLER_T old_sigint_handler = SIG_ERR; static SIGHANDLER_T old_sigterm_handler = SIG_ERR; #endif -#if defined(SIGBREAK) && defined(WIN32) +#if defined(SIGBREAK) && defined(_WIN32) static SIGHANDLER_T old_sigbreak_handler = SIG_ERR; #endif -#ifdef WIN32 +#ifdef _WIN32 #ifdef _WIN32_WCE static DWORD thread_main_id = 0; #else @@ -521,7 +521,7 @@ volatile int got_exit_signal = 0; /* if next is set indicates the first signal handled in exit_signal_handler */ volatile int exit_signal = 0; -#ifdef WIN32 +#ifdef _WIN32 /* event which if set indicates that the program should finish */ HANDLE exit_event = NULL; #endif @@ -538,7 +538,7 @@ static void exit_signal_handler(int signum) if(got_exit_signal == 0) { got_exit_signal = 1; exit_signal = signum; -#ifdef WIN32 +#ifdef _WIN32 if(exit_event) (void)SetEvent(exit_event); #endif @@ -547,7 +547,7 @@ static void exit_signal_handler(int signum) errno = old_errno; } -#ifdef WIN32 +#ifdef _WIN32 /* CTRL event handler for Windows Console applications to simulate * SIGINT, SIGTERM and SIGBREAK on CTRL events and trigger signal handler. * @@ -698,7 +698,7 @@ static SIGHANDLER_T set_signal(int signum, SIGHANDLER_T handler, void install_signal_handlers(bool keep_sigalrm) { -#ifdef WIN32 +#ifdef _WIN32 #ifdef _WIN32_WCE typedef HANDLE curl_win_thread_handle_t; #else @@ -744,13 +744,13 @@ void install_signal_handlers(bool keep_sigalrm) if(old_sigterm_handler == SIG_ERR) logmsg("cannot install SIGTERM handler: %s", strerror(errno)); #endif -#if defined(SIGBREAK) && defined(WIN32) +#if defined(SIGBREAK) && defined(_WIN32) /* handle SIGBREAK signal with our exit_signal_handler */ old_sigbreak_handler = set_signal(SIGBREAK, exit_signal_handler, TRUE); if(old_sigbreak_handler == SIG_ERR) logmsg("cannot install SIGBREAK handler: %s", strerror(errno)); #endif -#ifdef WIN32 +#ifdef _WIN32 if(!SetConsoleCtrlHandler(ctrl_event_handler, TRUE)) logmsg("cannot install CTRL event handler"); #ifdef _WIN32_WCE @@ -792,11 +792,11 @@ void restore_signal_handlers(bool keep_sigalrm) if(SIG_ERR != old_sigterm_handler) (void) set_signal(SIGTERM, old_sigterm_handler, FALSE); #endif -#if defined(SIGBREAK) && defined(WIN32) +#if defined(SIGBREAK) && defined(_WIN32) if(SIG_ERR != old_sigbreak_handler) (void) set_signal(SIGBREAK, old_sigbreak_handler, FALSE); #endif -#ifdef WIN32 +#ifdef _WIN32 (void)SetConsoleCtrlHandler(ctrl_event_handler, FALSE); if(thread_main_window && thread_main_id) { if(PostThreadMessage(thread_main_id, WM_APP, 0, 0)) { @@ -846,7 +846,7 @@ int bind_unix_socket(curl_socket_t sock, const char *unix_socket, return rc; } /* socket server is not alive, now check if it was actually a socket. */ -#ifdef WIN32 +#ifdef _WIN32 /* Windows does not have lstat function. */ rc = curlx_win32_stat(unix_socket, &statbuf); #else diff --git a/external/curl/tests/server/util.h b/external/curl/tests/server/util.h index a12f4dbf0..4dff40e81 100644 --- a/external/curl/tests/server/util.h +++ b/external/curl/tests/server/util.h @@ -41,7 +41,7 @@ extern const char *serverlogfile; extern const char *cmdfile; -#ifdef WIN32 +#ifdef _WIN32 #include #include @@ -54,10 +54,10 @@ void win32_perror(const char *msg); void win32_init(void); void win32_cleanup(void); const char *sstrerror(int err); -#else /* WIN32 */ +#else /* _WIN32 */ #define sstrerror(e) strerror(e) -#endif /* WIN32 */ +#endif /* _WIN32 */ /* fopens the test case file */ FILE *test2fopen(long testno, const char *logdir); @@ -68,7 +68,6 @@ int write_pidfile(const char *filename); int write_portfile(const char *filename, int port); void set_advisor_read_lock(const char *filename); void clear_advisor_read_lock(const char *filename); -int strncasecompare(const char *first, const char *second, size_t max); /* global variable which if set indicates that the program should finish */ extern volatile int got_exit_signal; @@ -76,7 +75,7 @@ extern volatile int got_exit_signal; /* global variable which if set indicates the first signal handled */ extern volatile int exit_signal; -#ifdef WIN32 +#ifdef _WIN32 /* global event which if set indicates that the program should finish */ extern HANDLE exit_event; #endif diff --git a/external/curl/tests/servers.pm b/external/curl/tests/servers.pm index 4f67432c6..9416ba758 100644 --- a/external/curl/tests/servers.pm +++ b/external/curl/tests/servers.pm @@ -153,10 +153,15 @@ our $stunnel; # path to stunnel command # sub checkcmd { my ($cmd, @extrapaths)=@_; - my @paths=(split(m/[:]/, $ENV{'PATH'}), "/usr/sbin", "/usr/local/sbin", + my $sep = '[:]'; + if ($^O eq 'MSWin32' || $^O eq 'dos' || $^O eq 'os2') { + # PATH separator is different + $sep = '[;]'; + } + my @paths=(split(m/$sep/, $ENV{'PATH'}), "/usr/sbin", "/usr/local/sbin", "/sbin", "/usr/bin", "/usr/local/bin", @extrapaths); for(@paths) { - if( -x "$_/$cmd" && ! -d "$_/$cmd") { + if( -x "$_/$cmd" . exe_ext('SYS') && ! -d "$_/$cmd" . exe_ext('SYS')) { # executable bit but not a directory! return "$_/$cmd"; } @@ -264,19 +269,22 @@ sub clearlocks { if(os_is_win()) { $dir = sys_native_abs_path($dir); $dir =~ s/\//\\\\/g; - my $handle = "handle.exe"; + my $handle = "handle"; if($ENV{"PROCESSOR_ARCHITECTURE"} =~ /64$/) { - $handle = "handle64.exe"; + $handle = "handle64"; } - my @handles = `$handle $dir -accepteula -nobanner`; - for my $tryhandle (@handles) { - if($tryhandle =~ /^(\S+)\s+pid:\s+(\d+)\s+type:\s+(\w+)\s+([0-9A-F]+):\s+(.+)\r\r/) { - logmsg "Found $3 lock of '$5' ($4) by $1 ($2)\n"; - # Ignore stunnel since we cannot do anything about its locks - if("$3" eq "File" && "$1" ne "tstunnel.exe") { - logmsg "Killing IMAGENAME eq $1 and PID eq $2\n"; - system("taskkill.exe -f -fi \"IMAGENAME eq $1\" -fi \"PID eq $2\" >nul 2>&1"); - $done = 1; + if(checkcmd($handle)) { + my @handles = `$handle $dir -accepteula -nobanner`; + for my $tryhandle (@handles) { + # Skip the "No matching handles found." warning when returned + if($tryhandle =~ /^(\S+)\s+pid:\s+(\d+)\s+type:\s+(\w+)\s+([0-9A-F]+):\s+(.+)\r\r/) { + logmsg "Found $3 lock of '$5' ($4) by $1 ($2)\n"; + # Ignore stunnel since we cannot do anything about its locks + if("$3" eq "File" && "$1" ne "tstunnel.exe") { + logmsg "Killing IMAGENAME eq $1 and PID eq $2\n"; + system("taskkill.exe -f -fi \"IMAGENAME eq $1\" -fi \"PID eq $2\" >nul 2>&1"); + $done = 1; + } } } } diff --git a/external/curl/tests/testcurl.1 b/external/curl/tests/testcurl.1 index a3b535fca..a4ef0c35a 100644 --- a/external/curl/tests/testcurl.1 +++ b/external/curl/tests/testcurl.1 @@ -22,7 +22,7 @@ .\" * .\" ************************************************************************** .\" -.TH testcurl.pl 1 "April 26, 2023" "estcurl 8.4.0" testcurl +.TH testcurl.pl 1 "April 26, 2023" "estcurl 8.5.0" testcurl .SH NAME testcurl.pl \- (automatically) test curl diff --git a/external/curl/tests/unit/curlcheck.h b/external/curl/tests/unit/curlcheck.h index 756f76e36..928964422 100644 --- a/external/curl/tests/unit/curlcheck.h +++ b/external/curl/tests/unit/curlcheck.h @@ -93,8 +93,6 @@ } while(0) -extern int unitfail; - #define UNITTEST_START \ int test(char *arg) \ { \ diff --git a/external/curl/tests/unit/unit1394.c b/external/curl/tests/unit/unit1394.c index e4e998184..ef398ab22 100644 --- a/external/curl/tests/unit/unit1394.c +++ b/external/curl/tests/unit/unit1394.c @@ -61,7 +61,7 @@ UNITTEST_START "pkcs11:foobar", "pkcs11:foobar", NULL, "PKCS11:foobar", "PKCS11:foobar", NULL, "PkCs11:foobar", "PkCs11:foobar", NULL, -#ifdef WIN32 +#ifdef _WIN32 "c:\\foo:bar:baz", "c:\\foo", "bar:baz", "c:\\foo\\:bar:baz", "c:\\foo:bar", "baz", "c:\\foo\\\\:bar:baz", "c:\\foo\\", "bar:baz", diff --git a/external/curl/tests/unit/unit1395.c b/external/curl/tests/unit/unit1395.c index d01403f33..017b45a0e 100644 --- a/external/curl/tests/unit/unit1395.c +++ b/external/curl/tests/unit/unit1395.c @@ -83,15 +83,17 @@ UNITTEST_START abort_unless(err == 0, "returned error"); abort_if(err && out, "returned error with output"); - if(out && strcmp(out, pairs[i].output)) { + if(out && pairs[i].output && strcmp(out, pairs[i].output)) { fprintf(stderr, "Test %u: '%s' gave '%s' instead of '%s'\n", i, pairs[i].input, out, pairs[i].output); fail("Test case output mismatched"); fails++; } - else if(!out && pairs[i].output) { - fprintf(stderr, "Test %u: '%s' gave '%s' instead of NULL\n", - i, pairs[i].input, out); + else if((!out && pairs[i].output) || + (out && !pairs[i].output)) { + fprintf(stderr, "Test %u: '%s' gave '%s' instead of '%s'\n", + i, pairs[i].input, out ? out : "(null)", + pairs[i].output ? pairs[i].output : "(null)"); fail("Test case output mismatched"); fails++; } diff --git a/external/curl/tests/unit/unit1604.c b/external/curl/tests/unit/unit1604.c index 411b94a02..cba3dfcf6 100644 --- a/external/curl/tests/unit/unit1604.c +++ b/external/curl/tests/unit/unit1604.c @@ -42,7 +42,7 @@ static void unit_stop(void) } -#if defined(MSDOS) || defined(WIN32) +#if defined(_WIN32) || defined(MSDOS) static char *getflagstr(int flags) { @@ -353,6 +353,6 @@ UNITTEST_START { fprintf(stderr, "Skipped test not for this platform\n"); } -#endif /* MSDOS || WIN32 */ +#endif /* _WIN32 || MSDOS */ UNITTEST_STOP diff --git a/external/curl/tests/unit/unit2600.c b/external/curl/tests/unit/unit2600.c index d7b1efdd7..a2089b275 100644 --- a/external/curl/tests/unit/unit2600.c +++ b/external/curl/tests/unit/unit2600.c @@ -124,7 +124,7 @@ static void cf_test_destroy(struct Curl_cfilter *cf, struct Curl_easy *data) struct cf_test_ctx *ctx = cf->ctx; #ifndef CURL_DISABLE_VERBOSE_STRINGS infof(data, "%04dms: cf[%s] destroyed", - (int)Curl_timediff(Curl_now(), current_tr->started), ctx->id); + (int)Curl_timediff(Curl_now(), current_tr->started), ctx->id); #else (void)data; #endif @@ -145,7 +145,7 @@ static CURLcode cf_test_connect(struct Curl_cfilter *cf, duration_ms = Curl_timediff(Curl_now(), ctx->started); if(duration_ms >= ctx->fail_delay_ms) { infof(data, "%04dms: cf[%s] fail delay reached", - (int)duration_ms, ctx->id); + (int)duration_ms, ctx->id); return CURLE_COULDNT_CONNECT; } if(duration_ms) @@ -162,7 +162,7 @@ static struct Curl_cftype cft_test = { cf_test_connect, Curl_cf_def_close, Curl_cf_def_get_host, - Curl_cf_def_get_select_socks, + Curl_cf_def_adjust_pollset, Curl_cf_def_data_pending, Curl_cf_def_send, Curl_cf_def_recv, @@ -185,7 +185,7 @@ static CURLcode cf_test_create(struct Curl_cfilter **pcf, (void)data; (void)conn; - ctx = calloc(sizeof(*ctx), 1); + ctx = calloc(1, sizeof(*ctx)); if(!ctx) { result = CURLE_OUT_OF_MEMORY; goto out; diff --git a/external/curl/tests/unit/unit3200.c b/external/curl/tests/unit/unit3200.c index eff566772..0544bcc93 100644 --- a/external/curl/tests/unit/unit3200.c +++ b/external/curl/tests/unit/unit3200.c @@ -47,6 +47,7 @@ static CURLcode unit_stop(void) } #ifdef __GNUC__ +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Woverlength-strings" #endif @@ -161,6 +162,10 @@ UNITTEST_START } UNITTEST_STOP +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + #else static CURLcode unit_setup(void) {